cc-devflow 4.3.0 → 4.5.0
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/.claude/skills/cc-act/CHANGELOG.md +70 -0
- package/.claude/skills/cc-act/PLAYBOOK.md +212 -0
- package/.claude/skills/cc-act/SKILL.md +330 -0
- package/.claude/skills/cc-act/assets/PR_BRIEF_TEMPLATE.md +68 -0
- package/.claude/skills/cc-act/assets/RELEASE_NOTE_TEMPLATE.md +29 -0
- package/.claude/skills/cc-act/references/closure-contract.md +49 -0
- package/.claude/skills/cc-act/references/git-commit-guidelines.md +83 -0
- package/.claude/skills/cc-act/scripts/archive-requirement.sh +49 -0
- package/.claude/skills/cc-act/scripts/cc-act-common.sh +245 -0
- package/.claude/skills/cc-act/scripts/detect-ship-target.sh +82 -0
- package/.claude/skills/cc-act/scripts/generate-status-report.sh +83 -0
- package/.claude/skills/cc-act/scripts/render-pr-brief.sh +200 -0
- package/.claude/skills/cc-act/scripts/sync-act-docs.sh +328 -0
- package/.claude/skills/cc-act/scripts/verify-act-gate.sh +63 -0
- package/.claude/skills/cc-check/CHANGELOG.md +78 -0
- package/.claude/skills/cc-check/PLAYBOOK.md +153 -0
- package/.claude/skills/cc-check/SKILL.md +353 -0
- package/.claude/skills/cc-check/assets/REPORT_CARD_TEMPLATE.json +53 -0
- package/.claude/skills/cc-check/references/gate-contract.md +29 -0
- package/.claude/skills/cc-check/references/review-contract.md +45 -0
- package/.claude/skills/cc-check/scripts/render-report-card.js +229 -0
- package/.claude/skills/cc-check/scripts/run-quality-gates.sh +86 -0
- package/.claude/skills/cc-check/scripts/verify-gate.sh +57 -0
- package/.claude/skills/cc-do/CHANGELOG.md +54 -0
- package/.claude/skills/cc-do/PLAYBOOK.md +119 -0
- package/.claude/skills/cc-do/SKILL.md +224 -0
- package/.claude/skills/cc-do/references/execution-recovery.md +86 -0
- package/.claude/skills/cc-do/references/parallel-dispatch.md +80 -0
- package/.claude/skills/cc-do/scripts/build-task-context.sh +184 -0
- package/.claude/skills/cc-do/scripts/cc-do-common.sh +79 -0
- package/.claude/skills/cc-do/scripts/check-task-status.sh +92 -0
- package/.claude/skills/cc-do/scripts/detect-file-conflicts.sh +87 -0
- package/.claude/skills/cc-do/scripts/mark-task-complete.sh +119 -0
- package/.claude/skills/cc-do/scripts/record-review-decision.sh +89 -0
- package/.claude/skills/cc-do/scripts/recover-workflow.sh +84 -0
- package/.claude/skills/cc-do/scripts/run-problem-analysis.sh +70 -0
- package/.claude/skills/cc-do/scripts/select-ready-tasks.sh +135 -0
- package/.claude/skills/cc-do/scripts/verify-task-gates.sh +94 -0
- package/.claude/skills/cc-do/scripts/write-task-checkpoint.sh +102 -0
- package/.claude/skills/cc-investigate/CHANGELOG.md +31 -0
- package/.claude/skills/cc-investigate/PLAYBOOK.md +49 -0
- package/.claude/skills/cc-investigate/SKILL.md +229 -0
- package/.claude/skills/cc-investigate/assets/ANALYSIS_TEMPLATE.md +56 -0
- package/.claude/skills/cc-investigate/assets/TASKS_TEMPLATE.md +53 -0
- package/.claude/skills/cc-investigate/assets/TASK_MANIFEST_TEMPLATE.json +106 -0
- package/.claude/skills/cc-investigate/references/investigation-contract.md +28 -0
- package/.claude/skills/cc-investigate/scripts/bootstrap-analysis.sh +38 -0
- package/.claude/skills/cc-plan/CHANGELOG.md +104 -0
- package/.claude/skills/cc-plan/PLAYBOOK.md +106 -0
- package/.claude/skills/cc-plan/SKILL.md +333 -0
- package/.claude/skills/cc-plan/assets/DESIGN_TEMPLATE.md +156 -0
- package/.claude/skills/cc-plan/assets/TASKS_TEMPLATE.md +99 -0
- package/.claude/skills/cc-plan/assets/TASK_MANIFEST_TEMPLATE.json +111 -0
- package/.claude/skills/cc-plan/assets/TINY_DESIGN_TEMPLATE.md +80 -0
- package/.claude/skills/cc-plan/references/planning-contract.md +82 -0
- package/.claude/skills/cc-plan/scripts/bump-skill-version.sh +103 -0
- package/.claude/skills/cc-plan/scripts/parse-task-dependencies.js +75 -0
- package/.claude/skills/cc-plan/scripts/validate-scope.sh +78 -0
- package/.claude/skills/cc-roadmap/CHANGELOG.md +119 -0
- package/.claude/skills/cc-roadmap/PLAYBOOK.md +136 -0
- package/.claude/skills/cc-roadmap/SKILL.md +267 -0
- package/.claude/skills/cc-roadmap/assets/BACKLOG_TEMPLATE.md +46 -0
- package/.claude/skills/cc-roadmap/assets/ROADMAP_TEMPLATE.md +154 -0
- package/.claude/skills/cc-roadmap/assets/TRACKING_TEMPLATE.json +51 -0
- package/.claude/skills/cc-roadmap/references/roadmap-dialogue.md +37 -0
- package/.claude/skills/cc-roadmap/scripts/bump-skill-version.sh +103 -0
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/markdown.js +604 -0
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/query.js +63 -0
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/schema.js +245 -0
- package/.claude/skills/cc-roadmap/scripts/lib/roadmap-tracking/store.js +139 -0
- package/.claude/skills/cc-roadmap/scripts/locate-roadmap-item.sh +109 -0
- package/.claude/skills/cc-roadmap/scripts/roadmap-tracking.js +153 -0
- package/.claude/skills/cc-roadmap/scripts/sync-roadmap-progress.sh +100 -0
- package/.claude/skills/cc-simplify/CHANGELOG.md +10 -0
- package/.claude/skills/cc-simplify/SKILL.md +55 -0
- package/.claude/skills/cc-spec-init/CHANGELOG.md +12 -0
- package/.claude/skills/cc-spec-init/PLAYBOOK.md +55 -0
- package/.claude/skills/cc-spec-init/SKILL.md +135 -0
- package/.claude/skills/cc-spec-init/assets/CAPABILITY_TEMPLATE.md +64 -0
- package/.claude/skills/cc-spec-init/assets/CHANGE_META_TEMPLATE.json +28 -0
- package/.claude/skills/cc-spec-init/assets/INDEX_TEMPLATE.md +35 -0
- package/.claude/skills/cc-spec-init/references/spec-contract.md +22 -0
- package/.claude/skills/cc-spec-init/scripts/bootstrap-specs.sh +31 -0
- package/.claude/skills/cc-spec-init/scripts/validate-spec-links.sh +45 -0
- package/CHANGELOG.md +80 -4
- package/README.md +148 -741
- package/README.zh-CN.md +146 -740
- package/bin/adapt.js +2 -6
- package/bin/cc-devflow-cli.js +287 -166
- package/config/distributable-skills.json +24 -0
- package/config/schema/cc-devflow-config.schema.json +45 -0
- package/config/user-config.template.yml +16 -0
- package/docs/CLAUDE.md +10 -6
- package/docs/commands/README.md +19 -46
- package/docs/commands/README.zh-CN.md +25 -48
- package/docs/examples/BY-ARTIFACT.md +7 -0
- package/docs/examples/README.md +38 -0
- package/docs/examples/START-HERE.md +149 -0
- package/docs/examples/example-bindings.json +38 -0
- package/docs/examples/full-design-blocked/BACKLOG.md +45 -0
- package/docs/examples/full-design-blocked/README.md +55 -0
- package/docs/examples/full-design-blocked/ROADMAP.md +53 -0
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/design.md +154 -0
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/task-manifest.json +146 -0
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/planning/tasks.md +78 -0
- package/docs/examples/full-design-blocked/changes/REQ-002-bulk-invite-import/review/report-card.json +52 -0
- package/docs/examples/full-design-blocked/roadmap-tracking.json +50 -0
- package/docs/examples/local-handoff/BACKLOG.md +45 -0
- package/docs/examples/local-handoff/README.md +56 -0
- package/docs/examples/local-handoff/ROADMAP.md +45 -0
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/resume-index.md +39 -0
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/handoff/status.md +29 -0
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/design.md +71 -0
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json +98 -0
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/tasks.md +59 -0
- package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/review/report-card.json +44 -0
- package/docs/examples/local-handoff/roadmap-tracking.json +48 -0
- package/docs/examples/pdca-loop/BACKLOG.md +46 -0
- package/docs/examples/pdca-loop/README.md +58 -0
- package/docs/examples/pdca-loop/ROADMAP.md +133 -0
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/pr-brief.md +72 -0
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/handoff/status.md +29 -0
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/design.md +72 -0
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/task-manifest.json +201 -0
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/planning/tasks.md +73 -0
- package/docs/examples/pdca-loop/changes/REQ-001-copy-invite-link/review/report-card.json +44 -0
- package/docs/examples/pdca-loop/roadmap-tracking.json +114 -0
- package/docs/examples/scripts/check-example-bindings.sh +116 -0
- package/docs/guides/getting-started.md +94 -129
- package/docs/guides/getting-started.zh-CN.md +103 -84
- package/docs/skill-runtime-migration.md +46 -0
- package/docs/v4.3.0-migration-guide.md +60 -225
- package/lib/compiler/CLAUDE.md +55 -84
- package/lib/compiler/__tests__/drift.test.js +1 -1
- package/lib/compiler/__tests__/errors.test.js +0 -1
- package/lib/compiler/__tests__/integration.test.js +49 -3
- package/lib/compiler/__tests__/manifest.test.js +0 -156
- package/lib/compiler/__tests__/parser.test.js +33 -104
- package/lib/compiler/__tests__/schemas.test.js +30 -34
- package/lib/compiler/__tests__/skills-registry.test.js +114 -0
- package/lib/compiler/__tests__/transformer.test.js +5 -9
- package/lib/compiler/emitters/antigravity-emitter.js +5 -213
- package/lib/compiler/emitters/base-emitter.js +3 -298
- package/lib/compiler/emitters/codex-emitter.js +4 -202
- package/lib/compiler/emitters/cursor-emitter.js +3 -287
- package/lib/compiler/emitters/qwen-emitter.js +4 -176
- package/lib/compiler/index.js +65 -345
- package/lib/compiler/manifest.js +6 -68
- package/lib/compiler/parser.js +31 -63
- package/lib/compiler/platforms.js +32 -277
- package/lib/compiler/resource-copier.js +176 -6
- package/lib/compiler/rules-emitters/__tests__/antigravity-rules-emitter.test.js +3 -3
- package/lib/compiler/rules-emitters/__tests__/cursor-rules-emitter.test.js +14 -4
- package/lib/compiler/rules-emitters/__tests__/qwen-rules-emitter.test.js +16 -7
- package/lib/compiler/rules-emitters/antigravity-rules-emitter.js +10 -15
- package/lib/compiler/rules-emitters/base-rules-emitter.js +5 -5
- package/lib/compiler/rules-emitters/cursor-rules-emitter.js +7 -12
- package/lib/compiler/rules-emitters/index.js +6 -3
- package/lib/compiler/rules-emitters/qwen-rules-emitter.js +7 -7
- package/lib/compiler/schemas.js +8 -4
- package/lib/compiler/skills-registry.js +213 -15
- package/lib/compiler/transformer.js +1 -1
- package/lib/skill-runtime/CLAUDE.md +19 -0
- package/lib/skill-runtime/__tests__/autopilot.test.js +210 -0
- package/lib/skill-runtime/__tests__/cli-bootstrap.integration.test.js +291 -0
- package/lib/skill-runtime/__tests__/config.test.js +161 -0
- package/lib/skill-runtime/__tests__/delegation.test.js +97 -0
- package/lib/skill-runtime/__tests__/dispatch.test.js +267 -0
- package/lib/skill-runtime/__tests__/intent.test.js +219 -0
- package/lib/skill-runtime/__tests__/lifecycle.test.js +169 -0
- package/lib/skill-runtime/__tests__/paths.test.js +42 -0
- package/lib/skill-runtime/__tests__/planner.tdd.test.js +250 -0
- package/lib/skill-runtime/__tests__/prepare-pr.test.js +139 -0
- package/lib/skill-runtime/__tests__/query.test.js +284 -0
- package/lib/skill-runtime/__tests__/runtime.integration.test.js +281 -0
- package/lib/skill-runtime/__tests__/schemas.test.js +207 -0
- package/lib/skill-runtime/__tests__/team-state.test.js +51 -0
- package/lib/skill-runtime/__tests__/worker-run.test.js +253 -0
- package/lib/skill-runtime/__tests__/worker.test.js +56 -0
- package/lib/skill-runtime/artifacts.js +93 -0
- package/lib/skill-runtime/config.js +379 -0
- package/lib/skill-runtime/delegation.js +533 -0
- package/lib/skill-runtime/index.js +36 -0
- package/lib/skill-runtime/intent.js +333 -0
- package/lib/skill-runtime/lifecycle.js +294 -0
- package/lib/skill-runtime/operations/CLAUDE.md +19 -0
- package/lib/skill-runtime/operations/approve.js +66 -0
- package/lib/skill-runtime/operations/autopilot-core.js +337 -0
- package/lib/skill-runtime/operations/autopilot-execution.js +307 -0
- package/lib/skill-runtime/operations/autopilot-shared.js +48 -0
- package/lib/skill-runtime/operations/autopilot.js +163 -0
- package/lib/skill-runtime/operations/dispatch.js +454 -0
- package/lib/skill-runtime/operations/init.js +64 -0
- package/lib/{harness → skill-runtime}/operations/janitor.js +9 -6
- package/lib/skill-runtime/operations/plan.js +59 -0
- package/lib/skill-runtime/operations/prepare-pr.js +25 -0
- package/lib/skill-runtime/operations/release.js +96 -0
- package/lib/skill-runtime/operations/resume.js +143 -0
- package/lib/skill-runtime/operations/snapshot.js +45 -0
- package/lib/skill-runtime/operations/verify.js +170 -0
- package/lib/skill-runtime/operations/worker-run.js +529 -0
- package/lib/skill-runtime/operations/worker.js +33 -0
- package/lib/skill-runtime/paths.js +213 -0
- package/lib/skill-runtime/planner.js +519 -0
- package/lib/skill-runtime/query.js +157 -0
- package/lib/skill-runtime/review.js +557 -0
- package/lib/skill-runtime/schemas.js +400 -0
- package/lib/{harness → skill-runtime}/store.js +45 -30
- package/lib/skill-runtime/team-state.js +122 -0
- package/package.json +13 -11
- package/.claude/CLAUDE.md +0 -125
- package/.claude/agents/architecture-designer.md +0 -443
- package/.claude/agents/bug-analyzer.md +0 -381
- package/.claude/agents/checklist-agent.md +0 -175
- package/.claude/agents/clarify-analyst.md +0 -50
- package/.claude/agents/code-quality-reviewer.md +0 -205
- package/.claude/agents/code-reviewer.md +0 -71
- package/.claude/agents/codex-analyzer.md +0 -39
- package/.claude/agents/compatibility-checker.md +0 -579
- package/.claude/agents/consistency-checker.md +0 -532
- package/.claude/agents/dev-implementer.md +0 -195
- package/.claude/agents/flow-researcher.md +0 -132
- package/.claude/agents/impact-analyzer.md +0 -440
- package/.claude/agents/planner.md +0 -230
- package/.claude/agents/prd-writer.md +0 -320
- package/.claude/agents/project-guidelines-generator.md +0 -1329
- package/.claude/agents/qa-tester.md +0 -313
- package/.claude/agents/release-manager.md +0 -295
- package/.claude/agents/security-reviewer.md +0 -314
- package/.claude/agents/spec-reviewer.md +0 -221
- package/.claude/agents/style-guide-generator.md +0 -458
- package/.claude/agents/tech-architect.md +0 -516
- package/.claude/agents/ui-designer.md +0 -485
- package/.claude/commands/core/architecture.md +0 -459
- package/.claude/commands/core/guidelines.md +0 -511
- package/.claude/commands/core/roadmap.md +0 -468
- package/.claude/commands/core/style.md +0 -83
- package/.claude/commands/flow/CLAUDE.md +0 -24
- package/.claude/commands/flow/archive.md +0 -280
- package/.claude/commands/flow/constitution.md +0 -82
- package/.claude/commands/flow/context.md +0 -150
- package/.claude/commands/flow/delta.md +0 -245
- package/.claude/commands/flow/dev.md +0 -40
- package/.claude/commands/flow/fix.md +0 -217
- package/.claude/commands/flow/ideate.md +0 -214
- package/.claude/commands/flow/init.md +0 -38
- package/.claude/commands/flow/release.md +0 -36
- package/.claude/commands/flow/restart.md +0 -97
- package/.claude/commands/flow/spec.md +0 -36
- package/.claude/commands/flow/status.md +0 -64
- package/.claude/commands/flow/update.md +0 -111
- package/.claude/commands/flow/upgrade.md +0 -115
- package/.claude/commands/flow/verify.md +0 -37
- package/.claude/commands/flow/workspace.md +0 -155
- package/.claude/commands/util/cancel-ralph.md +0 -60
- package/.claude/commands/util/code-review.md +0 -58
- package/.claude/commands/util/git-commit.md +0 -422
- package/.claude/commands/util/problem-analyzer.md +0 -60
- package/.claude/config/quality-gates.yml +0 -305
- package/.claude/config/quality-rules.yml +0 -161
- package/.claude/docs/SPEC_KIT_CONSTITUTION_ANALYSIS.md +0 -426
- package/.claude/docs/design/consistency-conflict-detection-algorithms.md +0 -658
- package/.claude/docs/design/intent-driven-input-design.md +0 -380
- package/.claude/docs/design/prd-version-management-design.md +0 -437
- package/.claude/docs/examples/design-inspiration-pool.md +0 -59
- package/.claude/docs/examples/ui-prototype-constitution-checklist.md +0 -75
- package/.claude/docs/guides/INIT_TROUBLESHOOTING.md +0 -117
- package/.claude/docs/guides/NEW_TROUBLESHOOTING.md +0 -99
- package/.claude/docs/guides/ROADMAP_TROUBLESHOOTING.md +0 -188
- package/.claude/docs/guides/TASK_COMPLETION_MARKING.md +0 -338
- package/.claude/docs/guides/TEAM_MODE_GUIDE.md +0 -312
- package/.claude/docs/implementation-summary-v7.md +0 -449
- package/.claude/docs/spec-format-guide.md +0 -349
- package/.claude/docs/state-consolidation-design.md +0 -323
- package/.claude/docs/templates/ARCHITECTURE_TEMPLATE.md +0 -332
- package/.claude/docs/templates/ATTEMPT_TEMPLATE.md +0 -156
- package/.claude/docs/templates/BACKLOG_TEMPLATE.md +0 -261
- package/.claude/docs/templates/BRAINSTORM_TEMPLATE.md +0 -148
- package/.claude/docs/templates/CHECKLIST_TEMPLATE.md +0 -52
- package/.claude/docs/templates/CLARIFICATION_REPORT_TEMPLATE.md +0 -206
- package/.claude/docs/templates/CODE_REVIEW_TEMPLATE.md +0 -71
- package/.claude/docs/templates/DELTA_SPEC_TEMPLATE.md +0 -91
- package/.claude/docs/templates/DESIGN_DECISIONS_TEMPLATE.md +0 -151
- package/.claude/docs/templates/DESIGN_TEMPLATE.md +0 -157
- package/.claude/docs/templates/ERROR_LOG_TEMPLATE.md +0 -80
- package/.claude/docs/templates/INIT_FLOW_TEMPLATE.md +0 -198
- package/.claude/docs/templates/INTENT_CLARIFICATION_TEMPLATE.md +0 -57
- package/.claude/docs/templates/JOURNAL_TEMPLATE.md +0 -75
- package/.claude/docs/templates/NEW_ORCHESTRATION_TEMPLATE.md +0 -76
- package/.claude/docs/templates/PROPOSAL_TEMPLATE.md +0 -91
- package/.claude/docs/templates/RESEARCH_TEMPLATE.md +0 -276
- package/.claude/docs/templates/REVIEW-HIGH.md +0 -57
- package/.claude/docs/templates/ROADMAP_DIALOGUE_TEMPLATE.md +0 -198
- package/.claude/docs/templates/ROADMAP_TEMPLATE.md +0 -310
- package/.claude/docs/templates/SPEC_TEMPLATE_DELTA.md +0 -139
- package/.claude/docs/templates/SPEC_TEMPLATE_PROJECT.md +0 -93
- package/.claude/docs/templates/STYLE_TEMPLATE.md +0 -479
- package/.claude/docs/templates/UI_PROTOTYPE_TEMPLATE.md +0 -373
- package/.claude/docs/templates/_shared/CLAUDE.md +0 -36
- package/.claude/docs/templates/_shared/CONSTITUTION_CHECK.md +0 -125
- package/.claude/docs/templates/_shared/VALIDATION_CHECKLIST.md +0 -187
- package/.claude/docs/templates/_shared/YAML_FRONTMATTER.md +0 -164
- package/.claude/docs/templates/context/dev.jsonl.template +0 -6
- package/.claude/docs/templates/context/epic.jsonl.template +0 -5
- package/.claude/docs/templates/context/prd.jsonl.template +0 -4
- package/.claude/docs/templates/context/research.jsonl.template +0 -4
- package/.claude/docs/templates/context/review.jsonl.template +0 -5
- package/.claude/docs/templates/context/tech.jsonl.template +0 -5
- package/.claude/guides/agent-guides/agent-coordination-guide.md +0 -459
- package/.claude/guides/project-guidelines-system.md +0 -463
- package/.claude/guides/technical-guides/datetime-handling-guide.md +0 -563
- package/.claude/guides/technical-guides/git-github-guide.md +0 -642
- package/.claude/guides/technical-guides/test-execution-guide.md +0 -618
- package/.claude/guides/workflow-guides/bug-fix-orchestrator.md +0 -217
- package/.claude/guides/workflow-guides/flow-orchestrator.md +0 -48
- package/.claude/hooks/CLAUDE.md +0 -342
- package/.claude/hooks/checklist-gate.js +0 -397
- package/.claude/hooks/error-handling-reminder.sh +0 -12
- package/.claude/hooks/error-handling-reminder.ts +0 -459
- package/.claude/hooks/hooks.json +0 -15
- package/.claude/hooks/inject-agent-context.ts +0 -480
- package/.claude/hooks/inject-skill-context.ts +0 -359
- package/.claude/hooks/post-tool-use-tracker.sh +0 -280
- package/.claude/hooks/pre-tool-use-guardrail.sh +0 -36
- package/.claude/hooks/pre-tool-use-guardrail.ts +0 -342
- package/.claude/hooks/ralph-loop.ts +0 -931
- package/.claude/hooks/ralph-stop-hook.sh +0 -190
- package/.claude/hooks/skill-activation-prompt.sh +0 -36
- package/.claude/hooks/skill-activation-prompt.ts +0 -214
- package/.claude/hooks/state/skills-used-test-guard.json +0 -3
- package/.claude/hooks/task-completed-hook.ts +0 -593
- package/.claude/hooks/teammate-idle-hook.ts +0 -690
- package/.claude/hooks/types/team-types.d.ts +0 -238
- package/.claude/rules/devflow-conventions.md +0 -286
- package/.claude/rules/project-constitution.md +0 -1002
- package/.claude/rules/rationalization-library.md +0 -282
- package/.claude/schemas/constitution.schema.json +0 -43
- package/.claude/scripts/.claude/commands/flow/export-openspec.md +0 -221
- package/.claude/scripts/.claude/commands/flow/import-openspec.md +0 -171
- package/.claude/scripts/CLAUDE.md +0 -76
- package/.claude/scripts/__tests__/openspec.test.js +0 -212
- package/.claude/scripts/analyze-upgrade-impact.sh +0 -200
- package/.claude/scripts/archive-requirement.sh +0 -394
- package/.claude/scripts/calculate-checklist-completion.sh +0 -243
- package/.claude/scripts/calculate-quarter.sh +0 -206
- package/.claude/scripts/check-dependencies.sh +0 -409
- package/.claude/scripts/check-prerequisites.sh +0 -232
- package/.claude/scripts/check-task-status.sh +0 -288
- package/.claude/scripts/checklist-errors.sh +0 -131
- package/.claude/scripts/common.sh +0 -1102
- package/.claude/scripts/consolidate-research.sh +0 -182
- package/.claude/scripts/create-requirement.sh +0 -451
- package/.claude/scripts/delta-parser.ts +0 -637
- package/.claude/scripts/detect-file-conflicts.sh +0 -151
- package/.claude/scripts/export-contracts.sh +0 -117
- package/.claude/scripts/export-openspec.js +0 -222
- package/.claude/scripts/extract-data-model.sh +0 -78
- package/.claude/scripts/flow-context-add.sh +0 -134
- package/.claude/scripts/flow-context-init.sh +0 -133
- package/.claude/scripts/flow-context-validate.sh +0 -144
- package/.claude/scripts/flow-delta-apply.sh +0 -297
- package/.claude/scripts/flow-delta-archive.sh +0 -71
- package/.claude/scripts/flow-delta-create.sh +0 -202
- package/.claude/scripts/flow-delta-list.sh +0 -142
- package/.claude/scripts/flow-delta-status.sh +0 -235
- package/.claude/scripts/flow-quality-full.sh +0 -215
- package/.claude/scripts/flow-quality-quick.sh +0 -119
- package/.claude/scripts/flow-workspace-init.sh +0 -117
- package/.claude/scripts/flow-workspace-record.sh +0 -164
- package/.claude/scripts/generate-clarification-questions.sh +0 -377
- package/.claude/scripts/generate-clarification-report.sh +0 -463
- package/.claude/scripts/generate-quickstart.sh +0 -146
- package/.claude/scripts/generate-research-tasks.sh +0 -157
- package/.claude/scripts/generate-status-report.sh +0 -523
- package/.claude/scripts/generate-tech-analysis.sh +0 -46
- package/.claude/scripts/get-workflow-status.sh +0 -415
- package/.claude/scripts/import-openspec.js +0 -272
- package/.claude/scripts/locate-requirement-in-roadmap.sh +0 -233
- package/.claude/scripts/manage-constitution.sh +0 -602
- package/.claude/scripts/mark-task-complete.sh +0 -198
- package/.claude/scripts/parse-task-dependencies.js +0 -334
- package/.claude/scripts/populate-research-tasks.sh +0 -284
- package/.claude/scripts/record-quality-error.sh +0 -165
- package/.claude/scripts/recover-workflow.sh +0 -463
- package/.claude/scripts/run-clarify-scan.sh +0 -601
- package/.claude/scripts/run-high-review.sh +0 -62
- package/.claude/scripts/run-problem-analysis.sh +0 -68
- package/.claude/scripts/run-quality-gates.sh +0 -242
- package/.claude/scripts/setup-epic.sh +0 -173
- package/.claude/scripts/setup-ralph-loop.sh +0 -155
- package/.claude/scripts/sync-roadmap-progress.sh +0 -300
- package/.claude/scripts/sync-task-marks.sh +0 -199
- package/.claude/scripts/team-dev-init.sh +0 -319
- package/.claude/scripts/team-state-recovery.sh +0 -229
- package/.claude/scripts/test-clarify-scan.sh +0 -515
- package/.claude/scripts/update-agent-context.sh +0 -806
- package/.claude/scripts/validate-constitution.sh +0 -567
- package/.claude/scripts/validate-hooks.sh +0 -487
- package/.claude/scripts/validate-research.sh +0 -332
- package/.claude/scripts/validate-scope-boundary.sh +0 -493
- package/.claude/scripts/validate-scope.sh +0 -200
- package/.claude/scripts/verify-gate.sh +0 -269
- package/.claude/scripts/verify-setup.sh +0 -37
- package/.claude/scripts/workflow-status.ts +0 -433
- package/.claude/settings.json +0 -95
- package/.claude/skills/_reference-implementations/README.md +0 -96
- package/.claude/skills/_reference-implementations/backend-express-prisma/SKILL.md +0 -302
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/architecture-overview.md +0 -451
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/async-and-errors.md +0 -307
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/complete-examples.md +0 -638
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/configuration.md +0 -275
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/database-patterns.md +0 -224
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/middleware-guide.md +0 -213
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/routing-and-controllers.md +0 -756
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/sentry-and-monitoring.md +0 -336
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/services-and-repositories.md +0 -789
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/testing-guide.md +0 -235
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/validation-patterns.md +0 -754
- package/.claude/skills/_reference-implementations/frontend-react-mui/SKILL.md +0 -399
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/common-patterns.md +0 -331
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/complete-examples.md +0 -872
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/component-patterns.md +0 -502
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/data-fetching.md +0 -767
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/file-organization.md +0 -502
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/loading-and-error-states.md +0 -501
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/performance.md +0 -406
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/routing-guide.md +0 -364
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/styling-guide.md +0 -428
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/typescript-standards.md +0 -418
- package/.claude/skills/attention-refresh/SKILL.md +0 -170
- package/.claude/skills/brainstorming/SKILL.md +0 -161
- package/.claude/skills/cc-devflow-orchestrator/SKILL.md +0 -169
- package/.claude/skills/constitution-guardian/SKILL.md +0 -306
- package/.claude/skills/constitution-quick-ref/SKILL.md +0 -374
- package/.claude/skills/debugging/SKILL.md +0 -221
- package/.claude/skills/file-standards/SKILL.md +0 -353
- package/.claude/skills/finishing-branch/SKILL.md +0 -189
- package/.claude/skills/flow-dev/CLAUDE.md +0 -16
- package/.claude/skills/flow-dev/SKILL.md +0 -94
- package/.claude/skills/flow-dev/assets/IMPLEMENTATION_PLAN_TEMPLATE.md +0 -71
- package/.claude/skills/flow-dev/context.jsonl +0 -4
- package/.claude/skills/flow-dev/dev-implementer.jsonl +0 -8
- package/.claude/skills/flow-dev/scripts/entry-gate.sh +0 -116
- package/.claude/skills/flow-dev/scripts/exit-gate.sh +0 -101
- package/.claude/skills/flow-dev/scripts/task-orchestrator.sh +0 -106
- package/.claude/skills/flow-fix/SKILL.md +0 -105
- package/.claude/skills/flow-fix/context.jsonl +0 -6
- package/.claude/skills/flow-fix/references/bug-analyzer.md +0 -381
- package/.claude/skills/flow-init/SKILL.md +0 -105
- package/.claude/skills/flow-init/assets/BRAINSTORM_TEMPLATE.md +0 -148
- package/.claude/skills/flow-init/assets/INIT_FLOW_TEMPLATE.md +0 -198
- package/.claude/skills/flow-init/assets/RESEARCH_TEMPLATE.md +0 -276
- package/.claude/skills/flow-init/context.jsonl +0 -5
- package/.claude/skills/flow-init/references/flow-researcher.md +0 -132
- package/.claude/skills/flow-init/scripts/check-prerequisites.sh +0 -240
- package/.claude/skills/flow-init/scripts/consolidate-research.sh +0 -182
- package/.claude/skills/flow-init/scripts/create-requirement.sh +0 -404
- package/.claude/skills/flow-init/scripts/generate-research-tasks.sh +0 -157
- package/.claude/skills/flow-init/scripts/populate-research-tasks.sh +0 -284
- package/.claude/skills/flow-init/scripts/validate-research.sh +0 -340
- package/.claude/skills/flow-quality/SKILL.md +0 -98
- package/.claude/skills/flow-quality/context.jsonl +0 -6
- package/.claude/skills/flow-quality/references/code-quality-reviewer.md +0 -205
- package/.claude/skills/flow-quality/references/qa-tester.md +0 -313
- package/.claude/skills/flow-quality/references/security-reviewer.md +0 -314
- package/.claude/skills/flow-quality/references/spec-reviewer.md +0 -221
- package/.claude/skills/flow-release/SKILL.md +0 -60
- package/.claude/skills/flow-release/context.jsonl +0 -5
- package/.claude/skills/flow-release/references/release-manager.md +0 -295
- package/.claude/skills/flow-spec/CLAUDE.md +0 -17
- package/.claude/skills/flow-spec/SKILL.md +0 -102
- package/.claude/skills/flow-spec/context.jsonl +0 -5
- package/.claude/skills/flow-spec/scripts/entry-gate.sh +0 -194
- package/.claude/skills/flow-spec/scripts/exit-gate.sh +0 -244
- package/.claude/skills/flow-spec/scripts/parallel-orchestrator.sh +0 -205
- package/.claude/skills/flow-spec/scripts/team-communication.sh +0 -353
- package/.claude/skills/flow-spec/scripts/team-init.sh +0 -195
- package/.claude/skills/flow-spec/scripts/test-team-mode.sh +0 -496
- package/.claude/skills/flow-spec/team-config.json +0 -165
- package/.claude/skills/flow-verify/CLAUDE.md +0 -10
- package/.claude/skills/flow-verify/SKILL.md +0 -53
- package/.claude/skills/flow-verify/context.jsonl +0 -5
- package/.claude/skills/fractal-docs/SKILL.md +0 -45
- package/.claude/skills/journey-checker/SKILL.md +0 -199
- package/.claude/skills/journey-checker/pressure-scenarios.md +0 -164
- package/.claude/skills/receiving-review/SKILL.md +0 -153
- package/.claude/skills/skill-creator/LICENSE.txt +0 -202
- package/.claude/skills/skill-creator/SKILL.md +0 -356
- package/.claude/skills/skill-creator/references/output-patterns.md +0 -82
- package/.claude/skills/skill-creator/references/workflows.md +0 -28
- package/.claude/skills/skill-creator/scripts/init_skill.py +0 -303
- package/.claude/skills/skill-creator/scripts/package_skill.py +0 -110
- package/.claude/skills/skill-creator/scripts/quick_validate.py +0 -95
- package/.claude/skills/skill-rules.json +0 -359
- package/.claude/skills/tdd/SKILL.md +0 -218
- package/.claude/skills/tdd-enforcer/SKILL.md +0 -192
- package/.claude/skills/utility/npm-release/CLAUDE.md +0 -55
- package/.claude/skills/utility/npm-release/SKILL.md +0 -379
- package/.claude/skills/utility/npm-release/references/version-decision-guide.md +0 -134
- package/.claude/skills/utility/npm-release/scripts/atomic-version-bump.sh +0 -95
- package/.claude/skills/utility/npm-release/scripts/validate-version-sync.sh +0 -82
- package/.claude/skills/utility/npm-release/scripts/version-decision-tree.sh +0 -44
- package/.claude/skills/verification/SKILL.md +0 -158
- package/.claude/skills/workflow.yaml +0 -219
- package/.claude/tests/README.md +0 -300
- package/.claude/tests/TODO.md +0 -69
- package/.claude/tests/__pycache__/test_analyze_upgrade_impact.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_consolidate_research.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_export_contracts.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_extract_data_model.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_generate_quickstart.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_generate_research_tasks.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/constitution/run_all_constitution_tests.sh +0 -111
- package/.claude/tests/constitution/test_agent_assignment.sh +0 -207
- package/.claude/tests/constitution/test_article_coverage.sh +0 -201
- package/.claude/tests/constitution/test_template_completeness.sh +0 -150
- package/.claude/tests/constitution/test_version_consistency.sh +0 -120
- package/.claude/tests/fixtures/spec_delta_full.md +0 -16
- package/.claude/tests/fixtures/tasks_progress_sample.md +0 -5
- package/.claude/tests/run-all-tests.sh +0 -229
- package/.claude/tests/scripts/run.sh +0 -30
- package/.claude/tests/scripts/test-framework.sh +0 -128
- package/.claude/tests/scripts/test_check_prerequisites.sh +0 -511
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak +0 -504
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak2 +0 -505
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak3 +0 -506
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak4 +0 -507
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak5 +0 -508
- package/.claude/tests/scripts/test_check_task_status.sh +0 -499
- package/.claude/tests/scripts/test_common.sh +0 -244
- package/.claude/tests/scripts/test_generate_status_report.sh +0 -71
- package/.claude/tests/scripts/test_mark_task_complete.sh +0 -441
- package/.claude/tests/scripts/test_mark_task_complete.sh.backup +0 -410
- package/.claude/tests/scripts/test_recover_workflow.sh +0 -304
- package/.claude/tests/scripts/test_setup_epic.sh +0 -437
- package/.claude/tests/scripts/test_sync_task_marks.sh +0 -196
- package/.claude/tests/scripts/test_validate_constitution.sh +0 -74
- package/.claude/tests/scripts/test_validate_research.sh +0 -462
- package/.claude/tests/slugify.bats +0 -82
- package/.claude/tests/test-framework.sh +0 -732
- package/.claude/tests/test_analyze_upgrade_impact.py +0 -34
- package/.claude/tests/test_consolidate_research.py +0 -48
- package/.claude/tests/test_export_contracts.py +0 -43
- package/.claude/tests/test_extract_data_model.py +0 -33
- package/.claude/tests/test_generate_quickstart.py +0 -50
- package/.claude/tests/test_generate_research_tasks.py +0 -52
- package/.claude/tsc-cache/70d2fc6d-2936-429b-b529-429f1aae8c88/affected-repos.txt +0 -1
- package/.claude/tsc-cache/70d2fc6d-2936-429b-b529-429f1aae8c88/edited-files.log +0 -2
- package/bin/harness.js +0 -22
- package/docs/commands/core-roadmap.md +0 -106
- package/docs/commands/core-roadmap.zh-CN.md +0 -102
- package/docs/commands/core-style.md +0 -53
- package/docs/commands/core-style.zh-CN.md +0 -53
- package/docs/commands/flow-init.md +0 -140
- package/docs/commands/flow-init.zh-CN.md +0 -169
- package/docs/commands/flow-new.md +0 -39
- package/docs/commands/flow-new.zh-CN.md +0 -39
- package/lib/compiler/__tests__/compile-regression.test.js +0 -103
- package/lib/compiler/__tests__/multi-module-emitters.test.js +0 -534
- package/lib/compiler/__tests__/resource-copier.test.js +0 -26
- package/lib/compiler/__tests__/skill-discovery.test.js +0 -72
- package/lib/compiler/context-expander.js +0 -179
- package/lib/compiler/rules-emitters/__tests__/codex-rules-emitter.test.js +0 -109
- package/lib/compiler/rules-emitters/codex-rules-emitter.js +0 -116
- package/lib/compiler/skill-discovery.js +0 -68
- package/lib/harness/CLAUDE.md +0 -22
- package/lib/harness/__tests__/planner.tdd.test.js +0 -125
- package/lib/harness/cli.js +0 -208
- package/lib/harness/index.js +0 -18
- package/lib/harness/operations/dispatch.js +0 -298
- package/lib/harness/operations/init.js +0 -48
- package/lib/harness/operations/pack.js +0 -100
- package/lib/harness/operations/plan.js +0 -83
- package/lib/harness/operations/release.js +0 -170
- package/lib/harness/operations/resume.js +0 -44
- package/lib/harness/operations/verify.js +0 -177
- package/lib/harness/planner.js +0 -272
- package/lib/harness/query.js +0 -126
- package/lib/harness/schemas.js +0 -129
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Status Report
|
|
2
|
+
|
|
3
|
+
## Requirement
|
|
4
|
+
|
|
5
|
+
- Change ID: `REQ-001`
|
|
6
|
+
- Roadmap item: `RM-001`
|
|
7
|
+
- Current state: verified and ready to ship as `create-pr`
|
|
8
|
+
|
|
9
|
+
## What Is True Now
|
|
10
|
+
|
|
11
|
+
- The share dialog exposes a one-click copy action for the existing invite URL
|
|
12
|
+
- The patch stayed inside the approved `tiny-design` boundary
|
|
13
|
+
- Fresh targeted test and lint evidence both passed
|
|
14
|
+
- Review proof is present, so `cc-check` returned `pass`
|
|
15
|
+
|
|
16
|
+
## Ship Decision
|
|
17
|
+
|
|
18
|
+
- Recommended mode: `create-pr`
|
|
19
|
+
- Why now: the work is verified, the branch is assumed to be a feature branch, and no open PR exists yet
|
|
20
|
+
- Why not others:
|
|
21
|
+
- not `update-pr`: there is no existing PR to refresh
|
|
22
|
+
- not `local-handoff`: the work is ready to move forward
|
|
23
|
+
- not `post-merge-closeout`: the change is not merged yet
|
|
24
|
+
|
|
25
|
+
## Docs And Follow-Up
|
|
26
|
+
|
|
27
|
+
- README / release docs: no public user-facing release note yet
|
|
28
|
+
- Backlog writeback: keep `RM-002` parked as the next UX refinement if support friction remains
|
|
29
|
+
- Next entry point: create the PR using `pr-brief.md` as the truth source
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# DESIGN
|
|
2
|
+
|
|
3
|
+
## Document Meta
|
|
4
|
+
|
|
5
|
+
- Requirement version: `REQ-001.v1`
|
|
6
|
+
- Design version: `design.v1`
|
|
7
|
+
- CC-Plan skill version: `3.5.4`
|
|
8
|
+
- Requirement ID: `REQ-001`
|
|
9
|
+
- Design mode: `tiny-design`
|
|
10
|
+
- Why this stays `tiny-design`: the patch is limited to an existing dialog and test file, with no API or data model changes
|
|
11
|
+
- Approval status: `approved`
|
|
12
|
+
- Source roadmap item: `RM-001`
|
|
13
|
+
- Source roadmap version: `roadmap.v1`
|
|
14
|
+
|
|
15
|
+
## Source Handoff
|
|
16
|
+
|
|
17
|
+
- Why now: Stage 1 needs the smallest possible share-flow win
|
|
18
|
+
- Inherited success signal: a user can copy the invite link with one click
|
|
19
|
+
- Inherited kill signal: if the patch requires backend or permission changes, reopen planning
|
|
20
|
+
- Inherited non-goals: no invite role controls, no analytics, no dialog redesign
|
|
21
|
+
- Upstream evidence: repeated support notes and observed manual copying
|
|
22
|
+
|
|
23
|
+
## Frozen Design Card
|
|
24
|
+
|
|
25
|
+
- Change: add a `Copy invite link` button beside the existing read-only invite URL in the share dialog
|
|
26
|
+
- Keep out: no new invite generation flow and no fallback redesign for unsupported browsers
|
|
27
|
+
- Touched files:
|
|
28
|
+
- `src/features/share/ShareDialog.tsx`
|
|
29
|
+
- `src/features/share/ShareDialog.test.tsx`
|
|
30
|
+
- Contract changes: none; reuse the existing invite link source and existing dialog props
|
|
31
|
+
- Key decisions that `cc-do` must not re-decide:
|
|
32
|
+
- use `navigator.clipboard.writeText`
|
|
33
|
+
- keep the current invite URL source of truth
|
|
34
|
+
- show a lightweight copied-state confirmation inside the current dialog
|
|
35
|
+
- Upgrade trigger to `full-design`: if clipboard support requires new platform fallbacks, or if the patch spills into shared share-service contracts
|
|
36
|
+
|
|
37
|
+
## Validation
|
|
38
|
+
|
|
39
|
+
- Primary check: targeted dialog test proves the button renders and copies the current invite URL
|
|
40
|
+
- Secondary checks:
|
|
41
|
+
- existing share dialog tests remain green
|
|
42
|
+
- lint stays green for the touched files
|
|
43
|
+
- Evidence to collect:
|
|
44
|
+
- failing test before implementation
|
|
45
|
+
- passing targeted test after implementation
|
|
46
|
+
- fresh gate output for `cc-check`
|
|
47
|
+
|
|
48
|
+
## Main Risk
|
|
49
|
+
|
|
50
|
+
- Risk: copied-state feedback may be too subtle for users
|
|
51
|
+
- Mitigation: keep the first patch minimal and log a follow-up roadmap item if support friction remains
|
|
52
|
+
|
|
53
|
+
## Review Gate
|
|
54
|
+
|
|
55
|
+
- Placeholder scan: pass
|
|
56
|
+
- Consistency scan: pass; scope, files, and validation all point to the same tiny patch
|
|
57
|
+
- Scope scan: pass; no backend, no permission work
|
|
58
|
+
- Ambiguity scan: pass; execution does not need to re-decide button placement or clipboard source
|
|
59
|
+
- Feasibility scan: pass; existing dialog and tests already cover the target surface
|
|
60
|
+
- Final recommendation: approved as `tiny-design`
|
|
61
|
+
|
|
62
|
+
## Approval
|
|
63
|
+
|
|
64
|
+
- User approval status: approved
|
|
65
|
+
- Deferred questions:
|
|
66
|
+
- if copied-state feedback still feels weak, open a separate requirement for richer UX
|
|
67
|
+
|
|
68
|
+
## First-Read Test
|
|
69
|
+
|
|
70
|
+
- This is clearly small because it stays inside one UI surface and one test surface
|
|
71
|
+
- The upgrade path is explicit: any contract or fallback work forces `full-design`
|
|
72
|
+
- `cc-do` should not need to ask where the URL comes from or how the copy action is triggered
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
{
|
|
2
|
+
"changeId": "REQ-001",
|
|
3
|
+
"goal": "Add a one-click copy action to the existing share dialog without changing backend contracts.",
|
|
4
|
+
"createdAt": "2026-04-15T10:00:00.000Z",
|
|
5
|
+
"updatedAt": "2026-04-15T11:10:00.000Z",
|
|
6
|
+
"status": "verified",
|
|
7
|
+
"requirementId": "REQ-001",
|
|
8
|
+
"requirementVersion": "REQ-001.v1",
|
|
9
|
+
"sourceRoadmap": {
|
|
10
|
+
"itemId": "RM-001",
|
|
11
|
+
"roadmapVersion": "roadmap.v1",
|
|
12
|
+
"roadmapSkillVersion": "4.3.2",
|
|
13
|
+
"sourceStage": "Stage 1",
|
|
14
|
+
"successSignal": "Users can copy the invite link with one click",
|
|
15
|
+
"killSignal": "The patch requires backend or permission changes",
|
|
16
|
+
"dependencies": [
|
|
17
|
+
"Existing share dialog stays intact"
|
|
18
|
+
],
|
|
19
|
+
"nonGoals": [
|
|
20
|
+
"No invite role redesign",
|
|
21
|
+
"No share analytics"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"planningMeta": {
|
|
25
|
+
"reqPlanSkillVersion": "3.5.4",
|
|
26
|
+
"designVersion": "design.v1",
|
|
27
|
+
"approvedAt": "2026-04-15T10:05:00.000Z",
|
|
28
|
+
"approvedBy": "user",
|
|
29
|
+
"basedOnOption": "Tiny design card"
|
|
30
|
+
},
|
|
31
|
+
"currentTaskId": null,
|
|
32
|
+
"activePhase": null,
|
|
33
|
+
"tasks": [
|
|
34
|
+
{
|
|
35
|
+
"id": "T001",
|
|
36
|
+
"title": "[TEST] Add a failing dialog test for the missing copy action",
|
|
37
|
+
"type": "TEST",
|
|
38
|
+
"phase": 1,
|
|
39
|
+
"parallel": false,
|
|
40
|
+
"dependsOn": [],
|
|
41
|
+
"touches": [
|
|
42
|
+
"share-dialog",
|
|
43
|
+
"tests"
|
|
44
|
+
],
|
|
45
|
+
"files": [
|
|
46
|
+
"src/features/share/ShareDialog.test.tsx"
|
|
47
|
+
],
|
|
48
|
+
"run": [
|
|
49
|
+
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
50
|
+
],
|
|
51
|
+
"checks": [
|
|
52
|
+
"test fails before implementation"
|
|
53
|
+
],
|
|
54
|
+
"acceptance": [
|
|
55
|
+
"The missing copy action is reproduced as a failing test"
|
|
56
|
+
],
|
|
57
|
+
"verification": [
|
|
58
|
+
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
59
|
+
],
|
|
60
|
+
"evidence": [
|
|
61
|
+
"Failing test output"
|
|
62
|
+
],
|
|
63
|
+
"context": {
|
|
64
|
+
"readFiles": [
|
|
65
|
+
"design.md",
|
|
66
|
+
"tasks.md",
|
|
67
|
+
"src/features/share/ShareDialog.tsx"
|
|
68
|
+
],
|
|
69
|
+
"commands": [
|
|
70
|
+
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
71
|
+
],
|
|
72
|
+
"notes": [
|
|
73
|
+
"Do not change share-service contracts in this task"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"reviews": {
|
|
77
|
+
"spec": "pass",
|
|
78
|
+
"code": "pass"
|
|
79
|
+
},
|
|
80
|
+
"status": "passed",
|
|
81
|
+
"attempts": 1,
|
|
82
|
+
"maxRetries": 1
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "T002",
|
|
86
|
+
"title": "[IMPL] Add the copy button and copied-state confirmation",
|
|
87
|
+
"type": "IMPL",
|
|
88
|
+
"phase": 1,
|
|
89
|
+
"parallel": false,
|
|
90
|
+
"dependsOn": [
|
|
91
|
+
"T001"
|
|
92
|
+
],
|
|
93
|
+
"touches": [
|
|
94
|
+
"share-dialog"
|
|
95
|
+
],
|
|
96
|
+
"files": [
|
|
97
|
+
"src/features/share/ShareDialog.tsx"
|
|
98
|
+
],
|
|
99
|
+
"run": [
|
|
100
|
+
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
101
|
+
],
|
|
102
|
+
"checks": [
|
|
103
|
+
"dialog test passes after implementation"
|
|
104
|
+
],
|
|
105
|
+
"acceptance": [
|
|
106
|
+
"The dialog exposes a copy button and confirms the copied state"
|
|
107
|
+
],
|
|
108
|
+
"verification": [
|
|
109
|
+
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
110
|
+
],
|
|
111
|
+
"evidence": [
|
|
112
|
+
"Passing targeted test output",
|
|
113
|
+
"Checkpoint summary"
|
|
114
|
+
],
|
|
115
|
+
"context": {
|
|
116
|
+
"readFiles": [
|
|
117
|
+
"design.md",
|
|
118
|
+
"tasks.md",
|
|
119
|
+
"src/features/share/ShareDialog.test.tsx"
|
|
120
|
+
],
|
|
121
|
+
"commands": [
|
|
122
|
+
"npm test -- src/features/share/ShareDialog.test.tsx"
|
|
123
|
+
],
|
|
124
|
+
"notes": [
|
|
125
|
+
"Keep the patch inside the existing dialog"
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
"reviews": {
|
|
129
|
+
"spec": "pass",
|
|
130
|
+
"code": "pass"
|
|
131
|
+
},
|
|
132
|
+
"status": "passed",
|
|
133
|
+
"attempts": 1,
|
|
134
|
+
"maxRetries": 1
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"id": "T003",
|
|
138
|
+
"title": "Run targeted checks and collect fresh evidence",
|
|
139
|
+
"type": "OTHER",
|
|
140
|
+
"phase": 2,
|
|
141
|
+
"parallel": false,
|
|
142
|
+
"dependsOn": [
|
|
143
|
+
"T002"
|
|
144
|
+
],
|
|
145
|
+
"touches": [
|
|
146
|
+
"quality-gates"
|
|
147
|
+
],
|
|
148
|
+
"files": [
|
|
149
|
+
"src/features/share/ShareDialog.tsx",
|
|
150
|
+
"src/features/share/ShareDialog.test.tsx"
|
|
151
|
+
],
|
|
152
|
+
"run": [
|
|
153
|
+
"npm test -- src/features/share/ShareDialog.test.tsx",
|
|
154
|
+
"npm run lint -- src/features/share/ShareDialog.tsx"
|
|
155
|
+
],
|
|
156
|
+
"checks": [
|
|
157
|
+
"targeted test passes",
|
|
158
|
+
"lint passes"
|
|
159
|
+
],
|
|
160
|
+
"acceptance": [
|
|
161
|
+
"Fresh verification evidence is ready for cc-check"
|
|
162
|
+
],
|
|
163
|
+
"verification": [
|
|
164
|
+
"npm test -- src/features/share/ShareDialog.test.tsx",
|
|
165
|
+
"npm run lint -- src/features/share/ShareDialog.tsx"
|
|
166
|
+
],
|
|
167
|
+
"evidence": [
|
|
168
|
+
"Passing targeted test output",
|
|
169
|
+
"Clean lint output"
|
|
170
|
+
],
|
|
171
|
+
"context": {
|
|
172
|
+
"readFiles": [
|
|
173
|
+
"tasks.md",
|
|
174
|
+
"task-manifest.json"
|
|
175
|
+
],
|
|
176
|
+
"commands": [
|
|
177
|
+
"npm test -- src/features/share/ShareDialog.test.tsx",
|
|
178
|
+
"npm run lint -- src/features/share/ShareDialog.tsx"
|
|
179
|
+
],
|
|
180
|
+
"notes": [
|
|
181
|
+
"Collect only fresh evidence from this run"
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
"reviews": {
|
|
185
|
+
"spec": "pass",
|
|
186
|
+
"code": "pass"
|
|
187
|
+
},
|
|
188
|
+
"status": "passed",
|
|
189
|
+
"attempts": 1,
|
|
190
|
+
"maxRetries": 1
|
|
191
|
+
}
|
|
192
|
+
],
|
|
193
|
+
"metadata": {
|
|
194
|
+
"source": "tasks.md",
|
|
195
|
+
"generatedBy": "docs-example",
|
|
196
|
+
"planVersion": 1
|
|
197
|
+
},
|
|
198
|
+
"deferredQuestions": [
|
|
199
|
+
"If users still miss the copied-state confirmation, open RM-002 for richer feedback."
|
|
200
|
+
]
|
|
201
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# TASKS
|
|
2
|
+
|
|
3
|
+
## Plan Meta
|
|
4
|
+
|
|
5
|
+
- Requirement version: `REQ-001.v1`
|
|
6
|
+
- Design version: `design.v1`
|
|
7
|
+
- CC-Plan skill version: `3.5.4`
|
|
8
|
+
- Source roadmap item: `RM-001`
|
|
9
|
+
- Source roadmap version: `roadmap.v1`
|
|
10
|
+
|
|
11
|
+
## Execution Handoff
|
|
12
|
+
|
|
13
|
+
- Canonical design: `design.md`
|
|
14
|
+
- Execution mode: `single-path`
|
|
15
|
+
- Frozen decisions:
|
|
16
|
+
- copy from the existing invite URL source
|
|
17
|
+
- keep the patch inside the current dialog
|
|
18
|
+
- leave richer feedback for a future requirement if needed
|
|
19
|
+
- Read first:
|
|
20
|
+
- `design.md`
|
|
21
|
+
- `src/features/share/ShareDialog.tsx`
|
|
22
|
+
- `src/features/share/ShareDialog.test.tsx`
|
|
23
|
+
- Commands to trust:
|
|
24
|
+
- `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
25
|
+
- `npm run lint -- src/features/share/ShareDialog.tsx`
|
|
26
|
+
- Do not re-decide:
|
|
27
|
+
- dialog structure
|
|
28
|
+
- invite URL source
|
|
29
|
+
- share-service contracts
|
|
30
|
+
- Parallel boundaries: none; this patch is intentionally serial
|
|
31
|
+
|
|
32
|
+
> 顶部 handoff 只保留执行者必须知道的现实,不重复讲背景故事。
|
|
33
|
+
|
|
34
|
+
## Phase 1: Foundation
|
|
35
|
+
|
|
36
|
+
- [x] T001 [TEST] Add a failing dialog test for the missing copy action (dependsOn:none) `src/features/share/ShareDialog.test.tsx`
|
|
37
|
+
Goal: 证明当前 share dialog 还不能一键复制 invite link。
|
|
38
|
+
Files: `src/features/share/ShareDialog.test.tsx`
|
|
39
|
+
Read first: `design.md`, `src/features/share/ShareDialog.tsx`
|
|
40
|
+
Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
41
|
+
Evidence: failing output that shows the missing button / action
|
|
42
|
+
Ready when: 没有上游依赖,且现有 dialog test 已可运行
|
|
43
|
+
|
|
44
|
+
- [x] T002 [IMPL] Add the copy button and copied-state confirmation (dependsOn:T001) `src/features/share/ShareDialog.tsx`
|
|
45
|
+
Goal: 用最小实现让 T001 转绿,并保持当前 share contract 不变。
|
|
46
|
+
Files: `src/features/share/ShareDialog.tsx`
|
|
47
|
+
Read first: `design.md`, `src/features/share/ShareDialog.test.tsx`
|
|
48
|
+
Verification: `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
49
|
+
Evidence: passing output + checkpoint + review notes
|
|
50
|
+
Ready when: T001 已经见红,且当前 touched files 没有外部依赖阻塞
|
|
51
|
+
|
|
52
|
+
## Phase 2: Verify
|
|
53
|
+
|
|
54
|
+
- [x] T003 Run targeted checks and collect fresh evidence (dependsOn:T002) `share dialog quality gates`
|
|
55
|
+
Goal: 为 `cc-check` 准备本次实现的真实验证证据。
|
|
56
|
+
Files: `src/features/share/ShareDialog.tsx`, `src/features/share/ShareDialog.test.tsx`
|
|
57
|
+
Read first: `tasks.md`, `task-manifest.json`
|
|
58
|
+
Verification:
|
|
59
|
+
- `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
60
|
+
- `npm run lint -- src/features/share/ShareDialog.tsx`
|
|
61
|
+
Evidence: passing test output + clean lint output
|
|
62
|
+
Ready when: T002 已完成,且 review gate 已可补齐
|
|
63
|
+
|
|
64
|
+
> `[P]` 只表示“依赖满足后有资格并行”,不表示可以无脑同时开发。
|
|
65
|
+
|
|
66
|
+
## Task Quality Bar
|
|
67
|
+
|
|
68
|
+
一个好的 task block 至少让执行者立刻知道:
|
|
69
|
+
|
|
70
|
+
- 现在为什么轮到它做
|
|
71
|
+
- 做完后现实会发生什么变化
|
|
72
|
+
- 用哪条命令证明它完成
|
|
73
|
+
- 要留下什么证据给 `cc-check`
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"changeId": "REQ-001",
|
|
3
|
+
"verdict": "pass",
|
|
4
|
+
"overall": "pass",
|
|
5
|
+
"summary": "verdict=pass quick=2/2 strict=0/0 review=pass",
|
|
6
|
+
"quickGates": [
|
|
7
|
+
{
|
|
8
|
+
"name": "targeted-tests",
|
|
9
|
+
"status": "pass",
|
|
10
|
+
"command": "npm test -- src/features/share/ShareDialog.test.tsx",
|
|
11
|
+
"summary": "share dialog targeted tests passed"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "lint",
|
|
15
|
+
"status": "pass",
|
|
16
|
+
"command": "npm run lint -- src/features/share/ShareDialog.tsx",
|
|
17
|
+
"summary": "lint passed for the touched dialog file"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"strictGates": [],
|
|
21
|
+
"review": {
|
|
22
|
+
"status": "pass",
|
|
23
|
+
"summary": "Task review proof and requirement-level diff review both passed",
|
|
24
|
+
"details": "T001-T003 have matching spec/code review proof and the diff stays inside the approved tiny-design boundary.",
|
|
25
|
+
"taskReviews": {
|
|
26
|
+
"status": "pass",
|
|
27
|
+
"required": true,
|
|
28
|
+
"summary": "All completed tasks carry spec/code proof",
|
|
29
|
+
"reviewers": [],
|
|
30
|
+
"findings": []
|
|
31
|
+
},
|
|
32
|
+
"diffReview": {
|
|
33
|
+
"status": "pass",
|
|
34
|
+
"required": false,
|
|
35
|
+
"summary": "No blocking requirement-level findings",
|
|
36
|
+
"reviewers": [],
|
|
37
|
+
"findings": []
|
|
38
|
+
},
|
|
39
|
+
"findings": []
|
|
40
|
+
},
|
|
41
|
+
"blockingFindings": [],
|
|
42
|
+
"reroute": "none",
|
|
43
|
+
"timestamp": "2026-04-15T11:20:00.000Z"
|
|
44
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 2,
|
|
3
|
+
"lastSyncedAt": "2026-04-19",
|
|
4
|
+
"backlogMeta": {
|
|
5
|
+
"roadmapVersion": "roadmap.v1",
|
|
6
|
+
"skillVersion": "4.3.2",
|
|
7
|
+
"currentFocusStage": "Stage 1"
|
|
8
|
+
},
|
|
9
|
+
"dependencyHandoff": {
|
|
10
|
+
"serialSpine": "RM-001 -> RM-002",
|
|
11
|
+
"parallelReadyNextWave": "none until RM-001 proves the copy action shape",
|
|
12
|
+
"notesOnBlockers": "RM-002 should reuse the final interaction contract from RM-001, not race it"
|
|
13
|
+
},
|
|
14
|
+
"items": [
|
|
15
|
+
{
|
|
16
|
+
"rmId": "RM-001",
|
|
17
|
+
"item": "Add one-click copy action to the share dialog",
|
|
18
|
+
"stage": "Stage 1",
|
|
19
|
+
"priority": "P1",
|
|
20
|
+
"primaryCapability": "cap-invite-links",
|
|
21
|
+
"secondaryCapabilities": [],
|
|
22
|
+
"expectedSpecDelta": "tighten invite-link copy truth",
|
|
23
|
+
"dependsOn": [],
|
|
24
|
+
"status": "In review",
|
|
25
|
+
"req": "REQ-001",
|
|
26
|
+
"progress": "100%",
|
|
27
|
+
"backlog": {
|
|
28
|
+
"capabilityGap": "share dialog exposes invite URL but not direct copy action",
|
|
29
|
+
"evidence": "repeated support friction",
|
|
30
|
+
"parallelWith": [],
|
|
31
|
+
"unknowns": "copied-state feedback shape",
|
|
32
|
+
"nextDecision": "freeze tiny design and execute",
|
|
33
|
+
"ready": true,
|
|
34
|
+
"whyNow": "it removes the first visible collaboration friction in the beta flow",
|
|
35
|
+
"successSignal": "users can copy the invite link with one click",
|
|
36
|
+
"entryConstraints": "no backend changes, no share dialog redesign",
|
|
37
|
+
"openRisks": "clipboard failure copy may still need follow-up UX",
|
|
38
|
+
"firstPlanningQuestion": "can this stay a tiny-design patch without changing contracts?",
|
|
39
|
+
"requiredContextToLoad": "current share dialog, current invite URL source, existing tests",
|
|
40
|
+
"whyReadyNow": "the ask is narrow, the evidence is real, and the dependency surface is already known",
|
|
41
|
+
"parked": false,
|
|
42
|
+
"parkedReason": "",
|
|
43
|
+
"triggerToReopen": "",
|
|
44
|
+
"missingEvidence": ""
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"rmId": "RM-002",
|
|
49
|
+
"item": "Add copied-state feedback to the share dialog",
|
|
50
|
+
"stage": "Stage 1",
|
|
51
|
+
"priority": "P2",
|
|
52
|
+
"primaryCapability": "cap-invite-links",
|
|
53
|
+
"secondaryCapabilities": [],
|
|
54
|
+
"expectedSpecDelta": "extend invite-link feedback truth",
|
|
55
|
+
"dependsOn": [
|
|
56
|
+
"RM-001"
|
|
57
|
+
],
|
|
58
|
+
"status": "Planned",
|
|
59
|
+
"req": "",
|
|
60
|
+
"progress": "0%",
|
|
61
|
+
"backlog": {
|
|
62
|
+
"capabilityGap": "invite links lack durable copied-state feedback after action completion",
|
|
63
|
+
"evidence": "likely useful after RM-001",
|
|
64
|
+
"parallelWith": [],
|
|
65
|
+
"unknowns": "toast vs inline state",
|
|
66
|
+
"nextDecision": "decide after first patch ships",
|
|
67
|
+
"ready": false,
|
|
68
|
+
"whyNow": "",
|
|
69
|
+
"successSignal": "",
|
|
70
|
+
"entryConstraints": "",
|
|
71
|
+
"openRisks": "",
|
|
72
|
+
"firstPlanningQuestion": "",
|
|
73
|
+
"requiredContextToLoad": "",
|
|
74
|
+
"whyReadyNow": "",
|
|
75
|
+
"parked": false,
|
|
76
|
+
"parkedReason": "",
|
|
77
|
+
"triggerToReopen": "",
|
|
78
|
+
"missingEvidence": ""
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"rmId": "RM-004",
|
|
83
|
+
"item": "Collaboration analytics follow-up",
|
|
84
|
+
"stage": "",
|
|
85
|
+
"priority": "",
|
|
86
|
+
"primaryCapability": "",
|
|
87
|
+
"secondaryCapabilities": [],
|
|
88
|
+
"expectedSpecDelta": "",
|
|
89
|
+
"dependsOn": [],
|
|
90
|
+
"status": "",
|
|
91
|
+
"req": "",
|
|
92
|
+
"progress": "",
|
|
93
|
+
"backlog": {
|
|
94
|
+
"capabilityGap": "",
|
|
95
|
+
"evidence": "",
|
|
96
|
+
"parallelWith": [],
|
|
97
|
+
"unknowns": "",
|
|
98
|
+
"nextDecision": "",
|
|
99
|
+
"ready": false,
|
|
100
|
+
"whyNow": "",
|
|
101
|
+
"successSignal": "",
|
|
102
|
+
"entryConstraints": "",
|
|
103
|
+
"openRisks": "",
|
|
104
|
+
"firstPlanningQuestion": "",
|
|
105
|
+
"requiredContextToLoad": "",
|
|
106
|
+
"whyReadyNow": "",
|
|
107
|
+
"parked": true,
|
|
108
|
+
"parkedReason": "collaboration analytics is premature before Stage 1 and 2 prove usage",
|
|
109
|
+
"triggerToReopen": "repeated invite usage after beta activation",
|
|
110
|
+
"missingEvidence": "stable collaboration volume"
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -euo pipefail
|
|
4
|
+
|
|
5
|
+
# ------------------------------------------------------------
|
|
6
|
+
# 校验 examples 与当前 skill 版本链是否仍然对齐
|
|
7
|
+
# ------------------------------------------------------------
|
|
8
|
+
|
|
9
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
|
10
|
+
BINDINGS_FILE="${EXAMPLE_BINDINGS_FILE:-$ROOT_DIR/docs/examples/example-bindings.json}"
|
|
11
|
+
|
|
12
|
+
if [[ ! -f "$BINDINGS_FILE" ]]; then
|
|
13
|
+
echo "Missing bindings file: $BINDINGS_FILE" >&2
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
skill_version() {
|
|
18
|
+
local skill="$1"
|
|
19
|
+
local file="$ROOT_DIR/.claude/skills/$skill/SKILL.md"
|
|
20
|
+
if [[ ! -f "$file" ]]; then
|
|
21
|
+
echo "Missing skill file: $file" >&2
|
|
22
|
+
exit 1
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
sed -n 's/^version: //p' "$file" | head -n 1
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
assert_contains() {
|
|
29
|
+
local file="$1"
|
|
30
|
+
local needle="$2"
|
|
31
|
+
if ! rg -F --quiet -- "$needle" "$file"; then
|
|
32
|
+
echo "Expected '$needle' in $file" >&2
|
|
33
|
+
exit 1
|
|
34
|
+
fi
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
ROADMAP_VERSION="$(skill_version cc-roadmap)"
|
|
38
|
+
REQ_PLAN_VERSION="$(skill_version cc-plan)"
|
|
39
|
+
INVESTIGATE_VERSION="$(skill_version cc-investigate)"
|
|
40
|
+
REQ_DO_VERSION="$(skill_version cc-do)"
|
|
41
|
+
REQ_CHECK_VERSION="$(skill_version cc-check)"
|
|
42
|
+
REQ_ACT_VERSION="$(skill_version cc-act)"
|
|
43
|
+
|
|
44
|
+
for pair in \
|
|
45
|
+
"cc-roadmap:$ROADMAP_VERSION" \
|
|
46
|
+
"cc-plan:$REQ_PLAN_VERSION" \
|
|
47
|
+
"cc-investigate:$INVESTIGATE_VERSION" \
|
|
48
|
+
"cc-do:$REQ_DO_VERSION" \
|
|
49
|
+
"cc-check:$REQ_CHECK_VERSION" \
|
|
50
|
+
"cc-act:$REQ_ACT_VERSION"
|
|
51
|
+
do
|
|
52
|
+
skill="${pair%%:*}"
|
|
53
|
+
version="${pair##*:}"
|
|
54
|
+
expected="$(jq -r --arg skill "$skill" '.skills[$skill]' "$BINDINGS_FILE")"
|
|
55
|
+
if [[ "$expected" != "$version" ]]; then
|
|
56
|
+
echo "Binding mismatch for $skill: bindings=$expected current=$version" >&2
|
|
57
|
+
exit 1
|
|
58
|
+
fi
|
|
59
|
+
done
|
|
60
|
+
|
|
61
|
+
while IFS= read -r encoded; do
|
|
62
|
+
example_id="$(jq -r '.id' <<<"$encoded")"
|
|
63
|
+
readme="$ROOT_DIR/$(jq -r '.readme' <<<"$encoded")"
|
|
64
|
+
root="$ROOT_DIR/$(jq -r '.root' <<<"$encoded")"
|
|
65
|
+
change_dir="$ROOT_DIR/$(jq -r '.changeDir' <<<"$encoded")"
|
|
66
|
+
planning_dir="$change_dir/planning"
|
|
67
|
+
review_dir="$change_dir/review"
|
|
68
|
+
handoff_dir="$change_dir/handoff"
|
|
69
|
+
|
|
70
|
+
for file in "$readme" "$root/ROADMAP.md" "$root/BACKLOG.md" "$root/roadmap-tracking.json" "$planning_dir/design.md" "$planning_dir/tasks.md" "$planning_dir/task-manifest.json"; do
|
|
71
|
+
if [[ ! -f "$file" ]]; then
|
|
72
|
+
echo "Example $example_id is missing required file: $file" >&2
|
|
73
|
+
exit 1
|
|
74
|
+
fi
|
|
75
|
+
done
|
|
76
|
+
|
|
77
|
+
assert_contains "$root/ROADMAP.md" "- Skill version: \`$ROADMAP_VERSION\`"
|
|
78
|
+
assert_contains "$root/ROADMAP.md" "- Tracking source: \`roadmap-tracking.json\`"
|
|
79
|
+
assert_contains "$root/BACKLOG.md" "- Skill version: \`$ROADMAP_VERSION\`"
|
|
80
|
+
assert_contains "$root/BACKLOG.md" "- Tracking source: \`roadmap-tracking.json\`"
|
|
81
|
+
assert_contains "$root/BACKLOG.md" "| RM-ID | Title | Source Stage | Priority | Primary Capability | Secondary Capabilities | Capability Gap | Expected Spec Delta | Evidence | Depends On | Parallel With | Unknowns | Next Decision | Ready |"
|
|
82
|
+
assert_contains "$root/BACKLOG.md" "## Ready For Req-Plan"
|
|
83
|
+
assert_contains "$root/BACKLOG.md" " - Primary Capability:"
|
|
84
|
+
assert_contains "$root/BACKLOG.md" " - Expected spec delta:"
|
|
85
|
+
jq -er '.version == 2 and (.items | length) > 0 and (.backlogMeta | type == "object") and (.dependencyHandoff | type == "object") and any(.items[]; .backlog != null)' "$root/roadmap-tracking.json" >/dev/null
|
|
86
|
+
assert_contains "$planning_dir/design.md" "- CC-Plan skill version: \`$REQ_PLAN_VERSION\`"
|
|
87
|
+
assert_contains "$planning_dir/tasks.md" "- CC-Plan skill version: \`$REQ_PLAN_VERSION\`"
|
|
88
|
+
|
|
89
|
+
jq -er --arg roadmap "$ROADMAP_VERSION" --arg reqplan "$REQ_PLAN_VERSION" '
|
|
90
|
+
(.sourceRoadmap.roadmapSkillVersion // $roadmap) == $roadmap and
|
|
91
|
+
(.planningMeta.reqPlanSkillVersion // $reqplan) == $reqplan
|
|
92
|
+
' "$planning_dir/task-manifest.json" >/dev/null
|
|
93
|
+
|
|
94
|
+
assert_contains "$readme" "## Example Meta"
|
|
95
|
+
assert_contains "$readme" "\`cc-roadmap@$ROADMAP_VERSION\`"
|
|
96
|
+
assert_contains "$readme" "\`cc-plan@$REQ_PLAN_VERSION\`"
|
|
97
|
+
assert_contains "$readme" "\`cc-do@$REQ_DO_VERSION\`"
|
|
98
|
+
assert_contains "$readme" "\`cc-check@$REQ_CHECK_VERSION\`"
|
|
99
|
+
|
|
100
|
+
if jq -e '.covers | index("cc-act")' <<<"$encoded" >/dev/null; then
|
|
101
|
+
assert_contains "$readme" "\`cc-act@$REQ_ACT_VERSION\`"
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
if [[ -f "$review_dir/report-card.json" ]]; then
|
|
105
|
+
"$ROOT_DIR/.claude/skills/cc-check/scripts/verify-gate.sh" --report "$review_dir/report-card.json" >/dev/null
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
if jq -e '.covers | index("cc-act")' <<<"$encoded" >/dev/null; then
|
|
109
|
+
if [[ ! -f "$handoff_dir/pr-brief.md" && ! -f "$handoff_dir/resume-index.md" && ! -f "$handoff_dir/release-note.md" && ! -f "$handoff_dir/status.md" ]]; then
|
|
110
|
+
echo "Example $example_id is missing a final handoff file under $handoff_dir" >&2
|
|
111
|
+
exit 1
|
|
112
|
+
fi
|
|
113
|
+
fi
|
|
114
|
+
done < <(jq -c '.examples[]' "$BINDINGS_FILE")
|
|
115
|
+
|
|
116
|
+
echo "Example bindings are in sync with current skill versions"
|