| name | implement |
| description | Implement code from Contract YAML and RED tests. Use when the user wants to "implement contracts", "generate implementation", "make tests green", "create implementation", "write code from spec", "build feature from contract", "implement feature", "implement screen", "create page components", "implement UI from contract", or "implement Stage 3". Also use when the user says "å®è£
ãã", "ã³ãŒããæžã", "ãã¹ããã°ãªãŒã³ã«ãã", "æ©èœãå®è£
ãã", "ç»é¢ãå®è£
ãã", or "ã³ã³ãã©ã¯ããå®è£
". Orchestrates Implementers, Integrator, and Refactorer agents to produce working code for all contract types including screen/UI. |
| version | 2.0.0 |
| core_ref | core/implement.md |
Implement ã¹ãã« (Claude Code)
Contract YAML ãš RED ãã¹ãããå®è£
ã³ãŒããçæããã¹ãã«ã
3 ãã§ãŒãºïŒImplementers â Integrator â RefactorerïŒã§æ®µéçã«å®è£
ãã
æåŸã« /simplify ã§ã³ãŒãå質ãä»äžããã
仿§åç
§
æ¬ã¹ãã«ã®ã¯ãŒã¯ãããŒã¯ core/implement.md ã«å®çŸ©ã
Contract ã¹ããŒã㯠core/contract-schema.mdïŒimplementation ã»ã¯ã·ã§ã³å«ãïŒãåç
§ã
å®è£
èŠçŽã¯ core/defaults/ é
äžãåç
§:
architecture-patterns/ â ãã£ã¬ã¯ããªæ§é ãã¬ã€ã€ãŒå®çŸ©
naming.md â ãã¡ã€ã«åã»ã¯ã©ã¹åã»å€æ°å
error-handling.md â ãšã©ãŒåŠçãã¿ãŒã³
di.md â äŸåæ§æ³šå
¥
testing.md â ã¢ãã¯æŠç¥ããã¹ãèŠçŽ
db-access.md â Repository ãã¿ãŒã³ããã©ã³ã¶ã¯ã·ã§ã³
validation-patterns.md â Contract å¶çŽ â ã¹ããŒã倿ã«ãŒã«
lint-rules.md â Biome/ESLint èšå®
ci-pipeline.md â GitHub Actions ãã³ãã¬ãŒã
åææ¡ä»¶
| æ¡ä»¶ | å¿
é | 説æ |
|---|
.blueprint/config.yaml | â | /spec ã§çææžã¿ã® tech stack èšå® |
.blueprint/contracts/ | â | /spec ã§çææžã¿ã® Contract YAMLïŒimplementation ã»ã¯ã·ã§ã³æšå¥šïŒ |
tests/contracts/level2/ | â | /test-from-contract ã§çææžã¿ã® RED ãã¹ã |
| Git ãªããžã㪠| â | src/ ããããžã§ã¯ãã«ãŒãã«é
眮 |
åºåãã¡ã€ã«
| ãã£ã¬ã¯ã㪠/ ãã¡ã€ã« | å
容 |
|---|
src/ | å®è£
ã³ãŒãïŒarchitecture pattern ã«å¿ããæ§é ïŒ |
tests/unit/ | business_rules ã® TDD ã§çæãããŠããããã¹ã |
frontend/ | Vite scaffold çæç©ïŒgreenfield-vite: npm create vite@latestïŒ |
frontend/src/App.tsx | ã«ãŒãã£ã³ã° + ã³ã³ããå±€ïŒgreenfield-vite æã«äžæžãçæïŒ |
frontend/app/**/page.tsx | Next.js ããŒãžïŒgreenfield-next æã«çæïŒ |
biome.json ç | Lint/Format èšå®ïŒãªãã·ã§ã³ïŒ |
.github/workflows/ | CI èšå®ïŒãªãã·ã§ã³ïŒ |
ããŒã«
| ããŒã« | çšé |
|---|
| Bash | git root æ€åºããã¹ãå®è¡ãããã±ãŒãžã€ã³ã¹ããŒã« |
| Glob | Contract ã¹ãã£ã³ãæ¢åã³ãŒãæ€åºãèšå®ãã¡ã€ã«æ€åº |
| Read | Contract YAMLãconfig.yamlããã¹ããã¡ã€ã«ãcore/defaults/ ã®èªã¿èŸŒã¿ |
| Write | å®è£
ã³ãŒããèšå®ãã¡ã€ã«ã®æžãåºã |
| Agent | Implementer / Refactorer ãšãŒãžã§ã³ãã®èµ·å |
| Skill | /simplify ã®å®è¡ |
ã¯ãŒã¯ãããŒïŒClaude Code åºæéšåïŒ
core/implement.md ã® 3 ãã§ãŒãº + 7 ã¹ãããã«åŸãã以äžã¯ Claude Code åºæã®å®è¡è©³çް:
Step 1: ã³ã³ããã¹ãèªã¿èŸŒã¿
git rev-parse --show-toplevel
# å¿
é ãã¡ã€ã«ã®èªã¿èŸŒã¿
Read(".blueprint/config.yaml")
Glob(".blueprint/contracts/**/*.contract.yaml")
Glob("tests/contracts/level2/**/*.test.*")
config.yaml ã®æ€èšŒ:
.blueprint/config.yaml ãååšããªãå Žå: ãšã©ãŒåæ¢ â ã/spec ãå
ã«å®è¡ããŠãã ããããšæ¡å
architecture.pattern ã clean | layered | flat ã®ããããã§ããããš
tech_stack ã®å¿
é ãã£ãŒã«ãïŒframework, validation, testïŒãèšå®æžã¿ã§ããããš
- äžè¶³ãããå Žåã¯ãŠãŒã¶ãŒã«ç¢ºèªããŠè£å®
implementation ã»ã¯ã·ã§ã³æªèšå®ã® Contract:
- èŠåãåºåããbusiness_rules ãš depends_on ããæšå®ããæšãäŒãã
â å¿
é : å®è¡ã¹ã¯ãªããã®ã»ããã¢ãã
ãã©ã°ã€ã³ã¹ã¯ãªããããŠãŒã¶ãŒãããžã§ã¯ãã® .blueprint/scripts/ ã«ã³ããŒãã:
# 1. ã¹ã¯ãªããå
容ãèªã¿èŸŒã¿ããŠãŒã¶ãŒãããžã§ã¯ãã«æžãåºã
Read("{plugin_dir}/scripts/verify-web-app.sh")
â Write(".blueprint/scripts/verify-web-app.sh", <å
šæ>)
Read("{plugin_dir}/scripts/assert-gate-completed.sh")
â Write(".blueprint/scripts/assert-gate-completed.sh", <å
šæ>)
mkdir -p .blueprint/scripts
chmod +x .blueprint/scripts/verify-web-app.sh .blueprint/scripts/assert-gate-completed.sh
echo ".blueprint/scripts/ initialized."
{plugin_dir} 㯠claude plugin-dir ã³ãã³ãã§ååŸããããSKILL.md ã® core_ref ãã¹ã®èŠªãã£ã¬ã¯ããªãåç
§ããã
â .blueprint/scripts/verify-web-app.sh ãš .blueprint/scripts/assert-gate-completed.sh ãçæãããã
Step 2: å®è£
èšç»ã®çæãšæ¿èª
# äŸåé¢ä¿ã®ããããžã«ã«ãœãŒã
1. å
š Contract ã® links.depends_on ãåé
2. DAGïŒæåéå·¡åã°ã©ãïŒãæ§ç¯
3. 埪ç°äŸåãã§ã㯠â ãšã©ãŒæã¯ /spec ã§ã®ä¿®æ£ãæ¡å
4. 䞊åå®è¡ã°ã«ãŒããç®åº
5. å¿
èŠãªäŸåããã±ãŒãžãç¹å®
ãŠãŒã¶ãŒã«å®è£
èšç»ãæç€º:
## å®è£
èšç»
| é åº | Contract ID | Type | äŸåå
| ã°ã«ãŒã |
|------|---------------------|----------|------------------|---------|
| 1 | CON-stripe-payment | external | ãªã | A |
| 2 | CON-product-import | file | ãªã | A |
| 3 | CON-order-create | api | CON-stripe-... | B |
ã°ã«ãŒã A ã¯äžŠåå®è¡ãã°ã«ãŒã B 㯠A ã®å®äºåŸã«å®è¡ããŸãã
远å ããã±ãŒãž: hono, zod, drizzle-orm
ã€ã³ã¹ããŒã«ã³ãã³ã: pnpm add hono zod drizzle-orm
ãã®èšç»ã§é²ããŸããïŒ
æ¿èªåŸ: äŸåããã±ãŒãžãã€ã³ã¹ããŒã«ã
pnpm add {packages}
Phase A: ImplementersïŒAgent ããŒã«ã§äžŠåèµ·åïŒ
Step 3: Contract åäœã®å®è£
å Contract ã«å¯Ÿã㊠Agent ããŒã«ã§ Implementer ãèµ·åã
ããã³ããã«ã¯ãã€ããªããæ¹åŒã§æ
å ±ãæž¡ã: æ žå¿æ
å ±ã¯ã€ã³ã©ã€ã³ã詳现ã¯ãã¡ã€ã«åç
§ã
ããã³ããæ¬æã¯ {baseDir}/references/implementer-prompt-template.md ãåç
§ããããšã
Agent({
subagent_type: "general-purpose",
description: "Implement CON-{name}",
prompt: "<references/implementer-prompt-template.md ã®å
容㫠{name}/{type}/{framework}/... ãåãããã®>"
})
䞊åå®è¡ã®ç®¡ç:
- åäžã°ã«ãŒãã® Contract ã¯äžŠåã§ Agent ãèµ·åïŒ1 ã€ã®å¿çã§è€æ° Agent åŒã³åºãïŒ
- å Agent ã®å®äºãåŸ
ã£ãŠããæ¬¡ã°ã«ãŒããéå§
- Agent ããããã¯ãå ±åããå Žåã¯ãŠãŒã¶ãŒã«ç¢ºèª
å Implementer å®äºæã®åºå:
## CON-order-create å®è£
å®äº
- æ°èŠãã¡ã€ã«: 4
- ãŠããããã¹ã: 2ïŒbusiness_rules TDDïŒ
- Level 2 ãã¹ãçµæ: 31/31 GREEN
- 倿Žãã¡ã€ã«äžèЧ:
- src/domain/order/types.ts
- src/usecase/order/create-order.usecase.ts
- src/infra/order/order.repository.impl.ts
- src/interface/order/order.route.ts
- tests/unit/order/calculate-total.test.ts
- tests/unit/order/validate-inventory.test.ts
Phase B: IntegratorïŒã¡ã€ã³ãšãŒãžã§ã³ãèªèº«ãå®è¡ïŒ
Step 4: çµ±åæ€èšŒ
å®è¡å
容:
1. app entry ã®çµç·
- å Implementer ãäœæããã«ãŒããã¡ã€ã«ã app.ts ã«ã€ã³ããŒãã»ç»é²
- DI container ã®æ§æïŒå¿
èŠãªå ŽåïŒ
- å
±éããã«ãŠã§ã¢ã®èšå®
2. ããã³ããšã³ããšã³ããªãŒãã€ã³ãçæïŒscreen Contract ã 1 件以äžããå ŽåïŒ
core/implement.md ã® scaffold_mode å€å®ïŒ3 åå²ïŒã«åŸã:
| æ¡ä»¶ | ã¢ãŒã |
|------|--------|
| `frontend/` ãååšããªã + Vite ç³» (react/vue/svelte) | greenfield-vite |
| `frontend/` ãååšããªã + Next.js | greenfield-next |
| `frontend/` ãæ¢ã«ååšãã (brownfield) | brownfield |
**greenfield-vite ã®å®è¡æé **:
Bash("npm create vite@latest frontend -- --template react-ts")
vue: --template vue-ts / svelte: --template svelte-ts
Bash("rm -f frontend/src/App.css frontend/src/assets/react.svg frontend/public/vite.svg")
Write("frontend/src/App.tsx") # core/implement.md ã®ã³ã³ãããã¿ãŒã³åç
§
Bash("cd frontend && npm install react-router-dom")
vite.config.ts ã« /api ãããã·èšå®ã远å ïŒæªèšå®ã®å ŽåïŒ
**greenfield-next ã®å®è¡æé **:
Bash("npx create-next-app@latest frontend --yes --app --ts --no-tailwind --no-eslint --no-src-dir")
screen Contract ã® route.path â app/**/page.tsx ãçæ
app/layout.tsx ã¯äžæžãããªãïŒNext.js ã管çïŒ
index.html / main.tsx ã¯çæããªã
**brownfield ã®å®è¡æé **:
scaffold çŠæ¢ïŒæ¢å frontend/ ãç Žå£ããªãïŒ
æ¢åã«ãŒã¿ãŒèšå®ãã¡ã€ã«ãæ€åº:
Glob("frontend/src/App.tsx") # React Router
Glob("frontend/src/router.tsx")
Glob("frontend/app/") # Next.js App Router
Glob("frontend/pages/") # Next.js Pages Router
æ°ãã screen Contract ã®ã«ãŒããš Container ã®ã¿å·®å远å
index.html / main.tsx / App.tsx ã¯äžåç·šéããªã
3. å
šãã¹ãäžæ¬å®è¡
npx vitest tests/
倱æãã¹ããããå Žå:
- 倱æãã¹ãã®åå ãåæ
- ä¿®æ£ã詊ã¿ã
- åããšã©ãŒã 3 åé£ç¶ããããŠãŒã¶ãŒã«å ±å
npx depcruise src/ --validate
Phase C: RefactorerïŒAgent ããŒã«ã§èµ·åãã³ã³ããã¹ãéå
±æïŒ
Step 5: æ§é ãªãã¡ã¯ã¿ãªã³ã°
Implementerã»Integrator ãšã³ã³ããã¹ããå
±æããªãç¬ç«ãšãŒãžã§ã³ããèµ·åã
ããã³ããæ¬æã¯ {baseDir}/references/refactorer-prompt-template.md ãåç
§ããããšã
Agent({
subagent_type: "general-purpose",
description: "Refactor implementation",
prompt: "<references/refactorer-prompt-template.md ã®å
容㫠{pattern} ãåãããã®>"
})
Step 6: ã³ãŒãç°¡çŽ å
Skill("simplify")
/simplify ãå®è¡ããã³ãŒãã®å¯èªæ§ã»å¹çã»åå©çšæ§ãæçµãã§ãã¯ããã
Step 6.5: Web App åäœç¢ºèª
â ã¹ãããçŠæ¢ïŒapi Contract ã 0 ä»¶ã§ãã¹ã¯ãªãããå®è¡ããŠç¢ºèªããïŒã
bash .blueprint/scripts/verify-web-app.sh
ã¹ã¯ãªãããè¡ãããšïŒè©³çŽ°ã¯ scripts/verify-web-app.sh åç
§ïŒ:
- dev/start/serve ã¹ã¯ãªããããªããã° framework ã«åããããµãŒããŒãã¡ã€ã«ïŒsrc/server.ts ãªã©ïŒãèªåçæ
- å¿
èŠãªã¢ããã¿ãŒïŒ
@hono/node-server çïŒãã€ã³ã¹ããŒã«
- ãµãŒããŒãããã¯ã°ã©ãŠã³ãèµ·åïŒæå€§ 30 ç§åŸ
æ©ïŒ
- api Contract ã®å
šãšã³ããã€ã³ãã« curl ã¹ã¢ãŒã¯ãã¹ãïŒ5xx â 倱æïŒ
- çµæã
.blueprint/reviews/web-verification-{timestamp}.md ã«ä¿åããŠãµãŒããŒåæ¢
ããã³ããšã³ã確èªïŒHTML ãè¿ããšã³ããã€ã³ããããå ŽåïŒ:
Skill("agent-browser")
# â http://localhost:{PORT}/ ãéã
# â ã³ã³ãœãŒã«ãšã©ãŒã確èªã»ã¹ã¯ãªãŒã³ã·ã§ããæ·»ä»
倱ææ: ãµãŒããŒãã°ã確èªããŠä¿®æ£ã詊ã¿ãã解決äžå¯ã®å Žåã¯ãŠãŒã¶ãŒã«å ±åã㊠Step 6.8 / Step 7 ãžé²ãïŒCode Review Gate ã¯ãããã¯ããªãïŒã
Step 6.8: E2E ãã¹ãå®è¡ïŒæ¡ä»¶ä»ãïŒ
# config.yaml ãã e2e_tool ã確èª
Read(".blueprint/config.yaml")
# â tech_stack.frontend.e2e_tool ã none ãŸãã¯æªå®çŸ© â ã¹ãããã㊠Step 7 ãž
# playwright.config.ts ã®ååšç¢ºèª
Glob("playwright.config.ts")
# â ååšããªãå Žå: ã/test-from-contract ãå
ã«å®è¡ããŠãã ããããšæ¡å
# Playwright ãã©ãŠã¶ã€ã³ã¹ããŒã«ïŒååã®ã¿ïŒ
npx playwright install chromium
# E2E ãã¹ãå®è¡
npx playwright test --reporter=list
倱ææ:
- ãšã©ãŒãã°ã確èªããŠåå ãåæïŒfetch URL ãã¹ / ãµãŒããŒèµ·åã¿ã€ãã³ã° / ãã¹ãããŒã¿åé¡ïŒ
- App.tsx ã® fetch wiring ã vite.config.ts ã® proxy èšå®ãä¿®æ£ããŠåå®è¡
- åããšã©ãŒã 3 åé£ç¶ããããŠãŒã¶ãŒã«å ±åã㊠Step 7 ãžé²ãïŒCode Review Gate ã¯ãããã¯ããªãïŒ
Step 7: å®è£
çµæãµããªãŒ + Code Review Gate
â 絶察å¿
é : Code Review Gate 㯠/simplifyã»Web åäœç¢ºèªãå®äºããåŸã«å¿
ãå®è¡ããããã¹ã GREEN ã ãã§å®äºãšã¿ãªããŠã¯ãªããªãã
å®è£
å®äºãµããªãŒãåºåããCode Review Gate ãå¿
ãå®è¡ããïŒã¹ãããäžå¯ïŒã
## å®è£
çµæãµããªãŒ
### å®äºç¶æ³
- å®äº: 3/3 Contract
- ãããã¯: 0
### ãã¹ãçµæ
- Level 1: 45/45 GREEN
- Level 2: 93/93 GREEN
- Unit: 12/12 GREEN
### çæãã¡ã€ã«
| ãã£ã¬ã¯ã㪠| ãã¡ã€ã«æ° |
|------------|----------|
| src/domain/ | 6 |
| src/usecase/ | 3 |
| src/infra/ | 6 |
| src/interface/ | 3 |
| tests/unit/ | 4 |
### å質
- import 埪ç°: ãªã
- Refactorer: éè€ 2 ä»¶æé€ãåœå 3 ä»¶ä¿®æ£
- /simplify: æ¹å 1 ä»¶
éèŠ: ãã¹ã GREEN ã¯ãåäœã®æ£ãããã確èªããã ããCode Review Gate ã¯ãContract 宣èšãã³ãŒãã«åæ ãããŠãããïŒå®£èšã®äžèŽïŒããæ€èšŒããããã¹ã GREEN ã§ã Code Review Gate ã¯å¿
é ã
Code Review GateïŒ4 Agent 䞊åïŒ
å Agent ãžæž¡ãå
±éå
¥åïŒskills/orchestrator/references/review-prompts/code-reviewer.md ã®ãå
±éå
¥åãã»ã¯ã·ã§ã³åç
§ïŒ:
- Contract YAML:
.blueprint/contracts/**/*.contract.yaml
- ãœãŒã¹ã³ãŒã:
src/ïŒãŸãã¯ãã¬ãŒã ã¯ãŒã¯çžåœã®ãã£ã¬ã¯ããªïŒ
core/review-criteria.mdïŒP0/P1/P2 å®çŸ©ïŒ
skills/orchestrator/references/review-prompts/code-reviewer.mdïŒãã§ãã¯æé ïŒ
4 ã€ã® Agent ãåæïŒ1 ã€ã®å¿çã§äžŠååŒã³åºãïŒ:
Agent({
subagent_type: "tdd-workflows:code-reviewer",
description: "Code Review - Schema Compliance",
prompt: "
skills/orchestrator/references/review-prompts/code-reviewer.md ã®
ãAgent 1: Schema Compliance Checkerãæé ã«åŸãã
Contract ãã£ãŒã«ãå¶çŽãããªããŒã·ã§ã³å±€ã«åæ ãããŠãããæ€èšŒããŠãã ããã
å
±éå
¥åã»åºåãã©ãŒãããã¯åãã¡ã€ã«ã®ãå
±éå
¥åããå
±éåºåãã©ãŒããããåç
§ã
reviewer: 'schema-compliance'
"
})
Agent({
subagent_type: "tdd-workflows:code-reviewer",
description: "Code Review - Route & Handler",
prompt: "
skills/orchestrator/references/review-prompts/code-reviewer.md ã®
ãAgent 2: Route & Handler Checkerãæé ã«åŸãã
api/external Contract ã® method/path ãšå®è£
ã«ãŒãã®äžèŽãæ€èšŒããŠãã ããã
å
±éå
¥åã»åºåãã©ãŒãããã¯åãã¡ã€ã«ã®ãå
±éå
¥åããå
±éåºåãã©ãŒããããåç
§ã
reviewer: 'route-handler'
"
})
Agent({
subagent_type: "tdd-workflows:code-reviewer",
description: "Code Review - Business Logic",
prompt: "
skills/orchestrator/references/review-prompts/code-reviewer.md ã®
ãAgent 3: Business Logic Checkerãæé ã«åŸãã
business_rules/state_transition/constraints ã®å®è£
åæ ãæ€èšŒããŠãã ããã
å
±éå
¥åã»åºåãã©ãŒãããã¯åãã¡ã€ã«ã®ãå
±éå
¥åããå
±éåºåãã©ãŒããããåç
§ã
reviewer: 'business-logic'
"
})
Agent({
subagent_type: "tdd-workflows:code-reviewer",
description: "Code Review - Code Quality",
prompt: "
skills/orchestrator/references/review-prompts/code-reviewer.md ã®
ãAgent 4: Code Quality Checkerãæé ã«åŸãã
ã¬ã€ã€ãŒæ§é ã»éè€ã»åœåèŠçŽãæ€èšŒããŠãã ããã
architecture.pattern 㯠.blueprint/config.yaml ãã確èªããŠãã ããã
å
±éå
¥åã»åºåãã©ãŒãããã¯åãã¡ã€ã«ã®ãå
±éå
¥åããå
±éåºåãã©ãŒããããåç
§ã
reviewer: 'code-quality'
"
})
Gate å€å®: core/review-criteria.md ã® Gate å€å®ãããã³ã«ã«åŸãïŒP0=0 ã〠P1â€1 â PASSãããä»¥å€ â REVISE æå€§ 3 ãµã€ã¯ã«ïŒã
## Code Review Gate çµæ
| é
ç® | P0 | P1 | P2 | å€å® | ãµã€ã¯ã« |
|------|----|----|----|----- |---------|
| Code | N | N | N | PASS/REVISE | N |
### æ€åºäºé
ïŒP2 èŠå¯Ÿå¿ãªã¹ãïŒ
- [察象] åé¡ã®èª¬æ
â å¿
é ãã§ãã¯ãªã¹ãïŒãã®é åºã§å
šãŠå®è¡ããããšïŒ:
1. Code Review GateïŒ4 Agent 䞊åïŒãå®è¡
2. Gate çµæã pipeline-state.yaml ã«æžã蟌ãïŒWrite ãå¿
é ãRead ããŠç¢ºèªããæŽæ°ãŸã§ïŒ:
Read(".blueprint/pipeline-state.yaml")
Write(".blueprint/pipeline-state.yaml")
# å¿
ã以äžã®ãã©ãŒãããã§æŽæ°:
# code_review_gate:
# status: passed # or revising
# cycles: 1
# final_counts: { p0: 0, p1: 0, p2: N }
3. assert-gate-completed.sh ãå®è¡ããŠæžã蟌ã¿ãæ€èšŒ:
bash .blueprint/scripts/assert-gate-completed.sh
4. exit 0 ã®å Žåã®ã¿æ¿èªãµããªãŒããŠãŒã¶ãŒã«æç€º
bash .blueprint/scripts/assert-gate-completed.sh
â ïž ãããã倱æ: Gate ãå®è¡ããã®ã« pipeline-state.yaml ãæŽæ°ãå¿ãããš assert ã¹ã¯ãªãããåžžã« exit 1 ã«ãªããå¿
ã Write ã§æŽæ°ããããšã
åå
| åå | 説æ |
|---|
| Contract ã source of truth | implementation ã»ã¯ã·ã§ã³ã«åŸããAI ã®æšæž¬ã¯æå°éã«ãã |
| ãã¹ããååŠå€å® | Level 2 ãã¹ãã® GREEN ãå®è£
å®äºã®åºæº |
| èŠçŽã«åŸã | core/defaults/ ã®åœåã»æ§é ã»ãã¿ãŒã³ãéµå® |
| åå空éåé¢ | å Implementer ã¯èªåã®ãšã³ãã£ãã£é
äžã®ã¿ç·šé |
| business_rules 㯠TDD | Contract ã® business_rules ã«å¯Ÿå¿ããããžãã¯ã¯ãŠããããã¹ãå
è¡ |
| ã³ã³ããã¹ãéå
±æ | Refactorer ã¯å®è£
ããã»ã¹ã®æèãæãããã¬ãã·ã¥ã«è©äŸ¡ |
| 諊ããªã | ãã¹ã倱ææã¯ã¹ããããããåäžãšã©ãŒ 3 åã§ãŠãŒã¶ãŒã«å ±å |
ãšã©ãŒãã³ããªã³ã°
| ãšã©ãŒ | å¯Ÿå¿ |
|---|
| config.yaml ãªã | /spec ãå
ã«å®è¡ããããæ¡å
|
| Contract 0 ä»¶ | /spec ã§ Contract ãäœæããããæ¡å
|
| RED ãã¹ããªã | /test-from-contract ãå
ã«å®è¡ããããæ¡å
|
| 埪ç°äŸå | ãšã©ãŒåæ¢: /spec ã§ depends_on ãä¿®æ£ããããæ¡å
|
| ããã±ãŒãžã€ã³ã¹ããŒã«å€±æ | æåã€ã³ã¹ããŒã«ãæ¡å
ããŠç¶è¡ |
| ãã¹ã GREEN äžèœïŒåäžãšã©ãŒ 3 åé£ç¶ïŒ | ãŠãŒã¶ãŒã«å ±åãæç€ºãä»°ã |
| Implementer ã¿ã€ã ã¢ãŠã | ãŠãŒã¶ãŒã«å ±åãæç€ºãä»°ã |