skills/orchestrate/SKILL.md
Coordinate full SDLC pipeline for software projects. Manages backlog, spawns phase agents with minimal context, gates transitions, and handles checkpoints. Use when starting a new project, picking up the next story, or resuming pipeline work.
npx skillsauth add sofer/.agents orchestrateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Coordinate the full software development lifecycle through a structured pipeline of specialised agents.
[Project init]
intent → requirements (produces backlog)
[Story cycle - iterative per story]
commit:branch → spec → design → design-review → stubs → test → commit:commit(red) → implement → commit:commit(green) → refactor → code-review → commit:commit(refactor) → user-test → commit:pr → commit:merge
[Release]
deploy → monitor (feedback → backlog)
Store manifest at .sdlc/manifest.yaml in the project root. Create the directory if it does not exist.
skills/feature/references/tdd-cycle.mdThe user may invoke orchestration with these patterns:
start project / init - Begin new project setupnext story / continue - Pick and start next story from backlogresume - Continue from current phasestatus - Show manifest state and progresscheckpoint - Present decision summary for approvalWhen starting a new project:
.sdlc/manifest.yamlinit_phase fieldinit_phase: name_collectedintent skill to clarify goalsinit_phase: intent_completecoding_standards as defaults for paradigm/patterns/naminginit_phase: config_completerequirements skill to build backlogproject:
name: ""
standards:
paradigm: "mixed"
language: ""
runtime: "" # e.g., "Bun", "Node", "Python"
patterns: []
forbidden: []
naming: ""
git:
strategy: "feature-branch"
pattern: "story/{id}-{slug}"
auto_pr: true
run: # How to execute the project locally
command: "" # e.g., "./brain", "npm start", "python main.py"
test: "" # e.g., "bun test", "npm test", "pytest"
checkpoints:
- "post-intent"
- "post-design-review"
- "post-code-review"
- "post-commit" # User tests before next story
Note: The standards.paradigm, standards.patterns, standards.forbidden, and standards.naming fields may be populated from intent output's coding_standards. Only prompt for these if intent did not capture them.
For each story:
For detailed TDD cycle execution (artifact flow, gate conditions, commit strategy,
migration handling, and rollback), see the feature skill's reference document at
skills/feature/references/tdd-cycle.md.
Before advancing to next phase, verify:
| Phase | Gate condition | On failure | |-------|----------------|------------| | stubs → test | Code compiles/type-checks | Fix stubs | | test → commit(red) | New tests fail, existing tests pass | Fix tests | | commit(red) → implement | Red commit succeeds | Resolve git issues | | implement → commit(green) | All tests pass (100%), dev DB verified if migrations | Continue implementing | | commit(green) → refactor | Green commit succeeds | Resolve git issues | | refactor → code-review | All tests still pass | Revert refactor, retry | | code-review → commit(refactor) | Review approved or issues resolved | Loop to refactor with review comments |
Provide each agent with minimal context:
Run {phase} skill with context:
- Story: {story_id} - {story_title}
- Acceptance criteria: {criteria}
- Relevant artifacts: {list from manifest}
- Standards: {project.standards}
Only include artifacts from immediately preceding phases. Do not overload context.
At configured checkpoints:
## Checkpoint: {phase}
### Decisions made
- [{phase}] {decision}: {rationale}
- ...
### Current state
- Story: {id} - {title}
- Phase: {current_phase}
- Branch: {branch_name}
### Next steps
1. {next_phase}: {what it will do}
Approve to continue? [y/n]
IMPORTANT: After committing a story, ALWAYS invoke the user-test skill before proceeding to commit:pr.
The user-test skill reformats the manual_test_script from code-review into the user's preferred format (human checklist or agent prose), presents it for testing, and records pass/fail results. See skills/user-test/SKILL.md for details.
Pass to user-test:
manual_test_script from code-review outputDo not advance to commit:pr until user-test returns a passing verdict. If any scenario fails, return to implement.
When a phase fails:
Log all failures and recovery actions to manifest.
Update manifest after each phase:
manifest:
project:
name: "project-name"
init_phase: "config_complete" # name_collected | intent_complete | config_complete
standards: {}
# ... rest of config
intent: {} # Intent skill output
backlog: [] # Prioritised story list
current_story: null # Active story ID
stories:
US-001:
status: "in-progress" # complete | in-progress | blocked
phase: "design" # Current phase
branch: "story/US-001-user-login"
artifacts:
spec: ".sdlc/stories/US-001/spec.md"
design: ".sdlc/stories/US-001/design.md"
stubs: [] # file paths produced by stubs skill
tests: [] # file paths produced by test skill
implementation: [] # file paths produced by implement skill
migrations: [] # migration file paths (if any)
review_verdict: "" # approved | changes_requested | blocked
decisions:
- phase: "design"
decision: "Using event sourcing"
rationale: "Requirement R3 needs full history"
gate_results:
red_verified: false # new tests fail, existing pass
green_verified: false # all tests pass after implementation
refactor_verified: false # all tests still pass after refactor
review_approved: false # review verdict is "approved"
releases: []
Store phase outputs in .sdlc/stories/{story-id}/:
spec.md - Specificationdesign.md - Design documentstubs/ - Interface definitionstests/ - Test files (may also live in project test directory)review-notes.md - Review feedbackSee references/phase-contracts.md for detailed input/output specifications for each phase.
Before advancing to next phase or picking next story, check for divergence between manifest and reality.
status command - Include drift warnings in status outputCheck for these conditions:
1. Uncommitted files matching current story scope
2. Branch doesn't match expected pattern for current_story
3. Manifest phase contradicts file state (e.g., "design" but implementation exists)
4. Stale branches from completed stories
5. Artifacts referenced in manifest that don't exist
[Pipeline action requested]
│
▼
[Check for drift]
│
├── No drift → Continue pipeline
│
└── Drift detected
│
▼
[Pause pipeline]
│
▼
[Invoke /reconcile --report]
│
▼
[Present findings to user]
│
▼
[Offer choices]
│
├── Apply corrections → Run reconcile
│
├── Continue anyway → Resume pipeline
│
└── Abort → Stop and investigate
When drift is detected before picking next story:
## Drift detected
Before picking the next story, reconciliation found issues:
### Divergences
- **Phase drift** (US-004): Manifest says "design", but implementation files exist
- **Uncommitted files**: scoring.py, triage.py, writeback.py
- **Stale branch**: story/US-003-match-gmail-correspondence (merged)
### Options
1. **Reconcile first** - Fix divergences before continuing
2. **Continue anyway** - Pick next story despite drift
3. **Investigate** - Pause to manually review state
Which would you like to do?
| Severity | Action | |----------|--------| | High (uncommitted implementation, status mismatch) | Block pipeline, require reconcile | | Medium (phase drift, branch mismatch) | Warn, offer to reconcile | | Low (stale branches, orphan artifacts) | Note in status, continue |
tools
Check whether Claude and Codex have equivalent access to shared agent resources, skills, hooks, plugins, MCP servers, permissions, startup behaviour, and provider-specific adapter config. Use when comparing agent environments, debugging missing capabilities after restart, or deciding whether to symlink a resource or configure a runtime.
testing
Record substantive skill use in an append-only local log. Use after choosing or invoking a non-system skill for real work, when a skill is inspected but not used, or when a skill fails to apply. Do not use for routine system skills or incidental file reads.
testing
Turn a vague or underspecified request into a self-contained problem statement. Use when the user has a rough idea, when a request would fail if handed directly to an agent, or before non-trivial work that needs shared understanding.
data-ai
Append a one-line learning to ~/.agents/learning-log.md. Use when the user types /learning, or when something genuinely worth remembering surfaced during work and the user confirms it should be captured.