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-003`
|
|
6
|
+
- Roadmap item: `RM-020`
|
|
7
|
+
- Current state: verified and ready for `local-handoff`
|
|
8
|
+
|
|
9
|
+
## What Is True Now
|
|
10
|
+
|
|
11
|
+
- The admin audit summary panel can export the currently visible summary rows as CSV
|
|
12
|
+
- The patch stayed inside the approved `tiny-design` boundary
|
|
13
|
+
- Fresh targeted test and lint evidence both passed
|
|
14
|
+
- `cc-check` returned `pass`
|
|
15
|
+
|
|
16
|
+
## Ship Decision
|
|
17
|
+
|
|
18
|
+
- Recommended mode: `local-handoff`
|
|
19
|
+
- Why now: the work is verified, but remote push / PR creation is intentionally unavailable in this environment
|
|
20
|
+
- Why not others:
|
|
21
|
+
- not `create-pr`: remote access is unavailable
|
|
22
|
+
- not `update-pr`: there is no existing PR to refresh
|
|
23
|
+
- not `post-merge-closeout`: the change is not merged yet
|
|
24
|
+
|
|
25
|
+
## Docs And Follow-Up
|
|
26
|
+
|
|
27
|
+
- README / release docs: unchanged; this is not a public release step
|
|
28
|
+
- Backlog writeback: if admins request additional export formats, open a new roadmap item
|
|
29
|
+
- Next entry point: use `resume-index.md` to pick up the branch when remote access becomes available
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# DESIGN
|
|
2
|
+
|
|
3
|
+
## Document Meta
|
|
4
|
+
|
|
5
|
+
- Requirement version: `REQ-003.v1`
|
|
6
|
+
- Design version: `design.v1`
|
|
7
|
+
- CC-Plan skill version: `3.5.4`
|
|
8
|
+
- Requirement ID: `REQ-003`
|
|
9
|
+
- Design mode: `tiny-design`
|
|
10
|
+
- Why this stays `tiny-design`: the patch adds one export action inside the existing admin audit UI without changing data contracts
|
|
11
|
+
- Approval status: `approved`
|
|
12
|
+
- Source roadmap item: `RM-020`
|
|
13
|
+
- Source roadmap version: `roadmap.v3`
|
|
14
|
+
|
|
15
|
+
## Source Handoff
|
|
16
|
+
|
|
17
|
+
- Why now: admins need a lightweight way to take weekly activity summaries out of the UI
|
|
18
|
+
- Inherited success signal: admins can download the summary without manual row copying
|
|
19
|
+
- Inherited kill signal: if export requires a shared reporting pipeline, reopen planning
|
|
20
|
+
- Inherited non-goals: no JSON export mode, no scheduled reporting
|
|
21
|
+
- Upstream evidence: repeated internal admin requests during weekly reviews
|
|
22
|
+
|
|
23
|
+
## Frozen Design Card
|
|
24
|
+
|
|
25
|
+
- Change: add a `Download summary` action that exports the visible audit summary rows as CSV
|
|
26
|
+
- Keep out: no multi-format export and no shared reporting backend
|
|
27
|
+
- Touched files:
|
|
28
|
+
- `src/admin/AuditSummaryPanel.tsx`
|
|
29
|
+
- `src/admin/AuditSummaryPanel.test.tsx`
|
|
30
|
+
- Contract changes: none; reuse the existing summary rows already shown in the panel
|
|
31
|
+
- Key decisions that `cc-do` must not re-decide:
|
|
32
|
+
- export only what is already visible in the panel
|
|
33
|
+
- use CSV as the single output format
|
|
34
|
+
- keep the action inside the current admin panel
|
|
35
|
+
- Upgrade trigger to `full-design`: if export needs background generation or new reporting contracts
|
|
36
|
+
|
|
37
|
+
## Validation
|
|
38
|
+
|
|
39
|
+
- Primary check: targeted panel test proves the export action is available and uses current summary rows
|
|
40
|
+
- Secondary checks:
|
|
41
|
+
- existing audit summary rendering stays green
|
|
42
|
+
- lint passes for the touched panel
|
|
43
|
+
- Evidence to collect:
|
|
44
|
+
- failing test before implementation
|
|
45
|
+
- passing test and lint after implementation
|
|
46
|
+
|
|
47
|
+
## Main Risk
|
|
48
|
+
|
|
49
|
+
- Risk: admins may soon ask for more export formats
|
|
50
|
+
- Mitigation: treat JSON or scheduled exports as later roadmap items
|
|
51
|
+
|
|
52
|
+
## Review Gate
|
|
53
|
+
|
|
54
|
+
- Placeholder scan: pass
|
|
55
|
+
- Consistency scan: pass
|
|
56
|
+
- Scope scan: pass
|
|
57
|
+
- Ambiguity scan: pass
|
|
58
|
+
- Feasibility scan: pass
|
|
59
|
+
- Final recommendation: approved as `tiny-design`
|
|
60
|
+
|
|
61
|
+
## Approval
|
|
62
|
+
|
|
63
|
+
- User approval status: approved
|
|
64
|
+
- Deferred questions:
|
|
65
|
+
- if admins ask for machine-readable export next, open a separate requirement
|
|
66
|
+
|
|
67
|
+
## First-Read Test
|
|
68
|
+
|
|
69
|
+
- 一眼能看出这次为什么够小
|
|
70
|
+
- 一眼能看出什么情况会逼它升级成 `full-design`
|
|
71
|
+
- `cc-do` 看完不会继续追问“导出的字段从哪里来”
|
package/docs/examples/local-handoff/changes/REQ-003-audit-log-export/planning/task-manifest.json
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"changeId": "REQ-003",
|
|
3
|
+
"goal": "Add a local CSV export for the existing audit summary panel without introducing new reporting contracts.",
|
|
4
|
+
"createdAt": "2026-04-16T13:00:00.000Z",
|
|
5
|
+
"updatedAt": "2026-04-16T14:20:00.000Z",
|
|
6
|
+
"requirementId": "REQ-003",
|
|
7
|
+
"requirementVersion": "REQ-003.v1",
|
|
8
|
+
"currentTaskId": null,
|
|
9
|
+
"activePhase": null,
|
|
10
|
+
"tasks": [
|
|
11
|
+
{
|
|
12
|
+
"id": "T001",
|
|
13
|
+
"title": "[TEST] Add a failing test for the missing download action",
|
|
14
|
+
"type": "TEST",
|
|
15
|
+
"phase": 1,
|
|
16
|
+
"parallel": false,
|
|
17
|
+
"dependsOn": [],
|
|
18
|
+
"touches": ["audit-summary", "tests"],
|
|
19
|
+
"files": ["src/admin/AuditSummaryPanel.test.tsx"],
|
|
20
|
+
"run": ["npm test -- src/admin/AuditSummaryPanel.test.tsx"],
|
|
21
|
+
"checks": ["test fails before implementation"],
|
|
22
|
+
"acceptance": ["the missing download action is reproduced as a failing test"],
|
|
23
|
+
"verification": ["npm test -- src/admin/AuditSummaryPanel.test.tsx"],
|
|
24
|
+
"evidence": ["failing test output"],
|
|
25
|
+
"context": {
|
|
26
|
+
"readFiles": ["design.md", "tasks.md", "src/admin/AuditSummaryPanel.tsx"],
|
|
27
|
+
"commands": ["npm test -- src/admin/AuditSummaryPanel.test.tsx"],
|
|
28
|
+
"notes": ["stay inside the current audit summary panel"]
|
|
29
|
+
},
|
|
30
|
+
"reviews": { "spec": "pass", "code": "pass" },
|
|
31
|
+
"status": "passed",
|
|
32
|
+
"attempts": 1,
|
|
33
|
+
"maxRetries": 1
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "T002",
|
|
37
|
+
"title": "[IMPL] Add the download summary action",
|
|
38
|
+
"type": "IMPL",
|
|
39
|
+
"phase": 1,
|
|
40
|
+
"parallel": false,
|
|
41
|
+
"dependsOn": ["T001"],
|
|
42
|
+
"touches": ["audit-summary"],
|
|
43
|
+
"files": ["src/admin/AuditSummaryPanel.tsx"],
|
|
44
|
+
"run": ["npm test -- src/admin/AuditSummaryPanel.test.tsx"],
|
|
45
|
+
"checks": ["panel test passes"],
|
|
46
|
+
"acceptance": ["admins can trigger a CSV download from the existing summary panel"],
|
|
47
|
+
"verification": ["npm test -- src/admin/AuditSummaryPanel.test.tsx"],
|
|
48
|
+
"evidence": ["passing test output", "checkpoint summary"],
|
|
49
|
+
"context": {
|
|
50
|
+
"readFiles": ["design.md", "tasks.md", "src/admin/AuditSummaryPanel.test.tsx"],
|
|
51
|
+
"commands": ["npm test -- src/admin/AuditSummaryPanel.test.tsx"],
|
|
52
|
+
"notes": ["reuse visible summary rows as the export source"]
|
|
53
|
+
},
|
|
54
|
+
"reviews": { "spec": "pass", "code": "pass" },
|
|
55
|
+
"status": "passed",
|
|
56
|
+
"attempts": 1,
|
|
57
|
+
"maxRetries": 1
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "T003",
|
|
61
|
+
"title": "Run targeted checks and collect handoff evidence",
|
|
62
|
+
"type": "OTHER",
|
|
63
|
+
"phase": 2,
|
|
64
|
+
"parallel": false,
|
|
65
|
+
"dependsOn": ["T002"],
|
|
66
|
+
"touches": ["quality-gates"],
|
|
67
|
+
"files": ["src/admin/AuditSummaryPanel.tsx", "src/admin/AuditSummaryPanel.test.tsx"],
|
|
68
|
+
"run": [
|
|
69
|
+
"npm test -- src/admin/AuditSummaryPanel.test.tsx",
|
|
70
|
+
"npm run lint -- src/admin/AuditSummaryPanel.tsx"
|
|
71
|
+
],
|
|
72
|
+
"checks": ["targeted tests pass", "lint passes"],
|
|
73
|
+
"acceptance": ["fresh verification evidence exists for local handoff"],
|
|
74
|
+
"verification": [
|
|
75
|
+
"npm test -- src/admin/AuditSummaryPanel.test.tsx",
|
|
76
|
+
"npm run lint -- src/admin/AuditSummaryPanel.tsx"
|
|
77
|
+
],
|
|
78
|
+
"evidence": ["passing test output", "clean lint output"],
|
|
79
|
+
"context": {
|
|
80
|
+
"readFiles": ["tasks.md", "task-manifest.json"],
|
|
81
|
+
"commands": [
|
|
82
|
+
"npm test -- src/admin/AuditSummaryPanel.test.tsx",
|
|
83
|
+
"npm run lint -- src/admin/AuditSummaryPanel.tsx"
|
|
84
|
+
],
|
|
85
|
+
"notes": ["remote push is intentionally out of scope for this example"]
|
|
86
|
+
},
|
|
87
|
+
"reviews": { "spec": "pass", "code": "pass" },
|
|
88
|
+
"status": "passed",
|
|
89
|
+
"attempts": 1,
|
|
90
|
+
"maxRetries": 1
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"metadata": {
|
|
94
|
+
"source": "tasks.md",
|
|
95
|
+
"generatedBy": "docs-example",
|
|
96
|
+
"planVersion": 1
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# TASKS
|
|
2
|
+
|
|
3
|
+
## Plan Meta
|
|
4
|
+
|
|
5
|
+
- Requirement version: `REQ-003.v1`
|
|
6
|
+
- Design version: `design.v1`
|
|
7
|
+
- CC-Plan skill version: `3.5.4`
|
|
8
|
+
- Source roadmap item: `RM-020`
|
|
9
|
+
- Source roadmap version: `roadmap.v3`
|
|
10
|
+
|
|
11
|
+
## Execution Handoff
|
|
12
|
+
|
|
13
|
+
- Canonical design: `design.md`
|
|
14
|
+
- Execution mode: `single-path`
|
|
15
|
+
- Frozen decisions:
|
|
16
|
+
- export only the visible audit summary rows
|
|
17
|
+
- CSV is the only format in this requirement
|
|
18
|
+
- Read first:
|
|
19
|
+
- `design.md`
|
|
20
|
+
- `src/admin/AuditSummaryPanel.tsx`
|
|
21
|
+
- `src/admin/AuditSummaryPanel.test.tsx`
|
|
22
|
+
- Commands to trust:
|
|
23
|
+
- `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
24
|
+
- `npm run lint -- src/admin/AuditSummaryPanel.tsx`
|
|
25
|
+
- Do not re-decide:
|
|
26
|
+
- summary row source
|
|
27
|
+
- export format
|
|
28
|
+
- panel placement
|
|
29
|
+
- Parallel boundaries: none
|
|
30
|
+
|
|
31
|
+
## Phase 1: Foundation
|
|
32
|
+
|
|
33
|
+
- [x] T001 [TEST] Add a failing test for the missing download action (dependsOn:none) `src/admin/AuditSummaryPanel.test.tsx`
|
|
34
|
+
Goal: 证明现在还没有可下载的 summary export。
|
|
35
|
+
Files: `src/admin/AuditSummaryPanel.test.tsx`
|
|
36
|
+
Read first: `design.md`, `src/admin/AuditSummaryPanel.tsx`
|
|
37
|
+
Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
38
|
+
Evidence: failing output
|
|
39
|
+
Ready when: 当前 audit summary test 已可运行
|
|
40
|
+
|
|
41
|
+
- [x] T002 [IMPL] Add the download summary action (dependsOn:T001) `src/admin/AuditSummaryPanel.tsx`
|
|
42
|
+
Goal: 用最小实现让 summary export 真的可用。
|
|
43
|
+
Files: `src/admin/AuditSummaryPanel.tsx`
|
|
44
|
+
Read first: `design.md`, `src/admin/AuditSummaryPanel.test.tsx`
|
|
45
|
+
Verification: `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
46
|
+
Evidence: passing output + checkpoint
|
|
47
|
+
Ready when: T001 已见红
|
|
48
|
+
|
|
49
|
+
## Phase 2: Verify
|
|
50
|
+
|
|
51
|
+
- [x] T003 Run targeted checks and collect handoff evidence (dependsOn:T002) `audit summary quality gates`
|
|
52
|
+
Goal: 为 `cc-check` 和 `cc-act` 留下这次导出改动的真实证据。
|
|
53
|
+
Files: `src/admin/AuditSummaryPanel.tsx`, `src/admin/AuditSummaryPanel.test.tsx`
|
|
54
|
+
Read first: `tasks.md`, `task-manifest.json`
|
|
55
|
+
Verification:
|
|
56
|
+
- `npm test -- src/admin/AuditSummaryPanel.test.tsx`
|
|
57
|
+
- `npm run lint -- src/admin/AuditSummaryPanel.tsx`
|
|
58
|
+
Evidence: passing output + clean lint output
|
|
59
|
+
Ready when: T002 已完成
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"changeId": "REQ-003",
|
|
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/admin/AuditSummaryPanel.test.tsx",
|
|
11
|
+
"summary": "audit summary panel targeted tests passed"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "lint",
|
|
15
|
+
"status": "pass",
|
|
16
|
+
"command": "npm run lint -- src/admin/AuditSummaryPanel.tsx",
|
|
17
|
+
"summary": "lint passed for the touched panel file"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"strictGates": [],
|
|
21
|
+
"review": {
|
|
22
|
+
"status": "pass",
|
|
23
|
+
"summary": "Task review proof and requirement-level diff review both passed",
|
|
24
|
+
"details": "The diff stayed inside the approved tiny-design scope and verification evidence is fresh.",
|
|
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-16T14:30:00.000Z"
|
|
44
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 2,
|
|
3
|
+
"lastSyncedAt": "2026-04-19",
|
|
4
|
+
"backlogMeta": {
|
|
5
|
+
"roadmapVersion": "roadmap.v2",
|
|
6
|
+
"skillVersion": "4.3.2",
|
|
7
|
+
"currentFocusStage": "Stage 2"
|
|
8
|
+
},
|
|
9
|
+
"dependencyHandoff": {
|
|
10
|
+
"serialSpine": "RM-020",
|
|
11
|
+
"parallelReadyNextWave": "-",
|
|
12
|
+
"notesOnBlockers": "export work stays local-only until the next maintainer has remote access"
|
|
13
|
+
},
|
|
14
|
+
"items": [
|
|
15
|
+
{
|
|
16
|
+
"rmId": "RM-020",
|
|
17
|
+
"item": "Add an audit-log export summary download",
|
|
18
|
+
"stage": "Stage 2",
|
|
19
|
+
"priority": "P1",
|
|
20
|
+
"primaryCapability": "cap-audit-log-export",
|
|
21
|
+
"secondaryCapabilities": [],
|
|
22
|
+
"expectedSpecDelta": "codify local export summary truth",
|
|
23
|
+
"dependsOn": [],
|
|
24
|
+
"status": "Local handoff",
|
|
25
|
+
"req": "REQ-003",
|
|
26
|
+
"progress": "100%",
|
|
27
|
+
"backlog": {
|
|
28
|
+
"capabilityGap": "admins can export raw audit data but not a compact summary for review",
|
|
29
|
+
"evidence": "support escalations keep asking for a lightweight summary bundle",
|
|
30
|
+
"parallelWith": [],
|
|
31
|
+
"unknowns": "csv-only or csv-plus-markdown summary",
|
|
32
|
+
"nextDecision": "resume from local handoff once remote access returns",
|
|
33
|
+
"ready": true,
|
|
34
|
+
"whyNow": "the implementation and proof already exist, only the landing path is deferred",
|
|
35
|
+
"successSignal": "admins can download a concise audit summary without manual spreadsheet cleanup",
|
|
36
|
+
"entryConstraints": "stay local-only and avoid remote automation",
|
|
37
|
+
"openRisks": "handoff may age if schema changes before the next maintainer resumes",
|
|
38
|
+
"firstPlanningQuestion": "does the summary format need another review before remote landing?",
|
|
39
|
+
"requiredContextToLoad": "admin export screen, generated summary fixture, local handoff notes",
|
|
40
|
+
"whyReadyNow": "the requirement is already proven and only needs a clean resume point",
|
|
41
|
+
"parked": false,
|
|
42
|
+
"parkedReason": "",
|
|
43
|
+
"triggerToReopen": "",
|
|
44
|
+
"missingEvidence": ""
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# BACKLOG
|
|
2
|
+
|
|
3
|
+
## Backlog Meta
|
|
4
|
+
|
|
5
|
+
- Roadmap version: `roadmap.v1`
|
|
6
|
+
- Skill version: `4.3.2`
|
|
7
|
+
- Last synced: `2026-04-19`
|
|
8
|
+
- Current focus stage: `Stage 1`
|
|
9
|
+
- Tracking source: `roadmap-tracking.json`
|
|
10
|
+
|
|
11
|
+
## Queue
|
|
12
|
+
|
|
13
|
+
| RM-ID | Title | Source Stage | Priority | Primary Capability | Secondary Capabilities | Capability Gap | Expected Spec Delta | Evidence | Depends On | Parallel With | Unknowns | Next Decision | Ready |
|
|
14
|
+
|------|------|------|------|------|------|------|------|------|------|------|------|------|------|
|
|
15
|
+
| RM-001 | Add one-click copy action to the share dialog | Stage 1 | P1 | cap-invite-links | - | share dialog exposes invite URL but not direct copy action | tighten invite-link copy truth | repeated support friction | - | - | copied-state feedback shape | freeze tiny design and execute | Yes |
|
|
16
|
+
| RM-002 | Add copied-state feedback to the share dialog | Stage 1 | P2 | cap-invite-links | - | invite links lack durable copied-state feedback after action completion | extend invite-link feedback truth | likely useful after RM-001 | RM-001 | - | toast vs inline state | decide after first patch ships | No |
|
|
17
|
+
|
|
18
|
+
## Dependency Handoff
|
|
19
|
+
|
|
20
|
+
- Serial spine: RM-001 -> RM-002
|
|
21
|
+
- Parallel-ready next wave: none until RM-001 proves the copy action shape
|
|
22
|
+
- Notes on blockers: RM-002 should reuse the final interaction contract from RM-001, not race it
|
|
23
|
+
|
|
24
|
+
## Ready For Req-Plan
|
|
25
|
+
|
|
26
|
+
- RM-001:
|
|
27
|
+
- Primary Capability: `cap-invite-links`
|
|
28
|
+
- Secondary Capabilities: `-`
|
|
29
|
+
- Why now: it removes the first visible collaboration friction in the beta flow
|
|
30
|
+
- Success signal: users can copy the invite link with one click
|
|
31
|
+
- Entry constraints: no backend changes, no share dialog redesign
|
|
32
|
+
- Capability gap: share dialog exposes invite URL but not direct copy action
|
|
33
|
+
- Expected spec delta: tighten invite-link copy truth
|
|
34
|
+
- Open risks: clipboard failure copy may still need follow-up UX
|
|
35
|
+
- First planning question: can this stay a tiny-design patch without changing contracts?
|
|
36
|
+
- Required context to load: current share dialog, current invite URL source, existing tests
|
|
37
|
+
- Depends On: `-`
|
|
38
|
+
- Parallel With: `-`
|
|
39
|
+
- Why this is ready now: the ask is narrow, the evidence is real, and the dependency surface is already known
|
|
40
|
+
|
|
41
|
+
## Parked
|
|
42
|
+
|
|
43
|
+
- RM-004:
|
|
44
|
+
- Reason parked: collaboration analytics is premature before Stage 1 and 2 prove usage
|
|
45
|
+
- Trigger to reopen: repeated invite usage after beta activation
|
|
46
|
+
- Missing evidence: stable collaboration volume
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# End-to-End PDCA Example
|
|
2
|
+
|
|
3
|
+
## Example Meta
|
|
4
|
+
|
|
5
|
+
- Example version: `1.0.0`
|
|
6
|
+
- Last reviewed: `2026-04-17`
|
|
7
|
+
- Bound skills: `cc-roadmap@4.3.2`, `cc-plan@3.5.4`, `cc-do@1.5.2`, `cc-check@1.8.2`, `cc-act@1.6.2`
|
|
8
|
+
|
|
9
|
+
This folder shows one minimal but complete `cc-roadmap -> cc-plan -> cc-do -> cc-check -> cc-act` loop.
|
|
10
|
+
|
|
11
|
+
The example is intentionally small:
|
|
12
|
+
|
|
13
|
+
- product context is fake
|
|
14
|
+
- requirement scope is real enough to feel concrete
|
|
15
|
+
- the chosen ship mode is `create-pr`
|
|
16
|
+
- optional artifacts such as `release-note.md` are intentionally omitted when the mode does not require them
|
|
17
|
+
|
|
18
|
+
## Scenario
|
|
19
|
+
|
|
20
|
+
The fictional product is a small team workspace app.
|
|
21
|
+
|
|
22
|
+
The immediate pain is simple: users can open the share dialog and see the invite URL, but they cannot copy it with one click.
|
|
23
|
+
|
|
24
|
+
The sample requirement is:
|
|
25
|
+
|
|
26
|
+
- `RM-001`: add a `Copy invite link` button to the existing share dialog
|
|
27
|
+
|
|
28
|
+
## Artifact Map
|
|
29
|
+
|
|
30
|
+
- `ROADMAP.md`: what `cc-roadmap` decided and why this item is first
|
|
31
|
+
- `roadmap-tracking.json`: machine-readable roadmap/backlog truth that renders `ROADMAP.md` and `BACKLOG.md`
|
|
32
|
+
- `BACKLOG.md`: capability-aware handoff that makes `RM-001` ready for `cc-plan`
|
|
33
|
+
- `changes/REQ-001-copy-invite-link/planning/design.md`: approved tiny design
|
|
34
|
+
- `changes/REQ-001-copy-invite-link/planning/tasks.md`: executable task handoff
|
|
35
|
+
- `changes/REQ-001-copy-invite-link/planning/task-manifest.json`: machine-readable execution truth
|
|
36
|
+
- `changes/REQ-001-copy-invite-link/review/report-card.json`: `cc-check` proof and verdict
|
|
37
|
+
- `changes/REQ-001-copy-invite-link/handoff/pr-brief.md`: ship-ready PR handoff
|
|
38
|
+
|
|
39
|
+
## Why There Is No `release-note.md`
|
|
40
|
+
|
|
41
|
+
This sample chooses `create-pr`.
|
|
42
|
+
|
|
43
|
+
That mode needs:
|
|
44
|
+
|
|
45
|
+
- `pr-brief.md`
|
|
46
|
+
- synced docs if behavior changed
|
|
47
|
+
|
|
48
|
+
It does **not** need a public release note yet, so the example intentionally stops there.
|
|
49
|
+
|
|
50
|
+
## What To Look For
|
|
51
|
+
|
|
52
|
+
When reading the sample, check whether you can answer these in under a minute:
|
|
53
|
+
|
|
54
|
+
1. Why is `RM-001` the next roadmap item?
|
|
55
|
+
2. Why does the requirement stay `tiny-design` instead of `full-design`?
|
|
56
|
+
3. Which task proved the missing behavior first?
|
|
57
|
+
4. What fresh evidence let `cc-check` say `pass`?
|
|
58
|
+
5. Why does `cc-act` choose `create-pr` and omit `release-note.md`?
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# ROADMAP
|
|
2
|
+
|
|
3
|
+
## Roadmap Meta
|
|
4
|
+
|
|
5
|
+
- Roadmap version: `roadmap.v1`
|
|
6
|
+
- Skill version: `4.3.2`
|
|
7
|
+
- Status: `active`
|
|
8
|
+
- Last updated: `2026-04-15`
|
|
9
|
+
- Owner / decider: `product-owner`
|
|
10
|
+
- Current focus stage: `Stage 1`
|
|
11
|
+
- Confidence: `medium`
|
|
12
|
+
- Supersedes roadmap version: `none`
|
|
13
|
+
|
|
14
|
+
## Context Snapshot
|
|
15
|
+
|
|
16
|
+
- Product / repo: `workspace-lite`
|
|
17
|
+
- Project stage: early beta for small internal teams
|
|
18
|
+
- Users: team leads sharing a workspace with 2-10 collaborators
|
|
19
|
+
- Pain: invite flow exists, but sharing still feels manual
|
|
20
|
+
- Existing workaround: users highlight the invite URL field and copy it by hand
|
|
21
|
+
- Strongest demand evidence: repeated support notes saying "copying the link feels broken"
|
|
22
|
+
- Why now: sharing friction blocks the first successful invite loop
|
|
23
|
+
- Distribution path: direct beta onboarding
|
|
24
|
+
- Deadline / forcing function: next beta reset on `2026-04-22`
|
|
25
|
+
- Team / capacity: one product-minded engineer
|
|
26
|
+
- Hard constraints: no API changes, no invite permission redesign
|
|
27
|
+
- Adoption / trust bottleneck: users hesitate when a basic collaboration action feels unfinished
|
|
28
|
+
- Known unknowns: whether users also need a copied-state confirmation toast
|
|
29
|
+
|
|
30
|
+
## Evidence Ledger
|
|
31
|
+
|
|
32
|
+
| Signal | Evidence | Confidence | Source | Why it matters |
|
|
33
|
+
|--------|----------|------------|--------|----------------|
|
|
34
|
+
| Demand | Beta users ask how to copy the invite URL | High | support notes | Sharing is a real bottleneck |
|
|
35
|
+
| Timing | Beta reset is one week away | High | launch plan | The fix must land this cycle |
|
|
36
|
+
| Feasibility | Existing dialog already renders the URL and clipboard API is available | High | current UI behavior | This is a tiny patch, not a redesign |
|
|
37
|
+
| Distribution | Successful sharing unlocks more beta seats | Med | product notes | A smoother invite loop increases activation |
|
|
38
|
+
|
|
39
|
+
## Route Options
|
|
40
|
+
|
|
41
|
+
| Shape | Why this could work | Why this may fail | Decision |
|
|
42
|
+
|-------|---------------------|-------------------|----------|
|
|
43
|
+
| wedge-first | Remove the sharpest sharing pain now | May leave deeper invite roles for later | Recommended |
|
|
44
|
+
| platform-first | Rebuild all sharing plumbing before polish | Too large for the current window | Rejected |
|
|
45
|
+
| rescue-first | Focus only on onboarding docs and support | Does not fix the broken-feeling UI | Rejected |
|
|
46
|
+
|
|
47
|
+
## Recommended Route
|
|
48
|
+
|
|
49
|
+
- Recommendation: `wedge-first`
|
|
50
|
+
- Why this route wins now: the strongest evidence is user friction in the current share path, not missing infrastructure
|
|
51
|
+
- Why the rejected routes lose now: both alternatives spend time away from the first visible activation bottleneck
|
|
52
|
+
- First signal to watch: users can copy the invite link without asking support
|
|
53
|
+
- Kill signal / stop condition: if the fix requires API or permission changes, reopen planning at a larger scope
|
|
54
|
+
|
|
55
|
+
## Product Thesis
|
|
56
|
+
|
|
57
|
+
- Users: small teams inviting collaborators during setup
|
|
58
|
+
- Pain: manual copying makes the share flow feel unfinished
|
|
59
|
+
- Why now: this friction sits directly on the first collaboration moment
|
|
60
|
+
- Strategic wedge: polish the existing share path before adding broader collaboration features
|
|
61
|
+
- Product promise: basic collaboration should feel one click away
|
|
62
|
+
- What we refuse to build yet: invite roles, expiration controls, share analytics
|
|
63
|
+
- 6-12 month pull: grow from frictionless invite into stronger collaboration controls
|
|
64
|
+
|
|
65
|
+
## Stage Overview
|
|
66
|
+
|
|
67
|
+
| Stage | Goal | Why now | Dependencies | Exit signal | Kill signal | Non-goals |
|
|
68
|
+
|-------|------|---------|--------------|-------------|-------------|-----------|
|
|
69
|
+
| Stage 1 | Remove first-share friction | Beta activation is blocked here | Existing share dialog | Users can copy the link in one click | Requires backend changes | Permission redesign |
|
|
70
|
+
| Stage 2 | Add safer invite controls | Only after the basic share action feels complete | Stable share interaction | Invite options are trusted | Stage 1 still confuses users | Analytics |
|
|
71
|
+
| Stage 3 | Measure collaboration adoption | Only after sharing is reliable | Stage 1 and 2 complete | Teams repeatedly invite collaborators | Usage remains too low to justify analytics | Growth experiments outside collaboration |
|
|
72
|
+
|
|
73
|
+
## Stage Detail
|
|
74
|
+
|
|
75
|
+
### Stage 1
|
|
76
|
+
|
|
77
|
+
- Goal: make the first invite flow feel complete
|
|
78
|
+
- Users unlocked: team leads onboarding collaborators
|
|
79
|
+
- Why this stage exists: collaboration cannot feel credible while copying the invite link is awkward
|
|
80
|
+
- Entry assumptions: existing invite link source remains stable
|
|
81
|
+
- Deliverables: one-click copy action, user feedback, targeted verification
|
|
82
|
+
- Dependencies: current share dialog and invite URL field
|
|
83
|
+
- Win condition: a user can click once and get confirmation
|
|
84
|
+
- Key risks: clipboard failure path may be unclear
|
|
85
|
+
- Kill signal: patch expands into cross-module share redesign
|
|
86
|
+
- What must stay out: new backend contract, new invite settings
|
|
87
|
+
- Candidate roadmap items: `RM-001`, `RM-002`
|
|
88
|
+
|
|
89
|
+
### Stage 2
|
|
90
|
+
|
|
91
|
+
- Goal: make invite controls safer
|
|
92
|
+
- Users unlocked: team leads managing collaborator access
|
|
93
|
+
- Why this stage exists: once sharing works, control and trust become the next bottleneck
|
|
94
|
+
- Entry assumptions: Stage 1 removed the basic friction
|
|
95
|
+
- Deliverables: role-aware invite options
|
|
96
|
+
- Dependencies: stable Stage 1 behavior
|
|
97
|
+
- Win condition: users no longer need manual role guidance
|
|
98
|
+
- Key risks: scope grows into auth redesign
|
|
99
|
+
- Kill signal: collaboration usage stays too low
|
|
100
|
+
- What must stay out: analytics dashboard
|
|
101
|
+
- Candidate roadmap items: `RM-003`
|
|
102
|
+
|
|
103
|
+
### Stage 3
|
|
104
|
+
|
|
105
|
+
- Goal: measure and improve collaboration adoption
|
|
106
|
+
- Users unlocked: operators deciding where to invest next
|
|
107
|
+
- Why this stage exists: instrumentation matters only after the share loop is credible
|
|
108
|
+
- Entry assumptions: Stages 1 and 2 hold steady
|
|
109
|
+
- Deliverables: collaboration funnel metrics
|
|
110
|
+
- Dependencies: repeated real usage
|
|
111
|
+
- Win condition: roadmap decisions use measured invite data
|
|
112
|
+
- Key risks: false precision with too little traffic
|
|
113
|
+
- Kill signal: beta usage remains tiny
|
|
114
|
+
- What must stay out: unrelated acquisition work
|
|
115
|
+
- Candidate roadmap items: `RM-004`
|
|
116
|
+
|
|
117
|
+
## Decision Notes
|
|
118
|
+
|
|
119
|
+
- Rejected path A: rebuild sharing infrastructure first
|
|
120
|
+
- Rejected path B: rely on docs and support instead of fixing the UI
|
|
121
|
+
- Open assumptions to verify next: whether a copied-state message is enough or a toast is needed
|
|
122
|
+
- What changed in this version: narrowed Stage 1 to the smallest visible sharing fix
|
|
123
|
+
|
|
124
|
+
## Implementation Tracking
|
|
125
|
+
- Tracking source: `roadmap-tracking.json`
|
|
126
|
+
|
|
127
|
+
<!-- roadmap-tracking:start -->
|
|
128
|
+
| RM-ID | Item | Stage | Priority | Primary Capability | Secondary Capabilities | Expected Spec Delta | Depends On | Status | REQ | Progress |
|
|
129
|
+
|------|------|------|------|------|------|------|------|------|------|------|
|
|
130
|
+
| RM-001 | Add one-click copy action to the share dialog | Stage 1 | P1 | cap-invite-links | - | tighten invite-link copy truth | - | In review | REQ-001 | 100% |
|
|
131
|
+
| RM-002 | Add copied-state feedback to the share dialog | Stage 1 | P2 | cap-invite-links | - | extend invite-link feedback truth | RM-001 | Planned | - | 0% |
|
|
132
|
+
| RM-004 | Collaboration analytics follow-up | - | - | - | - | - | - | - | - | - |
|
|
133
|
+
<!-- roadmap-tracking:end -->
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# PR Brief
|
|
2
|
+
|
|
3
|
+
## Decision
|
|
4
|
+
|
|
5
|
+
- Recommended mode: `create-pr`
|
|
6
|
+
- Why now: verified work is ready for reviewer handoff and there is no existing PR to update
|
|
7
|
+
- Why not others: `update-pr` has nothing to refresh, `local-handoff` would delay an already verified change, and `post-merge-closeout` only applies after merge
|
|
8
|
+
|
|
9
|
+
## Requirement
|
|
10
|
+
|
|
11
|
+
- `RM-001` / `REQ-001`: add a one-click copy action to the existing share dialog
|
|
12
|
+
|
|
13
|
+
## Ship Mode
|
|
14
|
+
|
|
15
|
+
- `create-pr`
|
|
16
|
+
|
|
17
|
+
## Branch Context
|
|
18
|
+
|
|
19
|
+
- Current branch: `feature/copy-invite-link`
|
|
20
|
+
- Base branch: `main`
|
|
21
|
+
- PR / MR: not created yet
|
|
22
|
+
|
|
23
|
+
## Summary
|
|
24
|
+
|
|
25
|
+
- removes a small but visible sharing friction in the beta flow
|
|
26
|
+
- keeps the patch inside the approved `tiny-design` boundary
|
|
27
|
+
- ships with fresh test, lint, and review proof
|
|
28
|
+
|
|
29
|
+
## What Changed
|
|
30
|
+
|
|
31
|
+
- adds a `Copy invite link` action beside the existing invite URL
|
|
32
|
+
- reuses the current invite link source of truth
|
|
33
|
+
- adds copied-state confirmation without redesigning the dialog
|
|
34
|
+
|
|
35
|
+
## Verification Evidence
|
|
36
|
+
|
|
37
|
+
- `report-card.json` verdict: `pass`
|
|
38
|
+
- Fresh evidence:
|
|
39
|
+
- `npm test -- src/features/share/ShareDialog.test.tsx`
|
|
40
|
+
- `npm run lint -- src/features/share/ShareDialog.tsx`
|
|
41
|
+
|
|
42
|
+
## Documentation Sync
|
|
43
|
+
|
|
44
|
+
- `CLAUDE.md`: unchanged
|
|
45
|
+
- `README.md`: unchanged
|
|
46
|
+
- `release-note.md`: intentionally omitted for this mode
|
|
47
|
+
- `resume-index.md`: not needed because the change is ready for PR handoff
|
|
48
|
+
|
|
49
|
+
## Minimum Landing Pack
|
|
50
|
+
|
|
51
|
+
- Required for this mode:
|
|
52
|
+
- `pr-brief.md`
|
|
53
|
+
- fresh `report-card.json`
|
|
54
|
+
- Intentionally omitted:
|
|
55
|
+
- `release-note.md`
|
|
56
|
+
- `resume-index.md`
|
|
57
|
+
|
|
58
|
+
## How To Verify
|
|
59
|
+
|
|
60
|
+
- open the share dialog
|
|
61
|
+
- confirm the invite URL still matches the current source of truth
|
|
62
|
+
- click `Copy invite link`
|
|
63
|
+
- confirm the copied-state feedback appears
|
|
64
|
+
- re-run the targeted test and lint commands above
|
|
65
|
+
|
|
66
|
+
## Follow-Ups
|
|
67
|
+
|
|
68
|
+
- if users still miss the feedback, lift `RM-002` into the next requirement
|
|
69
|
+
|
|
70
|
+
## Risks
|
|
71
|
+
|
|
72
|
+
- copied-state feedback may still be too subtle for some users, but the current patch keeps that trade-off isolated
|