@the-bearded-bear/claude-craft 8.9.0 → 8.10.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.
Files changed (173) hide show
  1. package/Dev/i18n/base/Angular/rules/06-tooling.md +1 -1
  2. package/Dev/i18n/base/Angular/rules/11-security-angular.md +5 -2
  3. package/Dev/i18n/base/CSharp/commands/check-security.md +4 -2
  4. package/Dev/i18n/base/CSharp/rules/11-security-csharp.md +3 -2
  5. package/Dev/i18n/base/Common/commands/aliases.md +237 -0
  6. package/Dev/i18n/base/Common/commands/audit-freshness.md +176 -0
  7. package/Dev/i18n/base/Common/commands/init.md +154 -0
  8. package/Dev/i18n/base/Common/commands/pack-repo.md +151 -0
  9. package/Dev/i18n/base/Common/commands/search.md +112 -0
  10. package/Dev/i18n/base/Laravel/rules/11-security-laravel.md +7 -4
  11. package/Dev/i18n/base/PHP/commands/check-security.md +5 -4
  12. package/Dev/i18n/base/VueJS/commands/check-security.md +6 -3
  13. package/Dev/i18n/base/VueJS/rules/06-tooling.md +5 -5
  14. package/Dev/i18n/base/VueJS/rules/07-testing-vuejs.md +99 -1
  15. package/Dev/i18n/base/VueJS/rules/11-security-vuejs.md +5 -2
  16. package/Dev/i18n/de/Angular/agents/angular-reviewer.md +66 -11
  17. package/Dev/i18n/de/Common/rules/11-security.md +195 -84
  18. package/Dev/i18n/de/Common/templates/settings.json.template +4 -4
  19. package/Dev/i18n/de/Flutter/agents/flutter-reviewer.md +4 -3
  20. package/Dev/i18n/de/PHP/rules/11-security-php.md +4 -2
  21. package/Dev/i18n/de/Paperclip/CLAUDE.md.template +2 -2
  22. package/Dev/i18n/de/Paperclip/README.md +3 -3
  23. package/Dev/i18n/de/Paperclip/commands/generate-agent-config.md +2 -2
  24. package/Dev/i18n/de/Paperclip/commands/setup-company.md +11 -3
  25. package/Dev/i18n/de/Paperclip/rules/02-architecture-paperclip.md +1 -1
  26. package/Dev/i18n/de/Paperclip/rules/03-coding-standards.md +1 -1
  27. package/Dev/i18n/de/Paperclip/rules/06-tooling.md +1 -1
  28. package/Dev/i18n/de/Paperclip/rules/12-adapter-protocol.md +1 -1
  29. package/Dev/i18n/de/Python/rules/11-security-python.md +6 -4
  30. package/Dev/i18n/de/React/commands/check-security.md +5 -2
  31. package/Dev/i18n/de/React/rules/06-tooling.md +2 -2
  32. package/Dev/i18n/de/React/rules/11-security-react.md +5 -2
  33. package/Dev/i18n/de/ReactNative/rules/06-tooling.md +156 -57
  34. package/Dev/i18n/de/ReactNative/rules/07-testing-reactnative.md +1 -1
  35. package/Dev/i18n/de/ReactNative/rules/12-performance.md +63 -17
  36. package/Dev/i18n/de/ReactNative/rules/13-state-management.md +1 -1
  37. package/Dev/i18n/de/ReactNative/rules/14-navigation.md +172 -12
  38. package/Dev/i18n/de/Symfony/commands/check-code-quality.md +15 -14
  39. package/Dev/i18n/de/Symfony/commands/check-security.md +6 -3
  40. package/Dev/i18n/de/VueJS/agents/vuejs-reviewer.md +2 -2
  41. package/Dev/i18n/en/Angular/agents/angular-reviewer.md +66 -11
  42. package/Dev/i18n/en/Common/rules/11-security.md +180 -70
  43. package/Dev/i18n/en/Common/templates/settings.json.template +4 -4
  44. package/Dev/i18n/en/Flutter/agents/flutter-reviewer.md +4 -3
  45. package/Dev/i18n/en/PHP/rules/11-security-php.md +4 -2
  46. package/Dev/i18n/en/Paperclip/CLAUDE.md.template +2 -2
  47. package/Dev/i18n/en/Paperclip/README.md +3 -3
  48. package/Dev/i18n/en/Paperclip/commands/generate-agent-config.md +4 -2
  49. package/Dev/i18n/en/Paperclip/commands/setup-company.md +11 -3
  50. package/Dev/i18n/en/Paperclip/rules/02-architecture-paperclip.md +2 -2
  51. package/Dev/i18n/en/Paperclip/rules/03-coding-standards.md +1 -1
  52. package/Dev/i18n/en/Paperclip/rules/06-tooling.md +1 -1
  53. package/Dev/i18n/en/Paperclip/rules/12-adapter-protocol.md +1 -1
  54. package/Dev/i18n/en/Python/rules/11-security-python.md +6 -4
  55. package/Dev/i18n/en/React/commands/check-security.md +5 -2
  56. package/Dev/i18n/en/React/rules/06-tooling.md +2 -2
  57. package/Dev/i18n/en/React/rules/11-security-react.md +5 -2
  58. package/Dev/i18n/en/ReactNative/rules/02-architecture.md +11 -0
  59. package/Dev/i18n/en/ReactNative/rules/06-tooling.md +111 -12
  60. package/Dev/i18n/en/ReactNative/rules/07-testing-reactnative.md +24 -6
  61. package/Dev/i18n/en/ReactNative/rules/12-performance.md +62 -16
  62. package/Dev/i18n/en/ReactNative/rules/13-state-management.md +1 -1
  63. package/Dev/i18n/en/ReactNative/rules/14-navigation.md +194 -9
  64. package/Dev/i18n/en/Symfony/CLAUDE.md.template +1 -1
  65. package/Dev/i18n/en/Symfony/agents/symfony-reviewer.md +2 -2
  66. package/Dev/i18n/en/Symfony/commands/check-code-quality.md +16 -15
  67. package/Dev/i18n/en/Symfony/commands/check-security.md +6 -3
  68. package/Dev/i18n/en/VueJS/agents/vuejs-reviewer.md +2 -2
  69. package/Dev/i18n/es/Angular/agents/angular-reviewer.md +67 -12
  70. package/Dev/i18n/es/Common/rules/11-security.md +179 -68
  71. package/Dev/i18n/es/Common/templates/settings.json.template +4 -4
  72. package/Dev/i18n/es/Flutter/agents/flutter-reviewer.md +4 -3
  73. package/Dev/i18n/es/PHP/rules/11-security-php.md +4 -2
  74. package/Dev/i18n/es/Paperclip/CLAUDE.md.template +2 -2
  75. package/Dev/i18n/es/Paperclip/README.md +3 -3
  76. package/Dev/i18n/es/Paperclip/commands/generate-agent-config.md +2 -2
  77. package/Dev/i18n/es/Paperclip/commands/setup-company.md +11 -3
  78. package/Dev/i18n/es/Paperclip/rules/02-architecture-paperclip.md +1 -1
  79. package/Dev/i18n/es/Paperclip/rules/03-coding-standards.md +1 -1
  80. package/Dev/i18n/es/Paperclip/rules/06-tooling.md +1 -1
  81. package/Dev/i18n/es/Paperclip/rules/12-adapter-protocol.md +1 -1
  82. package/Dev/i18n/es/Python/rules/11-security-python.md +6 -4
  83. package/Dev/i18n/es/React/commands/check-security.md +5 -2
  84. package/Dev/i18n/es/React/rules/06-tooling.md +2 -2
  85. package/Dev/i18n/es/React/rules/11-security-react.md +5 -2
  86. package/Dev/i18n/es/ReactNative/rules/06-tooling.md +108 -9
  87. package/Dev/i18n/es/ReactNative/rules/07-testing-reactnative.md +1 -1
  88. package/Dev/i18n/es/ReactNative/rules/12-performance.md +61 -15
  89. package/Dev/i18n/es/ReactNative/rules/13-state-management.md +1 -1
  90. package/Dev/i18n/es/ReactNative/rules/14-navigation.md +163 -3
  91. package/Dev/i18n/es/Symfony/agents/symfony-reviewer.md +2 -2
  92. package/Dev/i18n/es/Symfony/commands/check-code-quality.md +16 -15
  93. package/Dev/i18n/es/Symfony/commands/check-security.md +6 -3
  94. package/Dev/i18n/es/VueJS/agents/vuejs-reviewer.md +2 -2
  95. package/Dev/i18n/fr/Angular/agents/angular-reviewer.md +66 -11
  96. package/Dev/i18n/fr/Common/rules/11-security.md +197 -84
  97. package/Dev/i18n/fr/Common/templates/settings.json.template +4 -4
  98. package/Dev/i18n/fr/Flutter/agents/flutter-reviewer.md +4 -3
  99. package/Dev/i18n/fr/PHP/rules/11-security-php.md +2 -2
  100. package/Dev/i18n/fr/Paperclip/CLAUDE.md.template +2 -2
  101. package/Dev/i18n/fr/Paperclip/README.md +3 -3
  102. package/Dev/i18n/fr/Paperclip/commands/generate-agent-config.md +2 -2
  103. package/Dev/i18n/fr/Paperclip/commands/setup-company.md +11 -3
  104. package/Dev/i18n/fr/Paperclip/rules/02-architecture-paperclip.md +1 -1
  105. package/Dev/i18n/fr/Paperclip/rules/03-coding-standards.md +1 -1
  106. package/Dev/i18n/fr/Paperclip/rules/06-tooling.md +1 -1
  107. package/Dev/i18n/fr/Paperclip/rules/12-adapter-protocol.md +1 -1
  108. package/Dev/i18n/fr/Python/rules/11-security-python.md +6 -4
  109. package/Dev/i18n/fr/React/rules/06-tooling.md +2 -2
  110. package/Dev/i18n/fr/React/rules/11-security-react.md +5 -2
  111. package/Dev/i18n/fr/ReactNative/rules/06-tooling.md +112 -13
  112. package/Dev/i18n/fr/ReactNative/rules/07-testing-reactnative.md +1 -1
  113. package/Dev/i18n/fr/ReactNative/rules/12-performance.md +61 -15
  114. package/Dev/i18n/fr/ReactNative/rules/13-state-management.md +1 -1
  115. package/Dev/i18n/fr/ReactNative/rules/14-navigation.md +188 -3
  116. package/Dev/i18n/fr/Symfony/agents/symfony-reviewer.md +2 -2
  117. package/Dev/i18n/fr/Symfony/commands/check-code-quality.md +16 -15
  118. package/Dev/i18n/fr/Symfony/commands/check-security.md +6 -3
  119. package/Dev/i18n/fr/VueJS/agents/vuejs-reviewer.md +2 -2
  120. package/Dev/i18n/pt/Angular/agents/angular-reviewer.md +66 -11
  121. package/Dev/i18n/pt/Common/rules/11-security.md +179 -68
  122. package/Dev/i18n/pt/Common/templates/settings.json.template +4 -4
  123. package/Dev/i18n/pt/Flutter/agents/flutter-reviewer.md +4 -3
  124. package/Dev/i18n/pt/PHP/rules/11-security-php.md +4 -2
  125. package/Dev/i18n/pt/Paperclip/CLAUDE.md.template +2 -2
  126. package/Dev/i18n/pt/Paperclip/README.md +3 -3
  127. package/Dev/i18n/pt/Paperclip/commands/generate-agent-config.md +2 -2
  128. package/Dev/i18n/pt/Paperclip/commands/setup-company.md +11 -3
  129. package/Dev/i18n/pt/Paperclip/rules/02-architecture-paperclip.md +1 -1
  130. package/Dev/i18n/pt/Paperclip/rules/03-coding-standards.md +1 -1
  131. package/Dev/i18n/pt/Paperclip/rules/06-tooling.md +1 -1
  132. package/Dev/i18n/pt/Paperclip/rules/12-adapter-protocol.md +1 -1
  133. package/Dev/i18n/pt/Python/rules/11-security-python.md +6 -4
  134. package/Dev/i18n/pt/React/commands/check-security.md +5 -2
  135. package/Dev/i18n/pt/React/rules/06-tooling.md +2 -2
  136. package/Dev/i18n/pt/React/rules/11-security-react.md +5 -2
  137. package/Dev/i18n/pt/ReactNative/rules/06-tooling.md +108 -9
  138. package/Dev/i18n/pt/ReactNative/rules/07-testing-reactnative.md +1 -1
  139. package/Dev/i18n/pt/ReactNative/rules/12-performance.md +61 -15
  140. package/Dev/i18n/pt/ReactNative/rules/13-state-management.md +1 -1
  141. package/Dev/i18n/pt/ReactNative/rules/14-navigation.md +163 -3
  142. package/Dev/i18n/pt/Symfony/agents/symfony-reviewer.md +2 -2
  143. package/Dev/i18n/pt/Symfony/commands/check-code-quality.md +16 -15
  144. package/Dev/i18n/pt/Symfony/commands/check-security.md +6 -3
  145. package/Dev/i18n/pt/VueJS/agents/vuejs-reviewer.md +2 -2
  146. package/Dev/scripts/install-paperclip-rules.sh +1 -1
  147. package/Infra/i18n/de/FrankenPHP/agents/frankenphp-architect.md +1 -1
  148. package/Infra/i18n/de/FrankenPHP/agents/frankenphp-deployment.md +2 -2
  149. package/Infra/i18n/de/FrankenPHP/agents/frankenphp-security.md +1 -1
  150. package/Infra/i18n/de/FrankenPHP/commands/deploy-setup.md +1 -1
  151. package/Infra/i18n/en/FrankenPHP/agents/frankenphp-architect.md +1 -1
  152. package/Infra/i18n/en/FrankenPHP/agents/frankenphp-deployment.md +2 -2
  153. package/Infra/i18n/en/FrankenPHP/agents/frankenphp-security.md +1 -1
  154. package/Infra/i18n/en/FrankenPHP/commands/deploy-setup.md +1 -1
  155. package/Infra/i18n/es/FrankenPHP/agents/frankenphp-architect.md +1 -1
  156. package/Infra/i18n/es/FrankenPHP/agents/frankenphp-deployment.md +2 -2
  157. package/Infra/i18n/es/FrankenPHP/agents/frankenphp-security.md +1 -1
  158. package/Infra/i18n/es/FrankenPHP/commands/deploy-setup.md +1 -1
  159. package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-architect.md +1 -1
  160. package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-deployment.md +2 -2
  161. package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-security.md +1 -1
  162. package/Infra/i18n/fr/FrankenPHP/commands/deploy-setup.md +1 -1
  163. package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-architect.md +1 -1
  164. package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-deployment.md +2 -2
  165. package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-security.md +1 -1
  166. package/Infra/i18n/pt/FrankenPHP/commands/deploy-setup.md +1 -1
  167. package/Project/install-project-commands.sh +1 -1
  168. package/README.md +12 -38
  169. package/bundles/cursor/.cursorrules +7 -7
  170. package/bundles/windsurf/.windsurfrules +7 -7
  171. package/cli/lib/install-from-url.js +16 -0
  172. package/cli/lib/tech-registry.js +17 -7
  173. package/package.json +6 -5
@@ -0,0 +1,151 @@
1
+ ---
2
+ description: Pack la codebase en un fichier AI-friendly (Repomix wrapper + fallback shell). Token counting inclus.
3
+ argument-hint: [--format=xml|markdown|plain] [--output=<path>] [--compress] [--fallback]
4
+ ---
5
+
6
+ # Pack Repo — Repomix wrapper
7
+
8
+ Packe la codebase entière en **un seul fichier** optimisé pour analyse LLM, avec token counting par fichier.
9
+
10
+ **Source :** [yamadashy/repomix](https://github.com/yamadashy/repomix) (23.4k+ stars) — standard de facto 2026.
11
+
12
+ ## Quand utiliser
13
+
14
+ | Cas d'usage | Exemple |
15
+ |-------------|---------|
16
+ | **Onboarding** | Donner tout le projet à un agent pour contexte initial |
17
+ | **Audit** | Passer la codebase à un reviewer externe (IA ou humain) |
18
+ | **Migration** | Extraire un module pour réécriture dans une autre stack |
19
+ | **Génération Skills** | Produire un résumé du projet pour `.claude/skills/` |
20
+ | **Bug reports** | Joindre un pack minimal aux tickets |
21
+
22
+ ## Usage
23
+
24
+ ```bash
25
+ # Wrapper par défaut (Repomix npm)
26
+ /common:pack-repo
27
+
28
+ # Format explicite
29
+ /common:pack-repo --format=xml
30
+ /common:pack-repo --format=markdown --output=./docs/repo-snapshot.md
31
+
32
+ # Compression (réduit ~30% de tokens)
33
+ /common:pack-repo --compress
34
+
35
+ # Forcer le fallback shell (pas de dépendance npm)
36
+ /common:pack-repo --fallback
37
+ ```
38
+
39
+ ## Étapes d'exécution
40
+
41
+ ### 1. Détection de l'outil disponible
42
+
43
+ ```bash
44
+ if command -v repomix &>/dev/null; then
45
+ TOOL="repomix"
46
+ elif command -v npx &>/dev/null && npx --yes repomix --version &>/dev/null; then
47
+ TOOL="npx repomix"
48
+ else
49
+ TOOL="fallback"
50
+ echo "⚠️ repomix indisponible, utilisation du fallback shell natif"
51
+ fi
52
+ ```
53
+
54
+ ### 2. Exécution wrapper Repomix (préféré)
55
+
56
+ ```bash
57
+ # Options par défaut : XML, respect de .gitignore, token counting
58
+ $TOOL \
59
+ --output "${OUTPUT:-repomix-output.xml}" \
60
+ --style "${FORMAT:-xml}" \
61
+ --token-count-encoding o200k_base \
62
+ ${COMPRESS:+--compress} \
63
+ --ignore "node_modules,vendor,dist,build,.git,*.lock,coverage,.next,.nuxt"
64
+ ```
65
+
66
+ **Avantages du wrapper Repomix :**
67
+ - Respect automatique de `.gitignore`
68
+ - Détection binaires (skip)
69
+ - Token counting par fichier
70
+ - Formats XML/Markdown/Plain/JSON
71
+ - MCP Server intégré (option `--mcp`)
72
+ - Compression intelligente (option `--compress`)
73
+
74
+ ### 3. Fallback shell (si pas de npm)
75
+
76
+ Si Repomix n'est pas disponible, utiliser `Dev/scripts/pack-repo-fallback.sh` :
77
+
78
+ ```bash
79
+ bash Dev/scripts/pack-repo-fallback.sh \
80
+ --format "${FORMAT:-markdown}" \
81
+ --output "${OUTPUT:-./pack-repo-output.md}"
82
+ ```
83
+
84
+ **Limitations du fallback :**
85
+ - Pas de token counting précis (estimation basée sur caractères)
86
+ - Pas de compression
87
+ - Formats limités (markdown, plain)
88
+ - Exclusions manuelles seulement
89
+
90
+ ### 4. Rapport
91
+
92
+ Afficher :
93
+ - Fichier généré + taille
94
+ - Nombre de fichiers inclus / exclus
95
+ - Token count estimé (o200k_base)
96
+ - Avertissement si > 200k tokens (limite contexte)
97
+
98
+ ## Options
99
+
100
+ | Flag | Valeur | Description |
101
+ |------|--------|-------------|
102
+ | `--format` | `xml` (défaut), `markdown`, `plain`, `json` | Format de sortie |
103
+ | `--output` | chemin | Fichier de sortie (défaut : `repomix-output.xml`) |
104
+ | `--compress` | - | Active la compression Repomix (~30% moins de tokens) |
105
+ | `--fallback` | - | Force le fallback shell (skip Repomix) |
106
+ | `--include` | glob | Inclure uniquement ces fichiers (ex: `src/**/*.ts`) |
107
+ | `--exclude` | glob | Exclure des fichiers supplémentaires |
108
+ | `--mcp` | - | Lance Repomix en mode MCP server |
109
+
110
+ ## Exemples concrets
111
+
112
+ ### Pack minimal pour audit sécurité
113
+
114
+ ```bash
115
+ /common:pack-repo \
116
+ --format=xml \
117
+ --include="src/**/*.{ts,js,php}" \
118
+ --output=./audits/security-snapshot.xml
119
+ ```
120
+
121
+ ### Pack compressé pour analyse LLM
122
+
123
+ ```bash
124
+ /common:pack-repo --compress --format=markdown
125
+ ```
126
+
127
+ ### Pack fallback (environnement sans npm)
128
+
129
+ ```bash
130
+ /common:pack-repo --fallback --format=markdown
131
+ ```
132
+
133
+ ## Intégration
134
+
135
+ - **`/workflow:init`** — propose pack-repo pour contexte initial nouveau projet
136
+ - **`/common:setup-project-context`** — utilise pack-repo pour alimenter `.claude/INDEX.md`
137
+ - **`/team:audit`** — packe avant audit multi-stack
138
+ - **Skill `atomic-tasks`** — pack léger par feature pour subagent frais
139
+
140
+ ## Avertissements
141
+
142
+ - **Ne JAMAIS committer** le fichier de sortie (`repomix-output.*`) — ajouter à `.gitignore`
143
+ - **Secrets** : Repomix détecte/masque les patterns courants (API keys, tokens) mais **toujours review avant partage**
144
+ - **Taille** : au-delà de 200k tokens, utiliser `--compress` ou découper par dossier
145
+
146
+ ## Ressources
147
+
148
+ - [Repomix docs](https://repomix.com/)
149
+ - [yamadashy/repomix GitHub](https://github.com/yamadashy/repomix)
150
+ - Fallback script : `Dev/scripts/pack-repo-fallback.sh`
151
+ - Skill `atomic-tasks` pour découpage
@@ -0,0 +1,112 @@
1
+ ---
2
+ name: search
3
+ description: Search commands, skills and agents by keyword
4
+ tags: [search, discover, find, help]
5
+ ---
6
+
7
+ # Search Claude Craft
8
+
9
+ Search commands, skills and agents by keyword across the entire Claude Craft framework.
10
+
11
+ ## Usage
12
+
13
+ ```bash
14
+ /common:search <keyword>
15
+ ```
16
+
17
+ ## Examples
18
+
19
+ ```bash
20
+ /common:search testing
21
+ /common:search security
22
+ /common:search react
23
+ /common:search audit
24
+ ```
25
+
26
+ ## Implementation
27
+
28
+ This command searches through:
29
+ 1. **Commands** in `.claude/commands/*/` (name and content)
30
+ 2. **Skills** in `.claude/skills/*/` (name and description)
31
+ 3. **Agents** in `.claude/agents/*/` (name and description)
32
+ 4. **Rules** in `.claude/rules/` (title and content)
33
+
34
+ Results are ranked by relevance and display the top 5 matches.
35
+
36
+ ## Search Algorithm
37
+
38
+ 1. Search in command/skill/agent names (highest priority)
39
+ 2. Search in descriptions and frontmatter
40
+ 3. Search in file content (lower priority)
41
+ 4. Rank by keyword frequency and position
42
+ 5. Display top 5 results with context
43
+
44
+ ## Output Format
45
+
46
+ ```
47
+ 🔍 Search results for "testing":
48
+
49
+ Commands:
50
+ • /qa:tdd - TDD workflow (Red → Green → Refactor)
51
+ • /symfony:check-testing - Check Symfony testing compliance
52
+ • /react:check-testing - Check React testing compliance
53
+
54
+ Skills:
55
+ • testing - TDD/BDD testing patterns and best practices
56
+ • testing-symfony - Symfony-specific testing with PHPUnit/Pest
57
+
58
+ Agents:
59
+ • @tdd-coach - Guide through Test-Driven Development
60
+
61
+ Rules:
62
+ • 07-testing.md - Testing TDD/BDD — Quick Reference
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Instructions for Claude
68
+
69
+ When a user invokes `/common:search <keyword>`:
70
+
71
+ 1. Search across all commands, skills, agents, and rules
72
+ 2. Use Grep tool with case-insensitive search (`-i` flag)
73
+ 3. Search patterns:
74
+ - Command names: `find .claude/commands -name "*<keyword>*.md"`
75
+ - Skill names: `find .claude/skills -name "*<keyword>*"`
76
+ - Agent names: `grep -ri "<keyword>" .claude/agents/`
77
+ - Rules: `grep -ri "<keyword>" .claude/rules/`
78
+
79
+ 4. Extract and format results:
80
+ - For commands: extract frontmatter `name` and `description`
81
+ - For skills: extract directory name and SKILL.md frontmatter
82
+ - For agents: extract agent name from AGENT.md frontmatter
83
+ - For rules: extract title from markdown header
84
+
85
+ 5. Rank results by relevance:
86
+ - Exact match in name = 10 points
87
+ - Match in description = 5 points
88
+ - Match in content = 1 point
89
+
90
+ 6. Display top 5 results grouped by category (Commands, Skills, Agents, Rules)
91
+
92
+ 7. If no results found, suggest similar terms or display most popular commands
93
+
94
+ ---
95
+
96
+ ## Popular Searches
97
+
98
+ | Keyword | Top Results |
99
+ |---------|-------------|
100
+ | `testing` | /qa:tdd, testing skill, @tdd-coach |
101
+ | `security` | /team:security, security skill, @security-auditor |
102
+ | `architecture` | architecture skill, @database-architect |
103
+ | `react` | /react:* commands, @react-reviewer |
104
+ | `symfony` | /symfony:* commands, @symfony-reviewer |
105
+ | `audit` | /team:audit, /common:audit-freshness |
106
+ | `workflow` | /workflow:* commands, workflow-analysis skill |
107
+
108
+ ---
109
+
110
+ **Version:** 1.0.0
111
+ **Author:** The Bearded CTO
112
+ **Date:** 2026-04-17
@@ -204,14 +204,17 @@ class SecureHeaders
204
204
  {
205
205
  $response = $next($request);
206
206
 
207
+ // X-XSS-Protection est déprécié — s'appuyer sur CSP Level 3
207
208
  return $response
208
209
  ->header('X-Content-Type-Options', 'nosniff')
209
210
  ->header('X-Frame-Options', 'DENY')
210
- ->header('X-XSS-Protection', '1; mode=block')
211
- ->header('Strict-Transport-Security', 'max-age=31536000; includeSubDomains')
212
- ->header('Content-Security-Policy', "default-src 'self'")
211
+ ->header('Content-Security-Policy', "default-src 'self'; script-src 'self'; style-src 'self'; frame-ancestors 'none'; upgrade-insecure-requests")
212
+ ->header('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload')
213
213
  ->header('Referrer-Policy', 'strict-origin-when-cross-origin')
214
- ->header('Permissions-Policy', 'geolocation=(), microphone=(), camera=()');
214
+ ->header('Permissions-Policy', 'geolocation=(), microphone=(), camera=()')
215
+ ->header('Cross-Origin-Opener-Policy', 'same-origin')
216
+ ->header('Cross-Origin-Embedder-Policy', 'require-corp')
217
+ ->header('Cross-Origin-Resource-Policy', 'same-origin');
215
218
  }
216
219
  }
217
220
 
@@ -141,12 +141,13 @@ if ($user->getFailedLoginAttempts() >= 5) {
141
141
 
142
142
  ```php
143
143
  <?php
144
- // ✅ Secure - Security headers
144
+ // ✅ Secure - Security headers — X-XSS-Protection est déprécié, s'appuyer sur CSP Level 3
145
145
  $response->headers->set('X-Content-Type-Options', 'nosniff');
146
146
  $response->headers->set('X-Frame-Options', 'DENY');
147
- $response->headers->set('X-XSS-Protection', '1; mode=block');
148
- $response->headers->set('Content-Security-Policy', "default-src 'self'");
149
- $response->headers->set('Strict-Transport-Security', 'max-age=31536000');
147
+ $response->headers->set('Content-Security-Policy', "default-src 'self'; script-src 'self'; style-src 'self'; frame-ancestors 'none'; upgrade-insecure-requests");
148
+ $response->headers->set('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload');
149
+ $response->headers->set('Cross-Origin-Opener-Policy', 'same-origin');
150
+ $response->headers->set('Cross-Origin-Resource-Policy', 'same-origin');
150
151
  ```
151
152
 
152
153
  **Checklist:**
@@ -131,14 +131,17 @@ Vulnerabilities Found: X
131
131
 
132
132
  🌐 SECURITY HEADERS
133
133
  ──────────────────────────────────────────────────────────────
134
- [ ] Content-Security-Policy
134
+ [ ] Content-Security-Policy (Level 3 — prioritaire pour XSS)
135
135
  [✓] X-Content-Type-Options
136
136
  [ ] X-Frame-Options
137
- [] X-XSS-Protection
137
+ [] X-XSS-Protection — DEPRECATED, remove it; replace with CSP Level 3
138
+ [ ] Cross-Origin-Opener-Policy
139
+ [ ] Cross-Origin-Embedder-Policy
138
140
 
139
141
  Missing Headers:
140
- - Add CSP meta tag or configure server
142
+ - Add CSP Level 3 meta tag or configure server (frame-ancestors 'none'; upgrade-insecure-requests)
141
143
  - Add X-Frame-Options: DENY
144
+ - Remove X-XSS-Protection (deprecated, can introduce vulnerabilities)
142
145
 
143
146
  📋 ACTION ITEMS
144
147
  ──────────────────────────────────────────────────────────────
@@ -313,18 +313,18 @@ pnpm test
313
313
  },
314
314
  "dependencies": {
315
315
  "vue": "^3.5.0",
316
- "vue-router": "^4.3.0",
317
- "pinia": "^2.2.0"
316
+ "vue-router": "^5.0.0",
317
+ "pinia": "^3.0.0"
318
318
  },
319
319
  "devDependencies": {
320
320
  "@types/node": "^20.0.0",
321
- "@vitejs/plugin-vue": "^5.0.0",
321
+ "@vitejs/plugin-vue": "^6.0.0",
322
322
  "@vue/test-utils": "^2.4.0",
323
323
  "eslint": "^9.0.0",
324
- "eslint-plugin-vue": "^9.0.0",
324
+ "eslint-plugin-vue": "^10.0.0",
325
325
  "prettier": "^3.0.0",
326
326
  "typescript": "~5.4.0",
327
- "vite": "^5.4.0",
327
+ "vite": "^8.0.0",
328
328
  "vitest": "^2.0.0",
329
329
  "vue-tsc": "^2.0.0"
330
330
  }
@@ -10,7 +10,105 @@
10
10
  | **Playwright/Cypress** | End-to-end testing |
11
11
  | **MSW** | API mocking |
12
12
 
13
- ## Vitest Configuration
13
+ ## Vitest Browser Mode (recommandé 2026)
14
+
15
+ Depuis Vitest 4, le **Browser Mode** est stable et recommandé pour les tests de composants Vue — il exécute les tests dans un vrai navigateur (Chromium/Firefox/WebKit via Playwright) au lieu de simuler le DOM avec jsdom. Résultat : comportement réel du navigateur, pas de faux positifs jsdom.
16
+
17
+ **Stratégie 2026 :**
18
+ - Tests de **composants Vue** → Browser Mode (vrai DOM)
19
+ - Tests de **composables purs** (sans lifecycle ou DOM) → jsdom (plus rapide, pas de browser nécessaire)
20
+
21
+ ### Installation
22
+
23
+ ```bash
24
+ npm install -D @vitest/browser playwright
25
+ npx playwright install chromium
26
+ ```
27
+
28
+ ### Configuration avec workspaces
29
+
30
+ ```typescript
31
+ // vitest.config.ts — workspace séparant browser et node
32
+ import { defineConfig } from 'vitest/config'
33
+ import vue from '@vitejs/plugin-vue'
34
+ import { fileURLToPath } from 'node:url'
35
+
36
+ export default defineConfig({
37
+ plugins: [vue()],
38
+ test: {
39
+ workspace: [
40
+ {
41
+ // Tests de composants Vue — vrai navigateur
42
+ extends: true,
43
+ test: {
44
+ name: 'browser',
45
+ include: ['src/**/*.component.{test,spec}.ts'],
46
+ browser: {
47
+ enabled: true,
48
+ name: 'chromium',
49
+ provider: 'playwright',
50
+ headless: true,
51
+ },
52
+ },
53
+ },
54
+ {
55
+ // Composables purs et stores — jsdom (rapide)
56
+ extends: true,
57
+ test: {
58
+ name: 'unit',
59
+ include: ['src/**/*.{test,spec}.ts'],
60
+ exclude: ['src/**/*.component.{test,spec}.ts'],
61
+ environment: 'jsdom',
62
+ },
63
+ },
64
+ ],
65
+ globals: true,
66
+ coverage: {
67
+ provider: 'v8',
68
+ reporter: ['text', 'json', 'html'],
69
+ thresholds: {
70
+ statements: 80,
71
+ branches: 80,
72
+ functions: 80,
73
+ lines: 80,
74
+ },
75
+ },
76
+ setupFiles: ['./src/test/setup.ts'],
77
+ },
78
+ resolve: {
79
+ alias: {
80
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
81
+ },
82
+ },
83
+ })
84
+ ```
85
+
86
+ ### Exemple de test de composant en Browser Mode
87
+
88
+ ```typescript
89
+ // components/UserCard.component.test.ts
90
+ import { describe, it, expect } from 'vitest'
91
+ import { mount } from '@vue/test-utils'
92
+ import UserCard from './UserCard.vue'
93
+
94
+ // Ce test s'exécute dans Chromium — accès réel à document, window, etc.
95
+ describe('UserCard (browser)', () => {
96
+ it('renders user name in real DOM', () => {
97
+ const wrapper = mount(UserCard, {
98
+ props: { user: { id: '1', name: 'Jane', email: 'jane@example.com' } },
99
+ attachTo: document.body, // possible car vrai navigateur
100
+ })
101
+
102
+ expect(wrapper.text()).toContain('Jane')
103
+ })
104
+ })
105
+ ```
106
+
107
+ > **Migration jsdom → Browser Mode :** remplacer `environment: 'jsdom'` par la config workspace ci-dessus. Les tests `@vue/test-utils` (mount/shallowMount) fonctionnent sans modification. Supprimer `jsdom` des dépendances si tous les tests composants migrent en Browser Mode.
108
+
109
+ ## Vitest Configuration (jsdom simple — projets sans Browser Mode)
110
+
111
+ > Utiliser cette config uniquement si le projet ne nécessite pas Browser Mode (ex : lib de composables, pas de tests de composants). Pour les apps Vue standard, préférer la config workspace ci-dessus.
14
112
 
15
113
  ```typescript
16
114
  // vitest.config.ts
@@ -133,14 +133,17 @@ const apiKey = import.meta.env.VITE_API_KEY // DON'T DO THIS
133
133
  #### Security Headers (Vite Dev Server)
134
134
 
135
135
  ```typescript
136
- // vite.config.ts
136
+ // vite.config.ts — X-XSS-Protection est déprécié ; s'appuyer sur CSP Level 3
137
137
  export default defineConfig({
138
138
  server: {
139
139
  headers: {
140
+ 'Content-Security-Policy': "default-src 'self'; script-src 'self'; style-src 'self'; frame-ancestors 'none'; upgrade-insecure-requests",
140
141
  'X-Content-Type-Options': 'nosniff',
141
142
  'X-Frame-Options': 'DENY',
142
- 'X-XSS-Protection': '1; mode=block',
143
143
  'Referrer-Policy': 'strict-origin-when-cross-origin',
144
+ 'Cross-Origin-Opener-Policy': 'same-origin',
145
+ 'Cross-Origin-Embedder-Policy': 'require-corp',
146
+ 'Cross-Origin-Resource-Policy': 'same-origin',
144
147
  },
145
148
  },
146
149
  })
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: angular-reviewer
3
- description: Spezialist für Angular 21 LTS und TypeScript Code-Reviews — Signals, Standalone-Komponenten, RxJS, Performance, Zoneless Change Detection, httpResource
3
+ description: Spezialist für Angular 22 und TypeScript Code-Reviews — Signals, Signal Forms (stabil), Standalone-Komponenten, RxJS, Performance, Zoneless Change Detection (Standard), OnPush als Standard, httpResource
4
4
  model: haiku
5
5
  effort: low
6
6
  maxTurns: 6
@@ -10,11 +10,11 @@ permissionMode: default
10
10
  skills: [solid-principles, testing, security]
11
11
  ---
12
12
 
13
- # Audit-Agent Angular 21 LTS / TypeScript
13
+ # Audit-Agent Angular 22 / TypeScript
14
14
 
15
15
  ## Identität
16
16
 
17
- Ich bin ein Spezialist für Code-Reviews von Angular 21 LTS und TypeScript. Mein Ansatz konzentriert sich auf die spezifischen Probleme des modernen Angular: die Signals-basierte Architektur, Standalone-Komponenten, den neuen Control Flow (@if/@for/@switch), @defer für Lazy Loading, inject() für Dependency Injection, die Trennung von Signals/RxJS, Zoneless Change Detection (Standard seit Angular 21) und httpResource. Ich führe kein generisches Audit durch — ich erkenne, was eine Angular 21 LTS-Anwendung zum Abstürzen bringt, verlangsamt oder unnötig verkompliziert.
17
+ Ich bin ein Spezialist für Code-Reviews von Angular 22 und TypeScript. Mein Ansatz konzentriert sich auf die spezifischen Probleme des modernen Angular: die Signals-basierte Architektur, stabile Signal Forms (`@angular/forms/signals`), Standalone-Komponenten, den neuen Control Flow (@if/@for/@switch), @defer für Lazy Loading, inject() für Dependency Injection, die Trennung von Signals/RxJS, Zoneless Change Detection als Standard und httpResource. Ich führe kein generisches Audit durch — ich erkenne, was eine Angular 22-Anwendung zum Abstürzen bringt, verlangsamt oder unnötig verkompliziert.
18
18
 
19
19
  ## Bewertungssystem (100 Punkte)
20
20
 
@@ -42,10 +42,39 @@ Ist der Zustand synchron und wird für das Rendering verwendet?
42
42
  NEIN --> signal() mit update/set
43
43
  ```
44
44
 
45
+ ### Neuerungen Angular 22
46
+
47
+ **Zoneless als Standard (stabil) :**
48
+ - ~33 KB Bundle-Einsparung (Zone.js optional)
49
+ - +30-40% Rendering-Performance-Verbesserung laut Angular DevRel
50
+ - Stabile API: `provideZonelessChangeDetection()` aus `@angular/core` (nicht mehr `Experimental`)
51
+
52
+ **Signal Forms (stabil v22) :**
53
+ - Natives signal-basiertes Alternative zu Reactive Forms, **produktionsreif**
54
+ - `form(model, schemaFn)` + `FormField`-Direktive + Validatoren (`required`, `email`, `debounce`, etc.)
55
+ - Import aus `@angular/forms/signals`
56
+ - Interoperabilität mit bestehenden Reactive Forms über `SignalFormControl`-Bridge
57
+
58
+ **OnPush als Standard :**
59
+ - Alle neuen Komponenten werden standardmäßig mit `ChangeDetectionStrategy.OnPush` generiert
60
+ - Angular CLI wendet OnPush beim Scaffolding automatisch an
61
+
62
+ **HttpClient Fetch als Standard :**
63
+ - XHR veraltet — Fetch API ist der Standard-Transport
64
+ - Bessere SSR-Kompatibilität und Streaming-Unterstützung
65
+
66
+ **TypeScript 6 erforderlich :**
67
+ - TypeScript 5.x wird nicht mehr unterstützt — Upgrade vor Migration auf Angular 22 erforderlich
68
+
69
+ **Resource API stabil (v20+) :**
70
+ - `httpResource()`: Deklaratives Laden mit automatischen Zuständen (loading, error)
71
+ - Streaming Resources (WebSockets, SSE) über `resource()` mit abbrechbaren Lesevorgängen
72
+ - Ersetzt das repetitive `signal + effect + HTTP`-Muster
73
+
45
74
  ### Entscheidungsbaum: Standalone vs NgModule
46
75
 
47
76
  ```
48
- Ist die Komponente in einem neuen Angular 21-Projekt?
77
+ Ist die Komponente in einem neuen Angular 22-Projekt?
49
78
  JA --> KRITISCH wenn nicht standalone (Standard seit v19)
50
79
  NEIN --> Ist die Komponente in einem NgModule?
51
80
  JA --> Kann sie zu standalone migriert werden?
@@ -258,7 +287,7 @@ Hat die Komponente Tests?
258
287
  NEIN --> GERINGFÜGIG: Interaktionstests hinzufügen
259
288
  ```
260
289
 
261
- ### Testprinzipien Angular 21
290
+ ### Testprinzipien Angular 22
262
291
 
263
292
  **Tests mit Signals:**
264
293
  ```typescript
@@ -383,7 +412,7 @@ Verwendet die Anwendung SSR?
383
412
  JA --> SCHWERWIEGEND: SSR mit Angular Universal in Betracht ziehen
384
413
  ```
385
414
 
386
- ### Zoneless und Change Detection
415
+ ### Zoneless und Change Detection (Standard seit v22)
387
416
 
388
417
  ```
389
418
  Verwendet die Anwendung Zoneless Change Detection?
@@ -391,7 +420,32 @@ Verwendet die Anwendung Zoneless Change Detection?
391
420
  NEIN --> KRITISCH: Komponenten werden nicht aktualisiert
392
421
  JA --> Lösen Event-Listener die CD korrekt aus?
393
422
  NEIN --> Wird Zone.js verwendet?
394
- JA --> Akzeptabel, aber Migration zu Zoneless in Betracht ziehen
423
+ JA --> GERINGFÜGIG in v22+: Migration zu Zoneless empfohlen (spart ~33 KB)
424
+ NEIN --> Sicherstellen, dass provideZonelessChangeDetection() konfiguriert ist (stabil seit v20.2)
425
+
426
+ Wird httpResource() für repetitive HTTP-Anfragen verwendet?
427
+ NEIN --> Verwenden Komponenten signal + effect + HttpClient?
428
+ JA --> GERINGFÜGIG: httpResource() zur Reduzierung von Boilerplate in Betracht ziehen
429
+ ```
430
+
431
+ **Signal Forms Erkennung:**
432
+ ```typescript
433
+ // VERALTET: Reactive Forms für neue Formulare in Angular 22
434
+ import { FormGroup, FormControl } from '@angular/forms';
435
+
436
+ form = new FormGroup({
437
+ email: new FormControl(''),
438
+ });
439
+
440
+ // BEVORZUGT: Signal Forms (stabil Angular 22)
441
+ import { form, required, email } from '@angular/forms/signals';
442
+
443
+ interface UserModel { email: string; }
444
+
445
+ userForm = form<UserModel>(
446
+ { email: '' },
447
+ ({ email }) => [required(email), email(email)]
448
+ );
395
449
  ```
396
450
 
397
451
  ### Bundle-Analyse
@@ -401,7 +455,7 @@ Verwendet die Anwendung Zoneless Change Detection?
401
455
  | Initiales Bundle (gzipped) | < 200KB | KRITISCH wenn > 500KB, SCHWERWIEGEND wenn > 300KB |
402
456
  | Größter Lazy Chunk | < 100KB | SCHWERWIEGEND |
403
457
  | Nicht tree-geshakte RxJS-Operatoren | 0 | SCHWERWIEGEND bei globalem import 'rxjs' |
404
- | Zone.js unnötig inkludiert (bei Zoneless) | 0 | GERINGFÜGIG |
458
+ | Zone.js unnötig inkludiert (Zoneless Standard v22) | 0 | SCHWERWIEGEND (spart ~33 KB) |
405
459
 
406
460
  **Zu markierende Imports:**
407
461
  ```typescript
@@ -471,7 +525,7 @@ import { signal, computed } from '@angular/core';
471
525
  ## Audit-Berichtsformat
472
526
 
473
527
  ```markdown
474
- # Audit-Bericht Angular 21 / TypeScript
528
+ # Audit-Bericht Angular 22 / TypeScript
475
529
 
476
530
  ## Projekt: [Projektname]
477
531
  **Datum:** [Datum]
@@ -576,5 +630,6 @@ import { signal, computed } from '@angular/core';
576
630
 
577
631
  ---
578
632
 
579
- **Version:** 2.0
580
- **Letzte Aktualisierung:** 2026-02
633
+ **Version:** 2.2
634
+ **Letzte Aktualisierung:** 2026-06
635
+ **Dokumentierte Angular-Versionen:** Angular 22 (stabil, veröffentlicht am 03.06.2026)