| name | architecture-decision-records |
| description | Capture architectural decisions made during Claude Code sessions as structured ADRs. Auto-detects decision moments, records context, alternatives considered, and rationale. Maintains an ADR log so future developers understand why the codebase is shaped the way it is. |
| origin | ECC |
Architecture Decision Records
ã³ãŒãã£ã³ã°ã»ãã·ã§ã³äžã«è¡ãããã¢ãŒããã¯ãã£äžã®æ±ºå®ãèšé²ããŸããæ±ºå®ã Slack ã¹ã¬ãããPR ã³ã¡ã³ãã誰ãã®èšæ¶ã®äžã ãã«ååšããã®ã§ã¯ãªãããã®ã¹ãã«ã¯ã³ãŒããšå
±åããæ§é åããã ADR ããã¥ã¡ã³ããçæããŸãã
èµ·åæ¡ä»¶
- ãŠãŒã¶ãŒãæç€ºçã«ããã®æ±ºå®ãèšé²ããããããADR ã«ããŠããšèšã£ãå Žå
- ãŠãŒã¶ãŒãéèŠãªéžæè¢ã®éã§éžæããå ŽåïŒãã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªããã¿ãŒã³ãããŒã¿ããŒã¹ãAPI èšèšïŒ
- ãŠãŒã¶ãŒããX ã«ããããšã«ãã...ãããY ã§ã¯ãªã X ã«ããçç±ã¯...ããšèšã£ãå Žå
- ãŠãŒã¶ãŒãããªã X ãéžãã ã®ãïŒããšè³ªåããå ŽåïŒæ¢åã® ADR ãèªãïŒ
- ã¢ãŒããã¯ãã£äžã®ãã¬ãŒããªããè°è«ãããèšç»ãã§ãŒãºäž
ADR Format
Michael Nygard ãæå±ãã軜é ADR ãã©ãŒãããããAI æ¯æŽéçºåãã«é©å¿ããŠäœ¿çšããŸã:
# ADR-NNNN: [Decision Title]
**Date**: YYYY-MM-DD
**Status**: proposed | accepted | deprecated | superseded by ADR-NNNN
**Deciders**: [who was involved]
## Context
ãã®æ±ºå®ã倿Žãåæ©ä»ããŠããåé¡ã¯äœãïŒ
[ç¶æ³ãå¶çŽãäœçšããŠããåã説æãã2-5æ]
## Decision
ææ¡ããŠããããŸãã¯å®è¡ããŠãã倿Žã¯äœãïŒ
[決å®ãæç¢ºã«è¿°ã¹ã1-3æ]
## Alternatives Considered
### Alternative 1: [Name]
- **Pros**: [å©ç¹]
- **Cons**: [æ¬ ç¹]
- **Why not**: [åŽäžãããå
·äœçãªçç±]
### Alternative 2: [Name]
- **Pros**: [å©ç¹]
- **Cons**: [æ¬ ç¹]
- **Why not**: [åŽäžãããå
·äœçãªçç±]
## Consequences
ãã®å€æŽã«ãããäœãããããããªããäœãããã«ãããªããïŒ
### Positive
- [ã¡ãªãã 1]
- [ã¡ãªãã 2]
### Negative
- [ãã¬ãŒããªã 1]
- [ãã¬ãŒããªã 2]
### Risks
- [ãªã¹ã¯ãšè»œæžç]
ã¯ãŒã¯ãããŒ
æ°ãã ADR ã®èšé²
決å®ã®ç¬éãæ€åºãããå Žå:
- åæåïŒååã®ã¿ïŒ â
docs/adr/ ãååšããªãå Žåããã£ã¬ã¯ããªã®äœæãã€ã³ããã¯ã¹ããŒãã«ããããŒãã·ãŒããã README.mdïŒä»¥äžã® ADR Index Format ãåç
§ïŒãæå䜿çšã®ããã®ç©ºã® template.md ã®äœæã«ã€ããŠãŠãŒã¶ãŒã«ç¢ºèªãæ±ããŸããæç€ºçãªåæãªãã«ãã¡ã€ã«ãäœæããªãã§ãã ããã
- 決å®ã®ç¹å® â è¡ãããŠããäžå¿çãªã¢ãŒããã¯ãã£äžã®éžæãæœåºããŸã
- ã³ã³ããã¹ãã®åé â äœããã®åé¡ãåŒãèµ·ããããïŒã©ã®ãããªå¶çŽããããïŒ
- ä»£æ¿æ¡ã®èšé² â ä»ã«ã©ã®ãããªéžæè¢ãæ€èšããããïŒãªãåŽäžããããïŒ
- çµæã®èšè¿° â ãã¬ãŒããªãã¯äœãïŒäœãããããã/ããã«ãããªããïŒ
- çªå·ã®å²ãåœãŠ â
docs/adr/ ã®æ¢å ADR ãã¹ãã£ã³ããŠã€ã³ã¯ãªã¡ã³ã
- 確èªãšæžã蟌㿠â ãŠãŒã¶ãŒã« ADR ãã©ãããæç€ºããŠã¬ãã¥ãŒãäŸé ŒããŸããæç€ºçãªæ¿èªã®åŸã«ã®ã¿
docs/adr/NNNN-decision-title.md ã«æžã蟌ã¿ãŸãããŠãŒã¶ãŒãåŽäžããå Žåããã¡ã€ã«ãæžã蟌ãŸãã«ãã©ãããç Žæ£ããŸãã
- ã€ã³ããã¯ã¹ã®æŽæ° â
docs/adr/README.md ã«è¿œèš
æ¢å ADR ã®åç
§
ãŠãŒã¶ãŒãããªã X ãéžãã ã®ãïŒããšè³ªåããå Žå:
docs/adr/ ãååšãããç¢ºèª â ååšããªãå Žåã¯ä»¥äžã®ããã«å¿ç: ããã®ãããžã§ã¯ãã« ADR ã¯èŠã€ãããŸããã§ãããã¢ãŒããã¯ãã£äžã®æ±ºå®ã®èšé²ãå§ããŸããïŒã
- ååšããå Žåã
docs/adr/README.md ã®ã€ã³ããã¯ã¹ããé¢é£ãããšã³ããªãã¹ãã£ã³
- äžèŽãã ADR ãã¡ã€ã«ãèªã¿åããContext ãš Decision ã»ã¯ã·ã§ã³ãæç€º
- äžèŽãèŠã€ãããªãå Žåã¯ä»¥äžã®ããã«å¿ç: ããã®æ±ºå®ã«é¢ãã ADR ã¯èŠã€ãããŸããã§ãããä»ããèšé²ããŸããïŒã
ADR ãã£ã¬ã¯ããªæ§é
docs/
âââ adr/
âââ README.md â ãã¹ãŠã® ADR ã®ã€ã³ããã¯ã¹
âââ 0001-use-nextjs.md
âââ 0002-postgres-over-mongo.md
âââ 0003-rest-over-graphql.md
âââ template.md â æå䜿çšã®ããã®ç©ºãã³ãã¬ãŒã
ADR Index Format
# Architecture Decision Records
| ADR | Title | Status | Date |
|-----|-------|--------|------|
| [0001](0001-use-nextjs.md) | Use Next.js as frontend framework | accepted | 2026-01-15 |
| [0002](0002-postgres-over-mongo.md) | PostgreSQL over MongoDB for primary datastore | accepted | 2026-01-20 |
| [0003](0003-rest-over-graphql.md) | REST API over GraphQL | accepted | 2026-02-01 |
æ±ºå® Detection Signals
äŒè©±äžã«ã¢ãŒããã¯ãã£äžã®æ±ºå®ã瀺ã以äžã®ãã¿ãŒã³ã«æ³šç®ããŠãã ãã:
æç€ºçãªã·ã°ãã«
- ãX ã«ãããã
- ãY ã§ã¯ãªã X ã䜿ãã¹ãã
- ããã®ãã¬ãŒããªãã¯...ã®çç±ã§äŸ¡å€ãããã
- ãããã ADR ãšããŠèšé²ããŠã
æé»çãªã·ã°ãã«ïŒADR ã®èšé²ãææ¡ â ãŠãŒã¶ãŒã®ç¢ºèªãªãã«èªåäœæããªãïŒ
- 2ã€ã®ãã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªãæ¯èŒããŠçµè«ã«éãã
- æ ¹æ ãè¿°ã¹ãããŒã¿ããŒã¹ã¹ããŒãèšèšã®éžæ
- ã¢ãŒããã¯ãã£ãã¿ãŒã³ã®éžæïŒã¢ããªã¹ vs ãã€ã¯ããµãŒãã¹ãREST vs GraphQLïŒ
- èªèšŒ/èªå¯æŠç¥ã®æ±ºå®
- ä»£æ¿æ¡ãè©äŸ¡ããåŸã®ãããã€ã€ã³ãã©ã®éžæ
è¯ã ADR ã®æ¡ä»¶
Do
- å
·äœçã« â ãORM ã䜿ããã§ã¯ãªããPrisma ORM ã䜿ãã
- çç±ãèšé² â æ ¹æ ã¯äœã§ããããããéèŠ
- åŽäžãããä»£æ¿æ¡ãå«ãã â å°æ¥ã®éçºè
ã¯äœãæ€èšãããããç¥ãå¿
èŠããã
- çµæãæ£çŽã«èšè¿° â ãã¹ãŠã®æ±ºå®ã«ã¯ãã¬ãŒããªãããã
- çãä¿ã€ â ADR ã¯2åã§èªããã¹ã
- çŸåšåœ¢ã䜿ã â ãX ã䜿ãäºå®ãã§ã¯ãªããX ã䜿ãã
Don't
- äºçŽ°ãªæ±ºå®ãèšé²ãã â 倿°ã®åœåããã©ãŒãããã®éžæã« ADR ã¯äžèŠ
- ãšãã»ã€ãæžã â ã³ã³ããã¹ãã»ã¯ã·ã§ã³ã10è¡ãè¶
ãããªãé·ãã
- ä»£æ¿æ¡ãçç¥ãã â ããã éžãã ãã¯æå¹ãªæ ¹æ ã§ã¯ãªã
- ããŒã¯ããã«åŸä»ããã â éå»ã®æ±ºå®ãèšé²ããå Žåã¯å
ã®æ¥ä»ãèšèŒ
- ADR ãæŸçœ®ãã â 眮ãæããããæ±ºå®ã¯åŸç¶ãåç
§ãã¹ã
ADR ã©ã€ããµã€ã¯ã«
proposed â accepted â [deprecated | superseded by ADR-NNNN]
- proposed: 決å®ã¯è°è«äžã§ããããŸã 確å®ããŠããªã
- accepted: 決å®ã¯æå¹ã§ãããåŸãããŠãã
- deprecated: 決å®ã¯ãã¯ãé¢é£ããªãïŒäŸ: æ©èœãåé€ãããïŒ
- superseded: ããæ°ãã ADR ãããã眮ãæããïŒåžžã«åŸç¶ã«ãªã³ã¯ïŒ
èšé²ãã䟡å€ã®ããæ±ºå®ã®ã«ããŽãª
| ã«ããŽãª | äŸ |
|---|
| æè¡éžæ | ãã¬ãŒã ã¯ãŒã¯ãèšèªãããŒã¿ããŒã¹ãã¯ã©ãŠããããã€ã㌠|
| ã¢ãŒããã¯ãã£ãã¿ãŒã³ | ã¢ããªã¹ vs ãã€ã¯ããµãŒãã¹ãã€ãã³ãããªãã³ãCQRS |
| API èšèš | REST vs GraphQLãããŒãžã§ãã³ã°æŠç¥ãèªèšŒã¡ã«ããºã |
| ããŒã¿ã¢ããªã³ã° | ã¹ããŒãèšèšãæ£èŠåã®æ±ºå®ããã£ãã·ã¥æŠç¥ |
| ã€ã³ãã©ã¹ãã©ã¯ã㣠| ãããã€ã¢ãã«ãCI/CD ãã€ãã©ã€ã³ãã¢ãã¿ãªã³ã°ã¹ã¿ã㯠|
| ã»ãã¥ãªã㣠| èªèšŒæŠç¥ãæå·åã¢ãããŒããã·ãŒã¯ã¬ãã管ç |
| ãã¹ã | ãã¹ããã¬ãŒã ã¯ãŒã¯ãã«ãã¬ããžç®æšãE2E vs ã€ã³ãã°ã¬ãŒã·ã§ã³ã®ãã©ã³ã¹ |
| ããã»ã¹ | ãã©ã³ãæŠç¥ãã¬ãã¥ãŒããã»ã¹ããªãªãŒã¹ã±ã€ãã³ã¹ |
çµ±å with Other Skills
- Planner agent: ãã©ã³ããŒãã¢ãŒããã¯ãã£å€æŽãææ¡ããå ŽåãADR ã®äœæãææ¡ããŸã
- Code reviewer agent: 察å¿ãã ADR ãªãã«ã¢ãŒããã¯ãã£å€æŽãå°å
¥ãã PR ããã©ã°ããŸã