Use when running the full documentation pipeline, coordinating multiple phases, or managing the end-to-end workflow. Also triggers on 'orchestrate', 'full workflow', 'start documentation', 'run all phases', or 'coordinate the pipeline'.
From pmnpx claudepluginhub etusdigital/etus-plugins --plugin pmThis skill uses the workspace's default tool permissions.
dependency-graph.yamlknowledge/checklists.mdknowledge/handoff-schema.jsonknowledge/ids.ymlknowledge/workflow.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides implementation of event-driven hooks in Claude Code plugins using prompt-based validation and bash commands for PreToolUse, Stop, and session events.
Before any workflow begins, the orchestrator determines the work mode. The mode controls which skills run, which dependencies apply, where output is saved, and whether quality gates are enforced.
1. Explicit command (highest priority):
| Command | Mode |
|---|---|
/start-project | Product |
/orchestrator | Product |
/feature | Feature |
/bugfix | Bug |
/spike | Spike |
2. Trigger phrases in user message:
| Phrases | Mode |
|---|---|
| "fix bug", "hotfix", "fix this", "patch", "fix issue", "regression" | Bug |
| "new feature", "add feature", "feature request", "enhance" | Feature |
| "investigate", "research", "spike", "brainstorm", "POC", "proof of concept", "feasibility", "explore options" | Spike |
| "new product", "start project", "build platform", "full documentation" | Product |
3. Context detection:
docs/ets/projects/{project-slug}/discovery/project-context.md exists AND the user's message describes a specific, scoped change (a single feature, endpoint, screen, or workflow) → Feature mode.docs/ets/projects/{project-slug}/discovery/project-context.md does NOT exist AND the user describes something broad (a product, platform, or system) → Product mode.4. Fallback — ask the user:
If none of the above match, ask using AskUserQuestion:
What type of work is this?
- Product — New product or platform from scratch (full 4-phase pipeline, 26 docs)
- Feature — New feature within an existing product (3-5 focused docs)
- Bug/Hotfix — Bug fix with root cause analysis and test plan (1 doc)
- Spike/Research — Investigation, brainstorm, or feasibility study (1 doc)
After detection, write to docs/ets/projects/{project-slug}/state/project-status.yaml:
{
"mode": "product | feature | bug | spike",
"workflow_version": "6.0",
"detected_from": "command | trigger | context | user",
"detected_at": "ISO-8601 timestamp",
"trigger_detail": "the command or phrase that triggered detection"
}
All subsequent orchestrator decisions read mode.json to determine routing and
workflow compatibility. Legacy projects without workflow_version should be
treated as pre-solution-discovery until explicitly migrated.
jtbd-extractor, journey-sweep, use-case-matrix, edge-case-sweep, assumption-audit)docs/ets/projects/{project-slug}/ (standard subdirectories: discovery/, planning/, architecture/, data/, ux/, implementation/)This is the existing workflow described in the sections below. No changes.
project-context.md → ENRICHES (read if exists, skip if not — no blocking)product-vision.md → ENRICHES (read if exists, skip if not — no blocking)/validate at any point.feature-status.md required as the canonical state hubdocs/ets/projects/{project-slug}/features/{feature-slug}/
feature-status.md — canonical state hub, tracking mode, next step, linked docssolution-discovery.md — feature-scoped solution selectionfeature-brief.md — Problem, scope, personas affected, acceptance criteriauser-stories.md — US-# with Given/When/Then (feature-scoped)design-delta.md — Only what changes: new endpoints, DB migrations, UI changesimpl-plan.md — impl-# tasks, T-shirt sizing, sprint assignmentThis feature's scope suggests it may benefit from the full Product mode pipeline. Product mode provides comprehensive architecture, data design, and UX coverage across all subsystems. Would you like to escalate to Product mode?
docs/ets/projects/{project-slug}/bugs/
tech-spec-{slug}.mddocs/ets/projects/{project-slug}/spikes/
spike-{slug}.mdUser request arrives
│
├─ Mode = Product? ──→ Ideate → full 4-phase pipeline
│
├─ Mode = Feature? ──→ Feature pipeline:
│ 1. Generate opportunity-pack.md + coverage-matrix.yaml
│ 2. Create or update feature-status.md
│ 3. Generate solution-discovery.md
│ 4. Generate feature-brief.md
│ 5. Generate user-stories.md
│ 6. Generate design-delta.md
│ 7. Generate impl-plan.md
│ 8. Save all to docs/ets/projects/{project-slug}/features/{feature-slug}/
│
├─ Mode = Bug? ──────→ Bug pipeline:
│ 1. Generate opportunity-pack.md + coverage-matrix.yaml
│ 2. Interview: what broke, when, impact, reproduction steps
│ 3. Generate tech-spec-{slug}.md
│ 4. Save to docs/ets/projects/{project-slug}/bugs/
│
└─ Mode = Spike? ────→ Spike pipeline:
1. Generate opportunity-pack.md + coverage-matrix.yaml
2. Clarify research question
3. Select methodology (BMAD CIS techniques available)
4. Generate spike-{slug}.md
5. Save to docs/ets/projects/{project-slug}/spikes/
This skill is the maestro of the ETUS PMDocs framework. It orchestrates the complete 4-phase documentation workflow:
Between phases, gates ensure document consistency and readiness to proceed: Ideation Readiness, Discovery Gate, Opportunity Focus Gate, Solution Readiness Gate, Requirements Gate, and Implementation Readiness.
The orchestrator:
state/reports/ metadata)state/reports/ for audit trailIDEATE (Opus)
↓ Generate: opportunity-pack.md
↓ Generate: coverage-matrix.yaml
↓ IDEATION READINESS GATE: GO/ITERATE
↓
DISCOVERY (Opus)
↓ Derive from: opportunity-pack.md
↓ Generate: project-context.md
↓ Generate: baseline.md (dados & contexto — current state metrics)
↓ Generate: discovery-report.md (evidence synthesis, insights, hypotheses H-#)
↓ Generate: product-vision.md (vision + BO-# + BMAD brainstorm)
↓ Validate: check-sst, check-traceability (lightweight)
↓ DISCOVERY GATE: GO/ITERATE/NO-GO
↓
OPPORTUNITY FOCUS (Opus)
↓ Generate: ost.md (opportunity solution tree)
↓ Generate: prioritization.md (ICE/RICE scoring → P0/P1/P2)
↓ OPPORTUNITY FOCUS GATE: GO/ITERATE
↓
SOLUTION DISCOVERY (Opus)
↓ Generate: solution-discovery.md
↓ Generate: solution-report.json
↓ SOLUTION READINESS GATE: GO/ITERATE/NO-GO
↓
REQUIREMENTS (Opus)
↓ Generate: prd.md, user-stories.md, feature-spec-*.md
↓ Validate: check-sst, check-traceability (strict)
↓ REQUIREMENTS GATE: GO/DESCOPE/ITERATE
↓
DESIGN (Opus + Sonnet x3, PARALLEL)
├─ Architecture Agent (Opus) → architecture-diagram.md, tech-spec.md
├─ Data Agent (Sonnet) → database-spec.md, data-dictionary.md, data-flow-diagram.md, schema-migration.md
├─ UX Agent (Sonnet) → wireframes.md, interaction-design.md, accessibility-spec.md, design-system-guide.md
└─ API Agent (Sonnet) → api-spec.md
↓ Generate: style-guide.md (if not already from UX agent)
↓ Validate: check-sst (strict), check-traceability
↓ IMPLEMENTATION READINESS GATE: GO/REDESIGN/ITERATE/NO-GO
↓
IMPLEMENTATION (Sonnet)
↓ Generate: implementation-plan.md, quality-checklist.md, release-plan.md
↓ Generate: release-plan.md (rollout strategy, rollback, monitoring — final doc)
↓ Link impl-# to FS-#, estimate work, assign to sprints
↓ Final validation: check-traceability (end-to-end)
↓ No gate; documentation core is complete and ready for execution in any system
The orchestrator reads two sources to determine current state, in priority order:
1. Memory (primary — always up to date):
Read docs/ets/.memory/project-state.md first. This file is auto-generated by the
PostToolUse hook after every document save — it always reflects the true current state.
project-state.md fields used by orchestrator:
Current phase: [discovery | planning | design | implementation | feature | bug | spike | not started]
Current mode: [product | feature | bug | spike | not set]
Next Step: [human-readable suggestion for what to run next]
2. Handoff files (secondary — for agent context and gate decisions):
state/reports/
├── mode.json # {mode: "product|feature|bug|spike", workflow_version: "6.0", detected_from: …}
├── phase.json # {phase: "discovery|…", status: "in_progress|completed"}
├── gate-log.md # Decision log (audit trail)
├── discovery-report.json # Output from discovery-agent
├── planning-report.json # Output from planning-agent
├── design-report.json # Output from design agents
└── implementation-report.json # Output from implementation-agent
Phase Detection Logic (4-level fallback):
docs/ets/.memory/project-state.md → Current phase and Current mode (most reliable)state/project-status.yaml → determine mode and workflow_versionstate/workflow-state.yaml → cross-check and get detailed statusdocs/ets/projects/{project-slug}/ for existing documents → infer phase from what existsUser can override: --phase planning to jump to Planning phase directly (for resuming work).
For each phase:
Single-agent phases (Discovery, Planning, Implementation):
Prompt = [System instructions] + [Phase-specific task] + [Context from step 1]
Agent = [discovery-agent | planning-agent | implementation-agent]
Model = Opus
Output = Report + Generated documents
Multi-agent phase (Design — Architecture + Data + UX + API in parallel):
1. Architecture Agent (sequential) → architecture-diagram.md, tech-spec.md
(Other agents wait for tech-spec.md as dependency)
2. PARALLEL:
- Data Agent → database-spec.md, data-dictionary.md, data-flow-diagram.md, schema-migration.md
- UX Agent → wireframes.md, interaction-design.md, accessibility-spec.md, design-system-guide.md
- API Agent → api-spec.md
3. Consolidate (Orchestrator) → Merge reports, write style-guide.md if needed
Each agent receives:
- Full system instructions (from .claude/agents/*.md)
- Phase task (from .claude/skills/[phase]/*)
- Context (from docs/ets/projects/{project-slug}/ and state/reports/)
- Expectation to write artifact to docs/ets/projects/{project-slug}/[path]
- Expectation to write report to stdout
Run validation checks:
Call validate-gate skill:
Update state/reports/:
{
"phase": "discovery",
"workflow_version": "6.0",
"status": "completed",
"gate_decision": "GO",
"gate_timestamp": "2026-03-14T10:30:00Z",
"gate_notes": "Vision clear, constraints documented. Ready for Planning."
}
If decision == GO:
phase.json to next phase, status = "in_progress"If decision == ITERATE:
status = "in_progress"If decision == NO-GO:
Design phase uses parallel agent pattern for efficiency:
Architecture Agent runs first (Opus, sequential)
Other agents wait (Data, UX, API)
Data Agent (Sonnet) — Depends on tech-spec.md
UX Agent (Sonnet) — Independent of architecture
API Agent (Sonnet) — Independent of architecture
Consolidate (Orchestrator)
Adversarial Review (Orchestrator)
Parallelism timing:
Each phase leaves a state/reports/ directory with:
state/workflow-state.yaml:
{
"phase": "discovery" | "planning" | "design" | "implementation",
"status": "in_progress" | "completed",
"started_at": "2026-03-14T09:00:00Z",
"completed_at": "2026-03-14T10:30:00Z",
"gate_decision": "GO" | "ITERATE" | "NO-GO" | "DESCOPE" | "REDESIGN",
"gate_notes": "User feedback / decision rationale"
}
state/reports/[phase]-report.json:
{
"agent": "discovery-agent" | "planning-agent" | ... ,
"documents_generated": ["project-context.md", "product-vision.md"],
"validation_status": "passed" | "failed",
"violations": [ {rule, file, line, remediation} ],
"summary": "Completed discovery phase. Generated 2 documents. Vision is clear..."
}
.claude/agents/*.md — 7 agent definitions (discovery, planning, architecture, data, ux, api, implementation).claude/skills/*/SKILL.md — 30 skills (26 doc generation + 3 validation + orchestrator)docs/ets/projects/{project-slug}/.guides/workflow.md — Step-by-step guide for using orchestratordocs/ets/projects/{project-slug}/state/reports/schema.json — JSON schema for phase.json, reportsdocs/ets/projects/{project-slug}/ids.yml — Centralized ID registrydocs/ets/projects/{project-slug}/.guides/gate-checklists.md — Gate validation checklistsThe orchestrator can enrich context using external tools:
If these integrations are available, offer them as optional enrichments, never as a requirement of the ETUS core workflow.
User: "Start documentation for our new analytics platform"
Orchestrator:
1. Check state/reports/ — empty
2. Assume Phase 1: Discovery
3. Spawn discovery-agent with guiding questions
4. Generate project-context.md, product-vision.md
5. Run validate-gate (Discovery Gate)
6. Ask: "Ready for Planning?" → if GO, move to Phase 2
User: "Continue from where we left off"
Orchestrator:
1. Read state/workflow-state.yaml → "planning", "in_progress"
2. Read state/reports/planning-report.json → "Generated prd.md, user-stories.md. FS-# incomplete."
3. Ask user: "Resume Planning and complete FS-#?" → spawn planning-agent with feedback
4. Regenerate feature-spec-*.md
5. Re-run validate-gate → if issues, iterate
User: "Jump to Design phase, I have all planning docs"
Orchestrator:
1. Detect user override: --phase design
2. Load all Planning docs (prd.md, user-stories.md, feature-spec-*.md)
3. Spawn architecture-agent (and wait for tech-spec.md)
4. Then spawn data-agent, ux-agent, api-agent in parallel
5. Consolidate and validate
6. Run Implementation Readiness Gate
All skills in this framework follow a unified dependency resolution protocol. The centralized dependency graph lives at .claude/skills/orchestrator/dependency-graph.yaml.
BLOCKS (requires in dependency-graph.yaml):
ENRICHES (enriched-by in dependency-graph.yaml):
When a skill starts and finds a BLOCKS dependency missing:
dependency-graph.yaml → find this skill's requires list<!-- STATUS: DRAFT -->## OUTPUT VALIDATION checklist passes (≥90% of checks).<!-- STATUS: DRAFT --> at the top.Each phase handoff JSON includes document status:
{
"phase": "planning",
"status": "complete",
"documents": {
"prd.md": { "status": "COMPLETE", "path": "docs/ets/projects/{project-slug}/planning/prd.md", "ids": ["PRD-F-1", "PRD-F-2", "PRD-F-3"] },
"user-stories.md": { "status": "COMPLETE", "path": "docs/ets/projects/{project-slug}/planning/user-stories.md", "ids": ["US-1", "US-2", "US-3"] },
"feature-spec-auth.md": { "status": "DRAFT", "path": "docs/ets/projects/{project-slug}/planning/feature-specs/feature-spec-auth.md", "ids": [] }
},
"unresolved_dependencies": [],
"gate_result": "GO"
}
When enforcing dependency checks, NEVER use these rationalizations to skip or weaken enforcement:
Every document generated by any skill in this framework MUST include a ## Source Documents section immediately after the title. This section lists all upstream documents consumed during generation.
## Source Documents
| Document | Path | Status | Key References |
|----------|------|--------|----------------|
| [name] | `docs/ets/projects/{project-slug}/[path]` | COMPLETE/DRAFT | [IDs or sections consumed] |
Status: COMPLETE (auto-generated)state/reports/ (survives restart)state/reports/gate-log.mdmode.json with workflow_version.validate-gate with the --adversarial flag. This ensures design documents are rigorously challenged before committing to implementation. For all other gates (Discovery, Planning), proceed directly to standard validation.