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,175 @@
|
|
|
1
|
+
> 🇳🇱 Dit is de Nederlandse vertaling. [Engelse versie](../new-project-bootstrap.md).
|
|
2
|
+
|
|
3
|
+
# New Project Bootstrap Workflow
|
|
4
|
+
|
|
5
|
+
Hoe je een nieuw project opzet met Claude Code — gestructureerd, opinieus en klaar om op te bouwen vanaf dag één.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Wanneer deze workflow te gebruiken
|
|
10
|
+
- Een nieuwe applicatie van scratch starten
|
|
11
|
+
- Een nieuwe service opzetten in een bestaand systeem
|
|
12
|
+
- Een nieuwe repository aanmaken voor een zijproject of klantbetrokkenheid
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Stap 1 — Definieer wat je bouwt
|
|
17
|
+
|
|
18
|
+
Beantwoord deze vragen duidelijk voor je code of configuratie aanraakt.
|
|
19
|
+
|
|
20
|
+
**Vraag Claude:**
|
|
21
|
+
```
|
|
22
|
+
I am starting a new project. Help me define it clearly before we write any code.
|
|
23
|
+
|
|
24
|
+
What I want to build: [describe in 2–3 sentences]
|
|
25
|
+
|
|
26
|
+
Ask me the following questions one at a time and wait for my answer before asking the next:
|
|
27
|
+
1. Who are the users and what is the primary thing they do?
|
|
28
|
+
2. What is the expected scale at launch? (users, requests/sec, data volume)
|
|
29
|
+
3. What are the hard constraints? (budget, timeline, team size, existing tech stack)
|
|
30
|
+
4. What does "done" look like for v1?
|
|
31
|
+
5. What is explicitly out of scope for v1?
|
|
32
|
+
|
|
33
|
+
After I answer all five, summarize what we're building and confirm with me before proceeding.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Ga niet door totdat de reikwijdte schriftelijk is bevestigd.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Stap 2 — Kies de stack
|
|
41
|
+
|
|
42
|
+
**Vraag Claude:**
|
|
43
|
+
```
|
|
44
|
+
Based on what we're building:
|
|
45
|
+
- [paste summary from Step 1]
|
|
46
|
+
|
|
47
|
+
Recommend a specific stack. For each component (backend, frontend, database, auth, deployment), recommend:
|
|
48
|
+
- Your recommended choice and why it fits our constraints
|
|
49
|
+
- What we'd be giving up vs the next-best alternative
|
|
50
|
+
- No more than 2 options per component — I need a decision, not a menu
|
|
51
|
+
|
|
52
|
+
Be opinionated. I will push back if I disagree.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Vergrendel de stack voor je code schrijft. Registreer beslissingen in `docs/adr/` als ze niet vanzelfsprekend zijn.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Stap 3 — Bootstrap de projectstructuur
|
|
60
|
+
|
|
61
|
+
**Vraag Claude:**
|
|
62
|
+
```
|
|
63
|
+
Set up the initial project structure for: [stack from Step 2]
|
|
64
|
+
|
|
65
|
+
Create:
|
|
66
|
+
1. The directory structure (show as a tree before creating anything)
|
|
67
|
+
2. Package/dependency files with pinned versions
|
|
68
|
+
3. Configuration files (TypeScript, ESLint, Prettier, etc.)
|
|
69
|
+
4. .gitignore appropriate for this stack
|
|
70
|
+
5. A minimal working "hello world" that proves the stack runs
|
|
71
|
+
|
|
72
|
+
Do not add features yet. The goal is a running skeleton.
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Verifieer dat het draait voor je doorgaat.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Stap 4 — Stel CLAUDE.md in
|
|
80
|
+
|
|
81
|
+
**Vraag Claude:**
|
|
82
|
+
```
|
|
83
|
+
Create a CLAUDE.md for this project.
|
|
84
|
+
|
|
85
|
+
Include:
|
|
86
|
+
1. What this project is (one paragraph)
|
|
87
|
+
2. Stack summary (language, framework, key libraries, DB)
|
|
88
|
+
3. Directory structure with purpose of each directory
|
|
89
|
+
4. Coding conventions specific to this stack
|
|
90
|
+
5. Commands to run (dev server, tests, build, lint)
|
|
91
|
+
6. Decisions already made (from Steps 1–3) that should not be revisited
|
|
92
|
+
7. What NOT to do in this project
|
|
93
|
+
|
|
94
|
+
Make it dense and useful — not a tutorial. A senior developer should be able to start contributing after reading it.
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Stap 5 — Stel de ontwikkelomgeving in
|
|
100
|
+
|
|
101
|
+
**Vraag Claude:**
|
|
102
|
+
```
|
|
103
|
+
Set up the development environment:
|
|
104
|
+
|
|
105
|
+
1. Docker Compose file for local dependencies (database, cache, queues)
|
|
106
|
+
2. Environment variable template (.env.example with all required vars, no real values)
|
|
107
|
+
3. Database migrations setup (initial schema if applicable)
|
|
108
|
+
4. Test setup (test runner config, example test, CI-ready)
|
|
109
|
+
5. A Makefile or scripts/ directory with common commands:
|
|
110
|
+
- make dev (start local environment)
|
|
111
|
+
- make test (run tests)
|
|
112
|
+
- make build (production build)
|
|
113
|
+
- make lint (lint and format check)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Stap 6 — Stel CI in
|
|
119
|
+
|
|
120
|
+
**Vraag Claude:**
|
|
121
|
+
```
|
|
122
|
+
Set up a GitHub Actions CI pipeline:
|
|
123
|
+
|
|
124
|
+
On every PR:
|
|
125
|
+
- Install dependencies (with cache)
|
|
126
|
+
- Run lint
|
|
127
|
+
- Run tests
|
|
128
|
+
- Build (if applicable)
|
|
129
|
+
|
|
130
|
+
Use the github-actions skill for best practices:
|
|
131
|
+
- Pin action versions
|
|
132
|
+
- Explicit permissions
|
|
133
|
+
- Dependency caching
|
|
134
|
+
- Fail fast on test failures
|
|
135
|
+
|
|
136
|
+
The pipeline must pass on the current skeleton before we add features.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Verifieer dat CI slaagt op de initiële commit voor je naar featureontwikkeling gaat.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Stap 7 — Eerste feature-planning
|
|
144
|
+
|
|
145
|
+
Zodra het skelet draait en CI groen is:
|
|
146
|
+
|
|
147
|
+
**Vraag Claude:**
|
|
148
|
+
```
|
|
149
|
+
The project is bootstrapped. Now plan the first feature:
|
|
150
|
+
|
|
151
|
+
Feature: [describe the first user-facing capability]
|
|
152
|
+
|
|
153
|
+
Use the feature-development workflow to plan and implement it.
|
|
154
|
+
Start with Step 1 of that workflow.
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Zie `workflows/feature-development.md`.
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Bootstrap-checklist
|
|
162
|
+
|
|
163
|
+
- [ ] Reikwijdte gedefinieerd en schriftelijk bevestigd
|
|
164
|
+
- [ ] Stack besloten met gedocumenteerde redenering
|
|
165
|
+
- [ ] Projectstructuur aangemaakt en draaiend ("hello world" werkt)
|
|
166
|
+
- [ ] CLAUDE.md geschreven en gecommit
|
|
167
|
+
- [ ] Docker Compose / lokale afhankelijkheden draaien
|
|
168
|
+
- [ ] .env.example gecommit met alle vereiste variabelen
|
|
169
|
+
- [ ] Tests geconfigureerd en minimaal één slaagt
|
|
170
|
+
- [ ] CI-pipeline groen op eerste push
|
|
171
|
+
- [ ] `docs/adr/` aangemaakt met initiële architectuurbeslissingen
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
> **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,150 @@
|
|
|
1
|
+
> 🇳🇱 Dit is de Nederlandse vertaling. [Engelse versie](../refactor-safely.md).
|
|
2
|
+
|
|
3
|
+
# Refactor Safely Workflow
|
|
4
|
+
|
|
5
|
+
Hoe je code refactort met Claude Code zonder gedrag te breken — met tests als veiligheidsnet gedurende het hele proces.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Wanneer deze workflow te gebruiken
|
|
10
|
+
- Functies extraheren uit een grote methode
|
|
11
|
+
- Modules hernoemen en reorganiseren
|
|
12
|
+
- Een patroon vervangen door een beter patroon over meerdere bestanden
|
|
13
|
+
- Duplicatie verminderen over de codebase
|
|
14
|
+
- De structuur van een module verbeteren zonder het externe gedrag te wijzigen
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## De gouden regel
|
|
19
|
+
|
|
20
|
+
**Refactor en wijzig nooit gedrag in dezelfde commit.** Een refactor behoudt extern gedrag. Als tests breken, heb je ofwel gedrag gewijzigd of de tests testten implementatiedetails (ook een probleem).
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Stap 1 — Stel een testbasislijn vast
|
|
25
|
+
|
|
26
|
+
Bevestig dat je adequate testdekking hebt voor je iets wijzigt.
|
|
27
|
+
|
|
28
|
+
**Vraag Claude:**
|
|
29
|
+
```
|
|
30
|
+
I want to refactor: [describe what you're refactoring and why]
|
|
31
|
+
|
|
32
|
+
First, assess the current test coverage:
|
|
33
|
+
1. Read the relevant files: [list files]
|
|
34
|
+
2. What behaviors are currently tested?
|
|
35
|
+
3. What behaviors are NOT tested that could break during refactoring?
|
|
36
|
+
4. Write any missing tests now, before we touch production code
|
|
37
|
+
|
|
38
|
+
Do not change production code yet. Tests only.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Commit de testtoevoegingen voor de refactoring.** Dit maakt duidelijk welke tests bestonden voor vs. zijn toegevoegd als onderdeel van de refactor.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Stap 2 — Definieer de refactorreikwijdte
|
|
46
|
+
|
|
47
|
+
**Vraag Claude:**
|
|
48
|
+
```
|
|
49
|
+
Here is what I want to refactor: [describe the goal]
|
|
50
|
+
|
|
51
|
+
Read the relevant files: [list files]
|
|
52
|
+
|
|
53
|
+
Define the scope:
|
|
54
|
+
1. What will change structurally? (function signatures, file locations, module boundaries)
|
|
55
|
+
2. What will NOT change? (external behavior, API contracts, database schema)
|
|
56
|
+
3. What are the riskiest parts of this refactor?
|
|
57
|
+
4. What is the smallest first step that makes progress without risk?
|
|
58
|
+
|
|
59
|
+
Do not start the refactor yet.
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Stap 3 — Refactor in kleine, testbare stappen
|
|
65
|
+
|
|
66
|
+
Splits de refactoring op in stappen die klein genoeg zijn dat tests elk kunnen verifiëren.
|
|
67
|
+
|
|
68
|
+
**Voor elke stap:**
|
|
69
|
+
```
|
|
70
|
+
Refactor step [N]: [describe the specific structural change]
|
|
71
|
+
|
|
72
|
+
Rules:
|
|
73
|
+
- Change only what's needed for this step
|
|
74
|
+
- Do not change any behavior
|
|
75
|
+
- After this change, all existing tests must still pass
|
|
76
|
+
- Tell me what to verify after this step
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Na elke stap:**
|
|
80
|
+
```bash
|
|
81
|
+
# Voer tests uit — moeten groen zijn voor volgende stap
|
|
82
|
+
npm test # of pytest, go test, etc.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Als tests mislukken na een pure structuurwijziging: stop, begrijp waarom, herstel voor doorgaan. Een falende test na een refactoring betekent ofwel dat de refactoring gedrag heeft gewijzigd of dat de test implementatie testte (beide zijn problemen om nu op te lossen).
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Stap 4 — Verifieer dat extern gedrag ongewijzigd is
|
|
90
|
+
|
|
91
|
+
Na alle stappen:
|
|
92
|
+
|
|
93
|
+
**Vraag Claude:**
|
|
94
|
+
```
|
|
95
|
+
The refactor is structurally complete. Verify that external behavior is unchanged:
|
|
96
|
+
|
|
97
|
+
1. Run the full test suite
|
|
98
|
+
2. Check that all public APIs/interfaces are identical to before (same inputs, same outputs)
|
|
99
|
+
3. Check that database queries produce identical results
|
|
100
|
+
4. Check that error cases still produce the same errors
|
|
101
|
+
5. If there are integration tests or end-to-end tests, run them
|
|
102
|
+
|
|
103
|
+
Report any behavioral differences — even small ones.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Stap 5 — Ruim op
|
|
109
|
+
|
|
110
|
+
**Vraag Claude:**
|
|
111
|
+
```
|
|
112
|
+
Before committing, clean up:
|
|
113
|
+
|
|
114
|
+
1. Remove any debugging code or temporary comments added during refactoring
|
|
115
|
+
2. Remove any dead code that the refactor made unreachable
|
|
116
|
+
3. Update any documentation or comments that referenced the old structure
|
|
117
|
+
4. Check that import paths are clean (no unused imports)
|
|
118
|
+
|
|
119
|
+
Do not introduce new logic in this step.
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Stap 6 — Commit met een duidelijk bericht
|
|
125
|
+
|
|
126
|
+
Structureer de refactor-commit(s) om een duidelijk verhaal te vertellen:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
refactor: extract payment processing into PaymentService
|
|
130
|
+
|
|
131
|
+
Moves payment logic out of OrderController into a dedicated service.
|
|
132
|
+
No behavior change — all existing tests pass.
|
|
133
|
+
Motivation: OrderController was 600 lines; this makes both units testable in isolation.
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Meng een refactorcommit nooit met een feature- of bugfix-commit. Houd ze gescheiden.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Refactoringantipatronen
|
|
141
|
+
|
|
142
|
+
- **"Terwijl ik hier toch ben..."** — een refactoring en een feature tegelijk doen. Stop. Voltooi de refactoring eerst.
|
|
143
|
+
- **Refactoring zonder tests** — je breekt iets en weet het niet
|
|
144
|
+
- **Big-bang refactoring** — alles tegelijk wijzigen. Doe het stapsgewijs.
|
|
145
|
+
- **Hernoemen als laatste stap** — hernoem eerst (mechanisch, laag risico), dan herstructureer
|
|
146
|
+
- **De basislijn overslaan** — aannemen dat tests adequaat zijn zonder het te controleren
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
> **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,148 @@
|
|
|
1
|
+
# Refactor Safely Workflow
|
|
2
|
+
|
|
3
|
+
How to refactor code with Claude Code without breaking behavior — using tests as a safety net throughout.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## When to use this workflow
|
|
8
|
+
- Extracting functions from a large method
|
|
9
|
+
- Renaming and reorganizing modules
|
|
10
|
+
- Replacing a pattern with a better one across multiple files
|
|
11
|
+
- Reducing duplication across the codebase
|
|
12
|
+
- Improving a module's structure without changing its external behavior
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## The golden rule
|
|
17
|
+
|
|
18
|
+
**Never refactor and change behavior in the same commit.** A refactor preserves external behavior. If tests break, you either changed behavior or the tests were testing implementation details (also a problem).
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Step 1 — Establish a test baseline
|
|
23
|
+
|
|
24
|
+
Before changing anything, confirm you have adequate test coverage.
|
|
25
|
+
|
|
26
|
+
**Prompt Claude:**
|
|
27
|
+
```
|
|
28
|
+
I want to refactor: [describe what you're refactoring and why]
|
|
29
|
+
|
|
30
|
+
First, assess the current test coverage:
|
|
31
|
+
1. Read the relevant files: [list files]
|
|
32
|
+
2. What behaviors are currently tested?
|
|
33
|
+
3. What behaviors are NOT tested that could break during refactoring?
|
|
34
|
+
4. Write any missing tests now, before we touch production code
|
|
35
|
+
|
|
36
|
+
Do not change production code yet. Tests only.
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Commit the test additions before refactoring.** This makes it clear which tests existed before vs. were added as part of the refactor.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Step 2 — Define the refactor scope
|
|
44
|
+
|
|
45
|
+
**Prompt Claude:**
|
|
46
|
+
```
|
|
47
|
+
Here is what I want to refactor: [describe the goal]
|
|
48
|
+
|
|
49
|
+
Read the relevant files: [list files]
|
|
50
|
+
|
|
51
|
+
Define the scope:
|
|
52
|
+
1. What will change structurally? (function signatures, file locations, module boundaries)
|
|
53
|
+
2. What will NOT change? (external behavior, API contracts, database schema)
|
|
54
|
+
3. What are the riskiest parts of this refactor?
|
|
55
|
+
4. What is the smallest first step that makes progress without risk?
|
|
56
|
+
|
|
57
|
+
Do not start the refactor yet.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Step 3 — Refactor in small, testable increments
|
|
63
|
+
|
|
64
|
+
Break the refactor into steps small enough that tests can verify each one.
|
|
65
|
+
|
|
66
|
+
**For each increment:**
|
|
67
|
+
```
|
|
68
|
+
Refactor step [N]: [describe the specific structural change]
|
|
69
|
+
|
|
70
|
+
Rules:
|
|
71
|
+
- Change only what's needed for this step
|
|
72
|
+
- Do not change any behavior
|
|
73
|
+
- After this change, all existing tests must still pass
|
|
74
|
+
- Tell me what to verify after this step
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**After each increment:**
|
|
78
|
+
```bash
|
|
79
|
+
# Run tests — must be green before next step
|
|
80
|
+
npm test # or pytest, go test, etc.
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
If tests fail after a pure structural change: stop, understand why, fix before continuing. A failing test after a refactor means either the refactor changed behavior or the test was testing implementation (both are problems to fix now).
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Step 4 — Verify external behavior unchanged
|
|
88
|
+
|
|
89
|
+
After all increments:
|
|
90
|
+
|
|
91
|
+
**Prompt Claude:**
|
|
92
|
+
```
|
|
93
|
+
The refactor is structurally complete. Verify that external behavior is unchanged:
|
|
94
|
+
|
|
95
|
+
1. Run the full test suite
|
|
96
|
+
2. Check that all public APIs/interfaces are identical to before (same inputs, same outputs)
|
|
97
|
+
3. Check that database queries produce identical results
|
|
98
|
+
4. Check that error cases still produce the same errors
|
|
99
|
+
5. If there are integration tests or end-to-end tests, run them
|
|
100
|
+
|
|
101
|
+
Report any behavioral differences — even small ones.
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Step 5 — Clean up
|
|
107
|
+
|
|
108
|
+
**Prompt Claude:**
|
|
109
|
+
```
|
|
110
|
+
Before committing, clean up:
|
|
111
|
+
|
|
112
|
+
1. Remove any debugging code or temporary comments added during refactoring
|
|
113
|
+
2. Remove any dead code that the refactor made unreachable
|
|
114
|
+
3. Update any documentation or comments that referenced the old structure
|
|
115
|
+
4. Check that import paths are clean (no unused imports)
|
|
116
|
+
|
|
117
|
+
Do not introduce new logic in this step.
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Step 6 — Commit with a clear message
|
|
123
|
+
|
|
124
|
+
Structure the refactor commit(s) to tell a clear story:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
refactor: extract payment processing into PaymentService
|
|
128
|
+
|
|
129
|
+
Moves payment logic out of OrderController into a dedicated service.
|
|
130
|
+
No behavior change — all existing tests pass.
|
|
131
|
+
Motivation: OrderController was 600 lines; this makes both units testable in isolation.
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Never mix a refactor commit with a feature or bug fix commit. Keep them separate.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Refactoring anti-patterns
|
|
139
|
+
|
|
140
|
+
- **"While I'm in here..."** — doing a refactor and a feature at the same time. Stop. Finish the refactor first.
|
|
141
|
+
- **Refactoring without tests** — you will break something and not know it
|
|
142
|
+
- **Big-bang refactor** — changing everything at once. Do it incrementally.
|
|
143
|
+
- **Renaming as the last step** — rename first (mechanical, low risk), then restructure
|
|
144
|
+
- **Skipping the baseline** — assuming tests are adequate without checking first
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
> **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/)
|