claudient 0.1.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/.claude-plugin/plugin.json +42 -0
- package/CONTEXT.md +58 -0
- package/README.md +165 -0
- package/agents/build-resolvers/de/python-resolver.md +64 -0
- package/agents/build-resolvers/de/typescript-resolver.md +65 -0
- package/agents/build-resolvers/es/python-resolver.md +64 -0
- package/agents/build-resolvers/es/typescript-resolver.md +65 -0
- package/agents/build-resolvers/fr/python-resolver.md +64 -0
- package/agents/build-resolvers/fr/typescript-resolver.md +65 -0
- package/agents/build-resolvers/nl/python-resolver.md +64 -0
- package/agents/build-resolvers/nl/typescript-resolver.md +65 -0
- package/agents/build-resolvers/python-resolver.md +62 -0
- package/agents/build-resolvers/typescript-resolver.md +63 -0
- package/agents/core/architect.md +64 -0
- package/agents/core/code-reviewer.md +78 -0
- package/agents/core/de/architect.md +66 -0
- package/agents/core/de/code-reviewer.md +80 -0
- package/agents/core/de/planner.md +63 -0
- package/agents/core/de/security-reviewer.md +93 -0
- package/agents/core/es/architect.md +66 -0
- package/agents/core/es/code-reviewer.md +80 -0
- package/agents/core/es/planner.md +63 -0
- package/agents/core/es/security-reviewer.md +93 -0
- package/agents/core/fr/architect.md +66 -0
- package/agents/core/fr/code-reviewer.md +80 -0
- package/agents/core/fr/planner.md +63 -0
- package/agents/core/fr/security-reviewer.md +93 -0
- package/agents/core/nl/architect.md +66 -0
- package/agents/core/nl/code-reviewer.md +80 -0
- package/agents/core/nl/planner.md +63 -0
- package/agents/core/nl/security-reviewer.md +93 -0
- package/agents/core/planner.md +61 -0
- package/agents/core/security-reviewer.md +91 -0
- package/guides/agent-orchestration.md +231 -0
- package/guides/de/agent-orchestration.md +174 -0
- package/guides/de/getting-started.md +164 -0
- package/guides/de/hooks-cookbook.md +160 -0
- package/guides/de/memory-management.md +153 -0
- package/guides/de/security.md +180 -0
- package/guides/de/skill-authoring.md +214 -0
- package/guides/de/token-optimization.md +156 -0
- package/guides/es/agent-orchestration.md +174 -0
- package/guides/es/getting-started.md +164 -0
- package/guides/es/hooks-cookbook.md +160 -0
- package/guides/es/memory-management.md +153 -0
- package/guides/es/security.md +180 -0
- package/guides/es/skill-authoring.md +214 -0
- package/guides/es/token-optimization.md +156 -0
- package/guides/fr/agent-orchestration.md +174 -0
- package/guides/fr/getting-started.md +164 -0
- package/guides/fr/hooks-cookbook.md +227 -0
- package/guides/fr/memory-management.md +169 -0
- package/guides/fr/security.md +180 -0
- package/guides/fr/skill-authoring.md +214 -0
- package/guides/fr/token-optimization.md +158 -0
- package/guides/getting-started.md +164 -0
- package/guides/hooks-cookbook.md +423 -0
- package/guides/memory-management.md +192 -0
- package/guides/nl/agent-orchestration.md +174 -0
- package/guides/nl/getting-started.md +164 -0
- package/guides/nl/hooks-cookbook.md +160 -0
- package/guides/nl/memory-management.md +153 -0
- package/guides/nl/security.md +180 -0
- package/guides/nl/skill-authoring.md +214 -0
- package/guides/nl/token-optimization.md +156 -0
- package/guides/security.md +229 -0
- package/guides/skill-authoring.md +226 -0
- package/guides/token-optimization.md +169 -0
- package/hooks/lifecycle/cost-tracker.md +49 -0
- package/hooks/lifecycle/cost-tracker.sh +59 -0
- package/hooks/lifecycle/pre-compact-save.md +56 -0
- package/hooks/lifecycle/pre-compact-save.sh +37 -0
- package/hooks/lifecycle/session-start.md +50 -0
- package/hooks/lifecycle/session-start.sh +47 -0
- package/hooks/post-tool-use/audit-log.md +53 -0
- package/hooks/post-tool-use/audit-log.sh +53 -0
- package/hooks/post-tool-use/prettier.md +53 -0
- package/hooks/post-tool-use/prettier.sh +49 -0
- package/hooks/pre-tool-use/block-dangerous.md +48 -0
- package/hooks/pre-tool-use/block-dangerous.sh +76 -0
- package/hooks/pre-tool-use/git-push-confirm.md +46 -0
- package/hooks/pre-tool-use/git-push-confirm.sh +36 -0
- package/mcp/configs/github.json +11 -0
- package/mcp/configs/postgres.json +11 -0
- package/mcp/de/recommended-servers.md +170 -0
- package/mcp/es/recommended-servers.md +170 -0
- package/mcp/fr/recommended-servers.md +170 -0
- package/mcp/nl/recommended-servers.md +170 -0
- package/mcp/recommended-servers.md +168 -0
- package/package.json +45 -0
- package/prompts/project-starters/de/fastapi-project.md +62 -0
- package/prompts/project-starters/de/nextjs-project.md +82 -0
- package/prompts/project-starters/es/fastapi-project.md +62 -0
- package/prompts/project-starters/es/nextjs-project.md +82 -0
- package/prompts/project-starters/fastapi-project.md +60 -0
- package/prompts/project-starters/fr/fastapi-project.md +62 -0
- package/prompts/project-starters/fr/nextjs-project.md +82 -0
- package/prompts/project-starters/nextjs-project.md +80 -0
- package/prompts/project-starters/nl/fastapi-project.md +62 -0
- package/prompts/project-starters/nl/nextjs-project.md +82 -0
- package/prompts/system-prompts/ai-product.md +80 -0
- package/prompts/system-prompts/data-pipeline.md +76 -0
- package/prompts/system-prompts/de/ai-product.md +82 -0
- package/prompts/system-prompts/de/data-pipeline.md +78 -0
- package/prompts/system-prompts/de/saas-backend.md +71 -0
- package/prompts/system-prompts/es/ai-product.md +82 -0
- package/prompts/system-prompts/es/data-pipeline.md +78 -0
- package/prompts/system-prompts/es/saas-backend.md +71 -0
- package/prompts/system-prompts/fr/ai-product.md +82 -0
- package/prompts/system-prompts/fr/data-pipeline.md +78 -0
- package/prompts/system-prompts/fr/saas-backend.md +71 -0
- package/prompts/system-prompts/nl/ai-product.md +82 -0
- package/prompts/system-prompts/nl/data-pipeline.md +78 -0
- package/prompts/system-prompts/nl/saas-backend.md +71 -0
- package/prompts/system-prompts/saas-backend.md +69 -0
- package/prompts/task-specific/changelog.md +81 -0
- package/prompts/task-specific/de/changelog.md +83 -0
- package/prompts/task-specific/de/debugging.md +78 -0
- package/prompts/task-specific/de/pr-description.md +69 -0
- package/prompts/task-specific/debugging.md +76 -0
- package/prompts/task-specific/es/changelog.md +83 -0
- package/prompts/task-specific/es/debugging.md +78 -0
- package/prompts/task-specific/es/pr-description.md +69 -0
- package/prompts/task-specific/fr/changelog.md +83 -0
- package/prompts/task-specific/fr/debugging.md +78 -0
- package/prompts/task-specific/fr/pr-description.md +69 -0
- package/prompts/task-specific/nl/changelog.md +83 -0
- package/prompts/task-specific/nl/debugging.md +78 -0
- package/prompts/task-specific/nl/pr-description.md +69 -0
- package/prompts/task-specific/pr-description.md +67 -0
- package/rules/common/coding-style.md +45 -0
- package/rules/common/de/coding-style.md +47 -0
- package/rules/common/de/git.md +48 -0
- package/rules/common/de/performance.md +40 -0
- package/rules/common/de/security.md +45 -0
- package/rules/common/de/testing.md +45 -0
- package/rules/common/es/coding-style.md +47 -0
- package/rules/common/es/git.md +48 -0
- package/rules/common/es/performance.md +40 -0
- package/rules/common/es/security.md +45 -0
- package/rules/common/es/testing.md +45 -0
- package/rules/common/fr/coding-style.md +47 -0
- package/rules/common/fr/git.md +48 -0
- package/rules/common/fr/performance.md +40 -0
- package/rules/common/fr/security.md +45 -0
- package/rules/common/fr/testing.md +45 -0
- package/rules/common/git.md +46 -0
- package/rules/common/nl/coding-style.md +47 -0
- package/rules/common/nl/git.md +48 -0
- package/rules/common/nl/performance.md +40 -0
- package/rules/common/nl/security.md +45 -0
- package/rules/common/nl/testing.md +45 -0
- package/rules/common/performance.md +38 -0
- package/rules/common/security.md +43 -0
- package/rules/common/testing.md +43 -0
- package/rules/language-specific/de/go.md +48 -0
- package/rules/language-specific/de/python.md +38 -0
- package/rules/language-specific/de/typescript.md +51 -0
- package/rules/language-specific/es/go.md +48 -0
- package/rules/language-specific/es/python.md +38 -0
- package/rules/language-specific/es/typescript.md +51 -0
- package/rules/language-specific/fr/go.md +48 -0
- package/rules/language-specific/fr/python.md +38 -0
- package/rules/language-specific/fr/typescript.md +51 -0
- package/rules/language-specific/go.md +46 -0
- package/rules/language-specific/nl/go.md +48 -0
- package/rules/language-specific/nl/python.md +38 -0
- package/rules/language-specific/nl/typescript.md +51 -0
- package/rules/language-specific/python.md +36 -0
- package/rules/language-specific/typescript.md +49 -0
- package/scripts/cli.js +161 -0
- package/scripts/link-skills.sh +35 -0
- package/scripts/list-skills.sh +34 -0
- package/skills/ai-engineering/agent-construction.md +285 -0
- package/skills/ai-engineering/claude-api.md +248 -0
- package/skills/ai-engineering/de/agent-construction.md +287 -0
- package/skills/ai-engineering/de/claude-api.md +250 -0
- package/skills/ai-engineering/es/agent-construction.md +287 -0
- package/skills/ai-engineering/es/claude-api.md +250 -0
- package/skills/ai-engineering/fr/agent-construction.md +287 -0
- package/skills/ai-engineering/fr/claude-api.md +250 -0
- package/skills/ai-engineering/nl/agent-construction.md +287 -0
- package/skills/ai-engineering/nl/claude-api.md +250 -0
- package/skills/backend/dotnet/csharp.md +304 -0
- package/skills/backend/dotnet/de/csharp.md +306 -0
- package/skills/backend/dotnet/es/csharp.md +306 -0
- package/skills/backend/dotnet/fr/csharp.md +306 -0
- package/skills/backend/dotnet/nl/csharp.md +306 -0
- package/skills/backend/go/de/go.md +307 -0
- package/skills/backend/go/es/go.md +307 -0
- package/skills/backend/go/fr/go.md +307 -0
- package/skills/backend/go/go.md +305 -0
- package/skills/backend/go/nl/go.md +307 -0
- package/skills/backend/nodejs/de/nestjs.md +274 -0
- package/skills/backend/nodejs/de/nextjs.md +222 -0
- package/skills/backend/nodejs/es/nestjs.md +274 -0
- package/skills/backend/nodejs/es/nextjs.md +222 -0
- package/skills/backend/nodejs/fr/nestjs.md +274 -0
- package/skills/backend/nodejs/fr/nextjs.md +222 -0
- package/skills/backend/nodejs/nestjs.md +272 -0
- package/skills/backend/nodejs/nextjs.md +220 -0
- package/skills/backend/nodejs/nl/nestjs.md +274 -0
- package/skills/backend/nodejs/nl/nextjs.md +222 -0
- package/skills/backend/python/de/django.md +285 -0
- package/skills/backend/python/de/fastapi.md +244 -0
- package/skills/backend/python/django.md +283 -0
- package/skills/backend/python/es/django.md +285 -0
- package/skills/backend/python/es/fastapi.md +244 -0
- package/skills/backend/python/fastapi.md +242 -0
- package/skills/backend/python/fr/django.md +285 -0
- package/skills/backend/python/fr/fastapi.md +244 -0
- package/skills/backend/python/nl/django.md +285 -0
- package/skills/backend/python/nl/fastapi.md +244 -0
- package/skills/data-ml/dbt-data-pipelines.md +155 -0
- package/skills/data-ml/de/dbt-data-pipelines.md +157 -0
- package/skills/data-ml/de/pandas-polars.md +147 -0
- package/skills/data-ml/de/pytorch-tensorflow.md +171 -0
- package/skills/data-ml/es/dbt-data-pipelines.md +157 -0
- package/skills/data-ml/es/pandas-polars.md +147 -0
- package/skills/data-ml/es/pytorch-tensorflow.md +171 -0
- package/skills/data-ml/fr/dbt-data-pipelines.md +157 -0
- package/skills/data-ml/fr/pandas-polars.md +147 -0
- package/skills/data-ml/fr/pytorch-tensorflow.md +171 -0
- package/skills/data-ml/nl/dbt-data-pipelines.md +157 -0
- package/skills/data-ml/nl/pandas-polars.md +147 -0
- package/skills/data-ml/nl/pytorch-tensorflow.md +171 -0
- package/skills/data-ml/pandas-polars.md +145 -0
- package/skills/data-ml/pytorch-tensorflow.md +169 -0
- package/skills/database/de/graphql.md +181 -0
- package/skills/database/es/graphql.md +181 -0
- package/skills/database/fr/graphql.md +181 -0
- package/skills/database/graphql.md +179 -0
- package/skills/database/nl/graphql.md +181 -0
- package/skills/devops-infra/de/docker.md +133 -0
- package/skills/devops-infra/de/github-actions.md +179 -0
- package/skills/devops-infra/de/kubernetes.md +129 -0
- package/skills/devops-infra/de/terraform.md +130 -0
- package/skills/devops-infra/docker.md +131 -0
- package/skills/devops-infra/es/docker.md +133 -0
- package/skills/devops-infra/es/github-actions.md +179 -0
- package/skills/devops-infra/es/kubernetes.md +129 -0
- package/skills/devops-infra/es/terraform.md +130 -0
- package/skills/devops-infra/fr/docker.md +133 -0
- package/skills/devops-infra/fr/github-actions.md +179 -0
- package/skills/devops-infra/fr/kubernetes.md +129 -0
- package/skills/devops-infra/fr/terraform.md +130 -0
- package/skills/devops-infra/github-actions.md +177 -0
- package/skills/devops-infra/kubernetes.md +127 -0
- package/skills/devops-infra/nl/docker.md +133 -0
- package/skills/devops-infra/nl/github-actions.md +179 -0
- package/skills/devops-infra/nl/kubernetes.md +129 -0
- package/skills/devops-infra/nl/terraform.md +130 -0
- package/skills/devops-infra/terraform.md +128 -0
- package/skills/finance-payments/de/stripe.md +187 -0
- package/skills/finance-payments/es/stripe.md +187 -0
- package/skills/finance-payments/fr/stripe.md +187 -0
- package/skills/finance-payments/nl/stripe.md +187 -0
- package/skills/finance-payments/stripe.md +185 -0
- package/workflows/code-review.md +151 -0
- package/workflows/de/code-review.md +153 -0
- package/workflows/de/debugging-session.md +146 -0
- package/workflows/de/feature-development.md +155 -0
- package/workflows/de/new-project-bootstrap.md +175 -0
- package/workflows/de/refactor-safely.md +150 -0
- package/workflows/debugging-session.md +144 -0
- package/workflows/es/code-review.md +153 -0
- package/workflows/es/debugging-session.md +146 -0
- package/workflows/es/feature-development.md +155 -0
- package/workflows/es/new-project-bootstrap.md +175 -0
- package/workflows/es/refactor-safely.md +150 -0
- package/workflows/feature-development.md +153 -0
- package/workflows/fr/code-review.md +153 -0
- package/workflows/fr/debugging-session.md +146 -0
- package/workflows/fr/feature-development.md +155 -0
- package/workflows/fr/new-project-bootstrap.md +175 -0
- package/workflows/fr/refactor-safely.md +150 -0
- package/workflows/new-project-bootstrap.md +173 -0
- package/workflows/nl/code-review.md +153 -0
- package/workflows/nl/debugging-session.md +146 -0
- package/workflows/nl/feature-development.md +155 -0
- package/workflows/nl/new-project-bootstrap.md +175 -0
- package/workflows/nl/refactor-safely.md +150 -0
- package/workflows/refactor-safely.md +148 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
> 🇫🇷 This is the French translation. [English version](../security-reviewer.md).
|
|
2
|
+
|
|
3
|
+
# Agent Réviseur de Sécurité
|
|
4
|
+
|
|
5
|
+
## Objectif
|
|
6
|
+
Effectue un audit de sécurité ciblé des changements de code ou d'un module spécifique — en se concentrant sur le Top 10 OWASP, l'exposition des secrets, les failles d'authentification/autorisation et les vulnérabilités d'injection.
|
|
7
|
+
|
|
8
|
+
## Conseil sur le modèle
|
|
9
|
+
**Opus 4.7** — la révision de sécurité nécessite un raisonnement approfondi pour identifier les vecteurs d'attaque non évidents, comprendre comment les vulnérabilités s'enchaînent et évaluer si les mesures d'atténuation sont réellement efficaces. Ne pas utiliser Haiku ou Sonnet pour les révisions critiques de sécurité.
|
|
10
|
+
|
|
11
|
+
## Outils
|
|
12
|
+
- `Read` — lire les fichiers en révision, CLAUDE.md, le code auth/middleware
|
|
13
|
+
- `Bash` (lecture seule : `grep`, `find`) — rechercher des patterns (secrets codés en dur, fonctions non sécurisées, vérifications d'auth manquantes)
|
|
14
|
+
- `WebFetch` — consulter les bases de données CVE ou les avis de sécurité pour des dépendances spécifiques
|
|
15
|
+
- Pas de `Edit`, `Write`, ou opérations destructives
|
|
16
|
+
|
|
17
|
+
## Quand déléguer ici
|
|
18
|
+
- Avant de fusionner du code qui touche l'authentification, l'autorisation ou la gestion des sessions
|
|
19
|
+
- Avant de déployer du code qui gère des entrées utilisateur (formulaires, uploads de fichiers, paramètres API)
|
|
20
|
+
- Révision de la construction de requêtes de base de données pour les risques d'injection
|
|
21
|
+
- Audit des endpoints API pour les vérifications d'auth/authz manquantes
|
|
22
|
+
- Vérification des secrets ou credentials accidentellement inclus dans le code
|
|
23
|
+
- Révision des ajouts de dépendances tierces pour les CVEs connus
|
|
24
|
+
|
|
25
|
+
## Quand NE PAS déléguer ici
|
|
26
|
+
- Révision générale de la qualité du code (utiliser le Réviseur de Code)
|
|
27
|
+
- Sécurité infra/réseau (utiliser un outil cloud security dédié)
|
|
28
|
+
- Tests de pénétration (tests dynamiques, pas d'analyse statique)
|
|
29
|
+
|
|
30
|
+
## Template de prompt
|
|
31
|
+
```
|
|
32
|
+
You are a security reviewer. Do not modify any files. Report findings only.
|
|
33
|
+
|
|
34
|
+
Files to review:
|
|
35
|
+
[list files or paste code]
|
|
36
|
+
|
|
37
|
+
Application context:
|
|
38
|
+
- What this code does: [brief description]
|
|
39
|
+
- Auth mechanism: [JWT, sessions, API keys, etc.]
|
|
40
|
+
- Database: [PostgreSQL/MySQL/MongoDB + ORM if any]
|
|
41
|
+
- User input sources: [API params, form data, file uploads, etc.]
|
|
42
|
+
- Known sensitive operations: [payments, admin actions, user data access]
|
|
43
|
+
|
|
44
|
+
Audit for:
|
|
45
|
+
1. Injection (SQL, NoSQL, command, LDAP, XPath)
|
|
46
|
+
2. Broken authentication (weak tokens, missing expiry, insecure storage)
|
|
47
|
+
3. Broken access control (missing auth checks, IDOR, privilege escalation)
|
|
48
|
+
4. Sensitive data exposure (secrets in code, logs, error messages)
|
|
49
|
+
5. Security misconfiguration (default credentials, verbose errors, open CORS)
|
|
50
|
+
6. XSS (reflected, stored, DOM-based)
|
|
51
|
+
7. CSRF (missing tokens on state-changing endpoints)
|
|
52
|
+
8. Insecure dependencies (known CVEs in imports)
|
|
53
|
+
9. Insufficient logging (failed auth attempts not logged, no audit trail)
|
|
54
|
+
|
|
55
|
+
Severity: CRITICAL / HIGH / MEDIUM / LOW / INFO
|
|
56
|
+
|
|
57
|
+
For each finding:
|
|
58
|
+
- Severity
|
|
59
|
+
- Location (file:line)
|
|
60
|
+
- Vulnerability description
|
|
61
|
+
- Attack scenario (how would an attacker exploit this?)
|
|
62
|
+
- Recommended fix
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Exemple de cas d'utilisation
|
|
66
|
+
**Scénario :** Réviser un nouvel endpoint d'upload de fichier.
|
|
67
|
+
|
|
68
|
+
**Ce que retourne le Réviseur de Sécurité :**
|
|
69
|
+
```
|
|
70
|
+
CRITICAL — uploads/routes.ts:28
|
|
71
|
+
File extension not validated before saving. Attacker can upload .php or .exe.
|
|
72
|
+
Attack: upload malicious.php, access via URL, execute arbitrary code on server.
|
|
73
|
+
Fix: whitelist allowed MIME types + extensions, validate both. Never trust client-provided content-type.
|
|
74
|
+
|
|
75
|
+
HIGH — uploads/routes.ts:41
|
|
76
|
+
File saved to web-accessible directory (/public/uploads).
|
|
77
|
+
Attack: uploaded files are directly executable/accessible by URL.
|
|
78
|
+
Fix: save outside webroot, serve via signed URLs with expiry.
|
|
79
|
+
|
|
80
|
+
MEDIUM — uploads/routes.ts:15
|
|
81
|
+
No file size limit enforced server-side (only client-side check).
|
|
82
|
+
Attack: send large files to exhaust disk space or cause OOM.
|
|
83
|
+
Fix: add multer/busboy size limit at middleware level.
|
|
84
|
+
|
|
85
|
+
LOW — uploads/routes.ts:55
|
|
86
|
+
Original filename used in storage path without sanitization.
|
|
87
|
+
Attack: path traversal via filename like "../../etc/passwd".
|
|
88
|
+
Fix: generate UUID filename, ignore original filename for storage path.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
> **Travaillez avec nous :** Claudient est soutenu par [Uitbreiden](https://uitbreiden.com/) — nous construisons des produits IA et des solutions B2B avec des communautés de développeurs. [uitbreiden.com](https://uitbreiden.com/)
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
> 🇳🇱 Dit is de Nederlandse vertaling. [Engelse versie](../architect.md).
|
|
2
|
+
|
|
3
|
+
# Architect Agent
|
|
4
|
+
|
|
5
|
+
## Doel
|
|
6
|
+
Evalueert architectuuropties voor een systeemontwerpprobleem, overweegt afwegingen en beveelt een specifieke aanpak aan met onderbouwing.
|
|
7
|
+
|
|
8
|
+
## Modeladvies
|
|
9
|
+
**Opus 4.7** — architectuurbeslissingen zijn ingrijpend, moeilijk te draaien en vereisen echte redenering over complexe afwegingen. Dit is een van de weinige gevallen waarbij Opus zijn kosten rechtvaardigt.
|
|
10
|
+
|
|
11
|
+
## Tools
|
|
12
|
+
- `Read` — bestaande architectuurbestanden, CLAUDE.md, CONTEXT.md, ADR's lezen
|
|
13
|
+
- `Bash` (alleen-lezen: `find`, `grep`) — bestaande patronen en afhankelijkheden verkennen
|
|
14
|
+
- `WebFetch` — documentatie controleren voor specifieke technologieën in overweging
|
|
15
|
+
- Geen `Edit`, `Write` of destructieve operaties — architect beveelt aan, implementeert niet
|
|
16
|
+
|
|
17
|
+
## Wanneer hierheen te delegeren
|
|
18
|
+
- Kiezen tussen fundamenteel verschillende benaderingen (bijv. event-driven vs. request-response, monorepo vs. polyrepo, SQL vs. NoSQL)
|
|
19
|
+
- Een beslissing die duur is om te draaien (datamodelshape, API-contractontwerp, auth-strategie)
|
|
20
|
+
- Evalueren of een component zelf te bouwen of in te kopen
|
|
21
|
+
- Een bestaande architectuur beoordelen op schaalbaarheids- of onderhoudbaarheidsproblemen
|
|
22
|
+
- Een nieuw systeem van scratch ontwerpen met meerdere levensvatbare benaderingen
|
|
23
|
+
|
|
24
|
+
## Wanneer NIET hierheen te delegeren
|
|
25
|
+
- Beslissingen op implementatieniveau (welke bibliotheek voor een hulpprogramma, codestijlkeuzes)
|
|
26
|
+
- Wanneer de architectuur al is besloten en je alleen hoeft te implementeren
|
|
27
|
+
- Prestatieoptimalisatie van bestaande code (niet architectureel)
|
|
28
|
+
|
|
29
|
+
## Promptsjabloon
|
|
30
|
+
```
|
|
31
|
+
You are an architecture advisor. Do not write implementation code.
|
|
32
|
+
|
|
33
|
+
Problem: [describe the architectural decision to be made]
|
|
34
|
+
|
|
35
|
+
Current system context:
|
|
36
|
+
- Stack: [languages, frameworks, infrastructure]
|
|
37
|
+
- Scale: [users, requests/sec, data volume]
|
|
38
|
+
- Team: [size, expertise areas]
|
|
39
|
+
- Constraints: [budget, timeline, existing systems that can't change]
|
|
40
|
+
|
|
41
|
+
Existing architectural decisions (from ADRs/CLAUDE.md):
|
|
42
|
+
[paste relevant decisions]
|
|
43
|
+
|
|
44
|
+
Evaluate [2-3 specific options] and recommend one.
|
|
45
|
+
|
|
46
|
+
For each option, cover:
|
|
47
|
+
- How it works in this context
|
|
48
|
+
- Advantages specific to our constraints
|
|
49
|
+
- Disadvantages and risks
|
|
50
|
+
- What it would cost to reverse this decision later
|
|
51
|
+
|
|
52
|
+
End with: your recommendation, one-sentence rationale, and what to record in an ADR.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Voorbeeldgebruiksscenario
|
|
56
|
+
**Scenario:** "Moeten we Kafka, SQS of directe DB-polling gebruiken voor onze async-taakrij?"
|
|
57
|
+
|
|
58
|
+
**Wat Architect retourneert:**
|
|
59
|
+
- Evalueert alle 3 tegen: huidige schaal (5k events/dag), teamexpertise (sterk AWS, geen Kafka-ervaring), budget (startup)
|
|
60
|
+
- Beveelt aan: SQS — past bij schaal, teamexpertise en bestaande AWS-infrastructuur. Kafka voegt operationele complexiteit toe die niet gerechtvaardigd is bij huidig volume.
|
|
61
|
+
- ADR-aanbeveling: Registreer de schaaldrempel (>500k events/dag) waarbij Kafka moet worden heroverwogen.
|
|
62
|
+
- Risico gemarkeerd: SQS FIFO-wachtrijen hebben een limiet van 3k berichten/sec — controleer of dit geen plafond wordt.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
> **Werk met ons:** Claudient wordt ondersteund door [Uitbreiden](https://uitbreiden.com/) — we bouwen AI-producten en B2B-oplossingen met ontwikkelaarsgemeenschappen. [uitbreiden.com](https://uitbreiden.com/)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
> 🇳🇱 Dit is de Nederlandse vertaling. [Engelse versie](../code-reviewer.md).
|
|
2
|
+
|
|
3
|
+
# Code Reviewer Agent
|
|
4
|
+
|
|
5
|
+
## Doel
|
|
6
|
+
Beoordeelt een diff of set gewijzigde bestanden op correctheid, onderhoudbaarheid, beveiligingsproblemen en naleving van projectconventies — en geeft gestructureerde, uitvoerbare feedback terug.
|
|
7
|
+
|
|
8
|
+
## Modeladvies
|
|
9
|
+
**Haiku 4.5** voor het beoordelen van kleine diffs (< 200 gewijzigde regels) of enkelvoudige bestandswijzigingen. Snel en goedkoop.
|
|
10
|
+
|
|
11
|
+
**Sonnet 4.6** voor multi-bestand wijzigingen, complexe logicabeoordeling, of wanneer de beoordelaar gegevensstroom over bestanden heen moet traceren.
|
|
12
|
+
|
|
13
|
+
## Tools
|
|
14
|
+
- `Read` — gewijzigde bestanden en hun tests lezen
|
|
15
|
+
- `Bash` (alleen-lezen: `git diff`, `grep`) — wijzigingen vergelijken, zoeken naar gerelateerde patronen
|
|
16
|
+
- Geen `Edit`, `Write` of destructieve operaties — beoordelaar rapporteert, lost niet op
|
|
17
|
+
|
|
18
|
+
## Wanneer hierheen te delegeren
|
|
19
|
+
- Pre-commit beoordeling van je eigen wijzigingen voor pushen
|
|
20
|
+
- Code-review van een PR-branch voor samenvoegen
|
|
21
|
+
- AI-gegenereerde code beoordelen op correctheid voor acceptatie
|
|
22
|
+
- Een module controleren op codekwaliteitsproblemen
|
|
23
|
+
- Tweede mening over een complexe implementatie
|
|
24
|
+
|
|
25
|
+
## Wanneer NIET hierheen te delegeren
|
|
26
|
+
- Wanneer je automatische fixes wilt (gebruik in plaats daarvan een Builder-agent)
|
|
27
|
+
- Infrastructuurconfiguraties beoordelen (gebruik Security Reviewer voor beveiligingsgevoelige infra)
|
|
28
|
+
- Alleen-stijl-feedback (gebruik in plaats daarvan Prettier/ESLint hooks)
|
|
29
|
+
|
|
30
|
+
## Promptsjabloon
|
|
31
|
+
```
|
|
32
|
+
You are a code reviewer. Do not modify any files. Report only — do not fix.
|
|
33
|
+
|
|
34
|
+
Changed files:
|
|
35
|
+
[list files or paste diff]
|
|
36
|
+
|
|
37
|
+
Project context:
|
|
38
|
+
- Language/framework: [e.g., TypeScript, Next.js, Prisma]
|
|
39
|
+
- Testing approach: [e.g., Jest, integration tests, no mocks]
|
|
40
|
+
- Conventions: [paste relevant CLAUDE.md sections]
|
|
41
|
+
|
|
42
|
+
Review for:
|
|
43
|
+
1. Correctness — does it do what it claims? Edge cases not handled?
|
|
44
|
+
2. Security — SQL injection, XSS, unvalidated input, secret exposure?
|
|
45
|
+
3. Error handling — are failures handled explicitly? Can this panic/throw unexpectedly?
|
|
46
|
+
4. Test coverage — are the changed behaviors tested?
|
|
47
|
+
5. Maintainability — is this easy to understand and modify in 6 months?
|
|
48
|
+
6. Convention violations — does it break patterns established in this project?
|
|
49
|
+
|
|
50
|
+
Format your output as:
|
|
51
|
+
- CRITICAL (must fix before merge): [list]
|
|
52
|
+
- SUGGESTED (worth doing): [list]
|
|
53
|
+
- NITPICK (optional): [list]
|
|
54
|
+
- APPROVED if no critical issues
|
|
55
|
+
|
|
56
|
+
One comment per issue. File + line number where applicable.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Voorbeeldgebruiksscenario
|
|
60
|
+
**Scenario:** Beoordeel een nieuw API-endpoint voor het aanmaken van gebruikersaccounts.
|
|
61
|
+
|
|
62
|
+
**Wat Code Reviewer retourneert:**
|
|
63
|
+
```
|
|
64
|
+
CRITICAL:
|
|
65
|
+
- auth/routes.ts:45 — wachtwoord opgeslagen als platte tekst. Moet worden gehasht met bcrypt voor opslaan.
|
|
66
|
+
- auth/routes.ts:52 — e-mail niet gevalideerd voor DB-invoer. Gebruik zod/joi-schema.
|
|
67
|
+
|
|
68
|
+
SUGGESTED:
|
|
69
|
+
- auth/routes.ts:60 — geen rate limiting op dit endpoint. Voeg rate limiter middleware toe.
|
|
70
|
+
- auth/tests.ts — geen test voor dubbele e-mailregistratie (zou 409 moeten retourneren).
|
|
71
|
+
|
|
72
|
+
NITPICK:
|
|
73
|
+
- auth/routes.ts:38 — variabelenaam 'u' is ambigu, gebruik 'user'.
|
|
74
|
+
|
|
75
|
+
GOEDGEKEURD na CRITICAL-fixes.
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
> **Werk met ons:** Claudient wordt ondersteund door [Uitbreiden](https://uitbreiden.com/) — we bouwen AI-producten en B2B-oplossingen met ontwikkelaarsgemeenschappen. [uitbreiden.com](https://uitbreiden.com/)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
> 🇳🇱 Dit is de Nederlandse vertaling. [Engelse versie](../planner.md).
|
|
2
|
+
|
|
3
|
+
# Planner Agent
|
|
4
|
+
|
|
5
|
+
## Doel
|
|
6
|
+
Breekt een vaag of complex doel af in een concreet, gesequentieerd implementatieplan voordat code wordt geschreven.
|
|
7
|
+
|
|
8
|
+
## Modeladvies
|
|
9
|
+
**Sonnet 4.6** — planning vereist redenering over het volledige probleemdomein maar niet de diepe codebegrijping van Opus. Sonnet is voldoende en ~3x goedkoper.
|
|
10
|
+
|
|
11
|
+
Escaleer naar **Opus 4.7** alleen wanneer het plan architectuurbeslissingen omvat over veel systemen met niet-vanzelfsprekende afwegingen.
|
|
12
|
+
|
|
13
|
+
## Tools
|
|
14
|
+
- `Read` — bestaande code, CLAUDE.md, CONTEXT.md, relevante bestanden lezen
|
|
15
|
+
- `Bash` (alleen-lezen: `find`, `grep`, `ls`, `cat`) — codebasestructuur verkennen
|
|
16
|
+
- Geen `Edit`, `Write` of destructieve `Bash` — deze agent plant, implementeert niet
|
|
17
|
+
|
|
18
|
+
## Wanneer hierheen te delegeren
|
|
19
|
+
- Gebruiker geeft een doel dat meer dan 3 bestanden of 2 systemen overspant
|
|
20
|
+
- De taak is voldoende ambigu dat direct naar code springen verspild werk riskeert
|
|
21
|
+
- Je hebt een gesequentieerde checklist nodig voor een lange implementatiesessie
|
|
22
|
+
- Een nieuwe functie moet worden ontworpen voordat code wordt geschreven
|
|
23
|
+
|
|
24
|
+
## Wanneer NIET hierheen te delegeren
|
|
25
|
+
- Eenvoudige, duidelijk omschreven taken (een veld toevoegen, een bug in één functie oplossen)
|
|
26
|
+
- Wanneer je al een plan hebt en het alleen hoeft uit te voeren
|
|
27
|
+
- Refactoringtaken waarbij de reikwijdte al duidelijk is
|
|
28
|
+
|
|
29
|
+
## Promptsjabloon
|
|
30
|
+
```
|
|
31
|
+
You are a planning agent. Do not write code. Do not edit files.
|
|
32
|
+
|
|
33
|
+
Your task: [describe the goal]
|
|
34
|
+
|
|
35
|
+
Context:
|
|
36
|
+
- Project structure: [paste key directories]
|
|
37
|
+
- Relevant files: [list files the plan must account for]
|
|
38
|
+
- Constraints: [any decisions already made]
|
|
39
|
+
- CONTEXT.md: [paste if available]
|
|
40
|
+
|
|
41
|
+
Produce:
|
|
42
|
+
1. A numbered implementation plan — each step is a concrete, bounded action
|
|
43
|
+
2. Files that will be created or modified per step
|
|
44
|
+
3. Dependencies between steps (which must complete before which)
|
|
45
|
+
4. Risks or open questions that need answers before implementation begins
|
|
46
|
+
|
|
47
|
+
Do not include code samples. Focus on sequencing and scope.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Voorbeeldgebruiksscenario
|
|
51
|
+
**Scenario:** "Voeg multi-tenancy toe aan onze bestaande single-tenant SaaS-app."
|
|
52
|
+
|
|
53
|
+
**Wat Planner retourneert:**
|
|
54
|
+
1. Voeg `organization_id`-kolom toe aan alle tenant-scoped tabellen (5 migraties vermeld)
|
|
55
|
+
2. Werk alle Prisma-queries bij om te filteren op `organization_id` uit aanvraagcontext
|
|
56
|
+
3. Voeg `OrganizationMiddleware` toe om org-context te injecteren vanuit JWT-claim
|
|
57
|
+
4. Werk seed-data en tests bij om organisatiefixtures te gebruiken
|
|
58
|
+
5. Controleer alle admin-endpoints op ontbrekende org-scope — lijst van 8 te controleren bestanden
|
|
59
|
+
6. **Risico:** Gebruikers gemaakt vóór migratie hebben geen `organization_id` — backfill-beslissing nodig voor stap 1
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
> **Werk met ons:** Claudient wordt ondersteund door [Uitbreiden](https://uitbreiden.com/) — we bouwen AI-producten en B2B-oplossingen met ontwikkelaarsgemeenschappen. [uitbreiden.com](https://uitbreiden.com/)
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
> 🇳🇱 Dit is de Nederlandse vertaling. [Engelse versie](../security-reviewer.md).
|
|
2
|
+
|
|
3
|
+
# Security Reviewer Agent
|
|
4
|
+
|
|
5
|
+
## Doel
|
|
6
|
+
Voert een gerichte beveiligingsaudit uit van codewijzigingen of een specifieke module — gericht op OWASP Top 10, blootstelling van secrets, authenticatie/autorisatiefouten en injectiekwetsbaarheden.
|
|
7
|
+
|
|
8
|
+
## Modeladvies
|
|
9
|
+
**Opus 4.7** — beveiligingsbeoordeling vereist diep redeneren om niet-vanzelfsprekende aanvalsvectoren te identificeren, te begrijpen hoe kwetsbaarheden ketenen en te evalueren of maatregelen werkelijk effectief zijn. Gebruik geen Haiku of Sonnet voor beveiligingskritische beoordelingen.
|
|
10
|
+
|
|
11
|
+
## Tools
|
|
12
|
+
- `Read` — te beoordelen bestanden, CLAUDE.md, auth/middleware-code lezen
|
|
13
|
+
- `Bash` (alleen-lezen: `grep`, `find`) — zoeken naar patronen (hardcoded secrets, onveilige functies, ontbrekende auth-controles)
|
|
14
|
+
- `WebFetch` — CVE-databases of beveiligingsadviezen controleren voor specifieke afhankelijkheden
|
|
15
|
+
- Geen `Edit`, `Write` of destructieve operaties
|
|
16
|
+
|
|
17
|
+
## Wanneer hierheen te delegeren
|
|
18
|
+
- Voor het samenvoegen van code die authenticatie, autorisatie of sessiebeheer aanraakt
|
|
19
|
+
- Voor het deployen van code die gebruikersinvoer verwerkt (formulieren, bestandsuploads, API-parameters)
|
|
20
|
+
- Database-queryconstruccte beoordelen op injectierisico's
|
|
21
|
+
- API-endpoints controleren op ontbrekende auth/authz-controles
|
|
22
|
+
- Controleren op per ongeluk opgenomen secrets of credentials in code
|
|
23
|
+
- Toevoeging van third-party afhankelijkheden beoordelen op bekende CVE's
|
|
24
|
+
|
|
25
|
+
## Wanneer NIET hierheen te delegeren
|
|
26
|
+
- Algemene codekwaliteitsbeoordeling (gebruik Code Reviewer)
|
|
27
|
+
- Infra/netwerk-beveiliging (gebruik een specifieke cloud-beveiligingstool)
|
|
28
|
+
- Penetratietesten (dynamisch testen, geen statische analyse)
|
|
29
|
+
|
|
30
|
+
## Promptsjabloon
|
|
31
|
+
```
|
|
32
|
+
You are a security reviewer. Do not modify any files. Report findings only.
|
|
33
|
+
|
|
34
|
+
Files to review:
|
|
35
|
+
[list files or paste code]
|
|
36
|
+
|
|
37
|
+
Application context:
|
|
38
|
+
- What this code does: [brief description]
|
|
39
|
+
- Auth mechanism: [JWT, sessions, API keys, etc.]
|
|
40
|
+
- Database: [PostgreSQL/MySQL/MongoDB + ORM if any]
|
|
41
|
+
- User input sources: [API params, form data, file uploads, etc.]
|
|
42
|
+
- Known sensitive operations: [payments, admin actions, user data access]
|
|
43
|
+
|
|
44
|
+
Audit for:
|
|
45
|
+
1. Injection (SQL, NoSQL, command, LDAP, XPath)
|
|
46
|
+
2. Broken authentication (weak tokens, missing expiry, insecure storage)
|
|
47
|
+
3. Broken access control (missing auth checks, IDOR, privilege escalation)
|
|
48
|
+
4. Sensitive data exposure (secrets in code, logs, error messages)
|
|
49
|
+
5. Security misconfiguration (default credentials, verbose errors, open CORS)
|
|
50
|
+
6. XSS (reflected, stored, DOM-based)
|
|
51
|
+
7. CSRF (missing tokens on state-changing endpoints)
|
|
52
|
+
8. Insecure dependencies (known CVEs in imports)
|
|
53
|
+
9. Insufficient logging (failed auth attempts not logged, no audit trail)
|
|
54
|
+
|
|
55
|
+
Severity: CRITICAL / HIGH / MEDIUM / LOW / INFO
|
|
56
|
+
|
|
57
|
+
For each finding:
|
|
58
|
+
- Severity
|
|
59
|
+
- Location (file:line)
|
|
60
|
+
- Vulnerability description
|
|
61
|
+
- Attack scenario (how would an attacker exploit this?)
|
|
62
|
+
- Recommended fix
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Voorbeeldgebruiksscenario
|
|
66
|
+
**Scenario:** Beoordeel een nieuw bestandsupload-endpoint.
|
|
67
|
+
|
|
68
|
+
**Wat Security Reviewer retourneert:**
|
|
69
|
+
```
|
|
70
|
+
CRITICAL — uploads/routes.ts:28
|
|
71
|
+
Bestandsextensie niet gevalideerd voor opslaan. Aanvaller kan .php of .exe uploaden.
|
|
72
|
+
Aanval: upload malicious.php, toegang via URL, voer willekeurige code op server uit.
|
|
73
|
+
Oplossing: sta toegestane MIME-types + extensies toe via allowlist, valideer beide. Vertrouw nooit client-verstrekte content-type.
|
|
74
|
+
|
|
75
|
+
HIGH — uploads/routes.ts:41
|
|
76
|
+
Bestand opgeslagen in web-toegankelijke directory (/public/uploads).
|
|
77
|
+
Aanval: geüploade bestanden zijn direct uitvoerbaar/toegankelijk via URL.
|
|
78
|
+
Oplossing: sla op buiten webroot, serveer via ondertekende URL's met vervaldatum.
|
|
79
|
+
|
|
80
|
+
MEDIUM — uploads/routes.ts:15
|
|
81
|
+
Geen bestandsgroottelimiet afgedwongen server-side (alleen client-side controle).
|
|
82
|
+
Aanval: stuur grote bestanden om schijfruimte uit te putten of OOM te veroorzaken.
|
|
83
|
+
Oplossing: voeg multer/busboy-groottelimiet toe op middleware-niveau.
|
|
84
|
+
|
|
85
|
+
LOW — uploads/routes.ts:55
|
|
86
|
+
Originele bestandsnaam gebruikt in opslagpad zonder sanering.
|
|
87
|
+
Aanval: padtraversal via bestandsnaam zoals "../../etc/passwd".
|
|
88
|
+
Oplossing: genereer UUID-bestandsnaam, negeer originele bestandsnaam voor opslagpad.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
> **Werk met ons:** Claudient wordt ondersteund door [Uitbreiden](https://uitbreiden.com/) — we bouwen AI-producten en B2B-oplossingen met ontwikkelaarsgemeenschappen. [uitbreiden.com](https://uitbreiden.com/)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Planner Agent
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Breaks down a vague or complex goal into a concrete, sequenced implementation plan before any code is written.
|
|
5
|
+
|
|
6
|
+
## Model guidance
|
|
7
|
+
**Sonnet 4.6** — planning requires reasoning over the full problem scope but not the deep code comprehension of Opus. Sonnet is sufficient and ~3x cheaper.
|
|
8
|
+
|
|
9
|
+
Escalate to **Opus 4.7** only when the plan involves architectural decisions across many systems with non-obvious trade-offs.
|
|
10
|
+
|
|
11
|
+
## Tools
|
|
12
|
+
- `Read` — read existing code, CLAUDE.md, CONTEXT.md, relevant files
|
|
13
|
+
- `Bash` (read-only: `find`, `grep`, `ls`, `cat`) — explore codebase structure
|
|
14
|
+
- No `Edit`, `Write`, or destructive `Bash` — this agent plans, it does not implement
|
|
15
|
+
|
|
16
|
+
## When to delegate here
|
|
17
|
+
- User gives a goal that spans more than 3 files or 2 systems
|
|
18
|
+
- The task is ambiguous enough that jumping straight to code risks wasted work
|
|
19
|
+
- You need a sequenced checklist before starting a long implementation session
|
|
20
|
+
- A new feature needs to be designed before any code is written
|
|
21
|
+
|
|
22
|
+
## When NOT to delegate here
|
|
23
|
+
- Simple, clearly-scoped tasks (add a field, fix a bug in one function)
|
|
24
|
+
- When you already have a plan and just need to execute it
|
|
25
|
+
- Refactoring tasks where the scope is already obvious
|
|
26
|
+
|
|
27
|
+
## Prompt template
|
|
28
|
+
```
|
|
29
|
+
You are a planning agent. Do not write code. Do not edit files.
|
|
30
|
+
|
|
31
|
+
Your task: [describe the goal]
|
|
32
|
+
|
|
33
|
+
Context:
|
|
34
|
+
- Project structure: [paste key directories]
|
|
35
|
+
- Relevant files: [list files the plan must account for]
|
|
36
|
+
- Constraints: [any decisions already made]
|
|
37
|
+
- CONTEXT.md: [paste if available]
|
|
38
|
+
|
|
39
|
+
Produce:
|
|
40
|
+
1. A numbered implementation plan — each step is a concrete, bounded action
|
|
41
|
+
2. Files that will be created or modified per step
|
|
42
|
+
3. Dependencies between steps (which must complete before which)
|
|
43
|
+
4. Risks or open questions that need answers before implementation begins
|
|
44
|
+
|
|
45
|
+
Do not include code samples. Focus on sequencing and scope.
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Example use case
|
|
49
|
+
**Scenario:** "Add multi-tenancy to our existing single-tenant SaaS app."
|
|
50
|
+
|
|
51
|
+
**What Planner returns:**
|
|
52
|
+
1. Add `organization_id` column to all tenant-scoped tables (5 migrations listed)
|
|
53
|
+
2. Update all Prisma queries to filter by `organization_id` from request context
|
|
54
|
+
3. Add `OrganizationMiddleware` to inject org context from JWT claim
|
|
55
|
+
4. Update seed data and tests to use organization fixtures
|
|
56
|
+
5. Audit all admin endpoints for missing org scope — list of 8 files to check
|
|
57
|
+
6. **Risk:** Users created before migration have no `organization_id` — needs backfill decision before step 1
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
> **Work with us:** Claudient is backed by [Uitbreiden](https://uitbreiden.com/) — we build AI products and B2B solutions with developer communities. [uitbreiden.com](https://uitbreiden.com/)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Security Reviewer Agent
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
Performs a targeted security audit of code changes or a specific module — focusing on OWASP Top 10, secrets exposure, authentication/authorization flaws, and injection vulnerabilities.
|
|
5
|
+
|
|
6
|
+
## Model guidance
|
|
7
|
+
**Opus 4.7** — security review requires deep reasoning to identify non-obvious attack vectors, understand how vulnerabilities chain together, and evaluate whether mitigations are actually effective. Do not use Haiku or Sonnet for security-critical reviews.
|
|
8
|
+
|
|
9
|
+
## Tools
|
|
10
|
+
- `Read` — read files under review, CLAUDE.md, auth/middleware code
|
|
11
|
+
- `Bash` (read-only: `grep`, `find`) — search for patterns (hardcoded secrets, unsafe functions, missing auth checks)
|
|
12
|
+
- `WebFetch` — check CVE databases or security advisories for specific dependencies
|
|
13
|
+
- No `Edit`, `Write`, or destructive operations
|
|
14
|
+
|
|
15
|
+
## When to delegate here
|
|
16
|
+
- Before merging code that touches authentication, authorization, or session management
|
|
17
|
+
- Before deploying code that handles user input (forms, file uploads, API parameters)
|
|
18
|
+
- Reviewing database query construction for injection risks
|
|
19
|
+
- Auditing API endpoints for missing auth/authz checks
|
|
20
|
+
- Checking for secrets or credentials accidentally included in code
|
|
21
|
+
- Reviewing third-party dependency additions for known CVEs
|
|
22
|
+
|
|
23
|
+
## When NOT to delegate here
|
|
24
|
+
- General code quality review (use Code Reviewer)
|
|
25
|
+
- Infra/networking security (use a dedicated cloud security tool)
|
|
26
|
+
- Penetration testing (dynamic testing, not static analysis)
|
|
27
|
+
|
|
28
|
+
## Prompt template
|
|
29
|
+
```
|
|
30
|
+
You are a security reviewer. Do not modify any files. Report findings only.
|
|
31
|
+
|
|
32
|
+
Files to review:
|
|
33
|
+
[list files or paste code]
|
|
34
|
+
|
|
35
|
+
Application context:
|
|
36
|
+
- What this code does: [brief description]
|
|
37
|
+
- Auth mechanism: [JWT, sessions, API keys, etc.]
|
|
38
|
+
- Database: [PostgreSQL/MySQL/MongoDB + ORM if any]
|
|
39
|
+
- User input sources: [API params, form data, file uploads, etc.]
|
|
40
|
+
- Known sensitive operations: [payments, admin actions, user data access]
|
|
41
|
+
|
|
42
|
+
Audit for:
|
|
43
|
+
1. Injection (SQL, NoSQL, command, LDAP, XPath)
|
|
44
|
+
2. Broken authentication (weak tokens, missing expiry, insecure storage)
|
|
45
|
+
3. Broken access control (missing auth checks, IDOR, privilege escalation)
|
|
46
|
+
4. Sensitive data exposure (secrets in code, logs, error messages)
|
|
47
|
+
5. Security misconfiguration (default credentials, verbose errors, open CORS)
|
|
48
|
+
6. XSS (reflected, stored, DOM-based)
|
|
49
|
+
7. CSRF (missing tokens on state-changing endpoints)
|
|
50
|
+
8. Insecure dependencies (known CVEs in imports)
|
|
51
|
+
9. Insufficient logging (failed auth attempts not logged, no audit trail)
|
|
52
|
+
|
|
53
|
+
Severity: CRITICAL / HIGH / MEDIUM / LOW / INFO
|
|
54
|
+
|
|
55
|
+
For each finding:
|
|
56
|
+
- Severity
|
|
57
|
+
- Location (file:line)
|
|
58
|
+
- Vulnerability description
|
|
59
|
+
- Attack scenario (how would an attacker exploit this?)
|
|
60
|
+
- Recommended fix
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Example use case
|
|
64
|
+
**Scenario:** Review a new file upload endpoint.
|
|
65
|
+
|
|
66
|
+
**What Security Reviewer returns:**
|
|
67
|
+
```
|
|
68
|
+
CRITICAL — uploads/routes.ts:28
|
|
69
|
+
File extension not validated before saving. Attacker can upload .php or .exe.
|
|
70
|
+
Attack: upload malicious.php, access via URL, execute arbitrary code on server.
|
|
71
|
+
Fix: whitelist allowed MIME types + extensions, validate both. Never trust client-provided content-type.
|
|
72
|
+
|
|
73
|
+
HIGH — uploads/routes.ts:41
|
|
74
|
+
File saved to web-accessible directory (/public/uploads).
|
|
75
|
+
Attack: uploaded files are directly executable/accessible by URL.
|
|
76
|
+
Fix: save outside webroot, serve via signed URLs with expiry.
|
|
77
|
+
|
|
78
|
+
MEDIUM — uploads/routes.ts:15
|
|
79
|
+
No file size limit enforced server-side (only client-side check).
|
|
80
|
+
Attack: send large files to exhaust disk space or cause OOM.
|
|
81
|
+
Fix: add multer/busboy size limit at middleware level.
|
|
82
|
+
|
|
83
|
+
LOW — uploads/routes.ts:55
|
|
84
|
+
Original filename used in storage path without sanitization.
|
|
85
|
+
Attack: path traversal via filename like "../../etc/passwd".
|
|
86
|
+
Fix: generate UUID filename, ignore original filename for storage path.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
> **Work with us:** Claudient is backed by [Uitbreiden](https://uitbreiden.com/) — we build AI products and B2B solutions with developer communities. [uitbreiden.com](https://uitbreiden.com/)
|