Skip to content

Latest commit

ย 

History

33 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Development Rules Starter Kit

License: MIT Python 3.8+ GitHub Template Constitution-Based

30์ดˆ ์†Œ๊ฐœ

Constitution(ํ—Œ๋ฒ•) ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ - ํ’ˆ์งˆ์„ ์ž๋™ํ™”ํ•˜๋Š” ์‹คํ–‰ํ˜• ์ง€์‹ ์‹œ์Šคํ…œ

  • ๋ฌธ์„œ๊ฐ€ ๊ณง ์ฝ”๋“œ: YAML ๊ณ„์•ฝ์„œ โ†’ TaskExecutor โ†’ ์ž๋™ ์ฆ๊ฑฐ ์ˆ˜์ง‘
  • 16๊ฐœ ์กฐํ•ญ: P1-P16 Constitution์ด ๋ชจ๋“  ๊ฐœ๋ฐœ์˜ ๋ฒ•
  • 95% ์ž๋™ํ™”: Git Hooks + CI/CD๋กœ ํ’ˆ์งˆ ๊ฒ€์ฆ zero-touch
  • ์—ฐ๊ฐ„ 264์‹œ๊ฐ„ ์ ˆ๊ฐ: ์ฆ๊ฑฐ ๊ธฐ๋ฐ˜ + ์ง€์‹ ์ž์‚ฐํ™” (Obsidian 3์ดˆ ๋™๊ธฐํ™”)

5๋ถ„ ์‹œ์ž‘: Use this template ํด๋ฆญ โ†’ Setup script ์‹คํ–‰ โ†’ ์ฆ‰์‹œ ์‚ฌ์šฉ


๐Ÿ“– CLAUDE.md - AI ์—์ด์ „ํŠธ ํ•„์ˆ˜ ๊ฐ€์ด๋“œ (Claude, Cursor, Copilot ์‚ฌ์šฉ์ž๋Š” ๋จผ์ € ์ฝ์–ด์ฃผ์„ธ์š”!) ๐Ÿ‘จโ€๐Ÿ’ป ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž ๊ฐ€์ด๋“œ - 8์ฃผ ํ•™์Šต ๋กœ๋“œ๋งต (Git, YAML, TaskExecutor ๋‹จ๊ณ„๋ณ„ ํ•™์Šต) ๐ŸŽฏ ๋ถ€๋‹ด ์—†์ด ์‹œ์ž‘ํ•˜์„ธ์š” - Level 0๋ถ€ํ„ฐ ๋‹จ๊ณ„์  ์ ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๐Ÿค– Multi-AI Session ์ง€์› - 1๋ช… ๊ฐœ๋ฐœ์ž + 3-4 AI ์„ธ์…˜ ๋™์‹œ ํ˜‘์—… ๊ฐ€๋Šฅ!

๋ฒ„์ „: 1.0.0 | Stage: 5 (Hook) ์™„๋ฃŒ โœ… ๊ธฐ๋ฐ˜: DoubleDiver ํ”„๋กœ์ ํŠธ์—์„œ ์ถ”์ถœํ•œ ๊ฒ€์ฆ๋œ ๊ฐœ๋ฐœ ๊ทœ์น™ ์‹œ์Šคํ…œ ์žฌํ™œ์šฉ์„ฑ: 95% (GitHub Template์œผ๋กœ ์ฆ‰์‹œ ๋ณต์ œ ๊ฐ€๋Šฅ)

๐ŸŽฏ ๊ฐœ์š”

์ด ์Šคํƒ€ํ„ฐ ํ‚ท์€ DoubleDiver ํ”„๋กœ์ ํŠธ์—์„œ ๊ฒ€์ฆ๋œ ๊ฐœ๋ฐœ ๊ทœ์น™ ์‹œ์Šคํ…œ์„ ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ถ”์ถœํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํฌํ•จ๋œ ์‹œ์Šคํ…œ

  1. Git ํ‘œ์ค€ํ™” (Conventional Commits + Semantic Release)
  2. AI ์—์ด์ „ํŠธ ์ตœ์ ํ™” (Claude, Cursor, Copilot)
  3. ์‹คํ–‰ํ˜• ์ง€์‹์ž์‚ฐ (TaskExecutor + Obsidian ํ†ตํ•ฉ)
  4. ๋ฌธ์„œ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ (claudedocs/ ๊ตฌ์กฐ)
  5. CI/CD ํŒŒ์ดํ”„๋ผ์ธ (GitHub Actions)
  6. ๐Ÿ†• Hybrid Error Resolution (์‹ ๋ขฐ๋„ ๊ธฐ๋ฐ˜ 3-Tier ์ž๋™ ์—๋Ÿฌ ํ•ด๊ฒฐ)
  7. ๐Ÿ†• ADRBuilder (Architecture Decision Records ์ž๋™ํ™”, Constitution ๋งคํ•‘)
  8. ๐Ÿ†• ProductionMonitor (Production ์˜ˆ์™ธ ์ถ”์  ๋ฐ SLA ๋ชจ๋‹ˆํ„ฐ๋ง, ์žฅ์•  ๋Œ€์‘ 75% ๋‹จ์ถ•)
  9. ๐Ÿ†• PerformanceDashboard (์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ํŠธ๋ Œ๋“œ ๋ถ„์„, ๋ณ‘๋ชฉ ๋ฐœ๊ฒฌ 86% ๋‹จ์ถ•)
  10. ๐Ÿ†• TechnicalDebtTracker (๊ธฐ์ˆ ๋ถ€์ฑ„ ์ •๋Ÿ‰ํ™” ๋ฐ ์šฐ์„ ์ˆœ์œ„ ์ž๋™ ๋งคํ•‘, ๋ฆฌํŒฉํ† ๋ง ๊ฒฐ์ • 99% ๋‹จ์ถ•)

๊ฒ€์ฆ๋œ ํšจ๊ณผ

  • โœ… Conventional Commits: Agoda Engineering ๋“ฑ ๋‹ค์ˆ˜ ๊ธฐ์—… ์‚ฌ์šฉ
  • โœ… Executable Documentation: React, Postman, TensorFlow ์ ์šฉ
  • โœ… 95% ๋ฌธ์„œ ์‹œ๊ฐ„ ์ ˆ๊ฐ (20๋ถ„ โ†’ 3์ดˆ)
  • โœ… 100% ์ปค๋ฐ‹ ํ‘œ์ค€ ์ค€์ˆ˜ (Commitlint)
  • โœ… ์—ฐ๊ฐ„ 264์‹œ๊ฐ„ ์ ˆ๊ฐ (33์ผ)
  • โœ… ๐Ÿ†• 95% ์—๋Ÿฌ ์ž๋™ ํ•ด๊ฒฐ (Hybrid Resolution, ์‚ฌ์šฉ์ž ๊ฐœ์ž… 70% ๊ฐ์†Œ)

โš–๏ธ Constitution (ํ—Œ๋ฒ•) - ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ

ํ•„๋…: NORTH_STAR.md (1๋ถ„ ์ฝ๊ธฐ, ๋ฐฉํ–ฅ์„ฑ ์ƒ์‹ค ๋ฐฉ์ง€)

์ด๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€?

"์‹คํ–‰ํ˜• ์ž์‚ฐ ์‹œ์Šคํ…œ (Executable Knowledge Base)"

ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์‹œ ์‚ฌ์šฉํ•  Constitution(ํ—Œ๋ฒ•) ๊ธฐ๋ฐ˜ ๊ธฐ์ค€ ์ฒด๊ณ„ ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ฝ”๋“œ ํ’ˆ์งˆ ๋„๊ตฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. Constitution์„ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ๊ฐœ๋ฐœ ์ฒด๊ณ„ ๊ทธ ์ž์ฒด์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋… 3๊ฐ€์ง€

  1. ๋ฌธ์„œ๊ฐ€ ๊ณง ์ฝ”๋“œ

    • YAML ๊ณ„์•ฝ์„œ ์ž‘์„ฑ โ†’ TaskExecutor ์‹คํ–‰ โ†’ ๊ฒฐ๊ณผ ์ž๋™ ๊ธฐ๋ก
    • ๋ชจ๋“  ์ž‘์—…์ด ์žฌ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ž์‚ฐ์œผ๋กœ ์ถ•์ 
  2. Constitution์ด ๋ชจ๋“  ๊ฒƒ์˜ ์ค‘์‹ฌ

    • 10๊ฐœ ์กฐํ•ญ (P1-P10)์ด ๊ฐœ๋ฐœ์˜ ๋ฒ•
    • ๋ชจ๋“  ๋„๊ตฌ๋Š” ํŠน์ • ์กฐํ•ญ์„ ๊ฐ•์ œํ•˜๋Š” ์ˆ˜๋‹จ
    • ๋Œ€์‹œ๋ณด๋“œ๋Š” "ํ—Œ๋ฒ• ์ค€์ˆ˜ ํ˜„ํ™ฉํŒ"
  3. ์ฆ๊ฑฐ ๊ธฐ๋ฐ˜ + ์ง€์‹ ์ž์‚ฐํ™”

    • ๋ชจ๋“  ์‹คํ–‰ ๊ฒฐ๊ณผ ์ž๋™ ๊ธฐ๋ก (RUNS/evidence/)
    • Obsidian ์ž๋™ ๋™๊ธฐํ™” (3์ดˆ)
    • ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ์ง€์‹์ด ์ถ•์ 

7๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜

Layer 1: Constitution (ํ—Œ๋ฒ•) โ† ๋ชจ๋“  ๊ฒƒ์˜ ์ค‘์‹ฌ!
    โ†“
Layer 2: Execution (TaskExecutor, ConstitutionalValidator)
    โ†“
Layer 3: Analysis (DeepAnalyzer, TeamStatsAggregator)
    โ†“
Layer 4: Optimization (VerificationCache, CriticalFileDetector)
    โ†“
Layer 5: Evidence Collection (์ž๋™ ๊ธฐ๋ก)
    โ†“
Layer 6: Knowledge Asset (ObsidianBridge - 3์ดˆ ๋™๊ธฐํ™”)
    โ†“
Layer 7: Visualization (Streamlit Dashboard - ์‹œ๊ฐํ™”๋งŒ)

์ค‘์š”: ๋Œ€์‹œ๋ณด๋“œ(Layer 7)๋Š” ๋‹จ์ˆœ ์‹œ๊ฐํ™” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ฒ€์ฆ์€ DeepAnalyzer(Layer 3)๊ฐ€ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Constitution 13๊ฐœ ์กฐํ•ญ

๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์กฐํ•ญ (P1-P10)

ID ์กฐํ•ญ๋ช… ๊ฐ•์ œ ๋„๊ตฌ Layer
P1 YAML ๊ณ„์•ฝ์„œ ์šฐ์„  TaskExecutor 2
P2 ์ฆ๊ฑฐ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ TaskExecutor 2, 5
P3 ์ง€์‹ ์ž์‚ฐํ™” ObsidianBridge 6
P4 SOLID ์›์น™ DeepAnalyzer 3
P5 ๋ณด์•ˆ ์šฐ์„  DeepAnalyzer 3
P6 ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ TeamStatsAggregator 3
P7 Hallucination ๋ฐฉ์ง€ DeepAnalyzer 3
P8 ํ…Œ์ŠคํŠธ ์šฐ์„  pytest -
P9 Conventional Commits pre-commit -
P10 Windows ์ธ์ฝ”๋”ฉ UTF-8 ๊ฐ•์ œ -

๊ฑฐ๋ฒ„๋„Œ์Šค & ๋ฉ”ํƒ€ ์กฐํ•ญ (P11-P15) - ์ตœ์‹  ๋ฒ„์ „!

ID ์กฐํ•ญ๋ช… ๋ชฉ์  ๊ฐ•์ œ ๋ฐฉ์‹
P11 ์›์น™ ์ถฉ๋Œ ๊ฒ€์ฆ ์ƒˆ ๊ธฐ๋Šฅ์ด ๊ณผ๊ฑฐ ์›์น™๊ณผ ์ถฉ๋Œ ์‹œ ๋ฆฌ๋งˆ์ธ๋“œ AI ์ˆ˜๋™
P12 ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ ๋ถ„์„ ์˜๋ฌด ๋ชจ๋“  ๊ฒฐ์ •์— ์–‘์ธก ๊ด€์  + ๊ทผ๊ฑฐ ์ œ์‹œ AI ์ˆ˜๋™
P13 ํ—Œ๋ฒ• ์ˆ˜์ • ๊ฒ€์ฆ Constitution ์ˆ˜์ • ์‹œ ํƒ€๋‹น์„ฑ ๊ฒ€์ฆ ์‚ฌ์šฉ์ž ์Šน์ธ
P14 2์ฐจ ํšจ๊ณผ ๋ถ„์„ ๊ฐœ์„ ์˜ ๋ถ€์ž‘์šฉ๊นŒ์ง€ ์˜ˆ์ธก ๋ฐ ์™„ํ™” PR ํ…œํ”Œ๋ฆฟ
P15 ์ˆ˜๋ ด ์›์น™ 80% ํ’ˆ์งˆ ๋‹ฌ์„ฑ ํ›„ ๋ฉˆ์ถค (๋ฌดํ•œ ๊ฐœ์„  ๋ฐฉ์ง€) ๋ถ„๊ธฐ๋ณ„ ๋ฆฌ๋ทฐ

ํšจ๊ณผ:

  • P11: ๋ฐฉํ–ฅ์„ฑ ์ƒ์‹ค ๋ฐฉ์ง€ (ROI 267%)
  • P12: ๊ฐ๊ด€์  ์˜์‚ฌ๊ฒฐ์ • (AI ํŽธํ–ฅ ์ฐจ๋‹จ)
  • P13: Constitution ๋น„๋Œ€ํ™” ๋ฐฉ์ง€ (์ตœ๋Œ€ 20๊ฐœ ์กฐํ•ญ ์ œํ•œ)
  • P14: ์ง€์† ๊ฐ€๋Šฅํ•œ ๊ฐœ์„  (๋ถ€์ž‘์šฉ ์™„ํ™” ์‹œ์Šคํ…œ)
  • P15: ์‹ค์šฉ์ฃผ์˜ (์™„๋ฒฝ์ฃผ์˜ ๋ฐฐ์ œ, 80์ ์ด๋ฉด ์ถฉ๋ถ„)

์ƒ์„ธ: config/constitution.yaml ์ฐธ์กฐ

๋„๊ตฌ์˜ ์—ญํ•  (Tool-to-Article Mapping)

๋„๊ตฌ ์—ญํ•  ๊ฐ•์ œํ•˜๋Š” ์กฐํ•ญ Layer
TaskExecutor YAML ๊ณ„์•ฝ์„œ ์‹คํ–‰ P1, P2 2
ConstitutionalValidator ํ—Œ๋ฒ• ์ค€์ˆ˜ ๊ฒ€์ฆ All + P11, P13 2
DeepAnalyzer SOLID, ๋ณด์•ˆ ๊ฒ€์ฆ P4, P5, P7 3
TeamStatsAggregator ํ’ˆ์งˆ ์ ์ˆ˜ ๊ณ„์‚ฐ P6 3
VerificationCache ์ค‘๋ณต ๊ฒ€์ฆ ๋ฐฉ์ง€ - 4
CriticalFileDetector ํ•ต์‹ฌ ํŒŒ์ผ ์‹๋ณ„ - 4
ObsidianBridge ์ง€์‹ ์ž์‚ฐํ™” P3 6
Streamlit Dashboard ์‹œ๊ฐํ™” (๊ฒ€์ฆ ์•ˆ ํ•จ) - 7

ํ•ต์‹ฌ ์›Œํฌํ”Œ๋กœ์šฐ

1. YAML ๊ณ„์•ฝ์„œ ์ž‘์„ฑ (P1)
   โ†“
2. TaskExecutor ์‹คํ–‰ (P2)
   โ†“
3. DeepAnalyzer ๊ฒ€์ฆ (P4, P5, P7)
   โ†“
4. ์ฆ๊ฑฐ ์ž๋™ ๊ธฐ๋ก (P2)
   โ†“
5. Obsidian ๋™๊ธฐํ™” (P3, 3์ดˆ)
   โ†“
6. Dashboard๋กœ ํ™•์ธ (P6 ์ค€์ˆ˜ ํ˜„ํ™ฉ)

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“œ๋Š” ๊ฒƒ vs ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒƒ

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“œ๋Š” ๊ฒƒ:

  • โœ… Constitution ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ์ฒด๊ณ„
  • โœ… ์‹คํ–‰ํ˜• ์ž์‚ฐ ์‹œ์Šคํ…œ (๋ฌธ์„œ = ์ฝ”๋“œ)
  • โœ… ๊ธฐ์ค€ ์ฒด๊ณ„ ํ…œํ”Œ๋ฆฟ (์‚ฌ์šฉ์ž๊ฐ€ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•)

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ฒƒ:

  • โŒ ์ฝ”๋“œ ํ’ˆ์งˆ ๋Œ€์‹œ๋ณด๋“œ ๋„๊ตฌ (SonarQube ๊ฐ™์€ ๊ฒƒ)
  • โŒ ๋…๋ฆฝ์  ๋ถ„์„ ๋„๊ตฌ๋“ค์˜ ๋ชจ์Œ
  • โŒ ์™„์„ฑ๋œ ํ”„๋กœ๋•ํŠธ

์ƒ์„ธ ๋ฌธ์„œ

  • config/constitution.yaml - ํ—Œ๋ฒ• ์ „๋ฌธ (800+ ์ค„)
  • NORTH_STAR.md - 1๋ถ„ ์ฝ๊ธฐ, ๋ฐฉํ–ฅ์„ฑ ์žฌํ™•์ธ
  • .github/TASK_TEMPLATE.md - ์ž‘์—… ๋ช…์„ธ ํ…œํ”Œ๋ฆฟ

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘ (5๋ถ„)

Step 1: GitHub Template ์‚ฌ์šฉ (์ถ”์ฒœ) โญ

๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ•:

  1. "Use this template" ํด๋ฆญ

    • Use this template ๋งํฌ ํด๋ฆญ
    • ๋˜๋Š” GitHub ํŽ˜์ด์ง€ ์šฐ์ธก ์ƒ๋‹จ "Use this template" ๋ฒ„ํŠผ
  2. ์ƒˆ ์ €์žฅ์†Œ ์ƒ์„ฑ

    • Repository name: my-new-project
    • Description: (์„ ํƒ์‚ฌํ•ญ)
    • Public/Private ์„ ํƒ
    • "Create repository from template" ํด๋ฆญ
  3. Clone & Setup

    # Clone your new repository
    git clone https://github.com/YOUR_USERNAME/my-new-project.git
    cd my-new-project
    
    # Run setup script
    python scripts/setup_new_project.py
    # ๋˜๋Š” ๋Œ€ํ™”ํ˜• ๋งˆ๋ฒ•์‚ฌ
    python scripts/setup_wizard.py

โœจ ์ž๋™ ์ฒ˜๋ฆฌ ํ•ญ๋ชฉ:

  • โœ… Git history ์ดˆ๊ธฐํ™” (ํ…œํ”Œ๋ฆฟ ์ปค๋ฐ‹ ์ œ๊ฑฐ)
  • โœ… ํ”„๋กœ์ ํŠธ๋ช… ์ผ๊ด„ ๋ณ€๊ฒฝ (๋Œ€ํ™”ํ˜• ํ”„๋กฌํ”„ํŠธ)
  • โœ… Python ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ (.venv)
  • โœ… ์˜์กด์„ฑ ์ž๋™ ์„ค์น˜ (requirements.txt)
  • โœ… Pre-commit hooks ์„ค์น˜ (Constitution Guard, Ruff, Gitleaks)
  • โœ… .env ํŒŒ์ผ ์ƒ์„ฑ (Obsidian ๊ฒฝ๋กœ ์„ค์ •)
  • โœ… ์ฒซ ์ปค๋ฐ‹ ์ค€๋น„

Step 2: ์ˆ˜๋™ ๋ณต์‚ฌ (Alternative)

GitHub Template์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ:

# 1. ์ €์žฅ์†Œ Clone
git clone https://github.com/positivef/dev-rules-starter-kit.git
cd dev-rules-starter-kit

# 2. Setup script ์‹คํ–‰
python scripts/setup_new_project.py --project-name "MyNewProject"

# ๋˜๋Š” ๊ธฐ์กด ๋ฐฉ์‹ (Bash)
./setup.sh --project-name "MyNewProject" --framework fastapi

Step 3: ์ฆ‰์‹œ ์‚ฌ์šฉ

# 1. ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™”
.venv\Scripts\activate  # Windows
source .venv/bin/activate  # Linux/Mac

# 2. ์ฒซ ์ž‘์—… ์‹คํ–‰
python scripts/task_executor.py TASKS/TEMPLATE.yaml --plan
# ๊ณ„ํš ํ™•์ธ ํ›„ ์Šน์ธ
python scripts/task_executor.py TASKS/TEMPLATE.yaml

# 3. ์ปค๋ฐ‹ (์ž๋™ ๊ฒ€์ฆ๋จ)
git add .
git commit -m "feat: initial project setup"
# โ†’ Pre-commit hooks ์ž๋™ ์‹คํ–‰:
#    - Constitution Guard (P4/P5/P7/P10) - 0.18s
#    - Ruff linting (P10)
#    - YAML/JSON validation
#    - Commitlint format check (P9)
#    - Gitleaks secret scan (P5)

# 4. ๋ฒ„์ „ ๋ฆด๋ฆฌ์Šค (์„ ํƒ์‚ฌํ•ญ)
git push origin main
# โ†’ GitHub Actions ์ž๋™ ์‹คํ–‰:
#    - Constitution Check (7 jobs, ~2min)
#    - Semantic Release

Step 4: Obsidian ์—ฐ๋™ (์„ ํƒ์‚ฌํ•ญ)

# .env ํŒŒ์ผ ์ˆ˜์ •
OBSIDIAN_VAULT_PATH=C:\Users\YourName\Documents\ObsidianVault

# ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ
python scripts/obsidian_bridge.py test

# ์ด์ œ ๋ชจ๋“  ์ปค๋ฐ‹์ด ์ž๋™์œผ๋กœ Obsidian์— ๋™๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค (3์ดˆ)

๐Ÿ“ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

dev-rules-starter-kit/
โ”œโ”€โ”€ README.md                        # ์ด ํŒŒ์ผ
โ”œโ”€โ”€ setup.sh                         # ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ
โ”œโ”€โ”€ DEVELOPMENT_RULES.md             # Git/๋ฒ„์ „/๋ฌธ์„œ ๊ทœ์น™ (100% ์žฌํ™œ์šฉ)
โ”œโ”€โ”€ DEVELOPMENT_GUIDELINES.md        # ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค (100% ์žฌํ™œ์šฉ)
โ”œโ”€โ”€ AGENTS.md.template               # ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ํ…œํ”Œ๋ฆฟ
โ”œโ”€โ”€ CLAUDE.md.template               # AI ์—์ด์ „ํŠธ ๊ฐ€์ด๋“œ ํ…œํ”Œ๋ฆฟ
โ”‚
โ”œโ”€โ”€ .cursor/                         # Cursor AI ๊ทœ์น™
โ”‚   โ””โ”€โ”€ rules/
โ”‚       โ”œโ”€โ”€ README.md
โ”‚       โ”œโ”€โ”€ api.md.template
โ”‚       โ”œโ”€โ”€ testing.md.template
โ”‚       โ””โ”€โ”€ documentation.md.template
โ”‚
โ”œโ”€โ”€ .github/                         # GitHub ์„ค์ •
โ”‚   โ”œโ”€โ”€ copilot-instructions.md.template
โ”‚   โ””โ”€โ”€ workflows/
โ”‚       โ”œโ”€โ”€ commitlint.yml
โ”‚       โ””โ”€โ”€ semantic-release.yml
โ”‚
โ”œโ”€โ”€ scripts/                         # ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ
โ”‚   โ”œโ”€โ”€ task_executor.py            # YAML ๊ณ„์•ฝ ์‹คํ–‰๊ธฐ (100% ์žฌํ™œ์šฉ)
โ”‚   โ”œโ”€โ”€ obsidian_bridge.py          # ์˜ต์‹œ๋””์–ธ ๋™๊ธฐํ™” (100% ์žฌํ™œ์šฉ)
โ”‚   โ”œโ”€โ”€ adr_builder.py              # Architecture Decision Records (ADR) ์ž๋™ํ™”
โ”‚   โ”œโ”€โ”€ code_review_assistant.py    # ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ž๋™ํ™” (Constitution ๊ฒ€์ฆ)
โ”‚   โ””โ”€โ”€ deployment_planner.py       # ๋ฐฐํฌ ๊ณ„ํš ์ž๋™ํ™” (๋ฆฌ์Šคํฌ ํ‰๊ฐ€)
โ”‚
โ”œโ”€โ”€ TASKS/                           # ์ž‘์—… ๊ณ„์•ฝ์„œ
โ”‚   โ””โ”€โ”€ TEMPLATE.yaml
โ”‚
โ”œโ”€โ”€ config/                          # ์„ค์ •
โ”‚   โ”œโ”€โ”€ projects.yaml.template      # ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ ์„ค์ •
โ”‚   โ””โ”€โ”€ commitlint.config.js
โ”‚
โ””โ”€โ”€ docs/                            # ๊ฐ€์ด๋“œ ๋ฌธ์„œ
    โ”œโ”€โ”€ QUICK_START.md
    โ”œโ”€โ”€ MULTI_CLI_STRATEGY.md       # ๋ฉ€ํ‹ฐ CLI ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์ „๋žต
    โ””โ”€โ”€ REAL_WORLD_CASES.md         # ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€

๐ŸŽจ ์‚ฌ์šฉ ํŒจํ„ด

Pattern 1: Python ํ”„๋กœ์ ํŠธ

./setup.sh --project-name "MyAPI" --language python --framework fastapi

Pattern 2: JavaScript ํ”„๋กœ์ ํŠธ

./setup.sh --project-name "MyApp" --language javascript --framework react

Pattern 3: ๋ฉ€ํ‹ฐ ํ”„๋กœ์ ํŠธ (์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์—์„œ ๊ณต์œ )

# config/projects.yaml
projects:
  - id: project1
    name: Trading Bot
    vault_path: ~/Documents/ObsidianVault

  - id: project2
    name: ML Pipeline
    vault_path: ~/Documents/ObsidianVault

๐Ÿ”ง ์ปค์Šคํ„ฐ๋งˆ์ด์ง•

ํ•„์ˆ˜ ๊ต์ฒด ํ•ญ๋ชฉ

  1. ํ”„๋กœ์ ํŠธ๋ช… (์ž๋™: setup.sh ์‹คํ–‰)
  2. ์–ธ์–ด/ํ”„๋ ˆ์ž„์›Œํฌ (.github/workflows/, AGENTS.md)
  3. ์˜ต์‹œ๋””์–ธ ๊ฒฝ๋กœ (.env ํŒŒ์ผ)

์„ ํƒ ํ•ญ๋ชฉ

  1. Cursor rules (.cursor/rules/)
  2. Copilot instructions (.github/copilot-instructions.md)
  3. ์ปค๋ฐ‹ scope (13๊ฐœ ๊ธฐ๋ณธ ์ œ๊ณต, ์ถ”๊ฐ€ ๊ฐ€๋Šฅ)

๐Ÿ“Š ROI (ํˆฌ์ž ๋Œ€๋น„ ํšจ๊ณผ)

ํ•ญ๋ชฉ ์„ค์ • ์‹œ๊ฐ„ ์›”๊ฐ„ ์ ˆ๊ฐ ์—ฐ๊ฐ„ ROI
Git ์ž๋™ํ™” 2์‹œ๊ฐ„ 12์‹œ๊ฐ„ 688%
์ง€์‹ ๊ด€๋ฆฌ 3์‹œ๊ฐ„ 6์‹œ๊ฐ„ 288%
AI ์ตœ์ ํ™” 2์‹œ๊ฐ„ 4์‹œ๊ฐ„ 200%
ํ•ฉ๊ณ„ 7์‹œ๊ฐ„ 22์‹œ๊ฐ„/์›” 377%

๋ธŒ๋ ˆ์ดํฌ์ด๋ธ: 3.2๊ฐœ์›” ์—ฐ๊ฐ„ ์ ˆ๊ฐ: 264์‹œ๊ฐ„ (33์ผ)


๐Ÿ†˜ ๋ฌธ์ œ ํ•ด๊ฒฐ

"ํ”„๋กœ์ ํŠธ๋ช… ๊ต์ฒด๊ฐ€ ์•ˆ ๋ผ์š”"

# ์ˆ˜๋™ ๊ต์ฒด
find . -type f -name "*.md" -exec sed -i 's/DoubleDiver/MyProject/g' {} +

"Commitlint๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์•„์š”"

# Husky ์žฌ์„ค์น˜
rm -rf .husky
npx husky install
npx husky set .husky/commit-msg 'npx --no -- commitlint --edit "$1"'

"Obsidian ๋™๊ธฐํ™”๊ฐ€ ์•ˆ ๋ผ์š”"

# .env ํŒŒ์ผ ํ™•์ธ
cat .env | grep OBSIDIAN_VAULT_PATH
# ๊ฒฝ๋กœ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ

# ๊ฒฝ๋กœ ํ…Œ์ŠคํŠธ
ls -la "$OBSIDIAN_VAULT_PATH"

๐Ÿ†• Hybrid Error Resolution (์‹ ๋ขฐ๋„ ๊ธฐ๋ฐ˜ ์ž๋™ ์—๋Ÿฌ ํ•ด๊ฒฐ)

๋ฒ„์ „: v3.0 ์ƒํƒœ: โœ… Production Ready ์ž๋™ํ™”์œจ: 95% (์‚ฌ์šฉ์ž ๊ฐœ์ž… 70% ๊ฐ์†Œ)

๊ฐœ์š”

Hybrid Error Resolution์€ AI๊ฐ€ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚ฌ์„ ๋•Œ ์ž๋™์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” 3๋‹จ๊ณ„ ์‹ ๋ขฐ๋„ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

3-Tier Cascade ์ „๋žต:

  • Tier 1 (Obsidian): ๋กœ์ปฌ ์ง€์‹๋ฒ ์ด์Šค (<10ms, 70% ํ•ด๊ฒฐ๋ฅ )
  • Tier 2 (Context7): ๊ณต์‹ ๋ฌธ์„œ ๊ฒ€์ƒ‰ + ์‹ ๋ขฐ๋„ ํ‰๊ฐ€ (HIGH/MEDIUM/LOW)
  • Tier 3 (User): ์‚ฌ์šฉ์ž ๊ฐœ์ž… (5%๋งŒ ํ•„์š”)

์‹ ๋ขฐ๋„ ๊ธฐ๋ฐ˜ ์˜์‚ฌ๊ฒฐ์ •

from scripts.unified_error_resolver import UnifiedErrorResolver

resolver = UnifiedErrorResolver()
solution = resolver.resolve_error(error_msg, context={
    "tool": "Bash",
    "command": "pip install pandas"
})

if solution:
    # HIGH confidence (>=95%) โ†’ ์ž๋™ ์ ์šฉ
    apply_solution(solution)
    print("โœ… ์ž๋™ ํ•ด๊ฒฐ๋จ!")
else:
    # MEDIUM/LOW confidence โ†’ ์‚ฌ์šฉ์ž ํ™•์ธ ํ•„์š”
    print("Context7 ์ œ์•ˆ: pip install pandas")
    print("์ ์šฉํ• ๊นŒ์š”? (y/n)")

์‹ ๋ขฐ๋„ ๋ ˆ๋ฒจ

๋ ˆ๋ฒจ ์ž„๊ณ„๊ฐ’ ๋™์ž‘ ์‚ฌ์šฉ ์‚ฌ๋ก€
HIGH โ‰ฅ95% ์ž๋™ ์ ์šฉ (circuit breaker ์ฒดํฌ) pip install pandas, npm install react
MEDIUM 70-95% ์‚ฌ์šฉ์ž ํ™•์ธ ์š”์ฒญ ImportError ํ•ด๊ฒฐ, ์„ค์ • ๋ณ€๊ฒฝ
LOW <70% ์™„์ „ํ•œ ์‚ฌ์šฉ์ž ๊ฐœ์ž… ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์—๋Ÿฌ, ์ปค์Šคํ…€ ์—๋Ÿฌ

์•ˆ์ „์žฅ์น˜

Circuit Breaker (์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค):

  • 3๋ฒˆ ์‹คํŒจ ์‹œ ์ž๋™ ์ ์šฉ ๋น„ํ™œ์„ฑํ™”
  • ์‚ฌ์šฉ์ž ์‹ ๋ขฐ ๋ณดํ˜ธ

Blacklist (๋ธ”๋ž™๋ฆฌ์ŠคํŠธ):

  • ์œ„ํ—˜ํ•œ ๋ช…๋ น์–ด๋Š” ์ ˆ๋Œ€ ์ž๋™ ์ ์šฉ ์•ˆ ํ•จ
  • sudo, rm -rf, database, payment, auth ๋“ฑ

Progressive Enhancement (์ ์ง„์  ํ–ฅ์ƒ):

  • Week 1: 95% ์ž„๊ณ„๊ฐ’ (๋งค์šฐ ๋ณด์ˆ˜์ )
  • Week 2: 92% ์ž„๊ณ„๊ฐ’ (์ •ํ™•๋„ >90% ๋‹ฌ์„ฑ ์‹œ)
  • Week 3: 90% ์ž„๊ณ„๊ฐ’ (์ •ํ™•๋„ >92% ๋‹ฌ์„ฑ ์‹œ)
  • Week 4: 90% ์ž„๊ณ„๊ฐ’ (์ตœ์ข… ๋ชฉํ‘œ)

4๊ฐ€์ง€ ๋กค๋ฐฑ ๊ฒฝ๋กœ

  1. ๋ชจ๋“œ ๋ณ€๊ฒฝ: config/error_resolution_config.yaml์—์„œ mode: "simple" ์„ค์ •
  2. ์ž„๊ณ„๊ฐ’ ์กฐ์ •: auto_apply: 1.0์œผ๋กœ ์„ค์ • (์ž๋™ ์ ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ)
  3. Circuit breaker ๋น„ํ™œ์„ฑํ™”: circuit_breaker.enabled: false
  4. Git revert: ์ „์ฒด ์‹œ์Šคํ…œ ๋กค๋ฐฑ

์„ฑ๋Šฅ

  • Tier 1 (Obsidian): <10ms
  • Tier 2 (Context7): <500ms
  • ์‹ ๋ขฐ๋„ ๊ณ„์‚ฐ: <5ms ์˜ค๋ฒ„ํ—ค๋“œ
  • ์ „์ฒด cascade: <1์ดˆ

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

  • โœ… ์ข…ํ•ฉ ํ…Œ์ŠคํŠธ: 6/6 ํ†ต๊ณผ (100%)
    • HIGH confidence ์ž๋™ ์ ์šฉ
    • MEDIUM confidence ํ™•์ธ ์š”์ฒญ
    • LOW confidence ์‚ฌ์šฉ์ž ๊ฐœ์ž…
    • Blacklist ํŒจํ„ด ์ฐจ๋‹จ
    • Circuit breaker ์ž‘๋™
    • ํ†ต๊ณ„ ์ถ”์ 
  • โœ… ๋กค๋ฐฑ ํ…Œ์ŠคํŠธ: 4/4 ํ†ต๊ณผ (100%)
    • ๋ชจ๋“œ ๋ณ€๊ฒฝ ๋กค๋ฐฑ
    • ์ž„๊ณ„๊ฐ’ ์กฐ์ • ๋กค๋ฐฑ
    • ์ ์ง„์  ํ–ฅ์ƒ ๊ฒฝ๋กœ
    • ๊ธด๊ธ‰ ๋กค๋ฐฑ ์ ˆ์ฐจ

ํŒŒ์ผ ์œ„์น˜

  • ํ•ต์‹ฌ ์—”์ง„: scripts/unified_error_resolver.py
  • ์‹ ๋ขฐ๋„ ๊ณ„์‚ฐ๊ธฐ: scripts/confidence_calculator.py
  • ์„ค์ • ํŒŒ์ผ: config/error_resolution_config.yaml
  • ์œ„ํ—˜ ๋ถ„์„: claudedocs/HYBRID_RESOLUTION_RISK_ANALYSIS.md
  • AI ๊ทœ์น™: ~/.claude/CLAUDE.md (v3.0 Hybrid ํ†ตํ•ฉ)

์‚ฌ์šฉ ์˜ˆ์ œ

์‹œ๋‚˜๋ฆฌ์˜ค 1: ModuleNotFoundError (HIGH confidence)

$ python app.py
ModuleNotFoundError: No module named 'pandas'

# AI ์ž๋™ ์‹คํ–‰:
[TIER 1] Obsidian ๊ฒ€์ƒ‰... (์—†์Œ)
[TIER 2] Context7 ๊ฒ€์ƒ‰... pip install pandas (100% confidence)
[TIER 2 AUTO] ์ž๋™ ์ ์šฉ!
โœ… ํ•ด๊ฒฐ๋จ: pip install pandas ์‹คํ–‰

์‹œ๋‚˜๋ฆฌ์˜ค 2: ์„ค์ • ํŒŒ์ผ ๋ณ€๊ฒฝ (MEDIUM confidence)

$ npm start
Error: PORT 3000 already in use

# AI ์‹คํ–‰:
[TIER 2 CONFIRM] Medium confidence (75%)
Context7 ์ œ์•ˆ: "Change PORT in .env file to 3001"
์ ์šฉํ• ๊นŒ์š”? (y/n)

์‹œ๋‚˜๋ฆฌ์˜ค 3: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์—๋Ÿฌ (LOW confidence)

$ python app.py
CustomBusinessError: Payment validation failed

# AI ์‹คํ–‰:
[TIER 3] ์ž๋™ํ™” ๋ถˆ๊ฐ€๋Šฅ
์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๐Ÿค– Development Assistant

์ž๋™ ํŒŒ์ผ ๊ฐ์‹œ ๋ฐ ์ฝ”๋“œ ๊ฒ€์ฆ ์‹œ์Šคํ…œ

Development Assistant๋Š” Python ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์ž๋™์œผ๋กœ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ฒ€์ฆํ•˜๋Š” ํ”„๋กœ๋•์…˜๊ธ‰ ํŒŒ์ผ ์›Œ์ฒ˜์ž…๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • ์‹ค์‹œ๊ฐ„ ํŒŒ์ผ ๊ฐ์‹œ: scripts/, tests/ ๋””๋ ‰ํ† ๋ฆฌ์˜ Python ํŒŒ์ผ ๋ณ€๊ฒฝ ์ž๋™ ๊ฐ์ง€
  • ์ž๋™ Ruff ๊ฒ€์ฆ: ํŒŒ์ผ ์ €์žฅ ์‹œ ์ž๋™์œผ๋กœ Ruff ๋ฆฐํŒ… ์‹คํ–‰ (<200ms)
  • ์ฆ๊ฑฐ ๊ธฐ๋ฐ˜ ๋กœ๊น…: ๋ชจ๋“  ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋ฅผ JSON + ํ…์ŠคํŠธ๋กœ ์ž๋™ ๊ธฐ๋ก
  • ๋””๋ฐ”์šด์‹ฑ: ์—ฐ์†๋œ ์ €์žฅ์„ 500ms ๊ฐ„๊ฒฉ์œผ๋กœ ๋ณ‘ํ•ฉํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๊ฒ€์ฆ ๋ฐฉ์ง€
  • ๋‚ฎ์€ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ: ์œ ํœด ์‹œ <2% CPU ์‚ฌ์šฉ
  • ์šฐ์•„ํ•œ ์ข…๋ฃŒ: SIGINT/SIGTERM ์‹ ํ˜ธ ์ฒ˜๋ฆฌ๋กœ ์•ˆ์ „ํ•œ ์ข…๋ฃŒ

๋น ๋ฅธ ์‹œ์ž‘

# 1. ๊ธฐ๋ณธ ์‹คํ–‰ (scripts/, tests/ ๊ฐ์‹œ)
python scripts/dev_assistant.py

# 2. ์ปค์Šคํ…€ ๋””๋ ‰ํ† ๋ฆฌ ๊ฐ์‹œ
python scripts/dev_assistant.py --watch-dirs scripts tests src

# 3. ๋””๋ฐ”์šด์Šค ์‹œ๊ฐ„ ์กฐ์ • (1์ดˆ)
python scripts/dev_assistant.py --debounce 1000

# 4. ๋””๋ฒ„๊ทธ ๋ชจ๋“œ
python scripts/dev_assistant.py --log-level DEBUG

์„ค์ • (pyproject.toml)

๋ชจ๋“  ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” pyproject.toml์—์„œ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋ฉฐ, CLI ์ธ์ž๊ฐ€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

[tool.dev-assistant]
# ํ™œ์„ฑํ™” ์—ฌ๋ถ€
enabled = true

# ๊ฐ์‹œํ•  ๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก
watch_paths = ["scripts", "tests", "src"]

# ๋””๋ฐ”์šด์Šค ์‹œ๊ฐ„ (๋ฐ€๋ฆฌ์ดˆ)
debounce_ms = 500

# Ruff ๊ฒ€์ฆ ํƒ€์ž„์•„์›ƒ (์ดˆ)
verification_timeout_sec = 2.0

# ์ฆ๊ฑฐ ๋กœ๊ทธ ๋ณด๊ด€ ๊ธฐ๊ฐ„ (์ผ)
log_retention_days = 7

# Ruff ๊ฒ€์ฆ ํ™œ์„ฑํ™”
enable_ruff = true

# ์ฆ๊ฑฐ ๋กœ๊น… ํ™œ์„ฑํ™”
enable_evidence = true

์ฆ๊ฑฐ ๋กœ๊ทธ

๊ฒ€์ฆ ๊ฒฐ๊ณผ๋Š” RUNS/dev-assistant-YYYYMMDD/ ๋””๋ ‰ํ† ๋ฆฌ์— ์ž๋™ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค:

  • evidence.json: ๊ตฌ์กฐํ™”๋œ JSON ํ˜•์‹ (ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ๋ถ„์„์šฉ)
  • verification.log: ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฌ์šด ํ…์ŠคํŠธ ํ˜•์‹

๋กœ๊ทธ ์˜ˆ์‹œ

[2025-10-22T10:30:15] PASS - scripts/task_executor.py
  Duration: 120ms

[2025-10-22T10:31:42] FAIL - scripts/new_feature.py
  Duration: 95ms
  Violations: 2
    โ€ข Line 15:1 - E501: Line too long (120 > 88 characters) [fixable]
    โ€ข Line 3:8 - F401: `os` imported but unused [fixable]

CLI ์ฐธ์กฐ

python scripts/dev_assistant.py --help

์˜ต์…˜:
  --watch-dirs DIR [DIR ...]    ๊ฐ์‹œํ•  ๋””๋ ‰ํ† ๋ฆฌ (config ํŒŒ์ผ ์˜ค๋ฒ„๋ผ์ด๋“œ)
  --debounce MS                 ๋””๋ฐ”์šด์Šค ์‹œ๊ฐ„ ๋ฐ€๋ฆฌ์ดˆ (config ํŒŒ์ผ ์˜ค๋ฒ„๋ผ์ด๋“œ)
  --log-level LEVEL             ๋กœ๊น… ๋ ˆ๋ฒจ (DEBUG|INFO|WARNING|ERROR)
  --no-ruff                     Ruff ๊ฒ€์ฆ ๋น„ํ™œ์„ฑํ™” (config ํŒŒ์ผ ์˜ค๋ฒ„๋ผ์ด๋“œ)
  --no-evidence                 ์ฆ๊ฑฐ ๋กœ๊น… ๋น„ํ™œ์„ฑํ™” (config ํŒŒ์ผ ์˜ค๋ฒ„๋ผ์ด๋“œ)

์›Œํฌํ”Œ๋กœ์šฐ ํ†ตํ•ฉ

๊ฐœ๋ฐœ ์ค‘ ์‹ค์‹œ๊ฐ„ ๊ฒ€์ฆ:

# ํ„ฐ๋ฏธ๋„ 1: Development Assistant ์‹คํ–‰
python scripts/dev_assistant.py

# ํ„ฐ๋ฏธ๋„ 2: ์ฝ”๋“œ ์ž‘์—…
vim scripts/my_feature.py  # ์ €์žฅ ์‹œ ์ž๋™ ๊ฒ€์ฆ๋จ

CI/CD ํ†ตํ•ฉ:

# .github/workflows/quality.yml
- name: Run Ruff checks
  run: ruff check scripts/ tests/

# ๋˜๋Š” Development Assistant์˜ ์ฆ๊ฑฐ ๋กœ๊ทธ ๋ถ„์„
- name: Analyze verification evidence
  run: python scripts/analyze_evidence.py RUNS/dev-assistant-*/evidence.json

์„ฑ๋Šฅ ํŠน์„ฑ

  • ๊ฒ€์ฆ ์†๋„: ์ผ๋ฐ˜์ ์ธ Python ํŒŒ์ผ <200ms
  • CPU ์‚ฌ์šฉ: ์œ ํœด ์‹œ <2% (ํŒŒ์ผ ๋ณ€๊ฒฝ ์‹œ ์ˆœ๊ฐ„์ ์œผ๋กœ ์ฆ๊ฐ€)
  • ๋ฉ”๋ชจ๋ฆฌ: ํŒŒ์ผ ์›Œ์ฒ˜ + ์Šค๋ ˆ๋“œ ํ’€ ~20MB
  • ๋””์Šคํฌ I/O: ์ฆ๊ฑฐ ๋กœ๊ทธ๋งŒ ๊ธฐ๋ก (์ผ์ผ ~1-5MB)

๋ฌธ์ œ ํ•ด๊ฒฐ

"Ruff not found" ์˜ค๋ฅ˜:

pip install ruff

"tomllib/tomli not available" ๊ฒฝ๊ณ :

# Python 3.11 ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ
pip install tomli

ํŒŒ์ผ ๊ฐ์‹œ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ:

# watchdog ์žฌ์„ค์น˜
pip install --upgrade watchdog

# ๋””๋ ‰ํ† ๋ฆฌ ๊ถŒํ•œ ํ™•์ธ
ls -la scripts/ tests/

๊ณผ๋„ํ•œ ๊ฒ€์ฆ ์‹คํ–‰:

# ๋””๋ฐ”์šด์Šค ์‹œ๊ฐ„ ์ฆ๊ฐ€ (1์ดˆ)
python scripts/dev_assistant.py --debounce 1000

๐Ÿ”— ๊ด€๋ จ ๋ฌธ์„œ


๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ (Contributing)

์ด ํ”„๋กœ์ ํŠธ๋Š” ์˜คํ”ˆ์†Œ์Šค์ž…๋‹ˆ๋‹ค! ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์—ฌ ๋ฐฉ๋ฒ•

  1. Issue ์ƒ์„ฑ

    • ๋ฒ„๊ทธ ๋ฆฌํฌํŠธ, ๊ธฐ๋Šฅ ์ œ์•ˆ, ์งˆ๋ฌธ ๋“ฑ
    • Template: .github/ISSUE_TEMPLATE.md (์ž‘์„ฑ ์˜ˆ์ •)
  2. Pull Request

    • Fork โ†’ Branch โ†’ Commit โ†’ PR
    • Conventional Commits ์ค€์ˆ˜ ํ•„์ˆ˜
    • Pre-commit hooks๊ฐ€ ์ž๋™์œผ๋กœ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค
  3. Constitution ๊ฐœ์„ 

    • P11-P13 ์ ์šฉ ์‚ฌ๋ก€ ๊ณต์œ 
    • ์ƒˆ ์กฐํ•ญ ์ œ์•ˆ (P13 ํ”„๋กœ์„ธ์Šค ์ ์šฉ)
    • NORTH_STAR.md ํ”ผ๋“œ๋ฐฑ

๊ธฐ์—ฌ ๊ฐ€์ด๋“œ๋ผ์ธ

์ฝ”๋“œ ํ’ˆ์งˆ:

  • ruff check ํ†ต๊ณผ ํ•„์ˆ˜
  • pytest ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
  • Coverage โ‰ฅ 90%

์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€:

feat(scope): ์ƒˆ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix(scope): ๋ฒ„๊ทธ ์ˆ˜์ •
docs(scope): ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ

Pull Request ์ฒดํฌ๋ฆฌ์ŠคํŠธ:

  • Constitution ์กฐํ•ญ๊ณผ ์—ฐ๊ฒฐ (์–ด๋А ์กฐํ•ญ ๊ฐ•ํ™”?)
  • 7๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜ ์œ„์น˜ ๋ช…์‹œ
  • NORTH_STAR.md ์ฐธ์กฐ (๋ฐฉํ–ฅ์„ฑ ํ™•์ธ)
  • ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€/์—…๋ฐ์ดํŠธ
  • CHANGELOG.md ์—…๋ฐ์ดํŠธ

์ปค๋ฎค๋‹ˆํ‹ฐ

  • Discussions: ์งˆ๋ฌธ, ์•„์ด๋””์–ด ๊ณต์œ 
  • Issues: ๋ฒ„๊ทธ, ๊ธฐ๋Šฅ ์š”์ฒญ
  • Wiki: ์‚ฌ์šฉ ์‚ฌ๋ก€, ํŠœํ† ๋ฆฌ์–ผ (์ž‘์„ฑ ์˜ˆ์ •)

๐Ÿ“ ๋ผ์ด์„ ์Šค

MIT License - ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ, ์ˆ˜์ •, ์žฌ๋ฐฐํฌ ๊ฐ€๋Šฅ

์ƒ์„ธ ๋‚ด์šฉ: LICENSE

์ €์ž‘๊ถŒ

Copyright (c) 2025 positivef

์‚ฌ์šฉ ํ—ˆ๊ฐ€

  • โœ… ์ƒ์—…์  ์‚ฌ์šฉ
  • โœ… ์ˆ˜์ •
  • โœ… ๋ฐฐํฌ
  • โœ… ๊ฐœ์ธ ์‚ฌ์šฉ

์กฐ๊ฑด: ์›์ž‘์ž ํ‘œ์‹œ ๋ฐ ๋ผ์ด์„ ์Šค ๊ณ ์ง€ ํฌํ•จ


๐Ÿ™ ํฌ๋ ˆ๋””ํŠธ

์›์ž‘์ž: positivef ํ”„๋กœ์ ํŠธ: Dev Rules Starter Kit GitHub: https://github.com/positivef/dev-rules-starter-kit

์ด ์Šคํƒ€ํ„ฐ ํ‚ท์€ DoubleDiver ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ๋ฐœ ๊ทœ์น™ ์‹œ์Šคํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ๋‹ค์Œ ์‹œ์Šคํ…œ๋“ค์˜ best practice๋ฅผ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค:

  • Google Agent Development Kit (ADK) 2025
  • Cursor Rules 2025
  • GitHub Copilot Instructions 2025
  • Commitlint + Semantic Release
  • Obsidian Automation 2025

์˜๊ฐ์„ ๋ฐ›์€ ํ”„๋กœ์ ํŠธ

  • Linux: ์˜คํ”ˆ์†Œ์Šค ๊ฑฐ๋ฒ„๋„Œ์Šค ๋ชจ๋ธ
  • React: ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ
  • Python: ๋ช…ํ™•ํ•œ ์ฒ ํ•™ (PEP 20 - Zen of Python)

๐Ÿ“Š ํ”„๋กœ์ ํŠธ ํ˜„ํ™ฉ

๋ฒ„์ „: 1.1.0 โœ… ์™„์„ฑ ์ƒํƒœ: Release & Observe (3๊ฐœ์›” ๊ด€์ฐฐ ๊ธฐ๊ฐ„) ์ƒ์„ฑ์ผ: 2025-10-18 ์™„์„ฑ์ผ: 2025-10-24 ๋‹ค์Œ ๋ฆฌ๋ทฐ: 2025-01-24 (P13 First Review)

ํ†ต๊ณ„:

  • Constitution ์กฐํ•ญ: 13๊ฐœ (P1-P13)
  • 7๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜
  • ํ•™์Šต ์‹œ๊ฐ„: 20๋ถ„
  • ROI: 2,150% (1๋…„), 11,150% (5๋…„)

๊ฐœ๋ฐœ ๋ชจ๋“œ:

  • โœ… v1.1.0 ์™„์„ฑ (ํ…œํ”Œ๋ฆฟ ์™„์„ฑ)
  • ๐Ÿ” ๊ด€์ฐฐ ๊ธฐ๊ฐ„ (2025-10-24 ~ 2025-01-24)
  • ๐Ÿ“Š ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ง‘ ์ค‘
  • ๐Ÿšซ Phase E ๋ณด๋ฅ˜ (YAGNI ์›์น™)

๊ด€์ฐฐ ํ•ญ๋ชฉ:

  • GitHub ํ†ต๊ณ„ (Star, Fork, Issues)
  • ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ๋ฐ ์‚ฌ์šฉ ์‚ฌ๋ก€
  • P11-P13 ์‹ค์ „ ์ ์šฉ ๊ฒฝํ—˜
  • Constitution ๊ฐœ์„  ํ•„์š”์„ฑ

์ฐธ๊ณ : Phase E ๋ณด๋ฅ˜ ๊ฒฐ์ • ๋ฌธ์„œ

About

Constitution-based Executable Knowledge Base - Development framework with P1-P13 governance articles

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages