maestro-flow 0.4.8 → 0.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agy/agents/cli-explore-agent.md +186 -0
- package/.agy/agents/conceptual-planning-agent.md +244 -0
- package/.agy/agents/impeccable-agent.md +97 -0
- package/.agy/agents/team-supervisor.md +142 -0
- package/.agy/agents/team-worker.md +236 -0
- package/.agy/agents/ui-design-agent.md +286 -0
- package/.agy/agents/workflow-analyzer.md +114 -0
- package/.agy/agents/workflow-codebase-mapper.md +76 -0
- package/.agy/agents/workflow-collab-planner.md +142 -0
- package/.agy/agents/workflow-debugger.md +102 -0
- package/.agy/agents/workflow-executor.md +131 -0
- package/.agy/agents/workflow-external-researcher.md +86 -0
- package/.agy/agents/workflow-integration-checker.md +82 -0
- package/.agy/agents/workflow-nyquist-auditor.md +84 -0
- package/.agy/agents/workflow-phase-researcher.md +84 -0
- package/.agy/agents/workflow-plan-checker.md +89 -0
- package/.agy/agents/workflow-planner.md +194 -0
- package/.agy/agents/workflow-project-researcher.md +73 -0
- package/.agy/agents/workflow-research-synthesizer.md +70 -0
- package/.agy/agents/workflow-reviewer.md +81 -0
- package/.agy/agents/workflow-roadmapper.md +81 -0
- package/.agy/agents/workflow-verifier.md +119 -0
- package/.agy/skills/codify-to-knowhow/SKILL.md +172 -0
- package/.agy/skills/codify-to-knowhow/phases/01-load-manifest.md +101 -0
- package/.agy/skills/codify-to-knowhow/phases/02-generate-knowhow.md +97 -0
- package/.agy/skills/codify-to-knowhow/phases/03-generate-specs.md +92 -0
- package/.agy/skills/codify-to-knowhow/phases/04-index-verify.md +119 -0
- package/.agy/skills/learn-decompose/SKILL.md +118 -0
- package/.agy/skills/learn-follow/SKILL.md +129 -0
- package/.agy/skills/learn-investigate/SKILL.md +154 -0
- package/.agy/skills/learn-retro/SKILL.md +159 -0
- package/.agy/skills/learn-second-opinion/SKILL.md +124 -0
- package/.agy/skills/maestro/SKILL.md +221 -0
- package/.agy/skills/maestro-amend/SKILL.md +162 -0
- package/.agy/skills/maestro-analyze/SKILL.md +135 -0
- package/.agy/skills/maestro-brainstorm/SKILL.md +118 -0
- package/.agy/skills/maestro-collab/SKILL.md +174 -0
- package/.agy/skills/maestro-composer/SKILL.md +180 -0
- package/.agy/skills/maestro-execute/SKILL.md +133 -0
- package/.agy/skills/maestro-fork/SKILL.md +88 -0
- package/.agy/skills/maestro-guard/SKILL.md +101 -0
- package/.agy/skills/maestro-help/SKILL.md +267 -0
- package/.agy/skills/maestro-help/index/catalog.json +184 -0
- package/.agy/skills/maestro-help/phases/01-parse-intent.md +122 -0
- package/.agy/skills/maestro-help/phases/02-search-present.md +181 -0
- package/.agy/skills/maestro-help/phases/03-workflow-guide.md +186 -0
- package/.agy/skills/maestro-impeccable/SKILL.md +250 -0
- package/.agy/skills/maestro-init/SKILL.md +80 -0
- package/.agy/skills/maestro-learn/SKILL.md +142 -0
- package/.agy/skills/maestro-merge/SKILL.md +66 -0
- package/.agy/skills/maestro-milestone-audit/SKILL.md +70 -0
- package/.agy/skills/maestro-milestone-complete/SKILL.md +77 -0
- package/.agy/skills/maestro-milestone-release/SKILL.md +98 -0
- package/.agy/skills/maestro-overlay/SKILL.md +177 -0
- package/.agy/skills/maestro-plan/SKILL.md +172 -0
- package/.agy/skills/maestro-player/SKILL.md +176 -0
- package/.agy/skills/maestro-quick/SKILL.md +67 -0
- package/.agy/skills/maestro-ralph/SKILL.md +546 -0
- package/.agy/skills/maestro-ralph-execute/SKILL.md +255 -0
- package/.agy/skills/maestro-roadmap/SKILL.md +170 -0
- package/.agy/skills/maestro-tools-execute/SKILL.md +119 -0
- package/.agy/skills/maestro-tools-register/SKILL.md +159 -0
- package/.agy/skills/maestro-ui-codify/SKILL.md +81 -0
- package/.agy/skills/maestro-update/SKILL.md +175 -0
- package/.agy/skills/maestro-verify/SKILL.md +111 -0
- package/.agy/skills/manage-codebase-rebuild/SKILL.md +77 -0
- package/.agy/skills/manage-codebase-refresh/SKILL.md +59 -0
- package/.agy/skills/manage-harvest/SKILL.md +96 -0
- package/.agy/skills/manage-issue/SKILL.md +72 -0
- package/.agy/skills/manage-issue-discover/SKILL.md +83 -0
- package/.agy/skills/manage-knowhow/SKILL.md +76 -0
- package/.agy/skills/manage-knowhow-capture/SKILL.md +78 -0
- package/.agy/skills/manage-learn/SKILL.md +64 -0
- package/.agy/skills/manage-status/SKILL.md +51 -0
- package/.agy/skills/manage-wiki/SKILL.md +61 -0
- package/.agy/skills/quality-auto-test/SKILL.md +135 -0
- package/.agy/skills/quality-debug/SKILL.md +122 -0
- package/.agy/skills/quality-refactor/SKILL.md +69 -0
- package/.agy/skills/quality-retrospective/SKILL.md +79 -0
- package/.agy/skills/quality-review/SKILL.md +130 -0
- package/.agy/skills/quality-sync/SKILL.md +53 -0
- package/.agy/skills/quality-test/SKILL.md +119 -0
- package/.agy/skills/security-audit/SKILL.md +157 -0
- package/.agy/skills/skill-iter-tune/SKILL.md +381 -0
- package/.agy/skills/skill-iter-tune/phases/01-setup.md +144 -0
- package/.agy/skills/skill-iter-tune/phases/02-execute.md +292 -0
- package/.agy/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
- package/.agy/skills/skill-iter-tune/phases/04-improve.md +198 -0
- package/.agy/skills/skill-iter-tune/phases/05-report.md +166 -0
- package/.agy/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
- package/.agy/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
- package/.agy/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
- package/.agy/skills/spec-add/SKILL.md +67 -0
- package/.agy/skills/spec-load/SKILL.md +70 -0
- package/.agy/skills/spec-remove/SKILL.md +50 -0
- package/.agy/skills/spec-setup/SKILL.md +47 -0
- package/.agy/skills/team-coordinate/SKILL.md +267 -0
- package/.agy/skills/team-coordinate/roles/coordinator/commands/analyze-task.md +247 -0
- package/.agy/skills/team-coordinate/roles/coordinator/commands/dispatch.md +131 -0
- package/.agy/skills/team-coordinate/roles/coordinator/commands/monitor.md +348 -0
- package/.agy/skills/team-coordinate/roles/coordinator/role.md +362 -0
- package/.agy/skills/team-coordinate/specs/knowledge-transfer.md +111 -0
- package/.agy/skills/team-coordinate/specs/pipelines.md +97 -0
- package/.agy/skills/team-coordinate/specs/quality-gates.md +112 -0
- package/.agy/skills/team-coordinate/specs/role-spec-template.md +198 -0
- package/.agy/skills/team-executor/SKILL.md +180 -0
- package/.agy/skills/team-executor/roles/executor/commands/monitor.md +235 -0
- package/.agy/skills/team-executor/roles/executor/role.md +171 -0
- package/.agy/skills/team-executor/specs/session-schema.md +264 -0
- package/.agy/skills/team-lifecycle-v4/SKILL.md +189 -0
- package/.agy/skills/team-lifecycle-v4/roles/analyst/role.md +92 -0
- package/.agy/skills/team-lifecycle-v4/roles/coordinator/commands/analyze.md +56 -0
- package/.agy/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +56 -0
- package/.agy/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +206 -0
- package/.agy/skills/team-lifecycle-v4/roles/coordinator/role.md +130 -0
- package/.agy/skills/team-lifecycle-v4/roles/executor/commands/fix.md +35 -0
- package/.agy/skills/team-lifecycle-v4/roles/executor/commands/implement.md +62 -0
- package/.agy/skills/team-lifecycle-v4/roles/executor/role.md +64 -0
- package/.agy/skills/team-lifecycle-v4/roles/planner/role.md +82 -0
- package/.agy/skills/team-lifecycle-v4/roles/reviewer/commands/review-code.md +34 -0
- package/.agy/skills/team-lifecycle-v4/roles/reviewer/commands/review-spec.md +44 -0
- package/.agy/skills/team-lifecycle-v4/roles/reviewer/role.md +65 -0
- package/.agy/skills/team-lifecycle-v4/roles/supervisor/role.md +188 -0
- package/.agy/skills/team-lifecycle-v4/roles/tester/role.md +84 -0
- package/.agy/skills/team-lifecycle-v4/roles/writer/role.md +92 -0
- package/.agy/skills/team-lifecycle-v4/specs/knowledge-transfer.md +114 -0
- package/.agy/skills/team-lifecycle-v4/specs/pipelines.md +140 -0
- package/.agy/skills/team-lifecycle-v4/specs/quality-gates.md +130 -0
- package/.agy/skills/team-lifecycle-v4/templates/architecture.md +254 -0
- package/.agy/skills/team-lifecycle-v4/templates/epics.md +196 -0
- package/.agy/skills/team-lifecycle-v4/templates/product-brief.md +133 -0
- package/.agy/skills/team-lifecycle-v4/templates/requirements.md +224 -0
- package/.agy/skills/team-quality-assurance/SKILL.md +148 -0
- package/.agy/skills/team-quality-assurance/roles/analyst/role.md +85 -0
- package/.agy/skills/team-quality-assurance/roles/coordinator/commands/analyze.md +72 -0
- package/.agy/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +111 -0
- package/.agy/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +235 -0
- package/.agy/skills/team-quality-assurance/roles/coordinator/role.md +143 -0
- package/.agy/skills/team-quality-assurance/roles/executor/role.md +62 -0
- package/.agy/skills/team-quality-assurance/roles/generator/role.md +65 -0
- package/.agy/skills/team-quality-assurance/roles/scout/role.md +72 -0
- package/.agy/skills/team-quality-assurance/roles/strategist/role.md +69 -0
- package/.agy/skills/team-quality-assurance/specs/pipelines.md +115 -0
- package/.agy/skills/team-quality-assurance/specs/team-config.json +131 -0
- package/.agy/skills/team-review/SKILL.md +149 -0
- package/.agy/skills/team-review/roles/coordinator/commands/analyze.md +71 -0
- package/.agy/skills/team-review/roles/coordinator/commands/dispatch.md +91 -0
- package/.agy/skills/team-review/roles/coordinator/commands/monitor.md +209 -0
- package/.agy/skills/team-review/roles/coordinator/role.md +132 -0
- package/.agy/skills/team-review/roles/fixer/role.md +74 -0
- package/.agy/skills/team-review/roles/reviewer/role.md +66 -0
- package/.agy/skills/team-review/roles/scanner/role.md +77 -0
- package/.agy/skills/team-review/specs/dimensions.md +82 -0
- package/.agy/skills/team-review/specs/finding-schema.json +82 -0
- package/.agy/skills/team-review/specs/pipelines.md +102 -0
- package/.agy/skills/team-review/specs/team-config.json +27 -0
- package/.agy/skills/team-tech-debt/SKILL.md +133 -0
- package/.agy/skills/team-tech-debt/roles/assessor/role.md +76 -0
- package/.agy/skills/team-tech-debt/roles/coordinator/commands/analyze.md +47 -0
- package/.agy/skills/team-tech-debt/roles/coordinator/commands/dispatch.md +156 -0
- package/.agy/skills/team-tech-debt/roles/coordinator/commands/monitor.md +198 -0
- package/.agy/skills/team-tech-debt/roles/coordinator/role.md +123 -0
- package/.agy/skills/team-tech-debt/roles/executor/role.md +76 -0
- package/.agy/skills/team-tech-debt/roles/planner/role.md +68 -0
- package/.agy/skills/team-tech-debt/roles/scanner/role.md +90 -0
- package/.agy/skills/team-tech-debt/roles/validator/role.md +78 -0
- package/.agy/skills/team-tech-debt/specs/pipelines.md +47 -0
- package/.agy/skills/team-tech-debt/specs/team-config.json +129 -0
- package/.agy/skills/team-testing/SKILL.md +144 -0
- package/.agy/skills/team-testing/roles/analyst/role.md +101 -0
- package/.agy/skills/team-testing/roles/coordinator/commands/analyze.md +70 -0
- package/.agy/skills/team-testing/roles/coordinator/commands/dispatch.md +108 -0
- package/.agy/skills/team-testing/roles/coordinator/commands/monitor.md +242 -0
- package/.agy/skills/team-testing/roles/coordinator/role.md +134 -0
- package/.agy/skills/team-testing/roles/executor/role.md +95 -0
- package/.agy/skills/team-testing/roles/generator/role.md +95 -0
- package/.agy/skills/team-testing/roles/strategist/role.md +81 -0
- package/.agy/skills/team-testing/specs/pipelines.md +101 -0
- package/.agy/skills/team-testing/specs/team-config.json +93 -0
- package/.agy/skills/wiki-connect/SKILL.md +64 -0
- package/.agy/skills/wiki-digest/SKILL.md +70 -0
- package/.agy/skills/workflow-skill-designer/SKILL.md +506 -0
- package/.agy/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
- package/.agy/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
- package/.agy/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
- package/.agy/skills/workflow-skill-designer/phases/04-validation.md +471 -0
- package/dashboard/dist/assets/{ArtifactsPage-CVh0Z2I2.js → ArtifactsPage-BLvAqQlQ.js} +1 -1
- package/dashboard/dist/assets/{ChatInput-CBI3qHQQ.js → ChatInput-DU9YGZKX.js} +1 -1
- package/dashboard/dist/assets/{ChatPage-BjJ9CYox.js → ChatPage-DYHfheXC.js} +1 -1
- package/dashboard/dist/assets/{CollabPage-CprGGO9y.js → CollabPage-CSlmvEa-.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-CClxD7cH.js → ExecutionPanel-RYWf0dYC.js} +1 -1
- package/dashboard/dist/assets/{KanbanPage-copqjdPg.js → KanbanPage-N55Iv0-X.js} +1 -1
- package/dashboard/dist/assets/{MaestroCoordinatePage-CioZjQ9N.js → MaestroCoordinatePage-BxwZ6yy5.js} +1 -1
- package/dashboard/dist/assets/{MarkdownRenderer-CtUhoxCT.js → MarkdownRenderer-ZGtOY7Ti.js} +1 -1
- package/dashboard/dist/assets/{McpPage-BcPPcJpr.js → McpPage-Im6s4pGR.js} +1 -1
- package/dashboard/dist/assets/{MeetingRoomPage-BgmAKxU-.js → MeetingRoomPage-CxHRn1xx.js} +1 -1
- package/dashboard/dist/assets/{OutputPanel-DgT3gMyp.js → OutputPanel-DaL8c1i5.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-BmG7rxoG.js → ProblemsPanel-BQTd5812.js} +1 -1
- package/dashboard/dist/assets/{RequirementBoardPage-k8YoeQ0r.js → RequirementBoardPage-22y9u1qh.js} +1 -1
- package/dashboard/dist/assets/{RequirementPage-Da2354px.js → RequirementPage-_mO743Xm.js} +1 -1
- package/dashboard/dist/assets/{RoomsPage-BtqDiYaU.js → RoomsPage-CExTbOGr.js} +1 -1
- package/dashboard/dist/assets/{SpecsPage-ByPVH_M3.js → SpecsPage-gr4KX51-.js} +1 -1
- package/dashboard/dist/assets/{TeamsPage-sFDLN30L.js → TeamsPage-BxEXLb5g.js} +1 -1
- package/dashboard/dist/assets/{TreeBrowser-oEx8YJXV.js → TreeBrowser-CVtPF5C9.js} +1 -1
- package/dashboard/dist/assets/{WorkflowPage-JrX7CVHh.js → WorkflowPage-BoN18Lhs.js} +1 -1
- package/dashboard/dist/assets/{arrow-left-DYvgSdIH.js → arrow-left-C5ROg97G.js} +1 -1
- package/dashboard/dist/assets/{check-jcgYBWVR.js → check-Bs8PM0tQ.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-DvZ5sMOg.js → chevron-right-SmErd_1F.js} +1 -1
- package/dashboard/dist/assets/{circle-DYT-zoRZ.js → circle-CjpslL_D.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-Bfbv3gt4.js → circle-alert-CuzAg2fd.js} +1 -1
- package/dashboard/dist/assets/{circle-check-D82WnpbI.js → circle-check-BIkDU5D5.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-CPVD1GKF.js → circle-check-big-CYctV8bK.js} +1 -1
- package/dashboard/dist/assets/{code-B3bKFGI4.js → code-DoB7rfxt.js} +1 -1
- package/dashboard/dist/assets/{columns-3-BeMAQCix.js → columns-3-Ch5KIyRa.js} +1 -1
- package/dashboard/dist/assets/{download-BCtpoWYB.js → download-DadtG2Nr.js} +1 -1
- package/dashboard/dist/assets/{folder-CTj6SNNu.js → folder-B8ODoZfb.js} +1 -1
- package/dashboard/dist/assets/{index-BxR_3IbJ.js → index-BL4h1OKY.js} +1 -1
- package/dashboard/dist/assets/{index-DpcPd-UG.js → index-DQIlX2w_.js} +4 -4
- package/dashboard/dist/assets/{index-CWBJLu42.js → index-DaFwSmVJ.js} +10 -10
- package/dashboard/dist/assets/{list-BMv8pIQn.js → list-CI-XIPZh.js} +1 -1
- package/dashboard/dist/assets/{loader-DdM4VOgF.js → loader-DpdMoQvh.js} +1 -1
- package/dashboard/dist/assets/{minus-D15s2E__.js → minus-BVbfXGrC.js} +1 -1
- package/dashboard/dist/assets/{pen-line-DO6o4xWz.js → pen-line-CR8GaHt-.js} +1 -1
- package/dashboard/dist/assets/{pencil-qGxg9jOe.js → pencil-I7GE0y29.js} +1 -1
- package/dashboard/dist/assets/{proxy-DOffTzwA.js → proxy-CcYyZZWI.js} +1 -1
- package/dashboard/dist/assets/{refresh-cw-C9UNdLCy.js → refresh-cw-BG9V_T4R.js} +1 -1
- package/dashboard/dist/assets/{rows-2-CifAA5SL.js → rows-2-DP6NjQFk.js} +1 -1
- package/dashboard/dist/assets/{search-pe7pU1YN.js → search-b78eLlw2.js} +1 -1
- package/dashboard/dist/assets/{shallow-r7YynQYA.js → shallow-CJEesgtu.js} +1 -1
- package/dashboard/dist/assets/{table-Bh772iIw.js → table-B_lk-a1d.js} +1 -1
- package/dashboard/dist/assets/{team-types-C_HqX2p2.js → team-types-Se7f9LfJ.js} +1 -1
- package/dashboard/dist/assets/{terminal-EpmtGBlw.js → terminal-DXx4tvzq.js} +1 -1
- package/dashboard/dist/assets/{trash-2-Xen46iNQ.js → trash-2-CVh9mnRj.js} +1 -1
- package/dashboard/dist/assets/{users-BLueDPxF.js → users-Da9zGME5.js} +1 -1
- package/dashboard/dist/assets/{zap-DsQCPF61.js → zap-C0zaC7gJ.js} +1 -1
- package/dashboard/dist/index.html +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/adapter-factory.js +4 -0
- package/dashboard/dist-server/dashboard/src/server/agents/adapter-factory.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agy-adapter.d.ts +39 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agy-adapter.js +423 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agy-adapter.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.d.ts +6 -0
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +109 -0
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +2 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +1 -1
- package/dist/shared/agent-types.d.ts +1 -1
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.js +3 -0
- package/dist/src/agents/cli-agent-runner.js.map +1 -1
- package/dist/src/commands/hooks.d.ts +64 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +107 -0
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install.d.ts.map +1 -1
- package/dist/src/commands/install.js +17 -3
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +53 -0
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/config/cli-tools-config.d.ts +19 -5
- package/dist/src/config/cli-tools-config.d.ts.map +1 -1
- package/dist/src/config/cli-tools-config.js +77 -32
- package/dist/src/config/cli-tools-config.js.map +1 -1
- package/dist/src/config/cli-tools-defaults.json +2 -1
- package/dist/src/core/component-defs.d.ts.map +1 -1
- package/dist/src/core/component-defs.js +53 -0
- package/dist/src/core/component-defs.js.map +1 -1
- package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallExecution.js +5 -3
- package/dist/src/tui/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/utils/update-notices.d.ts +62 -0
- package/dist/src/utils/update-notices.d.ts.map +1 -0
- package/dist/src/utils/update-notices.js +178 -0
- package/dist/src/utils/update-notices.js.map +1 -0
- package/package.json +84 -82
- package/shared/agent-types.ts +1 -1
- package/workflows/agy-instructions.md +124 -0
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
# Phase 2: Orchestrator Design
|
|
2
|
+
|
|
3
|
+
Generate the SKILL.md orchestrator file from workflowConfig, applying all coordination patterns (progressive loading, TodoWrite, data flow, conditional execution).
|
|
4
|
+
|
|
5
|
+
## Objective
|
|
6
|
+
|
|
7
|
+
- Create `.claude/skills/{skillName}/SKILL.md` as pure coordinator
|
|
8
|
+
- Apply frontmatter conversion rules
|
|
9
|
+
- Generate architecture diagram from phase structure
|
|
10
|
+
- Build execution flow with `Ref:` markers and phase reference table
|
|
11
|
+
- Generate data flow diagram
|
|
12
|
+
- Build TodoWrite attachment/collapse patterns from phase definitions
|
|
13
|
+
- Include all orchestrator-level sections
|
|
14
|
+
|
|
15
|
+
## Step 2.1: Create Directory Structure
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
skillDir=".claude/skills/${workflowConfig.skillName}"
|
|
19
|
+
mkdir -p "${skillDir}/phases"
|
|
20
|
+
|
|
21
|
+
# Optional directories based on features
|
|
22
|
+
# mkdir -p "${skillDir}/specs" # if has domain specifications
|
|
23
|
+
# mkdir -p "${skillDir}/templates" # if has reusable templates
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Step 2.2: Generate Frontmatter
|
|
27
|
+
|
|
28
|
+
```javascript
|
|
29
|
+
function generateFrontmatter(config) {
|
|
30
|
+
return `---
|
|
31
|
+
name: ${config.skillName}
|
|
32
|
+
description: ${config.description}. Triggers on ${config.triggers.map(t => `"${t}"`).join(', ')}.
|
|
33
|
+
allowed-tools: ${config.allowedTools.join(', ')}
|
|
34
|
+
---`;
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Conversion from command frontmatter**:
|
|
39
|
+
|
|
40
|
+
```javascript
|
|
41
|
+
// If source is command_set, convert fields:
|
|
42
|
+
function convertCommandFrontmatter(commandFm, config) {
|
|
43
|
+
return {
|
|
44
|
+
name: commandFm.group
|
|
45
|
+
? `${commandFm.group}-${commandFm.name}` // "workflow" + "plan" → "workflow-plan"
|
|
46
|
+
: commandFm.name,
|
|
47
|
+
description: commandFm.description,
|
|
48
|
+
// argument-hint → removed (handled in Input Processing section)
|
|
49
|
+
// examples → removed (moved to inline docs)
|
|
50
|
+
// group → embedded in name prefix
|
|
51
|
+
allowedTools: expandToolWildcards(commandFm['allowed-tools'])
|
|
52
|
+
// "Skill(*), TodoWrite(*), view_file(*)" → "Task, ask_question, TodoWrite, Read, Write, Edit, Bash, Glob, Grep, Skill"
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Expand tool wildcards
|
|
57
|
+
function expandToolWildcards(toolsStr) {
|
|
58
|
+
const expanded = toolsStr
|
|
59
|
+
.replace(/Skill\(\*\)/g, 'Skill')
|
|
60
|
+
.replace(/TodoWrite\(\*\)/g, 'TodoWrite')
|
|
61
|
+
.replace(/Read\(\*\)/g, 'Read')
|
|
62
|
+
.replace(/Bash\(\*\)/g, 'Bash')
|
|
63
|
+
.replace(/Glob\(\*\)/g, 'Glob')
|
|
64
|
+
.replace(/Grep\(\*\)/g, 'Grep')
|
|
65
|
+
.replace(/Task\(\*\)/g, 'Task');
|
|
66
|
+
|
|
67
|
+
// Add commonly needed tools if not present
|
|
68
|
+
const baseTools = ['Task', 'ask_question', 'TodoWrite', 'Read', 'Write', 'Edit', 'Bash', 'Glob', 'Grep'];
|
|
69
|
+
const current = expanded.split(',').map(t => t.trim());
|
|
70
|
+
const merged = [...new Set([...current, ...baseTools])];
|
|
71
|
+
return merged;
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Step 2.3: Generate Architecture Diagram
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
function generateArchitectureDiagram(config) {
|
|
79
|
+
const phases = config.phases;
|
|
80
|
+
const maxWidth = 65;
|
|
81
|
+
|
|
82
|
+
let diagram = '```\n';
|
|
83
|
+
diagram += '┌' + '─'.repeat(maxWidth) + '┐\n';
|
|
84
|
+
diagram += `│ ${config.title} Orchestrator (SKILL.md)${' '.repeat(maxWidth - config.title.length - 30)}│\n`;
|
|
85
|
+
diagram += `│ → Pure coordinator: Execute phases, parse outputs, pass context${' '.repeat(maxWidth - 64)}│\n`;
|
|
86
|
+
diagram += '└' + '─'.repeat(Math.floor(maxWidth/2)) + '┬' + '─'.repeat(maxWidth - Math.floor(maxWidth/2) - 1) + '┘\n';
|
|
87
|
+
|
|
88
|
+
// Phase boxes
|
|
89
|
+
diagram += ' │\n';
|
|
90
|
+
diagram += ' ' + phases.map(() => '┌─────────┐').join(' ') + '\n';
|
|
91
|
+
diagram += ' ' + phases.map((p, i) => {
|
|
92
|
+
const label = `Phase ${p.number}`.padEnd(9);
|
|
93
|
+
return `│${label}│`;
|
|
94
|
+
}).join(' ') + '\n';
|
|
95
|
+
diagram += ' ' + phases.map(p => {
|
|
96
|
+
const name = p.name.substring(0, 9).padEnd(9);
|
|
97
|
+
return `│${name}│`;
|
|
98
|
+
}).join(' ') + '\n';
|
|
99
|
+
diagram += ' ' + phases.map(() => '└─────────┘').join(' ') + '\n';
|
|
100
|
+
|
|
101
|
+
// Output labels
|
|
102
|
+
diagram += ' ' + phases.map(p => {
|
|
103
|
+
const vars = p.outputVariables.join(', ').substring(0, 11).padEnd(11);
|
|
104
|
+
return ` ${vars}`;
|
|
105
|
+
}).join('') + '\n';
|
|
106
|
+
|
|
107
|
+
diagram += '```';
|
|
108
|
+
return diagram;
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Step 2.4: Generate Execution Flow
|
|
113
|
+
|
|
114
|
+
The execution flow uses `Ref:` markers to point to phase documents, with a Phase Reference Documents table inline.
|
|
115
|
+
|
|
116
|
+
```javascript
|
|
117
|
+
function generateExecutionFlow(config) {
|
|
118
|
+
let flow = '## Execution Flow\n\n```\n';
|
|
119
|
+
flow += 'Input Parsing:\n';
|
|
120
|
+
flow += ' └─ Convert user input to structured format (GOAL/SCOPE/CONTEXT)\n\n';
|
|
121
|
+
|
|
122
|
+
for (const phase of config.phases) {
|
|
123
|
+
flow += `Phase ${phase.number}: ${phase.name}\n`;
|
|
124
|
+
|
|
125
|
+
if (phase.isConditional) {
|
|
126
|
+
flow += ` └─ Decision (${phase.condition}):\n`;
|
|
127
|
+
flow += ` ├─ condition met → Ref: phases/${String(phase.number).padStart(2, '0')}-${phase.slug}.md\n`;
|
|
128
|
+
if (phase.todoWriteSubTasks.length > 0) {
|
|
129
|
+
flow += ` │ ├─ Tasks attached: ${phase.todoWriteSubTasks.join(' → ')}\n`;
|
|
130
|
+
}
|
|
131
|
+
flow += ` │ └─ Output: ${phase.outputFiles.join(', ') || phase.outputVariables.join(', ')}\n`;
|
|
132
|
+
flow += ` └─ condition not met → Skip to Phase ${phase.number + 1}\n`;
|
|
133
|
+
} else {
|
|
134
|
+
flow += ` └─ Ref: phases/${String(phase.number).padStart(2, '0')}-${phase.slug}.md\n`;
|
|
135
|
+
if (phase.todoWriteSubTasks.length > 0) {
|
|
136
|
+
flow += ` ├─ Tasks attached: ${phase.todoWriteSubTasks.join(' → ')}\n`;
|
|
137
|
+
}
|
|
138
|
+
flow += ` └─ Output: ${[...phase.outputVariables, ...phase.outputFiles].join(', ')}\n`;
|
|
139
|
+
}
|
|
140
|
+
flow += '\n';
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
flow += 'Return:\n └─ Summary with recommended next steps\n';
|
|
144
|
+
flow += '```\n\n';
|
|
145
|
+
|
|
146
|
+
// Phase Reference Documents table
|
|
147
|
+
flow += '**Phase Reference Documents** (read on-demand when phase executes):\n\n';
|
|
148
|
+
flow += '| Phase | Document | Purpose |\n';
|
|
149
|
+
flow += '|-------|----------|---------|\n';
|
|
150
|
+
for (const phase of config.phases) {
|
|
151
|
+
const filename = `${String(phase.number).padStart(2, '0')}-${phase.slug}.md`;
|
|
152
|
+
flow += `| ${phase.number} | [phases/${filename}](phases/${filename}) | ${phase.description} |\n`;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return flow;
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Step 2.5: Generate Data Flow Section
|
|
160
|
+
|
|
161
|
+
```javascript
|
|
162
|
+
function generateDataFlow(config) {
|
|
163
|
+
let section = '## Data Flow\n\n```\n';
|
|
164
|
+
section += 'User Input (task description)\n';
|
|
165
|
+
section += ' ↓\n';
|
|
166
|
+
section += '[Convert to Structured Format]\n';
|
|
167
|
+
|
|
168
|
+
for (const phase of config.phases) {
|
|
169
|
+
const inputVars = config.dataFlow
|
|
170
|
+
.filter(d => d.to === `phase${phase.number}`)
|
|
171
|
+
.flatMap(d => d.variables);
|
|
172
|
+
const outputVars = [...phase.outputVariables, ...phase.outputFiles];
|
|
173
|
+
|
|
174
|
+
section += ' ↓\n';
|
|
175
|
+
section += `Phase ${phase.number}: ${phase.name}\n`;
|
|
176
|
+
if (inputVars.length > 0) {
|
|
177
|
+
section += ` ↓ Input: ${inputVars.join(' + ')}\n`;
|
|
178
|
+
}
|
|
179
|
+
if (outputVars.length > 0) {
|
|
180
|
+
section += ` ↓ Output: ${outputVars.join(' + ')}\n`;
|
|
181
|
+
}
|
|
182
|
+
if (phase.isConditional) {
|
|
183
|
+
section += ` ↓ Skip if ${phase.condition} is false → proceed to Phase ${phase.number + 1}\n`;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
section += ' ↓\n';
|
|
188
|
+
section += 'Return summary to user\n';
|
|
189
|
+
section += '```\n';
|
|
190
|
+
return section;
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Step 2.6: Generate TodoWrite Pattern
|
|
195
|
+
|
|
196
|
+
```javascript
|
|
197
|
+
function generateTodoWritePattern(config) {
|
|
198
|
+
let section = '## TodoWrite Pattern\n\n';
|
|
199
|
+
section += '**Core Concept**: Dynamic task attachment and collapse for real-time visibility.\n\n';
|
|
200
|
+
|
|
201
|
+
section += '### Key Principles\n\n';
|
|
202
|
+
section += '1. **Task Attachment** (when phase executed):\n';
|
|
203
|
+
section += ' - Sub-tasks are **attached** to orchestrator\'s TodoWrite\n';
|
|
204
|
+
|
|
205
|
+
// Identify which phases have sub-tasks
|
|
206
|
+
const phasesWithSubTasks = config.phases.filter(p => p.todoWriteSubTasks.length > 0);
|
|
207
|
+
const phasesWithoutSubTasks = config.phases.filter(p => p.todoWriteSubTasks.length === 0);
|
|
208
|
+
|
|
209
|
+
if (phasesWithSubTasks.length > 0) {
|
|
210
|
+
section += ` - **${phasesWithSubTasks.map(p => `Phase ${p.number}`).join(', ')}**: Multiple sub-tasks attached\n`;
|
|
211
|
+
}
|
|
212
|
+
if (phasesWithoutSubTasks.length > 0) {
|
|
213
|
+
section += ` - **${phasesWithoutSubTasks.map(p => `Phase ${p.number}`).join(', ')}**: Single task (atomic)\n`;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
section += '\n2. **Task Collapse** (after sub-tasks complete):\n';
|
|
217
|
+
if (phasesWithSubTasks.length > 0) {
|
|
218
|
+
section += ` - **Applies to ${phasesWithSubTasks.map(p => `Phase ${p.number}`).join(', ')}**: Remove sub-tasks, collapse to summary\n`;
|
|
219
|
+
}
|
|
220
|
+
section += ' - Maintains clean orchestrator-level view\n';
|
|
221
|
+
|
|
222
|
+
section += '\n3. **Continuous Execution**: After completion, automatically proceed to next phase\n\n';
|
|
223
|
+
|
|
224
|
+
// Generate TodoWrite examples for phases with sub-tasks
|
|
225
|
+
for (const phase of phasesWithSubTasks) {
|
|
226
|
+
section += `### Phase ${phase.number} (Tasks Attached):\n`;
|
|
227
|
+
section += '```json\n[\n';
|
|
228
|
+
|
|
229
|
+
// Previous phases completed
|
|
230
|
+
for (const prev of config.phases.filter(p => p.number < phase.number)) {
|
|
231
|
+
section += ` {"content": "Phase ${prev.number}: ${prev.name}", "status": "completed"},\n`;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Current phase in_progress with sub-tasks
|
|
235
|
+
section += ` {"content": "Phase ${phase.number}: ${phase.name}", "status": "in_progress"},\n`;
|
|
236
|
+
phase.todoWriteSubTasks.forEach((task, i) => {
|
|
237
|
+
const status = i === 0 ? 'in_progress' : 'pending';
|
|
238
|
+
section += ` {"content": " → ${task}", "status": "${status}"},\n`;
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
// Remaining phases pending
|
|
242
|
+
for (const next of config.phases.filter(p => p.number > phase.number && !p.isConditional)) {
|
|
243
|
+
section += ` {"content": "Phase ${next.number}: ${next.name}", "status": "pending"},\n`;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
section += ']\n```\n\n';
|
|
247
|
+
|
|
248
|
+
// Collapsed version
|
|
249
|
+
section += `### Phase ${phase.number} (Collapsed):\n`;
|
|
250
|
+
section += '```json\n[\n';
|
|
251
|
+
for (const p of config.phases.filter(pp => !pp.isConditional || pp.number <= phase.number)) {
|
|
252
|
+
const status = p.number <= phase.number ? 'completed' : 'pending';
|
|
253
|
+
section += ` {"content": "Phase ${p.number}: ${p.name}", "status": "${status}"},\n`;
|
|
254
|
+
}
|
|
255
|
+
section += ']\n```\n\n';
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return section;
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## Step 2.7: Generate Remaining Sections
|
|
263
|
+
|
|
264
|
+
Extract from source orchestrator or generate from config:
|
|
265
|
+
|
|
266
|
+
```javascript
|
|
267
|
+
function generateOrchestratorSections(config, sourceContent) {
|
|
268
|
+
const sections = [];
|
|
269
|
+
|
|
270
|
+
// Interactive Preference Collection + Auto Mode (if feature enabled)
|
|
271
|
+
if (config.features.hasAutoMode) {
|
|
272
|
+
sections.push(generateInteractivePreferenceCollection(config));
|
|
273
|
+
sections.push(extractOrGenerate(sourceContent, 'Auto Mode Defaults',
|
|
274
|
+
'## Auto Mode Defaults\n\nWhen `workflowPreferences.autoYes === true`: Auto-continue all phases, use recommended defaults.\n'));
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// Core Rules
|
|
278
|
+
sections.push(extractOrGenerate(sourceContent, 'Core Rules',
|
|
279
|
+
generateDefaultCoreRules(config)));
|
|
280
|
+
|
|
281
|
+
// Input Processing
|
|
282
|
+
sections.push(extractOrGenerate(sourceContent, 'Input Processing',
|
|
283
|
+
generateDefaultInputProcessing(config)));
|
|
284
|
+
|
|
285
|
+
// Post-Phase Updates (if feature enabled)
|
|
286
|
+
if (config.features.hasPostPhaseUpdates) {
|
|
287
|
+
sections.push(extractOrGenerate(sourceContent, 'Post-Phase Updates',
|
|
288
|
+
generatePostPhaseUpdates(config)));
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Error Handling
|
|
292
|
+
sections.push(extractOrGenerate(sourceContent, 'Error Handling',
|
|
293
|
+
generateDefaultErrorHandling()));
|
|
294
|
+
|
|
295
|
+
// Coordinator Checklist
|
|
296
|
+
sections.push(extractOrGenerate(sourceContent, 'Coordinator Checklist',
|
|
297
|
+
generateCoordinatorChecklist(config)));
|
|
298
|
+
|
|
299
|
+
// Related Commands
|
|
300
|
+
sections.push(extractOrGenerate(sourceContent, 'Related Commands',
|
|
301
|
+
generateRelatedCommands(config)));
|
|
302
|
+
|
|
303
|
+
return sections.join('\n\n');
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// Extract section from source if exists, otherwise generate default
|
|
307
|
+
function extractOrGenerate(sourceContent, sectionName, defaultContent) {
|
|
308
|
+
if (sourceContent) {
|
|
309
|
+
const extracted = extractSection(sourceContent, sectionName);
|
|
310
|
+
if (extracted) return extracted;
|
|
311
|
+
}
|
|
312
|
+
return defaultContent;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// Default Core Rules template
|
|
316
|
+
function generateDefaultCoreRules(config) {
|
|
317
|
+
return `## Core Rules
|
|
318
|
+
|
|
319
|
+
1. **Start Immediately**: First action is TodoWrite initialization, second action is Phase 1 execution
|
|
320
|
+
2. **No Preliminary Analysis**: Do not read files or gather context before Phase 1
|
|
321
|
+
3. **Parse Every Output**: Extract required data from each phase for next phase
|
|
322
|
+
4. **Auto-Continue**: Check TodoList status to execute next pending phase automatically
|
|
323
|
+
5. **Track Progress**: Update TodoWrite dynamically with task attachment/collapse pattern
|
|
324
|
+
6. **Progressive Phase Loading**: Read phase docs ONLY when that phase is about to execute
|
|
325
|
+
7. **DO NOT STOP**: Continuous multi-phase workflow until all phases complete`;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// Default Error Handling template
|
|
329
|
+
function generateDefaultErrorHandling() {
|
|
330
|
+
return `## Error Handling
|
|
331
|
+
|
|
332
|
+
- **Parsing Failure**: If output parsing fails, retry once, then report error
|
|
333
|
+
- **Validation Failure**: Report which file/data is missing
|
|
334
|
+
- **Command Failure**: Keep phase \`in_progress\`, report error, do not proceed`;
|
|
335
|
+
}
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
## Step 2.8: Generate Interactive Preference Collection
|
|
339
|
+
|
|
340
|
+
When the skill has configurable behaviors (auto mode, force options, etc.), generate the ask_question-based preference collection section for SKILL.md:
|
|
341
|
+
|
|
342
|
+
```javascript
|
|
343
|
+
function generateInteractivePreferenceCollection(config) {
|
|
344
|
+
if (!config.features.hasAutoMode && !config.preferenceQuestions?.length) {
|
|
345
|
+
return '';
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
let section = '## Interactive Preference Collection\n\n';
|
|
349
|
+
section += 'Collect workflow preferences via ask_question before dispatching to phases:\n\n';
|
|
350
|
+
section += '```javascript\n';
|
|
351
|
+
section += 'const prefResponse = ask_question({\n';
|
|
352
|
+
section += ' questions: [\n';
|
|
353
|
+
|
|
354
|
+
// Always include auto mode question if feature enabled
|
|
355
|
+
if (config.features.hasAutoMode) {
|
|
356
|
+
section += ' {\n';
|
|
357
|
+
section += ' question: "是否跳过所有确认步骤(自动模式)?",\n';
|
|
358
|
+
section += ' header: "Auto Mode",\n';
|
|
359
|
+
section += ' multiSelect: false,\n';
|
|
360
|
+
section += ' options: [\n';
|
|
361
|
+
section += ' { label: "Interactive (Recommended)", description: "交互模式,包含确认步骤" },\n';
|
|
362
|
+
section += ' { label: "Auto", description: "跳过所有确认,自动执行" }\n';
|
|
363
|
+
section += ' ]\n';
|
|
364
|
+
section += ' },\n';
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// Add custom preference questions
|
|
368
|
+
for (const pq of (config.preferenceQuestions || [])) {
|
|
369
|
+
section += ` {\n`;
|
|
370
|
+
section += ` question: "${pq.question}",\n`;
|
|
371
|
+
section += ` header: "${pq.header}",\n`;
|
|
372
|
+
section += ` multiSelect: false,\n`;
|
|
373
|
+
section += ` options: [\n`;
|
|
374
|
+
for (const opt of pq.options) {
|
|
375
|
+
section += ` { label: "${opt.label}", description: "${opt.description}" },\n`;
|
|
376
|
+
}
|
|
377
|
+
section += ` ]\n`;
|
|
378
|
+
section += ` },\n`;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
section += ' ]\n';
|
|
382
|
+
section += '})\n\n';
|
|
383
|
+
section += '// Derive workflowPreferences from user selection\n';
|
|
384
|
+
section += 'workflowPreferences = {\n';
|
|
385
|
+
if (config.features.hasAutoMode) {
|
|
386
|
+
section += ' autoYes: prefResponse.autoMode === "Auto",\n';
|
|
387
|
+
}
|
|
388
|
+
for (const pq of (config.preferenceQuestions || [])) {
|
|
389
|
+
section += ` ${pq.key}: prefResponse.${pq.header.toLowerCase().replace(/\\s+/g, '')} === "${pq.activeValue}",\n`;
|
|
390
|
+
}
|
|
391
|
+
section += '}\n';
|
|
392
|
+
section += '```\n\n';
|
|
393
|
+
section += '**workflowPreferences** is passed to phase execution as context variable.\n';
|
|
394
|
+
section += 'Phases reference as `workflowPreferences.autoYes`, `workflowPreferences.{key}`, etc.\n';
|
|
395
|
+
|
|
396
|
+
return section;
|
|
397
|
+
}
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
## Step 2.9: Assemble SKILL.md
|
|
401
|
+
|
|
402
|
+
```javascript
|
|
403
|
+
function assembleSkillMd(config, sourceContent) {
|
|
404
|
+
const parts = [
|
|
405
|
+
generateFrontmatter(config),
|
|
406
|
+
'',
|
|
407
|
+
`# ${config.title}`,
|
|
408
|
+
'',
|
|
409
|
+
config.description,
|
|
410
|
+
'',
|
|
411
|
+
generateArchitectureDiagram(config),
|
|
412
|
+
'',
|
|
413
|
+
generateDesignPrinciples(config),
|
|
414
|
+
'',
|
|
415
|
+
generateExecutionFlow(config),
|
|
416
|
+
'',
|
|
417
|
+
generateDataFlow(config),
|
|
418
|
+
'',
|
|
419
|
+
generateTodoWritePattern(config),
|
|
420
|
+
'',
|
|
421
|
+
generateOrchestratorSections(config, sourceContent)
|
|
422
|
+
];
|
|
423
|
+
|
|
424
|
+
const skillMdContent = parts.join('\n');
|
|
425
|
+
write_to_file(`${skillDir}/SKILL.md`, skillMdContent);
|
|
426
|
+
}
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
**Critical Quality Rules**:
|
|
430
|
+
|
|
431
|
+
1. SKILL.md must NOT contain full execution detail (agent prompts, bash commands)
|
|
432
|
+
2. SKILL.md MUST contain `Ref:` markers pointing to phase files
|
|
433
|
+
3. SKILL.md MUST contain Phase Reference Documents table
|
|
434
|
+
4. Every phase mentioned in Execution Flow must have a corresponding phase file
|
|
435
|
+
5. Data flow variables must be consistent across sections
|
|
436
|
+
|
|
437
|
+
## Output
|
|
438
|
+
|
|
439
|
+
- **File**: `.claude/skills/{skillName}/SKILL.md`
|
|
440
|
+
- **TodoWrite**: Mark Phase 2 completed, Phase 3 in_progress
|
|
441
|
+
|
|
442
|
+
## Next Phase
|
|
443
|
+
|
|
444
|
+
Return to orchestrator, then auto-continue to [Phase 3: Phase Files Design](03-phase-design.md).
|