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
|
+
> 🇩🇪 Dies ist die deutsche Übersetzung. [Englische Version](../debugging-session.md).
|
|
2
|
+
|
|
3
|
+
# Debugging-Sitzungs-Workflow
|
|
4
|
+
|
|
5
|
+
Systematischer Workflow zur Diagnose und Behebung von Bugs mit Claude Code — ohne Symptome zu jagen.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Wann diesen Workflow verwenden
|
|
10
|
+
- Ein Bug, der nicht sofort aus dem Code ersichtlich ist
|
|
11
|
+
- Ein fehlschlagender Test, dessen Ursache unklar ist
|
|
12
|
+
- Produktionsfehler, der lokal nicht reproduziert werden kann
|
|
13
|
+
- Intermittierende Fehler
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Schritt 1 — Zuerst eine Feedback-Schleife aufbauen
|
|
18
|
+
|
|
19
|
+
Vor der Untersuchung einen zuverlässigen Weg zur Reproduktion des Bugs erstellen. Diesen Schritt nicht überspringen.
|
|
20
|
+
|
|
21
|
+
**Claude fragen:**
|
|
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
|
+
**Nicht fortfahren, bis eine zuverlässige Reproduktion vorhanden ist.** Debuggen ohne Reproduktion ist Raten.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Schritt 2 — Den Wirkungsbereich isolieren
|
|
41
|
+
|
|
42
|
+
Verstehen, wo der Bug ĂĽberhaupt liegen kann, bevor Code gelesen wird.
|
|
43
|
+
|
|
44
|
+
**Claude fragen:**
|
|
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
|
+
## Schritt 3 — Hypothesen generieren
|
|
60
|
+
|
|
61
|
+
**Claude fragen:**
|
|
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
|
+
Die Hypothesen ĂĽberprĂĽfen. Eigene Ideen hinzufĂĽgen, die Claude verpasst hat. Nach Wahrscheinlichkeit ordnen.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Schritt 4 — Hypothesen testen, beginnend mit der wahrscheinlichsten
|
|
78
|
+
|
|
79
|
+
**FĂĽr jede Hypothese:**
|
|
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
|
+
Nach jedem Test:
|
|
92
|
+
- Wenn bestätigt: zu Schritt 5 übergehen
|
|
93
|
+
- Wenn widerlegt: zur nächsten Hypothese übergehen
|
|
94
|
+
- Wenn nicht eindeutig: Hypothese verfeinern und erneut testen
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Schritt 5 — Korrigieren und verifizieren
|
|
99
|
+
|
|
100
|
+
Sobald die Grundursache bestätigt ist:
|
|
101
|
+
|
|
102
|
+
**Claude fragen:**
|
|
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
|
+
## Schritt 6 — Post-Mortem (für schwerwiegende Bugs)
|
|
118
|
+
|
|
119
|
+
Für Bugs, die Benutzerauswirkungen, Datenverlust verursacht haben oder mehr als 2 Stunden zum Auffinden benötigten:
|
|
120
|
+
|
|
121
|
+
**Claude fragen:**
|
|
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
|
+
## Zu vermeidende Anti-Muster
|
|
137
|
+
|
|
138
|
+
- **Das Symptom beheben, nicht die Ursache** — wenn nicht verstanden wird warum, wurde es nicht behoben
|
|
139
|
+
- **Mehrere Dinge gleichzeitig ändern** — es wird nicht bekannt sein, welche Änderung es behoben hat
|
|
140
|
+
- **Debuggen ohne Reproduktion** — es wird geraten
|
|
141
|
+
- **Überall Instrumentierung hinzufügen** — spezifische Hypothesen gezielt ansprechen
|
|
142
|
+
- **Den Regressionstest überspringen** — der Bug kommt zurück
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
> **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,155 @@
|
|
|
1
|
+
> 🇩🇪 Dies ist die deutsche Übersetzung. [Englische Version](../feature-development.md).
|
|
2
|
+
|
|
3
|
+
# Feature-Entwicklungs-Workflow
|
|
4
|
+
|
|
5
|
+
End-to-End-Workflow fĂĽr die Umsetzung eines Features von der Idee bis zum gemergten PR mit Claude Code.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Wann diesen Workflow verwenden
|
|
10
|
+
- Ein neues Feature bauen, das mehr als eine Datei berĂĽhrt
|
|
11
|
+
- Eine Spezifikation oder ein Ticket implementieren, das vor dem Coden zerlegt werden muss
|
|
12
|
+
- Jedes Feature, bei dem ein strukturierter, ĂĽberprĂĽfbarer Prozess gewĂĽnscht wird
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Schritt 1 — Umfang definieren und validieren
|
|
17
|
+
|
|
18
|
+
Bevor Code geschrieben wird, genau festlegen, was gebaut wird.
|
|
19
|
+
|
|
20
|
+
**Claude fragen:**
|
|
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
|
+
**Worauf in der Antwort achten:**
|
|
39
|
+
- Dateien, die noch nicht bedacht wurden
|
|
40
|
+
- Edge Cases, die zu Bugs fĂĽhren wĂĽrden, wenn sie nicht beachtet werden
|
|
41
|
+
- Entscheidungen, die nach ihrer Treffen in CLAUDE.md einflieĂźen sollten
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Schritt 2 — Die Implementierung planen
|
|
46
|
+
|
|
47
|
+
Sobald der Umfang klar ist, einen sequenzierten Plan erstellen.
|
|
48
|
+
|
|
49
|
+
**Claude fragen:**
|
|
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
|
+
Den Plan ĂĽberprĂĽfen. Wenn ein Schritt zu groĂź ist, Claude bitten, ihn weiter aufzuteilen. Den Plan festlegen, bevor Code berĂĽhrt wird.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Schritt 3 — Schritt für Schritt implementieren
|
|
66
|
+
|
|
67
|
+
Einen Plan-Schritt nach dem anderen ausfĂĽhren. Nicht ĂĽberspringen.
|
|
68
|
+
|
|
69
|
+
**FĂĽr jeden Schritt:**
|
|
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
|
+
**Nach jedem Schritt:**
|
|
81
|
+
- Tests ausführen: grün bestätigen, bevor zum nächsten Schritt übergegangen wird
|
|
82
|
+
- Eigenes Diff ĂĽberprĂĽfen: ist das das Beabsichtigte?
|
|
83
|
+
- Wenn ein Schritt neue Komplexität aufdeckt, den Plan aktualisieren, bevor fortgefahren wird
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Schritt 4 — Integrationsprüfung
|
|
88
|
+
|
|
89
|
+
Sobald alle Schritte abgeschlossen sind, das vollständige Feature end-to-end verifizieren.
|
|
90
|
+
|
|
91
|
+
**Claude fragen:**
|
|
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
|
+
Alle gefundenen Probleme beheben, bevor fortgefahren wird.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Schritt 5 — Selbstüberprüfung
|
|
106
|
+
|
|
107
|
+
Vor dem Erstellen eines PRs die eigenen Änderungen überprüfen.
|
|
108
|
+
|
|
109
|
+
**Claude fragen:**
|
|
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
|
+
Alle CRITICAL-Probleme beheben. Bei SUGGESTED-Elementen nach eigenem Urteil vorgehen.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Schritt 6 — PR-Beschreibung
|
|
127
|
+
|
|
128
|
+
**Claude fragen:**
|
|
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
|
+
## Checkliste vor dem Mergen
|
|
145
|
+
|
|
146
|
+
- [ ] Alle Tests bestehen
|
|
147
|
+
- [ ] SelbstĂĽberprĂĽfung abgeschlossen, keine CRITICAL-Probleme
|
|
148
|
+
- [ ] Edge Cases aus Schritt 1 sind alle behandelt
|
|
149
|
+
- [ ] PR-Beschreibung geschrieben
|
|
150
|
+
- [ ] CLAUDE.md aktualisiert, wenn neue Entscheidungen getroffen wurden
|
|
151
|
+
- [ ] CONTEXT.md aktualisiert, wenn neue Domain-Begriffe eingefĂĽhrt wurden
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
> **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,175 @@
|
|
|
1
|
+
> 🇩🇪 Dies ist die deutsche Übersetzung. [Englische Version](../new-project-bootstrap.md).
|
|
2
|
+
|
|
3
|
+
# Neues Projekt Bootstrap Workflow
|
|
4
|
+
|
|
5
|
+
So wird ein neues Projekt mit Claude Code aufgesetzt — strukturiert, meinungsfreudig und bereit zum Bauen vom ersten Tag an.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Wann diesen Workflow verwenden
|
|
10
|
+
- Eine neue Anwendung von Grund auf starten
|
|
11
|
+
- Einen neuen Service in einem bestehenden System einrichten
|
|
12
|
+
- Ein neues Repository fĂĽr ein Nebenprojekt oder ein Kundenprojekt erstellen
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Schritt 1 — Definieren, was gebaut wird
|
|
17
|
+
|
|
18
|
+
Bevor Code oder Konfiguration berĂĽhrt wird, diese Fragen klar beantworten.
|
|
19
|
+
|
|
20
|
+
**Claude fragen:**
|
|
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
|
+
Nicht fortfahren, bis der Umfang schriftlich bestätigt ist.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Schritt 2 — Den Stack auswählen
|
|
41
|
+
|
|
42
|
+
**Claude fragen:**
|
|
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
|
+
Den Stack festlegen, bevor Code geschrieben wird. Entscheidungen in `docs/adr/` aufzeichnen, wenn sie nicht offensichtlich sind.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Schritt 3 — Die Projektstruktur bootstrappen
|
|
60
|
+
|
|
61
|
+
**Claude fragen:**
|
|
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
|
+
Verifizieren, dass es läuft, bevor fortgefahren wird.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Schritt 4 — CLAUDE.md einrichten
|
|
80
|
+
|
|
81
|
+
**Claude fragen:**
|
|
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
|
+
## Schritt 5 — Entwicklungsumgebung einrichten
|
|
100
|
+
|
|
101
|
+
**Claude fragen:**
|
|
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
|
+
## Schritt 6 — CI einrichten
|
|
119
|
+
|
|
120
|
+
**Claude fragen:**
|
|
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
|
+
Sicherstellen, dass CI beim ersten Commit besteht, bevor Feature-Entwicklung beginnt.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Schritt 7 — Erstes Feature planen
|
|
144
|
+
|
|
145
|
+
Sobald das Skeleton läuft und CI grün ist:
|
|
146
|
+
|
|
147
|
+
**Claude fragen:**
|
|
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
|
+
Siehe `workflows/feature-development.md`.
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Bootstrap-Checkliste
|
|
162
|
+
|
|
163
|
+
- [ ] Umfang definiert und schriftlich bestätigt
|
|
164
|
+
- [ ] Stack mit dokumentierter BegrĂĽndung entschieden
|
|
165
|
+
- [ ] Projektstruktur erstellt und läuft ("hello world" funktioniert)
|
|
166
|
+
- [ ] CLAUDE.md geschrieben und committet
|
|
167
|
+
- [ ] Docker Compose / lokale Abhängigkeiten laufen
|
|
168
|
+
- [ ] .env.example mit allen erforderlichen Vars committet
|
|
169
|
+
- [ ] Tests konfiguriert und mindestens einer bestehend
|
|
170
|
+
- [ ] CI-Pipeline grĂĽn beim ersten Push
|
|
171
|
+
- [ ] `docs/adr/` mit anfänglichen Architekturentscheidungen erstellt
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
> **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,150 @@
|
|
|
1
|
+
> 🇩🇪 Dies ist die deutsche Übersetzung. [Englische Version](../refactor-safely.md).
|
|
2
|
+
|
|
3
|
+
# Sicher Refactoren Workflow
|
|
4
|
+
|
|
5
|
+
So wird Code mit Claude Code refactoriert, ohne Verhalten zu brechen — mit Tests als Sicherheitsnetz während des gesamten Prozesses.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Wann diesen Workflow verwenden
|
|
10
|
+
- Funktionen aus einer groĂźen Methode extrahieren
|
|
11
|
+
- Module umbenennen und neu organisieren
|
|
12
|
+
- Ein Muster durch ein besseres ĂĽber mehrere Dateien ersetzen
|
|
13
|
+
- Duplikate in der gesamten Codebase reduzieren
|
|
14
|
+
- Die Struktur eines Moduls verbessern, ohne sein externes Verhalten zu ändern
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Die goldene Regel
|
|
19
|
+
|
|
20
|
+
**Niemals in demselben Commit refactoren und Verhalten ändern.** Ein Refactor bewahrt das externe Verhalten. Wenn Tests fehlschlagen, wurde entweder das Verhalten geändert oder die Tests testeten Implementierungsdetails (beides ist ein Problem).
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Schritt 1 — Eine Test-Baseline etablieren
|
|
25
|
+
|
|
26
|
+
Bevor irgendetwas geändert wird, eine angemessene Testabdeckung sicherstellen.
|
|
27
|
+
|
|
28
|
+
**Claude fragen:**
|
|
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
|
+
**Die Test-Ergänzungen committen, bevor refactoriert wird.** So ist klar, welche Tests vor dem Refactor existierten und welche als Teil des Refactors hinzugefügt wurden.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Schritt 2 — Den Refactor-Umfang definieren
|
|
46
|
+
|
|
47
|
+
**Claude fragen:**
|
|
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
|
+
## Schritt 3 — In kleinen, testbaren Schritten refactoren
|
|
65
|
+
|
|
66
|
+
Den Refactor in Schritte aufteilen, die klein genug sind, damit Tests jeden einzelnen verifizieren können.
|
|
67
|
+
|
|
68
|
+
**FĂĽr jeden Schritt:**
|
|
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
|
+
**Nach jedem Schritt:**
|
|
80
|
+
```bash
|
|
81
|
+
# Tests ausführen — müssen grün sein, bevor nächster Schritt beginnt
|
|
82
|
+
npm test # oder pytest, go test, etc.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Wenn Tests nach einer rein strukturellen Änderung fehlschlagen: stoppen, verstehen warum, beheben, bevor fortgefahren wird. Ein fehlschlagender Test nach einem Refactor bedeutet entweder, dass der Refactor Verhalten geändert hat oder der Test testete Implementierung (beides sind Probleme, die jetzt zu beheben sind).
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Schritt 4 — Externes Verhalten als unverändert verifizieren
|
|
90
|
+
|
|
91
|
+
Nach allen Schritten:
|
|
92
|
+
|
|
93
|
+
**Claude fragen:**
|
|
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
|
+
## Schritt 5 — Aufräumen
|
|
109
|
+
|
|
110
|
+
**Claude fragen:**
|
|
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
|
+
## Schritt 6 — Mit einer klaren Nachricht committen
|
|
125
|
+
|
|
126
|
+
Die Refactor-Commits so strukturieren, dass sie eine klare Geschichte erzählen:
|
|
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
|
+
Einen Refactor-Commit niemals mit einem Feature- oder Bugfix-Commit mischen. Getrennt halten.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Refactoring-Anti-Muster
|
|
141
|
+
|
|
142
|
+
- **"Wo ich schon dabei bin..."** — gleichzeitig refactoren und ein Feature hinzufügen. Aufhören. Erst den Refactor fertigstellen.
|
|
143
|
+
- **Refactoren ohne Tests** — etwas wird gebrochen und es wird nicht bemerkt
|
|
144
|
+
- **Big-Bang-Refactor** — alles auf einmal ändern. Inkrementell vorgehen.
|
|
145
|
+
- **Umbenennen als letzten Schritt** — zuerst umbenennen (mechanisch, geringes Risiko), dann umstrukturieren
|
|
146
|
+
- **Die Baseline überspringen** — annehmen, dass Tests ausreichend sind, ohne es zu prüfen
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
> **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/)
|