claude-code-workflow 7.2.27 → 7.2.29
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-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-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-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/brainstorm/SKILL.md +3 -3
- package/.codex/skills/clean/SKILL.md +3 -3
- 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/issue-discover/SKILL.md +13 -13
- package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
- package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
- package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
- package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
- package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
- package/.codex/skills/review-cycle/SKILL.md +10 -10
- package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
- package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
- package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
- package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
- package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
- 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/spec-generator/README.md +1 -1
- package/.codex/skills/spec-generator/SKILL.md +184 -88
- package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
- package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
- package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
- package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
- package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
- package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
- package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
- package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
- package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
- package/.codex/skills/spec-setup/SKILL.md +4 -4
- 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/.codex/skills/workflow-plan/SKILL.md +6 -6
- package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
- package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
- 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-exlTDW81.js} +3 -3
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-exlTDW81.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-cgV9LfAI.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-Be9xsPiv.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BrE-oyEq.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cd3nrC93.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DXFl3VKF.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-CpDxtmRX.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-BchjWe7s.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-CbWvaJ0y.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-YMjVRiCk.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BtqzqDVq.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-BuWpQ7k5.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-D0BtMIWy.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-C7dwsAKG.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-D0nCNaeB.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-C-S5CehM.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-P_B0JVUQ.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-S4Jn9LUE.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-YEMjFARX.js} +3 -3
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-DnTm55nG.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CUwebtO2.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-BpgP4087.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-BpgP4087.js.map} +1 -1
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-CYSPdqWk.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-CYSPdqWk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-CPh6Zor1.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-Ds-8830B.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-CJODUxBk.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-CJODUxBk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-CjwVpw6k.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-CjwVpw6k.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-2vZa9Ic3.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-CUU5XDgT.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-BwpSRDUa.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-BwpSRDUa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-DBzUW1XC.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-DBzUW1XC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CGNNsjvE.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-D27G86Ul.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-D27G86Ul.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-C6MOB7Au.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-C6MOB7Au.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-BxfBlZ26.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-BxfBlZ26.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-NI237wA-.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-NI237wA-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-Byn2_2v6.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-Byn2_2v6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-D-7PhZjx.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-D-7PhZjx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-BoAsK_FL.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-BoAsK_FL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-DCSxJIS4.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-DCSxJIS4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-CHS3prza.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-CHS3prza.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-D7K35U7S.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-eq9xE07G.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-eq9xE07G.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-C1DMpBua.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-C1DMpBua.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-Di5SBCY-.js} +2 -2
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-Di5SBCY-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index--_R7COnA.js} +2 -2
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index--_R7COnA.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-BUol9HDD.js} +3 -3
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-BUol9HDD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-CT9oykfw.js} +2 -2
- package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-CT9oykfw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-Ddwvf87H.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-Ddwvf87H.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-LiX0qZbN.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-CL3DVEwb.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CC5cFeq6.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CC5cFeq6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-ngFQ9bs0.js} +2 -2
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-ngFQ9bs0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-BEU6I0KK.js} +2 -2
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-BEU6I0KK.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BWZdLA6y.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BWZdLA6y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-K6_Chm7n.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-K6_Chm7n.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CWkphauf.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CWkphauf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-DrNgkamn.js} +2 -2
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-DrNgkamn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CMo3sw5_.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CMo3sw5_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-DppNTW5e.js} +2 -2
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-DppNTW5e.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-CD8aPMbZ.js} +2 -2
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-CD8aPMbZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-B4z90fQD.js} +2 -2
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-B4z90fQD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2-CAKRU_QC.js} +2 -2
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2-CAKRU_QC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-KhI3HrzX.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-BtdGIpuq.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-BtdGIpuq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-ZoBUkXoD.js} +2 -2
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-ZoBUkXoD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CltxQP-P.js} +2 -2
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CltxQP-P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-C32OUSGf.js} +2 -2
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-C32OUSGf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-0IxoyAVZ.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-4eKCkyBn.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-4eKCkyBn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-zLTUWqhi.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-BtN2vpOX.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-BtN2vpOX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-_spj49qL.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-_spj49qL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-Bm9KFZvd.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-DOmpm6v9.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-D2rj4rea.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-D2rj4rea.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-OskEpomF.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-OskEpomF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-BjMgsNSF.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-CLhyYWa7.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-CLhyYWa7.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 +0 -150
- package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
- package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js +0 -7
- package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js.map +0 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Phase 5: PR Creation
|
|
2
|
+
|
|
3
|
+
Create a pull request via GitHub CLI with a structured body, linked issues, and release metadata.
|
|
4
|
+
|
|
5
|
+
## Objective
|
|
6
|
+
|
|
7
|
+
- Create a PR using `gh pr create` with structured body
|
|
8
|
+
- Auto-link related issues from commit messages
|
|
9
|
+
- Include release summary (version, changes, test plan)
|
|
10
|
+
- Output the PR URL
|
|
11
|
+
|
|
12
|
+
## Gate Condition
|
|
13
|
+
|
|
14
|
+
PR created successfully and URL returned.
|
|
15
|
+
|
|
16
|
+
## Execution Steps
|
|
17
|
+
|
|
18
|
+
### Step 1: Extract Issue References from Commits
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
last_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
22
|
+
|
|
23
|
+
if [ -n "$last_tag" ]; then
|
|
24
|
+
commits=$(git log "$last_tag"..HEAD --pretty=format:"%s" --no-merges)
|
|
25
|
+
else
|
|
26
|
+
commits=$(git log --pretty=format:"%s" --no-merges -50)
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Extract issue references: fixes #N, closes #N, resolves #N, refs #N
|
|
30
|
+
issues=$(echo "$commits" | grep -oiE '(fix(es)?|close[sd]?|resolve[sd]?|refs?)\s*#[0-9]+' | grep -oE '#[0-9]+' | sort -u || true)
|
|
31
|
+
|
|
32
|
+
echo "Referenced issues: $issues"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Step 2: Determine Target Branch
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Default target: main (fallback: master)
|
|
39
|
+
target_branch="main"
|
|
40
|
+
if ! git rev-parse --verify "origin/$target_branch" &>/dev/null; then
|
|
41
|
+
target_branch="master"
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
current_branch=$(git branch --show-current)
|
|
45
|
+
echo "PR: $current_branch -> $target_branch"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Step 3: Build PR Title
|
|
49
|
+
|
|
50
|
+
Format: `release: vX.Y.Z`
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pr_title="release: v${new_version}"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
If the version context is not available, fall back to a descriptive title from the branch name.
|
|
57
|
+
|
|
58
|
+
### Step 4: Build PR Body
|
|
59
|
+
|
|
60
|
+
Construct the PR body using a HEREDOC for correct formatting:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Gather change summary
|
|
64
|
+
change_summary=$(git log "$merge_base"..HEAD --pretty=format:"- %s (%h)" --no-merges)
|
|
65
|
+
|
|
66
|
+
# Build linked issues section
|
|
67
|
+
if [ -n "$issues" ]; then
|
|
68
|
+
issues_section="## Linked Issues
|
|
69
|
+
$(echo "$issues" | while read -r issue; do echo "- $issue"; done)"
|
|
70
|
+
else
|
|
71
|
+
issues_section=""
|
|
72
|
+
fi
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Step 5: Create PR via gh CLI
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
gh pr create --title "$pr_title" --base "$target_branch" --body "$(cat <<'EOF'
|
|
79
|
+
## Summary
|
|
80
|
+
Release vX.Y.Z
|
|
81
|
+
|
|
82
|
+
### Changes
|
|
83
|
+
- list of changes from changelog
|
|
84
|
+
|
|
85
|
+
## Linked Issues
|
|
86
|
+
- #N (fixes)
|
|
87
|
+
- #M (closes)
|
|
88
|
+
|
|
89
|
+
## Version
|
|
90
|
+
- Previous: X.Y.Z-1
|
|
91
|
+
- New: X.Y.Z
|
|
92
|
+
- Bump type: patch|minor|major
|
|
93
|
+
|
|
94
|
+
## Test Plan
|
|
95
|
+
- [ ] Pre-flight checks passed (git clean, branch, tests, build)
|
|
96
|
+
- [ ] AI code review completed with no critical issues
|
|
97
|
+
- [ ] Version bump verified in version file
|
|
98
|
+
- [ ] Changelog updated with all changes since last release
|
|
99
|
+
- [ ] Release commit pushed successfully
|
|
100
|
+
|
|
101
|
+
Generated with [Claude Code](https://claude.com/claude-code)
|
|
102
|
+
EOF
|
|
103
|
+
)"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**PR body sections**:
|
|
107
|
+
|
|
108
|
+
| Section | Content |
|
|
109
|
+
|---------|---------|
|
|
110
|
+
| **Summary** | Version being released, one-line description |
|
|
111
|
+
| **Changes** | Grouped changelog entries (from Phase 4) |
|
|
112
|
+
| **Linked Issues** | Auto-extracted `fixes #N`, `closes #N` references |
|
|
113
|
+
| **Version** | Previous version, new version, bump type |
|
|
114
|
+
| **Test Plan** | Checklist confirming all phases passed |
|
|
115
|
+
|
|
116
|
+
### Step 6: Capture and Report PR URL
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# gh pr create outputs the PR URL on success
|
|
120
|
+
pr_url=$(gh pr create ... 2>&1 | tail -1)
|
|
121
|
+
echo "PR created: $pr_url"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Output
|
|
125
|
+
|
|
126
|
+
- **Format**: PR creation record
|
|
127
|
+
- **Structure**:
|
|
128
|
+
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"phase": "pr-creation",
|
|
132
|
+
"pr_url": "https://github.com/owner/repo/pull/N",
|
|
133
|
+
"pr_title": "release: vX.Y.Z",
|
|
134
|
+
"target_branch": "main",
|
|
135
|
+
"source_branch": "feature-branch",
|
|
136
|
+
"linked_issues": ["#1", "#2"],
|
|
137
|
+
"overall": "pass|fail"
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Completion
|
|
142
|
+
|
|
143
|
+
After PR creation, output the final Completion Status:
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
## STATUS: DONE
|
|
147
|
+
|
|
148
|
+
**Summary**: Released vX.Y.Z — PR created at {pr_url}
|
|
149
|
+
|
|
150
|
+
### Details
|
|
151
|
+
- Phases completed: 5/5
|
|
152
|
+
- Version: {previous} -> {new} ({bump_type})
|
|
153
|
+
- PR: {pr_url}
|
|
154
|
+
- Key outputs: CHANGELOG.md updated, release commit pushed, PR created
|
|
155
|
+
|
|
156
|
+
### Outputs
|
|
157
|
+
- CHANGELOG.md (updated)
|
|
158
|
+
- {version_file} (version bumped)
|
|
159
|
+
- Release commit: {sha}
|
|
160
|
+
- PR: {pr_url}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
If there were review warnings, use `DONE_WITH_CONCERNS` and list the warnings in the Details section.
|
|
@@ -80,6 +80,11 @@ Generate Phase files for Sequential execution mode, defining fixed-order executi
|
|
|
80
80
|
|
|
81
81
|
{{quality_checklist}}
|
|
82
82
|
|
|
83
|
+
## Completion Status
|
|
84
|
+
|
|
85
|
+
Return one of: DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT with structured reason.
|
|
86
|
+
See [Completion Status Protocol](./../_shared/SKILL-DESIGN-SPEC.md#13) for output format.
|
|
87
|
+
|
|
83
88
|
## Next Phase
|
|
84
89
|
|
|
85
90
|
{{next_phase_link}}
|
|
@@ -456,6 +461,11 @@ Write(\`${workDir}/${phaseConfig.output}\`, JSON.stringify(result, null, 2));
|
|
|
456
461
|
- [ ] Core logic executed successfully
|
|
457
462
|
- [ ] Output format correct
|
|
458
463
|
|
|
464
|
+
## Completion Status
|
|
465
|
+
|
|
466
|
+
Return one of: DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT with structured reason.
|
|
467
|
+
See [Completion Status Protocol](./../_shared/SKILL-DESIGN-SPEC.md#13) for output format.
|
|
468
|
+
|
|
459
469
|
${nextPhase ?
|
|
460
470
|
`## Next Phase\n\n→ [Phase ${index + 2}: ${nextPhase.name}](${nextPhase.id}.md)` :
|
|
461
471
|
'## Completion\n\nThis is the final phase.'}
|
|
@@ -80,6 +80,10 @@ Bash(\`mkdir -p "\${workDir}"\`);
|
|
|
80
80
|
{{output_structure}}
|
|
81
81
|
\`\`\`
|
|
82
82
|
|
|
83
|
+
## Completion Protocol
|
|
84
|
+
|
|
85
|
+
Follow [Completion Status Protocol](./../_shared/SKILL-DESIGN-SPEC.md#13) and [Escalation Protocol](./../_shared/SKILL-DESIGN-SPEC.md#14).
|
|
86
|
+
|
|
83
87
|
## Reference Documents by Phase
|
|
84
88
|
|
|
85
89
|
> **Important**: Reference documents should be organized by execution phase, clearly marking when and in what scenarios they are used. Avoid listing documents in a flat manner.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: team-interactive-craft
|
|
3
|
+
description: Unified team skill for interactive component crafting. Vanilla JS + CSS interactive components with zero dependencies. Research -> interaction design -> build -> a11y test. Uses team-worker agent architecture. Triggers on "team interactive craft", "interactive component".
|
|
4
|
+
allowed-tools: Agent, AskUserQuestion, Read, Write, Edit, Bash, Glob, Grep, TaskList, TaskGet, TaskUpdate, TaskCreate, TeamCreate, TeamDelete, SendMessage, mcp__ccw-tools__read_file, mcp__ccw-tools__write_file, mcp__ccw-tools__edit_file, mcp__ccw-tools__team_msg
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Team Interactive Craft
|
|
8
|
+
|
|
9
|
+
Systematic interactive component pipeline: research -> interaction design -> build -> a11y test. Built on **team-worker agent architecture** -- all worker roles share a single agent definition with role-specific Phase 2-4 loaded from `roles/<role>/role.md`.
|
|
10
|
+
|
|
11
|
+
## Architecture
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Skill(skill="team-interactive-craft", args="task description")
|
|
15
|
+
|
|
|
16
|
+
SKILL.md (this file) = Router
|
|
17
|
+
|
|
|
18
|
+
+--------------+--------------+
|
|
19
|
+
| |
|
|
20
|
+
no --role flag --role <name>
|
|
21
|
+
| |
|
|
22
|
+
Coordinator Worker
|
|
23
|
+
roles/coordinator/role.md roles/<name>/role.md
|
|
24
|
+
|
|
|
25
|
+
+-- analyze -> dispatch -> spawn workers -> STOP
|
|
26
|
+
|
|
|
27
|
+
+-------+-------+-------+-------+
|
|
28
|
+
v v v v
|
|
29
|
+
[team-worker agents, each loads roles/<role>/role.md]
|
|
30
|
+
researcher interaction-designer builder a11y-tester
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Role Registry
|
|
34
|
+
|
|
35
|
+
| Role | Path | Prefix | Inner Loop |
|
|
36
|
+
|------|------|--------|------------|
|
|
37
|
+
| coordinator | [roles/coordinator/role.md](roles/coordinator/role.md) | -- | -- |
|
|
38
|
+
| researcher | [roles/researcher/role.md](roles/researcher/role.md) | RESEARCH-* | false |
|
|
39
|
+
| interaction-designer | [roles/interaction-designer/role.md](roles/interaction-designer/role.md) | INTERACT-* | false |
|
|
40
|
+
| builder | [roles/builder/role.md](roles/builder/role.md) | BUILD-* | true |
|
|
41
|
+
| a11y-tester | [roles/a11y-tester/role.md](roles/a11y-tester/role.md) | A11Y-* | false |
|
|
42
|
+
|
|
43
|
+
## Role Router
|
|
44
|
+
|
|
45
|
+
Parse `$ARGUMENTS`:
|
|
46
|
+
- Has `--role <name>` -> Read `roles/<name>/role.md`, execute Phase 2-4
|
|
47
|
+
- No `--role` -> `@roles/coordinator/role.md`, execute entry router
|
|
48
|
+
|
|
49
|
+
## Shared Constants
|
|
50
|
+
|
|
51
|
+
- **Session prefix**: `IC`
|
|
52
|
+
- **Session path**: `.workflow/.team/IC-<slug>-<date>/`
|
|
53
|
+
- **CLI tools**: `ccw cli --mode analysis` (read-only), `ccw cli --mode write` (modifications)
|
|
54
|
+
- **Message bus**: `mcp__ccw-tools__team_msg(session_id=<session-id>, ...)`
|
|
55
|
+
- **Max GC rounds**: 2
|
|
56
|
+
|
|
57
|
+
## Worker Spawn Template
|
|
58
|
+
|
|
59
|
+
Coordinator spawns workers using this template:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
Agent({
|
|
63
|
+
subagent_type: "team-worker",
|
|
64
|
+
description: "Spawn <role> worker for <task-id>",
|
|
65
|
+
team_name: "interactive-craft",
|
|
66
|
+
name: "<role>",
|
|
67
|
+
run_in_background: true,
|
|
68
|
+
prompt: `## Role Assignment
|
|
69
|
+
role: <role>
|
|
70
|
+
role_spec: <skill_root>/roles/<role>/role.md
|
|
71
|
+
session: <session-folder>
|
|
72
|
+
session_id: <session-id>
|
|
73
|
+
team_name: interactive-craft
|
|
74
|
+
requirement: <task-description>
|
|
75
|
+
inner_loop: <true|false>
|
|
76
|
+
|
|
77
|
+
Read role_spec file (@<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
|
|
78
|
+
Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).`
|
|
79
|
+
})
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## User Commands
|
|
83
|
+
|
|
84
|
+
| Command | Action |
|
|
85
|
+
|---------|--------|
|
|
86
|
+
| `check` / `status` | View execution status graph |
|
|
87
|
+
| `resume` / `continue` | Advance to next step |
|
|
88
|
+
|
|
89
|
+
## Specs Reference
|
|
90
|
+
|
|
91
|
+
- [specs/pipelines.md](specs/pipelines.md) -- Pipeline definitions and task registry
|
|
92
|
+
- [specs/interaction-patterns.md](specs/interaction-patterns.md) -- Interaction pattern catalog
|
|
93
|
+
- [specs/vanilla-constraints.md](specs/vanilla-constraints.md) -- Zero-dependency rules
|
|
94
|
+
|
|
95
|
+
## Session Directory
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
.workflow/.team/IC-<slug>-<date>/
|
|
99
|
+
+-- .msg/
|
|
100
|
+
| +-- messages.jsonl # Team message bus
|
|
101
|
+
| +-- meta.json # Pipeline config + GC state
|
|
102
|
+
+-- research/ # Researcher output
|
|
103
|
+
| +-- interaction-inventory.json
|
|
104
|
+
| +-- browser-api-audit.json
|
|
105
|
+
| +-- pattern-reference.json
|
|
106
|
+
+-- interaction/ # Interaction designer output
|
|
107
|
+
| +-- blueprints/
|
|
108
|
+
| +-- {component-name}.md
|
|
109
|
+
+-- build/ # Builder output
|
|
110
|
+
| +-- components/
|
|
111
|
+
| +-- {name}.js
|
|
112
|
+
| +-- {name}.css
|
|
113
|
+
+-- a11y/ # A11y tester output
|
|
114
|
+
| +-- a11y-audit-{NNN}.md
|
|
115
|
+
+-- wisdom/ # Cross-task knowledge
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Error Handling
|
|
119
|
+
|
|
120
|
+
| Scenario | Resolution |
|
|
121
|
+
|----------|------------|
|
|
122
|
+
| Unknown command | Error with available command list |
|
|
123
|
+
| Role not found | Error with role registry |
|
|
124
|
+
| Session corruption | Attempt recovery, fallback to manual |
|
|
125
|
+
| Fast-advance conflict | Coordinator reconciles on next callback |
|
|
126
|
+
| Completion action fails | Default to Keep Active |
|
|
127
|
+
| GC loop stuck > 2 rounds | Escalate to user: accept / retry / terminate |
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
role: a11y-tester
|
|
3
|
+
prefix: A11Y
|
|
4
|
+
inner_loop: false
|
|
5
|
+
message_types: [state_update]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Accessibility Tester
|
|
9
|
+
|
|
10
|
+
Test interactive components for keyboard navigation, screen reader compatibility, reduced motion fallback, focus management, and color contrast. Act as Critic in the builder<->a11y-tester Generator-Critic loop. Serve as quality gate before pipeline completion.
|
|
11
|
+
|
|
12
|
+
## Phase 2: Context & Artifact Loading
|
|
13
|
+
|
|
14
|
+
| Input | Source | Required |
|
|
15
|
+
|-------|--------|----------|
|
|
16
|
+
| Built components | <session>/build/components/*.js, *.css | Yes |
|
|
17
|
+
| Interaction blueprints | <session>/interaction/blueprints/*.md | Yes |
|
|
18
|
+
| Research artifacts | <session>/research/browser-api-audit.json | No |
|
|
19
|
+
| Previous audits | <session>/a11y/a11y-audit-*.md | Only for GC re-audit |
|
|
20
|
+
| .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
|
|
21
|
+
|
|
22
|
+
1. Extract session path from task description
|
|
23
|
+
2. Read all built component files (JS + CSS)
|
|
24
|
+
3. Read interaction blueprints for expected behavior reference
|
|
25
|
+
4. If GC re-audit: read previous audit to track improvement/regression
|
|
26
|
+
5. Load audit history from meta.json for trend analysis
|
|
27
|
+
|
|
28
|
+
## Phase 3: Audit Execution
|
|
29
|
+
|
|
30
|
+
Test 5 accessibility dimensions. For each, evaluate every built component:
|
|
31
|
+
|
|
32
|
+
### Dimension 1: Keyboard Navigation (Weight: 25%)
|
|
33
|
+
|
|
34
|
+
| Check | Method | Pass Criteria |
|
|
35
|
+
|-------|--------|---------------|
|
|
36
|
+
| Tab order | Scan tabindex values, focusable elements | Logical tab order, no tabindex > 0 |
|
|
37
|
+
| Arrow key navigation | Check onKeyDown for ArrowLeft/Right/Up/Down | All navigable items reachable via arrows |
|
|
38
|
+
| Enter/Space activation | Check onKeyDown for Enter, Space | All interactive elements activatable |
|
|
39
|
+
| Escape dismissal | Check onKeyDown for Escape | Overlays/modals dismiss on Escape |
|
|
40
|
+
| Focus trap (overlays) | Check focus cycling logic | Tab stays within overlay when open |
|
|
41
|
+
| No keyboard trap | Verify all states have keyboard exit | Can always Tab/Escape out of component |
|
|
42
|
+
|
|
43
|
+
Score: count(pass) / count(total_checks) * 10
|
|
44
|
+
|
|
45
|
+
### Dimension 2: Screen Reader Compatibility (Weight: 25%)
|
|
46
|
+
|
|
47
|
+
| Check | Method | Pass Criteria |
|
|
48
|
+
|-------|--------|---------------|
|
|
49
|
+
| ARIA role | Scan for role attribute | Appropriate role set (slider, dialog, tablist, etc.) |
|
|
50
|
+
| ARIA label | Scan for aria-label, aria-labelledby | All interactive elements have accessible name |
|
|
51
|
+
| ARIA states | Scan for aria-expanded, aria-selected, aria-hidden | Dynamic states update with interaction |
|
|
52
|
+
| Live regions | Scan for aria-live, aria-atomic | State changes announced (polite/assertive as needed) |
|
|
53
|
+
| Semantic HTML | Check element types | Uses button/a/input where appropriate, not div-only |
|
|
54
|
+
| Alt text | Check img/svg elements | Decorative: aria-hidden; informative: alt/aria-label |
|
|
55
|
+
|
|
56
|
+
Score: count(pass) / count(total_checks) * 10
|
|
57
|
+
|
|
58
|
+
### Dimension 3: Reduced Motion (Weight: 20%)
|
|
59
|
+
|
|
60
|
+
| Check | Method | Pass Criteria |
|
|
61
|
+
|-------|--------|---------------|
|
|
62
|
+
| Media query present | Search CSS for prefers-reduced-motion | @media (prefers-reduced-motion: reduce) exists |
|
|
63
|
+
| Transitions disabled | Check reduced-motion block | transition-duration near 0 or removed |
|
|
64
|
+
| Animations disabled | Check reduced-motion block | animation-duration near 0 or removed |
|
|
65
|
+
| Content still accessible | Verify no content depends on animation | Information conveyed without motion |
|
|
66
|
+
| JS respects preference | Check matchMedia usage | JS checks prefers-reduced-motion before animating |
|
|
67
|
+
|
|
68
|
+
Score: count(pass) / count(total_checks) * 10
|
|
69
|
+
|
|
70
|
+
### Dimension 4: Focus Management (Weight: 20%)
|
|
71
|
+
|
|
72
|
+
| Check | Method | Pass Criteria |
|
|
73
|
+
|-------|--------|---------------|
|
|
74
|
+
| Visible focus indicator | Search CSS for :focus-visible | Visible outline/ring on keyboard focus |
|
|
75
|
+
| Focus contrast | Check outline color against background | >= 3:1 contrast ratio |
|
|
76
|
+
| Focus on open | Check overlay/modal open logic | Focus moves to first interactive element |
|
|
77
|
+
| Focus on close | Check overlay/modal close logic | Focus returns to trigger element |
|
|
78
|
+
| No focus loss | Check state transitions | Focus never moves to non-interactive element |
|
|
79
|
+
| Skip link (page mode) | Check for skip navigation | Present if multiple interactive sections |
|
|
80
|
+
|
|
81
|
+
Score: count(pass) / count(total_checks) * 10
|
|
82
|
+
|
|
83
|
+
### Dimension 5: Color Contrast (Weight: 10%)
|
|
84
|
+
|
|
85
|
+
| Check | Method | Pass Criteria |
|
|
86
|
+
|-------|--------|---------------|
|
|
87
|
+
| Text contrast | Evaluate CSS color vs background | >= 4.5:1 for normal text, >= 3:1 for large text |
|
|
88
|
+
| UI component contrast | Evaluate interactive element borders/fills | >= 3:1 against adjacent colors |
|
|
89
|
+
| Focus indicator contrast | Evaluate outline color | >= 3:1 against background |
|
|
90
|
+
| State indication | Check non-color state indicators | State not conveyed by color alone |
|
|
91
|
+
|
|
92
|
+
Score: count(pass) / count(total_checks) * 10
|
|
93
|
+
|
|
94
|
+
### Overall Score Calculation
|
|
95
|
+
|
|
96
|
+
`overallScore = round(keyboard*0.25 + screenReader*0.25 + reducedMotion*0.20 + focus*0.20 + contrast*0.10)`
|
|
97
|
+
|
|
98
|
+
### Issue Classification
|
|
99
|
+
|
|
100
|
+
| Severity | Definition | Examples |
|
|
101
|
+
|----------|-----------|----------|
|
|
102
|
+
| Critical | Component unusable for assistive tech users | No keyboard access, no ARIA role, focus trap |
|
|
103
|
+
| High | Significant barrier, workaround exists | Missing aria-label, no reduced motion, poor focus |
|
|
104
|
+
| Medium | Minor inconvenience | Suboptimal tab order, missing live region |
|
|
105
|
+
| Low | Enhancement opportunity | Could improve contrast, better semantic HTML |
|
|
106
|
+
|
|
107
|
+
### Signal Determination
|
|
108
|
+
|
|
109
|
+
| Condition | Signal |
|
|
110
|
+
|-----------|--------|
|
|
111
|
+
| 0 critical AND 0 high issues | `a11y_passed` (GC CONVERGED) |
|
|
112
|
+
| 0 critical AND high_count > 0 | `a11y_result` (GC REVISION NEEDED) |
|
|
113
|
+
| critical_count > 0 | `fix_required` (CRITICAL FIX NEEDED) |
|
|
114
|
+
|
|
115
|
+
## Phase 4: Report & Output
|
|
116
|
+
|
|
117
|
+
1. Write audit report to `<session>/a11y/a11y-audit-{NNN}.md`:
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
# A11y Audit Report - {NNN}
|
|
121
|
+
|
|
122
|
+
## Summary
|
|
123
|
+
- **Overall Score**: X/10
|
|
124
|
+
- **Signal**: a11y_passed | a11y_result | fix_required
|
|
125
|
+
- **Critical**: N | **High**: N | **Medium**: N | **Low**: N
|
|
126
|
+
|
|
127
|
+
## Dimension Scores
|
|
128
|
+
|
|
129
|
+
| Dimension | Score | Weight | Weighted |
|
|
130
|
+
|-----------|-------|--------|----------|
|
|
131
|
+
| Keyboard Navigation | X/10 | 25% | X.XX |
|
|
132
|
+
| Screen Reader | X/10 | 25% | X.XX |
|
|
133
|
+
| Reduced Motion | X/10 | 20% | X.XX |
|
|
134
|
+
| Focus Management | X/10 | 20% | X.XX |
|
|
135
|
+
| Color Contrast | X/10 | 10% | X.XX |
|
|
136
|
+
|
|
137
|
+
## Issues
|
|
138
|
+
|
|
139
|
+
### Critical
|
|
140
|
+
- [C-001] {description} | File: {file}:{line} | Fix: {remediation}
|
|
141
|
+
|
|
142
|
+
### High
|
|
143
|
+
- [H-001] {description} | File: {file}:{line} | Fix: {remediation}
|
|
144
|
+
|
|
145
|
+
### Medium
|
|
146
|
+
- [M-001] {description} | File: {file}:{line} | Fix: {remediation}
|
|
147
|
+
|
|
148
|
+
## GC Loop Status
|
|
149
|
+
- **Signal**: {signal}
|
|
150
|
+
- **Action Required**: {none | builder fix | escalate}
|
|
151
|
+
|
|
152
|
+
## Trend (if previous audit exists)
|
|
153
|
+
- Previous score: X/10 -> Current: X/10 ({improving|stable|declining})
|
|
154
|
+
- Resolved issues: [list]
|
|
155
|
+
- New issues: [list]
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
2. Update `<session>/wisdom/.msg/meta.json` under `a11y-tester` namespace:
|
|
159
|
+
- Read existing -> merge `{ "a11y-tester": { audit_id, score, critical_count, high_count, signal, timestamp } }` -> write back
|