maestro-flow 0.4.10 → 0.4.12
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/.agents/agents/cli-explore-agent.md +187 -0
- package/.agents/agents/cross-role-reviewer.md +173 -0
- package/.agents/agents/impeccable-agent.md +101 -0
- package/.agents/agents/role-design-author.md +218 -0
- package/.agents/agents/team-supervisor.md +145 -0
- package/.agents/agents/team-worker.md +239 -0
- package/.agents/agents/ui-design-agent.md +272 -0
- package/.agents/agents/workflow-analyzer.md +117 -0
- package/.agents/agents/workflow-codebase-mapper.md +79 -0
- package/.agents/agents/workflow-collab-planner.md +145 -0
- package/.agents/agents/workflow-debugger.md +105 -0
- package/.agents/agents/workflow-executor.md +134 -0
- package/.agents/agents/workflow-external-researcher.md +88 -0
- package/.agents/agents/workflow-integration-checker.md +85 -0
- package/.agents/agents/workflow-nyquist-auditor.md +87 -0
- package/.agents/agents/workflow-phase-researcher.md +87 -0
- package/.agents/agents/workflow-plan-checker.md +92 -0
- package/.agents/agents/workflow-planner.md +197 -0
- package/.agents/agents/workflow-project-researcher.md +76 -0
- package/.agents/agents/workflow-research-synthesizer.md +72 -0
- package/.agents/agents/workflow-reviewer.md +84 -0
- package/.agents/agents/workflow-roadmapper.md +83 -0
- package/.agents/agents/workflow-verifier.md +122 -0
- package/.agents/skills/codify-to-knowhow/SKILL.md +169 -0
- package/.agents/skills/codify-to-knowhow/phases/01-load-manifest.md +101 -0
- package/.agents/skills/codify-to-knowhow/phases/02-generate-knowhow.md +97 -0
- package/.agents/skills/codify-to-knowhow/phases/03-generate-specs.md +92 -0
- package/.agents/skills/codify-to-knowhow/phases/04-index-verify.md +119 -0
- package/.agents/skills/learn-decompose/SKILL.md +118 -0
- package/.agents/skills/learn-follow/SKILL.md +129 -0
- package/.agents/skills/learn-investigate/SKILL.md +154 -0
- package/.agents/skills/learn-retro/SKILL.md +159 -0
- package/.agents/skills/learn-second-opinion/SKILL.md +124 -0
- package/.agents/skills/maestro/SKILL.md +258 -0
- package/.agents/skills/maestro-amend/SKILL.md +165 -0
- package/.agents/skills/maestro-analyze/SKILL.md +161 -0
- package/.agents/skills/maestro-blueprint/SKILL.md +132 -0
- package/.agents/skills/maestro-brainstorm/SKILL.md +134 -0
- package/.agents/skills/maestro-collab/SKILL.md +174 -0
- package/.agents/skills/maestro-composer/SKILL.md +181 -0
- package/.agents/skills/maestro-execute/SKILL.md +133 -0
- package/.agents/skills/maestro-fork/SKILL.md +88 -0
- package/.agents/skills/maestro-guard/SKILL.md +103 -0
- package/.agents/skills/maestro-help/SKILL.md +300 -0
- package/.agents/skills/maestro-help/index/catalog.json +202 -0
- package/.agents/skills/maestro-help/phases/01-parse-intent.md +122 -0
- package/.agents/skills/maestro-help/phases/02-search-present.md +183 -0
- package/.agents/skills/maestro-help/phases/03-workflow-guide.md +213 -0
- package/.agents/skills/maestro-impeccable/SKILL.md +251 -0
- package/.agents/skills/maestro-init/SKILL.md +80 -0
- package/.agents/skills/maestro-learn/SKILL.md +142 -0
- package/.agents/skills/maestro-merge/SKILL.md +66 -0
- package/.agents/skills/maestro-milestone-audit/SKILL.md +72 -0
- package/.agents/skills/maestro-milestone-complete/SKILL.md +79 -0
- package/.agents/skills/maestro-milestone-release/SKILL.md +98 -0
- package/.agents/skills/maestro-overlay/SKILL.md +180 -0
- package/.agents/skills/maestro-plan/SKILL.md +182 -0
- package/.agents/skills/maestro-player/SKILL.md +177 -0
- package/.agents/skills/maestro-quick/SKILL.md +67 -0
- package/.agents/skills/maestro-ralph/SKILL.md +756 -0
- package/.agents/skills/maestro-ralph-execute/SKILL.md +273 -0
- package/.agents/skills/maestro-roadmap/SKILL.md +131 -0
- package/.agents/skills/maestro-tools-execute/SKILL.md +119 -0
- package/.agents/skills/maestro-tools-register/SKILL.md +159 -0
- package/.agents/skills/maestro-ui-codify/SKILL.md +82 -0
- package/.agents/skills/maestro-update/SKILL.md +178 -0
- package/.agents/skills/maestro-verify/SKILL.md +111 -0
- package/.agents/skills/manage-codebase-rebuild/SKILL.md +77 -0
- package/.agents/skills/manage-codebase-refresh/SKILL.md +59 -0
- package/.agents/skills/manage-harvest/SKILL.md +96 -0
- package/.agents/skills/manage-issue/SKILL.md +75 -0
- package/.agents/skills/manage-issue-discover/SKILL.md +83 -0
- package/.agents/skills/manage-knowhow/SKILL.md +79 -0
- package/.agents/skills/manage-knowhow-capture/SKILL.md +81 -0
- package/.agents/skills/manage-learn/SKILL.md +67 -0
- package/.agents/skills/manage-status/SKILL.md +54 -0
- package/.agents/skills/manage-wiki/SKILL.md +64 -0
- package/.agents/skills/quality-auto-test/SKILL.md +138 -0
- package/.agents/skills/quality-debug/SKILL.md +122 -0
- package/.agents/skills/quality-refactor/SKILL.md +69 -0
- package/.agents/skills/quality-retrospective/SKILL.md +79 -0
- package/.agents/skills/quality-review/SKILL.md +130 -0
- package/.agents/skills/quality-sync/SKILL.md +53 -0
- package/.agents/skills/quality-test/SKILL.md +119 -0
- package/.agents/skills/security-audit/SKILL.md +157 -0
- package/.agents/skills/skill-iter-tune/SKILL.md +384 -0
- package/.agents/skills/skill-iter-tune/phases/01-setup.md +144 -0
- package/.agents/skills/skill-iter-tune/phases/02-execute.md +292 -0
- package/.agents/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
- package/.agents/skills/skill-iter-tune/phases/04-improve.md +186 -0
- package/.agents/skills/skill-iter-tune/phases/05-report.md +166 -0
- package/.agents/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
- package/.agents/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
- package/.agents/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
- package/.agents/skills/spec-add/SKILL.md +70 -0
- package/.agents/skills/spec-load/SKILL.md +73 -0
- package/.agents/skills/spec-remove/SKILL.md +53 -0
- package/.agents/skills/spec-setup/SKILL.md +50 -0
- package/.agents/skills/team-coordinate/SKILL.md +268 -0
- package/.agents/skills/team-coordinate/roles/coordinator/commands/analyze-task.md +247 -0
- package/.agents/skills/team-coordinate/roles/coordinator/commands/dispatch.md +131 -0
- package/.agents/skills/team-coordinate/roles/coordinator/commands/monitor.md +358 -0
- package/.agents/skills/team-coordinate/roles/coordinator/role.md +365 -0
- package/.agents/skills/team-coordinate/specs/knowledge-transfer.md +111 -0
- package/.agents/skills/team-coordinate/specs/pipelines.md +97 -0
- package/.agents/skills/team-coordinate/specs/quality-gates.md +112 -0
- package/.agents/skills/team-coordinate/specs/role-spec-template.md +198 -0
- package/.agents/skills/team-executor/SKILL.md +191 -0
- package/.agents/skills/team-executor/roles/executor/commands/monitor.md +239 -0
- package/.agents/skills/team-executor/roles/executor/role.md +171 -0
- package/.agents/skills/team-executor/specs/session-schema.md +264 -0
- package/.agents/skills/team-lifecycle-v4/SKILL.md +211 -0
- package/.agents/skills/team-lifecycle-v4/roles/analyst/role.md +96 -0
- package/.agents/skills/team-lifecycle-v4/roles/coordinator/commands/analyze.md +56 -0
- package/.agents/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +56 -0
- package/.agents/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +206 -0
- package/.agents/skills/team-lifecycle-v4/roles/coordinator/role.md +130 -0
- package/.agents/skills/team-lifecycle-v4/roles/executor/commands/fix.md +35 -0
- package/.agents/skills/team-lifecycle-v4/roles/executor/commands/implement.md +62 -0
- package/.agents/skills/team-lifecycle-v4/roles/executor/role.md +69 -0
- package/.agents/skills/team-lifecycle-v4/roles/planner/role.md +87 -0
- package/.agents/skills/team-lifecycle-v4/roles/reviewer/commands/review-code.md +34 -0
- package/.agents/skills/team-lifecycle-v4/roles/reviewer/commands/review-spec.md +44 -0
- package/.agents/skills/team-lifecycle-v4/roles/reviewer/role.md +71 -0
- package/.agents/skills/team-lifecycle-v4/roles/supervisor/role.md +194 -0
- package/.agents/skills/team-lifecycle-v4/roles/tester/role.md +89 -0
- package/.agents/skills/team-lifecycle-v4/roles/writer/role.md +97 -0
- package/.agents/skills/team-lifecycle-v4/specs/knowledge-transfer.md +114 -0
- package/.agents/skills/team-lifecycle-v4/specs/pipelines.md +140 -0
- package/.agents/skills/team-lifecycle-v4/specs/quality-gates.md +130 -0
- package/.agents/skills/team-lifecycle-v4/templates/architecture.md +254 -0
- package/.agents/skills/team-lifecycle-v4/templates/epics.md +196 -0
- package/.agents/skills/team-lifecycle-v4/templates/product-brief.md +133 -0
- package/.agents/skills/team-lifecycle-v4/templates/requirements.md +224 -0
- package/.agents/skills/team-quality-assurance/SKILL.md +149 -0
- package/.agents/skills/team-quality-assurance/roles/analyst/role.md +90 -0
- package/.agents/skills/team-quality-assurance/roles/coordinator/commands/analyze.md +72 -0
- package/.agents/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +111 -0
- package/.agents/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +250 -0
- package/.agents/skills/team-quality-assurance/roles/coordinator/role.md +143 -0
- package/.agents/skills/team-quality-assurance/roles/executor/role.md +68 -0
- package/.agents/skills/team-quality-assurance/roles/generator/role.md +70 -0
- package/.agents/skills/team-quality-assurance/roles/scout/role.md +77 -0
- package/.agents/skills/team-quality-assurance/roles/strategist/role.md +73 -0
- package/.agents/skills/team-quality-assurance/specs/pipelines.md +115 -0
- package/.agents/skills/team-quality-assurance/specs/team-config.json +131 -0
- package/.agents/skills/team-review/SKILL.md +149 -0
- package/.agents/skills/team-review/roles/coordinator/commands/analyze.md +71 -0
- package/.agents/skills/team-review/roles/coordinator/commands/dispatch.md +91 -0
- package/.agents/skills/team-review/roles/coordinator/commands/monitor.md +224 -0
- package/.agents/skills/team-review/roles/coordinator/role.md +132 -0
- package/.agents/skills/team-review/roles/fixer/role.md +78 -0
- package/.agents/skills/team-review/roles/reviewer/role.md +70 -0
- package/.agents/skills/team-review/roles/scanner/role.md +81 -0
- package/.agents/skills/team-review/specs/dimensions.md +82 -0
- package/.agents/skills/team-review/specs/finding-schema.json +82 -0
- package/.agents/skills/team-review/specs/pipelines.md +102 -0
- package/.agents/skills/team-review/specs/team-config.json +27 -0
- package/.agents/skills/team-tech-debt/SKILL.md +130 -0
- package/.agents/skills/team-tech-debt/roles/assessor/role.md +79 -0
- package/.agents/skills/team-tech-debt/roles/coordinator/commands/analyze.md +47 -0
- package/.agents/skills/team-tech-debt/roles/coordinator/commands/dispatch.md +156 -0
- package/.agents/skills/team-tech-debt/roles/coordinator/commands/monitor.md +209 -0
- package/.agents/skills/team-tech-debt/roles/coordinator/role.md +123 -0
- package/.agents/skills/team-tech-debt/roles/executor/role.md +78 -0
- package/.agents/skills/team-tech-debt/roles/planner/role.md +71 -0
- package/.agents/skills/team-tech-debt/roles/scanner/role.md +92 -0
- package/.agents/skills/team-tech-debt/roles/validator/role.md +80 -0
- package/.agents/skills/team-tech-debt/specs/pipelines.md +47 -0
- package/.agents/skills/team-tech-debt/specs/team-config.json +129 -0
- package/.agents/skills/team-testing/SKILL.md +145 -0
- package/.agents/skills/team-testing/roles/analyst/role.md +105 -0
- package/.agents/skills/team-testing/roles/coordinator/commands/analyze.md +70 -0
- package/.agents/skills/team-testing/roles/coordinator/commands/dispatch.md +108 -0
- package/.agents/skills/team-testing/roles/coordinator/commands/monitor.md +257 -0
- package/.agents/skills/team-testing/roles/coordinator/role.md +134 -0
- package/.agents/skills/team-testing/roles/executor/role.md +101 -0
- package/.agents/skills/team-testing/roles/generator/role.md +100 -0
- package/.agents/skills/team-testing/roles/strategist/role.md +85 -0
- package/.agents/skills/team-testing/specs/pipelines.md +101 -0
- package/.agents/skills/team-testing/specs/team-config.json +93 -0
- package/.agents/skills/wiki-connect/SKILL.md +64 -0
- package/.agents/skills/wiki-digest/SKILL.md +70 -0
- package/.agents/skills/workflow-skill-designer/SKILL.md +498 -0
- package/.agents/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
- package/.agents/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
- package/.agents/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
- package/.agents/skills/workflow-skill-designer/phases/04-validation.md +471 -0
- package/.agy/agents/cli-explore-agent.md +1 -3
- package/.agy/agents/cross-role-reviewer.md +170 -0
- package/.agy/agents/role-design-author.md +215 -0
- package/.agy/agents/ui-design-agent.md +1 -18
- package/.agy/agents/workflow-analyzer.md +1 -1
- package/.agy/agents/workflow-external-researcher.md +1 -1
- package/.agy/skills/maestro/SKILL.md +63 -27
- package/.agy/skills/maestro-analyze/SKILL.md +30 -4
- package/.agy/skills/maestro-blueprint/SKILL.md +132 -0
- package/.agy/skills/maestro-brainstorm/SKILL.md +119 -103
- package/.agy/skills/maestro-help/SKILL.md +48 -14
- package/.agy/skills/maestro-help/index/catalog.json +29 -11
- package/.agy/skills/maestro-help/phases/01-parse-intent.md +1 -1
- package/.agy/skills/maestro-help/phases/02-search-present.md +6 -4
- package/.agy/skills/maestro-help/phases/03-workflow-guide.md +60 -33
- package/.agy/skills/maestro-init/SKILL.md +3 -3
- package/.agy/skills/maestro-milestone-audit/SKILL.md +5 -3
- package/.agy/skills/maestro-milestone-complete/SKILL.md +7 -5
- package/.agy/skills/maestro-plan/SKILL.md +14 -4
- package/.agy/skills/maestro-ralph/SKILL.md +368 -162
- package/.agy/skills/maestro-ralph-execute/SKILL.md +81 -67
- package/.agy/skills/maestro-roadmap/SKILL.md +42 -81
- package/.agy/skills/quality-auto-test/SKILL.md +1 -1
- package/.agy/skills/team-lifecycle-v4/roles/analyst/role.md +1 -1
- package/.agy/skills/team-lifecycle-v4/roles/reviewer/commands/review-spec.md +2 -2
- package/.agy/skills/team-lifecycle-v4/roles/writer/role.md +1 -1
- package/.agy/skills/team-lifecycle-v4/templates/architecture.md +3 -3
- package/.agy/skills/team-lifecycle-v4/templates/epics.md +2 -2
- package/.agy/skills/team-lifecycle-v4/templates/product-brief.md +3 -3
- package/.agy/skills/team-lifecycle-v4/templates/requirements.md +2 -2
- package/.claude/agents/cli-explore-agent.md +1 -3
- package/.claude/agents/cross-role-reviewer.md +171 -0
- package/.claude/agents/role-design-author.md +216 -0
- package/.claude/agents/ui-design-agent.md +1 -18
- package/.claude/agents/workflow-analyzer.md +1 -1
- package/.claude/agents/workflow-external-researcher.md +1 -1
- package/.claude/commands/maestro-analyze.md +30 -4
- package/.claude/commands/maestro-blueprint.md +130 -0
- package/.claude/commands/maestro-brainstorm.md +132 -116
- package/.claude/commands/maestro-init.md +3 -3
- package/.claude/commands/maestro-milestone-audit.md +5 -3
- package/.claude/commands/maestro-milestone-complete.md +7 -5
- package/.claude/commands/maestro-plan.md +14 -4
- package/.claude/commands/maestro-ralph-execute.md +81 -67
- package/.claude/commands/maestro-ralph.md +368 -162
- package/.claude/commands/maestro-roadmap.md +42 -81
- package/.claude/commands/maestro.md +63 -27
- package/.claude/commands/quality-auto-test.md +1 -1
- package/.claude/skills/maestro-help/SKILL.md +48 -14
- package/.claude/skills/maestro-help/index/catalog.json +29 -11
- package/.claude/skills/maestro-help/phases/01-parse-intent.md +1 -1
- package/.claude/skills/maestro-help/phases/02-search-present.md +6 -4
- package/.claude/skills/maestro-help/phases/03-workflow-guide.md +60 -33
- package/.claude/skills/team-lifecycle-v4/roles/analyst/role.md +1 -1
- package/.claude/skills/team-lifecycle-v4/roles/reviewer/commands/review-spec.md +2 -2
- package/.claude/skills/team-lifecycle-v4/roles/writer/role.md +1 -1
- package/.claude/skills/team-lifecycle-v4/templates/architecture.md +3 -3
- package/.claude/skills/team-lifecycle-v4/templates/epics.md +2 -2
- package/.claude/skills/team-lifecycle-v4/templates/product-brief.md +3 -3
- package/.claude/skills/team-lifecycle-v4/templates/requirements.md +2 -2
- package/.codex/skills/maestro/SKILL.md +84 -41
- package/.codex/skills/maestro-amend/SKILL.md +157 -0
- package/.codex/skills/maestro-analyze/SKILL.md +71 -23
- package/.codex/skills/maestro-blueprint/SKILL.md +122 -0
- package/.codex/skills/maestro-brainstorm/SKILL.md +135 -45
- package/.codex/skills/maestro-composer/SKILL.md +1 -1
- package/.codex/skills/maestro-execute/SKILL.md +13 -4
- package/.codex/skills/maestro-help/SKILL.md +28 -18
- package/.codex/skills/maestro-help/catalog.json +29 -11
- package/.codex/skills/maestro-init/SKILL.md +7 -7
- package/.codex/skills/maestro-plan/SKILL.md +27 -9
- package/.codex/skills/maestro-ralph/SKILL.md +740 -491
- package/.codex/skills/maestro-roadmap/SKILL.md +55 -72
- package/.codex/skills/maestro-update/SKILL.md +169 -0
- package/.codex/skills/maestro-verify/SKILL.md +11 -2
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +2 -2
- package/.codex/skills/manage-harvest/SKILL.md +10 -2
- package/.codex/skills/quality-retrospective/SKILL.md +9 -2
- package/.codex/skills/team-lifecycle-v4/roles/analyst/role.md +2 -2
- package/.codex/skills/team-lifecycle-v4/roles/reviewer/commands/review-spec.md +2 -2
- package/.codex/skills/team-lifecycle-v4/roles/writer/role.md +1 -1
- package/.codex/skills/team-lifecycle-v4/templates/architecture.md +3 -3
- package/.codex/skills/team-lifecycle-v4/templates/epics.md +2 -2
- package/.codex/skills/team-lifecycle-v4/templates/product-brief.md +3 -3
- package/.codex/skills/team-lifecycle-v4/templates/requirements.md +2 -2
- package/README.md +8 -8
- package/README.zh-CN.md +8 -8
- package/dashboard/dist-server/dashboard/src/server/routes/settings.js +3 -3
- package/dashboard/dist-server/dashboard/src/server/routes/settings.js.map +1 -1
- package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.js +13 -7
- package/dist/src/agents/cli-agent-runner.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts +12 -0
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +144 -0
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +8 -1
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/core/component-defs.d.ts +6 -0
- package/dist/src/core/component-defs.d.ts.map +1 -1
- package/dist/src/core/component-defs.js +97 -0
- package/dist/src/core/component-defs.js.map +1 -1
- package/dist/src/tools/spec-init.d.ts +16 -2
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +58 -187
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +16 -16
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/spec-seeds.d.ts +33 -0
- package/dist/src/tools/spec-seeds.d.ts.map +1 -0
- package/dist/src/tools/spec-seeds.js +200 -0
- package/dist/src/tools/spec-seeds.js.map +1 -0
- package/dist/src/tools/spec-writer.d.ts.map +1 -1
- package/dist/src/tools/spec-writer.js +7 -9
- package/dist/src/tools/spec-writer.js.map +1 -1
- package/dist/src/tui/install-ui/ExtraMcpConfig.d.ts +11 -0
- package/dist/src/tui/install-ui/ExtraMcpConfig.d.ts.map +1 -0
- package/dist/src/tui/install-ui/ExtraMcpConfig.js +61 -0
- package/dist/src/tui/install-ui/ExtraMcpConfig.js.map +1 -0
- package/dist/src/tui/install-ui/InstallConfirm.d.ts +3 -0
- package/dist/src/tui/install-ui/InstallConfirm.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallConfirm.js +1 -1
- package/dist/src/tui/install-ui/InstallConfirm.js.map +1 -1
- package/dist/src/tui/install-ui/InstallExecution.d.ts +2 -0
- package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallExecution.js +14 -2
- package/dist/src/tui/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/tui/install-ui/InstallFlow.d.ts +1 -1
- package/dist/src/tui/install-ui/InstallFlow.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallFlow.js +16 -3
- package/dist/src/tui/install-ui/InstallFlow.js.map +1 -1
- package/dist/src/tui/install-ui/InstallHub.d.ts +2 -0
- package/dist/src/tui/install-ui/InstallHub.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallHub.js +8 -0
- package/dist/src/tui/install-ui/InstallHub.js.map +1 -1
- package/dist/src/tui/install-ui/InstallResult.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallResult.js +3 -1
- package/dist/src/tui/install-ui/InstallResult.js.map +1 -1
- package/dist/src/utils/update-notices.js +31 -0
- package/dist/src/utils/update-notices.js.map +1 -1
- package/package.json +5 -2
- package/templates/business-test-report.json +1 -1
- package/templates/index.json +1 -1
- package/templates/roadmap.md +15 -9
- package/templates/state.json +18 -17
- package/workflows/analyze.md +79 -11
- package/workflows/auto-test.md +6 -6
- package/workflows/blueprint.md +431 -0
- package/workflows/brainstorm.md +603 -496
- package/workflows/business-test.md +7 -7
- package/workflows/codebase-rebuild.md +4 -4
- package/workflows/harvest.md +184 -10
- package/workflows/init.md +9 -8
- package/workflows/maestro.md +1 -1
- package/workflows/milestone-audit.md +12 -4
- package/workflows/milestone-complete.md +11 -6
- package/workflows/plan.md +88 -22
- package/workflows/roadmap-common.md +1 -1
- package/workflows/roadmap.md +13 -3
- package/workflows/spec-generate.md +24 -13
- package/workflows/ui-design.md +2 -2
- package/workflows/ui-style.md +1 -1
- package/.agy/agents/conceptual-planning-agent.md +0 -244
- package/.claude/agents/conceptual-planning-agent.md +0 -245
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
# Phase 4: Validation & Integration
|
|
2
|
+
|
|
3
|
+
Validate the generated skill package for structural completeness, reference integrity, and content quality. Produce a validation report and integration summary.
|
|
4
|
+
|
|
5
|
+
## Objective
|
|
6
|
+
|
|
7
|
+
- Verify all required files exist
|
|
8
|
+
- Validate SKILL.md references match actual phase files
|
|
9
|
+
- Check content preservation (for command extraction source)
|
|
10
|
+
- Verify cross-phase data flow consistency
|
|
11
|
+
- Report validation results to user
|
|
12
|
+
|
|
13
|
+
## Step 4.1: Structural Validation
|
|
14
|
+
|
|
15
|
+
```javascript
|
|
16
|
+
function validateStructure(config) {
|
|
17
|
+
const skillDir = `.claude/skills/${config.skillName}`;
|
|
18
|
+
const results = { errors: [], warnings: [], info: [] };
|
|
19
|
+
|
|
20
|
+
// Check SKILL.md exists
|
|
21
|
+
const skillMdExists = fileExists(`${skillDir}/SKILL.md`);
|
|
22
|
+
if (!skillMdExists) {
|
|
23
|
+
results.errors.push('SKILL.md not found');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Check all phase files exist
|
|
27
|
+
for (const phase of config.phases) {
|
|
28
|
+
const filename = `${String(phase.number).padStart(2, '0')}-${phase.slug}.md`;
|
|
29
|
+
const filepath = `${skillDir}/phases/${filename}`;
|
|
30
|
+
if (!fileExists(filepath)) {
|
|
31
|
+
results.errors.push(`Phase file missing: ${filepath}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Check SKILL.md frontmatter
|
|
36
|
+
if (skillMdExists) {
|
|
37
|
+
const skillMd = read_file(`${skillDir}/SKILL.md`);
|
|
38
|
+
const fm = extractYAMLFrontmatter(skillMd);
|
|
39
|
+
|
|
40
|
+
if (!fm.name) results.errors.push('Frontmatter missing: name');
|
|
41
|
+
if (!fm.description) results.errors.push('Frontmatter missing: description');
|
|
42
|
+
if (!fm['allowed-tools']) results.errors.push('Frontmatter missing: allowed-tools');
|
|
43
|
+
|
|
44
|
+
// Check description has trigger phrase
|
|
45
|
+
if (fm.description && !fm.description.includes('Triggers on')) {
|
|
46
|
+
results.warnings.push('Description missing trigger phrase (Triggers on "...")');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return results;
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Step 4.2: Reference Integrity
|
|
55
|
+
|
|
56
|
+
```javascript
|
|
57
|
+
function validateReferences(config) {
|
|
58
|
+
const skillDir = `.claude/skills/${config.skillName}`;
|
|
59
|
+
const results = { errors: [], warnings: [], info: [] };
|
|
60
|
+
const skillMd = read_file(`${skillDir}/SKILL.md`);
|
|
61
|
+
|
|
62
|
+
// Extract all Ref: markers from SKILL.md
|
|
63
|
+
const refMarkers = skillMd.match(/Ref: phases\/\S+\.md/g) || [];
|
|
64
|
+
const linkedFiles = skillMd.match(/\[phases\/\S+\.md\]\(phases\/\S+\.md\)/g) || [];
|
|
65
|
+
|
|
66
|
+
// Collect all referenced phase files
|
|
67
|
+
const referencedFiles = new Set();
|
|
68
|
+
for (const ref of refMarkers) {
|
|
69
|
+
referencedFiles.add(ref.replace('Ref: ', ''));
|
|
70
|
+
}
|
|
71
|
+
for (const link of linkedFiles) {
|
|
72
|
+
const match = link.match(/\(phases\/\S+\.md\)/);
|
|
73
|
+
if (match) referencedFiles.add(match[0].replace(/[()]/g, ''));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Check each referenced file exists
|
|
77
|
+
for (const refFile of referencedFiles) {
|
|
78
|
+
if (!fileExists(`${skillDir}/${refFile}`)) {
|
|
79
|
+
results.errors.push(`Referenced file not found: ${refFile}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Check each phase file is referenced in SKILL.md
|
|
84
|
+
for (const phase of config.phases) {
|
|
85
|
+
const filename = `phases/${String(phase.number).padStart(2, '0')}-${phase.slug}.md`;
|
|
86
|
+
if (!referencedFiles.has(filename)) {
|
|
87
|
+
results.warnings.push(`Phase file not referenced in SKILL.md: ${filename}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Check Phase Reference Documents table exists
|
|
92
|
+
if (!skillMd.includes('Phase Reference Documents')) {
|
|
93
|
+
results.errors.push('SKILL.md missing Phase Reference Documents table');
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Check Phase Reference Documents table has entries for all phases
|
|
97
|
+
for (const phase of config.phases) {
|
|
98
|
+
const filename = `${String(phase.number).padStart(2, '0')}-${phase.slug}.md`;
|
|
99
|
+
if (!skillMd.includes(filename)) {
|
|
100
|
+
results.errors.push(`Phase Reference table missing entry for: ${filename}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return results;
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Step 4.3: Content Quality (Command Extraction Only)
|
|
109
|
+
|
|
110
|
+
```javascript
|
|
111
|
+
function validateContentQuality(config) {
|
|
112
|
+
const skillDir = `.claude/skills/${config.skillName}`;
|
|
113
|
+
const results = { errors: [], warnings: [], info: [] };
|
|
114
|
+
|
|
115
|
+
if (config.source.type !== 'command_set') {
|
|
116
|
+
results.info.push('Content quality check skipped (not command extraction)');
|
|
117
|
+
return results;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
for (const phase of config.phases) {
|
|
121
|
+
if (!phase.sourcePath) continue;
|
|
122
|
+
|
|
123
|
+
const sourceContent = read_file(phase.sourcePath);
|
|
124
|
+
const sourceBody = removeYAMLFrontmatter(sourceContent);
|
|
125
|
+
const filename = `${String(phase.number).padStart(2, '0')}-${phase.slug}.md`;
|
|
126
|
+
const phaseContent = read_file(`${skillDir}/phases/${filename}`);
|
|
127
|
+
|
|
128
|
+
// Line count comparison
|
|
129
|
+
const sourceLines = sourceBody.split('\n').length;
|
|
130
|
+
const phaseLines = phaseContent.split('\n').length;
|
|
131
|
+
const ratio = phaseLines / sourceLines;
|
|
132
|
+
|
|
133
|
+
if (ratio < 0.7) {
|
|
134
|
+
results.errors.push(
|
|
135
|
+
`Phase ${phase.number} content loss: source=${sourceLines} lines, phase=${phaseLines} lines (${Math.round(ratio * 100)}%)`
|
|
136
|
+
);
|
|
137
|
+
} else if (ratio < 0.9) {
|
|
138
|
+
results.warnings.push(
|
|
139
|
+
`Phase ${phase.number} possible content reduction: source=${sourceLines}, phase=${phaseLines} (${Math.round(ratio * 100)}%)`
|
|
140
|
+
);
|
|
141
|
+
} else {
|
|
142
|
+
results.info.push(
|
|
143
|
+
`Phase ${phase.number} content preserved: source=${sourceLines}, phase=${phaseLines} (${Math.round(ratio * 100)}%)`
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Code block count comparison
|
|
148
|
+
const sourceBlocks = (sourceBody.match(/```/g) || []).length / 2;
|
|
149
|
+
const phaseBlocks = (phaseContent.match(/```/g) || []).length / 2;
|
|
150
|
+
if (phaseBlocks < sourceBlocks) {
|
|
151
|
+
results.warnings.push(
|
|
152
|
+
`Phase ${phase.number} missing code blocks: source=${sourceBlocks}, phase=${phaseBlocks}`
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Agent prompt preservation
|
|
157
|
+
const sourceAgents = (sourceBody.match(/Task\(|subagent_type/g) || []).length;
|
|
158
|
+
const phaseAgents = (phaseContent.match(/Task\(|subagent_type/g) || []).length;
|
|
159
|
+
if (phaseAgents < sourceAgents) {
|
|
160
|
+
results.errors.push(
|
|
161
|
+
`Phase ${phase.number} missing agent calls: source=${sourceAgents}, phase=${phaseAgents}`
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return results;
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Step 4.4: Data Flow Consistency
|
|
171
|
+
|
|
172
|
+
```javascript
|
|
173
|
+
function validateDataFlow(config) {
|
|
174
|
+
const skillDir = `.claude/skills/${config.skillName}`;
|
|
175
|
+
const results = { errors: [], warnings: [], info: [] };
|
|
176
|
+
const skillMd = read_file(`${skillDir}/SKILL.md`);
|
|
177
|
+
|
|
178
|
+
// Check all data flow variables are mentioned in SKILL.md
|
|
179
|
+
for (const flow of config.dataFlow) {
|
|
180
|
+
for (const variable of flow.variables) {
|
|
181
|
+
if (!skillMd.includes(variable)) {
|
|
182
|
+
results.warnings.push(
|
|
183
|
+
`Data flow variable '${variable}' (${flow.from} → ${flow.to}) not found in SKILL.md`
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Check conditional phases have their condition in SKILL.md
|
|
190
|
+
for (const phase of config.phases) {
|
|
191
|
+
if (phase.isConditional && phase.condition) {
|
|
192
|
+
// Extract the key variable from condition
|
|
193
|
+
const condVar = phase.condition.match(/\w+/)?.[0];
|
|
194
|
+
if (condVar && !skillMd.includes(condVar)) {
|
|
195
|
+
results.errors.push(
|
|
196
|
+
`Conditional Phase ${phase.number} condition variable '${condVar}' not found in SKILL.md`
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return results;
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Step 4.5: SKILL.md Section Completeness
|
|
207
|
+
|
|
208
|
+
```javascript
|
|
209
|
+
function validateSkillMdSections(config) {
|
|
210
|
+
const skillDir = `.claude/skills/${config.skillName}`;
|
|
211
|
+
const results = { errors: [], warnings: [], info: [] };
|
|
212
|
+
const skillMd = read_file(`${skillDir}/SKILL.md`);
|
|
213
|
+
|
|
214
|
+
// Required sections
|
|
215
|
+
const requiredSections = [
|
|
216
|
+
{ name: 'Architecture Overview', pattern: /## Architecture Overview/ },
|
|
217
|
+
{ name: 'Execution Flow', pattern: /## Execution Flow/ },
|
|
218
|
+
{ name: 'Core Rules', pattern: /## Core Rules/ },
|
|
219
|
+
{ name: 'Data Flow', pattern: /## Data Flow/ },
|
|
220
|
+
{ name: 'Error Handling', pattern: /## Error Handling/ }
|
|
221
|
+
];
|
|
222
|
+
|
|
223
|
+
// Recommended sections
|
|
224
|
+
const recommendedSections = [
|
|
225
|
+
{ name: 'Key Design Principles', pattern: /## Key Design Principles/ },
|
|
226
|
+
{ name: 'Input Processing', pattern: /## Input Processing/ },
|
|
227
|
+
{ name: 'track_tasks Pattern', pattern: /## track_tasks Pattern/ },
|
|
228
|
+
{ name: 'Coordinator Checklist', pattern: /## Coordinator Checklist/ },
|
|
229
|
+
{ name: 'Related Commands', pattern: /## Related Commands/ }
|
|
230
|
+
];
|
|
231
|
+
|
|
232
|
+
// Conditional sections
|
|
233
|
+
const conditionalSections = [
|
|
234
|
+
{ name: 'Interactive Preference Collection', pattern: /## Interactive Preference Collection/, condition: config.features.hasAutoMode },
|
|
235
|
+
{ name: 'Auto Mode Defaults', pattern: /## Auto Mode Defaults/, condition: config.features.hasAutoMode },
|
|
236
|
+
{ name: 'Post-Phase Updates', pattern: /## Post-Phase Updates/, condition: config.features.hasPostPhaseUpdates }
|
|
237
|
+
];
|
|
238
|
+
|
|
239
|
+
for (const section of requiredSections) {
|
|
240
|
+
if (!section.pattern.test(skillMd)) {
|
|
241
|
+
results.errors.push(`Missing required section: ${section.name}`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
for (const section of recommendedSections) {
|
|
246
|
+
if (!section.pattern.test(skillMd)) {
|
|
247
|
+
results.warnings.push(`Missing recommended section: ${section.name}`);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
for (const section of conditionalSections) {
|
|
252
|
+
if (section.condition && !section.pattern.test(skillMd)) {
|
|
253
|
+
results.warnings.push(`Missing conditional section: ${section.name} (feature enabled but section absent)`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return results;
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Step 4.6: Phase File Hygiene
|
|
262
|
+
|
|
263
|
+
Scan generated phase files for prohibited content patterns. Phase files are internal execution documents and must not contain user-facing syntax, flag parsing, or inter-phase routing.
|
|
264
|
+
|
|
265
|
+
```javascript
|
|
266
|
+
function validatePhaseFileHygiene(config) {
|
|
267
|
+
const skillDir = `.claude/skills/${config.skillName}`;
|
|
268
|
+
const results = { errors: [], warnings: [], info: [] };
|
|
269
|
+
|
|
270
|
+
const prohibitedPatterns = [
|
|
271
|
+
{
|
|
272
|
+
name: 'Flag parsing ($ARGUMENTS)',
|
|
273
|
+
regex: /\$ARGUMENTS\.includes/g,
|
|
274
|
+
severity: 'error',
|
|
275
|
+
fix: 'Replace with workflowPreferences.{key} reference'
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
name: 'Invocation syntax (/skill-name)',
|
|
279
|
+
regex: /\/\w+[\-:]\w+\s+["']/g,
|
|
280
|
+
severity: 'warning',
|
|
281
|
+
fix: 'Remove (phase files are not user-facing docs)'
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
name: 'Conversion provenance (Source: Converted from)',
|
|
285
|
+
regex: /Source:.*Converted from/g,
|
|
286
|
+
severity: 'warning',
|
|
287
|
+
fix: 'Remove (implementation detail)'
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
name: 'Skill routing for inter-phase (invoke_skill(skill=...)',
|
|
291
|
+
regex: /Skill\(skill=/g,
|
|
292
|
+
severity: 'error',
|
|
293
|
+
fix: 'Replace with direct read_file("phases/0N-xxx.md")'
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
name: 'CLI flag definitions (--flag)',
|
|
297
|
+
regex: /^\s*-\w,\s+--\w+\s+/gm,
|
|
298
|
+
severity: 'warning',
|
|
299
|
+
fix: 'Move flag definitions to SKILL.md Interactive Preference Collection'
|
|
300
|
+
}
|
|
301
|
+
];
|
|
302
|
+
|
|
303
|
+
for (const phase of config.phases) {
|
|
304
|
+
const filename = `${String(phase.number).padStart(2, '0')}-${phase.slug}.md`;
|
|
305
|
+
const filepath = `${skillDir}/phases/${filename}`;
|
|
306
|
+
if (!fileExists(filepath)) continue;
|
|
307
|
+
|
|
308
|
+
const content = read_file(filepath);
|
|
309
|
+
|
|
310
|
+
for (const pattern of prohibitedPatterns) {
|
|
311
|
+
const matches = content.match(pattern.regex);
|
|
312
|
+
if (matches && matches.length > 0) {
|
|
313
|
+
const msg = `Phase ${phase.number} (${filename}): ${pattern.name} found (${matches.length} occurrence(s)). Fix: ${pattern.fix}`;
|
|
314
|
+
if (pattern.severity === 'error') {
|
|
315
|
+
results.errors.push(msg);
|
|
316
|
+
} else {
|
|
317
|
+
results.warnings.push(msg);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
if (results.errors.length === 0 && results.warnings.length === 0) {
|
|
324
|
+
results.info.push('Phase file hygiene: All phase files clean ✓');
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
return results;
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
## Step 4.7: Aggregate Results and Report
|
|
332
|
+
|
|
333
|
+
```javascript
|
|
334
|
+
function generateValidationReport(config) {
|
|
335
|
+
const structural = validateStructure(config);
|
|
336
|
+
const references = validateReferences(config);
|
|
337
|
+
const content = validateContentQuality(config);
|
|
338
|
+
const dataFlow = validateDataFlow(config);
|
|
339
|
+
const sections = validateSkillMdSections(config);
|
|
340
|
+
const hygiene = validatePhaseFileHygiene(config);
|
|
341
|
+
|
|
342
|
+
// Aggregate
|
|
343
|
+
const allErrors = [
|
|
344
|
+
...structural.errors,
|
|
345
|
+
...references.errors,
|
|
346
|
+
...content.errors,
|
|
347
|
+
...dataFlow.errors,
|
|
348
|
+
...sections.errors,
|
|
349
|
+
...hygiene.errors
|
|
350
|
+
];
|
|
351
|
+
const allWarnings = [
|
|
352
|
+
...structural.warnings,
|
|
353
|
+
...references.warnings,
|
|
354
|
+
...content.warnings,
|
|
355
|
+
...dataFlow.warnings,
|
|
356
|
+
...sections.warnings,
|
|
357
|
+
...hygiene.warnings
|
|
358
|
+
];
|
|
359
|
+
const allInfo = [
|
|
360
|
+
...structural.info,
|
|
361
|
+
...references.info,
|
|
362
|
+
...content.info,
|
|
363
|
+
...dataFlow.info,
|
|
364
|
+
...sections.info,
|
|
365
|
+
...hygiene.info
|
|
366
|
+
];
|
|
367
|
+
|
|
368
|
+
// Quality gate
|
|
369
|
+
const gate = allErrors.length === 0 ? 'PASS' :
|
|
370
|
+
allErrors.length <= 2 ? 'REVIEW' : 'FAIL';
|
|
371
|
+
|
|
372
|
+
// Display report
|
|
373
|
+
const skillDir = `.claude/skills/${config.skillName}`;
|
|
374
|
+
|
|
375
|
+
console.log(`
|
|
376
|
+
╔══════════════════════════════════════╗
|
|
377
|
+
║ Workflow Skill Validation Report ║
|
|
378
|
+
╠══════════════════════════════════════╣
|
|
379
|
+
║ Skill: ${config.skillName.padEnd(28)}║
|
|
380
|
+
║ Gate: ${gate.padEnd(28)}║
|
|
381
|
+
╚══════════════════════════════════════╝
|
|
382
|
+
|
|
383
|
+
Structure:
|
|
384
|
+
${skillDir}/
|
|
385
|
+
├── SKILL.md ${fileExists(`${skillDir}/SKILL.md`) ? '✓' : '✗'}
|
|
386
|
+
└── phases/
|
|
387
|
+
${config.phases.map(p => {
|
|
388
|
+
const fn = `${String(p.number).padStart(2, '0')}-${p.slug}.md`;
|
|
389
|
+
return ` ├── ${fn.padEnd(30)} ${fileExists(`${skillDir}/phases/${fn}`) ? '✓' : '✗'}`;
|
|
390
|
+
}).join('\n')}
|
|
391
|
+
|
|
392
|
+
${allErrors.length > 0 ? `Errors (${allErrors.length}):\n${allErrors.map(e => ` ✗ ${e}`).join('\n')}` : 'Errors: None ✓'}
|
|
393
|
+
|
|
394
|
+
${allWarnings.length > 0 ? `Warnings (${allWarnings.length}):\n${allWarnings.map(w => ` ⚠ ${w}`).join('\n')}` : 'Warnings: None ✓'}
|
|
395
|
+
|
|
396
|
+
${allInfo.length > 0 ? `Info:\n${allInfo.map(i => ` ℹ ${i}`).join('\n')}` : ''}
|
|
397
|
+
`);
|
|
398
|
+
|
|
399
|
+
return { gate, errors: allErrors, warnings: allWarnings, info: allInfo };
|
|
400
|
+
}
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
## Step 4.8: Error Recovery
|
|
404
|
+
|
|
405
|
+
If validation fails, offer recovery options:
|
|
406
|
+
|
|
407
|
+
```javascript
|
|
408
|
+
if (report.gate === 'FAIL') {
|
|
409
|
+
const recovery = ask_user({
|
|
410
|
+
questions: [{
|
|
411
|
+
question: `Validation found ${report.errors.length} errors. How to proceed?`,
|
|
412
|
+
header: "Recovery",
|
|
413
|
+
multiSelect: false,
|
|
414
|
+
options: [
|
|
415
|
+
{ label: "Auto-fix", description: "Attempt automatic fixes for common issues" },
|
|
416
|
+
{ label: "Regenerate phases", description: "Re-run Phase 3 with stricter preservation" },
|
|
417
|
+
{ label: "Accept as-is", description: "Proceed despite errors (manual fix later)" }
|
|
418
|
+
]
|
|
419
|
+
}]
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
if (recovery === 'Auto-fix') {
|
|
423
|
+
// Common auto-fixes:
|
|
424
|
+
// 1. Missing Next Phase links → add them
|
|
425
|
+
// 2. Missing Output sections → add from config
|
|
426
|
+
// 3. Missing Phase Reference table → generate from config
|
|
427
|
+
autoFixCommonIssues(config, report.errors);
|
|
428
|
+
// Re-validate
|
|
429
|
+
return generateValidationReport(config);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
## Step 4.9: Integration Summary
|
|
435
|
+
|
|
436
|
+
```javascript
|
|
437
|
+
function displayIntegrationSummary(config) {
|
|
438
|
+
console.log(`
|
|
439
|
+
Integration Complete:
|
|
440
|
+
Location: .claude/skills/${config.skillName}/
|
|
441
|
+
Files: ${config.phases.length + 1} (SKILL.md + ${config.phases.length} phases)
|
|
442
|
+
|
|
443
|
+
Usage:
|
|
444
|
+
Trigger: ${config.triggers.map(t => `"${t}"`).join(', ')}
|
|
445
|
+
Design Patterns Applied:
|
|
446
|
+
✓ Progressive phase loading (Ref: markers)
|
|
447
|
+
✓ Phase Reference Documents table
|
|
448
|
+
✓ Phase file hygiene (no flag parsing, no invocation syntax)
|
|
449
|
+
${config.features.hasTodoWriteSubTasks ? '✓' : '○'} track_tasks attachment/collapse
|
|
450
|
+
${config.features.hasConditionalPhases ? '✓' : '○'} Conditional phase execution
|
|
451
|
+
${config.features.hasAutoMode ? '✓' : '○'} Interactive preference collection (ask_user)
|
|
452
|
+
${config.features.hasPostPhaseUpdates ? '✓' : '○'} Post-phase state updates
|
|
453
|
+
${config.features.hasPlanningNotes ? '✓' : '○'} Accumulated planning notes
|
|
454
|
+
|
|
455
|
+
Next Steps:
|
|
456
|
+
1. Review SKILL.md orchestrator logic
|
|
457
|
+
2. Review each phase file for completeness
|
|
458
|
+
3. Test skill invocation with trigger phrase
|
|
459
|
+
4. Iterate based on execution results
|
|
460
|
+
`);
|
|
461
|
+
}
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
## Output
|
|
465
|
+
|
|
466
|
+
- **Report**: Validation results with quality gate (PASS/REVIEW/FAIL)
|
|
467
|
+
- **track_tasks**: Mark Phase 4 completed (all tasks done)
|
|
468
|
+
|
|
469
|
+
## Completion
|
|
470
|
+
|
|
471
|
+
Workflow Skill Designer has completed. The generated skill package is ready at `.claude/skills/{skillName}/`.
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cli-explore-agent
|
|
3
|
-
description:
|
|
4
|
-
Read-only code exploration agent with dual-source analysis strategy (Bash + CLI semantic).
|
|
5
|
-
Orchestrates 4-phase workflow: Task Understanding → Analysis Execution → Schema Validation → Output Generation.
|
|
3
|
+
description: Read-only code exploration via Bash + CLI semantic dual-source analysis, with schema-validated structured output.
|
|
6
4
|
allowed-tools:
|
|
7
5
|
- grep_search
|
|
8
6
|
- run_command
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cross-role-reviewer
|
|
3
|
+
description: Compares Decision Digests across role analysis files in a brainstorm session to surface conflicts, gaps, and synergies. Read-only — returns structured text for the orchestrator to apply.
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- grep_search
|
|
6
|
+
- view_file
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Cross-Role Reviewer
|
|
10
|
+
|
|
11
|
+
You read N role analysis index files from a brainstorm session and report cross-role issues. You do NOT write files. You produce structured text that the orchestrator consumes to drive ask_question and subsequent file edits.
|
|
12
|
+
|
|
13
|
+
## Inputs (parsed from your prompt)
|
|
14
|
+
|
|
15
|
+
| Field | Required | Notes |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `analysis_indexes` | yes | absolute paths to all `{role}/analysis.md` files |
|
|
18
|
+
| `guidance_path` | yes | path to `guidance-specification.md` (for decision-ID context) |
|
|
19
|
+
| `feature_list` | optional | F-id + slug + title rows (for cross-feature analysis) |
|
|
20
|
+
|
|
21
|
+
## Process
|
|
22
|
+
|
|
23
|
+
1. Read every `analysis.md` in `analysis_indexes` and `guidance_path`.
|
|
24
|
+
2. From each `analysis.md`, extract §2 Decision Digest tables:
|
|
25
|
+
- **Decisions table** — role stances per feature
|
|
26
|
+
- **Interfaces table** — contracts and their consumers
|
|
27
|
+
- **Cross-Cutting Positions table** — role-wide stances on shared topics
|
|
28
|
+
- **Findings Summary table** — discoveries and their impact
|
|
29
|
+
3. Compare across roles:
|
|
30
|
+
- **Conflicts**: same feature or topic, contradictory stances between roles
|
|
31
|
+
- **Gaps**: Interface consumer references a role that has no matching Decisions entry; or a Cross-Cutting topic addressed by one role but not by another that should
|
|
32
|
+
- **Synergies**: complementary Findings or compatible Interfaces that could be unified
|
|
33
|
+
4. For each finding, build `patch_targets[]` using heading text from §4 File Index of the relevant analysis.md — this gives you exact file paths and heading text for sub-files.
|
|
34
|
+
5. Return the report as structured markdown. Stop.
|
|
35
|
+
|
|
36
|
+
### When digest is insufficient
|
|
37
|
+
|
|
38
|
+
If a Decisions/Positions entry is too terse to judge a potential conflict, mark the finding with `need_deeper_context` and specify which sub-file to read:
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
need_deeper_context:
|
|
42
|
+
file: "{role}/analysis-F-003-auth.md"
|
|
43
|
+
reason: "SA-12 stance ambiguous, need full Architecture section"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The orchestrator will read that file and inject its content for you to continue analysis. This is a fallback — aim to resolve 90%+ of findings from digest alone.
|
|
47
|
+
|
|
48
|
+
## Output Contract (return as text — do NOT write files)
|
|
49
|
+
|
|
50
|
+
Every finding MUST include a structured `patch_targets[]` block so the orchestrator can locate and apply edits without re-parsing prose. Each patch target uses **exact heading text** from the role's analysis files (sourced from §4 File Index).
|
|
51
|
+
|
|
52
|
+
```markdown
|
|
53
|
+
# Cross-Role Review
|
|
54
|
+
|
|
55
|
+
## Conflicts (need user decision)
|
|
56
|
+
### C-001: {short title}
|
|
57
|
+
- **Feature**: F-{id} (or "cross-cutting" if no specific feature)
|
|
58
|
+
- **Role A position**: {role} — Decision {ID}: "{stance}" (from §2 Decisions)
|
|
59
|
+
- **Role B position**: {role} — Decision {ID}: "{stance}" (from §2 Decisions)
|
|
60
|
+
- **Why it matters**: {what breaks if unresolved}
|
|
61
|
+
- **Suggested resolution**: {your recommended pick + 1-line rationale}
|
|
62
|
+
- **Confidence**: HIGH | MEDIUM | LOW
|
|
63
|
+
- **patch_targets**:
|
|
64
|
+
- target_file: `{role-A}/analysis-F-{id}-{slug}.md`
|
|
65
|
+
target_heading: `## {exact heading text}`
|
|
66
|
+
edit_type: `annotate_and_strikeout`
|
|
67
|
+
edit_content: `> **Cross-Role Resolution (C-001)**: {1-line resolution}`
|
|
68
|
+
- target_file: `{role-B}/analysis-F-{id}-{slug}.md`
|
|
69
|
+
target_heading: `## {exact heading text}`
|
|
70
|
+
edit_type: `annotate_and_strikeout`
|
|
71
|
+
edit_content: `> **Cross-Role Resolution (C-001)**: {1-line resolution}`
|
|
72
|
+
|
|
73
|
+
### C-002: ...
|
|
74
|
+
|
|
75
|
+
## Gaps (referenced but undefined)
|
|
76
|
+
### G-001: {short title}
|
|
77
|
+
- **Where referenced**: {role}'s §2 Interfaces table — consumer "{consumer role}" for "{interface name}"
|
|
78
|
+
- **Where it should be defined**: {owner-role}'s analysis (§2 Decisions or sub-file)
|
|
79
|
+
- **Owner role**: {role most appropriate to define it}
|
|
80
|
+
- **Suggested addition** (1-3 lines to insert at owner site)
|
|
81
|
+
- **patch_targets**:
|
|
82
|
+
- target_file: `{ref-role}/analysis.md`
|
|
83
|
+
target_heading: `### Interfaces`
|
|
84
|
+
edit_type: `annotate_after_heading`
|
|
85
|
+
edit_content: `> **Cross-Role Gap (G-001)**: {interface} consumer {owner-role} has no matching definition — see resolution below`
|
|
86
|
+
- target_file: `{owner-role}/analysis.md`
|
|
87
|
+
target_heading: `### Decisions`
|
|
88
|
+
edit_type: `append_to_section`
|
|
89
|
+
edit_content: `| {new-ID} | {feature} | {stance to fill gap} | {constraints} |`
|
|
90
|
+
|
|
91
|
+
### G-002: ...
|
|
92
|
+
|
|
93
|
+
## Synergy Opportunities (cross-role wins)
|
|
94
|
+
### S-001: {short title}
|
|
95
|
+
- **Roles involved**: {role A, role B}
|
|
96
|
+
- **Observation**: {what they could share / align}
|
|
97
|
+
- **Benefit**: {what's gained by aligning}
|
|
98
|
+
- **patch_targets**:
|
|
99
|
+
- target_file: `{role-A}/analysis-F-{id}-{slug}.md` or `{role-A}/analysis.md`
|
|
100
|
+
target_heading: `## {exact heading text}`
|
|
101
|
+
edit_type: `annotate_after_heading`
|
|
102
|
+
edit_content: `> **Cross-Role Synergy (S-001)**: aligns with {role-B} "{heading}" — {1-line how}`
|
|
103
|
+
- target_file: `{role-B}/analysis-F-{id}-{slug}.md` or `{role-B}/analysis.md`
|
|
104
|
+
target_heading: `## {exact heading text}`
|
|
105
|
+
edit_type: `annotate_after_heading`
|
|
106
|
+
edit_content: `> **Cross-Role Synergy (S-001)**: aligns with {role-A} "{heading}" — {1-line how}`
|
|
107
|
+
|
|
108
|
+
### S-002: ...
|
|
109
|
+
|
|
110
|
+
## Summary
|
|
111
|
+
- conflicts_count: N
|
|
112
|
+
- gaps_count: N
|
|
113
|
+
- synergies_count: N
|
|
114
|
+
- deeper_context_requests: N
|
|
115
|
+
- review_confidence: 0.0-1.0
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### edit_type vocabulary (closed set)
|
|
119
|
+
|
|
120
|
+
| edit_type | Behaviour |
|
|
121
|
+
|---|---|
|
|
122
|
+
| `annotate_after_heading` | Insert `edit_content` as a `> blockquote` line immediately after the matched heading. Original content untouched. |
|
|
123
|
+
| `annotate_and_strikeout` | Insert `edit_content` after the heading AND wrap the next paragraph in `<!-- superseded -->` … `<!-- /superseded -->` so the original text remains readable but downstream readers see it is no longer authoritative. |
|
|
124
|
+
| `append_to_section` | Append `edit_content` as a new paragraph/row at the end of the named section (before the next heading at same or higher level). |
|
|
125
|
+
|
|
126
|
+
The orchestrator MUST refuse to apply any edit whose `edit_type` is outside this set.
|
|
127
|
+
|
|
128
|
+
### edit_type defaults assume "Accept suggested resolution"
|
|
129
|
+
|
|
130
|
+
For Conflicts, both patch_targets default to `annotate_and_strikeout`. The orchestrator adjusts per user choice:
|
|
131
|
+
|
|
132
|
+
| User choice | role-A edit_type | role-B edit_type |
|
|
133
|
+
|---|---|---|
|
|
134
|
+
| Accept suggested resolution | `annotate_and_strikeout` | `annotate_and_strikeout` |
|
|
135
|
+
| Pick role A's stance | `annotate_after_heading` (keep A) | `annotate_and_strikeout` |
|
|
136
|
+
| Pick role B's stance | `annotate_and_strikeout` | `annotate_after_heading` (keep B) |
|
|
137
|
+
| Defer to TODO | skip both patches; log in guidance §12 as deferred | skip |
|
|
138
|
+
|
|
139
|
+
## Quality Standards
|
|
140
|
+
|
|
141
|
+
- **Every finding MUST include a `patch_targets[]` block** using the closed `edit_type` vocabulary above. Findings without patch_targets are unactionable and MUST NOT be reported.
|
|
142
|
+
- **target_heading MUST be exact heading text** from the role file, sourced from §4 File Index or by reading the target file. The orchestrator uses this for string matching.
|
|
143
|
+
- **target_file paths use role-folder format**: `{role}/analysis.md` or `{role}/analysis-F-{id}-{slug}.md`, not `design/{role}.md`.
|
|
144
|
+
- **Every Conflict MUST be actionable**: include a concrete suggested resolution + 1-line rationale.
|
|
145
|
+
- **Every Gap MUST name an owner role AND provide concrete edit_content**. Vague "more analysis needed" gaps MUST be dropped.
|
|
146
|
+
- **Every Synergy MUST patch BOTH role files** so the alignment is visible from either entry point.
|
|
147
|
+
- **Reference guidance decisions by ID**: when a role decision conflicts with a guidance decision, call out the ID.
|
|
148
|
+
|
|
149
|
+
## Scope
|
|
150
|
+
|
|
151
|
+
- ✅ Same feature, different role decisions that contradict (compare §2 Decisions rows)
|
|
152
|
+
- ✅ Interface consumer references a role with no matching definition (compare §2 Interfaces)
|
|
153
|
+
- ✅ Cross-Cutting Positions on same topic with contradictory stances
|
|
154
|
+
- ✅ Findings from one role that could benefit another (§2 Findings Summary)
|
|
155
|
+
- ❌ Internal inconsistencies within one role's files (that's the role-design-author's job)
|
|
156
|
+
- ❌ Decisions already locked in guidance §1-§10 (those are settled — surface only if a role file violates them)
|
|
157
|
+
|
|
158
|
+
## Return Protocol
|
|
159
|
+
|
|
160
|
+
- **TASK COMPLETE**: structured markdown report returned. Include the Summary block with counts.
|
|
161
|
+
- **TASK NEEDS_CONTEXT**: include `need_deeper_context` blocks for files the orchestrator should inject.
|
|
162
|
+
- **TASK BLOCKED**: cannot proceed (missing analysis files, all files empty). Report blocker.
|
|
163
|
+
|
|
164
|
+
## NEVER
|
|
165
|
+
|
|
166
|
+
- Write files. Your output is text only — the orchestrator does the file edits.
|
|
167
|
+
- Invent conflicts where the role digests actually agree. False positives are worse than misses.
|
|
168
|
+
- Re-derive guidance-specification decisions. Quote them by ID only.
|
|
169
|
+
- Exceed 3000 words in the report — be specific, not exhaustive.
|
|
170
|
+
- Use file paths in `design/` format — always use `{role}/` format.
|