Workflow steps already follow the same subpackage + base class + registry pattern as integrations, but are hardcoded with no catalog or discovery mechanism. This limits workflows to the 10 built-in step types.
Current state
- 10 built-in steps:
command, prompt, shell, gate, if, switch, while, do-while, fan-out, fan-in
- All registered via
_register_builtin_steps() in src/specify_cli/workflows/__init__.py
- Each step is a
StepBase subclass under src/specify_cli/workflows/steps/<type>/
- No catalog, no CLI commands, no external loading
Proposed
Add a catalog system for steps, mirroring the integration catalog pattern:
- Catalog files —
workflows/steps/catalog.json (built-in) and catalog.community.json (community)
- CLI commands —
specify workflow step list/search/info/add/remove for discovery and installation
- Plugin loading — load external step types from installed packages at engine startup, in addition to built-in steps
--dev / --from — local development and URL-based installs, consistent with extensions/presets/workflows
Use cases
Community step types could include notification steps (Slack, Teams), issue tracker steps (Jira, Linear), approval/sign-off gates, deployment triggers, or domain-specific automation primitives.
Reference
- Step base class:
src/specify_cli/workflows/steps/ (StepBase)
- Step registry:
src/specify_cli/workflows/__init__.py (STEP_REGISTRY, _register_builtin_steps())
- Integration catalog (closest pattern):
src/specify_cli/integrations/catalog.py
Workflow steps already follow the same subpackage + base class + registry pattern as integrations, but are hardcoded with no catalog or discovery mechanism. This limits workflows to the 10 built-in step types.
Current state
command,prompt,shell,gate,if,switch,while,do-while,fan-out,fan-in_register_builtin_steps()insrc/specify_cli/workflows/__init__.pyStepBasesubclass undersrc/specify_cli/workflows/steps/<type>/Proposed
Add a catalog system for steps, mirroring the integration catalog pattern:
workflows/steps/catalog.json(built-in) andcatalog.community.json(community)specify workflow step list/search/info/add/removefor discovery and installation--dev/--from— local development and URL-based installs, consistent with extensions/presets/workflowsUse cases
Community step types could include notification steps (Slack, Teams), issue tracker steps (Jira, Linear), approval/sign-off gates, deployment triggers, or domain-specific automation primitives.
Reference
src/specify_cli/workflows/steps/(StepBase)src/specify_cli/workflows/__init__.py(STEP_REGISTRY,_register_builtin_steps())src/specify_cli/integrations/catalog.py