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,71 @@
|
|
|
1
|
+
> 🇩🇪 Dies ist die deutsche Übersetzung. [Englische Version](../saas-backend.md).
|
|
2
|
+
|
|
3
|
+
# CLAUDE.md Starter — SaaS Backend
|
|
4
|
+
|
|
5
|
+
Dies in die `CLAUDE.md` des Projekts einfügen und die Abschnitte in eckigen Klammern ausfüllen.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# [Projektname] — Claude Code Anweisungen
|
|
11
|
+
|
|
12
|
+
## Was das ist
|
|
13
|
+
[Ein Absatz: was das Produkt tut, wer es verwendet, welches Problem es löst]
|
|
14
|
+
|
|
15
|
+
## Stack
|
|
16
|
+
- Sprache: [TypeScript / Python / Go]
|
|
17
|
+
- Framework: [Express / FastAPI / Gin / NestJS]
|
|
18
|
+
- Datenbank: [PostgreSQL via Prisma / raw pg / SQLAlchemy]
|
|
19
|
+
- Auth: [JWT mit 15-min Access Tokens + 7-Tage Refresh Tokens / Clerk / Auth0]
|
|
20
|
+
- Cache: [Redis]
|
|
21
|
+
- Queue: [BullMQ / SQS / Celery]
|
|
22
|
+
- Deployment: [AWS ECS / Fly.io / Railway]
|
|
23
|
+
|
|
24
|
+
## Projektstruktur
|
|
25
|
+
src/
|
|
26
|
+
├── api/ ← Route-Handler — dünn, delegieren an Services
|
|
27
|
+
├── services/ ← Business-Logik — keine HTTP-Belange
|
|
28
|
+
├── db/ ← Datenbankabfragen — keine Business-Logik
|
|
29
|
+
├── middleware/ ← Auth, Rate Limiting, Fehlerbehandlung
|
|
30
|
+
├── models/ ← Typdefinitionen und Schemas
|
|
31
|
+
└── utils/ ← Reine Funktionen, keine Nebeneffekte
|
|
32
|
+
|
|
33
|
+
## Konventionen
|
|
34
|
+
- Route-Handler sind dünn: Eingabe validieren, Service aufrufen, Antwort zurückgeben
|
|
35
|
+
- Services enthalten alle Business-Logik: sie kennen kein HTTP
|
|
36
|
+
- DB-Layer enthält nur Abfragen: keine Business-Logik, keine HTTP-Belange
|
|
37
|
+
- Alle Datenbankzugriffe gehen durch den db/-Layer — niemals ORM direkt aus Services aufrufen
|
|
38
|
+
- Fehler propagieren nach oben mit Kontext — niemals stillschweigend schlucken
|
|
39
|
+
- Alle API-Routes zurückgeben: 200 (Erfolg), 201 (erstellt), 204 (kein Inhalt), 400 (schlechte Eingabe), 401 (unauth), 403 (verboten), 404 (nicht gefunden), 409 (Konflikt), 422 (Validierung), 500 (unerwartet)
|
|
40
|
+
|
|
41
|
+
## Entscheidungen (nicht neu diskutieren)
|
|
42
|
+
- [Auth-Mechanismus entschieden: JWT, keine Sessions]
|
|
43
|
+
- [ORM-Wahl: Prisma — kein rohes SQL außer für komplexe Analytics-Abfragen]
|
|
44
|
+
- [Fehlerformat: { error: string, code: string } — Form niemals ändern]
|
|
45
|
+
- [Keine Barrel-Dateien — direkt aus der Quelle importieren]
|
|
46
|
+
|
|
47
|
+
## Tests
|
|
48
|
+
- Integrationstests treffen eine echte Test-Datenbank — keine DB-Mocks
|
|
49
|
+
- Unit-Tests für reine Business-Logik in services/
|
|
50
|
+
- Testdatei: [dateiname].test.ts neben der Quelldatei
|
|
51
|
+
- Ausführen: npm test
|
|
52
|
+
|
|
53
|
+
## Befehle
|
|
54
|
+
- npm run dev — Entwicklungsserver mit Hot Reload starten
|
|
55
|
+
- npm test — alle Tests ausführen
|
|
56
|
+
- npm run build — Produktions-Build
|
|
57
|
+
- npm run lint — ESLint + Prettier-Prüfung
|
|
58
|
+
- npm run db:migrate — ausstehende Migrationen ausführen
|
|
59
|
+
- npm run db:seed — Entwicklungsdaten seeden
|
|
60
|
+
|
|
61
|
+
## Niemals tun
|
|
62
|
+
- Niemals Business-Logik in Route-Handlern
|
|
63
|
+
- Niemals die Datenbank direkt aus Route-Handlern aufrufen
|
|
64
|
+
- Niemals rohe Datenbankfehler an Clients zurückgeben
|
|
65
|
+
- Niemals .env-Dateien committen
|
|
66
|
+
- Niemals `any`-Typ in TypeScript verwenden
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
> **Mit uns arbeiten:** Claudient wird von [Uitbreiden](https://uitbreiden.com/) unterstützt — wir bauen KI-Produkte und B2B-Lösungen mit Entwickler-Communities. [uitbreiden.com](https://uitbreiden.com/)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
> 🇪🇸 Esta es la traducción en español. [Versión en inglés](../ai-product.md).
|
|
2
|
+
|
|
3
|
+
# CLAUDE.md Starter — Producto de IA
|
|
4
|
+
|
|
5
|
+
Copia esto en el `CLAUDE.md` de tu proyecto y completa las secciones entre corchetes.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# [Nombre del Proyecto] — Instrucciones para Claude Code
|
|
11
|
+
|
|
12
|
+
## Qué es esto
|
|
13
|
+
[Un párrafo: qué hace el producto de IA, qué modelo usa, quiénes son los usuarios]
|
|
14
|
+
|
|
15
|
+
## Stack
|
|
16
|
+
- Lenguaje: [TypeScript / Python]
|
|
17
|
+
- Framework: [Next.js / FastAPI]
|
|
18
|
+
- IA: [Claude API via Anthropic SDK / OpenAI / Gemini]
|
|
19
|
+
- Modelo: [claude-sonnet-4-6 / claude-opus-4-7 / claude-haiku-4-5]
|
|
20
|
+
- Base de datos: [PostgreSQL / Supabase]
|
|
21
|
+
- BD Vectorial: [Pinecone / pgvector / Weaviate] (si aplica)
|
|
22
|
+
- Despliegue: [Vercel / AWS / Railway]
|
|
23
|
+
|
|
24
|
+
## Estructura del proyecto
|
|
25
|
+
src/
|
|
26
|
+
├── app/ ← Rutas del router de Next.js / FastAPI
|
|
27
|
+
├── ai/ ← Todo el código relacionado con IA: prompts, chains, herramientas
|
|
28
|
+
│ ├── prompts/ ← Prompts de sistema y plantillas de prompts
|
|
29
|
+
│ ├── tools/ ← Definiciones de herramientas para function calling
|
|
30
|
+
│ └── agents/ ← Definiciones de agentes y orquestación
|
|
31
|
+
├── db/ ← Consultas a la base de datos y migraciones
|
|
32
|
+
├── services/ ← Lógica de negocio
|
|
33
|
+
└── utils/ ← Utilidades puras
|
|
34
|
+
|
|
35
|
+
## Convenciones de IA
|
|
36
|
+
- Todos los prompts de sistema viven en src/ai/prompts/ — nunca inline en los route handlers
|
|
37
|
+
- Siempre fija la versión del modelo — nunca uses el alias "latest"
|
|
38
|
+
- Siempre habilita el caché de prompts en los prompts de sistema (cache_control: ephemeral)
|
|
39
|
+
- Registra el uso de tokens por solicitud para seguimiento de costos
|
|
40
|
+
- Respuestas con streaming: usa SSE para respuestas > 1000 tokens
|
|
41
|
+
- Nunca pases PII del usuario al modelo a menos que la funcionalidad lo requiera explícitamente
|
|
42
|
+
- Las definiciones de herramientas viven en src/ai/tools/ — un archivo por herramienta
|
|
43
|
+
|
|
44
|
+
## Configuración de caché de prompts
|
|
45
|
+
- Los prompts de sistema deben usar cache_control para habilitar el caché
|
|
46
|
+
- Lectura de caché = $0.30/MTok vs sin caché = $3/MTok — siempre cachea
|
|
47
|
+
- Invalida el caché cuando el prompt de sistema cambia (automático al cambiar el contenido)
|
|
48
|
+
|
|
49
|
+
## Controles de costo
|
|
50
|
+
- Modelo por defecto: [claude-haiku-4-5] para tareas simples, [claude-sonnet-4-6] para complejas
|
|
51
|
+
- Tokens máximos: establece max_tokens explícito en cada solicitud — nunca ilimitado
|
|
52
|
+
- Límite de tasa: [X] solicitudes por usuario por minuto
|
|
53
|
+
- Alerta de presupuesto: registra cuando una sesión individual supera $[X]
|
|
54
|
+
|
|
55
|
+
## Decisiones (no re-discutir)
|
|
56
|
+
- [Justificación de la selección del modelo]
|
|
57
|
+
- [Por qué streaming vs. no-streaming]
|
|
58
|
+
- [Estrategia de ventana de contexto: resumir en N tokens]
|
|
59
|
+
- [Tool calling vs. generación directa para salida estructurada]
|
|
60
|
+
|
|
61
|
+
## Testing
|
|
62
|
+
- Pruebas unitarias para construcción de prompts y parseo de salida
|
|
63
|
+
- Pruebas de integración con respuestas de API grabadas (VCR / fixtures)
|
|
64
|
+
- Nunca hagas llamadas reales a la API en pruebas — cuesta dinero y es lento
|
|
65
|
+
- Prueba entradas adversariales: inyección de prompts, intentos de jailbreak, casos límite
|
|
66
|
+
|
|
67
|
+
## Comandos
|
|
68
|
+
- [comando de desarrollo]
|
|
69
|
+
- [comando de pruebas]
|
|
70
|
+
- [comando de despliegue]
|
|
71
|
+
|
|
72
|
+
## Nunca hacer
|
|
73
|
+
- Nunca pongas prompts de sistema inline en los route handlers
|
|
74
|
+
- Nunca hagas llamadas de IA sin límite sin max_tokens
|
|
75
|
+
- Nunca registres respuestas completas de IA en producción (pueden contener PII del usuario)
|
|
76
|
+
- Nunca hardcodees claves de API — usa variables de entorno
|
|
77
|
+
- Nunca llames al modelo de IA directamente desde componentes de UI
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
> **Trabaja con nosotros:** Claudient está respaldado por [Uitbreiden](https://uitbreiden.com/) — construimos productos de IA y soluciones B2B con comunidades de desarrolladores. [uitbreiden.com](https://uitbreiden.com/)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
> 🇪🇸 Esta es la traducción en español. [Versión en inglés](../data-pipeline.md).
|
|
2
|
+
|
|
3
|
+
# CLAUDE.md Starter — Proyecto de Pipeline de Datos
|
|
4
|
+
|
|
5
|
+
Copia esto en el `CLAUDE.md` de tu proyecto y completa las secciones entre corchetes.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# [Nombre del Proyecto] — Instrucciones para Claude Code
|
|
11
|
+
|
|
12
|
+
## Qué es esto
|
|
13
|
+
[Un párrafo: qué datos procesa este pipeline, sistemas fuente, destino, propósito de negocio]
|
|
14
|
+
|
|
15
|
+
## Stack
|
|
16
|
+
- Orquestador: [Airflow / Prefect / Dagster / dbt Cloud]
|
|
17
|
+
- Transformación: [dbt / PySpark / Pandas / Polars]
|
|
18
|
+
- Warehouse: [BigQuery / Snowflake / Redshift / DuckDB]
|
|
19
|
+
- Ingesta: [Fivetran / Airbyte / personalizado]
|
|
20
|
+
- Lenguaje: [Python / SQL]
|
|
21
|
+
- Infraestructura: [Terraform en AWS / GCP / Azure]
|
|
22
|
+
|
|
23
|
+
## Estructura del proyecto
|
|
24
|
+
dbt/ (si se usa dbt)
|
|
25
|
+
├── models/
|
|
26
|
+
│ ├── staging/ ← 1:1 con tablas fuente, solo limpieza ligera
|
|
27
|
+
│ ├── intermediate/ ← Lógica de negocio, joins
|
|
28
|
+
│ └── marts/ ← Entidades de negocio finales (prefijos fct_, dim_)
|
|
29
|
+
├── macros/ ← Macros SQL reutilizables
|
|
30
|
+
├── seeds/ ← Datos de referencia estáticos
|
|
31
|
+
└── tests/ ← Tests singulares personalizados
|
|
32
|
+
|
|
33
|
+
pipelines/ (si se usa Airflow/Prefect/Dagster)
|
|
34
|
+
├── dags/ / flows/ ← Definiciones de pipelines
|
|
35
|
+
├── operators/ ← Operadores/tareas personalizados
|
|
36
|
+
└── utils/ ← Utilidades compartidas
|
|
37
|
+
|
|
38
|
+
## Convenciones de datos
|
|
39
|
+
- Modelos de staging: renombrar a snake_case, castear tipos, sin joins, sin lógica de negocio
|
|
40
|
+
- Tablas de hechos: prefijo fct_, una fila por evento/transacción
|
|
41
|
+
- Tablas de dimensiones: prefijo dim_, una fila por entidad
|
|
42
|
+
- Nunca uses SELECT * en consultas de producción
|
|
43
|
+
- Todos los modelos mart deben tener tests unique + not_null en la clave primaria
|
|
44
|
+
- Se requieren verificaciones de frescura de fuente en todas las fuentes
|
|
45
|
+
|
|
46
|
+
## Decisiones (no re-discutir)
|
|
47
|
+
- [Estrategia incremental vs. full-refresh para tablas de hechos]
|
|
48
|
+
- [Zona horaria: todos los timestamps en UTC]
|
|
49
|
+
- [Granularidad: qué representa una fila en cada tabla mart]
|
|
50
|
+
- [Estrategia de manejo de datos tardíos]
|
|
51
|
+
|
|
52
|
+
## Requisitos de testing
|
|
53
|
+
- Cada modelo de staging: not_null en la clave primaria
|
|
54
|
+
- Cada modelo mart: unique + not_null en la clave primaria, relationships en claves foráneas
|
|
55
|
+
- Frescura de fuente: advertir a las [X] horas, error a las [Y] horas
|
|
56
|
+
|
|
57
|
+
## Reglas de rendimiento
|
|
58
|
+
- Particiona las tablas grandes por fecha — siempre filtra en la columna de partición
|
|
59
|
+
- Usa modelos incrementales para tablas > [X] filas
|
|
60
|
+
- Nunca ejecutes full refreshes en producción sin aprobación
|
|
61
|
+
- Claves de cluster/sort: [especificar si se usa Snowflake/Redshift]
|
|
62
|
+
|
|
63
|
+
## Comandos
|
|
64
|
+
- dbt run --select staging — ejecutar la capa de staging
|
|
65
|
+
- dbt test — ejecutar todas las pruebas
|
|
66
|
+
- dbt docs generate && dbt docs serve — previsualizar documentación
|
|
67
|
+
- dbt source freshness — verificar la frescura de los datos fuente
|
|
68
|
+
|
|
69
|
+
## Nunca hacer
|
|
70
|
+
- Nunca pongas lógica de negocio en los modelos de staging
|
|
71
|
+
- Nunca hardcodees fechas — usa variables dbt o macros
|
|
72
|
+
- Nunca hagas commit de credenciales reales — usa variables de entorno o gestor de secretos
|
|
73
|
+
- Nunca ejecutes dbt run en producción sin que dbt test pase primero
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
> **Trabaja con nosotros:** Claudient está respaldado por [Uitbreiden](https://uitbreiden.com/) — construimos productos de IA y soluciones B2B con comunidades de desarrolladores. [uitbreiden.com](https://uitbreiden.com/)
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
> 🇪🇸 Esta es la traducción en español. [Versión en inglés](../saas-backend.md).
|
|
2
|
+
|
|
3
|
+
# CLAUDE.md Starter — Backend SaaS
|
|
4
|
+
|
|
5
|
+
Copia esto en el `CLAUDE.md` de tu proyecto y completa las secciones entre corchetes.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# [Nombre del Proyecto] — Instrucciones para Claude Code
|
|
11
|
+
|
|
12
|
+
## Qué es esto
|
|
13
|
+
[Un párrafo: qué hace el producto, quién lo usa, qué problema resuelve]
|
|
14
|
+
|
|
15
|
+
## Stack
|
|
16
|
+
- Lenguaje: [TypeScript / Python / Go]
|
|
17
|
+
- Framework: [Express / FastAPI / Gin / NestJS]
|
|
18
|
+
- Base de datos: [PostgreSQL via Prisma / raw pg / SQLAlchemy]
|
|
19
|
+
- Autenticación: [JWT con tokens de acceso de 15 min + tokens de refresco de 7 días / Clerk / Auth0]
|
|
20
|
+
- Caché: [Redis]
|
|
21
|
+
- Cola: [BullMQ / SQS / Celery]
|
|
22
|
+
- Despliegue: [AWS ECS / Fly.io / Railway]
|
|
23
|
+
|
|
24
|
+
## Estructura del proyecto
|
|
25
|
+
src/
|
|
26
|
+
├── api/ ← Manejadores de rutas — ligeros, delegan a servicios
|
|
27
|
+
├── services/ ← Lógica de negocio — sin preocupaciones HTTP
|
|
28
|
+
├── db/ ← Consultas a la base de datos — sin lógica de negocio
|
|
29
|
+
├── middleware/ ← Autenticación, limitación de tasa, manejo de errores
|
|
30
|
+
├── models/ ← Definiciones de tipos y esquemas
|
|
31
|
+
└── utils/ ← Funciones puras, sin efectos secundarios
|
|
32
|
+
|
|
33
|
+
## Convenciones
|
|
34
|
+
- Los manejadores de rutas son ligeros: valida la entrada, llama al servicio, devuelve respuesta
|
|
35
|
+
- Los servicios contienen toda la lógica de negocio: no conocen HTTP
|
|
36
|
+
- La capa de BD contiene solo consultas: sin lógica de negocio, sin preocupaciones HTTP
|
|
37
|
+
- Todo el acceso a la base de datos pasa por la capa db/ — nunca llames al ORM directamente desde los servicios
|
|
38
|
+
- Los errores se propagan hacia arriba con contexto — nunca los ignores silenciosamente
|
|
39
|
+
- Todas las rutas de API devuelven: 200 (éxito), 201 (creado), 204 (sin contenido), 400 (entrada inválida), 401 (no autenticado), 403 (prohibido), 404 (no encontrado), 409 (conflicto), 422 (validación), 500 (inesperado)
|
|
40
|
+
|
|
41
|
+
## Decisiones (no re-discutir)
|
|
42
|
+
- [Mecanismo de autenticación decidido: JWT, sin sesiones]
|
|
43
|
+
- [Elección de ORM: Prisma — sin SQL crudo excepto para consultas de analítica complejas]
|
|
44
|
+
- [Formato de error: { error: string, code: string } — nunca cambiar la forma]
|
|
45
|
+
- [Sin archivos barrel — importa directamente desde el código fuente]
|
|
46
|
+
|
|
47
|
+
## Testing
|
|
48
|
+
- Las pruebas de integración usan una base de datos de prueba real — sin mocks de BD
|
|
49
|
+
- Pruebas unitarias para lógica de negocio pura en services/
|
|
50
|
+
- Archivo de prueba: [filename].test.ts junto al archivo fuente
|
|
51
|
+
- Ejecutar: npm test
|
|
52
|
+
|
|
53
|
+
## Comandos
|
|
54
|
+
- npm run dev — iniciar servidor de desarrollo con hot reload
|
|
55
|
+
- npm test — ejecutar todas las pruebas
|
|
56
|
+
- npm run build — build de producción
|
|
57
|
+
- npm run lint — verificación de ESLint + Prettier
|
|
58
|
+
- npm run db:migrate — ejecutar migraciones pendientes
|
|
59
|
+
- npm run db:seed — sembrar datos de desarrollo
|
|
60
|
+
|
|
61
|
+
## Nunca hacer
|
|
62
|
+
- Nunca pongas lógica de negocio en los manejadores de rutas
|
|
63
|
+
- Nunca llames a la base de datos directamente desde los manejadores de rutas
|
|
64
|
+
- Nunca devuelvas errores brutos de la base de datos a los clientes
|
|
65
|
+
- Nunca hagas commit de archivos .env
|
|
66
|
+
- Nunca uses el tipo `any` en TypeScript
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
> **Trabaja con nosotros:** Claudient está respaldado por [Uitbreiden](https://uitbreiden.com/) — construimos productos de IA y soluciones B2B con comunidades de desarrolladores. [uitbreiden.com](https://uitbreiden.com/)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
> 🇫🇷 This is the French translation. [English version](../ai-product.md).
|
|
2
|
+
|
|
3
|
+
# Starter CLAUDE.md — Produit IA
|
|
4
|
+
|
|
5
|
+
Déposez ceci dans le `CLAUDE.md` de votre projet et remplissez les sections entre crochets.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# [Nom du Projet] — Instructions Claude Code
|
|
11
|
+
|
|
12
|
+
## Ce que c'est
|
|
13
|
+
[Un paragraphe : ce que fait le produit IA, quel modèle il utilise, qui sont les utilisateurs]
|
|
14
|
+
|
|
15
|
+
## Stack
|
|
16
|
+
- Langage : [TypeScript / Python]
|
|
17
|
+
- Framework : [Next.js / FastAPI]
|
|
18
|
+
- IA : [API Claude via Anthropic SDK / OpenAI / Gemini]
|
|
19
|
+
- Modèle : [claude-sonnet-4-6 / claude-opus-4-7 / claude-haiku-4-5]
|
|
20
|
+
- Base de données : [PostgreSQL / Supabase]
|
|
21
|
+
- Vector DB : [Pinecone / pgvector / Weaviate] (si applicable)
|
|
22
|
+
- Déploiement : [Vercel / AWS / Railway]
|
|
23
|
+
|
|
24
|
+
## Structure du projet
|
|
25
|
+
src/
|
|
26
|
+
├── app/ ← App router Next.js / routes FastAPI
|
|
27
|
+
├── ai/ ← Tout le code lié à l'IA : prompts, chains, outils
|
|
28
|
+
│ ├── prompts/ ← System prompts et templates de prompts
|
|
29
|
+
│ ├── tools/ ← Définitions d'outils pour le function calling
|
|
30
|
+
│ └── agents/ ← Définitions d'agents et orchestration
|
|
31
|
+
├── db/ ← Requêtes de base de données et migrations
|
|
32
|
+
├── services/ ← Logique métier
|
|
33
|
+
└── utils/ ← Utilitaires purs
|
|
34
|
+
|
|
35
|
+
## Conventions IA
|
|
36
|
+
- Tous les system prompts vivent dans src/ai/prompts/ — jamais inline dans les route handlers
|
|
37
|
+
- Toujours épingler la version du modèle — ne jamais utiliser l'alias "latest"
|
|
38
|
+
- Toujours activer le prompt caching sur les system prompts (cache_control: ephemeral)
|
|
39
|
+
- Logger l'utilisation des tokens par requête pour le suivi des coûts
|
|
40
|
+
- Réponses en streaming : utiliser SSE pour les réponses > 1000 tokens
|
|
41
|
+
- Ne jamais passer les PII utilisateur au modèle sauf si la fonctionnalité le requiert explicitement
|
|
42
|
+
- Les définitions d'outils vivent dans src/ai/tools/ — un fichier par outil
|
|
43
|
+
|
|
44
|
+
## Configuration du prompt caching
|
|
45
|
+
- Les system prompts doivent utiliser cache_control pour activer le caching
|
|
46
|
+
- Cache read = $0.30/MTok vs non caché = $3/MTok — toujours mettre en cache
|
|
47
|
+
- Invalider le cache quand le system prompt change (automatique au changement de contenu)
|
|
48
|
+
|
|
49
|
+
## Contrôles de coût
|
|
50
|
+
- Modèle par défaut : [claude-haiku-4-5] pour les tâches simples, [claude-sonnet-4-6] pour les complexes
|
|
51
|
+
- Max tokens : définir max_tokens explicite sur chaque requête — jamais illimité
|
|
52
|
+
- Rate limit : [X] requêtes par utilisateur par minute
|
|
53
|
+
- Alerte budget : logger quand une seule session dépasse $[X]
|
|
54
|
+
|
|
55
|
+
## Décisions (ne pas re-discuter)
|
|
56
|
+
- [Justification de la sélection du modèle]
|
|
57
|
+
- [Pourquoi streaming vs. non-streaming]
|
|
58
|
+
- [Stratégie de fenêtre de contexte : résumer à N tokens]
|
|
59
|
+
- [Tool calling vs. génération directe pour la sortie structurée]
|
|
60
|
+
|
|
61
|
+
## Tests
|
|
62
|
+
- Tests unitaires pour la construction des prompts et le parsing des sorties
|
|
63
|
+
- Tests d'intégration avec des réponses API enregistrées (VCR / fixtures)
|
|
64
|
+
- Ne jamais faire de vrais appels API dans les tests — coûte de l'argent et est lent
|
|
65
|
+
- Tester les entrées adversariales : injection de prompt, tentatives de jailbreak, cas limites
|
|
66
|
+
|
|
67
|
+
## Commandes
|
|
68
|
+
- [commande dev]
|
|
69
|
+
- [commande test]
|
|
70
|
+
- [commande déploiement]
|
|
71
|
+
|
|
72
|
+
## Ne jamais faire
|
|
73
|
+
- Ne jamais inline les system prompts dans les route handlers
|
|
74
|
+
- Ne jamais faire des appels IA non bornés sans max_tokens
|
|
75
|
+
- Ne jamais logger les réponses IA complètes en production (peut contenir des PII utilisateur)
|
|
76
|
+
- Ne jamais coder en dur des clés API — utiliser des variables d'environnement
|
|
77
|
+
- Ne jamais appeler le modèle IA directement depuis les composants UI
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
> **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,78 @@
|
|
|
1
|
+
> 🇫🇷 This is the French translation. [English version](../data-pipeline.md).
|
|
2
|
+
|
|
3
|
+
# Starter CLAUDE.md — Projet de Pipeline de Données
|
|
4
|
+
|
|
5
|
+
Déposez ceci dans le `CLAUDE.md` de votre projet et remplissez les sections entre crochets.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# [Nom du Projet] — Instructions Claude Code
|
|
11
|
+
|
|
12
|
+
## Ce que c'est
|
|
13
|
+
[Un paragraphe : quelles données ce pipeline traite, les systèmes sources, la destination, l'objectif métier]
|
|
14
|
+
|
|
15
|
+
## Stack
|
|
16
|
+
- Orchestrateur : [Airflow / Prefect / Dagster / dbt Cloud]
|
|
17
|
+
- Transformation : [dbt / PySpark / Pandas / Polars]
|
|
18
|
+
- Entrepôt : [BigQuery / Snowflake / Redshift / DuckDB]
|
|
19
|
+
- Ingestion : [Fivetran / Airbyte / personnalisé]
|
|
20
|
+
- Langage : [Python / SQL]
|
|
21
|
+
- Infra : [Terraform sur AWS / GCP / Azure]
|
|
22
|
+
|
|
23
|
+
## Structure du projet
|
|
24
|
+
dbt/ (si utilisant dbt)
|
|
25
|
+
├── models/
|
|
26
|
+
│ ├── staging/ ← 1:1 avec les tables sources, nettoyage léger seulement
|
|
27
|
+
│ ├── intermediate/ ← Logique métier, jointures
|
|
28
|
+
│ └── marts/ ← Entités métier finales (préfixes fct_, dim_)
|
|
29
|
+
├── macros/ ← Macros SQL réutilisables
|
|
30
|
+
├── seeds/ ← Données de référence statiques
|
|
31
|
+
└── tests/ ← Tests singuliers personnalisés
|
|
32
|
+
|
|
33
|
+
pipelines/ (si utilisant Airflow/Prefect/Dagster)
|
|
34
|
+
├── dags/ / flows/ ← Définitions de pipeline
|
|
35
|
+
├── operators/ ← Opérateurs/tâches personnalisés
|
|
36
|
+
└── utils/ ← Utilitaires partagés
|
|
37
|
+
|
|
38
|
+
## Conventions de données
|
|
39
|
+
- Modèles staging : renommer en snake_case, caster les types, pas de jointures, pas de logique métier
|
|
40
|
+
- Tables de faits : préfixe fct_, une ligne par événement/transaction
|
|
41
|
+
- Tables de dimensions : préfixe dim_, une ligne par entité
|
|
42
|
+
- Ne jamais utiliser SELECT * dans les requêtes de production
|
|
43
|
+
- Tous les modèles mart doivent avoir des tests unique + not_null sur la clé primaire
|
|
44
|
+
- Contrôles de fraîcheur de source requis sur toutes les sources
|
|
45
|
+
|
|
46
|
+
## Décisions (ne pas re-discuter)
|
|
47
|
+
- [Stratégie incrémentale vs. rafraîchissement complet pour les tables de faits]
|
|
48
|
+
- [Fuseau horaire : tous les timestamps en UTC]
|
|
49
|
+
- [Grain : ce que représente une ligne dans chaque table mart]
|
|
50
|
+
- [Stratégie de gestion des données en retard]
|
|
51
|
+
|
|
52
|
+
## Exigences de tests
|
|
53
|
+
- Chaque modèle staging : not_null sur la clé primaire
|
|
54
|
+
- Chaque modèle mart : unique + not_null sur la clé primaire, relationships sur les clés étrangères
|
|
55
|
+
- Fraîcheur des sources : avertir à [X] heures, erreur à [Y] heures
|
|
56
|
+
|
|
57
|
+
## Règles de performance
|
|
58
|
+
- Partitionner les grandes tables par date — toujours filtrer sur la colonne de partition
|
|
59
|
+
- Utiliser des modèles incrémentaux pour les tables > [X] lignes
|
|
60
|
+
- Ne jamais exécuter des rafraîchissements complets en production sans approbation
|
|
61
|
+
- Clés cluster/tri : [spécifier si utilisant Snowflake/Redshift]
|
|
62
|
+
|
|
63
|
+
## Commandes
|
|
64
|
+
- dbt run --select staging — exécuter la couche staging
|
|
65
|
+
- dbt test — exécuter tous les tests
|
|
66
|
+
- dbt docs generate && dbt docs serve — prévisualiser la documentation
|
|
67
|
+
- dbt source freshness — vérifier la fraîcheur des données sources
|
|
68
|
+
|
|
69
|
+
## Ne jamais faire
|
|
70
|
+
- Ne jamais mettre de logique métier dans les modèles staging
|
|
71
|
+
- Ne jamais coder en dur des dates — utiliser des variables ou des macros dbt
|
|
72
|
+
- Ne jamais committer de vrais credentials — utiliser des variables d'environnement ou un gestionnaire de secrets
|
|
73
|
+
- Ne jamais exécuter dbt run en production sans que dbt test passe d'abord
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
> **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,71 @@
|
|
|
1
|
+
> 🇫🇷 This is the French translation. [English version](../saas-backend.md).
|
|
2
|
+
|
|
3
|
+
# Starter CLAUDE.md — Backend SaaS
|
|
4
|
+
|
|
5
|
+
Déposez ceci dans le `CLAUDE.md` de votre projet et remplissez les sections entre crochets.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# [Nom du Projet] — Instructions Claude Code
|
|
11
|
+
|
|
12
|
+
## Ce que c'est
|
|
13
|
+
[Un paragraphe : ce que fait le produit, qui l'utilise, quel problème il résout]
|
|
14
|
+
|
|
15
|
+
## Stack
|
|
16
|
+
- Langage : [TypeScript / Python / Go]
|
|
17
|
+
- Framework : [Express / FastAPI / Gin / NestJS]
|
|
18
|
+
- Base de données : [PostgreSQL via Prisma / raw pg / SQLAlchemy]
|
|
19
|
+
- Auth : [JWT avec tokens d'accès 15 min + tokens de rafraîchissement 7 jours / Clerk / Auth0]
|
|
20
|
+
- Cache : [Redis]
|
|
21
|
+
- Queue : [BullMQ / SQS / Celery]
|
|
22
|
+
- Déploiement : [AWS ECS / Fly.io / Railway]
|
|
23
|
+
|
|
24
|
+
## Structure du projet
|
|
25
|
+
src/
|
|
26
|
+
├── api/ ← Route handlers — minces, délèguent aux services
|
|
27
|
+
├── services/ ← Logique métier — pas de préoccupations HTTP
|
|
28
|
+
├── db/ ← Requêtes de base de données — pas de logique métier
|
|
29
|
+
├── middleware/ ← Auth, rate limiting, gestion des erreurs
|
|
30
|
+
├── models/ ← Définitions de types et schémas
|
|
31
|
+
└── utils/ ← Fonctions pures, pas d'effets secondaires
|
|
32
|
+
|
|
33
|
+
## Conventions
|
|
34
|
+
- Les route handlers sont minces : valider l'entrée, appeler le service, retourner la réponse
|
|
35
|
+
- Les services contiennent toute la logique métier : ils ne connaissent pas HTTP
|
|
36
|
+
- La couche DB contient uniquement des requêtes : pas de logique métier, pas de préoccupations HTTP
|
|
37
|
+
- Tous les accès à la base de données passent par la couche db/ — ne jamais appeler l'ORM directement depuis les services
|
|
38
|
+
- Les erreurs se propagent vers le haut avec du contexte — ne jamais avaler silencieusement
|
|
39
|
+
- Toutes les routes API retournent : 200 (succès), 201 (créé), 204 (pas de contenu), 400 (mauvaise entrée), 401 (non auth), 403 (interdit), 404 (non trouvé), 409 (conflit), 422 (validation), 500 (inattendu)
|
|
40
|
+
|
|
41
|
+
## Décisions (ne pas re-discuter)
|
|
42
|
+
- [Mécanisme d'auth décidé : JWT, pas de sessions]
|
|
43
|
+
- [Choix ORM : Prisma — pas de SQL brut sauf pour les requêtes d'analytique complexes]
|
|
44
|
+
- [Format d'erreur : { error: string, code: string } — ne jamais changer la forme]
|
|
45
|
+
- [Pas de fichiers barrel — importer directement depuis la source]
|
|
46
|
+
|
|
47
|
+
## Tests
|
|
48
|
+
- Les tests d'intégration touchent une vraie base de données de test — pas de mocks DB
|
|
49
|
+
- Tests unitaires pour la logique métier pure dans services/
|
|
50
|
+
- Fichier de test : [filename].test.ts à côté du fichier source
|
|
51
|
+
- Exécuter : npm test
|
|
52
|
+
|
|
53
|
+
## Commandes
|
|
54
|
+
- npm run dev — démarrer le serveur de développement avec rechargement à chaud
|
|
55
|
+
- npm test — exécuter tous les tests
|
|
56
|
+
- npm run build — build de production
|
|
57
|
+
- npm run lint — vérification ESLint + Prettier
|
|
58
|
+
- npm run db:migrate — exécuter les migrations en attente
|
|
59
|
+
- npm run db:seed — seeder les données de développement
|
|
60
|
+
|
|
61
|
+
## Ne jamais faire
|
|
62
|
+
- Ne jamais mettre de logique métier dans les route handlers
|
|
63
|
+
- Ne jamais appeler la base de données directement depuis les route handlers
|
|
64
|
+
- Ne jamais retourner les erreurs brutes de la base de données aux clients
|
|
65
|
+
- Ne jamais committer des fichiers .env
|
|
66
|
+
- Ne jamais utiliser le type `any` en TypeScript
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
> **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,82 @@
|
|
|
1
|
+
> 🇳🇱 Dit is de Nederlandse vertaling. [Engelse versie](../ai-product.md).
|
|
2
|
+
|
|
3
|
+
# CLAUDE.md Starter — AI-product
|
|
4
|
+
|
|
5
|
+
Zet dit in de `CLAUDE.md` van je project en vul de secties tussen haakjes in.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
# [Projectnaam] — Claude Code Instructies
|
|
11
|
+
|
|
12
|
+
## Wat dit is
|
|
13
|
+
[Eén alinea: wat het AI-product doet, welk model het gebruikt, wie de gebruikers zijn]
|
|
14
|
+
|
|
15
|
+
## Stack
|
|
16
|
+
- Taal: [TypeScript / Python]
|
|
17
|
+
- Framework: [Next.js / FastAPI]
|
|
18
|
+
- AI: [Claude API via Anthropic SDK / OpenAI / Gemini]
|
|
19
|
+
- Model: [claude-sonnet-4-6 / claude-opus-4-7 / claude-haiku-4-5]
|
|
20
|
+
- Database: [PostgreSQL / Supabase]
|
|
21
|
+
- Vector DB: [Pinecone / pgvector / Weaviate] (indien van toepassing)
|
|
22
|
+
- Deployment: [Vercel / AWS / Railway]
|
|
23
|
+
|
|
24
|
+
## Projectstructuur
|
|
25
|
+
src/
|
|
26
|
+
├── app/ ← Next.js app router / FastAPI routes
|
|
27
|
+
├── ai/ ← Alle AI-gerelateerde code: prompts, ketens, tools
|
|
28
|
+
│ ├── prompts/ ← Systeemprompts en promptsjablonen
|
|
29
|
+
│ ├── tools/ ← Tooldefinities voor function calling
|
|
30
|
+
│ └── agents/ ← Agentdefinities en orkestratie
|
|
31
|
+
├── db/ ← Databasequeries en migraties
|
|
32
|
+
├── services/ ← Bedrijfslogica
|
|
33
|
+
└── utils/ ← Pure hulpprogramma's
|
|
34
|
+
|
|
35
|
+
## AI-conventies
|
|
36
|
+
- Alle systeemprompts staan in src/ai/prompts/ — nooit inline in route-handlers
|
|
37
|
+
- Pin altijd de modelversie — gebruik nooit de alias "latest"
|
|
38
|
+
- Schakel altijd prompt-caching in op systeemprompts (cache_control: ephemeral)
|
|
39
|
+
- Log tokengebruik per verzoek voor kostentracking
|
|
40
|
+
- Streamingantwoorden: gebruik SSE voor antwoorden > 1000 tokens
|
|
41
|
+
- Geef nooit gebruikers-PII door aan het model tenzij de feature dit expliciet vereist
|
|
42
|
+
- Tooldefinities staan in src/ai/tools/ — één bestand per tool
|
|
43
|
+
|
|
44
|
+
## Prompt-caching instelling
|
|
45
|
+
- Systeemprompts moeten cache_control gebruiken om caching in te schakelen
|
|
46
|
+
- Cache-lezen = $0.30/MTok vs niet gecachet = $3/MTok — cache altijd
|
|
47
|
+
- Invalideer cache wanneer systeemprompt verandert (automatisch bij inhoudswijziging)
|
|
48
|
+
|
|
49
|
+
## Kostencontroles
|
|
50
|
+
- Standaardmodel: [claude-haiku-4-5] voor eenvoudige taken, [claude-sonnet-4-6] voor complex
|
|
51
|
+
- Max tokens: stel expliciete max_tokens in op elk verzoek — nooit onbeperkt
|
|
52
|
+
- Rate limit: [X] verzoeken per gebruiker per minuut
|
|
53
|
+
- Budgetalert: log wanneer een enkele sessie $[X] overschrijdt
|
|
54
|
+
|
|
55
|
+
## Beslissingen (niet opnieuw bespreken)
|
|
56
|
+
- [Modelkeuze-redenering]
|
|
57
|
+
- [Waarom streaming vs. niet-streaming]
|
|
58
|
+
- [Contextvenster-strategie: samenvatten bij N tokens]
|
|
59
|
+
- [Tool calling vs. directe generatie voor gestructureerde output]
|
|
60
|
+
|
|
61
|
+
## Testen
|
|
62
|
+
- Unittests voor promptconstructie en outputparsing
|
|
63
|
+
- Integratietests met opgenomen API-antwoorden (VCR / fixtures)
|
|
64
|
+
- Doe nooit echte API-aanroepen in tests — kost geld en is traag
|
|
65
|
+
- Test vijandige invoer: prompt-injectie, jailbreak-pogingen, randgevallen
|
|
66
|
+
|
|
67
|
+
## Commando's
|
|
68
|
+
- [dev commando]
|
|
69
|
+
- [test commando]
|
|
70
|
+
- [deploy commando]
|
|
71
|
+
|
|
72
|
+
## Nooit doen
|
|
73
|
+
- Nooit systeemprompts inline in route-handlers plaatsen
|
|
74
|
+
- Nooit onbegrensde AI-aanroepen doen zonder max_tokens
|
|
75
|
+
- Nooit volledige AI-antwoorden loggen in productie (kan gebruikers-PII bevatten)
|
|
76
|
+
- Nooit API-sleutels hardcoderen — gebruik omgevingsvariabelen
|
|
77
|
+
- Nooit het AI-model direct aanroepen vanuit UI-componenten
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
> **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/)
|