@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.
- package/Dev/i18n/base/Angular/rules/06-tooling.md +1 -1
- package/Dev/i18n/base/Angular/rules/11-security-angular.md +5 -2
- package/Dev/i18n/base/CSharp/commands/check-security.md +4 -2
- package/Dev/i18n/base/CSharp/rules/11-security-csharp.md +3 -2
- package/Dev/i18n/base/Common/commands/aliases.md +237 -0
- package/Dev/i18n/base/Common/commands/audit-freshness.md +176 -0
- package/Dev/i18n/base/Common/commands/init.md +154 -0
- package/Dev/i18n/base/Common/commands/pack-repo.md +151 -0
- package/Dev/i18n/base/Common/commands/search.md +112 -0
- package/Dev/i18n/base/Laravel/rules/11-security-laravel.md +7 -4
- package/Dev/i18n/base/PHP/commands/check-security.md +5 -4
- package/Dev/i18n/base/VueJS/commands/check-security.md +6 -3
- package/Dev/i18n/base/VueJS/rules/06-tooling.md +5 -5
- package/Dev/i18n/base/VueJS/rules/07-testing-vuejs.md +99 -1
- package/Dev/i18n/base/VueJS/rules/11-security-vuejs.md +5 -2
- package/Dev/i18n/de/Angular/agents/angular-reviewer.md +66 -11
- package/Dev/i18n/de/Common/rules/11-security.md +195 -84
- package/Dev/i18n/de/Common/templates/settings.json.template +4 -4
- package/Dev/i18n/de/Flutter/agents/flutter-reviewer.md +4 -3
- package/Dev/i18n/de/PHP/rules/11-security-php.md +4 -2
- package/Dev/i18n/de/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/de/Paperclip/README.md +3 -3
- package/Dev/i18n/de/Paperclip/commands/generate-agent-config.md +2 -2
- package/Dev/i18n/de/Paperclip/commands/setup-company.md +11 -3
- package/Dev/i18n/de/Paperclip/rules/02-architecture-paperclip.md +1 -1
- package/Dev/i18n/de/Paperclip/rules/03-coding-standards.md +1 -1
- package/Dev/i18n/de/Paperclip/rules/06-tooling.md +1 -1
- package/Dev/i18n/de/Paperclip/rules/12-adapter-protocol.md +1 -1
- package/Dev/i18n/de/Python/rules/11-security-python.md +6 -4
- package/Dev/i18n/de/React/commands/check-security.md +5 -2
- package/Dev/i18n/de/React/rules/06-tooling.md +2 -2
- package/Dev/i18n/de/React/rules/11-security-react.md +5 -2
- package/Dev/i18n/de/ReactNative/rules/06-tooling.md +156 -57
- package/Dev/i18n/de/ReactNative/rules/07-testing-reactnative.md +1 -1
- package/Dev/i18n/de/ReactNative/rules/12-performance.md +63 -17
- package/Dev/i18n/de/ReactNative/rules/13-state-management.md +1 -1
- package/Dev/i18n/de/ReactNative/rules/14-navigation.md +172 -12
- package/Dev/i18n/de/Symfony/commands/check-code-quality.md +15 -14
- package/Dev/i18n/de/Symfony/commands/check-security.md +6 -3
- package/Dev/i18n/de/VueJS/agents/vuejs-reviewer.md +2 -2
- package/Dev/i18n/en/Angular/agents/angular-reviewer.md +66 -11
- package/Dev/i18n/en/Common/rules/11-security.md +180 -70
- package/Dev/i18n/en/Common/templates/settings.json.template +4 -4
- package/Dev/i18n/en/Flutter/agents/flutter-reviewer.md +4 -3
- package/Dev/i18n/en/PHP/rules/11-security-php.md +4 -2
- package/Dev/i18n/en/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/en/Paperclip/README.md +3 -3
- package/Dev/i18n/en/Paperclip/commands/generate-agent-config.md +4 -2
- package/Dev/i18n/en/Paperclip/commands/setup-company.md +11 -3
- package/Dev/i18n/en/Paperclip/rules/02-architecture-paperclip.md +2 -2
- package/Dev/i18n/en/Paperclip/rules/03-coding-standards.md +1 -1
- package/Dev/i18n/en/Paperclip/rules/06-tooling.md +1 -1
- package/Dev/i18n/en/Paperclip/rules/12-adapter-protocol.md +1 -1
- package/Dev/i18n/en/Python/rules/11-security-python.md +6 -4
- package/Dev/i18n/en/React/commands/check-security.md +5 -2
- package/Dev/i18n/en/React/rules/06-tooling.md +2 -2
- package/Dev/i18n/en/React/rules/11-security-react.md +5 -2
- package/Dev/i18n/en/ReactNative/rules/02-architecture.md +11 -0
- package/Dev/i18n/en/ReactNative/rules/06-tooling.md +111 -12
- package/Dev/i18n/en/ReactNative/rules/07-testing-reactnative.md +24 -6
- package/Dev/i18n/en/ReactNative/rules/12-performance.md +62 -16
- package/Dev/i18n/en/ReactNative/rules/13-state-management.md +1 -1
- package/Dev/i18n/en/ReactNative/rules/14-navigation.md +194 -9
- package/Dev/i18n/en/Symfony/CLAUDE.md.template +1 -1
- package/Dev/i18n/en/Symfony/agents/symfony-reviewer.md +2 -2
- package/Dev/i18n/en/Symfony/commands/check-code-quality.md +16 -15
- package/Dev/i18n/en/Symfony/commands/check-security.md +6 -3
- package/Dev/i18n/en/VueJS/agents/vuejs-reviewer.md +2 -2
- package/Dev/i18n/es/Angular/agents/angular-reviewer.md +67 -12
- package/Dev/i18n/es/Common/rules/11-security.md +179 -68
- package/Dev/i18n/es/Common/templates/settings.json.template +4 -4
- package/Dev/i18n/es/Flutter/agents/flutter-reviewer.md +4 -3
- package/Dev/i18n/es/PHP/rules/11-security-php.md +4 -2
- package/Dev/i18n/es/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/es/Paperclip/README.md +3 -3
- package/Dev/i18n/es/Paperclip/commands/generate-agent-config.md +2 -2
- package/Dev/i18n/es/Paperclip/commands/setup-company.md +11 -3
- package/Dev/i18n/es/Paperclip/rules/02-architecture-paperclip.md +1 -1
- package/Dev/i18n/es/Paperclip/rules/03-coding-standards.md +1 -1
- package/Dev/i18n/es/Paperclip/rules/06-tooling.md +1 -1
- package/Dev/i18n/es/Paperclip/rules/12-adapter-protocol.md +1 -1
- package/Dev/i18n/es/Python/rules/11-security-python.md +6 -4
- package/Dev/i18n/es/React/commands/check-security.md +5 -2
- package/Dev/i18n/es/React/rules/06-tooling.md +2 -2
- package/Dev/i18n/es/React/rules/11-security-react.md +5 -2
- package/Dev/i18n/es/ReactNative/rules/06-tooling.md +108 -9
- package/Dev/i18n/es/ReactNative/rules/07-testing-reactnative.md +1 -1
- package/Dev/i18n/es/ReactNative/rules/12-performance.md +61 -15
- package/Dev/i18n/es/ReactNative/rules/13-state-management.md +1 -1
- package/Dev/i18n/es/ReactNative/rules/14-navigation.md +163 -3
- package/Dev/i18n/es/Symfony/agents/symfony-reviewer.md +2 -2
- package/Dev/i18n/es/Symfony/commands/check-code-quality.md +16 -15
- package/Dev/i18n/es/Symfony/commands/check-security.md +6 -3
- package/Dev/i18n/es/VueJS/agents/vuejs-reviewer.md +2 -2
- package/Dev/i18n/fr/Angular/agents/angular-reviewer.md +66 -11
- package/Dev/i18n/fr/Common/rules/11-security.md +197 -84
- package/Dev/i18n/fr/Common/templates/settings.json.template +4 -4
- package/Dev/i18n/fr/Flutter/agents/flutter-reviewer.md +4 -3
- package/Dev/i18n/fr/PHP/rules/11-security-php.md +2 -2
- package/Dev/i18n/fr/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/fr/Paperclip/README.md +3 -3
- package/Dev/i18n/fr/Paperclip/commands/generate-agent-config.md +2 -2
- package/Dev/i18n/fr/Paperclip/commands/setup-company.md +11 -3
- package/Dev/i18n/fr/Paperclip/rules/02-architecture-paperclip.md +1 -1
- package/Dev/i18n/fr/Paperclip/rules/03-coding-standards.md +1 -1
- package/Dev/i18n/fr/Paperclip/rules/06-tooling.md +1 -1
- package/Dev/i18n/fr/Paperclip/rules/12-adapter-protocol.md +1 -1
- package/Dev/i18n/fr/Python/rules/11-security-python.md +6 -4
- package/Dev/i18n/fr/React/rules/06-tooling.md +2 -2
- package/Dev/i18n/fr/React/rules/11-security-react.md +5 -2
- package/Dev/i18n/fr/ReactNative/rules/06-tooling.md +112 -13
- package/Dev/i18n/fr/ReactNative/rules/07-testing-reactnative.md +1 -1
- package/Dev/i18n/fr/ReactNative/rules/12-performance.md +61 -15
- package/Dev/i18n/fr/ReactNative/rules/13-state-management.md +1 -1
- package/Dev/i18n/fr/ReactNative/rules/14-navigation.md +188 -3
- package/Dev/i18n/fr/Symfony/agents/symfony-reviewer.md +2 -2
- package/Dev/i18n/fr/Symfony/commands/check-code-quality.md +16 -15
- package/Dev/i18n/fr/Symfony/commands/check-security.md +6 -3
- package/Dev/i18n/fr/VueJS/agents/vuejs-reviewer.md +2 -2
- package/Dev/i18n/pt/Angular/agents/angular-reviewer.md +66 -11
- package/Dev/i18n/pt/Common/rules/11-security.md +179 -68
- package/Dev/i18n/pt/Common/templates/settings.json.template +4 -4
- package/Dev/i18n/pt/Flutter/agents/flutter-reviewer.md +4 -3
- package/Dev/i18n/pt/PHP/rules/11-security-php.md +4 -2
- package/Dev/i18n/pt/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/pt/Paperclip/README.md +3 -3
- package/Dev/i18n/pt/Paperclip/commands/generate-agent-config.md +2 -2
- package/Dev/i18n/pt/Paperclip/commands/setup-company.md +11 -3
- package/Dev/i18n/pt/Paperclip/rules/02-architecture-paperclip.md +1 -1
- package/Dev/i18n/pt/Paperclip/rules/03-coding-standards.md +1 -1
- package/Dev/i18n/pt/Paperclip/rules/06-tooling.md +1 -1
- package/Dev/i18n/pt/Paperclip/rules/12-adapter-protocol.md +1 -1
- package/Dev/i18n/pt/Python/rules/11-security-python.md +6 -4
- package/Dev/i18n/pt/React/commands/check-security.md +5 -2
- package/Dev/i18n/pt/React/rules/06-tooling.md +2 -2
- package/Dev/i18n/pt/React/rules/11-security-react.md +5 -2
- package/Dev/i18n/pt/ReactNative/rules/06-tooling.md +108 -9
- package/Dev/i18n/pt/ReactNative/rules/07-testing-reactnative.md +1 -1
- package/Dev/i18n/pt/ReactNative/rules/12-performance.md +61 -15
- package/Dev/i18n/pt/ReactNative/rules/13-state-management.md +1 -1
- package/Dev/i18n/pt/ReactNative/rules/14-navigation.md +163 -3
- package/Dev/i18n/pt/Symfony/agents/symfony-reviewer.md +2 -2
- package/Dev/i18n/pt/Symfony/commands/check-code-quality.md +16 -15
- package/Dev/i18n/pt/Symfony/commands/check-security.md +6 -3
- package/Dev/i18n/pt/VueJS/agents/vuejs-reviewer.md +2 -2
- package/Dev/scripts/install-paperclip-rules.sh +1 -1
- package/Infra/i18n/de/FrankenPHP/agents/frankenphp-architect.md +1 -1
- package/Infra/i18n/de/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/de/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/de/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/en/FrankenPHP/agents/frankenphp-architect.md +1 -1
- package/Infra/i18n/en/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/en/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/en/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/es/FrankenPHP/agents/frankenphp-architect.md +1 -1
- package/Infra/i18n/es/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/es/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/es/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-architect.md +1 -1
- package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/fr/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-architect.md +1 -1
- package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/pt/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Project/install-project-commands.sh +1 -1
- package/README.md +12 -38
- package/bundles/cursor/.cursorrules +7 -7
- package/bundles/windsurf/.windsurfrules +7 -7
- package/cli/lib/install-from-url.js +16 -0
- package/cli/lib/tech-registry.js +17 -7
- 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('
|
|
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('
|
|
148
|
-
$response->headers->set('
|
|
149
|
-
$response->headers->set('
|
|
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
|
-
[
|
|
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": "^
|
|
317
|
-
"pinia": "^
|
|
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": "^
|
|
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": "^
|
|
324
|
+
"eslint-plugin-vue": "^10.0.0",
|
|
325
325
|
"prettier": "^3.0.0",
|
|
326
326
|
"typescript": "~5.4.0",
|
|
327
|
-
"vite": "^
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 -->
|
|
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 (
|
|
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
|
|
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.
|
|
580
|
-
**Letzte Aktualisierung:** 2026-
|
|
633
|
+
**Version:** 2.2
|
|
634
|
+
**Letzte Aktualisierung:** 2026-06
|
|
635
|
+
**Dokumentierte Angular-Versionen:** Angular 22 (stabil, veröffentlicht am 03.06.2026)
|