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,146 @@
|
|
|
1
|
+
> 🇫🇷 This is the French translation. [English version](../debugging-session.md).
|
|
2
|
+
|
|
3
|
+
# Workflow de Session de Débogage
|
|
4
|
+
|
|
5
|
+
Workflow systématique pour diagnostiquer et corriger des bugs avec Claude Code — sans chasser les symptômes.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Quand utiliser ce workflow
|
|
10
|
+
- Un bug qui n'est pas immédiatement évident à la lecture du code
|
|
11
|
+
- Un test en échec dont la cause n'est pas claire
|
|
12
|
+
- Une erreur de production que vous ne pouvez pas reproduire localement
|
|
13
|
+
- Des échecs intermittents
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Étape 1 — Construire une boucle de feedback d'abord
|
|
18
|
+
|
|
19
|
+
Avant d'investiguer, créez un moyen de reproduire le bug de façon fiable. Ne sautez pas cette étape.
|
|
20
|
+
|
|
21
|
+
**Prompt Claude :**
|
|
22
|
+
```
|
|
23
|
+
I have a bug: [describe the symptom exactly — error message, unexpected behavior, what you expected]
|
|
24
|
+
|
|
25
|
+
Before we investigate, help me build a reliable way to reproduce it.
|
|
26
|
+
|
|
27
|
+
Options to consider:
|
|
28
|
+
- A failing test that captures the bug
|
|
29
|
+
- A curl command or script that triggers it
|
|
30
|
+
- A minimal code snippet that demonstrates it
|
|
31
|
+
- Steps to reproduce via the UI
|
|
32
|
+
|
|
33
|
+
Which is most appropriate here, and write it now.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Ne pas continuer sans une reproduction fiable.** Déboguer sans reproduction, c'est deviner.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Étape 2 — Isoler le rayon de blast
|
|
41
|
+
|
|
42
|
+
Comprendre oĂą le bug peut se trouver avant de lire tout code.
|
|
43
|
+
|
|
44
|
+
**Prompt Claude :**
|
|
45
|
+
```
|
|
46
|
+
Here is the reproduction: [paste the reproduction from Step 1]
|
|
47
|
+
|
|
48
|
+
Without looking at code yet, answer:
|
|
49
|
+
1. What is the earliest point in the call stack where this could go wrong?
|
|
50
|
+
2. What external systems are involved (DB, cache, third-party API, queue)?
|
|
51
|
+
3. What changed recently that could have introduced this? (check git log)
|
|
52
|
+
4. What is the smallest unit of code that, if wrong, would cause this symptom?
|
|
53
|
+
|
|
54
|
+
List the files most likely to contain the bug, ranked by probability.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Étape 3 — Générer des hypothèses
|
|
60
|
+
|
|
61
|
+
**Prompt Claude :**
|
|
62
|
+
```
|
|
63
|
+
Based on the reproduction and the candidate files, generate 3–5 falsifiable hypotheses.
|
|
64
|
+
|
|
65
|
+
For each hypothesis:
|
|
66
|
+
- State it as a specific claim: "The bug occurs because [X] when [Y]"
|
|
67
|
+
- Describe how to test it: what would we observe if this hypothesis is true?
|
|
68
|
+
- Describe how to disprove it: what would we observe if it's false?
|
|
69
|
+
|
|
70
|
+
Do not start testing yet. List all hypotheses first.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Révisez les hypothèses. Ajoutez celles que vous avez pensées que Claude a manquées. Classez-les par probabilité.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Étape 4 — Tester les hypothèses, par ordre de probabilité décroissante
|
|
78
|
+
|
|
79
|
+
**Pour chaque hypothèse :**
|
|
80
|
+
```
|
|
81
|
+
Test hypothesis [N]: "[paste the hypothesis]"
|
|
82
|
+
|
|
83
|
+
Add the minimal instrumentation needed to confirm or rule this out:
|
|
84
|
+
- A log statement at the right point
|
|
85
|
+
- A debug assertion
|
|
86
|
+
- A targeted test with a specific input
|
|
87
|
+
|
|
88
|
+
Do not add instrumentation for other hypotheses yet.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Après chaque test :
|
|
92
|
+
- Si confirmée : passer à l'Étape 5
|
|
93
|
+
- Si réfutée : passer à l'hypothèse suivante
|
|
94
|
+
- Si non concluante : affiner l'hypothèse et re-tester
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Étape 5 — Corriger et vérifier
|
|
99
|
+
|
|
100
|
+
Une fois la cause racine confirmée :
|
|
101
|
+
|
|
102
|
+
**Prompt Claude :**
|
|
103
|
+
```
|
|
104
|
+
Root cause confirmed: [describe what you found]
|
|
105
|
+
|
|
106
|
+
Now:
|
|
107
|
+
1. Apply the minimal fix — change only what's needed to fix this specific bug
|
|
108
|
+
2. Do not refactor surrounding code
|
|
109
|
+
3. Update the reproduction from Step 1 to be a regression test
|
|
110
|
+
4. Run the full test suite — confirm nothing else broke
|
|
111
|
+
|
|
112
|
+
Explain in one sentence why this fix works.
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Étape 6 — Post-mortem (pour les bugs sérieux)
|
|
118
|
+
|
|
119
|
+
Pour les bugs qui ont causé un impact utilisateur, une perte de données ou qui ont pris plus de 2 heures à trouver :
|
|
120
|
+
|
|
121
|
+
**Prompt Claude :**
|
|
122
|
+
```
|
|
123
|
+
Write a brief post-mortem for this bug:
|
|
124
|
+
|
|
125
|
+
1. What was the bug? (one sentence)
|
|
126
|
+
2. What was the root cause?
|
|
127
|
+
3. How long did it take to find and why?
|
|
128
|
+
4. What would have caught this earlier? (missing test, missing monitoring, code review gap)
|
|
129
|
+
5. What should we add/change to prevent this class of bug?
|
|
130
|
+
|
|
131
|
+
Keep it under 200 words. No blame, no fluff.
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Anti-patterns à éviter
|
|
137
|
+
|
|
138
|
+
- **Corriger le symptôme, pas la cause** — si vous ne comprenez pas pourquoi, vous ne l'avez pas corrigé
|
|
139
|
+
- **Changer plusieurs choses à la fois** — vous ne saurez pas quel changement a corrigé le bug
|
|
140
|
+
- **Déboguer sans reproduction** — vous devinez
|
|
141
|
+
- **Ajouter de l'instrumentation partout** — cibler des hypothèses spécifiques
|
|
142
|
+
- **Sauter le test de régression** — le bug reviendra
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
> **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,155 @@
|
|
|
1
|
+
> 🇫🇷 This is the French translation. [English version](../feature-development.md).
|
|
2
|
+
|
|
3
|
+
# Workflow de Développement de Fonctionnalité
|
|
4
|
+
|
|
5
|
+
Workflow de bout en bout pour mener une fonctionnalité de l'idée à la PR fusionnée avec Claude Code.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Quand utiliser ce workflow
|
|
10
|
+
- Construire une nouvelle fonctionnalité qui touche plus d'un fichier
|
|
11
|
+
- Implémenter une spec ou un ticket qui doit être décomposé avant le code
|
|
12
|
+
- Toute fonctionnalité où vous voulez un processus structuré et révisable
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Étape 1 — Définir et valider la portée
|
|
17
|
+
|
|
18
|
+
Avant d'écrire du code, établissez exactement ce que vous construisez.
|
|
19
|
+
|
|
20
|
+
**Prompt Claude :**
|
|
21
|
+
```
|
|
22
|
+
I need to build: [describe the feature in one paragraph]
|
|
23
|
+
|
|
24
|
+
Read the relevant files first:
|
|
25
|
+
- [list key files: routes, models, services]
|
|
26
|
+
- CLAUDE.md and CONTEXT.md if present
|
|
27
|
+
|
|
28
|
+
Then tell me:
|
|
29
|
+
1. What files will need to change?
|
|
30
|
+
2. What new files will be created?
|
|
31
|
+
3. What are the edge cases I should handle?
|
|
32
|
+
4. What decisions do I need to make before we start?
|
|
33
|
+
5. Are there any risks or dependencies I'm missing?
|
|
34
|
+
|
|
35
|
+
Do not write code yet.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Ce qu'il faut chercher dans la réponse :**
|
|
39
|
+
- Fichiers que vous n'aviez pas envisagés
|
|
40
|
+
- Cas limites qui provoqueraient des bugs s'ils étaient manqués
|
|
41
|
+
- Décisions qui devraient aller dans CLAUDE.md une fois prises
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Étape 2 — Planifier l'implémentation
|
|
46
|
+
|
|
47
|
+
Une fois la portée claire, obtenez un plan séquencé.
|
|
48
|
+
|
|
49
|
+
**Prompt Claude :**
|
|
50
|
+
```
|
|
51
|
+
Based on the scope we just defined, create a numbered implementation plan.
|
|
52
|
+
|
|
53
|
+
Each step must be:
|
|
54
|
+
- A concrete, bounded action (not "implement auth" — "add JWT validation middleware to src/middleware/auth.ts")
|
|
55
|
+
- Completable in a single session
|
|
56
|
+
- Independently testable
|
|
57
|
+
|
|
58
|
+
Include which files change in each step. Note dependencies between steps.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Révisez le plan. Si une étape est trop grande, demandez à Claude de la décomposer davantage. Validez le plan avant de toucher au code.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Étape 3 — Implémenter étape par étape
|
|
66
|
+
|
|
67
|
+
Exécutez une étape du plan à la fois. Ne sautez pas en avant.
|
|
68
|
+
|
|
69
|
+
**Pour chaque étape :**
|
|
70
|
+
```
|
|
71
|
+
Implement step [N]: [paste the step description]
|
|
72
|
+
|
|
73
|
+
Rules:
|
|
74
|
+
- Only change what's needed for this step
|
|
75
|
+
- Write or update tests for this step's behavior
|
|
76
|
+
- Do not refactor code outside the scope of this step
|
|
77
|
+
- Tell me when this step is complete and what to verify
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Après chaque étape :**
|
|
81
|
+
- Exécuter les tests : confirmer qu'ils passent avant de passer à l'étape suivante
|
|
82
|
+
- Relire le diff vous-mĂŞme : est-ce ce que vous attendiez ?
|
|
83
|
+
- Si une étape révèle une nouvelle complexité, mettre à jour le plan avant de continuer
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Étape 4 — Vérification d'intégration
|
|
88
|
+
|
|
89
|
+
Une fois toutes les étapes terminées, vérifier que la fonctionnalité complète fonctionne de bout en bout.
|
|
90
|
+
|
|
91
|
+
**Prompt Claude :**
|
|
92
|
+
```
|
|
93
|
+
All implementation steps are complete. Now:
|
|
94
|
+
|
|
95
|
+
1. Run the full test suite — report any failures
|
|
96
|
+
2. Check that all edge cases from Step 1 are handled — list each one and confirm
|
|
97
|
+
3. Check for any TODOs or incomplete error handling introduced during implementation
|
|
98
|
+
4. Verify the feature works with [specific test scenario relevant to this feature]
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Corriger tout problème trouvé avant de continuer.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Étape 5 — Auto-révision
|
|
106
|
+
|
|
107
|
+
Avant de créer une PR, révisez vos propres changements.
|
|
108
|
+
|
|
109
|
+
**Prompt Claude :**
|
|
110
|
+
```
|
|
111
|
+
Review the changes on this branch against main.
|
|
112
|
+
|
|
113
|
+
Focus on:
|
|
114
|
+
1. CRITICAL issues (bugs, security, data loss risks)
|
|
115
|
+
2. Missing tests for changed behavior
|
|
116
|
+
3. Convention violations vs this project's CLAUDE.md
|
|
117
|
+
4. Anything that would confuse a reader in 6 months
|
|
118
|
+
|
|
119
|
+
Format: CRITICAL / SUGGESTED / NITPICK
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Corriger tous les problèmes CRITICAL. Faire preuve de jugement sur les éléments SUGGESTED.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Étape 6 — Description de PR
|
|
127
|
+
|
|
128
|
+
**Prompt Claude :**
|
|
129
|
+
```
|
|
130
|
+
Write a PR description for these changes.
|
|
131
|
+
|
|
132
|
+
Include:
|
|
133
|
+
- What this PR does (one paragraph)
|
|
134
|
+
- Why it's needed (the problem it solves)
|
|
135
|
+
- How to test it (specific steps a reviewer can follow)
|
|
136
|
+
- Any decisions made and why (reference CLAUDE.md or ADRs if relevant)
|
|
137
|
+
- Screenshots or output if applicable
|
|
138
|
+
|
|
139
|
+
Do not include a list of files changed — the diff covers that.
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Liste de contrĂ´le avant fusion
|
|
145
|
+
|
|
146
|
+
- [ ] Tous les tests passent
|
|
147
|
+
- [ ] Auto-révision terminée, pas de problèmes CRITICAL
|
|
148
|
+
- [ ] Les cas limites de l'Étape 1 sont tous gérés
|
|
149
|
+
- [ ] Description de PR rédigée
|
|
150
|
+
- [ ] CLAUDE.md mis à jour si de nouvelles décisions ont été prises
|
|
151
|
+
- [ ] CONTEXT.md mis à jour si de nouveaux termes de domaine ont été introduits
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
> **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,175 @@
|
|
|
1
|
+
> 🇫🇷 This is the French translation. [English version](../new-project-bootstrap.md).
|
|
2
|
+
|
|
3
|
+
# Workflow de Bootstrap de Nouveau Projet
|
|
4
|
+
|
|
5
|
+
Comment lancer un nouveau projet avec Claude Code — structuré, opinionné et prêt à construire dès le premier jour.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Quand utiliser ce workflow
|
|
10
|
+
- Démarrer une nouvelle application de zéro
|
|
11
|
+
- Configurer un nouveau service dans un système existant
|
|
12
|
+
- Créer un nouveau dépôt pour un projet secondaire ou une mission client
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Étape 1 — Définir ce que vous construisez
|
|
17
|
+
|
|
18
|
+
Avant de toucher au code ou à la config, répondez clairement à ces questions.
|
|
19
|
+
|
|
20
|
+
**Prompt 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
|
+
Ne pas continuer tant que la portée n'est pas confirmée par écrit.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Étape 2 — Choisir la stack
|
|
41
|
+
|
|
42
|
+
**Prompt 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
|
+
Validez la stack avant d'écrire du code. Enregistrez les décisions dans `docs/adr/` si elles ne sont pas évidentes.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Étape 3 — Bootstrapper la structure du projet
|
|
60
|
+
|
|
61
|
+
**Prompt 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
|
+
Vérifiez qu'il fonctionne avant de continuer.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Étape 4 — Configurer CLAUDE.md
|
|
80
|
+
|
|
81
|
+
**Prompt 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
|
+
## Étape 5 — Configurer l'environnement de développement
|
|
100
|
+
|
|
101
|
+
**Prompt 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
|
+
## Étape 6 — Configurer la CI
|
|
119
|
+
|
|
120
|
+
**Prompt 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
|
+
Vérifiez que la CI passe sur le commit initial avant de passer au développement de fonctionnalités.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Étape 7 — Planification de la première fonctionnalité
|
|
144
|
+
|
|
145
|
+
Une fois le squelette en cours d'exécution et la CI verte :
|
|
146
|
+
|
|
147
|
+
**Prompt 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
|
+
Voir `workflows/feature-development.md`.
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Liste de contrĂ´le de bootstrap
|
|
162
|
+
|
|
163
|
+
- [ ] Portée définie et confirmée par écrit
|
|
164
|
+
- [ ] Stack décidée avec un raisonnement documenté
|
|
165
|
+
- [ ] Structure du projet créée et fonctionnelle ("hello world" fonctionne)
|
|
166
|
+
- [ ] CLAUDE.md rédigé et commité
|
|
167
|
+
- [ ] Docker Compose / dépendances locales en cours d'exécution
|
|
168
|
+
- [ ] .env.example commité avec toutes les variables requises
|
|
169
|
+
- [ ] Tests configurés et au moins un qui passe
|
|
170
|
+
- [ ] Pipeline CI vert sur le premier push
|
|
171
|
+
- [ ] `docs/adr/` créé avec les décisions architecturales initiales
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
> **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,150 @@
|
|
|
1
|
+
> 🇫🇷 This is the French translation. [English version](../refactor-safely.md).
|
|
2
|
+
|
|
3
|
+
# Workflow de Refactoring Sécurisé
|
|
4
|
+
|
|
5
|
+
Comment refactoriser du code avec Claude Code sans casser le comportement — en utilisant les tests comme filet de sécurité tout au long.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Quand utiliser ce workflow
|
|
10
|
+
- Extraire des fonctions d'une grande méthode
|
|
11
|
+
- Renommer et réorganiser des modules
|
|
12
|
+
- Remplacer un pattern par un meilleur Ă travers plusieurs fichiers
|
|
13
|
+
- Réduire la duplication dans la base de code
|
|
14
|
+
- Améliorer la structure d'un module sans changer son comportement externe
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## La règle d'or
|
|
19
|
+
|
|
20
|
+
**Ne jamais refactoriser et changer le comportement dans le même commit.** Un refactoring préserve le comportement externe. Si les tests cassent, vous avez soit changé le comportement soit les tests testaient des détails d'implémentation (les deux sont des problèmes).
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Étape 1 — Établir une baseline de test
|
|
25
|
+
|
|
26
|
+
Avant de changer quoi que ce soit, confirmez que vous avez une couverture de test adéquate.
|
|
27
|
+
|
|
28
|
+
**Prompt 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
|
+
**Committez les ajouts de test avant de refactoriser.** Cela rend clair quels tests existaient avant vs. ont été ajoutés dans le cadre du refactoring.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Étape 2 — Définir la portée du refactoring
|
|
46
|
+
|
|
47
|
+
**Prompt 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
|
+
## Étape 3 — Refactoriser en petits incréments testables
|
|
65
|
+
|
|
66
|
+
Décomposez le refactoring en étapes suffisamment petites pour que les tests puissent vérifier chacune.
|
|
67
|
+
|
|
68
|
+
**Pour chaque incrément :**
|
|
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
|
+
**Après chaque incrément :**
|
|
80
|
+
```bash
|
|
81
|
+
# Exécuter les tests — doivent être verts avant l'étape suivante
|
|
82
|
+
npm test # or pytest, go test, etc.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Si les tests échouent après un changement purement structurel : arrêter, comprendre pourquoi, corriger avant de continuer. Un test en échec après un refactoring signifie que soit le refactoring a changé le comportement soit le test testait l'implémentation (les deux sont des problèmes à corriger maintenant).
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Étape 4 — Vérifier que le comportement externe est inchangé
|
|
90
|
+
|
|
91
|
+
Après tous les incréments :
|
|
92
|
+
|
|
93
|
+
**Prompt 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
|
+
## Étape 5 — Nettoyage
|
|
109
|
+
|
|
110
|
+
**Prompt 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
|
+
## Étape 6 — Committer avec un message clair
|
|
125
|
+
|
|
126
|
+
Structurez le ou les commits de refactoring pour raconter une histoire claire :
|
|
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
|
+
Ne jamais mélanger un commit de refactoring avec un commit de fonctionnalité ou de correction de bug. Les garder séparés.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Anti-patterns de refactoring
|
|
141
|
+
|
|
142
|
+
- **"Pendant que j'y suis..."** — faire un refactoring et une fonctionnalité en même temps. Arrêter. Terminer le refactoring d'abord.
|
|
143
|
+
- **Refactoriser sans tests** — vous allez casser quelque chose et ne pas le savoir
|
|
144
|
+
- **Refactoring big-bang** — tout changer d'un coup. Faire de façon incrémentale.
|
|
145
|
+
- **Renommer en dernière étape** — renommer d'abord (mécanique, faible risque), puis restructurer
|
|
146
|
+
- **Sauter la baseline** — supposer que les tests sont adéquats sans vérifier d'abord
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
> **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/)
|