| name | cli-acf |
| type | 4 |
| status | active |
| version | 0.1.0 |
| description | Unified CLI router with Pluggy-based plugin discovery for all ACF skills. Auto-discovers skill plugins via entry points, routes commands to skill implementations. Use when working with ACF CLI, adding new skills, or understanding plugin architecture. |
ACF Unified CLI
Central CLI router with Pluggy-based plugin discovery.
Architecture
Uses Pluggy (pytest's plugin framework) for automatic skill discovery:
- Skills register via entry points in pyproject.toml
- CLI auto-discovers and loads all skill plugins
- Add new skill → automatically available in
uv run acf
Usage
uv run acf <skill> <command>
uv run acf --help # Shows all discovered skills
Plugin Contract
Skills implement acf_register_cli() hook:
import pluggy
hookimpl = pluggy.HookimplMarker("acf")
@hookimpl
def acf_register_cli():
return ("skill-name", app, "Help text")
Benefits
- Auto-discovery: Add skill → CLI detects automatically
- Scalable: Supports 23+ skills without manual registration
- Professional: Battle-tested plugin architecture (pytest uses Pluggy)
- Maintainable: No central registration list to update
Integration
Hookspec: src/acf/cli/hookspec.py defines plugin contract
Main CLI: src/acf/cli/main.py auto-discovers and registers skills
Entry points: Each skill's pyproject.toml has [project.entry-points.acf]
See Also
Skill("python")- resources/pluggy.md for Pluggy documentation- python/patterns/behavioral/plugin_system.py - Example pattern