Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.crewship.ai/llms.txt

Use this file to discover all available pages before exploring further.

Workflow

cmd/crewship/cmd_workflow.go exposes the workflow-template surface. A workflow template defines a reusable issue lifecycle — the ordered list of stages (e.g. backlog → in_progress → review → done) that crews attach to their issue trackers. Backed by /api/v1/workflow-templates (see internal/api/workflow_templates_handler.go). Aliases: workflows, workflow-template, workflow-templates. All commands operate on the active workspace (crewship workspace use) and resolve <slug> arguments against the stored template name — both an exact-name hit (case-insensitive) and a kebab-cased form like engineering-standard are accepted. Ambiguous slugs that match multiple templates fail with a hint to retry using the exact name.

crewship workflow list

GET /api/v1/workflow-templates. Lists every template visible to the workspace — built-in rows first, then user-created.
crewship workflow list
crewship workflows list                              # alias
Output columns: ID, NAME, BUILTIN, STAGES, ICON, COLOR. The STAGES column counts entries inside the stored template_json blob — a value of 0 indicates a corrupt row that should be inspected via workflow get.

crewship workflow get <slug>

GET /api/v1/workflow-templates/{id} after resolving <slug> via the list endpoint. Prints every column including the full template_json so you can pipe it through jq to inspect the stage list.
crewship workflow get engineering-standard
crewship workflow get "Engineering Standard"        # exact name also works

crewship workflow create --file <manifest.yaml>

POST /api/v1/workflow-templates. The CLI reads a SPEC-2 YAML manifest, validates the minimum shape locally, and posts the canonical template_json to the server (which re-validates the stage list).
FlagTypeDefaultEffect
--file <path>string(required)Path to a SPEC-2 YAML manifest. No -f shorthand — root --format owns -f.
# engineering-standard.yaml
apiVersion: crewship/v1
kind: WorkflowTemplate
metadata:
  name: Engineering Standard
  slug: engineering-standard
spec:
  description: Default issue lifecycle for engineering crews
  icon: ":hammer_and_wrench:"
  color: "#3B82F6"
  stages:
    - { name: backlog,     type: open,      position: 1, color: "#9CA3AF" }
    - { name: in_progress, type: started,   position: 2, color: "#3B82F6" }
    - { name: done,        type: completed, position: 3, color: "#10B981" }
crewship workflow create --file engineering-standard.yaml

Validation rules

Enforced both client- and server-side (validateTemplateJSON in internal/api/workflow_templates_handler.go):
  • spec.stages must contain at least one stage.
  • Every stage requires name, type, and position.
  • stage.type must be one of open, started, completed, cancelled.
  • Exactly one stage with type: open; at least one with type: completed.
  • name and position values are unique within the template; position must be > 0.
  • stage.color (if set) must be a hex string like #3B82F6.
A name collision with an existing template in the same workspace returns 409 Conflict.

crewship workflow update <slug> --file <manifest.yaml>

PATCH /api/v1/workflow-templates/{id}. Resolves <slug> against the stored template name (same matching as get/delete), then PATCHes the parsed manifest onto that row. The manifest uses the exact same SPEC-2 envelope as create, and the server re-runs the full stage validation — a manifest rejected on create is rejected on update too.
FlagTypeDefaultEffect
--file <path>string(required)Path to a SPEC-2 YAML manifest. No -f shorthand — root --format owns -f.
crewship workflow update engineering-standard --file engineering-standard.yaml
crewship workflow update "Engineering Standard" --file engineering-standard.yaml   # exact name
Built-in templates (is_builtin: true) and rows in another workspace surface as 404 Not found; renaming into an existing template’s name returns 409 Conflict.

crewship workflow delete <slug>

DELETE /api/v1/workflow-templates/{id} after resolving <slug>. Aliases: remove, rm. Prompts for confirmation unless -y/--yes is passed.
FlagTypeDefaultEffect
-y, --yesboolfalseSkip the interactive confirmation prompt.
crewship workflow delete engineering-standard
crewship workflow rm engineering-standard -y         # alias + non-interactive
Workflow templates are reference data — crews that still point at the deleted template fall back to the runtime default lifecycle rather than failing.

See also