@the-bearded-bear/claude-craft 8.4.0 → 8.5.0-next.b249d60

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.
@@ -846,6 +846,23 @@ main() {
846
846
  install_claude_md
847
847
  fi
848
848
 
849
+ # Copy AGENTS.md template to target root (idempotent — won't overwrite existing)
850
+ local agents_template
851
+ agents_template="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../../.claude/templates/AGENTS.md.template"
852
+ local agents_target="$target_dir/AGENTS.md"
853
+ if [[ -f "$agents_template" && ! -f "$agents_target" ]]; then
854
+ if $dry_run; then
855
+ log_dry_run "Would create $agents_target from AGENTS.md.template"
856
+ else
857
+ cp "$agents_template" "$agents_target"
858
+ log_success "[install-common-rules] Created $agents_target from template"
859
+ ((++files_created))
860
+ fi
861
+ elif [[ -f "$agents_target" ]]; then
862
+ log_info "[install-common-rules] AGENTS.md exists at $agents_target (not overwritten)"
863
+ ((++files_skipped))
864
+ fi
865
+
849
866
  print_summary
850
867
 
851
868
  # Exit code
@@ -0,0 +1,347 @@
1
+ # Claude Craft — AI-First TDD Framework for Cursor IDE
2
+ # Generated from https://github.com/TheBeardedCTO/claude-craft
3
+ # Version: 8.0.1 | Last updated: 2026-04-17
4
+
5
+ ---
6
+
7
+ ## Core Framework
8
+
9
+ # Claude-Craft - Multi-Technology Framework
10
+
11
+ **Version:** 8.5.0 | **Languages:** en, fr, es, de, pt
12
+
13
+ A comprehensive AI-assisted development framework for Claude Code with 19 technology stacks, 72 agents, 211 commands across 26 namespaces, and BMAD v6 project management.
14
+
15
+ ---
16
+
17
+ ## Supported Technologies (2026)
18
+
19
+ | Stack | Version | Architecture | Key Patterns |
20
+ |-------|---------|--------------|--------------|
21
+ | **.NET / C#** | 10 LTS / C# 14 | Clean Architecture | CQRS, MediatR (ou alternative), EF Core |
22
+ | **Symfony / PHP** | 8.0 / PHP 8.4+ | Clean Architecture | DDD, Hexagonal, API Platform, JsonStreamer |
23
+ | **Flutter / Dart** | 3.41 / Dart 3.11 | Clean Architecture | BLoC v9, Riverpod 3, Material 3, Impeller |
24
+ | **React** | 19.2 + Compiler 1.0 | Feature-based | Hooks, Zustand, React Query, Server Components |
25
+ | **React Native** | 0.85 (New Architecture) | Feature-based | Navigation 7, Reanimated 4, TurboModules |
26
+ | **Angular** | 20 LTS (ou 21) | Domain-driven | Signals, Standalone, Zoneless, httpResource |
27
+ | **Vue.js** | 3.5+ (3.6 beta Vapor) | Composition API | Pinia, Vitest, TypeScript, Alien Signals |
28
+ | **Laravel** | 13.x / PHP 8.5 | Clean Architecture | Actions, Pest 4, Sanctum, AI SDK, Passkey |
29
+ | **Python** | 3.14+ | Clean Architecture / Hexagonal | FastAPI, async/await, Pydantic, free-threading, JIT |
30
+ | **PHP** | 8.5 (Property Hooks 8.4+) | Clean Architecture | PSR-12, PHPStan Level 10, Pest 4 |
31
+ | **Paperclip** | 2026.403.0 | Two-layer (control plane + adapters) | Node.js 20+, TypeScript, Vitest, PostgreSQL, governance-first |
32
+
33
+ ### Technology Quick Links
34
+
35
+ | Technology | Reference | Commands |
36
+ |------------|-----------|----------|
37
+ | C# / .NET | `@.claude/references/csharp/` | `/csharp:*` |
38
+ | Symfony / PHP | `@.claude/references/symfony/CLAUDE.md` | `/symfony:*` |
39
+ | Flutter / Dart | `@.claude/references/flutter/CLAUDE.md` | `/flutter:*` |
40
+ | React | `@.claude/references/react/` | `/react:*` |
41
+ | React Native | `@.claude/references/react-native/` | `/reactnative:*` |
42
+ | Angular | `@.claude/references/angular/` | `/angular:*` |
43
+ | Vue.js | `@.claude/references/vuejs/` | `/vuejs:*` |
44
+ | Laravel | `@.claude/references/laravel/` | `/laravel:*` |
45
+ | Python | `@.claude/references/python/` | `/python:*` |
46
+ | PHP | `@.claude/references/php/` | `/php:*` |
47
+ | Paperclip | `@.claude/references/paperclip/` | `/paperclip:*` |
48
+
49
+ See `@.claude/INDEX.md` for condensed checklists and patterns.
50
+
51
+ ---
52
+
53
+ ## Available Commands (26 namespaces, 211 commands)
54
+
55
+ Core: `/common:*`, `/workflow:*`, `/team:*`, `/qa:*`, `/uiux:*` | Tech: `/symfony:*`, `/react:*`, `/flutter:*`, `/python:*`, `/angular:*`, `/vuejs:*`, `/laravel:*`, `/reactnative:*`, `/csharp:*`, `/php:*`, `/paperclip:*` | Infra (via `@devops-engineer`): Docker 29.4.3, Coolify v4.0.0 (stable), K8s 1.36.1, OpenTofu 1.12.0, Ansible 2.21.0, FrankenPHP 1.12.1, PgBouncer 1.25.2 (CVE-2026-6664/6667 patched) | Project: `/sprint:*`, `/gate:*`, `/project:*`
56
+
57
+ Full reference: [Commands](../docs/COMMANDS.md) | [CLI Reference](../docs/CLI-REFERENCE.md)
58
+
59
+ ---
60
+
61
+ ## Available Agents (72 agents)
62
+
63
+ **Common** (20): `@api-designer`, `@database-architect`, `@devops-engineer`, `@performance-auditor`, `@refactoring-specialist`, `@tdd-coach`, `@uiux-orchestrator`, `@ui-designer`, `@ux-ergonome`, `@accessibility-expert`, `@research-assistant`, `@ralph-conductor`, `@security-auditor`, `@data-analyst`, `@migration-specialist`, `@cost-optimizer`, `@chaos-engineer`, `@devex-engineer`, `@mlops-engineer`, `@observability-engineer` | **Tech Reviewers** (11): `@{symfony,flutter,react,python,angular,laravel,vuejs,reactnative,csharp,php,paperclip}-reviewer` | **Infrastructure** (39): Docker, Coolify, K8s, OpenTofu, Ansible, Hcloud, PgBouncer, FrankenPHP — see [Agents](../docs/AGENTS.md) | **Project** (2): `@product-owner`, `@tech-lead`
64
+
65
+ Full reference: [Agents](../docs/AGENTS.md)
66
+
67
+ ---
68
+
69
+ ## BMAD v6 Framework
70
+
71
+ | Track | Setup | Phases | Best For |
72
+ |-------|-------|--------|----------|
73
+ | **Quick Flow** | < 5 min | Implement only | Bug fixes, hotfixes |
74
+ | **Standard** | < 15 min | Plan -> Design -> Implement | New features |
75
+ | **Enterprise** | < 30 min | Analyze -> Plan -> Design -> Implement | Platforms |
76
+
77
+ **Quality Gates:** PRD >=80% | Tech Spec >=90% | INVEST 6/6 | Sprint Ready 100% | Story DoD 100% | Spec Alignment >=85%
78
+
79
+ **Status Routing:** `backlog -> ready-for-dev -> in-progress -> review -> done` (any -> `blocked`)
80
+
81
+ **TDD Phases:** Red -> Green -> Refactor
82
+
83
+ ---
84
+
85
+ ## Ralph Wiggum
86
+
87
+ Continuous AI loop that runs Claude until task completion: `/common:ralph-run "task"`
88
+
89
+ **DoD Validators:** `command` | `output_contains` | `file_changed` | `hook` | `human`
90
+
91
+ ## QA Recette
92
+
93
+ Automated acceptance testing via Chrome. **Golden Rule:** A fixed bug should NEVER reappear.
94
+
95
+ ```bash
96
+ /qa:recette --scope=story --id=US-001 # Test a story
97
+ /qa:recette --scope=sprint --id=Sprint-3 # Test a sprint
98
+ /qa:recette --resume=REC-20260130-143022 # Resume session
99
+ ```
100
+
101
+ **Prerequisites:** Chrome extension v1.0.36+ | Claude Code with `--chrome` or `/chrome`
102
+
103
+ > BMAD roles (bmad-master, pm, ba, architect, po, sm, dev, qa, qa-recette, ux) are integrated into workflow and sprint commands, not standalone agent files.
104
+
105
+ ---
106
+
107
+ ## Docker Requirement
108
+
109
+ **Always use Docker for commands to abstract from local environment.**
110
+
111
+ ```bash
112
+ docker compose exec app php bin/console ...
113
+ docker compose exec app ./vendor/bin/phpunit
114
+ ```
115
+
116
+ ---
117
+
118
+ ## Skills
119
+
120
+ `/solid-principles`, `/testing`, `/security`, `/git-workflow`, `/documentation`, `/kiss-dry-yagni`, `/workflow-analysis`, `/parallel-worktrees`, `/atomic-tasks`, `/design-md-convention`, `/architect`, `/debug-methodical`, `/socratic-brainstorm` — loaded on demand from `.claude/skills/`
121
+
122
+ ## AI-First Development (Karpathy)
123
+
124
+ See `@.claude/rules/23-karpathy-principles.md` — 3 principles: **state assumptions explicitly**, **minimal code (no speculation)**, **surface confusion**. Apply to all LLM-assisted code. Extends rule 05 (KISS/DRY/YAGNI).
125
+
126
+ ## Design System Convention
127
+
128
+ Projects with UI should include a root `DESIGN.md` file (template: `.claude/templates/DESIGN.md.template`). Skill `design-md-convention` and agents `@ui-designer`/`@ux-ergonome` auto-load it for consistent UI generation.
129
+
130
+ ---
131
+
132
+ ## Documentation
133
+
134
+ | Document | Description |
135
+ |----------|-------------|
136
+ | [Quickstart](../docs/QUICKSTART.md) | 5-minute getting started |
137
+ | [Prerequisites](../docs/PREREQUISITES.md) | Required dependencies |
138
+ | [CLI Reference](../docs/CLI-REFERENCE.md) | Full CLI documentation |
139
+ | [Commands](../docs/COMMANDS.md) | All commands |
140
+ | [Agents](../docs/AGENTS.md) | All agents |
141
+ | [FAQ](../docs/FAQ.md) | Common questions |
142
+ | [Troubleshooting](../docs/TROUBLESHOOTING.md) | Problem solving |
143
+
144
+ ---
145
+
146
+ ## Quick Start
147
+
148
+ ```bash
149
+ # Install Claude Craft
150
+ npx @the-bearded-bear/claude-craft install . --tech=symfony --lang=en
151
+
152
+ # Or with Makefile
153
+ make install-symfony TARGET=. RULES_LANG=en
154
+
155
+ # Start workflow
156
+ /workflow:init
157
+
158
+ # Use an agent
159
+ @tdd-coach Guide me through TDD for this feature
160
+
161
+ # Run audit
162
+ /team:audit --sequential
163
+ ```
164
+
165
+ ---
166
+
167
+ ## Claude Code Compatibility
168
+
169
+ **Minimum Version:** 2.1.97 (CVE-2025-59536 patched) | **Recommended:** 2.1.117 — See `@.claude/COMPATIBILITY.md` for full changelog (v2.1.20+).
170
+
171
+ ---
172
+
173
+ ## Best Practices
174
+
175
+ See `.claude/rules/12-context-management.md` for detailed guidance.
176
+
177
+ | Practice | Description |
178
+ |----------|-------------|
179
+ | **CLAUDE.md size** | Keep under 200 lines; use `.claude/rules/` for details |
180
+ | **Use `/clear`** | Between unrelated tasks to reset context |
181
+ | **Sub-agents** | Delegate investigations to keep main context clean |
182
+ | **Verification loops** | Always provide tests/expected outputs (2-3x quality improvement) |
183
+ | **Plan Mode** | Invest in planning for complex tasks (> 3 files) |
184
+ | **Parallel worktrees** | Use `git worktree` for concurrent sessions |
185
+ | **Hooks** | CLAUDE.md = suggestions. Hooks = requirements |
186
+ | **`/memory`** | Persistent session learnings across conversations (v2.1.59+) |
187
+ | **Pointers over copies** | Use `@path` references instead of copying code into CLAUDE.md |
188
+ | **Token optimization** | Use `/common:setup-rtk` for 55-65% token savings |
189
+ | **Sub-agent model** | Set `CLAUDE_CODE_SUBAGENT_MODEL=sonnet` for cost savings |
190
+
191
+ See `.claude/templates/hooks/` for ready-to-use hook templates.
192
+
193
+ ## Quick Reference Index
194
+
195
+ # Claude-Craft Rules Index
196
+
197
+ ## Stack Overview (2026)
198
+
199
+ .NET 10 LTS / C# 14 | Symfony 8 / PHP 8.5 | Flutter 3.41 / Dart 3.11 | React 19.2 | Laravel 13 | Python 3.14+
200
+
201
+ ## Architecture Layers
202
+
203
+ ```
204
+ WebAPI/Presentation → Infrastructure → Application → Domain (← INWARD ONLY)
205
+ ```
206
+
207
+ **Domain**: NO external deps, Value Objects, private setters | **Application**: CQRS (MediatR/alternative), DTOs, validation | **Infrastructure**: DB, external services
208
+
209
+ ## Coding Standards
210
+
211
+ | Element | Convention | Always |
212
+ |---------|-----------|--------|
213
+ | Public | PascalCase | Pass `CancellationToken`, enable nullable |
214
+ | Private | _camelCase | Async suffix: `ProcessAsync` |
215
+ | Params | camelCase | Methods < 20 lines, complexity < 10 |
216
+
217
+ ## SOLID + KISS/DRY/YAGNI
218
+
219
+ **SRP**: 1 reason to change | **OCP**: Extend via interfaces | **LSP**: Subtypes substitutable | **ISP**: < 5 methods/interface | **DIP**: Depend on abstractions
220
+
221
+ **KISS**: < 10 complexity | **DRY**: Extract after 3 occurrences | **YAGNI**: Only what's required
222
+
223
+ ## Testing Pyramid
224
+
225
+ Unit 70% (< 1s) | Integration 20% (< 5s) | E2E 10% (< 30s) — **TDD**: RED → GREEN → REFACTOR
226
+
227
+ **Stacks**: xUnit/FluentAssertions (C#), Pest 4 (PHP), Vitest 4 (JS/TS), pytest 8 (Python)
228
+
229
+ ## Security Essentials
230
+
231
+ Server-side validation | Parameterized queries | Secrets in vault | CSP/HSTS headers | `[Authorize(Policy)]`
232
+
233
+ ## Git Workflow
234
+
235
+ **Conventional Commits**: `<type>(<scope>): <description>` — Types: feat, fix, docs, refactor, perf, test
236
+ **Branches**: `feature/`, `fix/`, `refactor/`
237
+
238
+ ## Analysis Workflow (Mandatory)
239
+
240
+ 1. Understand request → 2. Read affected files + deps → 3. Document impact/risks → 4. Validate if medium/high impact → 5. TDD first
241
+
242
+ ## Technology References
243
+
244
+ | Stack | Path | Key Features |
245
+ |-------|------|--------------|
246
+ | **C# / .NET** | `@.claude/references/csharp/` | Extension Members, Span<T>, Clean Architecture |
247
+ | **Symfony / PHP** | `@.claude/references/symfony/CLAUDE.md` | JSON Streamer, ObjectMapper, DDD |
248
+ | **Flutter / Dart** | `@.claude/references/flutter/CLAUDE.md` | WASM, MCP, BLoC v9, Material 3 |
249
+
250
+ ## Base Rules
251
+
252
+ `workflow-analysis.md` | `solid-principles.md` | `kiss-dry-yagni.md` | `git-workflow.md` | `security.md` | `testing.md` | `documentation.md`
253
+
254
+ ## Tech-Specific Guides
255
+
256
+ **C#**: architecture, coding-standards, testing, security, tooling, quality-tools, aspire
257
+ **Symfony**: architecture, coding-standards, quality-tools, json-streamer, object-mapper
258
+ **Flutter**: coding-standards, wasm, mcp-integration, web-performance-2026
259
+
260
+ All in `@.claude/references/<tech>/`
261
+
262
+ ## QA Recette Essentials
263
+
264
+ **Prerequisites**: Chrome extension v1.0.36+ | Claude Code `--chrome` or `/chrome`
265
+
266
+ ```bash
267
+ /qa:recette --scope=story --id=US-001 # Test story
268
+ /qa:recette --resume=REC-xxx # Resume session
269
+ /qa:fix --session=REC-xxx --severity=critical # Fix critical bugs
270
+ /qa:regression --check # Check Golden Rule
271
+ ```
272
+
273
+ **Golden Rule**: A fixed bug should NEVER reappear → auto-generates regression tests
274
+
275
+ **Output**: `.recette/` (plans, sessions, regression, metrics, reports)
276
+
277
+ ## LSP Plugins
278
+
279
+ PHP: `php-lsp` | Python: `pyright-lsp` | TS/JS: `typescript-lsp` | Dart: `dart-analyzer` | C#: `csharp-lsp`
280
+
281
+ Install: `/plugins install <name>@claude-plugins-official`
282
+
283
+ > Full docs: `@.claude/COMPATIBILITY.md` | Technology details: `@.claude/references/<tech>/`
284
+
285
+ ## Essential Rules (Condensed)
286
+
287
+ ### SOLID Principles
288
+ SRP | OCP | LSP | ISP | DIP — See full rules in .claude/rules/04-solid-principles.md
289
+
290
+ ### KISS, DRY, YAGNI
291
+ ## KISS — Keep It Simple
292
+
293
+ | Metrique | Cible | Limite |
294
+ |----------|-------|--------|
295
+ | **Cognitive Complexity** (primaire 2026) | < 7 | < 10 |
296
+ | Lignes par methode | < 10 | < 20 |
297
+ | Complexite cyclomatique | < 5 | < 10 |
298
+ | Profondeur d'indentation | 2 | 3 max |
299
+ | Parametres par methode | 3 | 4 max |
300
+
301
+ > **Cognitive Complexity** (SonarQube, ReSharper) est la metrique dominante 2026 : elle mesure la difficulte humaine de comprehension. Elle prevaut sur la stricte limite de 20 lignes. Source : [Cognitive vs Cyclomatic](https://gilles-fabre.medium.com/what-is-the-difference-between-cyclomatic-complexity-and-cognitive-complexity-a87cef0e2851).
302
+
303
+ **Regles :** Early returns (guard clauses), pas de else imbrique, nommage explicite, composition > heritage.
304
+
305
+ ## DRY — Don't Repeat Yourself
306
+
307
+ ### Testing
308
+ TDD: RED → GREEN → REFACTOR | Coverage >= 80% | Mutation testing
309
+
310
+ ### Security
311
+ ## OWASP Top 10:2025 — Essentiels
312
+
313
+ | # | Menace | Defense |
314
+ |---|--------|---------|
315
+ | 1 | Broken Access Control (inclut **SSRF** consolide) | Verifier permissions a CHAQUE requete, deny by default |
316
+ | 2 | Cryptographic Failures | TLS 1.3, **Argon2id** (128 MiB RAM, t=3-5, p=1), secrets dans vault |
317
+ | 3 | Injection | Requetes parametrees, validation/sanitization |
318
+ | 4 | Insecure Design | Threat modeling, defense in depth, rate limiting |
319
+ | 5 | Security Misconfiguration | Hardening, erreurs generiques en prod |
320
+ | 6 | **Software Supply Chain Failures** (nouveau 2025) | SLSA 1.0, SBOM (SPDX 3 / CycloneDX), Sigstore keyless signing, reproducible builds |
321
+ | 7 | **Mishandling of Exceptional Conditions** (nouveau 2025) | Logger les erreurs, ne jamais exposer la stack trace en prod |
322
+
323
+ Sources : [OWASP Top 10:2025](https://owasp.org/Top10/2025/), [Supply Chain 2026](https://kawaldeepsingh.medium.com/practical-software-supply-chain-security-2026-sboms-signing-slsa-reproducible-builds-a-0416cfac32dc).
324
+
325
+ ## Regles non-negociables
326
+
327
+ ### Git Workflow
328
+ Conventional Commits | GitHub Flow | Feature branches < 3 days
329
+
330
+
331
+ ---
332
+
333
+ ## Full Documentation
334
+
335
+ For complete documentation, visit: https://claude-craft.dev
336
+
337
+ For full rules and references:
338
+ - SOLID: .claude/rules/04-solid-principles.md
339
+ - KISS/DRY/YAGNI: .claude/rules/05-kiss-dry-yagni.md
340
+ - Testing: .claude/rules/07-testing.md
341
+ - Security: .claude/rules/11-security.md
342
+ - Git Workflow: .claude/rules/09-git-workflow.md
343
+ - Context Management: .claude/rules/12-context-management.md
344
+
345
+ **Attribution:** The Bearded CTO / Claude Craft
346
+ **License:** MIT
347
+ **Repository:** https://github.com/TheBeardedCTO/claude-craft
@@ -0,0 +1,347 @@
1
+ # Claude Craft — AI-First TDD Framework for Windsurf IDE
2
+ # Generated from https://github.com/TheBeardedCTO/claude-craft
3
+ # Version: 8.0.1 | Last updated: 2026-04-17
4
+
5
+ ---
6
+
7
+ ## Core Framework
8
+
9
+ # Claude-Craft - Multi-Technology Framework
10
+
11
+ **Version:** 8.5.0 | **Languages:** en, fr, es, de, pt
12
+
13
+ A comprehensive AI-assisted development framework for Claude Code with 19 technology stacks, 72 agents, 211 commands across 26 namespaces, and BMAD v6 project management.
14
+
15
+ ---
16
+
17
+ ## Supported Technologies (2026)
18
+
19
+ | Stack | Version | Architecture | Key Patterns |
20
+ |-------|---------|--------------|--------------|
21
+ | **.NET / C#** | 10 LTS / C# 14 | Clean Architecture | CQRS, MediatR (ou alternative), EF Core |
22
+ | **Symfony / PHP** | 8.0 / PHP 8.4+ | Clean Architecture | DDD, Hexagonal, API Platform, JsonStreamer |
23
+ | **Flutter / Dart** | 3.41 / Dart 3.11 | Clean Architecture | BLoC v9, Riverpod 3, Material 3, Impeller |
24
+ | **React** | 19.2 + Compiler 1.0 | Feature-based | Hooks, Zustand, React Query, Server Components |
25
+ | **React Native** | 0.85 (New Architecture) | Feature-based | Navigation 7, Reanimated 4, TurboModules |
26
+ | **Angular** | 20 LTS (ou 21) | Domain-driven | Signals, Standalone, Zoneless, httpResource |
27
+ | **Vue.js** | 3.5+ (3.6 beta Vapor) | Composition API | Pinia, Vitest, TypeScript, Alien Signals |
28
+ | **Laravel** | 13.x / PHP 8.5 | Clean Architecture | Actions, Pest 4, Sanctum, AI SDK, Passkey |
29
+ | **Python** | 3.14+ | Clean Architecture / Hexagonal | FastAPI, async/await, Pydantic, free-threading, JIT |
30
+ | **PHP** | 8.5 (Property Hooks 8.4+) | Clean Architecture | PSR-12, PHPStan Level 10, Pest 4 |
31
+ | **Paperclip** | 2026.403.0 | Two-layer (control plane + adapters) | Node.js 20+, TypeScript, Vitest, PostgreSQL, governance-first |
32
+
33
+ ### Technology Quick Links
34
+
35
+ | Technology | Reference | Commands |
36
+ |------------|-----------|----------|
37
+ | C# / .NET | `@.claude/references/csharp/` | `/csharp:*` |
38
+ | Symfony / PHP | `@.claude/references/symfony/CLAUDE.md` | `/symfony:*` |
39
+ | Flutter / Dart | `@.claude/references/flutter/CLAUDE.md` | `/flutter:*` |
40
+ | React | `@.claude/references/react/` | `/react:*` |
41
+ | React Native | `@.claude/references/react-native/` | `/reactnative:*` |
42
+ | Angular | `@.claude/references/angular/` | `/angular:*` |
43
+ | Vue.js | `@.claude/references/vuejs/` | `/vuejs:*` |
44
+ | Laravel | `@.claude/references/laravel/` | `/laravel:*` |
45
+ | Python | `@.claude/references/python/` | `/python:*` |
46
+ | PHP | `@.claude/references/php/` | `/php:*` |
47
+ | Paperclip | `@.claude/references/paperclip/` | `/paperclip:*` |
48
+
49
+ See `@.claude/INDEX.md` for condensed checklists and patterns.
50
+
51
+ ---
52
+
53
+ ## Available Commands (26 namespaces, 211 commands)
54
+
55
+ Core: `/common:*`, `/workflow:*`, `/team:*`, `/qa:*`, `/uiux:*` | Tech: `/symfony:*`, `/react:*`, `/flutter:*`, `/python:*`, `/angular:*`, `/vuejs:*`, `/laravel:*`, `/reactnative:*`, `/csharp:*`, `/php:*`, `/paperclip:*` | Infra (via `@devops-engineer`): Docker 29.4.3, Coolify v4.0.0 (stable), K8s 1.36.1, OpenTofu 1.12.0, Ansible 2.21.0, FrankenPHP 1.12.1, PgBouncer 1.25.2 (CVE-2026-6664/6667 patched) | Project: `/sprint:*`, `/gate:*`, `/project:*`
56
+
57
+ Full reference: [Commands](../docs/COMMANDS.md) | [CLI Reference](../docs/CLI-REFERENCE.md)
58
+
59
+ ---
60
+
61
+ ## Available Agents (72 agents)
62
+
63
+ **Common** (20): `@api-designer`, `@database-architect`, `@devops-engineer`, `@performance-auditor`, `@refactoring-specialist`, `@tdd-coach`, `@uiux-orchestrator`, `@ui-designer`, `@ux-ergonome`, `@accessibility-expert`, `@research-assistant`, `@ralph-conductor`, `@security-auditor`, `@data-analyst`, `@migration-specialist`, `@cost-optimizer`, `@chaos-engineer`, `@devex-engineer`, `@mlops-engineer`, `@observability-engineer` | **Tech Reviewers** (11): `@{symfony,flutter,react,python,angular,laravel,vuejs,reactnative,csharp,php,paperclip}-reviewer` | **Infrastructure** (39): Docker, Coolify, K8s, OpenTofu, Ansible, Hcloud, PgBouncer, FrankenPHP — see [Agents](../docs/AGENTS.md) | **Project** (2): `@product-owner`, `@tech-lead`
64
+
65
+ Full reference: [Agents](../docs/AGENTS.md)
66
+
67
+ ---
68
+
69
+ ## BMAD v6 Framework
70
+
71
+ | Track | Setup | Phases | Best For |
72
+ |-------|-------|--------|----------|
73
+ | **Quick Flow** | < 5 min | Implement only | Bug fixes, hotfixes |
74
+ | **Standard** | < 15 min | Plan -> Design -> Implement | New features |
75
+ | **Enterprise** | < 30 min | Analyze -> Plan -> Design -> Implement | Platforms |
76
+
77
+ **Quality Gates:** PRD >=80% | Tech Spec >=90% | INVEST 6/6 | Sprint Ready 100% | Story DoD 100% | Spec Alignment >=85%
78
+
79
+ **Status Routing:** `backlog -> ready-for-dev -> in-progress -> review -> done` (any -> `blocked`)
80
+
81
+ **TDD Phases:** Red -> Green -> Refactor
82
+
83
+ ---
84
+
85
+ ## Ralph Wiggum
86
+
87
+ Continuous AI loop that runs Claude until task completion: `/common:ralph-run "task"`
88
+
89
+ **DoD Validators:** `command` | `output_contains` | `file_changed` | `hook` | `human`
90
+
91
+ ## QA Recette
92
+
93
+ Automated acceptance testing via Chrome. **Golden Rule:** A fixed bug should NEVER reappear.
94
+
95
+ ```bash
96
+ /qa:recette --scope=story --id=US-001 # Test a story
97
+ /qa:recette --scope=sprint --id=Sprint-3 # Test a sprint
98
+ /qa:recette --resume=REC-20260130-143022 # Resume session
99
+ ```
100
+
101
+ **Prerequisites:** Chrome extension v1.0.36+ | Claude Code with `--chrome` or `/chrome`
102
+
103
+ > BMAD roles (bmad-master, pm, ba, architect, po, sm, dev, qa, qa-recette, ux) are integrated into workflow and sprint commands, not standalone agent files.
104
+
105
+ ---
106
+
107
+ ## Docker Requirement
108
+
109
+ **Always use Docker for commands to abstract from local environment.**
110
+
111
+ ```bash
112
+ docker compose exec app php bin/console ...
113
+ docker compose exec app ./vendor/bin/phpunit
114
+ ```
115
+
116
+ ---
117
+
118
+ ## Skills
119
+
120
+ `/solid-principles`, `/testing`, `/security`, `/git-workflow`, `/documentation`, `/kiss-dry-yagni`, `/workflow-analysis`, `/parallel-worktrees`, `/atomic-tasks`, `/design-md-convention`, `/architect`, `/debug-methodical`, `/socratic-brainstorm` — loaded on demand from `.claude/skills/`
121
+
122
+ ## AI-First Development (Karpathy)
123
+
124
+ See `@.claude/rules/23-karpathy-principles.md` — 3 principles: **state assumptions explicitly**, **minimal code (no speculation)**, **surface confusion**. Apply to all LLM-assisted code. Extends rule 05 (KISS/DRY/YAGNI).
125
+
126
+ ## Design System Convention
127
+
128
+ Projects with UI should include a root `DESIGN.md` file (template: `.claude/templates/DESIGN.md.template`). Skill `design-md-convention` and agents `@ui-designer`/`@ux-ergonome` auto-load it for consistent UI generation.
129
+
130
+ ---
131
+
132
+ ## Documentation
133
+
134
+ | Document | Description |
135
+ |----------|-------------|
136
+ | [Quickstart](../docs/QUICKSTART.md) | 5-minute getting started |
137
+ | [Prerequisites](../docs/PREREQUISITES.md) | Required dependencies |
138
+ | [CLI Reference](../docs/CLI-REFERENCE.md) | Full CLI documentation |
139
+ | [Commands](../docs/COMMANDS.md) | All commands |
140
+ | [Agents](../docs/AGENTS.md) | All agents |
141
+ | [FAQ](../docs/FAQ.md) | Common questions |
142
+ | [Troubleshooting](../docs/TROUBLESHOOTING.md) | Problem solving |
143
+
144
+ ---
145
+
146
+ ## Quick Start
147
+
148
+ ```bash
149
+ # Install Claude Craft
150
+ npx @the-bearded-bear/claude-craft install . --tech=symfony --lang=en
151
+
152
+ # Or with Makefile
153
+ make install-symfony TARGET=. RULES_LANG=en
154
+
155
+ # Start workflow
156
+ /workflow:init
157
+
158
+ # Use an agent
159
+ @tdd-coach Guide me through TDD for this feature
160
+
161
+ # Run audit
162
+ /team:audit --sequential
163
+ ```
164
+
165
+ ---
166
+
167
+ ## Claude Code Compatibility
168
+
169
+ **Minimum Version:** 2.1.97 (CVE-2025-59536 patched) | **Recommended:** 2.1.117 — See `@.claude/COMPATIBILITY.md` for full changelog (v2.1.20+).
170
+
171
+ ---
172
+
173
+ ## Best Practices
174
+
175
+ See `.claude/rules/12-context-management.md` for detailed guidance.
176
+
177
+ | Practice | Description |
178
+ |----------|-------------|
179
+ | **CLAUDE.md size** | Keep under 200 lines; use `.claude/rules/` for details |
180
+ | **Use `/clear`** | Between unrelated tasks to reset context |
181
+ | **Sub-agents** | Delegate investigations to keep main context clean |
182
+ | **Verification loops** | Always provide tests/expected outputs (2-3x quality improvement) |
183
+ | **Plan Mode** | Invest in planning for complex tasks (> 3 files) |
184
+ | **Parallel worktrees** | Use `git worktree` for concurrent sessions |
185
+ | **Hooks** | CLAUDE.md = suggestions. Hooks = requirements |
186
+ | **`/memory`** | Persistent session learnings across conversations (v2.1.59+) |
187
+ | **Pointers over copies** | Use `@path` references instead of copying code into CLAUDE.md |
188
+ | **Token optimization** | Use `/common:setup-rtk` for 55-65% token savings |
189
+ | **Sub-agent model** | Set `CLAUDE_CODE_SUBAGENT_MODEL=sonnet` for cost savings |
190
+
191
+ See `.claude/templates/hooks/` for ready-to-use hook templates.
192
+
193
+ ## Quick Reference Index
194
+
195
+ # Claude-Craft Rules Index
196
+
197
+ ## Stack Overview (2026)
198
+
199
+ .NET 10 LTS / C# 14 | Symfony 8 / PHP 8.5 | Flutter 3.41 / Dart 3.11 | React 19.2 | Laravel 13 | Python 3.14+
200
+
201
+ ## Architecture Layers
202
+
203
+ ```
204
+ WebAPI/Presentation → Infrastructure → Application → Domain (← INWARD ONLY)
205
+ ```
206
+
207
+ **Domain**: NO external deps, Value Objects, private setters | **Application**: CQRS (MediatR/alternative), DTOs, validation | **Infrastructure**: DB, external services
208
+
209
+ ## Coding Standards
210
+
211
+ | Element | Convention | Always |
212
+ |---------|-----------|--------|
213
+ | Public | PascalCase | Pass `CancellationToken`, enable nullable |
214
+ | Private | _camelCase | Async suffix: `ProcessAsync` |
215
+ | Params | camelCase | Methods < 20 lines, complexity < 10 |
216
+
217
+ ## SOLID + KISS/DRY/YAGNI
218
+
219
+ **SRP**: 1 reason to change | **OCP**: Extend via interfaces | **LSP**: Subtypes substitutable | **ISP**: < 5 methods/interface | **DIP**: Depend on abstractions
220
+
221
+ **KISS**: < 10 complexity | **DRY**: Extract after 3 occurrences | **YAGNI**: Only what's required
222
+
223
+ ## Testing Pyramid
224
+
225
+ Unit 70% (< 1s) | Integration 20% (< 5s) | E2E 10% (< 30s) — **TDD**: RED → GREEN → REFACTOR
226
+
227
+ **Stacks**: xUnit/FluentAssertions (C#), Pest 4 (PHP), Vitest 4 (JS/TS), pytest 8 (Python)
228
+
229
+ ## Security Essentials
230
+
231
+ Server-side validation | Parameterized queries | Secrets in vault | CSP/HSTS headers | `[Authorize(Policy)]`
232
+
233
+ ## Git Workflow
234
+
235
+ **Conventional Commits**: `<type>(<scope>): <description>` — Types: feat, fix, docs, refactor, perf, test
236
+ **Branches**: `feature/`, `fix/`, `refactor/`
237
+
238
+ ## Analysis Workflow (Mandatory)
239
+
240
+ 1. Understand request → 2. Read affected files + deps → 3. Document impact/risks → 4. Validate if medium/high impact → 5. TDD first
241
+
242
+ ## Technology References
243
+
244
+ | Stack | Path | Key Features |
245
+ |-------|------|--------------|
246
+ | **C# / .NET** | `@.claude/references/csharp/` | Extension Members, Span<T>, Clean Architecture |
247
+ | **Symfony / PHP** | `@.claude/references/symfony/CLAUDE.md` | JSON Streamer, ObjectMapper, DDD |
248
+ | **Flutter / Dart** | `@.claude/references/flutter/CLAUDE.md` | WASM, MCP, BLoC v9, Material 3 |
249
+
250
+ ## Base Rules
251
+
252
+ `workflow-analysis.md` | `solid-principles.md` | `kiss-dry-yagni.md` | `git-workflow.md` | `security.md` | `testing.md` | `documentation.md`
253
+
254
+ ## Tech-Specific Guides
255
+
256
+ **C#**: architecture, coding-standards, testing, security, tooling, quality-tools, aspire
257
+ **Symfony**: architecture, coding-standards, quality-tools, json-streamer, object-mapper
258
+ **Flutter**: coding-standards, wasm, mcp-integration, web-performance-2026
259
+
260
+ All in `@.claude/references/<tech>/`
261
+
262
+ ## QA Recette Essentials
263
+
264
+ **Prerequisites**: Chrome extension v1.0.36+ | Claude Code `--chrome` or `/chrome`
265
+
266
+ ```bash
267
+ /qa:recette --scope=story --id=US-001 # Test story
268
+ /qa:recette --resume=REC-xxx # Resume session
269
+ /qa:fix --session=REC-xxx --severity=critical # Fix critical bugs
270
+ /qa:regression --check # Check Golden Rule
271
+ ```
272
+
273
+ **Golden Rule**: A fixed bug should NEVER reappear → auto-generates regression tests
274
+
275
+ **Output**: `.recette/` (plans, sessions, regression, metrics, reports)
276
+
277
+ ## LSP Plugins
278
+
279
+ PHP: `php-lsp` | Python: `pyright-lsp` | TS/JS: `typescript-lsp` | Dart: `dart-analyzer` | C#: `csharp-lsp`
280
+
281
+ Install: `/plugins install <name>@claude-plugins-official`
282
+
283
+ > Full docs: `@.claude/COMPATIBILITY.md` | Technology details: `@.claude/references/<tech>/`
284
+
285
+ ## Essential Rules (Condensed)
286
+
287
+ ### SOLID Principles
288
+ SRP | OCP | LSP | ISP | DIP — See full rules in .claude/rules/04-solid-principles.md
289
+
290
+ ### KISS, DRY, YAGNI
291
+ ## KISS — Keep It Simple
292
+
293
+ | Metrique | Cible | Limite |
294
+ |----------|-------|--------|
295
+ | **Cognitive Complexity** (primaire 2026) | < 7 | < 10 |
296
+ | Lignes par methode | < 10 | < 20 |
297
+ | Complexite cyclomatique | < 5 | < 10 |
298
+ | Profondeur d'indentation | 2 | 3 max |
299
+ | Parametres par methode | 3 | 4 max |
300
+
301
+ > **Cognitive Complexity** (SonarQube, ReSharper) est la metrique dominante 2026 : elle mesure la difficulte humaine de comprehension. Elle prevaut sur la stricte limite de 20 lignes. Source : [Cognitive vs Cyclomatic](https://gilles-fabre.medium.com/what-is-the-difference-between-cyclomatic-complexity-and-cognitive-complexity-a87cef0e2851).
302
+
303
+ **Regles :** Early returns (guard clauses), pas de else imbrique, nommage explicite, composition > heritage.
304
+
305
+ ## DRY — Don't Repeat Yourself
306
+
307
+ ### Testing
308
+ TDD: RED → GREEN → REFACTOR | Coverage >= 80% | Mutation testing
309
+
310
+ ### Security
311
+ ## OWASP Top 10:2025 — Essentiels
312
+
313
+ | # | Menace | Defense |
314
+ |---|--------|---------|
315
+ | 1 | Broken Access Control (inclut **SSRF** consolide) | Verifier permissions a CHAQUE requete, deny by default |
316
+ | 2 | Cryptographic Failures | TLS 1.3, **Argon2id** (128 MiB RAM, t=3-5, p=1), secrets dans vault |
317
+ | 3 | Injection | Requetes parametrees, validation/sanitization |
318
+ | 4 | Insecure Design | Threat modeling, defense in depth, rate limiting |
319
+ | 5 | Security Misconfiguration | Hardening, erreurs generiques en prod |
320
+ | 6 | **Software Supply Chain Failures** (nouveau 2025) | SLSA 1.0, SBOM (SPDX 3 / CycloneDX), Sigstore keyless signing, reproducible builds |
321
+ | 7 | **Mishandling of Exceptional Conditions** (nouveau 2025) | Logger les erreurs, ne jamais exposer la stack trace en prod |
322
+
323
+ Sources : [OWASP Top 10:2025](https://owasp.org/Top10/2025/), [Supply Chain 2026](https://kawaldeepsingh.medium.com/practical-software-supply-chain-security-2026-sboms-signing-slsa-reproducible-builds-a-0416cfac32dc).
324
+
325
+ ## Regles non-negociables
326
+
327
+ ### Git Workflow
328
+ Conventional Commits | GitHub Flow | Feature branches < 3 days
329
+
330
+
331
+ ---
332
+
333
+ ## Full Documentation
334
+
335
+ For complete documentation, visit: https://claude-craft.dev
336
+
337
+ For full rules and references:
338
+ - SOLID: .claude/rules/04-solid-principles.md
339
+ - KISS/DRY/YAGNI: .claude/rules/05-kiss-dry-yagni.md
340
+ - Testing: .claude/rules/07-testing.md
341
+ - Security: .claude/rules/11-security.md
342
+ - Git Workflow: .claude/rules/09-git-workflow.md
343
+ - Context Management: .claude/rules/12-context-management.md
344
+
345
+ **Attribution:** The Bearded CTO / Claude Craft
346
+ **License:** MIT
347
+ **Repository:** https://github.com/TheBeardedCTO/claude-craft
package/cli/index.js CHANGED
@@ -38,10 +38,8 @@ import { runCheck } from './lib/check.js';
38
38
  import { runList } from './lib/list.js';
39
39
  import { runDoctor } from './lib/doctor.js';
40
40
  import { runUpdate } from './lib/update.js';
41
- import { runKanban } from './lib/kanban.js';
42
-
43
41
  // Flattener module
44
- import { flatten as flattenCodebaseFn } from './flattener.js';
42
+ import { flatten as flattenCodebaseFn } from './lib/flattener.js';
45
43
 
46
44
  // CLI package root
47
45
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -205,10 +203,12 @@ class ClaudeCraftCLI {
205
203
  await runRalph(this, args.slice(1), options, ctx);
206
204
  break;
207
205
 
208
- case 'kanban':
206
+ case 'kanban': {
209
207
  printBanner(VERSION);
208
+ const { runKanban } = await import('./lib/kanban.js');
210
209
  await runKanban({ targetPath: this.config.targetPath, options });
211
210
  break;
211
+ }
212
212
 
213
213
  case 'help':
214
214
  case '--help':
@@ -31,6 +31,8 @@
31
31
  let sprintLabel = $derived(store.sprint ? `${store.sprint.name} (${store.sprint.sprint_id})` : 'no sprint');
32
32
  </script>
33
33
 
34
+ <a href="#main" class="skip-link">Skip to main content</a>
35
+
34
36
  <div class="app-shell">
35
37
  <aside class="sidebar" aria-label="Navigation">
36
38
  <h1>claude-craft</h1>
@@ -104,3 +106,30 @@
104
106
  </div>
105
107
  {/each}
106
108
  </div>
109
+
110
+ <style>
111
+ .skip-link {
112
+ position: absolute;
113
+ left: -9999px;
114
+ top: auto;
115
+ width: 1px;
116
+ height: 1px;
117
+ overflow: hidden;
118
+ background: var(--accent, #7c3aed);
119
+ color: #fff;
120
+ padding: 8px 16px;
121
+ border-radius: 4px;
122
+ font-size: 14px;
123
+ font-weight: 600;
124
+ text-decoration: none;
125
+ z-index: 9999;
126
+ }
127
+ .skip-link:focus {
128
+ position: absolute;
129
+ left: 8px;
130
+ top: 8px;
131
+ width: auto;
132
+ height: auto;
133
+ overflow: visible;
134
+ }
135
+ </style>
@@ -0,0 +1,160 @@
1
+ <script>
2
+ /**
3
+ * PromptDialog — accessible replacement for window.prompt().
4
+ *
5
+ * Usage:
6
+ * <PromptDialog bind:this={promptDialog} />
7
+ * const value = await promptDialog.prompt('Enter a reason:');
8
+ * // Returns the string entered, or null if cancelled.
9
+ */
10
+
11
+ let dialog = $state(null);
12
+ let inputEl = $state(null);
13
+ let message = $state('');
14
+ let inputValue = $state('');
15
+ let resolvePromise = null;
16
+
17
+ /**
18
+ * Open the dialog and return a promise that resolves with the entered value
19
+ * (string) or null when the user cancels.
20
+ *
21
+ * @param {string} promptMessage - Label text shown above the input.
22
+ * @returns {Promise<string|null>}
23
+ */
24
+ export function prompt(promptMessage) {
25
+ message = promptMessage;
26
+ inputValue = '';
27
+ dialog.showModal();
28
+ // Focus the input after the dialog is open (next microtask)
29
+ Promise.resolve().then(() => inputEl?.focus());
30
+ return new Promise((resolve) => {
31
+ resolvePromise = resolve;
32
+ });
33
+ }
34
+
35
+ function handleClose() {
36
+ const confirmed = dialog.returnValue === 'confirm';
37
+ const value = confirmed && inputValue.trim() ? inputValue : null;
38
+ resolvePromise?.(value);
39
+ resolvePromise = null;
40
+ }
41
+
42
+ function handleKeydown(e) {
43
+ // Allow submitting with Enter from within the input
44
+ if (e.key === 'Enter') {
45
+ e.preventDefault();
46
+ dialog.returnValue = 'confirm';
47
+ dialog.close();
48
+ }
49
+ }
50
+ </script>
51
+
52
+ <dialog
53
+ bind:this={dialog}
54
+ aria-labelledby="prompt-dialog-title"
55
+ aria-modal="true"
56
+ onclose={handleClose}
57
+ >
58
+ <form method="dialog">
59
+ <h2 id="prompt-dialog-title" class="dialog-title">{message}</h2>
60
+ <input
61
+ bind:this={inputEl}
62
+ bind:value={inputValue}
63
+ type="text"
64
+ class="dialog-input"
65
+ aria-label={message}
66
+ onkeydown={handleKeydown}
67
+ />
68
+ <div class="dialog-actions">
69
+ <button type="submit" value="cancel" class="btn-cancel">Cancel</button>
70
+ <button
71
+ type="button"
72
+ class="btn-confirm"
73
+ onclick={() => {
74
+ dialog.returnValue = 'confirm';
75
+ dialog.close();
76
+ }}
77
+ >OK</button>
78
+ </div>
79
+ </form>
80
+ </dialog>
81
+
82
+ <style>
83
+ dialog {
84
+ background: var(--bg-elev);
85
+ border: 1px solid var(--border);
86
+ border-radius: var(--radius);
87
+ padding: 24px;
88
+ min-width: 320px;
89
+ color: var(--fg);
90
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
91
+ }
92
+
93
+ dialog::backdrop {
94
+ background: rgba(0, 0, 0, 0.6);
95
+ }
96
+
97
+ .dialog-title {
98
+ margin: 0 0 14px;
99
+ font-size: 16px;
100
+ font-weight: 600;
101
+ }
102
+
103
+ .dialog-input {
104
+ display: block;
105
+ width: 100%;
106
+ box-sizing: border-box;
107
+ background: var(--bg-sidebar);
108
+ border: 1px solid var(--border);
109
+ border-radius: var(--radius);
110
+ color: var(--fg);
111
+ padding: 8px 10px;
112
+ font-size: 14px;
113
+ margin-bottom: 16px;
114
+ }
115
+
116
+ .dialog-input:focus {
117
+ outline: 2px solid var(--accent);
118
+ outline-offset: 1px;
119
+ }
120
+
121
+ .dialog-actions {
122
+ display: flex;
123
+ justify-content: flex-end;
124
+ gap: 8px;
125
+ }
126
+
127
+ .btn-cancel,
128
+ .btn-confirm {
129
+ padding: 8px 16px;
130
+ border-radius: var(--radius);
131
+ font-size: 14px;
132
+ cursor: pointer;
133
+ border: 1px solid var(--border);
134
+ }
135
+
136
+ .btn-cancel {
137
+ background: var(--bg-sidebar);
138
+ color: var(--fg-dim);
139
+ }
140
+
141
+ .btn-cancel:hover,
142
+ .btn-cancel:focus {
143
+ background: var(--border);
144
+ outline: 2px solid var(--accent);
145
+ outline-offset: 1px;
146
+ }
147
+
148
+ .btn-confirm {
149
+ background: var(--accent);
150
+ color: var(--accent-fg);
151
+ border-color: var(--accent);
152
+ }
153
+
154
+ .btn-confirm:hover,
155
+ .btn-confirm:focus {
156
+ opacity: 0.9;
157
+ outline: 2px solid var(--accent);
158
+ outline-offset: 1px;
159
+ }
160
+ </style>
@@ -1,6 +1,9 @@
1
1
  <script>
2
2
  import { store, patchStatus } from '../lib/store.svelte.js';
3
3
  import { onMount } from 'svelte';
4
+ import PromptDialog from '../components/PromptDialog.svelte';
5
+
6
+ let promptDialog = $state(null);
4
7
 
5
8
  const COLUMNS = [
6
9
  { key: 'backlog', label: 'Backlog' },
@@ -54,7 +57,7 @@
54
57
  if (!story || story.status === targetStatus) return;
55
58
  const body = { status: targetStatus };
56
59
  if (targetStatus === 'blocked') {
57
- const reason = window.prompt('Blocked reason?');
60
+ const reason = await promptDialog.prompt('Blocked reason?');
58
61
  if (!reason) return;
59
62
  body.blocked_reason = reason;
60
63
  }
@@ -154,7 +157,7 @@
154
157
  async function moveCard(card, targetStatus) {
155
158
  const body = { status: targetStatus };
156
159
  if (targetStatus === 'blocked') {
157
- const reason = window.prompt('Blocked reason?');
160
+ const reason = await promptDialog.prompt('Blocked reason?');
158
161
  if (!reason) {
159
162
  showMoveMenu = false;
160
163
  return;
@@ -239,6 +242,8 @@
239
242
  {/each}
240
243
  </div>
241
244
 
245
+ <PromptDialog bind:this={promptDialog} />
246
+
242
247
  <!-- Accessibility: keyboard help & live region -->
243
248
  <div id="keyboard-help" class="sr-only">
244
249
  Use arrow keys to navigate. Alt+M to open move menu. Numbers 1-6 to move to column. Escape to close menu. Enter for details.
@@ -17,7 +17,7 @@ import fs from 'fs';
17
17
  import path from 'path';
18
18
 
19
19
  // ANSI colors (shared module)
20
- import c from './lib/colors.js';
20
+ import c from './colors.js';
21
21
 
22
22
  // Default ignore patterns
23
23
  const DEFAULT_IGNORES = [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@the-bearded-bear/claude-craft",
3
- "version": "8.4.0",
3
+ "version": "8.5.0-next.b249d60",
4
4
  "description": "A comprehensive framework for AI-assisted development with Claude Code. Install standardized rules, agents, and commands for your projects.",
5
5
  "type": "module",
6
6
  "main": "cli/index.js",
@@ -30,6 +30,7 @@
30
30
  "vale:sync": "vale sync",
31
31
  "commitlint": "commitlint --edit",
32
32
  "prepublishOnly": "node -e \"import{readFileSync}from'node:fs';const p=JSON.parse(readFileSync('./package.json','utf8'));if(!/^\\d+\\.\\d+\\.\\d+(-[a-z0-9.]+)?$/i.test(p.version)){console.error('Invalid version format');process.exit(1)}\"",
33
+ "metrics:adoption": "node scripts/track-adoption-metrics.mjs",
33
34
  "mutation": "stryker run",
34
35
  "mutation:ci": "stryker run --reporters progress,json",
35
36
  "test:e2e:tools": "cd tests/e2e/tools && docker compose -f docker-compose.test.yml up --abort-on-container-exit --exit-code-from e2e-runner"