Skip to content

feat(workflows): pluggable step catalog for community step types #2343

@mnriem

Description

@mnriem

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:

  1. Catalog filesworkflows/steps/catalog.json (built-in) and catalog.community.json (community)
  2. CLI commandsspecify workflow step list/search/info/add/remove for discovery and installation
  3. Plugin loading — load external step types from installed packages at engine startup, in addition to built-in steps
  4. --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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions