Add pipeline workflow to community catalog#3338
Conversation
Chains the Spec Kit phases into one guided, single-invocation pipeline with a deterministic phase resolver and one interactive clarify gate.
|
Thanks for this — the analyze/fix retry loop and the single-clarify-gate UX are genuinely nice, and the code is clean and well-tested. Before going further, I'd like to steer this toward our workflows system, because that's precisely the mechanism Spec Kit ships for chaining
Concretely, here's your pipeline expressed as a single # workflow.yml
schema_version: "1.0"
workflow:
id: "pipeline"
name: "Guided SDD Pipeline"
version: "1.0.0"
author: "domattioli"
description: >
Chains specify → clarify → plan → tasks → analyze → implement into one
guided run with a single clarify gate and an analyze/fix loop.
requires:
speckit_version: ">=0.8.5"
integrations:
any: ["claude", "copilot", "gemini", "opencode"]
inputs:
spec:
type: string
required: true
prompt: "Describe what you want to build"
integration:
type: string
default: "auto"
with_constitution: # replaces --add constitution
type: boolean
default: false
with_checklist: # replaces --add checklist
type: boolean
default: false
skip_clarify: # replaces --skip clarify
type: boolean
default: false
max_fix_cycles:
type: number
default: 3
steps:
- id: constitution
type: if
condition: "{{ inputs.with_constitution }}"
then:
- id: constitution-run
command: speckit.constitution
integration: "{{ inputs.integration }}"
input: { args: "{{ inputs.spec }}" }
- id: specify
command: speckit.specify
integration: "{{ inputs.integration }}"
input: { args: "{{ inputs.spec }}" }
- id: clarify
type: if
condition: "{{ inputs.skip_clarify == false }}"
then:
- id: clarify-run
command: speckit.clarify
integration: "{{ inputs.integration }}"
input: { args: "{{ inputs.spec }}" }
- id: clarify-gate
type: gate
message: "Review clarifications before planning."
options: [approve, reject]
on_reject: abort
- id: plan
command: speckit.plan
integration: "{{ inputs.integration }}"
input: { args: "{{ inputs.spec }}" }
- id: checklist
type: if
condition: "{{ inputs.with_checklist }}"
then:
- id: checklist-run
command: speckit.checklist
integration: "{{ inputs.integration }}"
input: { args: "{{ inputs.spec }}" }
- id: tasks
command: speckit.tasks
integration: "{{ inputs.integration }}"
input: { args: "{{ inputs.spec }}" }
- id: analyze-first
command: speckit.analyze
integration: "{{ inputs.integration }}"
continue_on_error: true
input: { args: "{{ inputs.spec }}" }
- id: fix-loop
type: while
condition: "{{ steps.analyze-first.output.exit_code != 0 }}"
max_iterations: 3 # see note below on templating this
steps:
- id: apply-fixes
command: speckit.implement
integration: "{{ inputs.integration }}"
input: { args: "Resolve the analyze findings for {{ inputs.spec }}" }
- id: analyze-again
command: speckit.analyze
integration: "{{ inputs.integration }}"
continue_on_error: true
input: { args: "{{ inputs.spec }}" }
- id: implement
command: speckit.implement
integration: "{{ inputs.integration }}"
input: { args: "{{ inputs.spec }}" }Two things to verify if you go this route:
If you'd like to publish this, the path is the community workflow catalog — see |
|
Thanks for the feedback, mnriem. We've implemented the workflow approach you suggested instead of the extension. Summary of changesCreated
Advantages
ValidationWe validated the One fix along the way: Example invocation: specify workflow run workflows/pipeline/workflow.yml --input 'spec=add user authentication with JWT tokens'This runs the full pipeline and pauses at the clarify gate for approval before continuing to plan/tasks/analyze/implement. |
|
You are aware we have a |
Drop the extensions/pipeline Python resolver, command wrappers, and test suite in favor of a single workflows/pipeline/workflow.yml, per review feedback that the workflows engine already owns phase orchestration, ordering, validation, and resume. Rework the loop around the new speckit.converge command: analyze runs as a single pre-implement consistency pass (its findings are artifact-level, not code-level), and a bounded post-implement convergence loop (implement -> converge, up to 3 cycles) closes any code/spec gaps. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
You're right:
Also removed the old |
There was a problem hiding this comment.
Pull request overview
This PR introduces a new “pipeline” workflow under workflows/ that aims to run the full Spec-Driven Development command sequence (with optional phases) as a single guided workflow, and adds accompanying documentation/changelog for publishing and use.
Changes:
- Added a new
pipelineworkflow YAML that chains Spec Kit phases and attempts a post-implement convergence loop. - Added workflow documentation (
README.md) and a workflow-local changelog (CHANGELOG.md).
Show a summary per file
| File | Description |
|---|---|
| workflows/pipeline/workflow.yml | Defines the new pipeline workflow steps, inputs, requirements, and convergence loop logic. |
| workflows/pipeline/README.md | Documents workflow purpose, inputs, and usage examples. |
| workflows/pipeline/CHANGELOG.md | Tracks workflow version history and initial feature set. |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 3/3 changed files
- Comments generated: 9
- Review effort level: Low
| - id: converge-loop | ||
| type: while | ||
| condition: "{{ steps.converge-first.output.exit_code != 0 }}" | ||
| max_iterations: 3 | ||
| steps: | ||
| - id: implement-remaining | ||
| command: speckit.implement | ||
| integration: "{{ inputs.integration }}" | ||
| input: { args: "Complete the appended convergence tasks for {{ inputs.spec }}" } | ||
| - id: converge-again | ||
| command: speckit.converge | ||
| integration: "{{ inputs.integration }}" | ||
| continue_on_error: true | ||
| input: { args: "{{ inputs.spec }}" } |
| id: "pipeline" | ||
| name: "Guided SDD Pipeline" | ||
| version: "1.0.0" | ||
| author: "domattioli" |
|
|
||
| ## Overview | ||
|
|
||
| This workflow orchestrates the full SDD (Software Design Document) pipeline: |
| ### 3. Clarify (Optional Gate) | ||
| Provides clarifications on the spec, then pauses for human review/approval before proceeding to planning. | ||
|
|
||
| Can be skipped entirely with `--skip-clarify`. |
| ### Added | ||
| - Initial release of the Guided SDD Pipeline workflow | ||
| - Support for optional constitution phase (`with_constitution`) | ||
| - Support for optional checklist phase (`with_checklist`) |
|
|
||
| ### Run with defaults | ||
| ```bash | ||
| specify workflow run pipeline "build a todo app" |
| specify workflow run pipeline \ | ||
| "build a todo app" \ | ||
| --with-constitution \ | ||
| --with-checklist |
| specify workflow run pipeline \ | ||
| "build a todo app" \ | ||
| --integration claude |
| specify workflow run pipeline \ | ||
| "build a todo app" \ | ||
| --skip-clarify |
|
Similarly to our extension and presets we can host this in our community catalog. Please create it in your own GitHub repository so we can do so. See https://github.com/github/spec-kit/blob/main/workflows/PUBLISHING.md |
|
Done — the workflow now lives in its own repository:
This PR is reworked to only add the |
| "description": "Chains specify, clarify, plan, tasks, analyze, implement, and converge into one guided run with a single clarify gate and a post-implement convergence loop", | ||
| "author": "domattioli", | ||
| "version": "1.0.0", | ||
| "url": "https://raw.githubusercontent.com/domattioli/spec-kit-workflow-pipeline/v1.0.0/workflow.yml", |
| "repository": "https://github.com/domattioli/spec-kit-workflow-pipeline", | ||
| "license": "MIT", | ||
| "requires": { | ||
| "speckit_version": ">=0.8.5" |
| "author": "domattioli", | ||
| "version": "1.0.0", | ||
| "url": "https://raw.githubusercontent.com/domattioli/spec-kit-workflow-pipeline/v1.0.0/workflow.yml", | ||
| "repository": "https://github.com/domattioli/spec-kit-workflow-pipeline", |
|
Please address Copilot feedback |
What
Registers the Guided SDD Pipeline workflow in
workflows/catalog.community.json.The workflow itself is now hosted externally, per maintainer guidance (comment):
What the workflow does
Chains specify → clarify (single interactive gate) → plan → tasks → analyze → implement → converge into one guided run. Optional constitution and checklist phases. Post-implement convergence loop replaces the earlier analyze/implement fix-loop, per review discussion.
Changes in this PR
workflows/pipeline/files (moved to the external repo above)pipelineentry toworkflows/catalog.community.jsonTesting
workflow.ymlvalidates viaspecify workflow info