claude-code-workflow 7.2.26 → 7.2.28
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/.ccw/specs/architecture-constraints.md +5 -0
- package/.claude/skills/_shared/SKILL-DESIGN-SPEC.md +140 -0
- package/.claude/skills/investigate/SKILL.md +110 -0
- package/.claude/skills/investigate/phases/01-root-cause-investigation.md +132 -0
- package/.claude/skills/investigate/phases/02-pattern-analysis.md +126 -0
- package/.claude/skills/investigate/phases/03-hypothesis-testing.md +177 -0
- package/.claude/skills/investigate/phases/04-implementation.md +139 -0
- package/.claude/skills/investigate/phases/05-verification-report.md +153 -0
- package/.claude/skills/investigate/specs/debug-report-format.md +226 -0
- package/.claude/skills/investigate/specs/iron-law.md +101 -0
- package/.claude/skills/security-audit/SKILL.md +125 -0
- package/.claude/skills/security-audit/phases/01-supply-chain-scan.md +139 -0
- package/.claude/skills/security-audit/phases/02-owasp-review.md +156 -0
- package/.claude/skills/security-audit/phases/03-threat-modeling.md +180 -0
- package/.claude/skills/security-audit/phases/04-report-tracking.md +177 -0
- package/.claude/skills/security-audit/specs/owasp-checklist.md +442 -0
- package/.claude/skills/security-audit/specs/scoring-gates.md +141 -0
- package/.claude/skills/ship/SKILL.md +105 -0
- package/.claude/skills/ship/phases/01-preflight-checks.md +121 -0
- package/.claude/skills/ship/phases/02-code-review.md +137 -0
- package/.claude/skills/ship/phases/03-version-bump.md +171 -0
- package/.claude/skills/ship/phases/04-changelog-commit.md +167 -0
- package/.claude/skills/ship/phases/05-pr-creation.md +163 -0
- package/.claude/skills/skill-generator/templates/sequential-phase.md +10 -0
- package/.claude/skills/skill-generator/templates/skill-md.md +4 -0
- package/.claude/skills/team-arch-opt/SKILL.md +1 -1
- package/.claude/skills/team-arch-opt/roles/coordinator/commands/monitor.md +3 -1
- package/.claude/skills/team-arch-opt/roles/refactorer/role.md +3 -1
- package/.claude/skills/team-arch-opt/specs/team-config.json +2 -2
- package/.claude/skills/team-coordinate/SKILL.md +4 -3
- package/.claude/skills/team-coordinate/roles/coordinator/commands/analyze-task.md +1 -1
- package/.claude/skills/team-coordinate/roles/coordinator/commands/dispatch.md +3 -2
- package/.claude/skills/team-coordinate/roles/coordinator/commands/monitor.md +3 -2
- package/.claude/skills/team-coordinate/roles/coordinator/role.md +16 -15
- package/.claude/skills/team-coordinate/specs/pipelines.md +7 -4
- package/.claude/skills/team-coordinate/specs/role-spec-template.md +1 -0
- package/.claude/skills/team-interactive-craft/SKILL.md +127 -0
- package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
- package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
- package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
- package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
- package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
- package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
- package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
- package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
- package/.claude/skills/team-lifecycle-v4/SKILL.md +1 -1
- package/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +14 -2
- package/.claude/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +24 -2
- package/.claude/skills/team-lifecycle-v4/roles/executor/role.md +3 -1
- package/.claude/skills/team-motion-design/SKILL.md +129 -0
- package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
- package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
- package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
- package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
- package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
- package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
- package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
- package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
- package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
- package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
- package/.claude/skills/team-perf-opt/SKILL.md +1 -1
- package/.claude/skills/team-perf-opt/roles/optimizer/role.md +3 -1
- package/.claude/skills/team-perf-opt/specs/team-config.json +2 -2
- package/.claude/skills/team-quality-assurance/SKILL.md +1 -1
- package/.claude/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +4 -2
- package/.claude/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +4 -2
- package/.claude/skills/team-quality-assurance/roles/executor/role.md +3 -1
- package/.claude/skills/team-testing/SKILL.md +1 -1
- package/.claude/skills/team-testing/roles/coordinator/commands/dispatch.md +5 -2
- package/.claude/skills/team-testing/roles/coordinator/commands/monitor.md +4 -2
- package/.claude/skills/team-testing/roles/executor/role.md +3 -1
- package/.claude/skills/team-ui-polish/SKILL.md +127 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
- package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
- package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
- package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
- package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
- package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
- package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
- package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
- package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
- package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
- package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
- package/.claude/skills/team-uidesign/SKILL.md +6 -1
- package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
- package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
- package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
- package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
- package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
- package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
- package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
- package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
- package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
- package/.claude/skills/team-ux-improve/SKILL.md +3 -0
- package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
- package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
- package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
- package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
- package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
- package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
- package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
- package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
- package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
- package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
- package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
- package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
- package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
- package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
- package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
- package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
- package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
- package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
- package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
- package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
- package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
- package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
- package/.codex/skills/investigate/agents/investigator.md +392 -0
- package/.codex/skills/investigate/orchestrator.md +362 -0
- package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
- package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
- package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
- package/.codex/skills/investigate/phases/04-implementation.md +195 -0
- package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
- package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
- package/.codex/skills/security-audit/orchestrator.md +384 -0
- package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
- package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
- package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
- package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
- package/.codex/skills/ship/agents/ship-operator.md +318 -0
- package/.codex/skills/ship/orchestrator.md +426 -0
- package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
- package/.codex/skills/ship/phases/02-code-review.md +228 -0
- package/.codex/skills/ship/phases/03-version-bump.md +259 -0
- package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
- package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
- package/.codex/skills/team-interactive-craft/SKILL.md +220 -0
- package/.codex/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
- package/.codex/skills/team-interactive-craft/roles/builder/role.md +216 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +162 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +233 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/role.md +209 -0
- package/.codex/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
- package/.codex/skills/team-interactive-craft/roles/researcher/role.md +131 -0
- package/.codex/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
- package/.codex/skills/team-interactive-craft/specs/pipelines.md +85 -0
- package/.codex/skills/team-interactive-craft/specs/team-config.json +105 -0
- package/.codex/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
- package/.codex/skills/team-motion-design/SKILL.md +222 -0
- package/.codex/skills/team-motion-design/roles/animator/role.md +194 -0
- package/.codex/skills/team-motion-design/roles/choreographer/role.md +164 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/dispatch.md +168 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/monitor.md +242 -0
- package/.codex/skills/team-motion-design/roles/coordinator/role.md +210 -0
- package/.codex/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
- package/.codex/skills/team-motion-design/roles/motion-tester/role.md +175 -0
- package/.codex/skills/team-motion-design/specs/gpu-constraints.md +114 -0
- package/.codex/skills/team-motion-design/specs/motion-tokens.md +128 -0
- package/.codex/skills/team-motion-design/specs/pipelines.md +74 -0
- package/.codex/skills/team-motion-design/specs/reduced-motion.md +129 -0
- package/.codex/skills/team-motion-design/specs/team-config.json +99 -0
- package/.codex/skills/team-ui-polish/SKILL.md +218 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +167 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/monitor.md +230 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-ui-polish/roles/diagnostician/role.md +164 -0
- package/.codex/skills/team-ui-polish/roles/optimizer/role.md +229 -0
- package/.codex/skills/team-ui-polish/roles/scanner/role.md +360 -0
- package/.codex/skills/team-ui-polish/roles/verifier/role.md +142 -0
- package/.codex/skills/team-ui-polish/specs/anti-patterns.md +141 -0
- package/.codex/skills/team-ui-polish/specs/design-standards.md +356 -0
- package/.codex/skills/team-ui-polish/specs/fix-strategies.md +235 -0
- package/.codex/skills/team-ui-polish/specs/pipelines.md +81 -0
- package/.codex/skills/team-ui-polish/specs/scoring-guide.md +162 -0
- package/.codex/skills/team-ui-polish/specs/team-config.json +73 -0
- package/.codex/skills/team-visual-a11y/SKILL.md +319 -0
- package/.codex/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +188 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +281 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
- package/.codex/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
- package/.codex/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
- package/.codex/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
- package/.codex/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
- package/.codex/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
- package/.codex/skills/team-visual-a11y/specs/pipelines.md +98 -0
- package/.codex/skills/team-visual-a11y/specs/team-config.json +109 -0
- package/.codex/skills/team-visual-a11y/specs/typography-scale.md +165 -0
- package/.codex/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
- package/README.md +8 -0
- package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
- package/ccw/dist/core/hooks/hook-templates.js +114 -1
- package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
- package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/cli-routes.js +34 -0
- package/ccw/dist/core/routes/cli-routes.js.map +1 -1
- package/ccw/dist/core/routes/system-routes.js +2 -2
- package/ccw/dist/core/routes/system-routes.js.map +1 -1
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-BjP1ydDR.js} +2 -2
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-BjP1ydDR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-CAX3xqMf.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-CAX3xqMf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-CtWlmztq.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-CtWlmztq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-hR4a-eLX.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-hR4a-eLX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-DzNPkFN9.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-DzNPkFN9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BPEGN4TT.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BPEGN4TT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cf0r2RHY.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cf0r2RHY.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DEm1rJ4h.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DEm1rJ4h.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-BpeWw8HO.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-BpeWw8HO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-BEsmh2vF.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-BEsmh2vF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-B30SFdtU.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-B30SFdtU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-BVvMpg1O.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-BVvMpg1O.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-CL73dHbh.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-CL73dHbh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-BL-28lMZ.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-BL-28lMZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BzZDciHZ.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BzZDciHZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-CDp6-d8P.js} +2 -2
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-CDp6-d8P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-fZY_7O9n.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-fZY_7O9n.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-4LJeC9bq.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-4LJeC9bq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-Bpigrbhw.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-Bpigrbhw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-BP0zJc1R.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-BP0zJc1R.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-CSt2oVKQ.js} +2 -2
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-CSt2oVKQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-B-xaMA0w.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-B-xaMA0w.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-CJqo_7DY.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-CJqo_7DY.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-ibZeQA-Y.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-ibZeQA-Y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-DgJ4ctPQ.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-DgJ4ctPQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-Cit0Yq0D.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-Cit0Yq0D.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-Ce1HDIK0.js} +2 -2
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-Ce1HDIK0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-J1KikNrk.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-J1KikNrk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CdBjTmth.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CdBjTmth.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-B9ZK7LvX.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-B9ZK7LvX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-CW_nS5UR.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-CW_nS5UR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SettingsPage-BPDbXPSM.js → SettingsPage-B2PYzSoO.js} +35 -35
- package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +1 -0
- package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js → SkillsManagerPage-CTnWrrwp.js} +2 -2
- package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js.map → SkillsManagerPage-CTnWrrwp.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DJpi9XQL.js} +2 -2
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DJpi9XQL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-Ac6Ov7uy.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-Ac6Ov7uy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-DZAAspqR.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-DZAAspqR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-BJkwfhIZ.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-BJkwfhIZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-BJgjxBgb.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-BJgjxBgb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-D1WekoOy.js} +2 -2
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-D1WekoOy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-DxemgIhF.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-DxemgIhF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-CjS83f1V.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-CjS83f1V.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-B5PUcn8I.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-B5PUcn8I.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-DCc9aPbb.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-DCc9aPbb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-DOwFtzak.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-DOwFtzak.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-96qH3aFh.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-96qH3aFh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CCxSuil1.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CCxSuil1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-CZNSJFdq.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-CZNSJFdq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-h8xtvw2_.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-h8xtvw2_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-D3NY0bm6.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-D3NY0bm6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-Cy2vkc8p.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-Cy2vkc8p.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-Bzq3U1Mx.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-Bzq3U1Mx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-DwuwPDPi.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-DwuwPDPi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-q9g-bknU.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-q9g-bknU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-CL6vb42J.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-CL6vb42J.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-BkrcQBly.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-BkrcQBly.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-BQbwyNeV.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-BQbwyNeV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-x5_7DrN7.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-x5_7DrN7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-DTyWXwzf.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-DTyWXwzf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-80O0kJO7.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-80O0kJO7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-DDlN2Bwa.js} +2 -2
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-DDlN2Bwa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-B9A3Hnrk.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-B9A3Hnrk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-Bs80iCX0.js} +2 -2
- package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-Bs80iCX0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index-mbeo62f8.js} +2 -2
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index-mbeo62f8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-rLgoBCfV.js} +3 -3
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-rLgoBCfV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-C1niOWJx.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-C1niOWJx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-BTmI7SUg.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-BTmI7SUg.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CB9HKeuZ.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CB9HKeuZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-koEYiemK.js} +2 -2
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-koEYiemK.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-v2_GaLdC.js} +2 -2
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-v2_GaLdC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BQNfAqG_.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BQNfAqG_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-Dzq5LGg9.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-Dzq5LGg9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CtkoJXcz.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CtkoJXcz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-CH3smL37.js} +2 -2
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-CH3smL37.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CZ0aL_yF.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CZ0aL_yF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-F2A_J4l6.js} +2 -2
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-F2A_J4l6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-Byxot0YU.js} +2 -2
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-Byxot0YU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-JjqhUkpw.js} +2 -2
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-JjqhUkpw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2--SuN9rAt.js} +2 -2
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2--SuN9rAt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-BbngGB2h.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-BbngGB2h.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-CgrHgZSl.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-CgrHgZSl.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-BU3TQr7Z.js} +2 -2
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-BU3TQr7Z.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CKs7nnn3.js} +2 -2
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CKs7nnn3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-DW5tsDW6.js} +2 -2
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-DW5tsDW6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-BHm7w3ON.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-BHm7w3ON.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-DYR7PWwt.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-DYR7PWwt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-D0TVgQD_.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-D0TVgQD_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-DfY8mAP8.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-DfY8mAP8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-CGusDp0F.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-CGusDp0F.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-CIwh0fF1.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-CIwh0fF1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-FMyFv39K.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-FMyFv39K.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-B2qhsoTb.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-B2qhsoTb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-cxKXMBm3.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-cxKXMBm3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-B-xUT_z-.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-B-xUT_z-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-DZV_3lPr.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-DZV_3lPr.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +105 -105
- package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# Phase 4: Changelog & Commit
|
|
2
|
+
|
|
3
|
+
> **COMPACT PROTECTION**: This is a core execution phase. If context compression has occurred and this file is only a summary, **MUST `Read` this file again before executing any Step**. Do not execute from memory.
|
|
4
|
+
|
|
5
|
+
Generate changelog entry from git history, update CHANGELOG.md, create release commit, and push to remote.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
- Parse git log since last tag into grouped changelog entry
|
|
10
|
+
- Update or create CHANGELOG.md
|
|
11
|
+
- Create a release commit with version in the message
|
|
12
|
+
- Push the branch to remote
|
|
13
|
+
|
|
14
|
+
## Input
|
|
15
|
+
|
|
16
|
+
| Source | Required | Description |
|
|
17
|
+
|--------|----------|-------------|
|
|
18
|
+
| Phase 3 output | Yes | new_version, version_file, bump_type |
|
|
19
|
+
| Git history | Yes | Commits since last tag |
|
|
20
|
+
| CHANGELOG.md | No | Updated in-place if it exists; created if not |
|
|
21
|
+
|
|
22
|
+
## Execution Steps
|
|
23
|
+
|
|
24
|
+
### Step 1: Gather Commits Since Last Tag
|
|
25
|
+
|
|
26
|
+
Retrieve commits to include in the changelog.
|
|
27
|
+
|
|
28
|
+
**Decision Table**:
|
|
29
|
+
|
|
30
|
+
| Condition | Action |
|
|
31
|
+
|-----------|--------|
|
|
32
|
+
| Last tag exists | `git log "$last_tag"..HEAD --pretty=format:"%h %s" --no-merges` |
|
|
33
|
+
| No previous tag found | Use last 50 commits: `git log --pretty=format:"%h %s" --no-merges -50` |
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
last_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
37
|
+
|
|
38
|
+
if [ -n "$last_tag" ]; then
|
|
39
|
+
echo "Generating changelog since tag: $last_tag"
|
|
40
|
+
git log "$last_tag"..HEAD --pretty=format:"%h %s" --no-merges
|
|
41
|
+
else
|
|
42
|
+
echo "No previous tag found — using last 50 commits"
|
|
43
|
+
git log --pretty=format:"%h %s" --no-merges -50
|
|
44
|
+
fi
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
### Step 2: Group Commits by Conventional Commit Type
|
|
50
|
+
|
|
51
|
+
Parse commit messages and group into changelog sections.
|
|
52
|
+
|
|
53
|
+
**Conventional Commit Grouping Table**:
|
|
54
|
+
|
|
55
|
+
| Prefix | Category | Changelog Section |
|
|
56
|
+
|--------|----------|-------------------|
|
|
57
|
+
| `feat:` / `feat(*):` | Features | **Features** |
|
|
58
|
+
| `fix:` / `fix(*):` | Bug Fixes | **Bug Fixes** |
|
|
59
|
+
| `perf:` | Performance | **Performance** |
|
|
60
|
+
| `docs:` | Documentation | **Documentation** |
|
|
61
|
+
| `refactor:` | Refactoring | **Refactoring** |
|
|
62
|
+
| `chore:` | Maintenance | **Maintenance** |
|
|
63
|
+
| `test:` | Testing | *(omitted from changelog)* |
|
|
64
|
+
| Other | Miscellaneous | **Other Changes** |
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Example grouping logic (executed by the agent, not a literal script):
|
|
68
|
+
# 1. Read all commits since last tag
|
|
69
|
+
# 2. Parse prefix from each commit message
|
|
70
|
+
# 3. Group into categories
|
|
71
|
+
# 4. Format as markdown sections
|
|
72
|
+
# 5. Omit empty categories
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### Step 3: Format Changelog Entry
|
|
78
|
+
|
|
79
|
+
Generate a markdown changelog entry using ISO 8601 date format.
|
|
80
|
+
|
|
81
|
+
**Decision Table**:
|
|
82
|
+
|
|
83
|
+
| Condition | Action |
|
|
84
|
+
|-----------|--------|
|
|
85
|
+
| Category has commits | Include section with all entries |
|
|
86
|
+
| Category is empty | Omit section entirely |
|
|
87
|
+
| test: commits present | Omit from changelog output |
|
|
88
|
+
|
|
89
|
+
Changelog entry format:
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
## [X.Y.Z] - YYYY-MM-DD
|
|
93
|
+
|
|
94
|
+
### Features
|
|
95
|
+
- feat: description (sha)
|
|
96
|
+
- feat(scope): description (sha)
|
|
97
|
+
|
|
98
|
+
### Bug Fixes
|
|
99
|
+
- fix: description (sha)
|
|
100
|
+
|
|
101
|
+
### Performance
|
|
102
|
+
- perf: description (sha)
|
|
103
|
+
|
|
104
|
+
### Other Changes
|
|
105
|
+
- chore: description (sha)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Rules:
|
|
109
|
+
- Date format: YYYY-MM-DD (ISO 8601)
|
|
110
|
+
- Each entry includes the short SHA for traceability
|
|
111
|
+
- Empty categories are omitted
|
|
112
|
+
- Entries are listed in chronological order within each category
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
### Step 4: Update CHANGELOG.md
|
|
117
|
+
|
|
118
|
+
Write the new entry into CHANGELOG.md.
|
|
119
|
+
|
|
120
|
+
**Decision Table**:
|
|
121
|
+
|
|
122
|
+
| Condition | Action |
|
|
123
|
+
|-----------|--------|
|
|
124
|
+
| CHANGELOG.md exists | Insert new entry after the first heading line (`# Changelog`), before previous version entry |
|
|
125
|
+
| CHANGELOG.md does not exist | Create new file with `# Changelog` heading followed by new entry |
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
if [ -f "CHANGELOG.md" ]; then
|
|
129
|
+
# Insert new entry after the first heading line (# Changelog)
|
|
130
|
+
# The new entry goes between the main heading and the previous version entry
|
|
131
|
+
# Use Write tool to insert the new section at the correct position
|
|
132
|
+
echo "Updating existing CHANGELOG.md"
|
|
133
|
+
else
|
|
134
|
+
# Create new CHANGELOG.md with header
|
|
135
|
+
echo "Creating new CHANGELOG.md"
|
|
136
|
+
fi
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**CHANGELOG.md structure**:
|
|
140
|
+
|
|
141
|
+
```markdown
|
|
142
|
+
# Changelog
|
|
143
|
+
|
|
144
|
+
## [X.Y.Z] - YYYY-MM-DD
|
|
145
|
+
(new entry here)
|
|
146
|
+
|
|
147
|
+
## [X.Y.Z-1] - YYYY-MM-DD
|
|
148
|
+
(previous entry)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
### Step 5: Create Release Commit
|
|
154
|
+
|
|
155
|
+
Stage changed files and create conventionally-formatted release commit.
|
|
156
|
+
|
|
157
|
+
**Decision Table**:
|
|
158
|
+
|
|
159
|
+
| Condition | Action |
|
|
160
|
+
|-----------|--------|
|
|
161
|
+
| Version file is package.json | Stage package.json and package-lock.json (if present) |
|
|
162
|
+
| Version file is pyproject.toml | Stage pyproject.toml |
|
|
163
|
+
| Version file is VERSION | Stage VERSION |
|
|
164
|
+
| CHANGELOG.md was updated/created | Stage CHANGELOG.md |
|
|
165
|
+
| git commit succeeds | Proceed to push step |
|
|
166
|
+
| git commit fails | BLOCKED — report error |
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Stage version file and changelog
|
|
170
|
+
git add package.json package-lock.json pyproject.toml VERSION CHANGELOG.md 2>/dev/null
|
|
171
|
+
|
|
172
|
+
# Only stage files that actually exist and are modified
|
|
173
|
+
git add -u
|
|
174
|
+
|
|
175
|
+
# Create release commit
|
|
176
|
+
git commit -m "$(cat <<'EOF'
|
|
177
|
+
chore: bump version to X.Y.Z
|
|
178
|
+
|
|
179
|
+
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
180
|
+
EOF
|
|
181
|
+
)"
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Commit message format**: `chore: bump version to <new_version>`
|
|
185
|
+
- Follows conventional commit format
|
|
186
|
+
- Includes Co-Authored-By trailer
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
### Step 6: Push to Remote
|
|
191
|
+
|
|
192
|
+
Push the branch to the remote origin.
|
|
193
|
+
|
|
194
|
+
**Decision Table**:
|
|
195
|
+
|
|
196
|
+
| Condition | Action |
|
|
197
|
+
|-----------|--------|
|
|
198
|
+
| Remote tracking branch exists | `git push origin "<current_branch>"` |
|
|
199
|
+
| No remote tracking branch | `git push -u origin "<current_branch>"` |
|
|
200
|
+
| Push succeeds (exit 0) | PASS — gate satisfied |
|
|
201
|
+
| Push rejected (non-fast-forward) | BLOCKED — report error, suggest `git pull --rebase` |
|
|
202
|
+
| Permission denied | BLOCKED — report error, advise check remote access |
|
|
203
|
+
| No remote configured | BLOCKED — report error, suggest `git remote add` |
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
current_branch=$(git branch --show-current)
|
|
207
|
+
|
|
208
|
+
# Check if remote tracking branch exists
|
|
209
|
+
if git rev-parse --verify "origin/$current_branch" &>/dev/null; then
|
|
210
|
+
git push origin "$current_branch"
|
|
211
|
+
else
|
|
212
|
+
git push -u origin "$current_branch"
|
|
213
|
+
fi
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Output
|
|
219
|
+
|
|
220
|
+
| Artifact | Format | Description |
|
|
221
|
+
|----------|--------|-------------|
|
|
222
|
+
| Commit and push record | JSON | changelog_entry, commit_sha, commit_message, pushed_to |
|
|
223
|
+
| CHANGELOG.md | Markdown file | Updated with new version entry |
|
|
224
|
+
|
|
225
|
+
```json
|
|
226
|
+
{
|
|
227
|
+
"phase": "changelog-commit",
|
|
228
|
+
"changelog_entry": "## [X.Y.Z] - YYYY-MM-DD ...",
|
|
229
|
+
"commit_sha": "abc1234",
|
|
230
|
+
"commit_message": "chore: bump version to X.Y.Z",
|
|
231
|
+
"pushed_to": "origin/branch-name",
|
|
232
|
+
"overall": "pass|fail"
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Success Criteria
|
|
237
|
+
|
|
238
|
+
| Criterion | Validation Method |
|
|
239
|
+
|-----------|-------------------|
|
|
240
|
+
| Commits gathered since last tag | Commit list non-empty or warn if empty |
|
|
241
|
+
| Changelog entry formatted | Markdown entry with correct sections |
|
|
242
|
+
| CHANGELOG.md updated or created | File exists with new entry at top |
|
|
243
|
+
| Release commit created | `git log -1 --oneline` shows commit |
|
|
244
|
+
| Branch pushed to remote | Push command exits 0 |
|
|
245
|
+
| overall = "pass" | All steps completed without error |
|
|
246
|
+
|
|
247
|
+
## Error Handling
|
|
248
|
+
|
|
249
|
+
| Scenario | Resolution |
|
|
250
|
+
|----------|------------|
|
|
251
|
+
| No commits since last tag | WARN — create minimal changelog entry, continue |
|
|
252
|
+
| CHANGELOG.md write error | BLOCKED — report file system error |
|
|
253
|
+
| git commit fails (nothing staged) | Verify version file and CHANGELOG.md were modified, re-stage |
|
|
254
|
+
| Push rejected (non-fast-forward) | BLOCKED — suggest `git pull --rebase`, halt |
|
|
255
|
+
| Push permission denied | BLOCKED — advise check SSH keys or access token |
|
|
256
|
+
| No remote configured | BLOCKED — suggest `git remote add origin <url>` |
|
|
257
|
+
|
|
258
|
+
## Next Phase
|
|
259
|
+
|
|
260
|
+
-> [Phase 5: PR Creation](05-pr-creation.md)
|
|
261
|
+
|
|
262
|
+
If commit and push succeed (overall: "pass"), proceed to Phase 5.
|
|
263
|
+
If push fails, report BLOCKED status with error details. Do not proceed.
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
# Phase 5: PR Creation
|
|
2
|
+
|
|
3
|
+
> **COMPACT PROTECTION**: This is a core execution phase. If context compression has occurred and this file is only a summary, **MUST `Read` this file again before executing any Step**. Do not execute from memory.
|
|
4
|
+
|
|
5
|
+
Create a pull request via GitHub CLI with a structured body, linked issues, and release metadata.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
- Create a PR using `gh pr create` with structured body
|
|
10
|
+
- Auto-link related issues from commit messages
|
|
11
|
+
- Include release summary (version, changes, test plan)
|
|
12
|
+
- Output the PR URL
|
|
13
|
+
|
|
14
|
+
## Input
|
|
15
|
+
|
|
16
|
+
| Source | Required | Description |
|
|
17
|
+
|--------|----------|-------------|
|
|
18
|
+
| Phase 4 output | Yes | commit_sha, pushed_to |
|
|
19
|
+
| Phase 3 output | Yes | new_version, previous_version, bump_type, version_file |
|
|
20
|
+
| Phase 2 output | Yes | merge_base (for change summary) |
|
|
21
|
+
| Git history | Yes | Commit messages for issue extraction |
|
|
22
|
+
|
|
23
|
+
## Execution Steps
|
|
24
|
+
|
|
25
|
+
### Step 1: Extract Issue References from Commits
|
|
26
|
+
|
|
27
|
+
Scan commit messages for issue reference patterns.
|
|
28
|
+
|
|
29
|
+
**Issue Reference Pattern**: `fixes #N`, `closes #N`, `resolves #N`, `refs #N` (case-insensitive, singular and plural forms).
|
|
30
|
+
|
|
31
|
+
**Decision Table**:
|
|
32
|
+
|
|
33
|
+
| Condition | Action |
|
|
34
|
+
|-----------|--------|
|
|
35
|
+
| Last tag exists | Scan commits from last_tag..HEAD |
|
|
36
|
+
| No last tag | Scan last 50 commit subjects |
|
|
37
|
+
| Issue references found | Deduplicate, sort numerically |
|
|
38
|
+
| No issue references found | issues_section = empty (omit section from PR body) |
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
last_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
42
|
+
|
|
43
|
+
if [ -n "$last_tag" ]; then
|
|
44
|
+
commits=$(git log "$last_tag"..HEAD --pretty=format:"%s" --no-merges)
|
|
45
|
+
else
|
|
46
|
+
commits=$(git log --pretty=format:"%s" --no-merges -50)
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
# Extract issue references: fixes #N, closes #N, resolves #N, refs #N
|
|
50
|
+
issues=$(echo "$commits" | grep -oiE '(fix(es)?|close[sd]?|resolve[sd]?|refs?)\s*#[0-9]+' | grep -oE '#[0-9]+' | sort -u || true)
|
|
51
|
+
|
|
52
|
+
echo "Referenced issues: $issues"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
### Step 2: Determine Target Branch
|
|
58
|
+
|
|
59
|
+
Find the appropriate base branch for the PR.
|
|
60
|
+
|
|
61
|
+
**Decision Table**:
|
|
62
|
+
|
|
63
|
+
| Condition | Action |
|
|
64
|
+
|-----------|--------|
|
|
65
|
+
| origin/main exists | target_branch = main |
|
|
66
|
+
| origin/main not found | target_branch = master |
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# Default target: main (fallback: master)
|
|
70
|
+
target_branch="main"
|
|
71
|
+
if ! git rev-parse --verify "origin/$target_branch" &>/dev/null; then
|
|
72
|
+
target_branch="master"
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
current_branch=$(git branch --show-current)
|
|
76
|
+
echo "PR: $current_branch -> $target_branch"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### Step 3: Build PR Title
|
|
82
|
+
|
|
83
|
+
Format the PR title as `release: vX.Y.Z`.
|
|
84
|
+
|
|
85
|
+
**Decision Table**:
|
|
86
|
+
|
|
87
|
+
| Condition | Action |
|
|
88
|
+
|-----------|--------|
|
|
89
|
+
| new_version available from Phase 3 | pr_title = "release: v<new_version>" |
|
|
90
|
+
| new_version not available | Fall back to descriptive title derived from branch name |
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
pr_title="release: v${new_version}"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### Step 4: Build PR Body
|
|
99
|
+
|
|
100
|
+
Construct the full PR body with all sections.
|
|
101
|
+
|
|
102
|
+
**Decision Table**:
|
|
103
|
+
|
|
104
|
+
| Condition | Action |
|
|
105
|
+
|-----------|--------|
|
|
106
|
+
| issues list non-empty | Include "## Linked Issues" section with each issue as `- #N` |
|
|
107
|
+
| issues list empty | Omit "## Linked Issues" section |
|
|
108
|
+
| Phase 2 warnings exist | Include warning note in Summary section |
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# Gather change summary
|
|
112
|
+
change_summary=$(git log "$merge_base"..HEAD --pretty=format:"- %s (%h)" --no-merges)
|
|
113
|
+
|
|
114
|
+
# Build linked issues section
|
|
115
|
+
if [ -n "$issues" ]; then
|
|
116
|
+
issues_section="## Linked Issues
|
|
117
|
+
$(echo "$issues" | while read -r issue; do echo "- $issue"; done)"
|
|
118
|
+
else
|
|
119
|
+
issues_section=""
|
|
120
|
+
fi
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**PR Body Sections Table**:
|
|
124
|
+
|
|
125
|
+
| Section | Content |
|
|
126
|
+
|---------|---------|
|
|
127
|
+
| **Summary** | Version being released, one-line description |
|
|
128
|
+
| **Changes** | Grouped changelog entries (from Phase 4) |
|
|
129
|
+
| **Linked Issues** | Auto-extracted `fixes #N`, `closes #N` references |
|
|
130
|
+
| **Version** | Previous version, new version, bump type |
|
|
131
|
+
| **Test Plan** | Checklist confirming all phases passed |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### Step 5: Create PR via gh CLI
|
|
136
|
+
|
|
137
|
+
Invoke `gh pr create` with title and fully assembled body.
|
|
138
|
+
|
|
139
|
+
**Decision Table**:
|
|
140
|
+
|
|
141
|
+
| Condition | Action |
|
|
142
|
+
|-----------|--------|
|
|
143
|
+
| gh CLI available | Execute `gh pr create` |
|
|
144
|
+
| gh CLI not installed | BLOCKED — report missing CLI, advise `gh auth login` |
|
|
145
|
+
| PR created successfully | Capture URL from output |
|
|
146
|
+
| PR creation fails (already exists) | Report existing PR URL, gate = pass |
|
|
147
|
+
| PR creation fails (other error) | BLOCKED — report error details |
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
gh pr create --title "$pr_title" --base "$target_branch" --body "$(cat <<'EOF'
|
|
151
|
+
## Summary
|
|
152
|
+
Release vX.Y.Z
|
|
153
|
+
|
|
154
|
+
### Changes
|
|
155
|
+
- list of changes from changelog
|
|
156
|
+
|
|
157
|
+
## Linked Issues
|
|
158
|
+
- #N (fixes)
|
|
159
|
+
- #M (closes)
|
|
160
|
+
|
|
161
|
+
## Version
|
|
162
|
+
- Previous: X.Y.Z-1
|
|
163
|
+
- New: X.Y.Z
|
|
164
|
+
- Bump type: patch|minor|major
|
|
165
|
+
|
|
166
|
+
## Test Plan
|
|
167
|
+
- [ ] Pre-flight checks passed (git clean, branch, tests, build)
|
|
168
|
+
- [ ] AI code review completed with no critical issues
|
|
169
|
+
- [ ] Version bump verified in version file
|
|
170
|
+
- [ ] Changelog updated with all changes since last release
|
|
171
|
+
- [ ] Release commit pushed successfully
|
|
172
|
+
|
|
173
|
+
Generated with [Claude Code](https://claude.com/claude-code)
|
|
174
|
+
EOF
|
|
175
|
+
)"
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
### Step 6: Capture and Report PR URL
|
|
181
|
+
|
|
182
|
+
Extract the PR URL from gh output.
|
|
183
|
+
|
|
184
|
+
**Decision Table**:
|
|
185
|
+
|
|
186
|
+
| Condition | Action |
|
|
187
|
+
|-----------|--------|
|
|
188
|
+
| URL present in output | Record pr_url, set gate = pass |
|
|
189
|
+
| No URL in output | Check `gh pr view --json url` as fallback |
|
|
190
|
+
| Both fail | BLOCKED — report failure |
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# gh pr create outputs the PR URL on success
|
|
194
|
+
pr_url=$(gh pr create ... 2>&1 | tail -1)
|
|
195
|
+
echo "PR created: $pr_url"
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Output
|
|
201
|
+
|
|
202
|
+
| Artifact | Format | Description |
|
|
203
|
+
|----------|--------|-------------|
|
|
204
|
+
| PR creation record | JSON | pr_url, pr_title, target_branch, source_branch, linked_issues |
|
|
205
|
+
| Final completion status | Text block | DONE / DONE_WITH_CONCERNS with full summary |
|
|
206
|
+
|
|
207
|
+
```json
|
|
208
|
+
{
|
|
209
|
+
"phase": "pr-creation",
|
|
210
|
+
"pr_url": "https://github.com/owner/repo/pull/N",
|
|
211
|
+
"pr_title": "release: vX.Y.Z",
|
|
212
|
+
"target_branch": "main",
|
|
213
|
+
"source_branch": "feature-branch",
|
|
214
|
+
"linked_issues": ["#1", "#2"],
|
|
215
|
+
"overall": "pass|fail"
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Success Criteria
|
|
220
|
+
|
|
221
|
+
| Criterion | Validation Method |
|
|
222
|
+
|-----------|-------------------|
|
|
223
|
+
| Issue references extracted | issues list populated (or empty with no error) |
|
|
224
|
+
| Target branch determined | target_branch set to main or master |
|
|
225
|
+
| PR title formatted | pr_title = "release: v<new_version>" |
|
|
226
|
+
| PR body assembled with all sections | All required sections present |
|
|
227
|
+
| PR created via gh CLI | pr_url present in output |
|
|
228
|
+
| Completion status output | DONE or DONE_WITH_CONCERNS block present |
|
|
229
|
+
|
|
230
|
+
## Error Handling
|
|
231
|
+
|
|
232
|
+
| Scenario | Resolution |
|
|
233
|
+
|----------|------------|
|
|
234
|
+
| gh CLI not installed | BLOCKED — report error, advise install + `gh auth login` |
|
|
235
|
+
| Not authenticated with gh | BLOCKED — report auth error, advise `gh auth login` |
|
|
236
|
+
| PR already exists for branch | Report existing PR URL, treat as pass |
|
|
237
|
+
| No changes to create PR for | BLOCKED — report, suggest verifying Phase 4 push succeeded |
|
|
238
|
+
| Issue regex finds no matches | issues = [] — omit Linked Issues section, continue |
|
|
239
|
+
|
|
240
|
+
## Completion Status
|
|
241
|
+
|
|
242
|
+
After PR creation, output the final Completion Status:
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
## STATUS: DONE
|
|
246
|
+
|
|
247
|
+
**Summary**: Released vX.Y.Z — PR created at <pr_url>
|
|
248
|
+
|
|
249
|
+
### Details
|
|
250
|
+
- Phases completed: 5/5
|
|
251
|
+
- Version: <previous> -> <new> (<bump_type>)
|
|
252
|
+
- PR: <pr_url>
|
|
253
|
+
- Key outputs: CHANGELOG.md updated, release commit pushed, PR created
|
|
254
|
+
|
|
255
|
+
### Outputs
|
|
256
|
+
- CHANGELOG.md (updated)
|
|
257
|
+
- <version_file> (version bumped)
|
|
258
|
+
- Release commit: <sha>
|
|
259
|
+
- PR: <pr_url>
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
If there were review warnings from Phase 2, use `DONE_WITH_CONCERNS` and list the warnings in the Details section:
|
|
263
|
+
|
|
264
|
+
```
|
|
265
|
+
## STATUS: DONE_WITH_CONCERNS
|
|
266
|
+
|
|
267
|
+
**Summary**: Released vX.Y.Z — PR created at <pr_url> (review warnings noted)
|
|
268
|
+
|
|
269
|
+
### Details
|
|
270
|
+
- Phases completed: 5/5
|
|
271
|
+
- Version: <previous> -> <new> (<bump_type>)
|
|
272
|
+
- PR: <pr_url>
|
|
273
|
+
- Concerns: <list review warnings from Phase 2>
|
|
274
|
+
|
|
275
|
+
### Outputs
|
|
276
|
+
- CHANGELOG.md (updated)
|
|
277
|
+
- <version_file> (version bumped)
|
|
278
|
+
- Release commit: <sha>
|
|
279
|
+
- PR: <pr_url>
|
|
280
|
+
```
|