@tinkcarlos/skillora 0.2.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/skills/.temp-skill-index.md +245 -0
- package/.claude/skills/SKILL.md +264 -0
- package/.claude/skills/api-scaffolding/SKILL.md +431 -0
- package/.claude/skills/api-scaffolding/agents/backend-architect.md +282 -0
- package/.claude/skills/api-scaffolding/agents/django-pro.md +144 -0
- package/.claude/skills/api-scaffolding/agents/fastapi-pro.md +156 -0
- package/.claude/skills/api-scaffolding/agents/graphql-architect.md +146 -0
- package/.claude/skills/api-scaffolding/skills/fastapi-templates/SKILL.md +171 -0
- package/.claude/skills/api-testing-observability/SKILL.md +583 -0
- package/.claude/skills/api-testing-observability/agents/api-documenter.md +146 -0
- package/.claude/skills/api-testing-observability/commands/api-mock.md +1320 -0
- package/.claude/skills/brainstorming/SKILL.md +283 -0
- package/.claude/skills/bug-fixing/SKILL.md +382 -0
- package/.claude/skills/bug-fixing/references/backend-guide.md +132 -0
- package/.claude/skills/bug-fixing/references/bug-guide.md +354 -0
- package/.claude/skills/bug-fixing/references/bug-record-template.md +134 -0
- package/.claude/skills/bug-fixing/references/bug-records.md +88 -0
- package/.claude/skills/bug-fixing/references/code-review-gate.md +81 -0
- package/.claude/skills/bug-fixing/references/common-bugs.md +140 -0
- package/.claude/skills/bug-fixing/references/complete-workflow.md +361 -0
- package/.claude/skills/bug-fixing/references/config-driven-fixes.md +136 -0
- package/.claude/skills/bug-fixing/references/context-isolation-protocol.md +268 -0
- package/.claude/skills/bug-fixing/references/cross-surface-regression.md +120 -0
- package/.claude/skills/bug-fixing/references/database-investigation.md +129 -0
- package/.claude/skills/bug-fixing/references/dependency-and-integrity-protocol.md +369 -0
- package/.claude/skills/bug-fixing/references/fix-completeness-checklist.md +239 -0
- package/.claude/skills/bug-fixing/references/frontend-guide.md +219 -0
- package/.claude/skills/bug-fixing/references/fullstack-joint-guide.md +123 -0
- package/.claude/skills/bug-fixing/references/functional-breakage.md +117 -0
- package/.claude/skills/bug-fixing/references/ide-lint-errors-guide.md +176 -0
- package/.claude/skills/bug-fixing/references/impact-analysis.md +511 -0
- package/.claude/skills/bug-fixing/references/investigation-checklist.md +263 -0
- package/.claude/skills/bug-fixing/references/knowledge-extraction-guide.md +531 -0
- package/.claude/skills/bug-fixing/references/knowledge-workflow.md +212 -0
- package/.claude/skills/bug-fixing/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/bug-fixing/references/python-env-and-testing.md +126 -0
- package/.claude/skills/bug-fixing/references/rca-guide.md +428 -0
- package/.claude/skills/bug-fixing/references/similar-bug-patterns.md +113 -0
- package/.claude/skills/bug-fixing/references/skill-delegation-guide.md +350 -0
- package/.claude/skills/bug-fixing/references/skill-orchestration.md +155 -0
- package/.claude/skills/bug-fixing/references/testing-strategy.md +350 -0
- package/.claude/skills/bug-fixing/references/tooling-build-scripts.md +162 -0
- package/.claude/skills/bug-fixing/references/user-input-validation.md +77 -0
- package/.claude/skills/bug-fixing/references/ux-patterns.md +158 -0
- package/.claude/skills/bug-fixing/references/windows-terminal-hygiene.md +106 -0
- package/.claude/skills/bug-fixing/references/zero-regression-matrix.md +239 -0
- package/.claude/skills/bug-fixing/references/zero-risk-protocol.md +102 -0
- package/.claude/skills/bug-fixing/scripts/format_code.py +611 -0
- package/.claude/skills/bug-fixing/scripts/generate_report_template.py +74 -0
- package/.claude/skills/bug-fixing/scripts/lint_check.py +816 -0
- package/.claude/skills/bug-fixing/scripts/requirements.txt +36 -0
- package/.claude/skills/cicd-pipeline/SKILL.md +300 -0
- package/.claude/skills/code-review/SKILL.md +535 -0
- package/.claude/skills/code-review/references/anti-pattern-scan.md +102 -0
- package/.claude/skills/code-review/references/automated-analysis.md +456 -0
- package/.claude/skills/code-review/references/backend-common-issues.md +589 -0
- package/.claude/skills/code-review/references/backend-expert-guide.md +415 -0
- package/.claude/skills/code-review/references/backend-review.md +868 -0
- package/.claude/skills/code-review/references/batch-processing-strategy.md +198 -0
- package/.claude/skills/code-review/references/call-chain-analysis-protocol.md +166 -0
- package/.claude/skills/code-review/references/common-patterns.md +321 -0
- package/.claude/skills/code-review/references/configuration-review.md +425 -0
- package/.claude/skills/code-review/references/control-flow-completeness.md +114 -0
- package/.claude/skills/code-review/references/database-review.md +298 -0
- package/.claude/skills/code-review/references/dependency-and-integrity-protocol.md +313 -0
- package/.claude/skills/code-review/references/external-standards.md +51 -0
- package/.claude/skills/code-review/references/feature-review.md +329 -0
- package/.claude/skills/code-review/references/file-review-template.md +326 -0
- package/.claude/skills/code-review/references/frontend-advanced.md +654 -0
- package/.claude/skills/code-review/references/frontend-common-issues.md +482 -0
- package/.claude/skills/code-review/references/frontend-expert-guide.md +342 -0
- package/.claude/skills/code-review/references/frontend-review.md +783 -0
- package/.claude/skills/code-review/references/fullstack-consistency.md +418 -0
- package/.claude/skills/code-review/references/fullstack-review.md +477 -0
- package/.claude/skills/code-review/references/functional-completeness.md +386 -0
- package/.claude/skills/code-review/references/hidden-bugs-detection.md +473 -0
- package/.claude/skills/code-review/references/ide-lint-errors-guide.md +173 -0
- package/.claude/skills/code-review/references/infrastructure-review.md +453 -0
- package/.claude/skills/code-review/references/iteration-review.md +264 -0
- package/.claude/skills/code-review/references/job-review.md +335 -0
- package/.claude/skills/code-review/references/layered-checklist-protocol.md +157 -0
- package/.claude/skills/code-review/references/logic-completeness.md +535 -0
- package/.claude/skills/code-review/references/mandatory-checklist.md +288 -0
- package/.claude/skills/code-review/references/multi-language-guide.md +800 -0
- package/.claude/skills/code-review/references/new-project-review.md +226 -0
- package/.claude/skills/code-review/references/non-code-files-review.md +451 -0
- package/.claude/skills/code-review/references/overlooked-issues.md +657 -0
- package/.claude/skills/code-review/references/platform-specific-review.md +195 -0
- package/.claude/skills/code-review/references/precision-analysis-protocol.md +260 -0
- package/.claude/skills/code-review/references/python-patterns.md +494 -0
- package/.claude/skills/code-review/references/rca-techniques.md +362 -0
- package/.claude/skills/code-review/references/report-template.md +430 -0
- package/.claude/skills/code-review/references/resource-limits-and-degradation.md +137 -0
- package/.claude/skills/code-review/references/review-dimensions.md +311 -0
- package/.claude/skills/code-review/references/review-guide.md +202 -0
- package/.claude/skills/code-review/references/review-knowledge-workflow.md +257 -0
- package/.claude/skills/code-review/references/review-progress-tracker-protocol.md +172 -0
- package/.claude/skills/code-review/references/review-record-template.md +195 -0
- package/.claude/skills/code-review/references/skill-orchestration.md +143 -0
- package/.claude/skills/code-review/references/ui-ux-review.md +470 -0
- package/.claude/skills/containerization/SKILL.md +313 -0
- package/.claude/skills/database-migrations/agents/database-admin.md +142 -0
- package/.claude/skills/database-migrations/agents/database-optimizer.md +144 -0
- package/.claude/skills/database-migrations/commands/migration-observability.md +408 -0
- package/.claude/skills/database-migrations/commands/sql-migrations.md +492 -0
- package/.claude/skills/finishing-a-development-branch/SKILL.md +319 -0
- package/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/.claude/skills/frontend-design/SKILL.md +587 -0
- package/.claude/skills/frontend-design/references/color-consistency.md +487 -0
- package/.claude/skills/frontend-design/references/color-palettes-full.md +657 -0
- package/.claude/skills/frontend-design/references/design-system-generator.md +285 -0
- package/.claude/skills/frontend-design/references/font-pairings-full.md +705 -0
- package/.claude/skills/frontend-design/references/industry-anti-patterns.md +281 -0
- package/.claude/skills/frontend-design/references/layout-anti-patterns.md +582 -0
- package/.claude/skills/frontend-design/references/motion-patterns.md +659 -0
- package/.claude/skills/frontend-design/references/pre-delivery-checklist.md +153 -0
- package/.claude/skills/frontend-design/references/responsive-design.md +555 -0
- package/.claude/skills/frontend-design/references/style-modification-rules.md +335 -0
- package/.claude/skills/frontend-design/references/ui-styles-full.md +383 -0
- package/.claude/skills/frontend-design/references/ui-styles-rating.md +191 -0
- package/.claude/skills/frontend-design/references/ux-guidelines.md +640 -0
- package/.claude/skills/fullstack-developer/SKILL.md +512 -0
- package/.claude/skills/fullstack-developer/references/api-contract-guide.md +312 -0
- package/.claude/skills/fullstack-developer/references/api-response-patterns.md +223 -0
- package/.claude/skills/fullstack-developer/references/async-patterns.md +220 -0
- package/.claude/skills/fullstack-developer/references/bug-prevention.md +914 -0
- package/.claude/skills/fullstack-developer/references/code-quality-checklist.md +271 -0
- package/.claude/skills/fullstack-developer/references/complete-development-workflow.md +278 -0
- package/.claude/skills/fullstack-developer/references/context-isolation-protocol.md +256 -0
- package/.claude/skills/fullstack-developer/references/database-migration.md +331 -0
- package/.claude/skills/fullstack-developer/references/dependency-and-integrity-protocol.md +390 -0
- package/.claude/skills/fullstack-developer/references/development-phases.md +333 -0
- package/.claude/skills/fullstack-developer/references/expert-guide.md +214 -0
- package/.claude/skills/fullstack-developer/references/file-import-patterns.md +114 -0
- package/.claude/skills/fullstack-developer/references/graceful-degradation-patterns.md +78 -0
- package/.claude/skills/fullstack-developer/references/ide-lint-errors-guide.md +183 -0
- package/.claude/skills/fullstack-developer/references/integration-testing.md +301 -0
- package/.claude/skills/fullstack-developer/references/mock-api-patterns.md +307 -0
- package/.claude/skills/fullstack-developer/references/phase-gate-template.md +249 -0
- package/.claude/skills/fullstack-developer/references/post-edit-quality-gate.md +30 -0
- package/.claude/skills/fullstack-developer/references/python-engineering.md +79 -0
- package/.claude/skills/fullstack-developer/references/skill-orchestration.md +214 -0
- package/.claude/skills/fullstack-developer/references/skill-router-table.md +304 -0
- package/.claude/skills/fullstack-developer/references/state-sync.md +217 -0
- package/.claude/skills/fullstack-developer/references/ui-testing-checklist.md +292 -0
- package/.claude/skills/fullstack-developer/scripts/format_code.py +611 -0
- package/.claude/skills/fullstack-developer/scripts/lint_check.py +816 -0
- package/.claude/skills/fullstack-developer/scripts/requirements.txt +36 -0
- package/.claude/skills/performance-optimization/SKILL.md +250 -0
- package/.claude/skills/product-requirements/SKILL.md +357 -0
- package/.claude/skills/product-requirements/references/acceptance-criteria.md +335 -0
- package/.claude/skills/product-requirements/references/answer-first-questioning-protocol.md +299 -0
- package/.claude/skills/product-requirements/references/competitive-analysis-guide.md +183 -0
- package/.claude/skills/product-requirements/references/document-accuracy-protocol.md +253 -0
- package/.claude/skills/product-requirements/references/document-management-protocol.md +278 -0
- package/.claude/skills/product-requirements/references/external-standards.md +62 -0
- package/.claude/skills/product-requirements/references/feature-spec-template.md +359 -0
- package/.claude/skills/product-requirements/references/knowledge-acquisition-protocol.md +251 -0
- package/.claude/skills/product-requirements/references/plan-execution-protocol.md +334 -0
- package/.claude/skills/product-requirements/references/plan-generation-protocol.md +264 -0
- package/.claude/skills/product-requirements/references/prioritization-frameworks.md +80 -0
- package/.claude/skills/product-requirements/references/requirement-decomposition-protocol.md +291 -0
- package/.claude/skills/product-requirements/references/user-story-examples.md +297 -0
- package/.claude/skills/product-requirements/references/workflow-templates.md +266 -0
- package/.claude/skills/react-best-practices/SKILL.md +198 -0
- package/.claude/skills/react-best-practices/references/advanced-patterns.md +94 -0
- package/.claude/skills/react-best-practices/references/bundle-optimization.md +182 -0
- package/.claude/skills/react-best-practices/references/client-data-fetching.md +112 -0
- package/.claude/skills/react-best-practices/references/complete-guide.md +2249 -0
- package/.claude/skills/react-best-practices/references/eliminating-waterfalls.md +169 -0
- package/.claude/skills/react-best-practices/references/javascript-performance.md +256 -0
- package/.claude/skills/react-best-practices/references/rendering-performance.md +230 -0
- package/.claude/skills/react-best-practices/references/rerender-optimization.md +214 -0
- package/.claude/skills/react-best-practices/references/server-performance.md +182 -0
- package/.claude/skills/security-audit/SKILL.md +226 -0
- package/.claude/skills/shared-references/advanced-debugging-techniques.md +186 -0
- package/.claude/skills/shared-references/code-quality-checklist.md +218 -0
- package/.claude/skills/shared-references/code-review-efficiency-guide.md +125 -0
- package/.claude/skills/shared-references/mcp-dependency-compatibility-protocol.md +276 -0
- package/.claude/skills/shared-references/skill-call-graph.md +230 -0
- package/.claude/skills/shared-references/skill-orchestration-protocol.md +281 -0
- package/.claude/skills/shared-references/subagent-dispatch-templates.md +199 -0
- package/.claude/skills/skill-expert-skills/LICENSE.txt +204 -0
- package/.claude/skills/skill-expert-skills/QUICK_NAVIGATION.md +374 -0
- package/.claude/skills/skill-expert-skills/SKILL.md +247 -0
- package/.claude/skills/skill-expert-skills/docs/_index.md +91 -0
- package/.claude/skills/skill-expert-skills/references/deep-research-methodology.md +389 -0
- package/.claude/skills/skill-expert-skills/references/docs-generation-workflow.md +398 -0
- package/.claude/skills/skill-expert-skills/references/domain-expertise-protocol.md +343 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/_index.md +54 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/backend-expertise.md +517 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/bug-fixing-expertise.md +363 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/code-review-expertise.md +392 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge/frontend-expertise.md +410 -0
- package/.claude/skills/skill-expert-skills/references/domain-knowledge-template.md +503 -0
- package/.claude/skills/skill-expert-skills/references/examples.md +782 -0
- package/.claude/skills/skill-expert-skills/references/integration-examples.md +655 -0
- package/.claude/skills/skill-expert-skills/references/knowledge-validation-checklist.md +246 -0
- package/.claude/skills/skill-expert-skills/references/latest-knowledge-acquisition.md +461 -0
- package/.claude/skills/skill-expert-skills/references/mcp-tools-guide.md +439 -0
- package/.claude/skills/skill-expert-skills/references/official-best-practices.md +616 -0
- package/.claude/skills/skill-expert-skills/references/patterns.md +218 -0
- package/.claude/skills/skill-expert-skills/references/plugin-skills-guide.md +432 -0
- package/.claude/skills/skill-expert-skills/references/requirement-elicitation-protocol.md +290 -0
- package/.claude/skills/skill-expert-skills/references/skill-creator-SKILL.md +353 -0
- package/.claude/skills/skill-expert-skills/references/skill-templates.md +583 -0
- package/.claude/skills/skill-expert-skills/references/skills-knowledge-base.md +561 -0
- package/.claude/skills/skill-expert-skills/references/tools-guide.md +379 -0
- package/.claude/skills/skill-expert-skills/references/troubleshooting.md +378 -0
- package/.claude/skills/skill-expert-skills/references/universality-guide.md +205 -0
- package/.claude/skills/skill-expert-skills/references/writing-style-guide.md +466 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/quick_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/__pycache__/universal_validate.cpython-313.pyc +0 -0
- package/.claude/skills/skill-expert-skills/scripts/analyze_trigger.py +425 -0
- package/.claude/skills/skill-expert-skills/scripts/diff_with_official.py +188 -0
- package/.claude/skills/skill-expert-skills/scripts/init_skill.py +349 -0
- package/.claude/skills/skill-expert-skills/scripts/package_skill.py +156 -0
- package/.claude/skills/skill-expert-skills/scripts/quick_validate.py +493 -0
- package/.claude/skills/skill-expert-skills/scripts/requirements.txt +2 -0
- package/.claude/skills/skill-expert-skills/scripts/universal_validate.py +182 -0
- package/.claude/skills/skill-expert-skills/scripts/upgrade_skill.py +431 -0
- package/.claude/skills/subagent-driven-development/SKILL.md +268 -0
- package/.claude/skills/test-driven-development/SKILL.md +246 -0
- package/.claude/skills/test-driven-development/references/testing-anti-patterns.md +192 -0
- package/.claude/skills/using-git-worktrees/SKILL.md +266 -0
- package/.claude/skills/using-skillstack/SKILL.md +127 -0
- package/.claude/skills/vercel-deploy/SKILL.md +166 -0
- package/.claude/skills/vercel-deploy/scripts/deploy.sh +249 -0
- package/.claude/skills/verification-before-completion/SKILL.md +305 -0
- package/.claude/skills/writing-plans/SKILL.md +259 -0
- package/README.md +69 -0
- package/bin/cli.js +468 -0
- package/lib/init.js +333 -0
- package/package.json +29 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: test-driven-development
|
|
3
|
+
description: |
|
|
4
|
+
Strict TDD workflow with RED-GREEN-REFACTOR cycle.
|
|
5
|
+
|
|
6
|
+
Use when:
|
|
7
|
+
- Writing new features or functionality
|
|
8
|
+
- Fixing bugs (write failing test first)
|
|
9
|
+
- Refactoring existing code
|
|
10
|
+
- Any behavior changes
|
|
11
|
+
|
|
12
|
+
Key Features:
|
|
13
|
+
- Iron Law: NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
|
|
14
|
+
- Mandatory "Watch it fail" verification
|
|
15
|
+
- Minimal code to pass tests
|
|
16
|
+
- Frequent commits after each green
|
|
17
|
+
|
|
18
|
+
Exceptions (ask human first): Throwaway prototypes, generated code, config files.
|
|
19
|
+
allowed-tools: [read, write, execute, grep, glob]
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Test-Driven Development (TDD)
|
|
23
|
+
|
|
24
|
+
**Core Principle**: Write the test first. Watch it fail. Write minimal code to pass.
|
|
25
|
+
|
|
26
|
+
## The Iron Law
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If you wrote code before the test? **Delete it. Start over.** No keeping it as "reference" or adapting it.
|
|
33
|
+
|
|
34
|
+
## When to Use
|
|
35
|
+
|
|
36
|
+
**Always:**
|
|
37
|
+
- New features
|
|
38
|
+
- Bug fixes
|
|
39
|
+
- Refactoring
|
|
40
|
+
- Behavior changes
|
|
41
|
+
|
|
42
|
+
**Exceptions (ask your human partner):**
|
|
43
|
+
- Throwaway prototypes
|
|
44
|
+
- Generated code
|
|
45
|
+
- Configuration files
|
|
46
|
+
|
|
47
|
+
## The RED-GREEN-REFACTOR Cycle
|
|
48
|
+
|
|
49
|
+
### 🔴 RED - Write Failing Test
|
|
50
|
+
|
|
51
|
+
1. **One behavior per test** - Test exactly one thing
|
|
52
|
+
2. **Clear descriptive name** - `test_user_can_login_with_valid_credentials`
|
|
53
|
+
3. **Use real code** - Mocks only if unavoidable
|
|
54
|
+
4. **Arrange-Act-Assert** pattern
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
def test_calculate_total_with_discount():
|
|
58
|
+
# Arrange
|
|
59
|
+
cart = Cart()
|
|
60
|
+
cart.add_item(Item(price=100))
|
|
61
|
+
|
|
62
|
+
# Act
|
|
63
|
+
total = cart.calculate_total(discount=0.1)
|
|
64
|
+
|
|
65
|
+
# Assert
|
|
66
|
+
assert total == 90
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### ⚠️ VERIFY RED - Watch It Fail
|
|
70
|
+
|
|
71
|
+
**MANDATORY. NEVER SKIP.**
|
|
72
|
+
|
|
73
|
+
1. Run the test
|
|
74
|
+
2. Confirm it **fails** (not errors)
|
|
75
|
+
3. Verify it fails for the **expected reason**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Run single test
|
|
79
|
+
pytest tests/test_cart.py::test_calculate_total_with_discount -v
|
|
80
|
+
|
|
81
|
+
# Expected output: FAILED (not ERROR)
|
|
82
|
+
# Expected reason: "AttributeError: 'Cart' has no attribute 'calculate_total'"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**If test passes immediately**: Your test is wrong. Delete and rewrite.
|
|
86
|
+
|
|
87
|
+
### 🟢 GREEN - Minimal Code
|
|
88
|
+
|
|
89
|
+
Write the **simplest code** to make the test pass.
|
|
90
|
+
|
|
91
|
+
**DO:**
|
|
92
|
+
- Return hardcoded values if that passes
|
|
93
|
+
- Write the most naive implementation
|
|
94
|
+
- Focus only on passing this one test
|
|
95
|
+
|
|
96
|
+
**DON'T:**
|
|
97
|
+
- Add features not tested
|
|
98
|
+
- Over-engineer
|
|
99
|
+
- "Improve" while implementing
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
# Minimal implementation to pass
|
|
103
|
+
def calculate_total(self, discount=0):
|
|
104
|
+
total = sum(item.price for item in self.items)
|
|
105
|
+
return total * (1 - discount)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### ⚠️ VERIFY GREEN - Watch It Pass
|
|
109
|
+
|
|
110
|
+
**MANDATORY.**
|
|
111
|
+
|
|
112
|
+
1. Run the test
|
|
113
|
+
2. Confirm it **passes**
|
|
114
|
+
3. Confirm **all other tests** still pass
|
|
115
|
+
4. Output is **clean** (no warnings)
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Run all tests
|
|
119
|
+
pytest -v
|
|
120
|
+
|
|
121
|
+
# Expected: ALL PASSED
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 🔵 REFACTOR - Clean Up
|
|
125
|
+
|
|
126
|
+
**Only after green.** Keep tests green throughout.
|
|
127
|
+
|
|
128
|
+
**DO:**
|
|
129
|
+
- Remove duplication
|
|
130
|
+
- Improve names
|
|
131
|
+
- Extract helpers
|
|
132
|
+
- Simplify logic
|
|
133
|
+
|
|
134
|
+
**DON'T:**
|
|
135
|
+
- Add new behavior
|
|
136
|
+
- Change what tests verify
|
|
137
|
+
- Skip running tests
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# After each refactor change
|
|
141
|
+
pytest -v # Must stay green
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### 📝 COMMIT - Lock In Progress
|
|
145
|
+
|
|
146
|
+
After each successful RED-GREEN-REFACTOR cycle:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
git add .
|
|
150
|
+
git commit -m "feat: add discount calculation to cart"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Common Rationalizations (All Invalid)
|
|
154
|
+
|
|
155
|
+
| Rationalization | Why It's Wrong |
|
|
156
|
+
|-----------------|----------------|
|
|
157
|
+
| "Too simple to test" | Simple code breaks too |
|
|
158
|
+
| "I'll test after" | Tests passing immediately prove nothing |
|
|
159
|
+
| "Already manually tested" | Ad-hoc ≠ systematic |
|
|
160
|
+
| "Deleting X hours is wasteful" | Sunk cost fallacy |
|
|
161
|
+
| "Just this once" | Slippery slope |
|
|
162
|
+
| "Keep as reference" | Reference becomes production |
|
|
163
|
+
|
|
164
|
+
## Red Flags - STOP and Start Over
|
|
165
|
+
|
|
166
|
+
- ❌ Code written before test
|
|
167
|
+
- ❌ Test passes immediately
|
|
168
|
+
- ❌ Rationalizing "just this once"
|
|
169
|
+
- ❌ "Keep as reference"
|
|
170
|
+
- ❌ Multiple behaviors in one test
|
|
171
|
+
- ❌ Skipping "watch it fail" step
|
|
172
|
+
|
|
173
|
+
## 🔴 Failure Escalation Protocol
|
|
174
|
+
|
|
175
|
+
| 失败次数 | 动作 |
|
|
176
|
+
|---------|------|
|
|
177
|
+
| 1次 | 重试,检查测试逻辑 |
|
|
178
|
+
| 2次 | 审视设计假设 |
|
|
179
|
+
| 3次 | **停止!质疑架构/设计** |
|
|
180
|
+
|
|
181
|
+
**3次测试失败后必须:**
|
|
182
|
+
1. 暂停当前实现
|
|
183
|
+
2. 重新审视需求理解
|
|
184
|
+
3. 考虑是否需要重新设计
|
|
185
|
+
4. 询问用户是否继续
|
|
186
|
+
|
|
187
|
+
## 🔴 Mandatory code-review
|
|
188
|
+
|
|
189
|
+
After completing TDD cycle, **MUST** invoke `code-review` skill before declaring done.
|
|
190
|
+
|
|
191
|
+
## Quick Reference
|
|
192
|
+
|
|
193
|
+
| Phase | Action | Verify |
|
|
194
|
+
|-------|--------|--------|
|
|
195
|
+
| 🔴 RED | Write failing test | Test FAILS for expected reason |
|
|
196
|
+
| 🟢 GREEN | Write minimal code | Test PASSES, all tests pass |
|
|
197
|
+
| 🔵 REFACTOR | Clean up code | All tests still pass |
|
|
198
|
+
| 📝 COMMIT | Lock in progress | Clean commit |
|
|
199
|
+
|
|
200
|
+
## Verification Checklist
|
|
201
|
+
|
|
202
|
+
Before declaring "done":
|
|
203
|
+
|
|
204
|
+
- [ ] Every function has a test
|
|
205
|
+
- [ ] Watched each test fail first
|
|
206
|
+
- [ ] Wrote minimal code to pass
|
|
207
|
+
- [ ] All tests pass with clean output
|
|
208
|
+
- [ ] Edge cases covered
|
|
209
|
+
- [ ] Committed after each cycle
|
|
210
|
+
|
|
211
|
+
## Output Contract
|
|
212
|
+
|
|
213
|
+
```markdown
|
|
214
|
+
## TDD Session Report
|
|
215
|
+
|
|
216
|
+
### Tests Written
|
|
217
|
+
| Test | Purpose | Verified Fail | Verified Pass |
|
|
218
|
+
|------|---------|---------------|---------------|
|
|
219
|
+
| test_xxx | ... | ✅ | ✅ |
|
|
220
|
+
|
|
221
|
+
### Implementation
|
|
222
|
+
[What was implemented]
|
|
223
|
+
|
|
224
|
+
### Commits
|
|
225
|
+
- `abc123` - feat: add X
|
|
226
|
+
- `def456` - feat: add Y
|
|
227
|
+
|
|
228
|
+
### Verification
|
|
229
|
+
- [ ] All tests pass
|
|
230
|
+
- [ ] No skipped "watch it fail" steps
|
|
231
|
+
- [ ] Minimal code written
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## The Final Rule
|
|
235
|
+
|
|
236
|
+
> "Production code exists → test exists and failed first. Otherwise → not TDD."
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Reference Navigation
|
|
241
|
+
|
|
242
|
+
| Situation | Read This |
|
|
243
|
+
|-----------|-----------|
|
|
244
|
+
| Common testing mistakes | `references/testing-anti-patterns.md` |
|
|
245
|
+
| Test naming and structure | `references/testing-anti-patterns.md` |
|
|
246
|
+
| Testing skills themselves | `../skill-creator/references/testing-skills-with-subagents.md` |
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Testing Anti-Patterns
|
|
2
|
+
|
|
3
|
+
> 来源: Superpowers 项目最佳实践
|
|
4
|
+
|
|
5
|
+
## 常见测试反模式
|
|
6
|
+
|
|
7
|
+
### 1. 测试后写 (Test-After)
|
|
8
|
+
|
|
9
|
+
**反模式**:
|
|
10
|
+
```python
|
|
11
|
+
# 先写实现
|
|
12
|
+
def calculate_total(items):
|
|
13
|
+
return sum(item.price for item in items)
|
|
14
|
+
|
|
15
|
+
# 然后写测试
|
|
16
|
+
def test_calculate_total():
|
|
17
|
+
assert calculate_total([Item(10), Item(20)]) == 30
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**问题**: 测试立即通过,你不知道它是否测试了正确的东西。
|
|
21
|
+
|
|
22
|
+
**正确做法**: 先写测试,看它失败,然后实现。
|
|
23
|
+
|
|
24
|
+
### 2. 测试实现而非行为
|
|
25
|
+
|
|
26
|
+
**反模式**:
|
|
27
|
+
```python
|
|
28
|
+
def test_uses_sum_function():
|
|
29
|
+
# 测试内部实现
|
|
30
|
+
with patch('builtins.sum') as mock_sum:
|
|
31
|
+
calculate_total([Item(10)])
|
|
32
|
+
mock_sum.assert_called_once()
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**问题**: 实现改变时测试就会失败,即使行为正确。
|
|
36
|
+
|
|
37
|
+
**正确做法**: 测试输入/输出行为。
|
|
38
|
+
|
|
39
|
+
### 3. 过度 Mock
|
|
40
|
+
|
|
41
|
+
**反模式**:
|
|
42
|
+
```python
|
|
43
|
+
def test_user_login():
|
|
44
|
+
mock_db = Mock()
|
|
45
|
+
mock_hasher = Mock()
|
|
46
|
+
mock_session = Mock()
|
|
47
|
+
mock_logger = Mock()
|
|
48
|
+
# ... 10 个 mock
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**问题**: 测试变得脆弱,不测试真实行为。
|
|
52
|
+
|
|
53
|
+
**正确做法**: 只 mock 外部依赖 (数据库、网络),使用真实对象。
|
|
54
|
+
|
|
55
|
+
### 4. 测试太多东西
|
|
56
|
+
|
|
57
|
+
**反模式**:
|
|
58
|
+
```python
|
|
59
|
+
def test_user_registration():
|
|
60
|
+
# 测试注册
|
|
61
|
+
user = register("test@example.com", "password")
|
|
62
|
+
assert user.email == "test@example.com"
|
|
63
|
+
|
|
64
|
+
# 也测试登录
|
|
65
|
+
session = login("test@example.com", "password")
|
|
66
|
+
assert session.is_valid
|
|
67
|
+
|
|
68
|
+
# 也测试权限
|
|
69
|
+
assert user.can_access("dashboard")
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**问题**: 一个测试失败,不知道哪个功能坏了。
|
|
73
|
+
|
|
74
|
+
**正确做法**: 一个测试一个行为。
|
|
75
|
+
|
|
76
|
+
### 5. 不确定性测试
|
|
77
|
+
|
|
78
|
+
**反模式**:
|
|
79
|
+
```python
|
|
80
|
+
def test_random_selection():
|
|
81
|
+
result = select_random_item([1, 2, 3])
|
|
82
|
+
assert result in [1, 2, 3] # 总是通过
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**问题**: 测试不验证任何有意义的东西。
|
|
86
|
+
|
|
87
|
+
**正确做法**: 使用种子或测试分布。
|
|
88
|
+
|
|
89
|
+
### 6. 睡眠等待
|
|
90
|
+
|
|
91
|
+
**反模式**:
|
|
92
|
+
```python
|
|
93
|
+
def test_async_operation():
|
|
94
|
+
start_async_task()
|
|
95
|
+
time.sleep(5) # 希望它完成了
|
|
96
|
+
assert get_result() == expected
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**问题**: 慢、不可靠、可能在 CI 中失败。
|
|
100
|
+
|
|
101
|
+
**正确做法**: 使用轮询或回调。
|
|
102
|
+
|
|
103
|
+
### 7. 测试私有方法
|
|
104
|
+
|
|
105
|
+
**反模式**:
|
|
106
|
+
```python
|
|
107
|
+
def test_internal_helper():
|
|
108
|
+
obj = MyClass()
|
|
109
|
+
result = obj._private_helper(data)
|
|
110
|
+
assert result == expected
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**问题**: 私有方法是实现细节,可能改变。
|
|
114
|
+
|
|
115
|
+
**正确做法**: 通过公共 API 测试。
|
|
116
|
+
|
|
117
|
+
### 8. 共享状态
|
|
118
|
+
|
|
119
|
+
**反模式**:
|
|
120
|
+
```python
|
|
121
|
+
class TestUser:
|
|
122
|
+
user = None # 共享状态
|
|
123
|
+
|
|
124
|
+
def test_create(self):
|
|
125
|
+
self.user = create_user()
|
|
126
|
+
|
|
127
|
+
def test_update(self):
|
|
128
|
+
self.user.name = "new" # 依赖前一个测试
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**问题**: 测试顺序依赖,难以隔离失败。
|
|
132
|
+
|
|
133
|
+
**正确做法**: 每个测试独立设置。
|
|
134
|
+
|
|
135
|
+
## 测试质量检查清单
|
|
136
|
+
|
|
137
|
+
### 每个测试应该:
|
|
138
|
+
|
|
139
|
+
- [ ] 测试一个行为
|
|
140
|
+
- [ ] 有描述性名称
|
|
141
|
+
- [ ] 独立运行
|
|
142
|
+
- [ ] 快速执行 (< 1秒)
|
|
143
|
+
- [ ] 确定性 (每次相同结果)
|
|
144
|
+
|
|
145
|
+
### 测试套件应该:
|
|
146
|
+
|
|
147
|
+
- [ ] 覆盖所有公共 API
|
|
148
|
+
- [ ] 包含边界情况
|
|
149
|
+
- [ ] 包含错误情况
|
|
150
|
+
- [ ] 在 CI 中运行
|
|
151
|
+
- [ ] 快速完成 (< 5分钟)
|
|
152
|
+
|
|
153
|
+
## 好测试的特征
|
|
154
|
+
|
|
155
|
+
| 特征 | 描述 |
|
|
156
|
+
|------|------|
|
|
157
|
+
| **Fast** | 毫秒级执行 |
|
|
158
|
+
| **Isolated** | 不依赖其他测试 |
|
|
159
|
+
| **Repeatable** | 每次相同结果 |
|
|
160
|
+
| **Self-validating** | 自动判断通过/失败 |
|
|
161
|
+
| **Timely** | 在代码之前写 |
|
|
162
|
+
|
|
163
|
+
## 测试命名规范
|
|
164
|
+
|
|
165
|
+
```python
|
|
166
|
+
# 格式: test_<被测方法>_<场景>_<预期结果>
|
|
167
|
+
|
|
168
|
+
def test_calculate_total_with_empty_cart_returns_zero():
|
|
169
|
+
...
|
|
170
|
+
|
|
171
|
+
def test_login_with_invalid_password_raises_error():
|
|
172
|
+
...
|
|
173
|
+
|
|
174
|
+
def test_user_can_access_own_profile():
|
|
175
|
+
...
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## 测试结构 (AAA)
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
def test_example():
|
|
182
|
+
# Arrange - 设置
|
|
183
|
+
user = User(name="test")
|
|
184
|
+
cart = Cart()
|
|
185
|
+
cart.add_item(Item(price=100))
|
|
186
|
+
|
|
187
|
+
# Act - 执行
|
|
188
|
+
total = cart.calculate_total(user)
|
|
189
|
+
|
|
190
|
+
# Assert - 验证
|
|
191
|
+
assert total == 100
|
|
192
|
+
```
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: using-git-worktrees
|
|
3
|
+
description: |
|
|
4
|
+
Create isolated development environments using git worktrees.
|
|
5
|
+
|
|
6
|
+
Use when:
|
|
7
|
+
- Starting a new feature after design approval
|
|
8
|
+
- Need isolated workspace for development
|
|
9
|
+
- Working on multiple features in parallel
|
|
10
|
+
|
|
11
|
+
Key Features:
|
|
12
|
+
- Isolated branch and directory
|
|
13
|
+
- Clean test baseline verification
|
|
14
|
+
- Project setup automation
|
|
15
|
+
- Easy cleanup when done
|
|
16
|
+
|
|
17
|
+
Workflow: brainstorming → using-git-worktrees → writing-plans → development
|
|
18
|
+
allowed-tools: [read, write, execute, grep, glob]
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Using Git Worktrees
|
|
22
|
+
|
|
23
|
+
**Core Principle**: Create isolated workspaces for each feature to prevent cross-contamination and enable parallel development.
|
|
24
|
+
|
|
25
|
+
## 🔒 Directory Priority
|
|
26
|
+
|
|
27
|
+
查找 worktree 目录的优先级:
|
|
28
|
+
|
|
29
|
+
1. `.worktrees/` (项目内,推荐)
|
|
30
|
+
2. `worktrees/` (项目内)
|
|
31
|
+
3. `CLAUDE.md` 中指定的路径
|
|
32
|
+
4. 询问用户
|
|
33
|
+
|
|
34
|
+
## 🔒 Safety Verification (MANDATORY)
|
|
35
|
+
|
|
36
|
+
创建 worktree 前必须验证:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# 1. 检查目录是否被 gitignore (应该被忽略)
|
|
40
|
+
git check-ignore -v <worktree-path>
|
|
41
|
+
|
|
42
|
+
# 2. 检查 worktree 是否已存在
|
|
43
|
+
git worktree list | grep <branch-name>
|
|
44
|
+
|
|
45
|
+
# 3. 检查分支是否已存在
|
|
46
|
+
git branch --list <branch-name>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**如果目录未被 gitignore:** 警告用户,worktree 可能被意外提交
|
|
50
|
+
**如果 worktree 已存在:** 使用现有 worktree 或选择新名称
|
|
51
|
+
**如果分支已存在:** 询问用户是否使用现有分支
|
|
52
|
+
|
|
53
|
+
## When to Use
|
|
54
|
+
|
|
55
|
+
- After design approval from brainstorming
|
|
56
|
+
- Before writing implementation plans
|
|
57
|
+
- When starting any significant feature
|
|
58
|
+
|
|
59
|
+
**Announce at start:** "I'm using the using-git-worktrees skill to set up an isolated workspace."
|
|
60
|
+
|
|
61
|
+
## What is a Git Worktree?
|
|
62
|
+
|
|
63
|
+
A git worktree allows you to have multiple working directories attached to the same repository, each on a different branch.
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
project/ # Main worktree (main branch)
|
|
67
|
+
project-feature-auth/ # Worktree for auth feature
|
|
68
|
+
project-feature-api/ # Worktree for API feature
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Workflow
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
1. Create worktree with new branch
|
|
75
|
+
2. Navigate to worktree
|
|
76
|
+
3. Run project setup (install deps, etc.)
|
|
77
|
+
4. Verify clean test baseline
|
|
78
|
+
5. Start development
|
|
79
|
+
6. When done: merge/PR and cleanup
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Creating a Worktree
|
|
83
|
+
|
|
84
|
+
### Step 1: Create Worktree with New Branch
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# From main project directory
|
|
88
|
+
git worktree add ../project-feature-name -b feature/feature-name
|
|
89
|
+
|
|
90
|
+
# Example
|
|
91
|
+
git worktree add ../myapp-user-auth -b feature/user-auth
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Step 2: Navigate to Worktree
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
cd ../project-feature-name
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Step 3: Run Project Setup
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Node.js
|
|
104
|
+
npm install
|
|
105
|
+
|
|
106
|
+
# Python
|
|
107
|
+
python -m venv venv
|
|
108
|
+
source venv/bin/activate # or venv\Scripts\activate on Windows
|
|
109
|
+
pip install -r requirements.txt
|
|
110
|
+
|
|
111
|
+
# Rust
|
|
112
|
+
cargo build
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Step 4: Verify Clean Test Baseline
|
|
116
|
+
|
|
117
|
+
**MANDATORY**: All tests must pass before starting development.
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Run tests
|
|
121
|
+
npm test # Node.js
|
|
122
|
+
pytest # Python
|
|
123
|
+
cargo test # Rust
|
|
124
|
+
|
|
125
|
+
# Expected: ALL TESTS PASS
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
If tests fail:
|
|
129
|
+
1. Do NOT proceed with development
|
|
130
|
+
2. Fix issues in main branch first
|
|
131
|
+
3. Pull changes into worktree
|
|
132
|
+
|
|
133
|
+
## Worktree Commands Reference
|
|
134
|
+
|
|
135
|
+
| Command | Purpose |
|
|
136
|
+
|---------|---------|
|
|
137
|
+
| `git worktree add <path> -b <branch>` | Create new worktree with new branch |
|
|
138
|
+
| `git worktree add <path> <existing-branch>` | Create worktree for existing branch |
|
|
139
|
+
| `git worktree list` | List all worktrees |
|
|
140
|
+
| `git worktree remove <path>` | Remove a worktree |
|
|
141
|
+
| `git worktree prune` | Clean up stale worktree references |
|
|
142
|
+
|
|
143
|
+
## Naming Convention
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
<project-name>-<feature-short-name>
|
|
147
|
+
|
|
148
|
+
Examples:
|
|
149
|
+
- myapp-user-auth
|
|
150
|
+
- myapp-api-v2
|
|
151
|
+
- myapp-dashboard-redesign
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Keeping Worktree Updated
|
|
155
|
+
|
|
156
|
+
If main branch has changes you need:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# In worktree directory
|
|
160
|
+
git fetch origin
|
|
161
|
+
git rebase origin/main
|
|
162
|
+
|
|
163
|
+
# Or merge if you prefer
|
|
164
|
+
git merge origin/main
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Finishing with a Worktree
|
|
168
|
+
|
|
169
|
+
When feature is complete, use `/finishing-a-development-branch` skill.
|
|
170
|
+
|
|
171
|
+
Quick reference:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# 1. Ensure all tests pass
|
|
175
|
+
npm test
|
|
176
|
+
|
|
177
|
+
# 2. Push branch
|
|
178
|
+
git push -u origin feature/feature-name
|
|
179
|
+
|
|
180
|
+
# 3. Create PR or merge
|
|
181
|
+
# (depends on your workflow)
|
|
182
|
+
|
|
183
|
+
# 4. Return to main project
|
|
184
|
+
cd ../project
|
|
185
|
+
|
|
186
|
+
# 5. Remove worktree
|
|
187
|
+
git worktree remove ../project-feature-name
|
|
188
|
+
|
|
189
|
+
# 6. Delete branch if merged
|
|
190
|
+
git branch -d feature/feature-name
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Troubleshooting
|
|
194
|
+
|
|
195
|
+
### "fatal: 'path' is already checked out"
|
|
196
|
+
|
|
197
|
+
The branch is already checked out in another worktree.
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# List worktrees to find where
|
|
201
|
+
git worktree list
|
|
202
|
+
|
|
203
|
+
# Either use that worktree or create new branch
|
|
204
|
+
git worktree add ../new-path -b feature/new-branch
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### "Worktree directory not empty"
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# Remove the directory first
|
|
211
|
+
rm -rf ../project-feature-name
|
|
212
|
+
|
|
213
|
+
# Then create worktree
|
|
214
|
+
git worktree add ../project-feature-name -b feature/name
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Tests fail in worktree but pass in main
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Ensure dependencies are installed
|
|
221
|
+
npm install # or pip install -r requirements.txt
|
|
222
|
+
|
|
223
|
+
# Check for environment differences
|
|
224
|
+
diff .env ../main-project/.env
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Output Contract
|
|
228
|
+
|
|
229
|
+
```markdown
|
|
230
|
+
## Worktree Created
|
|
231
|
+
|
|
232
|
+
**Location:** `../project-feature-name`
|
|
233
|
+
**Branch:** `feature/feature-name`
|
|
234
|
+
|
|
235
|
+
**Setup Status:**
|
|
236
|
+
- [ ] Worktree created
|
|
237
|
+
- [ ] Dependencies installed
|
|
238
|
+
- [ ] Tests passing (baseline verified)
|
|
239
|
+
|
|
240
|
+
**Ready for:** `/writing-plans` to create implementation plan
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## Integration with Other Skills
|
|
244
|
+
|
|
245
|
+
| After | Use |
|
|
246
|
+
|-------|-----|
|
|
247
|
+
| `/brainstorming` | Create worktree for approved design |
|
|
248
|
+
| Worktree ready | `/writing-plans` to create plan |
|
|
249
|
+
| Development done | `/finishing-a-development-branch` |
|
|
250
|
+
|
|
251
|
+
## Quick Start Template
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# 1. Create worktree
|
|
255
|
+
git worktree add ../myapp-feature-name -b feature/feature-name
|
|
256
|
+
|
|
257
|
+
# 2. Setup
|
|
258
|
+
cd ../myapp-feature-name
|
|
259
|
+
npm install # or equivalent
|
|
260
|
+
|
|
261
|
+
# 3. Verify baseline
|
|
262
|
+
npm test
|
|
263
|
+
|
|
264
|
+
# 4. Ready for development!
|
|
265
|
+
echo "Worktree ready. Use /writing-plans to create implementation plan."
|
|
266
|
+
```
|