claude-code-workflow 7.2.27 → 7.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ccw/specs/architecture-constraints.md +5 -0
- package/.claude/skills/_shared/SKILL-DESIGN-SPEC.md +140 -0
- package/.claude/skills/investigate/SKILL.md +110 -0
- package/.claude/skills/investigate/phases/01-root-cause-investigation.md +132 -0
- package/.claude/skills/investigate/phases/02-pattern-analysis.md +126 -0
- package/.claude/skills/investigate/phases/03-hypothesis-testing.md +177 -0
- package/.claude/skills/investigate/phases/04-implementation.md +139 -0
- package/.claude/skills/investigate/phases/05-verification-report.md +153 -0
- package/.claude/skills/investigate/specs/debug-report-format.md +226 -0
- package/.claude/skills/investigate/specs/iron-law.md +101 -0
- package/.claude/skills/security-audit/SKILL.md +125 -0
- package/.claude/skills/security-audit/phases/01-supply-chain-scan.md +139 -0
- package/.claude/skills/security-audit/phases/02-owasp-review.md +156 -0
- package/.claude/skills/security-audit/phases/03-threat-modeling.md +180 -0
- package/.claude/skills/security-audit/phases/04-report-tracking.md +177 -0
- package/.claude/skills/security-audit/specs/owasp-checklist.md +442 -0
- package/.claude/skills/security-audit/specs/scoring-gates.md +141 -0
- package/.claude/skills/ship/SKILL.md +105 -0
- package/.claude/skills/ship/phases/01-preflight-checks.md +121 -0
- package/.claude/skills/ship/phases/02-code-review.md +137 -0
- package/.claude/skills/ship/phases/03-version-bump.md +171 -0
- package/.claude/skills/ship/phases/04-changelog-commit.md +167 -0
- package/.claude/skills/ship/phases/05-pr-creation.md +163 -0
- package/.claude/skills/skill-generator/templates/sequential-phase.md +10 -0
- package/.claude/skills/skill-generator/templates/skill-md.md +4 -0
- package/.claude/skills/team-interactive-craft/SKILL.md +127 -0
- package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
- package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
- package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
- package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
- package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
- package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
- package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
- package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
- package/.claude/skills/team-motion-design/SKILL.md +129 -0
- package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
- package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
- package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
- package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
- package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
- package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
- package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
- package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
- package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
- package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
- package/.claude/skills/team-ui-polish/SKILL.md +127 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
- package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
- package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
- package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
- package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
- package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
- package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
- package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
- package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
- package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
- package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
- package/.claude/skills/team-uidesign/SKILL.md +6 -1
- package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
- package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
- package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
- package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
- package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
- package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
- package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
- package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
- package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
- package/.claude/skills/team-ux-improve/SKILL.md +3 -0
- package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
- package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
- package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
- package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
- package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
- package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
- package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
- package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
- package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
- package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
- package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
- package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
- package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
- package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
- package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
- package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
- package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
- package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
- package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
- package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
- package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
- package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
- package/.codex/skills/brainstorm/SKILL.md +3 -3
- package/.codex/skills/clean/SKILL.md +3 -3
- package/.codex/skills/investigate/agents/investigator.md +392 -0
- package/.codex/skills/investigate/orchestrator.md +362 -0
- package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
- package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
- package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
- package/.codex/skills/investigate/phases/04-implementation.md +195 -0
- package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
- package/.codex/skills/issue-discover/SKILL.md +13 -13
- package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
- package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
- package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
- package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
- package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
- package/.codex/skills/review-cycle/SKILL.md +10 -10
- package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
- package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
- package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
- package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
- package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
- package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
- package/.codex/skills/security-audit/orchestrator.md +384 -0
- package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
- package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
- package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
- package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
- package/.codex/skills/ship/agents/ship-operator.md +318 -0
- package/.codex/skills/ship/orchestrator.md +426 -0
- package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
- package/.codex/skills/ship/phases/02-code-review.md +228 -0
- package/.codex/skills/ship/phases/03-version-bump.md +259 -0
- package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
- package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
- package/.codex/skills/spec-generator/README.md +1 -1
- package/.codex/skills/spec-generator/SKILL.md +184 -88
- package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
- package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
- package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
- package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
- package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
- package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
- package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
- package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
- package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
- package/.codex/skills/spec-setup/SKILL.md +4 -4
- package/.codex/skills/team-interactive-craft/SKILL.md +220 -0
- package/.codex/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
- package/.codex/skills/team-interactive-craft/roles/builder/role.md +216 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +162 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +233 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/role.md +209 -0
- package/.codex/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
- package/.codex/skills/team-interactive-craft/roles/researcher/role.md +131 -0
- package/.codex/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
- package/.codex/skills/team-interactive-craft/specs/pipelines.md +85 -0
- package/.codex/skills/team-interactive-craft/specs/team-config.json +105 -0
- package/.codex/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
- package/.codex/skills/team-motion-design/SKILL.md +222 -0
- package/.codex/skills/team-motion-design/roles/animator/role.md +194 -0
- package/.codex/skills/team-motion-design/roles/choreographer/role.md +164 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/dispatch.md +168 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/monitor.md +242 -0
- package/.codex/skills/team-motion-design/roles/coordinator/role.md +210 -0
- package/.codex/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
- package/.codex/skills/team-motion-design/roles/motion-tester/role.md +175 -0
- package/.codex/skills/team-motion-design/specs/gpu-constraints.md +114 -0
- package/.codex/skills/team-motion-design/specs/motion-tokens.md +128 -0
- package/.codex/skills/team-motion-design/specs/pipelines.md +74 -0
- package/.codex/skills/team-motion-design/specs/reduced-motion.md +129 -0
- package/.codex/skills/team-motion-design/specs/team-config.json +99 -0
- package/.codex/skills/team-ui-polish/SKILL.md +218 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +167 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/monitor.md +230 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-ui-polish/roles/diagnostician/role.md +164 -0
- package/.codex/skills/team-ui-polish/roles/optimizer/role.md +229 -0
- package/.codex/skills/team-ui-polish/roles/scanner/role.md +360 -0
- package/.codex/skills/team-ui-polish/roles/verifier/role.md +142 -0
- package/.codex/skills/team-ui-polish/specs/anti-patterns.md +141 -0
- package/.codex/skills/team-ui-polish/specs/design-standards.md +356 -0
- package/.codex/skills/team-ui-polish/specs/fix-strategies.md +235 -0
- package/.codex/skills/team-ui-polish/specs/pipelines.md +81 -0
- package/.codex/skills/team-ui-polish/specs/scoring-guide.md +162 -0
- package/.codex/skills/team-ui-polish/specs/team-config.json +73 -0
- package/.codex/skills/team-visual-a11y/SKILL.md +319 -0
- package/.codex/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +188 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +281 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
- package/.codex/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
- package/.codex/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
- package/.codex/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
- package/.codex/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
- package/.codex/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
- package/.codex/skills/team-visual-a11y/specs/pipelines.md +98 -0
- package/.codex/skills/team-visual-a11y/specs/team-config.json +109 -0
- package/.codex/skills/team-visual-a11y/specs/typography-scale.md +165 -0
- package/.codex/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
- package/.codex/skills/workflow-plan/SKILL.md +6 -6
- package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
- package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
- package/README.md +8 -0
- package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
- package/ccw/dist/core/hooks/hook-templates.js +114 -1
- package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
- package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/cli-routes.js +34 -0
- package/ccw/dist/core/routes/cli-routes.js.map +1 -1
- package/ccw/dist/core/routes/system-routes.js +2 -2
- package/ccw/dist/core/routes/system-routes.js.map +1 -1
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-exlTDW81.js} +3 -3
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-exlTDW81.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-cgV9LfAI.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-Be9xsPiv.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BrE-oyEq.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cd3nrC93.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DXFl3VKF.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-CpDxtmRX.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-BchjWe7s.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-CbWvaJ0y.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-YMjVRiCk.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BtqzqDVq.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-BuWpQ7k5.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-D0BtMIWy.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-C7dwsAKG.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-D0nCNaeB.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-C-S5CehM.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-P_B0JVUQ.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-S4Jn9LUE.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-YEMjFARX.js} +3 -3
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-DnTm55nG.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CUwebtO2.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-BpgP4087.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-BpgP4087.js.map} +1 -1
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-CYSPdqWk.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-CYSPdqWk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-CPh6Zor1.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-Ds-8830B.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-CJODUxBk.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-CJODUxBk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-CjwVpw6k.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-CjwVpw6k.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-2vZa9Ic3.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-CUU5XDgT.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-BwpSRDUa.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-BwpSRDUa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-DBzUW1XC.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-DBzUW1XC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CGNNsjvE.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-D27G86Ul.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-D27G86Ul.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-C6MOB7Au.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-C6MOB7Au.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-BxfBlZ26.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-BxfBlZ26.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-NI237wA-.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-NI237wA-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-Byn2_2v6.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-Byn2_2v6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-D-7PhZjx.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-D-7PhZjx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-BoAsK_FL.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-BoAsK_FL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-DCSxJIS4.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-DCSxJIS4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-CHS3prza.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-CHS3prza.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-D7K35U7S.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-eq9xE07G.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-eq9xE07G.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-C1DMpBua.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-C1DMpBua.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-Di5SBCY-.js} +2 -2
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-Di5SBCY-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index--_R7COnA.js} +2 -2
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index--_R7COnA.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-BUol9HDD.js} +3 -3
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-BUol9HDD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-CT9oykfw.js} +2 -2
- package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-CT9oykfw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-Ddwvf87H.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-Ddwvf87H.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-LiX0qZbN.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-CL3DVEwb.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CC5cFeq6.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CC5cFeq6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-ngFQ9bs0.js} +2 -2
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-ngFQ9bs0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-BEU6I0KK.js} +2 -2
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-BEU6I0KK.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BWZdLA6y.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BWZdLA6y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-K6_Chm7n.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-K6_Chm7n.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CWkphauf.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CWkphauf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-DrNgkamn.js} +2 -2
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-DrNgkamn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CMo3sw5_.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CMo3sw5_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-DppNTW5e.js} +2 -2
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-DppNTW5e.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-CD8aPMbZ.js} +2 -2
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-CD8aPMbZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-B4z90fQD.js} +2 -2
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-B4z90fQD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2-CAKRU_QC.js} +2 -2
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2-CAKRU_QC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-KhI3HrzX.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-BtdGIpuq.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-BtdGIpuq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-ZoBUkXoD.js} +2 -2
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-ZoBUkXoD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CltxQP-P.js} +2 -2
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CltxQP-P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-C32OUSGf.js} +2 -2
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-C32OUSGf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-0IxoyAVZ.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-4eKCkyBn.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-4eKCkyBn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-zLTUWqhi.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-BtN2vpOX.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-BtN2vpOX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-_spj49qL.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-_spj49qL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-Bm9KFZvd.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-DOmpm6v9.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-D2rj4rea.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-D2rj4rea.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-OskEpomF.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-OskEpomF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-BjMgsNSF.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-CLhyYWa7.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-CLhyYWa7.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +105 -105
- package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js +0 -150
- package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
- package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js +0 -7
- package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js.map +0 -1
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
---
|
|
2
|
+
role: builder
|
|
3
|
+
prefix: BUILD
|
|
4
|
+
inner_loop: true
|
|
5
|
+
message_types: [state_update]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Interactive Component Builder
|
|
9
|
+
|
|
10
|
+
Implement vanilla JS + CSS interactive components from interaction blueprints. Zero dependencies, ES modules, progressive enhancement, GPU-only animations, touch-aware. Act as Generator in the builder<->a11y-tester Generator-Critic loop.
|
|
11
|
+
|
|
12
|
+
## Phase 2: Context & Artifact Loading
|
|
13
|
+
|
|
14
|
+
| Input | Source | Required |
|
|
15
|
+
|-------|--------|----------|
|
|
16
|
+
| Interaction blueprints | <session>/interaction/blueprints/*.md | Yes |
|
|
17
|
+
| Research artifacts | <session>/research/*.json | Yes |
|
|
18
|
+
| .msg/meta.json | <session>/wisdom/.msg/meta.json | Yes |
|
|
19
|
+
| A11y audit feedback | <session>/a11y/a11y-audit-*.md | Only for GC fix tasks |
|
|
20
|
+
|
|
21
|
+
1. Extract session path from task description
|
|
22
|
+
2. Read interaction blueprint for target component
|
|
23
|
+
3. Read research artifacts: browser-api-audit.json (API availability), pattern-reference.json (reference patterns)
|
|
24
|
+
4. Detect task type from subject: numbered -> New component, "fix" -> GC fix
|
|
25
|
+
5. If GC fix task: read latest a11y audit feedback
|
|
26
|
+
|
|
27
|
+
## Phase 3: Implementation Execution
|
|
28
|
+
|
|
29
|
+
**Component Implementation (BUILD-001, BUILD-002, etc.)**:
|
|
30
|
+
|
|
31
|
+
### JavaScript (ES Module)
|
|
32
|
+
Implement component class in `<session>/build/components/{name}.js`:
|
|
33
|
+
|
|
34
|
+
```javascript
|
|
35
|
+
// Structure template (adapt to component type)
|
|
36
|
+
export class ComponentName {
|
|
37
|
+
// --- Configuration ---
|
|
38
|
+
static defaults = { /* configurable params from blueprint */ };
|
|
39
|
+
|
|
40
|
+
// --- Lifecycle ---
|
|
41
|
+
constructor(element, options = {}) { /* merge options, query DOM, bind events */ }
|
|
42
|
+
init() { /* setup observers, initial state */ }
|
|
43
|
+
destroy() { /* cleanup: remove listeners, disconnect observers */ }
|
|
44
|
+
|
|
45
|
+
// --- State Machine ---
|
|
46
|
+
#state = 'idle';
|
|
47
|
+
#setState(next) { /* validate transition, update, trigger side effects */ }
|
|
48
|
+
|
|
49
|
+
// --- Event Handlers (from blueprint event flow map) ---
|
|
50
|
+
#onPointerDown(e) { /* setPointerCapture, transition state */ }
|
|
51
|
+
#onPointerMove(e) { /* lerp interpolation, update transform */ }
|
|
52
|
+
#onPointerUp(e) { /* releasePointerCapture, settle animation */ }
|
|
53
|
+
#onKeyDown(e) { /* keyboard mapping from blueprint */ }
|
|
54
|
+
|
|
55
|
+
// --- Animation ---
|
|
56
|
+
#lerp(current, target, speed) { return current + (target - current) * speed; }
|
|
57
|
+
#animate() { /* requestAnimationFrame loop, GPU-only transforms */ }
|
|
58
|
+
|
|
59
|
+
// --- Observers ---
|
|
60
|
+
#resizeObserver = null; // responsive behavior
|
|
61
|
+
#intersectionObserver = null; // scroll triggers
|
|
62
|
+
|
|
63
|
+
// --- Accessibility ---
|
|
64
|
+
#announceToScreenReader(message) { /* aria-live region update */ }
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Auto-init: progressive enhancement
|
|
68
|
+
document.querySelectorAll('[data-component-name]').forEach(el => {
|
|
69
|
+
new ComponentName(el);
|
|
70
|
+
});
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Requirements:
|
|
74
|
+
- Pure ES module with `export` (no CommonJS, no bundler)
|
|
75
|
+
- Class-based with private fields (#)
|
|
76
|
+
- Constructor accepts DOM element + options object
|
|
77
|
+
- State machine from blueprint with validated transitions
|
|
78
|
+
- Event handlers from blueprint event flow map
|
|
79
|
+
- Lerp interpolation for smooth drag/follow (speed from blueprint)
|
|
80
|
+
- requestAnimationFrame for frame-synced updates
|
|
81
|
+
- setPointerCapture for reliable drag tracking
|
|
82
|
+
- ResizeObserver for responsive layout adjustments
|
|
83
|
+
- IntersectionObserver for scroll-triggered behavior (when applicable)
|
|
84
|
+
- Proper cleanup in destroy() method
|
|
85
|
+
- Auto-init via data attribute for progressive enhancement
|
|
86
|
+
|
|
87
|
+
### CSS (Custom Properties)
|
|
88
|
+
Implement styles in `<session>/build/components/{name}.css`:
|
|
89
|
+
|
|
90
|
+
```css
|
|
91
|
+
/* Structure template */
|
|
92
|
+
/* --- Custom Properties (configurable) --- */
|
|
93
|
+
.component-name {
|
|
94
|
+
--component-duration: 400ms;
|
|
95
|
+
--component-easing: cubic-bezier(0.16, 1, 0.3, 1);
|
|
96
|
+
--component-color-primary: #1a1a2e;
|
|
97
|
+
/* ... from blueprint animation choreography */
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* --- Base Layout (works without JS) --- */
|
|
101
|
+
.component-name { /* progressive enhancement base */ }
|
|
102
|
+
|
|
103
|
+
/* --- States (from blueprint state machine) --- */
|
|
104
|
+
.component-name[data-state="idle"] { }
|
|
105
|
+
.component-name[data-state="hover"] { }
|
|
106
|
+
.component-name[data-state="active"] { }
|
|
107
|
+
.component-name[data-state="dragging"] { }
|
|
108
|
+
|
|
109
|
+
/* --- Animations (GPU-only: transform + opacity) --- */
|
|
110
|
+
.component-name__element {
|
|
111
|
+
transform: translateX(0);
|
|
112
|
+
opacity: 1;
|
|
113
|
+
transition: transform var(--component-duration) var(--component-easing),
|
|
114
|
+
opacity var(--component-duration) var(--component-easing);
|
|
115
|
+
will-change: transform, opacity;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* --- Focus Styles --- */
|
|
119
|
+
.component-name:focus-visible {
|
|
120
|
+
outline: 2px solid var(--component-focus-color, #4a9eff);
|
|
121
|
+
outline-offset: 2px;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* --- Reduced Motion --- */
|
|
125
|
+
@media (prefers-reduced-motion: reduce) {
|
|
126
|
+
.component-name,
|
|
127
|
+
.component-name * {
|
|
128
|
+
transition-duration: 0.01ms !important;
|
|
129
|
+
animation-duration: 0.01ms !important;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* --- Responsive --- */
|
|
134
|
+
@media (max-width: 768px) { /* touch-optimized sizes */ }
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Requirements:
|
|
138
|
+
- CSS custom properties for all configurable values (no preprocessor)
|
|
139
|
+
- Base layout works without JavaScript (progressive enhancement)
|
|
140
|
+
- State-driven via data attributes (`data-state`, `data-active`)
|
|
141
|
+
- GPU-only animations: transform + opacity ONLY (no width/height/top/left)
|
|
142
|
+
- `will-change` on animated elements
|
|
143
|
+
- `prefers-reduced-motion` media query with instant transitions
|
|
144
|
+
- `focus-visible` for keyboard-only focus ring
|
|
145
|
+
- Responsive breakpoints for touch targets (min 44x44px)
|
|
146
|
+
- No inline styles from JS -- use CSS classes and custom properties
|
|
147
|
+
|
|
148
|
+
### Native Platform APIs (prefer over custom implementations)
|
|
149
|
+
|
|
150
|
+
**Dialog API** (`<dialog>`):
|
|
151
|
+
- Use `<dialog>` for modals — provides built-in focus trap and backdrop
|
|
152
|
+
- `dialog.showModal()` for modal (with backdrop, escape-to-close, focus trap)
|
|
153
|
+
- `dialog.show()` for non-modal
|
|
154
|
+
- `dialog.close()` to dismiss
|
|
155
|
+
- Style `::backdrop` pseudo-element for overlay
|
|
156
|
+
- Returns focus to trigger element on close
|
|
157
|
+
- Add `inert` attribute to siblings when modal is open (prevents background interaction)
|
|
158
|
+
|
|
159
|
+
**Popover API** (native tooltips/dropdowns):
|
|
160
|
+
- `<div popover>` for light-dismiss popovers (click-outside-to-close)
|
|
161
|
+
- `<button popovertarget="id">` for trigger
|
|
162
|
+
- Auto-stacking (no z-index management needed)
|
|
163
|
+
- Built-in accessibility (focus management, escape-to-close)
|
|
164
|
+
- Use for: tooltips, dropdown menus, date pickers, color pickers
|
|
165
|
+
|
|
166
|
+
**CSS Anchor Positioning** (Chrome 125+, progressive enhancement):
|
|
167
|
+
- `anchor-name: --trigger` on trigger element
|
|
168
|
+
- `position-anchor: --trigger` on positioned element
|
|
169
|
+
- `@position-try` for fallback positioning
|
|
170
|
+
- Fallback: `position: fixed` with JS-calculated coordinates
|
|
171
|
+
|
|
172
|
+
**GC Fix Mode (BUILD-fix-N)**:
|
|
173
|
+
- Parse a11y audit feedback for specific issues
|
|
174
|
+
- Re-read affected component files
|
|
175
|
+
- Apply targeted fixes: missing ARIA attributes, keyboard handlers, focus management, contrast adjustments
|
|
176
|
+
- Re-write affected files
|
|
177
|
+
- Signal `build_revision` instead of `build_ready`
|
|
178
|
+
|
|
179
|
+
## Phase 4: Self-Validation & Output
|
|
180
|
+
|
|
181
|
+
1. Zero-dependency check:
|
|
182
|
+
|
|
183
|
+
| Check | Pass Criteria |
|
|
184
|
+
|-------|---------------|
|
|
185
|
+
| No imports from npm | No `import` from node_modules paths |
|
|
186
|
+
| No require() | No CommonJS require statements |
|
|
187
|
+
| ES module exports | Uses `export class` or `export function` |
|
|
188
|
+
| No build tools needed | Runs directly in browser with `<script type="module">` |
|
|
189
|
+
|
|
190
|
+
2. State machine completeness:
|
|
191
|
+
|
|
192
|
+
| Check | Pass Criteria |
|
|
193
|
+
|-------|---------------|
|
|
194
|
+
| All states from blueprint | Every blueprint state has corresponding code path |
|
|
195
|
+
| All transitions | Every transition has handler code |
|
|
196
|
+
| Error recovery | All states can reach idle via reset |
|
|
197
|
+
|
|
198
|
+
3. Accessibility baseline:
|
|
199
|
+
|
|
200
|
+
| Check | Pass Criteria |
|
|
201
|
+
|-------|---------------|
|
|
202
|
+
| Keyboard handlers | onKeyDown handles Enter, Space, Escape, Arrows |
|
|
203
|
+
| ARIA attributes | role, aria-label, aria-expanded (as needed) set |
|
|
204
|
+
| Focus management | tabindex, focus-visible styles present |
|
|
205
|
+
| Reduced motion | prefers-reduced-motion media query in CSS |
|
|
206
|
+
|
|
207
|
+
4. Performance baseline:
|
|
208
|
+
|
|
209
|
+
| Check | Pass Criteria |
|
|
210
|
+
|-------|---------------|
|
|
211
|
+
| GPU-only transforms | No width/height/top/left in transitions |
|
|
212
|
+
| No forced reflow | No offsetWidth/getBoundingClientRect in animation loop |
|
|
213
|
+
| Cleanup | destroy() disconnects all observers and listeners |
|
|
214
|
+
|
|
215
|
+
5. Update `<session>/wisdom/.msg/meta.json` under `builder` namespace:
|
|
216
|
+
- Read existing -> merge `{ "builder": { task_type, component_name, file_count, output_dir, states_implemented, events_bound } }` -> write back
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Analyze Task
|
|
2
|
+
|
|
3
|
+
Parse user task -> detect interactive component scope -> identify browser APIs -> determine pipeline mode.
|
|
4
|
+
|
|
5
|
+
**CONSTRAINT**: Text-level analysis only. NO source code reading, NO codebase exploration.
|
|
6
|
+
|
|
7
|
+
## Signal Detection
|
|
8
|
+
|
|
9
|
+
| Keywords | Capability | Pipeline Hint |
|
|
10
|
+
|----------|------------|---------------|
|
|
11
|
+
| split, compare, before/after, slider, divider | split-compare | single |
|
|
12
|
+
| gallery, carousel, scroll-snap, horizontal scroll | scroll-snap-gallery | gallery |
|
|
13
|
+
| lightbox, modal, overlay, fullscreen view | lightbox | single |
|
|
14
|
+
| scroll reveal, appear on scroll, fade in, stagger | scroll-reveal | single or gallery |
|
|
15
|
+
| glass, terminal, frosted, blur, backdrop | glass-terminal | single |
|
|
16
|
+
| lens, magnify, zoom, loupe | lens-effect | single |
|
|
17
|
+
| drag, resize, pointer, touch | pointer-interaction | single |
|
|
18
|
+
| page, landing, sections, multi-section | interactive-page | page |
|
|
19
|
+
| multiple components, collection, set | multi-component | gallery or page |
|
|
20
|
+
|
|
21
|
+
## Scope Determination
|
|
22
|
+
|
|
23
|
+
| Signal | Pipeline Mode |
|
|
24
|
+
|--------|---------------|
|
|
25
|
+
| Single component mentioned | single |
|
|
26
|
+
| Gallery or scroll-based multi-component | gallery |
|
|
27
|
+
| Full interactive page or multi-section | page |
|
|
28
|
+
| Unclear | ask user |
|
|
29
|
+
|
|
30
|
+
## Complexity Scoring
|
|
31
|
+
|
|
32
|
+
| Factor | Points |
|
|
33
|
+
|--------|--------|
|
|
34
|
+
| Single component | +1 |
|
|
35
|
+
| Gallery / scroll collection | +2 |
|
|
36
|
+
| Full interactive page | +3 |
|
|
37
|
+
| Pointer/drag interactions | +1 |
|
|
38
|
+
| Scroll-based triggers (IntersectionObserver) | +1 |
|
|
39
|
+
| Touch gestures (pinch, swipe) | +1 |
|
|
40
|
+
| Overlay/modal with focus trap | +1 |
|
|
41
|
+
| Animation choreography (stagger, sequence) | +1 |
|
|
42
|
+
|
|
43
|
+
Results: 1-2 Low (single), 3-4 Medium (gallery), 5+ High (page)
|
|
44
|
+
|
|
45
|
+
## Browser API Detection
|
|
46
|
+
|
|
47
|
+
| Keywords | Browser API |
|
|
48
|
+
|----------|-------------|
|
|
49
|
+
| scroll, appear, visibility, threshold | IntersectionObserver |
|
|
50
|
+
| resize, container, responsive, layout | ResizeObserver |
|
|
51
|
+
| drag, pointer, mouse, click | Pointer Events |
|
|
52
|
+
| touch, swipe, pinch, gesture | Touch Events |
|
|
53
|
+
| scroll snap, snap point, mandatory | CSS scroll-snap |
|
|
54
|
+
| clip, mask, reveal, wipe | CSS clip-path |
|
|
55
|
+
| blur, frosted, glass | CSS backdrop-filter |
|
|
56
|
+
| animate, transition, keyframe | Web Animations API |
|
|
57
|
+
| focus, trap, tab, keyboard | Focus Management |
|
|
58
|
+
|
|
59
|
+
## Output
|
|
60
|
+
|
|
61
|
+
Write scope context to coordinator memory:
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"pipeline_mode": "<single|gallery|page>",
|
|
65
|
+
"scope": "<description>",
|
|
66
|
+
"interaction_type": "<pointer|scroll|overlay|mixed>",
|
|
67
|
+
"components": ["<detected-component-types>"],
|
|
68
|
+
"browser_apis": ["<detected-apis>"],
|
|
69
|
+
"complexity": { "score": 0, "level": "Low|Medium|High" }
|
|
70
|
+
}
|
|
71
|
+
```
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Command: Dispatch
|
|
2
|
+
|
|
3
|
+
Create the interactive craft task chain with correct dependencies and structured task descriptions. Supports single, gallery, and page 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
|
+
| Interaction type | From session meta.json `interaction_type` | Yes |
|
|
13
|
+
|
|
14
|
+
1. Load user requirement and scope from session meta.json
|
|
15
|
+
2. Load pipeline stage definitions from specs/pipelines.md
|
|
16
|
+
3. Read `pipeline` and `interaction_type` from session 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
|
+
- Scope: <interaction-scope>
|
|
35
|
+
- Components: <component-list>
|
|
36
|
+
- Upstream artifacts: <artifact-1>, <artifact-2>
|
|
37
|
+
- Shared memory: <session>/wisdom/.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
|
+
| `single` | Create 4 tasks: RESEARCH -> INTERACT -> BUILD -> A11Y |
|
|
49
|
+
| `gallery` | Create 6 tasks: RESEARCH -> INTERACT-001 -> BUILD-001 -> INTERACT-002 -> BUILD-002 -> A11Y |
|
|
50
|
+
| `page` | Create 4+ tasks: RESEARCH -> INTERACT -> [BUILD-001..N parallel] -> A11Y |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
### Single Pipeline Task Chain
|
|
55
|
+
|
|
56
|
+
**RESEARCH-001** (researcher):
|
|
57
|
+
```
|
|
58
|
+
TaskCreate({
|
|
59
|
+
subject: "RESEARCH-001",
|
|
60
|
+
description: "PURPOSE: Analyze interaction patterns, browser API availability, and reference implementations | Success: 3 research artifacts with valid data
|
|
61
|
+
TASK:
|
|
62
|
+
- Catalog existing interactive components in project
|
|
63
|
+
- Audit browser API usage (IntersectionObserver, ResizeObserver, Pointer Events, Touch Events)
|
|
64
|
+
- Collect reference patterns for target component type
|
|
65
|
+
CONTEXT:
|
|
66
|
+
- Session: <session-folder>
|
|
67
|
+
- Scope: <interaction-scope>
|
|
68
|
+
- Components: <component-list>
|
|
69
|
+
- Shared memory: <session>/wisdom/.msg/meta.json
|
|
70
|
+
EXPECTED: <session>/research/*.json | All 3 research files with valid JSON
|
|
71
|
+
CONSTRAINTS: Read-only analysis | Focus on <interaction-scope>"
|
|
72
|
+
})
|
|
73
|
+
TaskUpdate({ taskId: "RESEARCH-001", owner: "researcher" })
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**INTERACT-001** (interaction-designer):
|
|
77
|
+
```
|
|
78
|
+
TaskCreate({
|
|
79
|
+
subject: "INTERACT-001",
|
|
80
|
+
description: "PURPOSE: Design complete interaction blueprint with state machine and event flows | Success: Blueprint with all states, events, and keyboard mappings defined
|
|
81
|
+
TASK:
|
|
82
|
+
- Define state machine (idle -> hover -> active -> animating -> complete)
|
|
83
|
+
- Map event flows (pointer/touch/keyboard -> handlers -> state transitions)
|
|
84
|
+
- Specify gesture parameters (lerp speed, thresholds, easing)
|
|
85
|
+
- Design animation choreography (entry/exit/idle transitions)
|
|
86
|
+
- Create touch/keyboard/mouse mapping table
|
|
87
|
+
CONTEXT:
|
|
88
|
+
- Session: <session-folder>
|
|
89
|
+
- Scope: <interaction-scope>
|
|
90
|
+
- Upstream artifacts: research/*.json
|
|
91
|
+
- Shared memory: <session>/wisdom/.msg/meta.json
|
|
92
|
+
EXPECTED: <session>/interaction/blueprints/<component-name>.md | Complete state machine + event map + keyboard coverage
|
|
93
|
+
CONSTRAINTS: Vanilla JS only | GPU-only animations | Progressive enhancement"
|
|
94
|
+
})
|
|
95
|
+
TaskUpdate({ taskId: "INTERACT-001", addBlockedBy: ["RESEARCH-001"], owner: "interaction-designer" })
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**BUILD-001** (builder):
|
|
99
|
+
```
|
|
100
|
+
TaskCreate({
|
|
101
|
+
subject: "BUILD-001",
|
|
102
|
+
description: "PURPOSE: Implement interactive component as vanilla JS + CSS | Success: Working ES module + CSS with all states, touch-aware, keyboard accessible
|
|
103
|
+
TASK:
|
|
104
|
+
- Implement ES module component class from interaction blueprint
|
|
105
|
+
- Write CSS with custom properties (no preprocessor)
|
|
106
|
+
- Add progressive enhancement (content works without JS)
|
|
107
|
+
- Use GPU-only animations (transform + opacity)
|
|
108
|
+
- Implement pointer events with touch fallback
|
|
109
|
+
- Add ResizeObserver for responsive behavior
|
|
110
|
+
- Add IntersectionObserver for scroll triggers (if applicable)
|
|
111
|
+
CONTEXT:
|
|
112
|
+
- Session: <session-folder>
|
|
113
|
+
- Scope: <interaction-scope>
|
|
114
|
+
- Upstream artifacts: interaction/blueprints/*.md, research/*.json
|
|
115
|
+
- Shared memory: <session>/wisdom/.msg/meta.json
|
|
116
|
+
EXPECTED: <session>/build/components/<name>.js + <name>.css | Zero dependencies, all states implemented
|
|
117
|
+
CONSTRAINTS: No npm packages | ES modules only | No inline styles | < 5ms per frame"
|
|
118
|
+
})
|
|
119
|
+
TaskUpdate({ taskId: "BUILD-001", addBlockedBy: ["INTERACT-001"], owner: "builder" })
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
**A11Y-001** (a11y-tester):
|
|
123
|
+
```
|
|
124
|
+
TaskCreate({
|
|
125
|
+
subject: "A11Y-001",
|
|
126
|
+
description: "PURPOSE: Audit accessibility of built component | Success: Audit report with pass/fail per check, 0 critical issues
|
|
127
|
+
TASK:
|
|
128
|
+
- Test keyboard navigation (tab order, arrow keys, escape, enter/space)
|
|
129
|
+
- Check screen reader compatibility (ARIA roles, states, live regions)
|
|
130
|
+
- Verify reduced motion fallback (prefers-reduced-motion)
|
|
131
|
+
- Test focus management (visible indicator, focus trap for overlays)
|
|
132
|
+
- Check color contrast (foreground/background ratio)
|
|
133
|
+
CONTEXT:
|
|
134
|
+
- Session: <session-folder>
|
|
135
|
+
- Scope: <interaction-scope>
|
|
136
|
+
- Upstream artifacts: build/components/*.js, build/components/*.css, interaction/blueprints/*.md
|
|
137
|
+
- Shared memory: <session>/wisdom/.msg/meta.json
|
|
138
|
+
EXPECTED: <session>/a11y/a11y-audit-001.md | Per-check pass/fail with remediation suggestions
|
|
139
|
+
CONSTRAINTS: Read-only analysis | GC convergence: 0 critical issues"
|
|
140
|
+
})
|
|
141
|
+
TaskUpdate({ taskId: "A11Y-001", addBlockedBy: ["BUILD-001"], owner: "a11y-tester" })
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### Gallery Pipeline Task Chain
|
|
147
|
+
|
|
148
|
+
Create tasks in dependency order:
|
|
149
|
+
|
|
150
|
+
| Task | Role | blockedBy | Description |
|
|
151
|
+
|------|------|-----------|-------------|
|
|
152
|
+
| RESEARCH-001 | researcher | (none) | Interaction patterns + browser API audit |
|
|
153
|
+
| INTERACT-001 | interaction-designer | RESEARCH-001 | Base component interaction blueprint |
|
|
154
|
+
| BUILD-001 | builder | INTERACT-001 | Base component implementation |
|
|
155
|
+
| INTERACT-002 | interaction-designer | BUILD-001 | Gallery/scroll-snap interaction blueprint |
|
|
156
|
+
| BUILD-002 | builder | INTERACT-002 | Gallery container + navigation implementation |
|
|
157
|
+
| A11Y-001 | a11y-tester | BUILD-002 | Full gallery accessibility audit |
|
|
158
|
+
|
|
159
|
+
Task descriptions follow same template as single pipeline, with subject-specific content:
|
|
160
|
+
- INTERACT-002 focuses on scroll-snap container, navigation dots, active item detection
|
|
161
|
+
- BUILD-002 focuses on gallery container with CSS scroll-snap, IntersectionObserver for active item, navigation controls
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
### Page Pipeline Task Chain
|
|
166
|
+
|
|
167
|
+
| Task | Role | blockedBy | Description |
|
|
168
|
+
|------|------|-----------|-------------|
|
|
169
|
+
| RESEARCH-001 | researcher | (none) | Interaction patterns for all page sections |
|
|
170
|
+
| INTERACT-001 | interaction-designer | RESEARCH-001 | Blueprints for all interactive sections |
|
|
171
|
+
| BUILD-001..N | builder | INTERACT-001 | One task per section (parallel fan-out) |
|
|
172
|
+
| A11Y-001 | a11y-tester | BUILD-001..N (all) | Full page accessibility audit |
|
|
173
|
+
|
|
174
|
+
**Parallel fan-out**: Create one BUILD task per distinct interactive section detected in the interaction blueprint. Each BUILD task is blocked only by INTERACT-001. A11Y-001 is blocked by ALL BUILD tasks.
|
|
175
|
+
|
|
176
|
+
Task descriptions for each BUILD-00N specify which section to implement, referencing the corresponding section in the interaction blueprint.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Phase 4: Validation
|
|
181
|
+
|
|
182
|
+
Verify task chain integrity:
|
|
183
|
+
|
|
184
|
+
| Check | Method | Expected |
|
|
185
|
+
|-------|--------|----------|
|
|
186
|
+
| Task count correct | TaskList count | single: 4, gallery: 6, page: 3+N |
|
|
187
|
+
| Dependencies correct | Trace dependency graph | Acyclic, correct blockedBy |
|
|
188
|
+
| No circular dependencies | Trace dependency graph | Acyclic |
|
|
189
|
+
| Task IDs use correct prefixes | Pattern check | RESEARCH/INTERACT/BUILD/A11Y |
|
|
190
|
+
| Structured descriptions complete | Each has PURPOSE/TASK/CONTEXT/EXPECTED/CONSTRAINTS | All present |
|
|
191
|
+
|
|
192
|
+
If validation fails, fix the specific task and re-validate.
|
|
@@ -0,0 +1,183 @@
|
|
|
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 [researcher], [interaction-designer], [builder], [a11y-tester] | 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
|
+
| `[researcher]` or `RESEARCH-*` | researcher |
|
|
33
|
+
| `[interaction-designer]` or `INTERACT-*` | interaction-designer |
|
|
34
|
+
| `[builder]` or `BUILD-*` | builder |
|
|
35
|
+
| `[a11y-tester]` or `A11Y-*` | a11y-tester |
|
|
36
|
+
|
|
37
|
+
2. Mark task completed: `TaskUpdate({ taskId: "<task-id>", status: "completed" })`
|
|
38
|
+
3. Record completion in session state
|
|
39
|
+
|
|
40
|
+
4. Check checkpoint for completed task:
|
|
41
|
+
|
|
42
|
+
| Completed Task | Checkpoint | Action |
|
|
43
|
+
|---------------|------------|--------|
|
|
44
|
+
| RESEARCH-001 | - | Notify user: research complete |
|
|
45
|
+
| INTERACT-001 | - | Proceed to BUILD-001 (single/gallery) or BUILD-001..N (page parallel) |
|
|
46
|
+
| INTERACT-002 | - | Proceed to BUILD-002 (gallery) |
|
|
47
|
+
| BUILD-001 | - | Check mode: single -> A11Y-001; gallery -> INTERACT-002; page -> check if all BUILD done |
|
|
48
|
+
| BUILD-001..N | - | Page mode: check if all BUILD tasks done -> A11Y-001 |
|
|
49
|
+
| BUILD-002 | - | Gallery: proceed to A11Y-001 |
|
|
50
|
+
| A11Y-001 | QUALITY: A11y Gate | Check a11y signal -> GC loop or complete |
|
|
51
|
+
|
|
52
|
+
5. **A11y Gate handling** (A11Y task completed):
|
|
53
|
+
Read a11y signal from message: `a11y_passed`, `a11y_result`, or `fix_required`
|
|
54
|
+
|
|
55
|
+
| Signal | Condition | Action |
|
|
56
|
+
|--------|-----------|--------|
|
|
57
|
+
| `a11y_passed` | 0 critical issues | GC converged -> record gate -> handleComplete |
|
|
58
|
+
| `a11y_result` | Minor issues only | gc_rounds < max -> create BUILD-fix task |
|
|
59
|
+
| `fix_required` | Critical issues found | gc_rounds < max -> create BUILD-fix task (CRITICAL) |
|
|
60
|
+
| Any | gc_rounds >= max | Escalate to user |
|
|
61
|
+
|
|
62
|
+
**GC Fix Task Creation**:
|
|
63
|
+
```
|
|
64
|
+
TaskCreate({ subject: "BUILD-fix-<round>",
|
|
65
|
+
description: "PURPOSE: Address a11y audit feedback | Success: All critical/high issues resolved
|
|
66
|
+
TASK:
|
|
67
|
+
- Parse a11y audit feedback for specific issues
|
|
68
|
+
- Apply targeted fixes to component JS/CSS
|
|
69
|
+
CONTEXT:
|
|
70
|
+
- Session: <session-folder>
|
|
71
|
+
- Upstream artifacts: a11y/a11y-audit-<NNN>.md" })
|
|
72
|
+
TaskUpdate({ taskId: "BUILD-fix-<round>", owner: "builder" })
|
|
73
|
+
```
|
|
74
|
+
Then create new A11Y task blocked by fix. Increment gc_state.round.
|
|
75
|
+
|
|
76
|
+
**GC Escalation Options** (when max rounds exceeded):
|
|
77
|
+
1. Accept current implementation - skip remaining a11y fixes
|
|
78
|
+
2. Try one more round
|
|
79
|
+
3. Terminate
|
|
80
|
+
|
|
81
|
+
6. -> handleSpawnNext
|
|
82
|
+
|
|
83
|
+
## handleCheck
|
|
84
|
+
|
|
85
|
+
Read-only status report, then STOP.
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
Pipeline Status (<pipeline-mode>):
|
|
89
|
+
[DONE] RESEARCH-001 (researcher) -> research/*.json
|
|
90
|
+
[DONE] INTERACT-001 (interaction-designer) -> blueprints/*.md
|
|
91
|
+
[RUN] BUILD-001 (builder) -> building component...
|
|
92
|
+
[WAIT] A11Y-001 (a11y-tester) -> blocked by BUILD-001
|
|
93
|
+
|
|
94
|
+
GC Rounds: 0/2
|
|
95
|
+
Session: <session-id>
|
|
96
|
+
Commands: 'resume' to advance | 'check' to refresh
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Output status -- do NOT advance pipeline.
|
|
100
|
+
|
|
101
|
+
## handleResume
|
|
102
|
+
|
|
103
|
+
1. Audit task list for inconsistencies:
|
|
104
|
+
- Tasks stuck in "in_progress" -> reset to "pending"
|
|
105
|
+
- Tasks with completed blockers but still "pending" -> include in spawn list
|
|
106
|
+
2. -> handleSpawnNext
|
|
107
|
+
|
|
108
|
+
## handleSpawnNext
|
|
109
|
+
|
|
110
|
+
Find ready tasks, spawn workers, STOP.
|
|
111
|
+
|
|
112
|
+
1. Collect: completedSubjects, inProgressSubjects, readySubjects (pending + all blockedBy completed)
|
|
113
|
+
2. No ready + work in progress -> report waiting, STOP
|
|
114
|
+
3. No ready + nothing in progress -> handleComplete
|
|
115
|
+
4. Has ready -> for each:
|
|
116
|
+
a. Check inner loop role with active worker -> skip (worker picks up)
|
|
117
|
+
b. TaskUpdate -> in_progress
|
|
118
|
+
c. team_msg log -> task_unblocked
|
|
119
|
+
d. Spawn team-worker:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
Agent({
|
|
123
|
+
subagent_type: "team-worker",
|
|
124
|
+
description: "Spawn <role> worker for <task-id>",
|
|
125
|
+
team_name: "interactive-craft",
|
|
126
|
+
name: "<role>",
|
|
127
|
+
run_in_background: true,
|
|
128
|
+
prompt: `## Role Assignment
|
|
129
|
+
role: <role>
|
|
130
|
+
role_spec: <project>/.claude/skills/team-interactive-craft/roles/<role>/role.md
|
|
131
|
+
session: <session-folder>
|
|
132
|
+
session_id: <session-id>
|
|
133
|
+
team_name: interactive-craft
|
|
134
|
+
requirement: <task-description>
|
|
135
|
+
inner_loop: <true|false>
|
|
136
|
+
|
|
137
|
+
Read role_spec file to load Phase 2-4 domain instructions.
|
|
138
|
+
Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).`
|
|
139
|
+
})
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Parallel spawn rules by mode**:
|
|
143
|
+
|
|
144
|
+
| Mode | Scenario | Spawn Behavior |
|
|
145
|
+
|------|----------|---------------|
|
|
146
|
+
| single | Sequential | One task at a time |
|
|
147
|
+
| gallery | Sequential | One task at a time |
|
|
148
|
+
| page | After INTERACT-001 | Spawn BUILD-001..N in parallel (CP-3 fan-out) |
|
|
149
|
+
| page | After all BUILD done | Spawn A11Y-001 |
|
|
150
|
+
|
|
151
|
+
5. Add to active_workers, update session, output summary, STOP
|
|
152
|
+
|
|
153
|
+
## handleComplete
|
|
154
|
+
|
|
155
|
+
Pipeline done. Generate report and completion action.
|
|
156
|
+
|
|
157
|
+
**Completion check by mode**:
|
|
158
|
+
|
|
159
|
+
| Mode | Completion Condition |
|
|
160
|
+
|------|---------------------|
|
|
161
|
+
| single | All 4 tasks (+ fix tasks) completed |
|
|
162
|
+
| gallery | All 6 tasks (+ fix tasks) completed |
|
|
163
|
+
| page | All 3+N tasks (+ fix tasks) completed |
|
|
164
|
+
|
|
165
|
+
1. If any tasks not completed -> handleSpawnNext
|
|
166
|
+
2. If all completed -> transition to coordinator Phase 5
|
|
167
|
+
|
|
168
|
+
## handleAdapt
|
|
169
|
+
|
|
170
|
+
Capability gap reported mid-pipeline.
|
|
171
|
+
|
|
172
|
+
1. Parse gap description
|
|
173
|
+
2. Check if existing role covers it -> redirect
|
|
174
|
+
3. Role count < 5 -> generate dynamic role spec
|
|
175
|
+
4. Create new task, spawn worker
|
|
176
|
+
5. Role count >= 5 -> merge or pause
|
|
177
|
+
|
|
178
|
+
## Fast-Advance Reconciliation
|
|
179
|
+
|
|
180
|
+
On every coordinator wake:
|
|
181
|
+
1. Read team_msg entries with type="fast_advance"
|
|
182
|
+
2. Sync active_workers with spawned successors
|
|
183
|
+
3. No duplicate spawns
|