claude-code-workflow 7.2.27 → 7.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ccw/specs/architecture-constraints.md +5 -0
- package/.claude/skills/_shared/SKILL-DESIGN-SPEC.md +140 -0
- package/.claude/skills/investigate/SKILL.md +110 -0
- package/.claude/skills/investigate/phases/01-root-cause-investigation.md +132 -0
- package/.claude/skills/investigate/phases/02-pattern-analysis.md +126 -0
- package/.claude/skills/investigate/phases/03-hypothesis-testing.md +177 -0
- package/.claude/skills/investigate/phases/04-implementation.md +139 -0
- package/.claude/skills/investigate/phases/05-verification-report.md +153 -0
- package/.claude/skills/investigate/specs/debug-report-format.md +226 -0
- package/.claude/skills/investigate/specs/iron-law.md +101 -0
- package/.claude/skills/security-audit/SKILL.md +125 -0
- package/.claude/skills/security-audit/phases/01-supply-chain-scan.md +139 -0
- package/.claude/skills/security-audit/phases/02-owasp-review.md +156 -0
- package/.claude/skills/security-audit/phases/03-threat-modeling.md +180 -0
- package/.claude/skills/security-audit/phases/04-report-tracking.md +177 -0
- package/.claude/skills/security-audit/specs/owasp-checklist.md +442 -0
- package/.claude/skills/security-audit/specs/scoring-gates.md +141 -0
- package/.claude/skills/ship/SKILL.md +105 -0
- package/.claude/skills/ship/phases/01-preflight-checks.md +121 -0
- package/.claude/skills/ship/phases/02-code-review.md +137 -0
- package/.claude/skills/ship/phases/03-version-bump.md +171 -0
- package/.claude/skills/ship/phases/04-changelog-commit.md +167 -0
- package/.claude/skills/ship/phases/05-pr-creation.md +163 -0
- package/.claude/skills/skill-generator/templates/sequential-phase.md +10 -0
- package/.claude/skills/skill-generator/templates/skill-md.md +4 -0
- package/.claude/skills/team-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/investigate/agents/investigator.md +392 -0
- package/.codex/skills/investigate/orchestrator.md +362 -0
- package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
- package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
- package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
- package/.codex/skills/investigate/phases/04-implementation.md +195 -0
- package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
- package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
- package/.codex/skills/security-audit/orchestrator.md +384 -0
- package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
- package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
- package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
- package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
- package/.codex/skills/ship/agents/ship-operator.md +318 -0
- package/.codex/skills/ship/orchestrator.md +426 -0
- package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
- package/.codex/skills/ship/phases/02-code-review.md +228 -0
- package/.codex/skills/ship/phases/03-version-bump.md +259 -0
- package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
- package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
- package/.codex/skills/team-interactive-craft/SKILL.md +220 -0
- package/.codex/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
- package/.codex/skills/team-interactive-craft/roles/builder/role.md +216 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +162 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +233 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/role.md +209 -0
- package/.codex/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
- package/.codex/skills/team-interactive-craft/roles/researcher/role.md +131 -0
- package/.codex/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
- package/.codex/skills/team-interactive-craft/specs/pipelines.md +85 -0
- package/.codex/skills/team-interactive-craft/specs/team-config.json +105 -0
- package/.codex/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
- package/.codex/skills/team-motion-design/SKILL.md +222 -0
- package/.codex/skills/team-motion-design/roles/animator/role.md +194 -0
- package/.codex/skills/team-motion-design/roles/choreographer/role.md +164 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/dispatch.md +168 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/monitor.md +242 -0
- package/.codex/skills/team-motion-design/roles/coordinator/role.md +210 -0
- package/.codex/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
- package/.codex/skills/team-motion-design/roles/motion-tester/role.md +175 -0
- package/.codex/skills/team-motion-design/specs/gpu-constraints.md +114 -0
- package/.codex/skills/team-motion-design/specs/motion-tokens.md +128 -0
- package/.codex/skills/team-motion-design/specs/pipelines.md +74 -0
- package/.codex/skills/team-motion-design/specs/reduced-motion.md +129 -0
- package/.codex/skills/team-motion-design/specs/team-config.json +99 -0
- package/.codex/skills/team-ui-polish/SKILL.md +218 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +167 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/monitor.md +230 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-ui-polish/roles/diagnostician/role.md +164 -0
- package/.codex/skills/team-ui-polish/roles/optimizer/role.md +229 -0
- package/.codex/skills/team-ui-polish/roles/scanner/role.md +360 -0
- package/.codex/skills/team-ui-polish/roles/verifier/role.md +142 -0
- package/.codex/skills/team-ui-polish/specs/anti-patterns.md +141 -0
- package/.codex/skills/team-ui-polish/specs/design-standards.md +356 -0
- package/.codex/skills/team-ui-polish/specs/fix-strategies.md +235 -0
- package/.codex/skills/team-ui-polish/specs/pipelines.md +81 -0
- package/.codex/skills/team-ui-polish/specs/scoring-guide.md +162 -0
- package/.codex/skills/team-ui-polish/specs/team-config.json +73 -0
- package/.codex/skills/team-visual-a11y/SKILL.md +319 -0
- package/.codex/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +188 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +281 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
- package/.codex/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
- package/.codex/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
- package/.codex/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
- package/.codex/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
- package/.codex/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
- package/.codex/skills/team-visual-a11y/specs/pipelines.md +98 -0
- package/.codex/skills/team-visual-a11y/specs/team-config.json +109 -0
- package/.codex/skills/team-visual-a11y/specs/typography-scale.md +165 -0
- package/.codex/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
- package/README.md +8 -0
- package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
- package/ccw/dist/core/hooks/hook-templates.js +114 -1
- package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
- package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/cli-routes.js +34 -0
- package/ccw/dist/core/routes/cli-routes.js.map +1 -1
- package/ccw/dist/core/routes/system-routes.js +2 -2
- package/ccw/dist/core/routes/system-routes.js.map +1 -1
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-BjP1ydDR.js} +2 -2
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-BjP1ydDR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-CAX3xqMf.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-CAX3xqMf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-CtWlmztq.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-CtWlmztq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-hR4a-eLX.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-hR4a-eLX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-DzNPkFN9.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-DzNPkFN9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BPEGN4TT.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BPEGN4TT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cf0r2RHY.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cf0r2RHY.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DEm1rJ4h.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DEm1rJ4h.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-BpeWw8HO.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-BpeWw8HO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-BEsmh2vF.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-BEsmh2vF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-B30SFdtU.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-B30SFdtU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-BVvMpg1O.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-BVvMpg1O.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-CL73dHbh.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-CL73dHbh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-BL-28lMZ.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-BL-28lMZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BzZDciHZ.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BzZDciHZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-CDp6-d8P.js} +2 -2
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-CDp6-d8P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-fZY_7O9n.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-fZY_7O9n.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-4LJeC9bq.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-4LJeC9bq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-Bpigrbhw.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-Bpigrbhw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-BP0zJc1R.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-BP0zJc1R.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-CSt2oVKQ.js} +2 -2
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-CSt2oVKQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-B-xaMA0w.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-B-xaMA0w.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-CJqo_7DY.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-CJqo_7DY.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-ibZeQA-Y.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-ibZeQA-Y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-DgJ4ctPQ.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-DgJ4ctPQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-Cit0Yq0D.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-Cit0Yq0D.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-Ce1HDIK0.js} +2 -2
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-Ce1HDIK0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-J1KikNrk.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-J1KikNrk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CdBjTmth.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CdBjTmth.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-B9ZK7LvX.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-B9ZK7LvX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-CW_nS5UR.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-CW_nS5UR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SettingsPage-BPDbXPSM.js → SettingsPage-B2PYzSoO.js} +35 -35
- package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +1 -0
- package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js → SkillsManagerPage-CTnWrrwp.js} +2 -2
- package/ccw/frontend/dist/assets/{SkillsManagerPage-D3LzbpJY.js.map → SkillsManagerPage-CTnWrrwp.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DJpi9XQL.js} +2 -2
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DJpi9XQL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-Ac6Ov7uy.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-Ac6Ov7uy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-DZAAspqR.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-DZAAspqR.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-BJkwfhIZ.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-BJkwfhIZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-BJgjxBgb.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-BJgjxBgb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-D1WekoOy.js} +2 -2
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-D1WekoOy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-DxemgIhF.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-DxemgIhF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-CjS83f1V.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-CjS83f1V.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-B5PUcn8I.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-B5PUcn8I.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-DCc9aPbb.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-DCc9aPbb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-DOwFtzak.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-DOwFtzak.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-96qH3aFh.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-96qH3aFh.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CCxSuil1.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CCxSuil1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-CZNSJFdq.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-CZNSJFdq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-h8xtvw2_.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-h8xtvw2_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-D3NY0bm6.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-D3NY0bm6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-Cy2vkc8p.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-Cy2vkc8p.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-Bzq3U1Mx.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-Bzq3U1Mx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-DwuwPDPi.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-DwuwPDPi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-q9g-bknU.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-q9g-bknU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-CL6vb42J.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-CL6vb42J.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-BkrcQBly.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-BkrcQBly.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-BQbwyNeV.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-BQbwyNeV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-x5_7DrN7.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-x5_7DrN7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-DTyWXwzf.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-DTyWXwzf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-80O0kJO7.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-80O0kJO7.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-DDlN2Bwa.js} +2 -2
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-DDlN2Bwa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-B9A3Hnrk.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-B9A3Hnrk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-Bs80iCX0.js} +2 -2
- package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-Bs80iCX0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index-mbeo62f8.js} +2 -2
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index-mbeo62f8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-rLgoBCfV.js} +3 -3
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-rLgoBCfV.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-C1niOWJx.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-C1niOWJx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-BTmI7SUg.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-BTmI7SUg.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CB9HKeuZ.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CB9HKeuZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-koEYiemK.js} +2 -2
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-koEYiemK.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-v2_GaLdC.js} +2 -2
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-v2_GaLdC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BQNfAqG_.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BQNfAqG_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-Dzq5LGg9.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-Dzq5LGg9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CtkoJXcz.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CtkoJXcz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-CH3smL37.js} +2 -2
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-CH3smL37.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CZ0aL_yF.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CZ0aL_yF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-F2A_J4l6.js} +2 -2
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-F2A_J4l6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-Byxot0YU.js} +2 -2
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-Byxot0YU.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-JjqhUkpw.js} +2 -2
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-JjqhUkpw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2--SuN9rAt.js} +2 -2
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2--SuN9rAt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-BbngGB2h.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-BbngGB2h.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-CgrHgZSl.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-CgrHgZSl.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-BU3TQr7Z.js} +2 -2
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-BU3TQr7Z.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CKs7nnn3.js} +2 -2
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CKs7nnn3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-DW5tsDW6.js} +2 -2
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-DW5tsDW6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-BHm7w3ON.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-BHm7w3ON.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-DYR7PWwt.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-DYR7PWwt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-D0TVgQD_.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-D0TVgQD_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-DfY8mAP8.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-DfY8mAP8.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-CGusDp0F.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-CGusDp0F.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-CIwh0fF1.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-CIwh0fF1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-FMyFv39K.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-FMyFv39K.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-B2qhsoTb.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-B2qhsoTb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-cxKXMBm3.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-cxKXMBm3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-B-xUT_z-.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-B-xUT_z-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-DZV_3lPr.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-DZV_3lPr.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +105 -105
- package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# Command: Dispatch
|
|
2
|
+
|
|
3
|
+
Create the visual accessibility task chain with correct dependencies and structured task descriptions. Supports audit-only and full pipeline modes.
|
|
4
|
+
|
|
5
|
+
## Phase 2: Context Loading
|
|
6
|
+
|
|
7
|
+
| Input | Source | Required |
|
|
8
|
+
|-------|--------|----------|
|
|
9
|
+
| User requirement | From coordinator Phase 1 | Yes |
|
|
10
|
+
| Session folder | From coordinator Phase 2 | Yes |
|
|
11
|
+
| Pipeline mode | From session meta.json `pipeline` | Yes |
|
|
12
|
+
| Target info | From session meta.json `target` | Yes |
|
|
13
|
+
|
|
14
|
+
1. Load user requirement and scope from meta.json
|
|
15
|
+
2. Load pipeline stage definitions from specs/pipelines.md
|
|
16
|
+
3. Read `pipeline` and `target` from meta.json
|
|
17
|
+
|
|
18
|
+
## Phase 3: Task Chain Creation (Mode-Branched)
|
|
19
|
+
|
|
20
|
+
### Task Description Template
|
|
21
|
+
|
|
22
|
+
Every task description uses structured format:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
TaskCreate({
|
|
26
|
+
subject: "<TASK-ID>",
|
|
27
|
+
description: "PURPOSE: <what this task achieves> | Success: <measurable completion criteria>
|
|
28
|
+
TASK:
|
|
29
|
+
- <step 1: specific action>
|
|
30
|
+
- <step 2: specific action>
|
|
31
|
+
- <step 3: specific action>
|
|
32
|
+
CONTEXT:
|
|
33
|
+
- Session: <session-folder>
|
|
34
|
+
- Target: <URL or file path>
|
|
35
|
+
- WCAG Level: <AA|AAA>
|
|
36
|
+
- Upstream artifacts: <artifact-1>, <artifact-2>
|
|
37
|
+
- Shared memory: <session>/.msg/meta.json
|
|
38
|
+
EXPECTED: <deliverable path> + <quality criteria>
|
|
39
|
+
CONSTRAINTS: <scope limits, focus areas>"
|
|
40
|
+
})
|
|
41
|
+
TaskUpdate({ taskId: "<TASK-ID>", addBlockedBy: [<dependency-list>], owner: "<role>" })
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Mode Router
|
|
45
|
+
|
|
46
|
+
| Mode | Action |
|
|
47
|
+
|------|--------|
|
|
48
|
+
| `audit-only` | Create 4 tasks: [COLOR-001 + TYPO-001 + FOCUS-001] parallel -> REMED-001 |
|
|
49
|
+
| `full` | Create 7 tasks: [COLOR-001 + TYPO-001 + FOCUS-001] -> REMED-001 -> FIX-001 -> [COLOR-002 + FOCUS-002] |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### Audit-Only Pipeline Task Chain
|
|
54
|
+
|
|
55
|
+
**COLOR-001** (color-auditor):
|
|
56
|
+
```
|
|
57
|
+
TaskCreate({
|
|
58
|
+
subject: "COLOR-001",
|
|
59
|
+
description: "PURPOSE: OKLCH color contrast audit for all color combinations | Success: Complete color audit with WCAG 2.1 + APCA contrast ratios and color blindness assessment
|
|
60
|
+
TASK:
|
|
61
|
+
- Extract all color values (OKLCH, HSL, RGB, hex) from stylesheets
|
|
62
|
+
- Calculate WCAG 2.1 contrast ratios for all text/background combinations
|
|
63
|
+
- Calculate APCA Lc values for body and large text
|
|
64
|
+
- Assess OKLCH lightness ranges for text and backgrounds
|
|
65
|
+
- Simulate color blindness (protanopia, deuteranopia, tritanopia)
|
|
66
|
+
- Check dark mode color parity if applicable
|
|
67
|
+
CONTEXT:
|
|
68
|
+
- Session: <session-folder>
|
|
69
|
+
- Target: <target>
|
|
70
|
+
- WCAG Level: <level>
|
|
71
|
+
- Shared memory: <session>/.msg/meta.json
|
|
72
|
+
EXPECTED: <session>/audits/color/color-audit-001.md | Pass/fail per color combination
|
|
73
|
+
CONSTRAINTS: Read-only analysis | Use Chrome DevTools for computed styles when available"
|
|
74
|
+
})
|
|
75
|
+
TaskUpdate({ taskId: "COLOR-001", owner: "color-auditor" })
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**TYPO-001** (typo-auditor):
|
|
79
|
+
```
|
|
80
|
+
TaskCreate({
|
|
81
|
+
subject: "TYPO-001",
|
|
82
|
+
description: "PURPOSE: Typography readability audit across all viewports | Success: Complete typography audit with size, line-height, reading width at each breakpoint
|
|
83
|
+
TASK:
|
|
84
|
+
- Audit font sizes at each breakpoint (320px, 768px, 1024px, 1400px)
|
|
85
|
+
- Validate minimum body text >= 16px on mobile
|
|
86
|
+
- Check line-height ratios (body 1.5-1.75, headings 1.1-1.3)
|
|
87
|
+
- Validate clamp() functions for responsive scaling
|
|
88
|
+
- Measure reading width (45-75 characters per line)
|
|
89
|
+
- Assess font loading strategy (font-display values)
|
|
90
|
+
CONTEXT:
|
|
91
|
+
- Session: <session-folder>
|
|
92
|
+
- Target: <target>
|
|
93
|
+
- WCAG Level: <level>
|
|
94
|
+
- Shared memory: <session>/.msg/meta.json
|
|
95
|
+
EXPECTED: <session>/audits/typography/typo-audit-001.md | Breakpoint-by-breakpoint report
|
|
96
|
+
CONSTRAINTS: Read-only analysis | Screenshot at multiple viewports if Chrome DevTools available"
|
|
97
|
+
})
|
|
98
|
+
TaskUpdate({ taskId: "TYPO-001", owner: "typo-auditor" })
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**FOCUS-001** (focus-auditor):
|
|
102
|
+
```
|
|
103
|
+
TaskCreate({
|
|
104
|
+
subject: "FOCUS-001",
|
|
105
|
+
description: "PURPOSE: Focus management and keyboard accessibility audit | Success: Complete focus audit with tab order, indicator visibility, ARIA coverage
|
|
106
|
+
TASK:
|
|
107
|
+
- Audit tab order for logical sequence and no tab traps
|
|
108
|
+
- Check focus indicator visibility (outline >= 2px, contrast >= 3:1)
|
|
109
|
+
- Verify :focus-visible usage for keyboard vs mouse distinction
|
|
110
|
+
- Check skip link presence and functionality
|
|
111
|
+
- Audit focus traps in modals/dialogs (Tab cycles, Escape dismisses)
|
|
112
|
+
- Verify ARIA live regions for dynamic content
|
|
113
|
+
- Check ARIA roles and states on interactive elements
|
|
114
|
+
- Validate keyboard operability (Enter/Space, Arrow keys)
|
|
115
|
+
CONTEXT:
|
|
116
|
+
- Session: <session-folder>
|
|
117
|
+
- Target: <target>
|
|
118
|
+
- WCAG Level: <level>
|
|
119
|
+
- Shared memory: <session>/.msg/meta.json
|
|
120
|
+
EXPECTED: <session>/audits/focus/focus-audit-001.md | Element-by-element focus report
|
|
121
|
+
CONSTRAINTS: Read-only analysis | Tab through elements if Chrome DevTools available"
|
|
122
|
+
})
|
|
123
|
+
TaskUpdate({ taskId: "FOCUS-001", owner: "focus-auditor" })
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**CRITICAL**: COLOR-001, TYPO-001, FOCUS-001 have NO blockedBy -- they run in PARALLEL.
|
|
127
|
+
|
|
128
|
+
**REMED-001** (remediation-planner):
|
|
129
|
+
```
|
|
130
|
+
TaskCreate({
|
|
131
|
+
subject: "REMED-001",
|
|
132
|
+
description: "PURPOSE: Synthesize all 3 audit findings into prioritized remediation plan | Success: Complete remediation plan with severity ranking, code-level fix guidance, WCAG criterion mapping
|
|
133
|
+
TASK:
|
|
134
|
+
- Read color, typography, and focus audit reports
|
|
135
|
+
- Merge and deduplicate findings
|
|
136
|
+
- Prioritize by severity (Critical > High > Medium > Low)
|
|
137
|
+
- Group by file/component for efficient fixing
|
|
138
|
+
- Provide code-level fix guidance (specific CSS/HTML changes)
|
|
139
|
+
- Map each fix to WCAG success criterion
|
|
140
|
+
- Estimate effort per fix
|
|
141
|
+
CONTEXT:
|
|
142
|
+
- Session: <session-folder>
|
|
143
|
+
- Target: <target>
|
|
144
|
+
- WCAG Level: <level>
|
|
145
|
+
- Upstream artifacts: audits/color/color-audit-001.md, audits/typography/typo-audit-001.md, audits/focus/focus-audit-001.md
|
|
146
|
+
- Shared memory: <session>/.msg/meta.json
|
|
147
|
+
EXPECTED: <session>/remediation/remediation-plan.md | All critical/high issues addressed
|
|
148
|
+
CONSTRAINTS: Read-only synthesis | No code modifications"
|
|
149
|
+
})
|
|
150
|
+
TaskUpdate({ taskId: "REMED-001", addBlockedBy: ["COLOR-001", "TYPO-001", "FOCUS-001"], owner: "remediation-planner" })
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
### Full Pipeline Task Chain
|
|
156
|
+
|
|
157
|
+
Same as audit-only (COLOR-001, TYPO-001, FOCUS-001, REMED-001), plus:
|
|
158
|
+
|
|
159
|
+
**FIX-001** (fix-implementer):
|
|
160
|
+
```
|
|
161
|
+
TaskCreate({
|
|
162
|
+
subject: "FIX-001",
|
|
163
|
+
description: "PURPOSE: Implement accessibility fixes from remediation plan | Success: All critical and high severity issues fixed with passing contrast ratios and ARIA validation
|
|
164
|
+
TASK:
|
|
165
|
+
- Read remediation plan for prioritized fix list
|
|
166
|
+
- Apply OKLCH color corrections for contrast compliance
|
|
167
|
+
- Add/fix focus styles (outline, outline-offset, :focus-visible)
|
|
168
|
+
- Add missing ARIA attributes (role, aria-label, aria-live, aria-expanded)
|
|
169
|
+
- Add reduced-motion media queries where needed
|
|
170
|
+
- Fix typography (clamp(), line-height, max-width for reading)
|
|
171
|
+
- Add skip link if missing
|
|
172
|
+
- Apply fixes in priority order (critical first)
|
|
173
|
+
CONTEXT:
|
|
174
|
+
- Session: <session-folder>
|
|
175
|
+
- Target: <target>
|
|
176
|
+
- WCAG Level: <level>
|
|
177
|
+
- Upstream artifacts: remediation/remediation-plan.md
|
|
178
|
+
- Shared memory: <session>/.msg/meta.json
|
|
179
|
+
EXPECTED: Modified source files + <session>/fixes/fix-summary-001.md | All critical/high fixes applied
|
|
180
|
+
CONSTRAINTS: Modify only files identified in remediation plan | Preserve existing functionality"
|
|
181
|
+
})
|
|
182
|
+
TaskUpdate({ taskId: "FIX-001", addBlockedBy: ["REMED-001"], owner: "fix-implementer" })
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
**COLOR-002** (color-auditor):
|
|
186
|
+
```
|
|
187
|
+
TaskCreate({
|
|
188
|
+
subject: "COLOR-002",
|
|
189
|
+
description: "PURPOSE: Re-audit color contrast after fixes applied | Success: All color combinations pass WCAG target level
|
|
190
|
+
TASK:
|
|
191
|
+
- Re-extract all color values from modified stylesheets
|
|
192
|
+
- Re-calculate WCAG 2.1 contrast ratios
|
|
193
|
+
- Re-calculate APCA Lc values
|
|
194
|
+
- Compare before/after for each fixed combination
|
|
195
|
+
- Verify no regressions in unfixed combinations
|
|
196
|
+
CONTEXT:
|
|
197
|
+
- Session: <session-folder>
|
|
198
|
+
- Target: <target>
|
|
199
|
+
- WCAG Level: <level>
|
|
200
|
+
- Upstream artifacts: fixes/fix-summary-001.md, audits/color/color-audit-001.md
|
|
201
|
+
- Shared memory: <session>/.msg/meta.json
|
|
202
|
+
EXPECTED: <session>/re-audit/color-audit-002.md | Before/after comparison with pass/fail
|
|
203
|
+
CONSTRAINTS: Read-only verification | Focus on fixed items + regression check"
|
|
204
|
+
})
|
|
205
|
+
TaskUpdate({ taskId: "COLOR-002", addBlockedBy: ["FIX-001"], owner: "color-auditor" })
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**FOCUS-002** (focus-auditor):
|
|
209
|
+
```
|
|
210
|
+
TaskCreate({
|
|
211
|
+
subject: "FOCUS-002",
|
|
212
|
+
description: "PURPOSE: Re-audit focus management after fixes applied | Success: All focus indicators visible with correct ARIA attributes
|
|
213
|
+
TASK:
|
|
214
|
+
- Re-audit tab order after DOM changes
|
|
215
|
+
- Verify focus indicator fixes (outline, contrast)
|
|
216
|
+
- Check new ARIA attributes are valid
|
|
217
|
+
- Verify skip link implementation
|
|
218
|
+
- Test keyboard operability of fixed elements
|
|
219
|
+
- Compare before/after for each fixed element
|
|
220
|
+
CONTEXT:
|
|
221
|
+
- Session: <session-folder>
|
|
222
|
+
- Target: <target>
|
|
223
|
+
- WCAG Level: <level>
|
|
224
|
+
- Upstream artifacts: fixes/fix-summary-001.md, audits/focus/focus-audit-001.md
|
|
225
|
+
- Shared memory: <session>/.msg/meta.json
|
|
226
|
+
EXPECTED: <session>/re-audit/focus-audit-002.md | Before/after comparison with pass/fail
|
|
227
|
+
CONSTRAINTS: Read-only verification | Focus on fixed items + regression check"
|
|
228
|
+
})
|
|
229
|
+
TaskUpdate({ taskId: "FOCUS-002", addBlockedBy: ["FIX-001"], owner: "focus-auditor" })
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**CRITICAL**: COLOR-002 and FOCUS-002 both blocked only by FIX-001 -- they run in PARALLEL after fixes.
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Phase 4: Validation
|
|
237
|
+
|
|
238
|
+
Verify task chain integrity:
|
|
239
|
+
|
|
240
|
+
| Check | Method | Expected |
|
|
241
|
+
|-------|--------|----------|
|
|
242
|
+
| Task count correct | TaskList count | audit-only: 4, full: 7 |
|
|
243
|
+
| Dependencies correct | Trace dependency graph | Acyclic, correct blockedBy |
|
|
244
|
+
| No circular dependencies | Trace dependency graph | Acyclic |
|
|
245
|
+
| 3 audit tasks have NO blockedBy | Pattern check | COLOR-001, TYPO-001, FOCUS-001 are parallel |
|
|
246
|
+
| REMED-001 blocked by all 3 | Check blockedBy | [COLOR-001, TYPO-001, FOCUS-001] |
|
|
247
|
+
| Task IDs use correct prefixes | Pattern check | COLOR/TYPO/FOCUS/REMED/FIX |
|
|
248
|
+
| Structured descriptions complete | Each has PURPOSE/TASK/CONTEXT/EXPECTED/CONSTRAINTS | All present |
|
|
249
|
+
|
|
250
|
+
If validation fails, fix the specific task and re-validate.
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# Monitor Pipeline
|
|
2
|
+
|
|
3
|
+
Event-driven pipeline coordination. Beat model: coordinator wake -> process -> spawn -> STOP.
|
|
4
|
+
|
|
5
|
+
## Constants
|
|
6
|
+
|
|
7
|
+
- SPAWN_MODE: background
|
|
8
|
+
- ONE_STEP_PER_INVOCATION: true
|
|
9
|
+
- FAST_ADVANCE_AWARE: true
|
|
10
|
+
- WORKER_AGENT: team-worker
|
|
11
|
+
- MAX_GC_ROUNDS: 2
|
|
12
|
+
|
|
13
|
+
## Handler Router
|
|
14
|
+
|
|
15
|
+
| Source | Handler |
|
|
16
|
+
|--------|---------|
|
|
17
|
+
| Message contains [color-auditor], [typo-auditor], [focus-auditor], [remediation-planner], [fix-implementer] | handleCallback |
|
|
18
|
+
| "capability_gap" | handleAdapt |
|
|
19
|
+
| "check" or "status" | handleCheck |
|
|
20
|
+
| "resume" or "continue" | handleResume |
|
|
21
|
+
| All tasks completed | handleComplete |
|
|
22
|
+
| Default | handleSpawnNext |
|
|
23
|
+
|
|
24
|
+
## handleCallback
|
|
25
|
+
|
|
26
|
+
Worker completed. Process and advance.
|
|
27
|
+
|
|
28
|
+
1. Parse message to identify role and task ID:
|
|
29
|
+
|
|
30
|
+
| Message Pattern | Role |
|
|
31
|
+
|----------------|------|
|
|
32
|
+
| `[color-auditor]` or `COLOR-*` | color-auditor |
|
|
33
|
+
| `[typo-auditor]` or `TYPO-*` | typo-auditor |
|
|
34
|
+
| `[focus-auditor]` or `FOCUS-*` | focus-auditor |
|
|
35
|
+
| `[remediation-planner]` or `REMED-*` | remediation-planner |
|
|
36
|
+
| `[fix-implementer]` or `FIX-*` | fix-implementer |
|
|
37
|
+
|
|
38
|
+
2. Mark task completed: `TaskUpdate({ taskId: "<task-id>", status: "completed" })`
|
|
39
|
+
3. Record completion in session state
|
|
40
|
+
|
|
41
|
+
4. Check checkpoint for completed task:
|
|
42
|
+
|
|
43
|
+
| Completed Task | Checkpoint | Action |
|
|
44
|
+
|---------------|------------|--------|
|
|
45
|
+
| COLOR-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
|
|
46
|
+
| TYPO-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
|
|
47
|
+
| FOCUS-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
|
|
48
|
+
| REMED-001 | -- | Unblock FIX-001 (full mode only) |
|
|
49
|
+
| FIX-001 | GC check | Spawn COLOR-002 + FOCUS-002 in parallel (full mode) |
|
|
50
|
+
| COLOR-002 | Re-audit fan-in | Check if both re-audits complete -> handleComplete |
|
|
51
|
+
| FOCUS-002 | Re-audit fan-in | Check if both re-audits complete -> handleComplete |
|
|
52
|
+
|
|
53
|
+
5. **Parallel fan-in handling** (audit task completed):
|
|
54
|
+
|
|
55
|
+
**CRITICAL**: REMED-001 must wait for ALL 3 auditors (COLOR-001 + TYPO-001 + FOCUS-001) to complete.
|
|
56
|
+
|
|
57
|
+
Check completion state:
|
|
58
|
+
```
|
|
59
|
+
completed_audits = count of completed tasks in [COLOR-001, TYPO-001, FOCUS-001]
|
|
60
|
+
if completed_audits < 3:
|
|
61
|
+
-> Log "[coordinator] Audit fan-in: {completed_audits}/3 complete, waiting for remaining"
|
|
62
|
+
-> STOP (do NOT advance)
|
|
63
|
+
if completed_audits === 3:
|
|
64
|
+
-> Log "[coordinator] All 3 audits complete, advancing to REMED-001"
|
|
65
|
+
-> handleSpawnNext (will pick up REMED-001)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
6. **GC loop handling** (full mode, after FIX-001 completes):
|
|
69
|
+
|
|
70
|
+
Read re-audit results when COLOR-002 and FOCUS-002 both complete:
|
|
71
|
+
|
|
72
|
+
| Signal | Condition | Action |
|
|
73
|
+
|--------|-----------|--------|
|
|
74
|
+
| All pass | No critical/high issues remaining | GC converged -> handleComplete |
|
|
75
|
+
| Issues remain | Critical/high issues found | gc_rounds < max -> create FIX-002 + re-audit tasks |
|
|
76
|
+
| Any | gc_rounds >= max | Escalate to user |
|
|
77
|
+
|
|
78
|
+
**GC Fix Task Creation** (when re-audit finds issues):
|
|
79
|
+
```
|
|
80
|
+
TaskCreate({ subject: "FIX-002",
|
|
81
|
+
description: "PURPOSE: Address remaining issues from re-audit | Success: All critical/high issues resolved
|
|
82
|
+
TASK:
|
|
83
|
+
- Parse re-audit reports for remaining issues
|
|
84
|
+
- Apply targeted fixes for color and focus issues
|
|
85
|
+
CONTEXT:
|
|
86
|
+
- Session: <session-folder>
|
|
87
|
+
- Upstream artifacts: re-audit/color-audit-002.md, re-audit/focus-audit-002.md" })
|
|
88
|
+
TaskUpdate({ taskId: "FIX-002", addBlockedBy: ["COLOR-002", "FOCUS-002"], owner: "fix-implementer" })
|
|
89
|
+
```
|
|
90
|
+
Then create new re-audit tasks blocked by FIX-002. Increment gc_state.round.
|
|
91
|
+
|
|
92
|
+
**GC Escalation Options** (when max rounds exceeded):
|
|
93
|
+
1. Accept current state - acknowledge remaining issues
|
|
94
|
+
2. Try one more round
|
|
95
|
+
3. Terminate
|
|
96
|
+
|
|
97
|
+
7. -> handleSpawnNext
|
|
98
|
+
|
|
99
|
+
## handleCheck
|
|
100
|
+
|
|
101
|
+
Read-only status report, then STOP.
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
Pipeline Status (<pipeline-mode>):
|
|
105
|
+
[DONE] COLOR-001 (color-auditor) -> audits/color/color-audit-001.md
|
|
106
|
+
[DONE] TYPO-001 (typo-auditor) -> audits/typography/typo-audit-001.md
|
|
107
|
+
[RUN] FOCUS-001 (focus-auditor) -> auditing focus...
|
|
108
|
+
[WAIT] REMED-001 (remediation-planner) -> blocked by COLOR-001, TYPO-001, FOCUS-001
|
|
109
|
+
[WAIT] FIX-001 (fix-implementer) -> blocked by REMED-001
|
|
110
|
+
[WAIT] COLOR-002 (color-auditor) -> blocked by FIX-001
|
|
111
|
+
[WAIT] FOCUS-002 (focus-auditor) -> blocked by FIX-001
|
|
112
|
+
|
|
113
|
+
Fan-in: 2/3 audits complete
|
|
114
|
+
GC Rounds: 0/2
|
|
115
|
+
Session: <session-id>
|
|
116
|
+
Commands: 'resume' to advance | 'check' to refresh
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Output status -- do NOT advance pipeline.
|
|
120
|
+
|
|
121
|
+
## handleResume
|
|
122
|
+
|
|
123
|
+
1. Audit task list for inconsistencies:
|
|
124
|
+
- Tasks stuck in "in_progress" -> reset to "pending"
|
|
125
|
+
- Tasks with completed blockers but still "pending" -> include in spawn list
|
|
126
|
+
2. -> handleSpawnNext
|
|
127
|
+
|
|
128
|
+
## handleSpawnNext
|
|
129
|
+
|
|
130
|
+
Find ready tasks, spawn workers, STOP.
|
|
131
|
+
|
|
132
|
+
1. Collect: completedSubjects, inProgressSubjects, readySubjects (pending + all blockedBy completed)
|
|
133
|
+
2. No ready + work in progress -> report waiting, STOP
|
|
134
|
+
3. No ready + nothing in progress -> handleComplete
|
|
135
|
+
4. Has ready -> for each:
|
|
136
|
+
a. Check inner loop role with active worker -> skip (worker picks up)
|
|
137
|
+
b. TaskUpdate -> in_progress
|
|
138
|
+
c. team_msg log -> task_unblocked
|
|
139
|
+
d. Spawn team-worker:
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
Agent({
|
|
143
|
+
subagent_type: "team-worker",
|
|
144
|
+
description: "Spawn <role> worker for <task-id>",
|
|
145
|
+
team_name: "visual-a11y",
|
|
146
|
+
name: "<role>",
|
|
147
|
+
run_in_background: true,
|
|
148
|
+
prompt: `## Role Assignment
|
|
149
|
+
role: <role>
|
|
150
|
+
role_spec: <skill_root>/roles/<role>/role.md
|
|
151
|
+
session: <session-folder>
|
|
152
|
+
session_id: <session-id>
|
|
153
|
+
team_name: visual-a11y
|
|
154
|
+
requirement: <task-description>
|
|
155
|
+
inner_loop: <true|false>
|
|
156
|
+
|
|
157
|
+
Read role_spec file to load Phase 2-4 domain instructions.
|
|
158
|
+
Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).`
|
|
159
|
+
})
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Parallel spawn rules by mode**:
|
|
163
|
+
|
|
164
|
+
| Mode | Scenario | Spawn Behavior |
|
|
165
|
+
|------|----------|---------------|
|
|
166
|
+
| audit-only | Initial | Spawn COLOR-001 + TYPO-001 + FOCUS-001 in parallel |
|
|
167
|
+
| audit-only | After 3 audits complete | Spawn REMED-001 |
|
|
168
|
+
| full | Initial | Spawn COLOR-001 + TYPO-001 + FOCUS-001 in parallel |
|
|
169
|
+
| full | After 3 audits complete | Spawn REMED-001 |
|
|
170
|
+
| full | After REMED-001 | Spawn FIX-001 |
|
|
171
|
+
| full | After FIX-001 | Spawn COLOR-002 + FOCUS-002 in parallel |
|
|
172
|
+
|
|
173
|
+
5. Add to active_workers, update session, output summary, STOP
|
|
174
|
+
|
|
175
|
+
## handleComplete
|
|
176
|
+
|
|
177
|
+
Pipeline done. Generate report and completion action.
|
|
178
|
+
|
|
179
|
+
**Completion check by mode**:
|
|
180
|
+
|
|
181
|
+
| Mode | Completion Condition |
|
|
182
|
+
|------|---------------------|
|
|
183
|
+
| audit-only | All 4 tasks (+ any fix tasks) completed |
|
|
184
|
+
| full | All 7 tasks (+ any GC fix tasks) completed |
|
|
185
|
+
|
|
186
|
+
1. If any tasks not completed -> handleSpawnNext
|
|
187
|
+
2. If all completed -> transition to coordinator Phase 5
|
|
188
|
+
|
|
189
|
+
## handleAdapt
|
|
190
|
+
|
|
191
|
+
Capability gap reported mid-pipeline.
|
|
192
|
+
|
|
193
|
+
1. Parse gap description
|
|
194
|
+
2. Check if existing role covers it -> redirect
|
|
195
|
+
3. Role count < 6 -> generate dynamic role spec
|
|
196
|
+
4. Create new task, spawn worker
|
|
197
|
+
5. Role count >= 6 -> merge or pause
|
|
198
|
+
|
|
199
|
+
## Fast-Advance Reconciliation
|
|
200
|
+
|
|
201
|
+
On every coordinator wake:
|
|
202
|
+
1. Read team_msg entries with type="fast_advance"
|
|
203
|
+
2. Sync active_workers with spawned successors
|
|
204
|
+
3. No duplicate spawns
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# Coordinator Role
|
|
2
|
+
|
|
3
|
+
Visual Accessibility Team coordinator. Orchestrate pipeline: analyze -> dispatch -> spawn -> monitor -> report. Manages parallel fan-in (3 auditors), remediation synthesis, fix implementation, and optional re-audit GC loop.
|
|
4
|
+
|
|
5
|
+
## Identity
|
|
6
|
+
- **Name**: coordinator | **Tag**: [coordinator]
|
|
7
|
+
- **Responsibility**: Analyze scope -> Create team -> Dispatch tasks -> Monitor progress -> Report results
|
|
8
|
+
|
|
9
|
+
## Boundaries
|
|
10
|
+
|
|
11
|
+
### MUST
|
|
12
|
+
- All output (SendMessage, team_msg, logs) must carry `[coordinator]` identifier
|
|
13
|
+
- Use `team-worker` agent type for all worker spawns (NOT `general-purpose`)
|
|
14
|
+
- Dispatch tasks with proper dependency chains and blockedBy
|
|
15
|
+
- Spawn COLOR-001, TYPO-001, FOCUS-001 in PARALLEL (no blockedBy between them)
|
|
16
|
+
- Monitor worker progress via message bus and route messages
|
|
17
|
+
- Handle Generator-Critic loops with max 2 iterations
|
|
18
|
+
- Maintain session state persistence
|
|
19
|
+
|
|
20
|
+
### MUST NOT
|
|
21
|
+
- Implement domain logic (auditing, planning, fixing) -- workers handle this
|
|
22
|
+
- Spawn workers without creating tasks first
|
|
23
|
+
- Skip sync points when configured
|
|
24
|
+
- Force-advance pipeline past failed audit
|
|
25
|
+
- Modify source code or design artifacts directly -- delegate to workers
|
|
26
|
+
- Omit `[coordinator]` identifier in any output
|
|
27
|
+
|
|
28
|
+
## Command Execution Protocol
|
|
29
|
+
|
|
30
|
+
When coordinator needs to execute a command (analyze, dispatch, monitor):
|
|
31
|
+
|
|
32
|
+
1. Read `commands/<command>.md`
|
|
33
|
+
2. Follow the workflow defined in the command
|
|
34
|
+
3. Commands are inline execution guides, NOT separate agents
|
|
35
|
+
4. Execute synchronously, complete before proceeding
|
|
36
|
+
|
|
37
|
+
## Entry Router
|
|
38
|
+
|
|
39
|
+
| Detection | Condition | Handler |
|
|
40
|
+
|-----------|-----------|---------|
|
|
41
|
+
| Worker callback | Message contains [color-auditor], [typo-auditor], [focus-auditor], [remediation-planner], [fix-implementer] | -> handleCallback (monitor.md) |
|
|
42
|
+
| Status check | Args contain "check" or "status" | -> handleCheck (monitor.md) |
|
|
43
|
+
| Manual resume | Args contain "resume" or "continue" | -> handleResume (monitor.md) |
|
|
44
|
+
| Capability gap | Message contains "capability_gap" | -> handleAdapt (monitor.md) |
|
|
45
|
+
| Pipeline complete | All tasks have status "completed" | -> handleComplete (monitor.md) |
|
|
46
|
+
| Interrupted session | Active/paused session exists in .workflow/.team/VA-* | -> Phase 0 |
|
|
47
|
+
| New session | None of above | -> Phase 1 |
|
|
48
|
+
|
|
49
|
+
For callback/check/resume/adapt/complete: load `@commands/monitor.md`, execute matched handler, STOP.
|
|
50
|
+
|
|
51
|
+
## Phase 0: Session Resume Check
|
|
52
|
+
|
|
53
|
+
1. Scan `.workflow/.team/VA-*/.msg/meta.json` for active/paused sessions
|
|
54
|
+
2. No sessions -> Phase 1
|
|
55
|
+
3. Single session -> reconcile (audit TaskList, reset in_progress->pending, rebuild team, kick first ready task)
|
|
56
|
+
4. Multiple -> AskUserQuestion for selection
|
|
57
|
+
|
|
58
|
+
## Phase 1: Requirement Clarification
|
|
59
|
+
|
|
60
|
+
TEXT-LEVEL ONLY. No source code reading.
|
|
61
|
+
|
|
62
|
+
1. Parse task description from arguments
|
|
63
|
+
2. Detect audit scope:
|
|
64
|
+
|
|
65
|
+
| Signal | Pipeline Mode |
|
|
66
|
+
|--------|---------------|
|
|
67
|
+
| "audit only", "no fixes", "assessment" | audit-only |
|
|
68
|
+
| "full audit", "fix", "remediate", "full cycle" | full |
|
|
69
|
+
| Unclear | ask user |
|
|
70
|
+
|
|
71
|
+
3. Ask for missing parameters if scope unclear:
|
|
72
|
+
```
|
|
73
|
+
AskUserQuestion({
|
|
74
|
+
questions: [
|
|
75
|
+
{ question: "Accessibility audit scope?", header: "Scope", options: [
|
|
76
|
+
{ label: "Audit only", description: "Color + typography + focus audit with remediation plan" },
|
|
77
|
+
{ label: "Full cycle", description: "Audit + fix + re-audit verification" }
|
|
78
|
+
]},
|
|
79
|
+
{ question: "Target?", header: "Target", options: [
|
|
80
|
+
{ label: "URL (rendered page)" },
|
|
81
|
+
{ label: "Component path (source)" },
|
|
82
|
+
{ label: "Full site" }
|
|
83
|
+
]}
|
|
84
|
+
]
|
|
85
|
+
})
|
|
86
|
+
```
|
|
87
|
+
4. Delegate to `@commands/analyze.md` -> output scope context
|
|
88
|
+
5. Record: pipeline_mode, target, wcag_level
|
|
89
|
+
|
|
90
|
+
## Phase 2: Create Team + Initialize Session
|
|
91
|
+
|
|
92
|
+
1. Resolve workspace paths (MUST do first):
|
|
93
|
+
- `project_root` = result of `Bash({ command: "pwd" })`
|
|
94
|
+
- `skill_root` = `<project_root>/.claude/skills/team-visual-a11y`
|
|
95
|
+
2. Generate session ID: `VA-<slug>-<YYYY-MM-DD>`
|
|
96
|
+
3. Create session folder structure:
|
|
97
|
+
```
|
|
98
|
+
.workflow/.team/VA-<slug>-<date>/audits/color/
|
|
99
|
+
.workflow/.team/VA-<slug>-<date>/audits/typography/
|
|
100
|
+
.workflow/.team/VA-<slug>-<date>/audits/focus/
|
|
101
|
+
.workflow/.team/VA-<slug>-<date>/remediation/
|
|
102
|
+
.workflow/.team/VA-<slug>-<date>/fixes/
|
|
103
|
+
.workflow/.team/VA-<slug>-<date>/re-audit/
|
|
104
|
+
.workflow/.team/VA-<slug>-<date>/evidence/
|
|
105
|
+
.workflow/.team/VA-<slug>-<date>/.msg/
|
|
106
|
+
```
|
|
107
|
+
4. Initialize `.msg/meta.json` via team_msg state_update with pipeline metadata
|
|
108
|
+
5. TeamCreate(team_name="visual-a11y")
|
|
109
|
+
6. Do NOT spawn workers yet - deferred to Phase 4
|
|
110
|
+
|
|
111
|
+
## Phase 3: Create Task Chain
|
|
112
|
+
|
|
113
|
+
Delegate to `@commands/dispatch.md`. Task chains by mode:
|
|
114
|
+
|
|
115
|
+
| Mode | Task Chain |
|
|
116
|
+
|------|------------|
|
|
117
|
+
| audit-only | [COLOR-001 + TYPO-001 + FOCUS-001 parallel] -> REMED-001 |
|
|
118
|
+
| full | [COLOR-001 + TYPO-001 + FOCUS-001 parallel] -> REMED-001 -> FIX-001 -> [COLOR-002 + FOCUS-002 parallel] |
|
|
119
|
+
|
|
120
|
+
## Phase 4: Spawn-and-Stop
|
|
121
|
+
|
|
122
|
+
**CRITICAL**: Spawn COLOR-001, TYPO-001, FOCUS-001 in PARALLEL (all 3 have NO blockedBy).
|
|
123
|
+
|
|
124
|
+
Delegate to `@commands/monitor.md#handleSpawnNext`:
|
|
125
|
+
1. Find ready tasks (pending + blockedBy resolved)
|
|
126
|
+
2. Spawn team-worker agents (see SKILL.md Spawn Template)
|
|
127
|
+
3. Output status summary
|
|
128
|
+
4. STOP
|
|
129
|
+
|
|
130
|
+
## Phase 5: Report + Completion Action
|
|
131
|
+
|
|
132
|
+
1. Read session state -> collect all results
|
|
133
|
+
2. List deliverables:
|
|
134
|
+
|
|
135
|
+
| Deliverable | Path |
|
|
136
|
+
|-------------|------|
|
|
137
|
+
| Color Audit | <session>/audits/color/color-audit-001.md |
|
|
138
|
+
| Typography Audit | <session>/audits/typography/typo-audit-001.md |
|
|
139
|
+
| Focus Audit | <session>/audits/focus/focus-audit-001.md |
|
|
140
|
+
| Remediation Plan | <session>/remediation/remediation-plan.md |
|
|
141
|
+
| Fix Summary | <session>/fixes/fix-summary-001.md (full mode) |
|
|
142
|
+
| Re-audit Color | <session>/re-audit/color-audit-002.md (full mode) |
|
|
143
|
+
| Re-audit Focus | <session>/re-audit/focus-audit-002.md (full mode) |
|
|
144
|
+
| Evidence | <session>/evidence/*.png (if Chrome DevTools used) |
|
|
145
|
+
|
|
146
|
+
3. Calculate: completed_tasks, gc_rounds, issues_found, issues_fixed, wcag_compliance_level
|
|
147
|
+
4. Output pipeline summary with [coordinator] prefix
|
|
148
|
+
5. Execute completion action:
|
|
149
|
+
```
|
|
150
|
+
AskUserQuestion({
|
|
151
|
+
questions: [{ question: "Pipeline complete. What next?", header: "Completion", options: [
|
|
152
|
+
{ label: "Archive & Clean", description: "Archive session and clean up team resources" },
|
|
153
|
+
{ label: "Keep Active", description: "Keep session for follow-up work" },
|
|
154
|
+
{ label: "Export Results", description: "Export deliverables to specified location" }
|
|
155
|
+
]}]
|
|
156
|
+
})
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Error Handling
|
|
160
|
+
|
|
161
|
+
| Error | Resolution |
|
|
162
|
+
|-------|------------|
|
|
163
|
+
| Task timeout | Log, mark failed, ask user to retry or skip |
|
|
164
|
+
| Worker crash | Reset task to pending, respawn worker |
|
|
165
|
+
| Dependency cycle | Detect, report to user, halt |
|
|
166
|
+
| Invalid scope | Reject with error, ask to clarify |
|
|
167
|
+
| Session corruption | Attempt recovery, fallback to manual reconciliation |
|
|
168
|
+
| GC loop stuck > 2 rounds | Escalate to user: accept / try one more / terminate |
|
|
169
|
+
| Chrome DevTools unavailable | Mark in meta.json, auditors degrade to static analysis |
|