claude-code-pilot 3.1.1 → 3.3.0
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/CHANGELOG.md +57 -0
- package/README.md +16 -11
- package/bin/install.js +127 -11
- package/manifest.json +20 -1
- package/package.json +4 -3
- package/src/agents/a11y-architect.md +141 -0
- package/src/agents/code-architect.md +71 -0
- package/src/agents/code-explorer.md +69 -0
- package/src/agents/code-simplifier.md +47 -0
- package/src/agents/comment-analyzer.md +45 -0
- package/src/agents/csharp-reviewer.md +101 -0
- package/src/agents/dart-build-resolver.md +201 -0
- package/src/agents/django-build-resolver.md +252 -0
- package/src/agents/django-reviewer.md +169 -0
- package/src/agents/fastapi-reviewer.md +79 -0
- package/src/agents/fsharp-reviewer.md +109 -0
- package/src/agents/pr-test-analyzer.md +45 -0
- package/src/agents/silent-failure-hunter.md +50 -0
- package/src/agents/swift-build-resolver.md +170 -0
- package/src/agents/swift-reviewer.md +116 -0
- package/src/agents/type-design-analyzer.md +41 -0
- package/src/available-rules/README.md +3 -1
- package/src/available-rules/dart/coding-style.md +159 -0
- package/src/available-rules/dart/hooks.md +66 -0
- package/src/available-rules/dart/patterns.md +261 -0
- package/src/available-rules/dart/security.md +135 -0
- package/src/available-rules/dart/testing.md +215 -0
- package/src/available-rules/web/coding-style.md +105 -0
- package/src/available-rules/web/design-quality.md +72 -0
- package/src/available-rules/web/hooks.md +129 -0
- package/src/available-rules/web/patterns.md +88 -0
- package/src/available-rules/web/performance.md +73 -0
- package/src/available-rules/web/security.md +66 -0
- package/src/available-rules/web/testing.md +64 -0
- package/src/commands/ccp/ai-integration-phase.md +36 -0
- package/src/commands/ccp/audit-fix.md +33 -0
- package/src/commands/ccp/code-review-fix.md +52 -0
- package/src/commands/ccp/cost-report.md +107 -0
- package/src/commands/ccp/eval-review.md +32 -0
- package/src/commands/ccp/extract_learnings.md +22 -0
- package/src/commands/ccp/import.md +37 -0
- package/src/commands/ccp/ingest-docs.md +42 -0
- package/src/commands/ccp/intel.md +179 -0
- package/src/commands/ccp/mvp-phase.md +45 -0
- package/src/commands/ccp/plan-prd.md +160 -0
- package/src/commands/ccp/plan-review-convergence.md +58 -0
- package/src/commands/ccp/pr-ecc.md +184 -0
- package/src/commands/ccp/scan.md +26 -0
- package/src/commands/ccp/security-scan.md +74 -0
- package/src/commands/ccp/sketch-wrap-up.md +31 -0
- package/src/commands/ccp/sketch.md +54 -0
- package/src/commands/ccp/spec-phase.md +62 -0
- package/src/commands/ccp/spike-wrap-up.md +31 -0
- package/src/commands/ccp/spike.md +51 -0
- package/src/commands/ccp/ultraplan-phase.md +33 -0
- package/src/hooks/ccp-bash-hook-dispatcher.js +96 -0
- package/src/hooks/ccp-context-monitor.js +23 -0
- package/src/hooks/ccp-doc-file-warning.js +93 -0
- package/src/hooks/ccp-pre-bash-dispatcher.js +24 -0
- package/src/hooks/ccp-read-injection-scanner.js +152 -0
- package/src/hooks/ccp-write-gateguard.js +868 -0
- package/src/hooks/kit-check-update.js +59 -7
- package/src/hooks/run-with-flags-shell.sh +1 -0
- package/src/hooks/run-with-flags.js +48 -1
- package/src/hooks/session-end.js +88 -1
- package/src/lib/hook-flags.js +14 -0
- package/src/lib/project-detect.js +0 -2
- package/src/lib/shell-substitution.js +499 -0
- package/src/pilot/references/agent-contracts.md +79 -0
- package/src/pilot/references/ai-evals.md +156 -0
- package/src/pilot/references/ai-frameworks.md +186 -0
- package/src/pilot/references/doc-conflict-engine.md +91 -0
- package/src/pilot/references/execute-mvp-tdd.md +81 -0
- package/src/pilot/references/gate-prompts.md +100 -0
- package/src/pilot/references/gates.md +70 -0
- package/src/pilot/references/mandatory-initial-read.md +2 -0
- package/src/pilot/references/mvp-concepts.md +49 -0
- package/src/pilot/references/planner-graphify-auto-update.md +67 -0
- package/src/pilot/references/planner-human-verify-mode.md +57 -0
- package/src/pilot/references/planner-mvp-mode.md +53 -0
- package/src/pilot/references/project-skills-discovery.md +19 -0
- package/src/pilot/references/revision-loop.md +97 -0
- package/src/pilot/references/skeleton-template.md +48 -0
- package/src/pilot/references/sketch-interactivity.md +41 -0
- package/src/pilot/references/sketch-theme-system.md +94 -0
- package/src/pilot/references/sketch-tooling.md +45 -0
- package/src/pilot/references/sketch-variant-patterns.md +81 -0
- package/src/pilot/references/spidr-splitting.md +69 -0
- package/src/pilot/references/thinking-models-debug.md +44 -0
- package/src/pilot/references/thinking-models-execution.md +50 -0
- package/src/pilot/references/thinking-models-planning.md +62 -0
- package/src/pilot/references/thinking-models-research.md +50 -0
- package/src/pilot/references/thinking-models-verification.md +55 -0
- package/src/pilot/references/user-story-template.md +58 -0
- package/src/pilot/references/verify-mvp-mode.md +85 -0
- package/src/pilot/references/worktree-path-safety.md +89 -0
- package/src/pilot/templates/AI-SPEC.md +246 -0
- package/src/pilot/templates/spec.md +307 -0
- package/src/pilot/workflows/ai-integration-phase.md +284 -0
- package/src/pilot/workflows/audit-fix.md +175 -0
- package/src/pilot/workflows/code-review-fix.md +497 -0
- package/src/pilot/workflows/eval-review.md +155 -0
- package/src/pilot/workflows/extract_learnings.md +242 -0
- package/src/pilot/workflows/help.md +5 -0
- package/src/pilot/workflows/import.md +246 -0
- package/src/pilot/workflows/ingest-docs.md +328 -0
- package/src/pilot/workflows/mvp-phase.md +199 -0
- package/src/pilot/workflows/plan-review-convergence.md +329 -0
- package/src/pilot/workflows/scan.md +102 -0
- package/src/pilot/workflows/sketch-wrap-up.md +285 -0
- package/src/pilot/workflows/sketch.md +360 -0
- package/src/pilot/workflows/spec-phase.md +262 -0
- package/src/pilot/workflows/spike-wrap-up.md +306 -0
- package/src/pilot/workflows/spike.md +452 -0
- package/src/pilot/workflows/ultraplan-phase.md +189 -0
- package/src/skills/accessibility/SKILL.md +146 -0
- package/src/skills/agent-architecture-audit/SKILL.md +256 -0
- package/src/skills/agent-eval/SKILL.md +145 -0
- package/src/skills/agent-harness-design/SKILL.md +73 -0
- package/src/skills/agent-introspection-debugging/SKILL.md +153 -0
- package/src/skills/android-clean-architecture/SKILL.md +339 -0
- package/src/skills/angular-developer/SKILL.md +154 -0
- package/src/skills/angular-developer/references/angular-animations.md +160 -0
- package/src/skills/angular-developer/references/angular-aria.md +410 -0
- package/src/skills/angular-developer/references/cli.md +86 -0
- package/src/skills/angular-developer/references/component-harnesses.md +59 -0
- package/src/skills/angular-developer/references/component-styling.md +91 -0
- package/src/skills/angular-developer/references/components.md +117 -0
- package/src/skills/angular-developer/references/creating-services.md +97 -0
- package/src/skills/angular-developer/references/data-resolvers.md +69 -0
- package/src/skills/angular-developer/references/define-routes.md +67 -0
- package/src/skills/angular-developer/references/defining-providers.md +72 -0
- package/src/skills/angular-developer/references/di-fundamentals.md +120 -0
- package/src/skills/angular-developer/references/e2e-testing.md +56 -0
- package/src/skills/angular-developer/references/effects.md +83 -0
- package/src/skills/angular-developer/references/hierarchical-injectors.md +43 -0
- package/src/skills/angular-developer/references/host-elements.md +80 -0
- package/src/skills/angular-developer/references/injection-context.md +63 -0
- package/src/skills/angular-developer/references/inputs.md +101 -0
- package/src/skills/angular-developer/references/linked-signal.md +59 -0
- package/src/skills/angular-developer/references/loading-strategies.md +61 -0
- package/src/skills/angular-developer/references/mcp.md +108 -0
- package/src/skills/angular-developer/references/navigate-to-routes.md +69 -0
- package/src/skills/angular-developer/references/outputs.md +86 -0
- package/src/skills/angular-developer/references/reactive-forms.md +122 -0
- package/src/skills/angular-developer/references/rendering-strategies.md +44 -0
- package/src/skills/angular-developer/references/resource.md +77 -0
- package/src/skills/angular-developer/references/route-animations.md +56 -0
- package/src/skills/angular-developer/references/route-guards.md +52 -0
- package/src/skills/angular-developer/references/router-lifecycle.md +45 -0
- package/src/skills/angular-developer/references/router-testing.md +87 -0
- package/src/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
- package/src/skills/angular-developer/references/signal-forms.md +795 -0
- package/src/skills/angular-developer/references/signals-overview.md +94 -0
- package/src/skills/angular-developer/references/tailwind-css.md +69 -0
- package/src/skills/angular-developer/references/template-driven-forms.md +114 -0
- package/src/skills/angular-developer/references/testing-fundamentals.md +65 -0
- package/src/skills/api-connector-builder/SKILL.md +120 -0
- package/src/skills/code-tour/SKILL.md +236 -0
- package/src/skills/compose-multiplatform-patterns/SKILL.md +299 -0
- package/src/skills/csharp-testing/SKILL.md +321 -0
- package/src/skills/dart-flutter-patterns/SKILL.md +563 -0
- package/src/skills/dashboard-builder/SKILL.md +108 -0
- package/src/skills/dotnet-patterns/SKILL.md +321 -0
- package/src/skills/error-handling/SKILL.md +376 -0
- package/src/skills/fastapi-patterns/SKILL.md +327 -0
- package/src/skills/flox-environments/SKILL.md +496 -0
- package/src/skills/frontend-design/SKILL.md +145 -0
- package/src/skills/frontend-slides/SKILL.md +184 -0
- package/src/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/src/skills/fsharp-testing/SKILL.md +280 -0
- package/src/skills/gateguard/SKILL.md +121 -0
- package/src/skills/github-ops/SKILL.md +144 -0
- package/src/skills/hookify-rules/SKILL.md +128 -0
- package/src/skills/ios-icon-gen/SKILL.md +157 -0
- package/src/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
- package/src/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
- package/src/skills/knowledge-ops/SKILL.md +154 -0
- package/src/skills/liquid-glass-design/SKILL.md +279 -0
- package/src/skills/make-interfaces-feel-better/SKILL.md +151 -0
- package/src/skills/mysql-patterns/SKILL.md +412 -0
- package/src/skills/nestjs-patterns/SKILL.md +230 -0
- package/src/skills/plan-orchestrate/SKILL.md +220 -0
- package/src/skills/prisma-patterns/SKILL.md +371 -0
- package/src/skills/production-audit/SKILL.md +206 -0
- package/src/skills/security-bounty-hunter/SKILL.md +99 -0
- package/src/skills/security-scan/references/agentshield-policy-exception/candidate-playbook.md +49 -0
- package/src/skills/security-scan/references/agentshield-policy-exception/report.json +35 -0
- package/src/skills/security-scan/references/agentshield-policy-exception/scenario.json +62 -0
- package/src/skills/security-scan/references/agentshield-policy-exception/trace.json +45 -0
- package/src/skills/security-scan/references/agentshield-policy-exception/verifier-result.json +35 -0
- package/src/skills/swift-actor-persistence/SKILL.md +143 -0
- package/src/skills/swift-protocol-di-testing/SKILL.md +190 -0
- package/src/skills/swiftui-patterns/SKILL.md +259 -0
- package/src/skills/terminal-ops/SKILL.md +109 -0
- package/src/skills/ui-demo/SKILL.md +465 -0
- package/src/skills/vite-patterns/SKILL.md +449 -0
- package/src/skills/windows-desktop-e2e/SKILL.md +887 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [3.3.0] - 2026-06-29
|
|
9
|
+
|
|
10
|
+
The Resync II — a post-v3.2 audit + cherry-pick of high-value additions from the ECC (2.0.0-rc.1) and GSD (1.42.1) upstreams, behind three mandatory preflight gates, followed by a full GSD↔ECC coherence pass. Drop-in upgrade from v3.2.x.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- ~14 P1 ECC skills cherry-picked into `src/skills/` (angular-developer, fastapi-patterns, vite-patterns, mysql-patterns, prisma-patterns, error-handling, and ~8 more)
|
|
14
|
+
- GSD MVP-mode: `/ccp:mvp-phase` command + 10 reference docs (SPIDR story-splitting, mvp-concepts, planner/verify/execute MVP modes, story + skeleton templates, and more)
|
|
15
|
+
- 6 paired reviewer/build-resolver agents (fastapi-reviewer, fsharp-reviewer, swift-reviewer, django-reviewer, swift-build-resolver, django-build-resolver)
|
|
16
|
+
- 3 ECC commands under `/ccp:`: `/ccp:pr-ecc`, `/ccp:plan-prd`, `/ccp:cost-report`
|
|
17
|
+
- AgentShield external wrap: `/ccp:security-scan` thin wrapper (shells to `npx ecc-agentshield scan`), opt-in `_agentshield` `.mcp.json` stanza, `manifest.json` `external.agentshield` entry (pinned v1.4.0), and a 5-file policy-schema reference asset under `src/skills/security-scan/references/`
|
|
18
|
+
- Re-authored standalone `ccp-*` hooks: `ccp-pre-bash-dispatcher`, `ccp-write-gateguard` (+ `src/lib/shell-substitution.js`), `ccp-doc-file-warning` (18 event hooks total, each with a unique fingerprint)
|
|
19
|
+
- Context-monitor cost-warning opt-out via the `CCP_CONTEXT_MONITOR_COST_WARNINGS` environment variable
|
|
20
|
+
- `tests/lib/13-migration-v32-v33.test.js` — v3.2→v3.3 migration test asserting the hook and file deltas
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- Upstream sync: GSD 1.42.1 (`d4d4178`) and ECC 2.0.0-rc.1 (`744f4169`) pinned in `manifest.json`
|
|
24
|
+
- Full GSD↔ECC coherence pass: brand-leak-zero on the installed surface, hook fingerprint uniqueness, and manifest allowlist enforcement
|
|
25
|
+
- `agent-harness-construction` renamed to `agent-harness-design`; the `pr` ECC command landed as `/ccp:pr-ecc` so it coexists with the existing `/ccp:pr-branch`
|
|
26
|
+
- Installed file count is now ~678 (up from ~594)
|
|
27
|
+
|
|
28
|
+
### Breaking Changes
|
|
29
|
+
- None. v3.3.0 is a drop-in upgrade from v3.2.x — `npx claude-code-pilot@3.3.0 --update` preserves a customized CLAUDE.md and existing settings.
|
|
30
|
+
|
|
31
|
+
### Migration
|
|
32
|
+
- Run `npx claude-code-pilot@3.3.0 --update`. The installer removes any legacy `gsd-` fingerprinted hooks and registers the new `ccp-*` hooks idempotently — no manual steps required.
|
|
33
|
+
- Excluded items are deferred to v3.4: the `chief-of-staff` agent, `harmonyos-build-resolver`, and the GSD `surface` / `ns-*` / `runtime-artifact-layout` namespace tooling.
|
|
34
|
+
|
|
35
|
+
## [2.0.0] - 2026-03-18
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- One-command install via `npx claude-code-pilot` for any project
|
|
39
|
+
- Bundled GSD v1.22.4 (Get Shit Done methodology -- 32 commands, 12 agents, planning workflows)
|
|
40
|
+
- Bundled ECC v1.8.0 (Everything Claude Code toolbox -- 9 commands, 6 agents, language rules, continuous learning)
|
|
41
|
+
- Auto-setup wizard (`/setup`) with source directory detection and MCP auto-configuration
|
|
42
|
+
- External tool integration: find-skills (Vercel Labs) and Context7 MCP (Upstash)
|
|
43
|
+
- Automated test harness with 12 tests validating install, update, uninstall, and path handling
|
|
44
|
+
- GitHub Actions CI with Node.js version matrix (20, 22), tarball validation, and smoke testing
|
|
45
|
+
- Support for both `--local` (project-scoped) and `--global` installations
|
|
46
|
+
- `--update` flag for idempotent upgrades (preserves customized CLAUDE.md, deduplicates hooks)
|
|
47
|
+
- `--uninstall` flag for clean removal (preserves CLAUDE.md and settings.json)
|
|
48
|
+
- Path replacement system ensuring `./.claude/` paths for local installs
|
|
49
|
+
- ECC getClaudeDir() patching for install-location-aware hook execution
|
|
50
|
+
- Zero runtime dependencies -- uses only Node.js stdlib (fs, path, os, child_process)
|
|
51
|
+
|
|
52
|
+
### Changed
|
|
53
|
+
- Package architecture: source IS the product (no build step)
|
|
54
|
+
- Minimum Node.js version: 16.7.0
|
|
55
|
+
|
|
56
|
+
### Breaking Changes
|
|
57
|
+
- First major release -- no prior stable version to break from
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Claude Code Pilot
|
|
2
2
|
|
|
3
|
-
Universal Claude Code configuration for any project. One-command install, auto-setup wizard,
|
|
3
|
+
Universal Claude Code configuration for any project. One-command install, auto-setup wizard, 122 commands, 67 agents, 127 skills.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -35,17 +35,17 @@ claude -> /ccp:setup <- wizard scans codebase, generates CLAUDE.md
|
|
|
35
35
|
/ccp:update <- update everything
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
## What's Included (~
|
|
38
|
+
## What's Included (~678 files after install)
|
|
39
39
|
|
|
40
40
|
| Category | Count | Description |
|
|
41
41
|
|----------|-------|-------------|
|
|
42
|
-
| `/ccp:` commands |
|
|
43
|
-
| Agents |
|
|
44
|
-
| Skill packs |
|
|
45
|
-
| Hooks |
|
|
42
|
+
| `/ccp:` commands | 122 | Development lifecycle, quality gates, session management, learning |
|
|
43
|
+
| Agents | 67 | Planning, execution, review, testing, security, documentation |
|
|
44
|
+
| Skill packs | 127 | Continuous learning, verification, strategic compaction, and more |
|
|
45
|
+
| Hooks | 19 | 18 event + 1 statusLine: safety guards, context management, notifications, session persistence |
|
|
46
46
|
| Common rules | 10 | Always active (coding style, security, testing, performance, etc.) |
|
|
47
47
|
| Chinese language rules | 11 | Always active (zh/ translations of common rules) |
|
|
48
|
-
| Language-specific rule sets |
|
|
48
|
+
| Language-specific rule sets | 13 | Activated by `/ccp:setup` (see Language Rules below) |
|
|
49
49
|
| Context modes | 3 | dev, research, review |
|
|
50
50
|
| Reference examples | 6 | CLAUDE.md examples for different project types |
|
|
51
51
|
|
|
@@ -63,12 +63,17 @@ claude -> /ccp:setup <- wizard scans codebase, generates CLAUDE.md
|
|
|
63
63
|
| `/ccp:resume-session` | Load previous session context |
|
|
64
64
|
| `/ccp:learn` | Extract reusable patterns from session |
|
|
65
65
|
| `/ccp:evolve` | Promote learned instincts into skills, commands, or agents |
|
|
66
|
+
| `/ccp:mvp-phase N` | Plan a phase as a vertical MVP slice (user story + SPIDR splitting) |
|
|
67
|
+
| `/ccp:security-scan` | Scan `.claude/` config for security issues via AgentShield (opt-in `npx`) |
|
|
68
|
+
| `/ccp:plan-prd` | Generate a lean, problem-first PRD and hand off to planning |
|
|
69
|
+
| `/ccp:cost-report` | Generate a local Claude Code cost report from a cost-tracker DB |
|
|
70
|
+
| `/ccp:pr-ecc` | Create a GitHub PR from the current branch's unpushed commits |
|
|
66
71
|
|
|
67
|
-
Run `/ccp:help` for the full list of all
|
|
72
|
+
Run `/ccp:help` for the full list of all 122 commands.
|
|
68
73
|
|
|
69
|
-
## Hooks (
|
|
74
|
+
## Hooks (19 total)
|
|
70
75
|
|
|
71
|
-
|
|
76
|
+
18 event hooks and 1 statusLine, all registered automatically during install.
|
|
72
77
|
|
|
73
78
|
| Hook | Event | Description |
|
|
74
79
|
|------|-------|-------------|
|
|
@@ -92,7 +97,7 @@ Run `/ccp:help` for the full list of all 101 commands.
|
|
|
92
97
|
|
|
93
98
|
10 common rules are always active. 11 language-specific rule sets are available in `available-rules/` and activated by the `/ccp:setup` wizard when it detects your project language.
|
|
94
99
|
|
|
95
|
-
Available language rule sets: TypeScript, Python, Go, Swift, Kotlin, PHP, Perl, Java, C++, C#, Rust.
|
|
100
|
+
Available language rule sets: TypeScript, Python, Go, Swift, Kotlin, PHP, Perl, Java, C++, C#, Rust, Dart, Web.
|
|
96
101
|
|
|
97
102
|
## Self-Updating
|
|
98
103
|
|
package/bin/install.js
CHANGED
|
@@ -99,6 +99,10 @@ const MCP_TEMPLATE = {
|
|
|
99
99
|
"command": "codebase-memory-mcp",
|
|
100
100
|
"args": [],
|
|
101
101
|
"_install": "curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash"
|
|
102
|
+
},
|
|
103
|
+
"_agentshield": {
|
|
104
|
+
"_comment": "OPT-IN: AgentShield security scanner (external, not vendored). Run via /ccp:security-scan or `npx ecc-agentshield scan`. This entry is inert (underscore-prefixed); rename to enable. AgentShield ships a `scan` CLI, not an MCP server.",
|
|
105
|
+
"_install": "npx ecc-agentshield scan --path ."
|
|
102
106
|
}
|
|
103
107
|
}
|
|
104
108
|
};
|
|
@@ -122,11 +126,28 @@ function copyDir(srcDir, destDir, opts = {}) {
|
|
|
122
126
|
if (entry.isDirectory()) {
|
|
123
127
|
count += copyDir(s, d, opts);
|
|
124
128
|
} else {
|
|
129
|
+
// Hook-version substitution applies to any hook file (.sh or .js) carrying
|
|
130
|
+
// the {{CCP_VERSION}} placeholder. Combined with .md/.sh path replacement.
|
|
131
|
+
const isHookFile = /[\\/]hooks[\\/]/.test(d);
|
|
125
132
|
if (replacePaths && (entry.name.endsWith('.md') || entry.name.endsWith('.sh'))) {
|
|
126
133
|
let text = fs.readFileSync(s, 'utf8');
|
|
127
134
|
text = text.replace(/~\/\.claude\//g, pathPrefix);
|
|
128
135
|
text = text.replace(/\$HOME\/\.claude\//g, pathPrefix);
|
|
136
|
+
text = text.replace(/\$\{CLAUDE_PLUGIN_ROOT\}/g, pathPrefix.replace(/\/$/, ''));
|
|
137
|
+
text = text.replace(/\{\{CCP_VERSION\}\}/g, pkg.version);
|
|
129
138
|
fs.writeFileSync(d, text);
|
|
139
|
+
} else if (isHookFile && entry.name.endsWith('.js')) {
|
|
140
|
+
// .js hook files: substitute version + plugin-root placeholders if
|
|
141
|
+
// present. Otherwise raw-copy to preserve byte-identical content.
|
|
142
|
+
const raw = fs.readFileSync(s, 'utf8');
|
|
143
|
+
if (raw.includes('{{CCP_VERSION}}') || raw.includes('${CLAUDE_PLUGIN_ROOT}')) {
|
|
144
|
+
let text = raw;
|
|
145
|
+
text = text.replace(/\$\{CLAUDE_PLUGIN_ROOT\}/g, pathPrefix.replace(/\/$/, ''));
|
|
146
|
+
text = text.replace(/\{\{CCP_VERSION\}\}/g, pkg.version);
|
|
147
|
+
fs.writeFileSync(d, text);
|
|
148
|
+
} else {
|
|
149
|
+
fs.copyFileSync(s, d);
|
|
150
|
+
}
|
|
130
151
|
} else {
|
|
131
152
|
fs.copyFileSync(s, d);
|
|
132
153
|
}
|
|
@@ -152,6 +173,17 @@ function copyFile(s, d, replace = false) {
|
|
|
152
173
|
function addHookIfMissing(settings, event, matcher, fingerprint, hookCmd, description) {
|
|
153
174
|
if (!settings.hooks) settings.hooks = {};
|
|
154
175
|
if (!settings.hooks[event]) settings.hooks[event] = [];
|
|
176
|
+
let updated = false;
|
|
177
|
+
for (const entry of settings.hooks[event]) {
|
|
178
|
+
for (const h of entry.hooks || []) {
|
|
179
|
+
if (h.command && h.command.includes(fingerprint) && h.command !== hookCmd) {
|
|
180
|
+
// Stale hook with our fingerprint but different command (e.g. relative path
|
|
181
|
+
// from older install, or absolute path from a different machine). Replace it.
|
|
182
|
+
h.command = hookCmd;
|
|
183
|
+
updated = true;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
155
187
|
const exists = settings.hooks[event].some(e =>
|
|
156
188
|
e.hooks?.some(h => h.command?.includes(fingerprint))
|
|
157
189
|
);
|
|
@@ -162,7 +194,7 @@ function addHookIfMissing(settings, event, matcher, fingerprint, hookCmd, descri
|
|
|
162
194
|
settings.hooks[event].push(entry);
|
|
163
195
|
return true;
|
|
164
196
|
}
|
|
165
|
-
return
|
|
197
|
+
return updated;
|
|
166
198
|
}
|
|
167
199
|
|
|
168
200
|
// --- Migration ---
|
|
@@ -171,9 +203,63 @@ const LEGACY_HOOK_FINGERPRINTS = [
|
|
|
171
203
|
'gsd-context-monitor',
|
|
172
204
|
'gsd-check-update',
|
|
173
205
|
'gsd-statusline',
|
|
174
|
-
|
|
206
|
+
// Phase 33 GATE-12: parent of Phase 32 -pre/-failure split (commit 8742c81).
|
|
207
|
+
// Strips stale v3.2 'hooks/mcp-health-check' registrations on --update.
|
|
208
|
+
// CRITICAL: removeLegacyHooks MUST run before addHookIfMissing in install()
|
|
209
|
+
// body — the two new fingerprints contain this string as substring and would
|
|
210
|
+
// be wrongly stripped if order is flipped. See bin/install.js:272 vs :345,:360.
|
|
211
|
+
'hooks/mcp-health-check'
|
|
175
212
|
];
|
|
176
213
|
|
|
214
|
+
// Allowlist source-of-truth: .planning/phases/31-audit-scope/31-ALLOWLIST.md. Drift caught by tests/lib/06-phase-33-gates.test.js.
|
|
215
|
+
const ALLOWLIST = {
|
|
216
|
+
ecc_exclude_paths: [
|
|
217
|
+
'ecc2/',
|
|
218
|
+
'.opencode/',
|
|
219
|
+
'ecc-tools.json',
|
|
220
|
+
'assets/',
|
|
221
|
+
'docs/business/',
|
|
222
|
+
'docs/releases/',
|
|
223
|
+
'tests/docs/',
|
|
224
|
+
'hooks/hooks.json'
|
|
225
|
+
],
|
|
226
|
+
gsd_exclude_patterns: [
|
|
227
|
+
'runtimes/',
|
|
228
|
+
'runtime-artifact-layout.cjs',
|
|
229
|
+
'ns-*'
|
|
230
|
+
]
|
|
231
|
+
};
|
|
232
|
+
|
|
233
|
+
// Pure: returns true if relPath is NOT excluded by source's allowlist patterns.
|
|
234
|
+
function isPathAllowed(relPath, source) {
|
|
235
|
+
if (typeof relPath !== 'string' || !relPath) return false;
|
|
236
|
+
if (source !== 'ecc' && source !== 'gsd') {
|
|
237
|
+
throw new Error('isPathAllowed: source must be "ecc" or "gsd", got ' + JSON.stringify(source));
|
|
238
|
+
}
|
|
239
|
+
const list = source === 'ecc'
|
|
240
|
+
? ALLOWLIST.ecc_exclude_paths
|
|
241
|
+
: ALLOWLIST.gsd_exclude_patterns;
|
|
242
|
+
for (const pat of list) {
|
|
243
|
+
if (pat.endsWith('*')) {
|
|
244
|
+
const prefix = pat.slice(0, -1);
|
|
245
|
+
if (relPath.startsWith(prefix)) return false;
|
|
246
|
+
} else if (relPath === pat || relPath.startsWith(pat)) {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Throws if relPath is excluded; used as a guard at cherry-pick call sites.
|
|
254
|
+
function assertAllowed(relPath, source) {
|
|
255
|
+
if (!isPathAllowed(relPath, source)) {
|
|
256
|
+
throw new Error(
|
|
257
|
+
'[allowlist] Refused to cherry-pick "' + relPath + '" from ' + source +
|
|
258
|
+
' — excluded by .planning/phases/31-audit-scope/31-ALLOWLIST.md'
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
177
263
|
const LEGACY_DIRS = [
|
|
178
264
|
'gsd', 'ecc', 'kit', 'commands/gsd',
|
|
179
265
|
'get-shit-done', 'ecc-scripts', 'ecc-examples', 'kit-version'
|
|
@@ -294,7 +380,7 @@ function install() {
|
|
|
294
380
|
}
|
|
295
381
|
|
|
296
382
|
// =======================================
|
|
297
|
-
// Hook registration (
|
|
383
|
+
// Hook registration (15 event hooks + 1 statusLine)
|
|
298
384
|
// =======================================
|
|
299
385
|
|
|
300
386
|
// Safety hooks
|
|
@@ -312,7 +398,10 @@ function install() {
|
|
|
312
398
|
'Config protection');
|
|
313
399
|
|
|
314
400
|
// MCP health check (PreToolUse)
|
|
315
|
-
|
|
401
|
+
// Phase 32 GATE-08: disambiguated from prior shared fingerprint
|
|
402
|
+
// 'hooks/mcp-health-check'. Phase 33 GATE-12 extends LEGACY_HOOK_FINGERPRINTS
|
|
403
|
+
// to clean up stale v3.2 registrations on --update.
|
|
404
|
+
addHookIfMissing(settings, 'PreToolUse', 'mcp_', 'hooks/mcp-health-check-pre',
|
|
316
405
|
`node ${pathPrefix}hooks/mcp-health-check.js`,
|
|
317
406
|
'MCP health check');
|
|
318
407
|
|
|
@@ -321,8 +410,13 @@ function install() {
|
|
|
321
410
|
`node ${pathPrefix}hooks/ccp-context-monitor.js`,
|
|
322
411
|
'CCP context window monitor');
|
|
323
412
|
|
|
413
|
+
// Read injection scanner -- advisory hook fired on Read tool returns
|
|
414
|
+
addHookIfMissing(settings, 'PostToolUse', 'Read', 'ccp-read-injection-scanner',
|
|
415
|
+
`node ${pathPrefix}hooks/ccp-read-injection-scanner.js`,
|
|
416
|
+
'Read content injection scanner (advisory)');
|
|
417
|
+
|
|
324
418
|
// MCP health check (PostToolUseFailure)
|
|
325
|
-
addHookIfMissing(settings, 'PostToolUseFailure', 'mcp_', 'hooks/mcp-health-check',
|
|
419
|
+
addHookIfMissing(settings, 'PostToolUseFailure', 'mcp_', 'hooks/mcp-health-check-failure',
|
|
326
420
|
`node ${pathPrefix}hooks/mcp-health-check.js`,
|
|
327
421
|
'MCP health check (failure recovery)');
|
|
328
422
|
|
|
@@ -350,13 +444,31 @@ function install() {
|
|
|
350
444
|
`node ${pathPrefix}hooks/suggest-compact.js`,
|
|
351
445
|
'Strategic compact suggestions');
|
|
352
446
|
|
|
353
|
-
//
|
|
447
|
+
// Phase 38 (HOOK-01/03/04): ECC hook behaviors re-authored as standalone
|
|
448
|
+
// ccp-* scripts (no plugin-discovery resolver). Fingerprints verified
|
|
449
|
+
// substring-collision-safe vs existing + LEGACY_HOOK_FINGERPRINTS.
|
|
450
|
+
addHookIfMissing(settings, 'PreToolUse', 'Bash', 'ccp-pre-bash-dispatcher',
|
|
451
|
+
`node ${pathPrefix}hooks/ccp-pre-bash-dispatcher.js`,
|
|
452
|
+
'CCP pre-bash dispatcher chain (GateGuard Bash branch)');
|
|
453
|
+
|
|
454
|
+
addHookIfMissing(settings, 'PreToolUse', 'Write|Edit|MultiEdit', 'ccp-write-gateguard',
|
|
455
|
+
`node ${pathPrefix}hooks/ccp-write-gateguard.js`,
|
|
456
|
+
'CCP GateGuard fact-forcing gate (opt-in: CCP_HOOK_PROFILE=strict)');
|
|
457
|
+
|
|
458
|
+
addHookIfMissing(settings, 'PreToolUse', 'Write', 'ccp-doc-file-warning',
|
|
459
|
+
`node ${pathPrefix}hooks/ccp-doc-file-warning.js`,
|
|
460
|
+
'CCP doc-file advisory (warns on ad-hoc doc filenames)');
|
|
461
|
+
|
|
462
|
+
// Notifications -- silent by default to avoid AudioFileOpen errors on systems
|
|
463
|
+
// missing system sounds. Set CCP_NOTIFY_SOUND=1 to opt back into sound.
|
|
464
|
+
// Cross-platform: macOS (terminal-notifier/osascript), Linux (notify-send),
|
|
465
|
+
// Windows (PowerShell BurntToast or msg).
|
|
354
466
|
addHookIfMissing(settings, 'Stop', '', 'Task completed',
|
|
355
|
-
`bash -c 'if command -v terminal-notifier
|
|
467
|
+
`bash -c 'if [ "$CCP_NOTIFY" = "0" ]; then exit 0; fi; SOUND_FLAG=""; OSASCRIPT_SOUND=""; if [ "$CCP_NOTIFY_SOUND" = "1" ]; then SOUND_FLAG="-sound default"; OSASCRIPT_SOUND=" sound name \\"Glass\\""; fi; if command -v terminal-notifier >/dev/null 2>&1; then terminal-notifier -title "Claude Code" -message "Task completed" $SOUND_FLAG 2>/dev/null; elif command -v osascript >/dev/null 2>&1; then osascript -e "display notification \\"Task completed\\" with title \\"Claude Code\\"$OSASCRIPT_SOUND" 2>/dev/null; elif command -v notify-send >/dev/null 2>&1; then notify-send -u normal "Claude Code" "Task completed" 2>/dev/null; elif command -v powershell.exe >/dev/null 2>&1; then powershell.exe -NoProfile -Command "[reflection.assembly]::LoadWithPartialName(\\"System.Windows.Forms\\") | Out-Null; \\$n = New-Object System.Windows.Forms.NotifyIcon; \\$n.Icon = [System.Drawing.SystemIcons]::Information; \\$n.Visible = \\$true; \\$n.ShowBalloonTip(3000, \\"Claude Code\\", \\"Task completed\\", \\"Info\\")" 2>/dev/null; fi; exit 0'`,
|
|
356
468
|
'Notification: task completed');
|
|
357
469
|
|
|
358
470
|
addHookIfMissing(settings, 'Notification', 'idle_prompt', 'Ready for input',
|
|
359
|
-
`bash -c 'if command -v terminal-notifier
|
|
471
|
+
`bash -c 'if [ "$CCP_NOTIFY" = "0" ]; then exit 0; fi; SOUND_FLAG=""; OSASCRIPT_SOUND=""; if [ "$CCP_NOTIFY_SOUND" = "1" ]; then SOUND_FLAG="-sound default"; OSASCRIPT_SOUND=" sound name \\"Glass\\""; fi; if command -v terminal-notifier >/dev/null 2>&1; then terminal-notifier -title "Claude Code" -message "Ready for input" $SOUND_FLAG 2>/dev/null; elif command -v osascript >/dev/null 2>&1; then osascript -e "display notification \\"Ready for input\\" with title \\"Claude Code\\"$OSASCRIPT_SOUND" 2>/dev/null; elif command -v notify-send >/dev/null 2>&1; then notify-send -u normal "Claude Code" "Ready for input" 2>/dev/null; elif command -v powershell.exe >/dev/null 2>&1; then powershell.exe -NoProfile -Command "[reflection.assembly]::LoadWithPartialName(\\"System.Windows.Forms\\") | Out-Null; \\$n = New-Object System.Windows.Forms.NotifyIcon; \\$n.Icon = [System.Drawing.SystemIcons]::Information; \\$n.Visible = \\$true; \\$n.ShowBalloonTip(3000, \\"Claude Code\\", \\"Ready for input\\", \\"Info\\")" 2>/dev/null; fi; exit 0'`,
|
|
360
472
|
'Notification: idle prompt');
|
|
361
473
|
|
|
362
474
|
addHookIfMissing(settings, 'Notification', 'permission_prompt', 'Permission needed',
|
|
@@ -443,6 +555,10 @@ function uninstall() {
|
|
|
443
555
|
}
|
|
444
556
|
|
|
445
557
|
// --- Main ---
|
|
446
|
-
if (
|
|
447
|
-
|
|
448
|
-
else { install(); }
|
|
558
|
+
if (require.main === module) {
|
|
559
|
+
if (hasUninstall) { uninstall(); }
|
|
560
|
+
else if (!hasGlobal && !hasLocal) { console.log(` ${dim}Defaulting to local install (.claude/)${reset}\n`); install(); }
|
|
561
|
+
else { install(); }
|
|
562
|
+
} else {
|
|
563
|
+
module.exports = { isPathAllowed, assertAllowed, ALLOWLIST };
|
|
564
|
+
}
|
package/manifest.json
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "3.
|
|
2
|
+
"version": "3.3.0",
|
|
3
|
+
"bundled": {
|
|
4
|
+
"gsd": {
|
|
5
|
+
"version": "1.42.1",
|
|
6
|
+
"commit": "d4d417860343421adacb141baef511cc2f0f43b1",
|
|
7
|
+
"source": "https://github.com/gsd-build/get-shit-done"
|
|
8
|
+
},
|
|
9
|
+
"ecc": {
|
|
10
|
+
"version": "2.0.0-rc.1",
|
|
11
|
+
"commit": "744f4169972fd81618c3114ea1ca5ffb85ef4c82",
|
|
12
|
+
"source": "https://github.com/affaan-m/everything-claude-code"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
3
15
|
"external": {
|
|
4
16
|
"find-skills": {
|
|
5
17
|
"install": "npx skills add https://github.com/vercel-labs/skills --skill find-skills -g -a claude-code -y",
|
|
@@ -12,6 +24,13 @@
|
|
|
12
24
|
"codebase-memory-mcp": {
|
|
13
25
|
"install": "curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash",
|
|
14
26
|
"repo": "https://github.com/DeusData/codebase-memory-mcp"
|
|
27
|
+
},
|
|
28
|
+
"agentshield": {
|
|
29
|
+
"package": "ecc-agentshield",
|
|
30
|
+
"version": "1.4.0",
|
|
31
|
+
"commit": "bff08f0bcd5b8501b46a9bd9b493c4910379a3e2",
|
|
32
|
+
"invoke": "npx ecc-agentshield scan",
|
|
33
|
+
"repo": "https://github.com/affaan-m/agentshield"
|
|
15
34
|
}
|
|
16
35
|
}
|
|
17
36
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-code-pilot",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"description": "Claude Code Pilot -- universal AI coding companion with spec-driven development, session persistence, and auto-setup.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"claude-code-pilot": "bin/install.js"
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"bin",
|
|
10
10
|
"src",
|
|
11
11
|
"docs",
|
|
12
|
-
"manifest.json"
|
|
12
|
+
"manifest.json",
|
|
13
|
+
"CHANGELOG.md"
|
|
13
14
|
],
|
|
14
15
|
"keywords": [
|
|
15
16
|
"claude",
|
|
@@ -40,7 +41,7 @@
|
|
|
40
41
|
"node": ">=16.7.0"
|
|
41
42
|
},
|
|
42
43
|
"scripts": {
|
|
43
|
-
"test": "node
|
|
44
|
+
"test": "node tests/run-all.js",
|
|
44
45
|
"prepublishOnly": "node scripts/prepublish-checks.js"
|
|
45
46
|
}
|
|
46
47
|
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: a11y-architect
|
|
3
|
+
description: Accessibility Architect specializing in WCAG 2.2 compliance for Web and Native platforms. Use PROACTIVELY when designing UI components, establishing design systems, or auditing code for inclusive user experiences.
|
|
4
|
+
model: sonnet
|
|
5
|
+
tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob"]
|
|
6
|
+
model: opus
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
You are a Senior Accessibility Architect. Your goal is to ensure that every digital product is Perceivable, Operable, Understandable, and Robust (POUR) for all users, including those with visual, auditory, motor, or cognitive disabilities.
|
|
10
|
+
|
|
11
|
+
## Your Role
|
|
12
|
+
|
|
13
|
+
- **Architecting Inclusivity**: Design UI systems that natively support assistive technologies (Screen Readers, Voice Control, Switch Access).
|
|
14
|
+
- **WCAG 2.2 Enforcement**: Apply the latest success criteria, focusing on new standards like Focus Appearance, Target Size, and Redundant Entry.
|
|
15
|
+
- **Platform Strategy**: Bridge the gap between Web standards (WAI-ARIA) and Native frameworks (SwiftUI/Jetpack Compose).
|
|
16
|
+
- **Technical Specifications**: Provide developers with precise attributes (roles, labels, hints, and traits) required for compliance.
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
### Step 1: Contextual Discovery
|
|
21
|
+
|
|
22
|
+
- Determine if the target is **Web**, **iOS**, or **Android**.
|
|
23
|
+
- Analyze the user interaction (e.g., Is this a simple button or a complex data grid?).
|
|
24
|
+
- Identify potential accessibility "blockers" (e.g., color-only indicators, missing focus containment in modals).
|
|
25
|
+
|
|
26
|
+
### Step 2: Strategic Implementation
|
|
27
|
+
|
|
28
|
+
- **Apply the Accessibility Skill**: Invoke specific logic to generate semantic code.
|
|
29
|
+
- **Define Focus Flow**: Map out how a keyboard or screen reader user will move through the interface.
|
|
30
|
+
- **Optimize Touch/Pointer**: Ensure all interactive elements meet the minimum **24x24 pixel** spacing or **44x44 pixel** target size requirements.
|
|
31
|
+
|
|
32
|
+
### Step 3: Validation & Documentation
|
|
33
|
+
|
|
34
|
+
- Review the output against the WCAG 2.2 Level AA checklist.
|
|
35
|
+
- Provide a brief "Implementation Note" explaining _why_ certain attributes (like `aria-live` or `accessibilityHint`) were used.
|
|
36
|
+
|
|
37
|
+
## Output Format
|
|
38
|
+
|
|
39
|
+
For every component or page request, provide:
|
|
40
|
+
|
|
41
|
+
1. **The Code**: Semantic HTML/ARIA or Native code.
|
|
42
|
+
2. **The Accessibility Tree**: A description of what a screen reader will announce.
|
|
43
|
+
3. **Compliance Mapping**: A list of specific WCAG 2.2 criteria addressed.
|
|
44
|
+
|
|
45
|
+
## Examples
|
|
46
|
+
|
|
47
|
+
### Example: Accessible Search Component
|
|
48
|
+
|
|
49
|
+
**Input**: "Create a search bar with a submit icon."
|
|
50
|
+
**Action**: Ensuring the icon-only button has a visible label and the input is correctly labeled.
|
|
51
|
+
**Output**:
|
|
52
|
+
|
|
53
|
+
```html
|
|
54
|
+
<form role="search">
|
|
55
|
+
<label for="site-search" class="sr-only">Search the site</label>
|
|
56
|
+
<input type="search" id="site-search" name="q" />
|
|
57
|
+
<button type="submit" aria-label="Search">
|
|
58
|
+
<svg aria-hidden="true">...</svg>
|
|
59
|
+
</button>
|
|
60
|
+
</form>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## WCAG 2.2 Core Compliance Checklist
|
|
64
|
+
|
|
65
|
+
### 1. Perceivable (Information must be presentable)
|
|
66
|
+
|
|
67
|
+
- [ ] **Text Alternatives**: All non-text content has a text alternative (Alt text or labels).
|
|
68
|
+
- [ ] **Contrast**: Text meets 4.5:1; UI components/graphics meet 3:1 contrast ratios.
|
|
69
|
+
- [ ] **Adaptable**: Content reflows and remains functional when resized up to 400%.
|
|
70
|
+
|
|
71
|
+
### 2. Operable (Interface components must be usable)
|
|
72
|
+
|
|
73
|
+
- [ ] **Keyboard Accessible**: Every interactive element is reachable via keyboard/switch control.
|
|
74
|
+
- [ ] **Navigable**: Focus order is logical, and focus indicators are high-contrast (SC 2.4.11).
|
|
75
|
+
- [ ] **Pointer Gestures**: Single-pointer alternatives exist for all dragging or multipoint gestures.
|
|
76
|
+
- [ ] **Target Size**: Interactive elements are at least 24x24 CSS pixels (SC 2.5.8).
|
|
77
|
+
|
|
78
|
+
### 3. Understandable (Information must be clear)
|
|
79
|
+
|
|
80
|
+
- [ ] **Predictable**: Navigation and identification of elements are consistent across the app.
|
|
81
|
+
- [ ] **Input Assistance**: Forms provide clear error identification and suggestions for fix.
|
|
82
|
+
- [ ] **Redundant Entry**: Avoid asking for the same info twice in a single process (SC 3.3.7).
|
|
83
|
+
|
|
84
|
+
### 4. Robust (Content must be compatible)
|
|
85
|
+
|
|
86
|
+
- [ ] **Compatibility**: Maximize compatibility with assistive tech using valid Name, Role, and Value.
|
|
87
|
+
- [ ] **Status Messages**: Screen readers are notified of dynamic changes via ARIA live regions.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Anti-Patterns
|
|
92
|
+
|
|
93
|
+
| Issue | Why it fails |
|
|
94
|
+
| :------------------------- | :------------------------------------------------------------------------------------------------- |
|
|
95
|
+
| **"Click Here" Links** | Non-descriptive; screen reader users navigating by links won't know the destination. |
|
|
96
|
+
| **Fixed-Sized Containers** | Prevents content reflow and breaks the layout at higher zoom levels. |
|
|
97
|
+
| **Keyboard Traps** | Prevents users from navigating the rest of the page once they enter a component. |
|
|
98
|
+
| **Auto-Playing Media** | Distracting for users with cognitive disabilities; interferes with screen reader audio. |
|
|
99
|
+
| **Empty Buttons** | Icon-only buttons without an `aria-label` or `accessibilityLabel` are invisible to screen readers. |
|
|
100
|
+
|
|
101
|
+
## Accessibility Decision Record Template
|
|
102
|
+
|
|
103
|
+
For major UI decisions, use this format:
|
|
104
|
+
|
|
105
|
+
````markdown
|
|
106
|
+
# ADR-ACC-[000]: [Title of the Accessibility Decision]
|
|
107
|
+
|
|
108
|
+
## Status
|
|
109
|
+
|
|
110
|
+
Proposed | **Accepted** | Deprecated | Superseded by [ADR-XXX]
|
|
111
|
+
|
|
112
|
+
## Context
|
|
113
|
+
|
|
114
|
+
_Describe the UI component or workflow being addressed._
|
|
115
|
+
|
|
116
|
+
- **Platform**: [Web | iOS | Android | Cross-platform]
|
|
117
|
+
- **WCAG 2.2 Success Criterion**: [e.g., 2.5.8 Target Size (Minimum)]
|
|
118
|
+
- **Problem**: What is the current accessibility barrier? (e.g., "The 'Close' button in the modal is too small for users with motor impairments.")
|
|
119
|
+
|
|
120
|
+
## Decision
|
|
121
|
+
|
|
122
|
+
_Detail the specific implementation choice._
|
|
123
|
+
"We will implement a touch target of at least 44x44 points for all mobile navigation elements and 24x24 CSS pixels for web, ensuring a minimum 4px spacing between adjacent targets."
|
|
124
|
+
|
|
125
|
+
## Implementation Details
|
|
126
|
+
|
|
127
|
+
### Code/Spec
|
|
128
|
+
|
|
129
|
+
```[language]
|
|
130
|
+
// Example: SwiftUI
|
|
131
|
+
Button(action: close) {
|
|
132
|
+
Image(systemName: "xmark")
|
|
133
|
+
.frame(width: 44, height: 44) // Standardizing hit area
|
|
134
|
+
}
|
|
135
|
+
.accessibilityLabel("Close modal")
|
|
136
|
+
```
|
|
137
|
+
````
|
|
138
|
+
|
|
139
|
+
## Reference
|
|
140
|
+
|
|
141
|
+
- See skill `accessibility` to transform raw UI requirements into platform-specific accessible code (WAI-ARIA, SwiftUI, or Jetpack Compose) based on WCAG 2.2 criteria.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-architect
|
|
3
|
+
description: Designs feature architectures by analyzing existing codebase patterns and conventions, then providing implementation blueprints with concrete files, interfaces, data flow, and build order.
|
|
4
|
+
model: sonnet
|
|
5
|
+
tools: [Read, Grep, Glob, Bash]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Code Architect Agent
|
|
9
|
+
|
|
10
|
+
You design feature architectures based on a deep understanding of the existing codebase.
|
|
11
|
+
|
|
12
|
+
## Process
|
|
13
|
+
|
|
14
|
+
### 1. Pattern Analysis
|
|
15
|
+
|
|
16
|
+
- study existing code organization and naming conventions
|
|
17
|
+
- identify architectural patterns already in use
|
|
18
|
+
- note testing patterns and existing boundaries
|
|
19
|
+
- understand the dependency graph before proposing new abstractions
|
|
20
|
+
|
|
21
|
+
### 2. Architecture Design
|
|
22
|
+
|
|
23
|
+
- design the feature to fit naturally into current patterns
|
|
24
|
+
- choose the simplest architecture that meets the requirement
|
|
25
|
+
- avoid speculative abstractions unless the repo already uses them
|
|
26
|
+
|
|
27
|
+
### 3. Implementation Blueprint
|
|
28
|
+
|
|
29
|
+
For each important component, provide:
|
|
30
|
+
|
|
31
|
+
- file path
|
|
32
|
+
- purpose
|
|
33
|
+
- key interfaces
|
|
34
|
+
- dependencies
|
|
35
|
+
- data flow role
|
|
36
|
+
|
|
37
|
+
### 4. Build Sequence
|
|
38
|
+
|
|
39
|
+
Order the implementation by dependency:
|
|
40
|
+
|
|
41
|
+
1. types and interfaces
|
|
42
|
+
2. core logic
|
|
43
|
+
3. integration layer
|
|
44
|
+
4. UI
|
|
45
|
+
5. tests
|
|
46
|
+
6. docs
|
|
47
|
+
|
|
48
|
+
## Output Format
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
## Architecture: [Feature Name]
|
|
52
|
+
|
|
53
|
+
### Design Decisions
|
|
54
|
+
- Decision 1: [Rationale]
|
|
55
|
+
- Decision 2: [Rationale]
|
|
56
|
+
|
|
57
|
+
### Files to Create
|
|
58
|
+
| File | Purpose | Priority |
|
|
59
|
+
|------|---------|----------|
|
|
60
|
+
|
|
61
|
+
### Files to Modify
|
|
62
|
+
| File | Changes | Priority |
|
|
63
|
+
|------|---------|----------|
|
|
64
|
+
|
|
65
|
+
### Data Flow
|
|
66
|
+
[Description]
|
|
67
|
+
|
|
68
|
+
### Build Sequence
|
|
69
|
+
1. Step 1
|
|
70
|
+
2. Step 2
|
|
71
|
+
```
|