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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Phase 5: Epics & Stories
|
|
2
2
|
|
|
3
|
-
> **Execution Mode: Agent Delegated**
|
|
4
|
-
> This phase is executed by a `doc-generator` agent. The orchestrator (
|
|
3
|
+
> **Execution Mode: Agent Delegated (Codex v4)**
|
|
4
|
+
> This phase is executed by a `doc-generator` agent. The orchestrator spawns the agent via `spawn_agent({ task_name: "doc-gen-p5", fork_context: false })` and retrieves results via `wait_agent`. The agent reads this file as part of its MANDATORY FIRST STEPS, executes all steps, writes output files, and returns a JSON summary.
|
|
5
5
|
|
|
6
6
|
Decompose the specification into executable Epics and Stories with dependency mapping.
|
|
7
7
|
|
|
@@ -83,10 +83,9 @@ CONSTRAINTS:
|
|
|
83
83
|
- Dependencies should be minimized across Epics
|
|
84
84
|
\${glossary ? \`- Maintain terminology consistency with glossary: \${glossary.terms.map(t => t.term).join(', ')}\` : ''}
|
|
85
85
|
" --tool gemini --mode analysis`,
|
|
86
|
-
run_in_background: true
|
|
87
86
|
});
|
|
88
87
|
|
|
89
|
-
//
|
|
88
|
+
// Parse CLI result
|
|
90
89
|
```
|
|
91
90
|
|
|
92
91
|
### Step 2.5: Codex Epics Review
|
|
@@ -117,10 +116,9 @@ MODE: analysis
|
|
|
117
116
|
EXPECTED: Epic review with: coverage gaps, oversized stories, dependency issues, traceability gaps, quality rating
|
|
118
117
|
CONSTRAINTS: Focus on issues that would block execution planning. Be specific about which Story/Epic has problems.
|
|
119
118
|
" --tool codex --mode analysis`,
|
|
120
|
-
run_in_background: true
|
|
121
119
|
});
|
|
122
120
|
|
|
123
|
-
//
|
|
121
|
+
// Parse Codex review result
|
|
124
122
|
// Integrate feedback into epics before writing files:
|
|
125
123
|
// - Add missing Stories for uncovered Must requirements
|
|
126
124
|
// - Split XL stories in MVP epics into smaller units
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Phase 6.5: Auto-Fix
|
|
2
2
|
|
|
3
|
-
> **Execution Mode: Agent Delegated**
|
|
4
|
-
> This phase is executed by a `doc-generator` agent when triggered by the orchestrator after Phase 6 identifies issues. The agent reads this file
|
|
3
|
+
> **Execution Mode: Agent Delegated (Codex v4)**
|
|
4
|
+
> This phase is executed by a `doc-generator` agent when triggered by the orchestrator after Phase 6 identifies issues. The orchestrator spawns via `spawn_agent({ task_name: "doc-gen-fix", fork_context: false })` and retrieves results via `wait_agent`. The agent reads this file as part of its MANDATORY FIRST STEPS, applies fixes to affected documents, and returns a JSON summary.
|
|
5
5
|
|
|
6
6
|
Automatically repair specification issues identified in Phase 6 Readiness Check.
|
|
7
7
|
|
|
@@ -96,11 +96,10 @@ TASK:
|
|
|
96
96
|
MODE: analysis
|
|
97
97
|
EXPECTED: Corrected document content addressing all listed issues
|
|
98
98
|
CONSTRAINTS: Minimal changes - only fix flagged issues, do not restructure unflagged sections
|
|
99
|
-
" --tool gemini --mode analysis
|
|
100
|
-
run_in_background: true
|
|
99
|
+
" --tool gemini --mode analysis`
|
|
101
100
|
});
|
|
102
101
|
|
|
103
|
-
//
|
|
102
|
+
// Parse result, apply fixes to document
|
|
104
103
|
// Update document version in frontmatter
|
|
105
104
|
}
|
|
106
105
|
```
|
|
@@ -102,10 +102,9 @@ MODE: analysis
|
|
|
102
102
|
EXPECTED: JSON-compatible output with: dimension scores, overall score, gate, issues list (severity + description + location), traceability matrix
|
|
103
103
|
CONSTRAINTS: Be thorough but fair. Focus on actionable issues.
|
|
104
104
|
" --tool gemini --mode analysis`,
|
|
105
|
-
run_in_background: true
|
|
106
105
|
});
|
|
107
106
|
|
|
108
|
-
//
|
|
107
|
+
// Parse CLI result
|
|
109
108
|
```
|
|
110
109
|
|
|
111
110
|
### Step 2b: Codex Technical Depth Review
|
|
@@ -139,7 +138,6 @@ MODE: analysis
|
|
|
139
138
|
EXPECTED: Technical depth review with: per-dimension scores (1-5), specific gaps, improvement recommendations, overall technical readiness assessment
|
|
140
139
|
CONSTRAINTS: Focus on gaps that would cause implementation ambiguity. Ignore cosmetic issues.
|
|
141
140
|
" --tool codex --mode analysis`,
|
|
142
|
-
run_in_background: true
|
|
143
141
|
});
|
|
144
142
|
|
|
145
143
|
// Codex result merged with Gemini result in Step 3
|
|
@@ -350,7 +348,9 @@ if (selection === "Execute via lite-plan") {
|
|
|
350
348
|
const epicContent = Read(firstMvpFile);
|
|
351
349
|
const title = extractTitle(epicContent); // First # heading
|
|
352
350
|
const description = extractSection(epicContent, "Description");
|
|
353
|
-
|
|
351
|
+
// Invoke workflow-lite-plan skill with Epic description
|
|
352
|
+
// Codex: use skill invocation mechanism for the target skill
|
|
353
|
+
invoke_skill("workflow-lite-plan", `"${title}: ${description}"`)
|
|
354
354
|
}
|
|
355
355
|
|
|
356
356
|
if (selection === "Full planning" || selection === "Create roadmap") {
|
|
@@ -374,8 +374,8 @@ SCOPE: ${extractScope(specSummary)}
|
|
|
374
374
|
CONTEXT: Generated from spec session ${specConfig.session_id}. Source: ${workDir}/`;
|
|
375
375
|
|
|
376
376
|
// Step C: Create WFS session (provides session directory + .brainstorming/)
|
|
377
|
-
|
|
378
|
-
//
|
|
377
|
+
invoke_skill("workflow:session:start", `--auto "${structuredDesc}"`)
|
|
378
|
+
// -> Produces sessionId (WFS-xxx) and session directory at .workflow/active/{sessionId}/
|
|
379
379
|
|
|
380
380
|
// Step D: Create .brainstorming/ bridge files
|
|
381
381
|
const brainstormDir = `.workflow/active/${sessionId}/.brainstorming`;
|
|
@@ -476,9 +476,9 @@ ${extractSection(epicContent, "Architecture")}
|
|
|
476
476
|
// → context-package.json.brainstorm_artifacts populated
|
|
477
477
|
// → action-planning-agent loads guidance_specification (P1) + feature_index (P2)
|
|
478
478
|
if (selection === "Full planning") {
|
|
479
|
-
|
|
479
|
+
invoke_skill("workflow-plan", `"${structuredDesc}"`)
|
|
480
480
|
} else {
|
|
481
|
-
|
|
481
|
+
invoke_skill("workflow:req-plan-with-file", `"${extractGoal(specSummary)}"`)
|
|
482
482
|
}
|
|
483
483
|
}
|
|
484
484
|
|
|
@@ -281,12 +281,12 @@ const answer = request_user_input({
|
|
|
281
281
|
const selection = answer.answers.next_step.answers[0];
|
|
282
282
|
if (selection === "Execute via team-planex(Recommended)") {
|
|
283
283
|
const issueIds = createdIssues.map(i => i.issue_id).join(',');
|
|
284
|
-
|
|
284
|
+
invoke_skill("team-planex", `--issues ${issueIds}`);
|
|
285
285
|
}
|
|
286
286
|
|
|
287
287
|
if (selection === "Wave 1 only") {
|
|
288
288
|
const wave1Ids = createdIssues.filter(i => i.wave === 1).map(i => i.issue_id).join(',');
|
|
289
|
-
|
|
289
|
+
invoke_skill("team-planex", `--issues ${wave1Ids}`);
|
|
290
290
|
}
|
|
291
291
|
|
|
292
292
|
if (selection === "Done") {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: spec-setup
|
|
3
3
|
description: Initialize project-level state and configure specs via interactive questionnaire.
|
|
4
4
|
argument-hint: "[--regenerate] [--skip-specs] [--reset]"
|
|
5
|
-
allowed-tools: spawn_agent,
|
|
5
|
+
allowed-tools: spawn_agent, wait_agent, send_message, assign_task, close_agent, request_user_input, Read, Write, Edit, Bash, Glob, Grep
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Workflow Spec Setup Command
|
|
@@ -184,11 +184,11 @@ Project root: ${projectRoot}
|
|
|
184
184
|
})
|
|
185
185
|
|
|
186
186
|
// Wait for completion
|
|
187
|
-
const result =
|
|
187
|
+
const result = wait_agent({ targets: [exploreAgent], timeout_ms: 600000 })
|
|
188
188
|
|
|
189
189
|
if (result.timed_out) {
|
|
190
|
-
|
|
191
|
-
const retry =
|
|
190
|
+
assign_task({ target: exploreAgent, items: [{ type: "text", text: "Complete analysis now and write project-tech.json." }] })
|
|
191
|
+
const retry = wait_agent({ targets: [exploreAgent], timeout_ms: 300000 })
|
|
192
192
|
if (retry.timed_out) throw new Error('Agent timeout')
|
|
193
193
|
}
|
|
194
194
|
|
|
@@ -0,0 +1,220 @@
|
|
|
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 with roles/ for domain logic. Coordinator orchestrates pipeline with GC loops and sync points. Triggers on "team interactive craft", "interactive component".
|
|
4
|
+
allowed-tools: spawn_agent(*), wait_agent(*), send_message(*), assign_task(*), close_agent(*), list_agents(*), report_agent_job_result(*), request_user_input(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*), 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
|
+
## Delegation Lock
|
|
50
|
+
|
|
51
|
+
**Coordinator is a PURE ORCHESTRATOR. It coordinates, it does NOT do.**
|
|
52
|
+
|
|
53
|
+
Before calling ANY tool, apply this check:
|
|
54
|
+
|
|
55
|
+
| Tool Call | Verdict | Reason |
|
|
56
|
+
|-----------|---------|--------|
|
|
57
|
+
| `spawn_agent`, `wait_agent`, `close_agent`, `send_message`, `assign_task` | ALLOWED | Orchestration |
|
|
58
|
+
| `list_agents` | ALLOWED | Agent health check |
|
|
59
|
+
| `request_user_input` | ALLOWED | User interaction |
|
|
60
|
+
| `mcp__ccw-tools__team_msg` | ALLOWED | Message bus |
|
|
61
|
+
| `Read/Write` on `.workflow/.team/` files | ALLOWED | Session state |
|
|
62
|
+
| `Read` on `roles/`, `commands/`, `specs/` | ALLOWED | Loading own instructions |
|
|
63
|
+
| `Read/Grep/Glob` on project source code | BLOCKED | Delegate to worker |
|
|
64
|
+
| `Edit` on any file outside `.workflow/` | BLOCKED | Delegate to worker |
|
|
65
|
+
| `Bash("ccw cli ...")` | BLOCKED | Only workers call CLI |
|
|
66
|
+
| `Bash` running build/test/lint commands | BLOCKED | Delegate to worker |
|
|
67
|
+
|
|
68
|
+
**If a tool call is BLOCKED**: STOP. Create a task, spawn a worker.
|
|
69
|
+
|
|
70
|
+
**No exceptions for "simple" tasks.** Even a single-file read-and-report MUST go through spawn_agent.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Shared Constants
|
|
75
|
+
|
|
76
|
+
- **Session prefix**: `IC`
|
|
77
|
+
- **Session path**: `.workflow/.team/IC-<slug>-<date>/`
|
|
78
|
+
- **CLI tools**: `ccw cli --mode analysis` (read-only), `ccw cli --mode write` (modifications)
|
|
79
|
+
- **Message bus**: `mcp__ccw-tools__team_msg(session_id=<session-id>, ...)`
|
|
80
|
+
- **Max GC rounds**: 2
|
|
81
|
+
|
|
82
|
+
## Worker Spawn Template
|
|
83
|
+
|
|
84
|
+
Coordinator spawns workers using this template:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
spawn_agent({
|
|
88
|
+
agent_type: "team_worker",
|
|
89
|
+
task_name: "<task-id>",
|
|
90
|
+
fork_context: false,
|
|
91
|
+
items: [
|
|
92
|
+
{ type: "text", text: `## Role Assignment
|
|
93
|
+
role: <role>
|
|
94
|
+
role_spec: <skill_root>/roles/<role>/role.md
|
|
95
|
+
session: <session-folder>
|
|
96
|
+
session_id: <session-id>
|
|
97
|
+
requirement: <task-description>
|
|
98
|
+
inner_loop: <true|false>
|
|
99
|
+
|
|
100
|
+
Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.` },
|
|
101
|
+
|
|
102
|
+
{ type: "text", text: `## Task Context
|
|
103
|
+
task_id: <task-id>
|
|
104
|
+
title: <task-title>
|
|
105
|
+
description: <task-description>
|
|
106
|
+
pipeline_phase: <pipeline-phase>` },
|
|
107
|
+
|
|
108
|
+
{ type: "text", text: `## Upstream Context
|
|
109
|
+
<prev_context>` }
|
|
110
|
+
]
|
|
111
|
+
})
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
After spawning, use `wait_agent({ targets: [...], timeout_ms: 900000 })` to collect results, then `close_agent({ target })` each worker.
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
### Model Selection Guide
|
|
118
|
+
|
|
119
|
+
Interactive craft is a technical pipeline where research informs interaction design, which guides implementation. Builder needs creative problem-solving for vanilla JS constraints, a11y-tester needs thorough analysis.
|
|
120
|
+
|
|
121
|
+
| Role | reasoning_effort | Rationale |
|
|
122
|
+
|------|-------------------|-----------|
|
|
123
|
+
| researcher | high | Deep analysis of existing interactive patterns and browser APIs |
|
|
124
|
+
| interaction-designer | high | Creative state machine and event flow design |
|
|
125
|
+
| builder | high | Complex vanilla JS implementation with GPU animation and touch handling |
|
|
126
|
+
| a11y-tester | high | Thorough accessibility audit must catch all keyboard/screen reader issues |
|
|
127
|
+
|
|
128
|
+
### Research-to-Design Context Flow
|
|
129
|
+
|
|
130
|
+
Researcher findings must reach interaction-designer via coordinator's upstream context:
|
|
131
|
+
```
|
|
132
|
+
// After RESEARCH-001 completes, coordinator sends findings to interaction-designer
|
|
133
|
+
spawn_agent({
|
|
134
|
+
agent_type: "team_worker",
|
|
135
|
+
task_name: "INTERACT-001",
|
|
136
|
+
fork_context: false,
|
|
137
|
+
items: [
|
|
138
|
+
...,
|
|
139
|
+
{ type: "text", text: `## Upstream Context
|
|
140
|
+
Research findings: <session>/research/interaction-inventory.json
|
|
141
|
+
Browser API audit: <session>/research/browser-api-audit.json
|
|
142
|
+
Pattern reference: <session>/research/pattern-reference.json` }
|
|
143
|
+
]
|
|
144
|
+
})
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## User Commands
|
|
148
|
+
|
|
149
|
+
| Command | Action |
|
|
150
|
+
|---------|--------|
|
|
151
|
+
| `check` / `status` | View execution status graph |
|
|
152
|
+
| `resume` / `continue` | Advance to next step |
|
|
153
|
+
|
|
154
|
+
## Specs Reference
|
|
155
|
+
|
|
156
|
+
- [specs/pipelines.md](specs/pipelines.md) -- Pipeline definitions and task registry
|
|
157
|
+
- [specs/interaction-patterns.md](specs/interaction-patterns.md) -- Interaction pattern catalog
|
|
158
|
+
- [specs/vanilla-constraints.md](specs/vanilla-constraints.md) -- Zero-dependency rules
|
|
159
|
+
|
|
160
|
+
## Session Directory
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
.workflow/.team/IC-<slug>-<date>/
|
|
164
|
+
+-- .msg/
|
|
165
|
+
| +-- messages.jsonl # Team message bus
|
|
166
|
+
| +-- meta.json # Pipeline config + GC state
|
|
167
|
+
+-- research/ # Researcher output
|
|
168
|
+
| +-- interaction-inventory.json
|
|
169
|
+
| +-- browser-api-audit.json
|
|
170
|
+
| +-- pattern-reference.json
|
|
171
|
+
+-- interaction/ # Interaction designer output
|
|
172
|
+
| +-- blueprints/
|
|
173
|
+
| +-- {component-name}.md
|
|
174
|
+
+-- build/ # Builder output
|
|
175
|
+
| +-- components/
|
|
176
|
+
| +-- {name}.js
|
|
177
|
+
| +-- {name}.css
|
|
178
|
+
+-- a11y/ # A11y tester output
|
|
179
|
+
| +-- a11y-audit-{NNN}.md
|
|
180
|
+
+-- wisdom/ # Cross-task knowledge
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## v4 Agent Coordination
|
|
184
|
+
|
|
185
|
+
### Message Semantics
|
|
186
|
+
|
|
187
|
+
| Intent | API | Example |
|
|
188
|
+
|--------|-----|---------|
|
|
189
|
+
| Queue supplementary info (don't interrupt) | `send_message` | Send research findings to running interaction-designer |
|
|
190
|
+
| Assign build from reviewed blueprints | `assign_task` | Assign BUILD task after blueprint review |
|
|
191
|
+
| Check running agents | `list_agents` | Verify agent health during resume |
|
|
192
|
+
|
|
193
|
+
### Agent Health Check
|
|
194
|
+
|
|
195
|
+
Use `list_agents({})` in handleResume and handleComplete:
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
// Reconcile session state with actual running agents
|
|
199
|
+
const running = list_agents({})
|
|
200
|
+
// Compare with tasks.json active_agents
|
|
201
|
+
// Reset orphaned tasks (in_progress but agent gone) to pending
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Named Agent Targeting
|
|
205
|
+
|
|
206
|
+
Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
|
|
207
|
+
- `send_message({ target: "INTERACT-001", items: [...] })` -- send research findings to interaction-designer
|
|
208
|
+
- `assign_task({ target: "BUILD-001", items: [...] })` -- assign implementation from interaction blueprint
|
|
209
|
+
- `close_agent({ target: "A11Y-001" })` -- cleanup after a11y audit
|
|
210
|
+
|
|
211
|
+
## Error Handling
|
|
212
|
+
|
|
213
|
+
| Scenario | Resolution |
|
|
214
|
+
|----------|------------|
|
|
215
|
+
| Unknown command | Error with available command list |
|
|
216
|
+
| Role not found | Error with role registry |
|
|
217
|
+
| Session corruption | Attempt recovery, fallback to manual |
|
|
218
|
+
| Fast-advance conflict | Coordinator reconciles on next callback |
|
|
219
|
+
| Completion action fails | Default to Keep Active |
|
|
220
|
+
| 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
|