gsd-code-first 1.0.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/LICENSE +21 -0
- package/README.ja-JP.md +834 -0
- package/README.ko-KR.md +823 -0
- package/README.md +937 -0
- package/README.pt-BR.md +452 -0
- package/README.zh-CN.md +800 -0
- package/agents/gsd-advisor-researcher.md +104 -0
- package/agents/gsd-annotator.md +148 -0
- package/agents/gsd-arc-executor.md +537 -0
- package/agents/gsd-arc-planner.md +374 -0
- package/agents/gsd-assumptions-analyzer.md +105 -0
- package/agents/gsd-code-planner.md +155 -0
- package/agents/gsd-codebase-mapper.md +770 -0
- package/agents/gsd-debugger.md +1373 -0
- package/agents/gsd-executor.md +509 -0
- package/agents/gsd-integration-checker.md +443 -0
- package/agents/gsd-nyquist-auditor.md +176 -0
- package/agents/gsd-phase-researcher.md +698 -0
- package/agents/gsd-plan-checker.md +773 -0
- package/agents/gsd-planner.md +1354 -0
- package/agents/gsd-project-researcher.md +654 -0
- package/agents/gsd-prototyper.md +161 -0
- package/agents/gsd-research-synthesizer.md +247 -0
- package/agents/gsd-roadmapper.md +679 -0
- package/agents/gsd-ui-auditor.md +439 -0
- package/agents/gsd-ui-checker.md +300 -0
- package/agents/gsd-ui-researcher.md +357 -0
- package/agents/gsd-user-profiler.md +171 -0
- package/agents/gsd-verifier.md +700 -0
- package/bin/install.js +5009 -0
- package/commands/gsd/add-backlog.md +76 -0
- package/commands/gsd/add-phase.md +43 -0
- package/commands/gsd/add-tests.md +41 -0
- package/commands/gsd/add-todo.md +47 -0
- package/commands/gsd/annotate.md +54 -0
- package/commands/gsd/audit-milestone.md +36 -0
- package/commands/gsd/audit-uat.md +24 -0
- package/commands/gsd/autonomous.md +41 -0
- package/commands/gsd/check-todos.md +45 -0
- package/commands/gsd/cleanup.md +18 -0
- package/commands/gsd/complete-milestone.md +136 -0
- package/commands/gsd/debug.md +173 -0
- package/commands/gsd/deep-plan.md +52 -0
- package/commands/gsd/discuss-phase.md +64 -0
- package/commands/gsd/do.md +30 -0
- package/commands/gsd/execute-phase.md +59 -0
- package/commands/gsd/extract-plan.md +35 -0
- package/commands/gsd/fast.md +30 -0
- package/commands/gsd/forensics.md +56 -0
- package/commands/gsd/health.md +22 -0
- package/commands/gsd/help.md +22 -0
- package/commands/gsd/insert-phase.md +32 -0
- package/commands/gsd/iterate.md +124 -0
- package/commands/gsd/join-discord.md +18 -0
- package/commands/gsd/list-phase-assumptions.md +46 -0
- package/commands/gsd/list-workspaces.md +19 -0
- package/commands/gsd/manager.md +39 -0
- package/commands/gsd/map-codebase.md +71 -0
- package/commands/gsd/milestone-summary.md +51 -0
- package/commands/gsd/new-milestone.md +44 -0
- package/commands/gsd/new-project.md +42 -0
- package/commands/gsd/new-workspace.md +44 -0
- package/commands/gsd/next.md +24 -0
- package/commands/gsd/note.md +34 -0
- package/commands/gsd/pause-work.md +38 -0
- package/commands/gsd/plan-milestone-gaps.md +34 -0
- package/commands/gsd/plan-phase.md +47 -0
- package/commands/gsd/plant-seed.md +28 -0
- package/commands/gsd/pr-branch.md +25 -0
- package/commands/gsd/profile-user.md +46 -0
- package/commands/gsd/progress.md +24 -0
- package/commands/gsd/prototype.md +56 -0
- package/commands/gsd/quick.md +47 -0
- package/commands/gsd/reapply-patches.md +123 -0
- package/commands/gsd/remove-phase.md +31 -0
- package/commands/gsd/remove-workspace.md +26 -0
- package/commands/gsd/research-phase.md +195 -0
- package/commands/gsd/resume-work.md +40 -0
- package/commands/gsd/review-backlog.md +61 -0
- package/commands/gsd/review.md +37 -0
- package/commands/gsd/session-report.md +19 -0
- package/commands/gsd/set-mode.md +41 -0
- package/commands/gsd/set-profile.md +12 -0
- package/commands/gsd/settings.md +36 -0
- package/commands/gsd/ship.md +23 -0
- package/commands/gsd/stats.md +18 -0
- package/commands/gsd/thread.md +127 -0
- package/commands/gsd/ui-phase.md +34 -0
- package/commands/gsd/ui-review.md +32 -0
- package/commands/gsd/update.md +37 -0
- package/commands/gsd/validate-phase.md +35 -0
- package/commands/gsd/verify-work.md +38 -0
- package/commands/gsd/workstreams.md +63 -0
- package/get-shit-done/bin/gsd-tools.cjs +946 -0
- package/get-shit-done/bin/lib/arc-scanner.cjs +341 -0
- package/get-shit-done/bin/lib/commands.cjs +959 -0
- package/get-shit-done/bin/lib/config.cjs +466 -0
- package/get-shit-done/bin/lib/core.cjs +1230 -0
- package/get-shit-done/bin/lib/frontmatter.cjs +336 -0
- package/get-shit-done/bin/lib/init.cjs +1442 -0
- package/get-shit-done/bin/lib/milestone.cjs +252 -0
- package/get-shit-done/bin/lib/model-profiles.cjs +68 -0
- package/get-shit-done/bin/lib/phase.cjs +888 -0
- package/get-shit-done/bin/lib/profile-output.cjs +952 -0
- package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
- package/get-shit-done/bin/lib/roadmap.cjs +329 -0
- package/get-shit-done/bin/lib/security.cjs +382 -0
- package/get-shit-done/bin/lib/state.cjs +1031 -0
- package/get-shit-done/bin/lib/template.cjs +222 -0
- package/get-shit-done/bin/lib/uat.cjs +282 -0
- package/get-shit-done/bin/lib/verify.cjs +888 -0
- package/get-shit-done/bin/lib/workstream.cjs +491 -0
- package/get-shit-done/commands/gsd/workstreams.md +63 -0
- package/get-shit-done/references/arc-standard.md +315 -0
- package/get-shit-done/references/checkpoints.md +778 -0
- package/get-shit-done/references/continuation-format.md +249 -0
- package/get-shit-done/references/decimal-phase-calculation.md +64 -0
- package/get-shit-done/references/git-integration.md +295 -0
- package/get-shit-done/references/git-planning-commit.md +38 -0
- package/get-shit-done/references/model-profile-resolution.md +36 -0
- package/get-shit-done/references/model-profiles.md +139 -0
- package/get-shit-done/references/phase-argument-parsing.md +61 -0
- package/get-shit-done/references/planning-config.md +202 -0
- package/get-shit-done/references/questioning.md +162 -0
- package/get-shit-done/references/tdd.md +263 -0
- package/get-shit-done/references/ui-brand.md +160 -0
- package/get-shit-done/references/user-profiling.md +681 -0
- package/get-shit-done/references/verification-patterns.md +612 -0
- package/get-shit-done/references/workstream-flag.md +58 -0
- package/get-shit-done/templates/DEBUG.md +164 -0
- package/get-shit-done/templates/UAT.md +265 -0
- package/get-shit-done/templates/UI-SPEC.md +100 -0
- package/get-shit-done/templates/VALIDATION.md +76 -0
- package/get-shit-done/templates/claude-md.md +122 -0
- package/get-shit-done/templates/codebase/architecture.md +255 -0
- package/get-shit-done/templates/codebase/concerns.md +310 -0
- package/get-shit-done/templates/codebase/conventions.md +307 -0
- package/get-shit-done/templates/codebase/integrations.md +280 -0
- package/get-shit-done/templates/codebase/stack.md +186 -0
- package/get-shit-done/templates/codebase/structure.md +285 -0
- package/get-shit-done/templates/codebase/testing.md +480 -0
- package/get-shit-done/templates/config.json +44 -0
- package/get-shit-done/templates/context.md +352 -0
- package/get-shit-done/templates/continue-here.md +78 -0
- package/get-shit-done/templates/copilot-instructions.md +7 -0
- package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
- package/get-shit-done/templates/dev-preferences.md +21 -0
- package/get-shit-done/templates/discovery.md +146 -0
- package/get-shit-done/templates/discussion-log.md +63 -0
- package/get-shit-done/templates/milestone-archive.md +123 -0
- package/get-shit-done/templates/milestone.md +115 -0
- package/get-shit-done/templates/phase-prompt.md +610 -0
- package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
- package/get-shit-done/templates/project.md +186 -0
- package/get-shit-done/templates/requirements.md +231 -0
- package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
- package/get-shit-done/templates/research-project/FEATURES.md +147 -0
- package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
- package/get-shit-done/templates/research-project/STACK.md +120 -0
- package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
- package/get-shit-done/templates/research.md +552 -0
- package/get-shit-done/templates/retrospective.md +54 -0
- package/get-shit-done/templates/roadmap.md +202 -0
- package/get-shit-done/templates/state.md +176 -0
- package/get-shit-done/templates/summary-complex.md +59 -0
- package/get-shit-done/templates/summary-minimal.md +41 -0
- package/get-shit-done/templates/summary-standard.md +48 -0
- package/get-shit-done/templates/summary.md +248 -0
- package/get-shit-done/templates/user-profile.md +146 -0
- package/get-shit-done/templates/user-setup.md +311 -0
- package/get-shit-done/templates/verification-report.md +322 -0
- package/get-shit-done/workflows/add-phase.md +112 -0
- package/get-shit-done/workflows/add-tests.md +351 -0
- package/get-shit-done/workflows/add-todo.md +158 -0
- package/get-shit-done/workflows/audit-milestone.md +340 -0
- package/get-shit-done/workflows/audit-uat.md +109 -0
- package/get-shit-done/workflows/autonomous.md +891 -0
- package/get-shit-done/workflows/check-todos.md +177 -0
- package/get-shit-done/workflows/cleanup.md +152 -0
- package/get-shit-done/workflows/complete-milestone.md +767 -0
- package/get-shit-done/workflows/diagnose-issues.md +231 -0
- package/get-shit-done/workflows/discovery-phase.md +289 -0
- package/get-shit-done/workflows/discuss-phase-assumptions.md +653 -0
- package/get-shit-done/workflows/discuss-phase.md +1049 -0
- package/get-shit-done/workflows/do.md +104 -0
- package/get-shit-done/workflows/execute-phase.md +846 -0
- package/get-shit-done/workflows/execute-plan.md +514 -0
- package/get-shit-done/workflows/fast.md +105 -0
- package/get-shit-done/workflows/forensics.md +265 -0
- package/get-shit-done/workflows/health.md +181 -0
- package/get-shit-done/workflows/help.md +634 -0
- package/get-shit-done/workflows/insert-phase.md +130 -0
- package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
- package/get-shit-done/workflows/list-workspaces.md +56 -0
- package/get-shit-done/workflows/manager.md +362 -0
- package/get-shit-done/workflows/map-codebase.md +377 -0
- package/get-shit-done/workflows/milestone-summary.md +223 -0
- package/get-shit-done/workflows/new-milestone.md +486 -0
- package/get-shit-done/workflows/new-project.md +1250 -0
- package/get-shit-done/workflows/new-workspace.md +237 -0
- package/get-shit-done/workflows/next.md +97 -0
- package/get-shit-done/workflows/node-repair.md +92 -0
- package/get-shit-done/workflows/note.md +156 -0
- package/get-shit-done/workflows/pause-work.md +176 -0
- package/get-shit-done/workflows/plan-milestone-gaps.md +273 -0
- package/get-shit-done/workflows/plan-phase.md +859 -0
- package/get-shit-done/workflows/plant-seed.md +169 -0
- package/get-shit-done/workflows/pr-branch.md +129 -0
- package/get-shit-done/workflows/profile-user.md +450 -0
- package/get-shit-done/workflows/progress.md +507 -0
- package/get-shit-done/workflows/quick.md +757 -0
- package/get-shit-done/workflows/remove-phase.md +155 -0
- package/get-shit-done/workflows/remove-workspace.md +90 -0
- package/get-shit-done/workflows/research-phase.md +82 -0
- package/get-shit-done/workflows/resume-project.md +326 -0
- package/get-shit-done/workflows/review.md +228 -0
- package/get-shit-done/workflows/session-report.md +146 -0
- package/get-shit-done/workflows/settings.md +283 -0
- package/get-shit-done/workflows/ship.md +228 -0
- package/get-shit-done/workflows/stats.md +60 -0
- package/get-shit-done/workflows/transition.md +671 -0
- package/get-shit-done/workflows/ui-phase.md +302 -0
- package/get-shit-done/workflows/ui-review.md +165 -0
- package/get-shit-done/workflows/update.md +323 -0
- package/get-shit-done/workflows/validate-phase.md +174 -0
- package/get-shit-done/workflows/verify-phase.md +254 -0
- package/get-shit-done/workflows/verify-work.md +637 -0
- package/hooks/dist/gsd-check-update.js +114 -0
- package/hooks/dist/gsd-context-monitor.js +156 -0
- package/hooks/dist/gsd-prompt-guard.js +96 -0
- package/hooks/dist/gsd-statusline.js +119 -0
- package/hooks/dist/gsd-workflow-guard.js +94 -0
- package/package.json +52 -0
- package/scripts/base64-scan.sh +262 -0
- package/scripts/build-hooks.js +82 -0
- package/scripts/prompt-injection-scan.sh +198 -0
- package/scripts/run-tests.cjs +29 -0
- package/scripts/secret-scan.sh +227 -0
package/README.ko-KR.md
ADDED
|
@@ -0,0 +1,823 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# GET SHIT DONE
|
|
4
|
+
|
|
5
|
+
[English](README.md) · [Português](README.pt-BR.md) · [简体中文](README.zh-CN.md) · [日本語](README.ja-JP.md) · **한국어**
|
|
6
|
+
|
|
7
|
+
**Claude Code, OpenCode, Gemini CLI, Codex, Copilot, Cursor, Antigravity를 위한 가볍고 강력한 메타 프롬프팅, 컨텍스트 엔지니어링, 스펙 기반 개발 시스템.**
|
|
8
|
+
|
|
9
|
+
**컨텍스트 rot를 해결합니다 — Claude의 컨텍스트 창이 채워질수록 품질이 저하되는 문제.**
|
|
10
|
+
|
|
11
|
+
[](https://www.npmjs.com/package/get-shit-done-cc)
|
|
12
|
+
[](https://www.npmjs.com/package/get-shit-done-cc)
|
|
13
|
+
[](https://github.com/gsd-build/get-shit-done/actions/workflows/test.yml)
|
|
14
|
+
[](https://discord.gg/gsd)
|
|
15
|
+
[](https://x.com/gsd_foundation)
|
|
16
|
+
[](https://dexscreener.com/solana/dwudwjvan7bzkw9zwlbyv6kspdlvhwzrqy6ebk8xzxkv)
|
|
17
|
+
[](https://github.com/gsd-build/get-shit-done)
|
|
18
|
+
[](LICENSE)
|
|
19
|
+
|
|
20
|
+
<br>
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx get-shit-done-cc@latest
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Mac, Windows, Linux 모두 지원.**
|
|
27
|
+
|
|
28
|
+
<br>
|
|
29
|
+
|
|
30
|
+

|
|
31
|
+
|
|
32
|
+
<br>
|
|
33
|
+
|
|
34
|
+
*"원하는 게 뭔지 명확하게 알고 있다면, 이게 진짜로 만들어줍니다. 과장 없이."*
|
|
35
|
+
|
|
36
|
+
*"SpecKit, OpenSpec, Taskmaster 다 써봤는데 — 지금까지 이게 제일 결과가 좋았어요."*
|
|
37
|
+
|
|
38
|
+
*"Claude Code에 추가한 것 중 단연 가장 강력합니다. 과하게 엔지니어링하지 않고, 말 그대로 그냥 해냅니다."*
|
|
39
|
+
|
|
40
|
+
<br>
|
|
41
|
+
|
|
42
|
+
**Amazon, Google, Shopify, Webflow 엔지니어들이 신뢰합니다.**
|
|
43
|
+
|
|
44
|
+
[왜 만들었나](#왜-만들었나) · [작동 방식](#작동-방식) · [명령어](#명령어) · [왜 효과적인가](#왜-효과적인가) · [사용자 가이드](docs/ko-KR/USER-GUIDE.md)
|
|
45
|
+
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 왜 만들었나
|
|
51
|
+
|
|
52
|
+
저는 솔로 개발자입니다. 코드는 제가 아니라 Claude Code가 씁니다.
|
|
53
|
+
|
|
54
|
+
스펙 기반 개발 도구가 없는 건 아닙니다. BMAD, Speckit 같은 것들이 있죠. 근데 다들 필요 이상으로 복잡합니다 — 스프린트 세리머니, 스토리 포인트, 이해관계자 싱크, 회고, 지라 워크플로우. 저는 50인 규모 소프트웨어 회사가 아니에요. 기업 연극을 하고 싶지 않습니다. 그냥 좋은 걸 만들고 싶은 사람입니다.
|
|
55
|
+
|
|
56
|
+
그래서 GSD를 만들었습니다. 복잡함은 시스템 안에 있습니다. 워크플로우에 있는 게 아니라. 뒤에서 컨텍스트 엔지니어링, XML 프롬프트 포맷팅, 서브에이전트 오케스트레이션, 상태 관리가 돌아갑니다. 겉에서 보이는 건 그냥 몇 가지 명령어뿐입니다.
|
|
57
|
+
|
|
58
|
+
시스템이 Claude한테 작업하는 데 필요한 것과 검증하는 데 필요한 것을 모두 줍니다. 저는 이 워크플로우를 믿습니다. 그냥 잘 됩니다.
|
|
59
|
+
|
|
60
|
+
이게 전부입니다. 기업 역할극 같은 건 없습니다. Claude Code를 일관성 있게 쓰기 위한, 진짜로 잘 되는 시스템입니다.
|
|
61
|
+
|
|
62
|
+
— **TÂCHES**
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
바이브코딩은 평판이 안 좋습니다. 원하는 걸 설명하면 AI가 코드를 생성하는데, 규모가 커지면 엉망이 되는 일관성 없는 쓰레기가 나옵니다.
|
|
67
|
+
|
|
68
|
+
GSD가 그걸 고칩니다. Claude Code를 신뢰할 수 있게 만드는 컨텍스트 엔지니어링 레이어입니다. 아이디어를 설명하면 시스템이 필요한 걸 다 뽑아내고, Claude Code가 일을 시작합니다.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 이게 누구를 위한 건가
|
|
73
|
+
|
|
74
|
+
원하는 걸 설명하면 제대로 만들어지길 바라는 사람들 — 50인 규모 엔지니어링 조직인 척하지 않아도 되는.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 시작하기
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npx get-shit-done-cc@latest
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
설치 중에 다음을 선택합니다:
|
|
85
|
+
1. **런타임** — Claude Code, OpenCode, Gemini, Codex, Copilot, Cursor, Antigravity, 또는 전체 (대화형 다중 선택 — 한 번에 여러 런타임 선택 가능)
|
|
86
|
+
2. **위치** — 전역 (모든 프로젝트) 또는 로컬 (현재 프로젝트만)
|
|
87
|
+
|
|
88
|
+
설치가 됐는지 확인하려면:
|
|
89
|
+
- Claude Code / Gemini: `/gsd:help`
|
|
90
|
+
- OpenCode: `/gsd-help`
|
|
91
|
+
- Codex: `$gsd-help`
|
|
92
|
+
- Copilot: `/gsd:help`
|
|
93
|
+
- Antigravity: `/gsd:help`
|
|
94
|
+
|
|
95
|
+
> [!NOTE]
|
|
96
|
+
> Codex 설치는 커스텀 프롬프트 대신 스킬(`skills/gsd-*/SKILL.md`)을 사용합니다.
|
|
97
|
+
|
|
98
|
+
### 업데이트 유지
|
|
99
|
+
|
|
100
|
+
GSD는 빠르게 발전합니다. 주기적으로 업데이트하세요:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npx get-shit-done-cc@latest
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
<details>
|
|
107
|
+
<summary><strong>비대화형 설치 (Docker, CI, 스크립트)</strong></summary>
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Claude Code
|
|
111
|
+
npx get-shit-done-cc --claude --global # ~/.claude/에 설치
|
|
112
|
+
npx get-shit-done-cc --claude --local # ./.claude/에 설치
|
|
113
|
+
|
|
114
|
+
# OpenCode (오픈소스, 무료 모델)
|
|
115
|
+
npx get-shit-done-cc --opencode --global # ~/.config/opencode/에 설치
|
|
116
|
+
|
|
117
|
+
# Gemini CLI
|
|
118
|
+
npx get-shit-done-cc --gemini --global # ~/.gemini/에 설치
|
|
119
|
+
|
|
120
|
+
# Codex (스킬 우선)
|
|
121
|
+
npx get-shit-done-cc --codex --global # ~/.codex/에 설치
|
|
122
|
+
npx get-shit-done-cc --codex --local # ./.codex/에 설치
|
|
123
|
+
|
|
124
|
+
# Copilot (GitHub Copilot CLI)
|
|
125
|
+
npx get-shit-done-cc --copilot --global # ~/.github/에 설치
|
|
126
|
+
npx get-shit-done-cc --copilot --local # ./.github/에 설치
|
|
127
|
+
|
|
128
|
+
# Cursor CLI
|
|
129
|
+
npx get-shit-done-cc --cursor --global # ~/.cursor/에 설치
|
|
130
|
+
npx get-shit-done-cc --cursor --local # ./.cursor/에 설치
|
|
131
|
+
|
|
132
|
+
# Antigravity (Google, 스킬 우선, Gemini 기반)
|
|
133
|
+
npx get-shit-done-cc --antigravity --global # ~/.gemini/antigravity/에 설치
|
|
134
|
+
npx get-shit-done-cc --antigravity --local # ./.agent/에 설치
|
|
135
|
+
|
|
136
|
+
# 전체 런타임
|
|
137
|
+
npx get-shit-done-cc --all --global # 모든 디렉터리에 설치
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
위치 프롬프트 건너뛰기: `--global` (`-g`) 또는 `--local` (`-l`).
|
|
141
|
+
런타임 프롬프트 건너뛰기: `--claude`, `--opencode`, `--gemini`, `--codex`, `--copilot`, `--cursor`, `--antigravity`, 또는 `--all`.
|
|
142
|
+
|
|
143
|
+
</details>
|
|
144
|
+
|
|
145
|
+
<details>
|
|
146
|
+
<summary><strong>개발 설치</strong></summary>
|
|
147
|
+
|
|
148
|
+
저장소를 클론하고 설치 프로그램을 로컬에서 실행합니다:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
git clone https://github.com/gsd-build/get-shit-done.git
|
|
152
|
+
cd get-shit-done
|
|
153
|
+
node bin/install.js --claude --local
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
기여 전 수정사항 테스트를 위해 `./.claude/`에 설치됩니다.
|
|
157
|
+
|
|
158
|
+
</details>
|
|
159
|
+
|
|
160
|
+
### 권장: 권한 확인 건너뛰기 모드
|
|
161
|
+
|
|
162
|
+
GSD는 마찰 없는 자동화를 위해 설계되었습니다. Claude Code를 다음과 같이 실행하세요:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
claude --dangerously-skip-permissions
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
> [!TIP]
|
|
169
|
+
> 이게 GSD를 사용하는 방법입니다 — `date`와 `git commit` 50번을 승인하러 멈추면 의미가 없습니다.
|
|
170
|
+
|
|
171
|
+
<details>
|
|
172
|
+
<summary><strong>대안: 세분화된 권한</strong></summary>
|
|
173
|
+
|
|
174
|
+
해당 플래그를 쓰지 않으려면 프로젝트의 `.claude/settings.json`에 다음을 추가하세요:
|
|
175
|
+
|
|
176
|
+
```json
|
|
177
|
+
{
|
|
178
|
+
"permissions": {
|
|
179
|
+
"allow": [
|
|
180
|
+
"Bash(date:*)",
|
|
181
|
+
"Bash(echo:*)",
|
|
182
|
+
"Bash(cat:*)",
|
|
183
|
+
"Bash(ls:*)",
|
|
184
|
+
"Bash(mkdir:*)",
|
|
185
|
+
"Bash(wc:*)",
|
|
186
|
+
"Bash(head:*)",
|
|
187
|
+
"Bash(tail:*)",
|
|
188
|
+
"Bash(sort:*)",
|
|
189
|
+
"Bash(grep:*)",
|
|
190
|
+
"Bash(tr:*)",
|
|
191
|
+
"Bash(git add:*)",
|
|
192
|
+
"Bash(git commit:*)",
|
|
193
|
+
"Bash(git status:*)",
|
|
194
|
+
"Bash(git log:*)",
|
|
195
|
+
"Bash(git diff:*)",
|
|
196
|
+
"Bash(git tag:*)"
|
|
197
|
+
]
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
</details>
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 작동 방식
|
|
207
|
+
|
|
208
|
+
> **이미 코드가 있나요?** 먼저 `/gsd:map-codebase`를 실행하세요. 병렬 에이전트를 생성해 스택, 아키텍처, 컨벤션, 고려사항을 분석합니다. 그러면 `/gsd:new-project`가 코드베이스를 파악한 상태에서 시작되고 — 질문은 추가하는 것에 집중되고, 기획 시 자동으로 기존 패턴을 불러옵니다.
|
|
209
|
+
|
|
210
|
+
### 1. 프로젝트 초기화
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
/gsd:new-project
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
명령어 하나, 플로우 하나. 시스템이:
|
|
217
|
+
|
|
218
|
+
1. **질문** — 아이디어를 완전히 이해할 때까지 물어봅니다 (목표, 제약사항, 기술 선호도, 엣지 케이스)
|
|
219
|
+
2. **리서치** — 도메인 조사를 위해 병렬 에이전트를 생성합니다 (선택사항이지만 권장)
|
|
220
|
+
3. **요구사항** — v1, v2, 스코프 밖을 추출합니다
|
|
221
|
+
4. **로드맵** — 요구사항에 매핑된 단계를 생성합니다
|
|
222
|
+
|
|
223
|
+
로드맵을 승인하면 이제 만들 준비가 됩니다.
|
|
224
|
+
|
|
225
|
+
**생성 파일:** `PROJECT.md`, `REQUIREMENTS.md`, `ROADMAP.md`, `STATE.md`, `.planning/research/`
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
### 2. 단계 논의
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
/gsd:discuss-phase 1
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**여기서 구현을 직접 설계합니다.**
|
|
236
|
+
|
|
237
|
+
로드맵에는 단계당 한두 문장이 있습니다. 그건 *당신이 상상하는 방식*으로 뭔가를 만들기에 충분한 컨텍스트가 아닙니다. 리서치나 기획이 시작되기 전에 원하는 방향을 미리 잡아두는 단계입니다.
|
|
238
|
+
|
|
239
|
+
시스템이 단계를 분석하고 만들어지는 것에 기반한 회색 지대를 식별합니다:
|
|
240
|
+
|
|
241
|
+
- **시각적 기능** → 레이아웃, 밀도, 인터랙션, 빈 상태
|
|
242
|
+
- **API/CLI** → 응답 형식, 플래그, 오류 처리, 상세도
|
|
243
|
+
- **콘텐츠 시스템** → 구조, 톤, 깊이, 흐름
|
|
244
|
+
- **조직 작업** → 그룹화 기준, 이름 지정, 중복, 예외
|
|
245
|
+
|
|
246
|
+
선택한 각 영역에 대해 만족할 때까지 물어봅니다. 결과물인 `CONTEXT.md`는 다음 두 단계에 바로 쓰입니다.
|
|
247
|
+
|
|
248
|
+
1. **리서처가 읽습니다** — 어떤 패턴을 조사할지 파악합니다 ("카드 레이아웃 원함" → 카드 컴포넌트 라이브러리 리서치)
|
|
249
|
+
2. **플래너가 읽습니다** — 어떤 결정이 확정됐는지 파악합니다 ("무한 스크롤 결정됨" → 플랜에 스크롤 처리 포함)
|
|
250
|
+
|
|
251
|
+
여기서 깊이 들어갈수록 시스템이 실제로 원하는 것에 더 가깝게 만듭니다. 건너뛰면 합리적인 기본값을 얻습니다. 사용하면 *당신의* 비전을 얻습니다.
|
|
252
|
+
|
|
253
|
+
**생성 파일:** `{phase_num}-CONTEXT.md`
|
|
254
|
+
|
|
255
|
+
> **가정 모드:** 질문보다 코드베이스 분석을 선호하나요? `/gsd:settings`에서 `workflow.discuss_mode`를 `assumptions`로 설정하세요. 시스템이 코드를 읽고 하려는 것과 이유를 제시한 다음 틀린 부분만 수정을 요청합니다. [논의 모드](docs/ko-KR/workflow-discuss-mode.md) 참조.
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
### 3. 단계 기획
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
/gsd:plan-phase 1
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
시스템이:
|
|
266
|
+
|
|
267
|
+
1. **리서치** — CONTEXT.md 결정사항을 기반으로 구현 방법을 조사합니다
|
|
268
|
+
2. **기획** — XML 구조로 2~3개의 원자적 작업 계획을 생성합니다
|
|
269
|
+
3. **검증** — 요구사항 대비 계획을 확인하고, 통과할 때까지 반복합니다
|
|
270
|
+
|
|
271
|
+
각 계획은 새로운 컨텍스트 창에서 실행할 수 있을 만큼 작습니다. 저하 없이, "이제 더 간결하게 하겠습니다" 같은 말도 없습니다.
|
|
272
|
+
|
|
273
|
+
**생성 파일:** `{phase_num}-RESEARCH.md`, `{phase_num}-{N}-PLAN.md`
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
### 4. 단계 실행
|
|
278
|
+
|
|
279
|
+
```
|
|
280
|
+
/gsd:execute-phase 1
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
시스템이:
|
|
284
|
+
|
|
285
|
+
1. **웨이브로 계획 실행** — 가능한 경우 병렬, 의존성 있으면 순차
|
|
286
|
+
2. **계획당 새로운 컨텍스트** — 20만 토큰이 순수하게 구현을 위해, 쌓인 쓰레기 없음
|
|
287
|
+
3. **작업당 커밋** — 모든 작업이 고유한 원자적 커밋을 가짐
|
|
288
|
+
4. **목표 대비 검증** — 코드베이스가 단계에서 약속한 것을 전달했는지 확인
|
|
289
|
+
|
|
290
|
+
자리를 비우고 돌아오면 깔끔한 git 이력과 함께 완성된 작업이 기다립니다.
|
|
291
|
+
|
|
292
|
+
**웨이브 실행 방식:**
|
|
293
|
+
|
|
294
|
+
계획은 의존성에 따라 "웨이브"로 그룹화됩니다. 각 웨이브 안에서 계획이 병렬로 실행됩니다. 웨이브는 순차적으로 실행됩니다.
|
|
295
|
+
|
|
296
|
+
```
|
|
297
|
+
┌────────────────────────────────────────────────────────────────────┐
|
|
298
|
+
│ 단계 실행 │
|
|
299
|
+
├────────────────────────────────────────────────────────────────────┤
|
|
300
|
+
│ │
|
|
301
|
+
│ 웨이브 1 (병렬) 웨이브 2 (병렬) 웨이브 3 │
|
|
302
|
+
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
|
303
|
+
│ │ 플랜 01 │ │ 플랜 02 │ → │ 플랜 03 │ │ 플랜 04 │ → │ 플랜 05 │ │
|
|
304
|
+
│ │ │ │ │ │ │ │ │ │ │ │
|
|
305
|
+
│ │ 유저 │ │ 제품 │ │ 주문 │ │ 장바구니│ │ 결제 │ │
|
|
306
|
+
│ │ 모델 │ │ 모델 │ │ API │ │ API │ │ UI │ │
|
|
307
|
+
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
|
|
308
|
+
│ │ │ ↑ ↑ ↑ │
|
|
309
|
+
│ └───────────┴──────────────┴───────────┘ │ │
|
|
310
|
+
│ 의존성: 플랜 03은 플랜 01 필요 │ │
|
|
311
|
+
│ 플랜 04는 플랜 02 필요 │
|
|
312
|
+
│ 플랜 05는 플랜 03 + 04 필요 │
|
|
313
|
+
│ │
|
|
314
|
+
└────────────────────────────────────────────────────────────────────┘
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**웨이브가 중요한 이유:**
|
|
318
|
+
- 독립 계획 → 같은 웨이브 → 병렬 실행
|
|
319
|
+
- 의존 계획 → 이후 웨이브 → 의존성 대기
|
|
320
|
+
- 파일 충돌 → 순차 계획 또는 같은 계획
|
|
321
|
+
|
|
322
|
+
그래서 "수직 슬라이스" (플랜 01: 유저 기능 엔드투엔드)가 "수평 레이어" (플랜 01: 모든 모델, 플랜 02: 모든 API)보다 더 잘 병렬화됩니다.
|
|
323
|
+
|
|
324
|
+
**생성 파일:** `{phase_num}-{N}-SUMMARY.md`, `{phase_num}-VERIFICATION.md`
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
### 5. 작업 검증
|
|
329
|
+
|
|
330
|
+
```
|
|
331
|
+
/gsd:verify-work 1
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**여기서 실제로 작동하는지 확인합니다.**
|
|
335
|
+
|
|
336
|
+
자동화된 검증은 코드가 존재하고 테스트가 통과하는지 확인합니다. 하지만 기능이 *당신이 기대하는 방식*으로 작동하나요? 직접 사용해볼 기회입니다.
|
|
337
|
+
|
|
338
|
+
시스템이:
|
|
339
|
+
|
|
340
|
+
1. **테스트 가능한 결과물 추출** — 지금 뭘 할 수 있어야 하는지
|
|
341
|
+
2. **하나씩 안내** — "이메일로 로그인할 수 있나요?" 예/아니오, 또는 뭐가 잘못됐는지 설명
|
|
342
|
+
3. **실패 자동 진단** — 근본 원인을 찾기 위해 디버그 에이전트 생성
|
|
343
|
+
4. **검증된 수정 계획 생성** — 즉시 재실행 준비 완료
|
|
344
|
+
|
|
345
|
+
모든 게 통과하면 다음으로 넘어갑니다. 뭔가 깨졌으면 직접 디버그하지 않아도 됩니다 — 생성된 수정 계획으로 `/gsd:execute-phase`만 다시 실행하면 됩니다.
|
|
346
|
+
|
|
347
|
+
**생성 파일:** `{phase_num}-UAT.md`, 문제 발견 시 수정 계획
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
### 6. 반복 → 출시 → 완료 → 다음 마일스톤
|
|
352
|
+
|
|
353
|
+
```
|
|
354
|
+
/gsd:discuss-phase 2
|
|
355
|
+
/gsd:plan-phase 2
|
|
356
|
+
/gsd:execute-phase 2
|
|
357
|
+
/gsd:verify-work 2
|
|
358
|
+
/gsd:ship 2 # 검증된 작업으로 PR 생성
|
|
359
|
+
...
|
|
360
|
+
/gsd:complete-milestone
|
|
361
|
+
/gsd:new-milestone
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
또는 GSD가 다음 단계를 자동으로 파악하게 합니다:
|
|
365
|
+
|
|
366
|
+
```
|
|
367
|
+
/gsd:next # 다음 단계 자동 감지 및 실행
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
마일스톤이 완료될 때까지 **논의 → 기획 → 실행 → 검증 → 출시** 반복.
|
|
371
|
+
|
|
372
|
+
논의 중에 더 빠르게 진행하고 싶다면 `/gsd:discuss-phase <n> --batch`를 사용해 하나씩이 아닌 소그룹으로 한 번에 답할 수 있습니다.
|
|
373
|
+
|
|
374
|
+
각 단계는 사용자 입력(논의), 적절한 리서치(기획), 깔끔한 실행(실행), 사람의 검증(검증)을 거칩니다. 컨텍스트는 새롭게 유지됩니다. 품질도 높게 유지됩니다.
|
|
375
|
+
|
|
376
|
+
모든 단계가 끝나면 `/gsd:complete-milestone`이 마일스톤을 아카이브하고 릴리스에 태그를 답니다.
|
|
377
|
+
|
|
378
|
+
그다음 `/gsd:new-milestone`으로 다음 버전을 시작합니다 — `new-project`와 같은 흐름이지만 기존 코드베이스를 위한 것입니다. 다음에 만들 것을 설명하면 시스템이 도메인을 리서치하고, 요구사항을 스코핑하고, 새 로드맵을 만듭니다. 각 마일스톤은 깔끔한 사이클입니다: 정의 → 구축 → 출시.
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
### 빠른 모드
|
|
383
|
+
|
|
384
|
+
```
|
|
385
|
+
/gsd:quick
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
**전체 기획이 필요 없는 임시 작업용.**
|
|
389
|
+
|
|
390
|
+
빠른 모드는 GSD 보장 (원자적 커밋, 상태 추적)을 더 빠른 경로로 제공합니다:
|
|
391
|
+
|
|
392
|
+
- **같은 에이전트** — 플래너 + 실행기, 같은 품질
|
|
393
|
+
- **선택적 단계 건너뛰기** — 기본적으로 리서치, 계획 확인기, 검증기 없음
|
|
394
|
+
- **별도 추적** — `.planning/quick/`에 위치, 단계와 별개
|
|
395
|
+
|
|
396
|
+
**`--discuss` 플래그:** 기획 전 회색 지대를 파악하기 위한 가벼운 논의.
|
|
397
|
+
|
|
398
|
+
**`--research` 플래그:** 기획 전 집중 리서처를 생성합니다. 구현 접근법, 라이브러리 옵션, 주의사항을 조사합니다. 접근 방식이 불확실할 때 사용하세요.
|
|
399
|
+
|
|
400
|
+
**`--full` 플래그:** 계획 확인 (최대 2회 반복)과 실행 후 검증을 활성화합니다.
|
|
401
|
+
|
|
402
|
+
플래그는 조합 가능합니다: `--discuss --research --full`은 논의 + 리서치 + 계획 확인 + 검증을 제공합니다.
|
|
403
|
+
|
|
404
|
+
```
|
|
405
|
+
/gsd:quick
|
|
406
|
+
> 뭘 하고 싶으신가요? "설정에 다크 모드 토글 추가"
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
**생성 파일:** `.planning/quick/001-add-dark-mode-toggle/PLAN.md`, `SUMMARY.md`
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
## 왜 효과적인가
|
|
414
|
+
|
|
415
|
+
### 컨텍스트 엔지니어링
|
|
416
|
+
|
|
417
|
+
Claude Code는 컨텍스트만 제대로 주면 정말 강력합니다. 근데 대부분은 그걸 안 하죠.
|
|
418
|
+
|
|
419
|
+
GSD가 대신 해줍니다.
|
|
420
|
+
|
|
421
|
+
| 파일 | 역할 |
|
|
422
|
+
|------|--------------|
|
|
423
|
+
| `PROJECT.md` | 프로젝트 비전, 항상 로드 |
|
|
424
|
+
| `research/` | 생태계 지식 (스택, 기능, 아키텍처, 주의사항) |
|
|
425
|
+
| `REQUIREMENTS.md` | 단계 추적성이 있는 스코핑된 v1/v2 요구사항 |
|
|
426
|
+
| `ROADMAP.md` | 방향과 완료된 것 |
|
|
427
|
+
| `STATE.md` | 결정사항, 블로커, 위치 — 세션 간 메모리 |
|
|
428
|
+
| `PLAN.md` | XML 구조와 검증 단계가 있는 원자적 작업 |
|
|
429
|
+
| `SUMMARY.md` | 무슨 일이 있었는지, 무엇이 바뀌었는지, 이력에 커밋됨 |
|
|
430
|
+
| `todos/` | 나중 작업을 위해 캡처된 아이디어와 작업 |
|
|
431
|
+
| `threads/` | 여러 세션에 걸친 작업을 위한 지속적 컨텍스트 스레드 |
|
|
432
|
+
| `seeds/` | 때가 되면 자연스럽게 떠오르는 미래 아이디어 저장소 |
|
|
433
|
+
|
|
434
|
+
파일 크기는 Claude 품질이 떨어지기 시작하는 지점에 맞춰 설정했습니다. 그 안에 머물면 일관된 결과가 나옵니다.
|
|
435
|
+
|
|
436
|
+
### XML 프롬프트 포맷팅
|
|
437
|
+
|
|
438
|
+
모든 계획은 Claude에 최적화된 구조화된 XML입니다:
|
|
439
|
+
|
|
440
|
+
```xml
|
|
441
|
+
<task type="auto">
|
|
442
|
+
<name>로그인 엔드포인트 생성</name>
|
|
443
|
+
<files>src/app/api/auth/login/route.ts</files>
|
|
444
|
+
<action>
|
|
445
|
+
JWT에는 jose 사용 (jsonwebtoken 아님 - CommonJS 이슈).
|
|
446
|
+
users 테이블 대비 자격증명 검증.
|
|
447
|
+
성공 시 httpOnly 쿠키 반환.
|
|
448
|
+
</action>
|
|
449
|
+
<verify>curl -X POST localhost:3000/api/auth/login이 200 + Set-Cookie 반환</verify>
|
|
450
|
+
<done>유효한 자격증명은 쿠키 반환, 무효는 401 반환</done>
|
|
451
|
+
</task>
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
정확한 지시사항. 추측 없음. 검증 내장.
|
|
455
|
+
|
|
456
|
+
### 멀티 에이전트 오케스트레이션
|
|
457
|
+
|
|
458
|
+
모든 단계는 같은 패턴입니다. 얇은 오케스트레이터가 전문화된 에이전트를 띄우고 결과를 모아 다음 단계로 넘깁니다.
|
|
459
|
+
|
|
460
|
+
| 단계 | 오케스트레이터가 하는 일 | 에이전트가 하는 일 |
|
|
461
|
+
|-------|------------------|-----------|
|
|
462
|
+
| 리서치 | 조율, 결과 제시 | 병렬로 4개의 리서처가 스택, 기능, 아키텍처, 주의사항 조사 |
|
|
463
|
+
| 기획 | 검증, 반복 관리 | 플래너가 계획 생성, 확인기가 검증, 통과할 때까지 반복 |
|
|
464
|
+
| 실행 | 웨이브 그룹화, 진행 추적 | 실행기가 병렬로 구현, 각각 새로운 20만 컨텍스트 |
|
|
465
|
+
| 검증 | 결과 제시, 다음 라우팅 | 검증기가 코드베이스를 목표 대비 확인, 디버거가 실패 진단 |
|
|
466
|
+
|
|
467
|
+
오케스트레이터는 무거운 작업을 직접 하지 않습니다. 에이전트를 띄우고 기다렸다가 결과를 합칩니다.
|
|
468
|
+
|
|
469
|
+
**결과:** 전체 단계를 다 돌릴 수 있습니다 — 깊은 리서치, 계획 생성과 검증, 병렬 실행기가 수천 줄 코드 작성, 자동화된 검증 — 근데 메인 컨텍스트 창은 30~40%에 머뭅니다. 실제 작업은 새 서브에이전트 컨텍스트에서 이루어지거든요. 세션이 끝까지 빠르고 반응적으로 유지되는 이유입니다.
|
|
470
|
+
|
|
471
|
+
### 원자적 Git 커밋
|
|
472
|
+
|
|
473
|
+
각 작업은 완료 직후 자체 커밋을 받습니다:
|
|
474
|
+
|
|
475
|
+
```bash
|
|
476
|
+
abc123f docs(08-02): complete user registration plan
|
|
477
|
+
def456g feat(08-02): add email confirmation flow
|
|
478
|
+
hij789k feat(08-02): implement password hashing
|
|
479
|
+
lmn012o feat(08-02): create registration endpoint
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
> [!NOTE]
|
|
483
|
+
> **장점:** Git bisect로 어느 작업에서 깨졌는지 정확히 찍어낼 수 있습니다. 작업 단위로 독립 revert가 됩니다. 다음 세션 Claude가 읽을 명확한 이력이 남습니다. AI 자동화 워크플로우를 한눈에 파악하기 좋습니다.
|
|
484
|
+
|
|
485
|
+
커밋 하나하나가 외과적이고 추적 가능하며 의미를 담고 있습니다.
|
|
486
|
+
|
|
487
|
+
### 모듈식 설계
|
|
488
|
+
|
|
489
|
+
- 현재 마일스톤에 단계 추가
|
|
490
|
+
- 단계 사이에 긴급 작업 삽입
|
|
491
|
+
- 마일스톤 완료 후 새로 시작
|
|
492
|
+
- 전부 다시 만들지 않고 계획 조정
|
|
493
|
+
|
|
494
|
+
절대 갇히지 않습니다. 시스템이 적응합니다.
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## 명령어
|
|
499
|
+
|
|
500
|
+
### 핵심 워크플로우
|
|
501
|
+
|
|
502
|
+
| 명령어 | 역할 |
|
|
503
|
+
|---------|------------|
|
|
504
|
+
| `/gsd:new-project [--auto]` | 전체 초기화: 질문 → 리서치 → 요구사항 → 로드맵 |
|
|
505
|
+
| `/gsd:discuss-phase [N] [--auto] [--analyze]` | 기획 전 구현 결정 캡처 (`--analyze`는 트레이드오프 분석 추가) |
|
|
506
|
+
| `/gsd:plan-phase [N] [--auto] [--reviews]` | 단계에 대한 리서치 + 기획 + 검증 (`--reviews`는 코드베이스 리뷰 결과 로드) |
|
|
507
|
+
| `/gsd:execute-phase <N>` | 병렬 웨이브로 모든 계획 실행, 완료 시 검증 |
|
|
508
|
+
| `/gsd:verify-work [N]` | 수동 사용자 인수 테스트 ¹ |
|
|
509
|
+
| `/gsd:ship [N] [--draft]` | 자동 생성된 본문으로 검증된 단계 작업에서 PR 생성 |
|
|
510
|
+
| `/gsd:next` | 다음 논리적 워크플로우 단계로 자동 진행 |
|
|
511
|
+
| `/gsd:fast <text>` | 인라인 사소한 작업 — 기획 완전 건너뛰고 즉시 실행 |
|
|
512
|
+
| `/gsd:audit-milestone` | 마일스톤이 완료 정의를 달성했는지 검증 |
|
|
513
|
+
| `/gsd:complete-milestone` | 마일스톤 아카이브, 릴리스 태그 |
|
|
514
|
+
| `/gsd:new-milestone [name]` | 다음 버전 시작: 질문 → 리서치 → 요구사항 → 로드맵 |
|
|
515
|
+
| `/gsd:forensics [desc]` | 실패한 워크플로우 실행의 사후 조사 (막힌 루프, 누락된 아티팩트, git 이상 진단) |
|
|
516
|
+
| `/gsd:milestone-summary [version]` | 팀 온보딩 및 리뷰를 위한 종합 프로젝트 요약 생성 |
|
|
517
|
+
|
|
518
|
+
### 워크스트림
|
|
519
|
+
|
|
520
|
+
| 명령어 | 역할 |
|
|
521
|
+
|---------|------------|
|
|
522
|
+
| `/gsd:workstreams list` | 모든 워크스트림과 상태 표시 |
|
|
523
|
+
| `/gsd:workstreams create <name>` | 병렬 마일스톤 작업을 위한 네임스페이스 워크스트림 생성 |
|
|
524
|
+
| `/gsd:workstreams switch <name>` | 활성 워크스트림 전환 |
|
|
525
|
+
| `/gsd:workstreams complete <name>` | 워크스트림 완료 및 병합 |
|
|
526
|
+
|
|
527
|
+
### 멀티 프로젝트 워크스페이스
|
|
528
|
+
|
|
529
|
+
| 명령어 | 역할 |
|
|
530
|
+
|---------|------------|
|
|
531
|
+
| `/gsd:new-workspace` | 저장소 복사본으로 격리된 워크스페이스 생성 (worktrees 또는 clones) |
|
|
532
|
+
| `/gsd:list-workspaces` | 모든 GSD 워크스페이스와 상태 표시 |
|
|
533
|
+
| `/gsd:remove-workspace` | 워크스페이스 제거 및 worktree 정리 |
|
|
534
|
+
|
|
535
|
+
### UI 디자인
|
|
536
|
+
|
|
537
|
+
| 명령어 | 역할 |
|
|
538
|
+
|---------|------------|
|
|
539
|
+
| `/gsd:ui-phase [N]` | 프론트엔드 단계를 위한 UI 디자인 계약 (UI-SPEC.md) 생성 |
|
|
540
|
+
| `/gsd:ui-review [N]` | 구현된 프론트엔드 코드의 소급적 6가지 기준 시각 감사 |
|
|
541
|
+
|
|
542
|
+
### 탐색
|
|
543
|
+
|
|
544
|
+
| 명령어 | 역할 |
|
|
545
|
+
|---------|------------|
|
|
546
|
+
| `/gsd:progress` | 지금 어디에 있나? 다음은? |
|
|
547
|
+
| `/gsd:next` | 상태 자동 감지 및 다음 단계 실행 |
|
|
548
|
+
| `/gsd:help` | 모든 명령어와 사용 가이드 표시 |
|
|
549
|
+
| `/gsd:update` | 변경 로그 미리보기와 함께 GSD 업데이트 |
|
|
550
|
+
| `/gsd:join-discord` | GSD Discord 커뮤니티 참여 |
|
|
551
|
+
| `/gsd:manager` | 여러 단계 관리를 위한 대화형 커맨드 센터 |
|
|
552
|
+
|
|
553
|
+
### 브라운필드
|
|
554
|
+
|
|
555
|
+
| 명령어 | 역할 |
|
|
556
|
+
|---------|------------|
|
|
557
|
+
| `/gsd:map-codebase [area]` | new-project 전 기존 코드베이스 분석 |
|
|
558
|
+
|
|
559
|
+
### 단계 관리
|
|
560
|
+
|
|
561
|
+
| 명령어 | 역할 |
|
|
562
|
+
|---------|------------|
|
|
563
|
+
| `/gsd:add-phase` | 로드맵에 단계 추가 |
|
|
564
|
+
| `/gsd:insert-phase [N]` | 단계 사이에 긴급 작업 삽입 |
|
|
565
|
+
| `/gsd:remove-phase [N]` | 미래 단계 제거, 번호 재정렬 |
|
|
566
|
+
| `/gsd:list-phase-assumptions [N]` | 기획 전 Claude의 의도된 접근 방식 확인 |
|
|
567
|
+
| `/gsd:plan-milestone-gaps` | 감사에서 발견된 갭을 해소하기 위한 단계 생성 |
|
|
568
|
+
|
|
569
|
+
### 세션
|
|
570
|
+
|
|
571
|
+
| 명령어 | 역할 |
|
|
572
|
+
|---------|------------|
|
|
573
|
+
| `/gsd:pause-work` | 단계 중간에 멈출 때 핸드오프 생성 (HANDOFF.json 작성) |
|
|
574
|
+
| `/gsd:resume-work` | 마지막 세션에서 복원 |
|
|
575
|
+
| `/gsd:session-report` | 수행한 작업과 결과가 담긴 세션 요약 생성 |
|
|
576
|
+
|
|
577
|
+
### 코드 품질
|
|
578
|
+
|
|
579
|
+
| 명령어 | 역할 |
|
|
580
|
+
|---------|------------|
|
|
581
|
+
| `/gsd:review` | 현재 단계 또는 브랜치의 Cross-AI 피어 리뷰 |
|
|
582
|
+
| `/gsd:pr-branch` | `.planning/` 커밋을 필터링한 깔끔한 PR 브랜치 생성 |
|
|
583
|
+
| `/gsd:audit-uat` | 검증 부채 감사 — UAT가 누락된 단계 찾기 |
|
|
584
|
+
|
|
585
|
+
### 백로그 및 스레드
|
|
586
|
+
|
|
587
|
+
| 명령어 | 역할 |
|
|
588
|
+
|---------|------------|
|
|
589
|
+
| `/gsd:plant-seed <idea>` | 트리거 조건이 있는 아이디어 저장 — 때가 되면 알아서 올라옴 |
|
|
590
|
+
| `/gsd:add-backlog <desc>` | 백로그 파킹 롯에 아이디어 추가 (999.x 번호 지정, 활성 시퀀스 외부) |
|
|
591
|
+
| `/gsd:review-backlog` | 백로그 항목 리뷰 및 활성 마일스톤으로 승격하거나 오래된 항목 제거 |
|
|
592
|
+
| `/gsd:thread [name]` | 지속적 컨텍스트 스레드 — 여러 세션에 걸친 작업을 위한 가벼운 크로스 세션 지식 |
|
|
593
|
+
|
|
594
|
+
### 유틸리티
|
|
595
|
+
|
|
596
|
+
| 명령어 | 역할 |
|
|
597
|
+
|---------|------------|
|
|
598
|
+
| `/gsd:settings` | 모델 프로필 및 워크플로우 에이전트 설정 |
|
|
599
|
+
| `/gsd:set-profile <profile>` | 모델 프로필 전환 (quality/balanced/budget/inherit) |
|
|
600
|
+
| `/gsd:add-todo [desc]` | 나중을 위한 아이디어 캡처 |
|
|
601
|
+
| `/gsd:check-todos` | 대기 중인 할 일 목록 |
|
|
602
|
+
| `/gsd:debug [desc]` | 지속적 상태를 이용한 체계적 디버깅 |
|
|
603
|
+
| `/gsd:do <text>` | 자유 형식 텍스트를 적절한 GSD 명령어로 자동 라우팅 |
|
|
604
|
+
| `/gsd:note <text>` | 마찰 없는 아이디어 캡처 — 추가, 목록, 또는 할 일로 승격 |
|
|
605
|
+
| `/gsd:quick [--full] [--discuss] [--research]` | GSD 보장과 함께 임시 작업 실행 (`--full`은 계획 확인 및 검증 추가, `--discuss`는 먼저 컨텍스트 수집, `--research`는 기획 전 접근법 조사) |
|
|
606
|
+
| `/gsd:health [--repair]` | `.planning/` 디렉터리 무결성 검증, `--repair`로 자동 복구 |
|
|
607
|
+
| `/gsd:stats` | 프로젝트 통계 표시 — 단계, 계획, 요구사항, git 지표 |
|
|
608
|
+
| `/gsd:profile-user [--questionnaire] [--refresh]` | 개인화된 응답을 위해 세션 분석에서 개발자 행동 프로필 생성 |
|
|
609
|
+
|
|
610
|
+
<sup>¹ reddit 유저 OracleGreyBeard 기여</sup>
|
|
611
|
+
|
|
612
|
+
---
|
|
613
|
+
|
|
614
|
+
## 설정
|
|
615
|
+
|
|
616
|
+
GSD는 프로젝트 설정을 `.planning/config.json`에 저장합니다. `/gsd:new-project` 중에 설정하거나 나중에 `/gsd:settings`로 업데이트할 수 있습니다. 전체 config 스키마, 워크플로우 토글, git 브랜칭 옵션, 에이전트별 모델 분석은 [사용자 가이드](docs/ko-KR/USER-GUIDE.md#configuration-reference)를 참조하세요.
|
|
617
|
+
|
|
618
|
+
### 핵심 설정
|
|
619
|
+
|
|
620
|
+
| 설정 | 옵션 | 기본값 | 역할 |
|
|
621
|
+
|---------|---------|---------|------------------|
|
|
622
|
+
| `mode` | `yolo`, `interactive` | `interactive` | 각 단계 자동 승인 vs 확인 |
|
|
623
|
+
| `granularity` | `coarse`, `standard`, `fine` | `standard` | 단계 세분성 — 스코프를 얼마나 세밀하게 나눌지 (단계 × 계획) |
|
|
624
|
+
|
|
625
|
+
### 모델 프로필
|
|
626
|
+
|
|
627
|
+
각 에이전트가 사용하는 Claude 모델을 제어합니다. 품질 대비 토큰 사용을 균형 잡습니다.
|
|
628
|
+
|
|
629
|
+
| 프로필 | 기획 | 실행 | 검증 |
|
|
630
|
+
|---------|----------|-----------|--------------|
|
|
631
|
+
| `quality` | Opus | Opus | Sonnet |
|
|
632
|
+
| `balanced` (기본값) | Opus | Sonnet | Sonnet |
|
|
633
|
+
| `budget` | Sonnet | Sonnet | Haiku |
|
|
634
|
+
| `inherit` | 상속 | 상속 | 상속 |
|
|
635
|
+
|
|
636
|
+
프로필 전환:
|
|
637
|
+
```
|
|
638
|
+
/gsd:set-profile budget
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
비-Anthropic 제공업체 (OpenRouter, 로컬 모델) 사용 시 또는 현재 런타임 모델 선택을 따를 때 (예: OpenCode `/model`) `inherit`를 사용하세요.
|
|
642
|
+
|
|
643
|
+
또는 `/gsd:settings`를 통해 설정하세요.
|
|
644
|
+
|
|
645
|
+
### 워크플로우 에이전트
|
|
646
|
+
|
|
647
|
+
기획/실행 중에 추가 에이전트를 생성합니다. 품질을 향상시키지만 토큰과 시간이 더 필요합니다.
|
|
648
|
+
|
|
649
|
+
| 설정 | 기본값 | 역할 |
|
|
650
|
+
|---------|---------|--------------|
|
|
651
|
+
| `workflow.research` | `true` | 각 단계 기획 전 도메인 리서치 |
|
|
652
|
+
| `workflow.plan_check` | `true` | 실행 전 계획이 단계 목표를 달성하는지 확인 |
|
|
653
|
+
| `workflow.verifier` | `true` | 실행 후 필수 사항이 전달됐는지 확인 |
|
|
654
|
+
| `workflow.auto_advance` | `false` | 멈추지 않고 논의 → 기획 → 실행 자동 연결 |
|
|
655
|
+
| `workflow.research_before_questions` | `false` | 논의 질문 대신 리서치 먼저 실행 |
|
|
656
|
+
| `workflow.discuss_mode` | `'discuss'` | 논의 모드: `discuss` (인터뷰), `assumptions` (코드베이스 우선) |
|
|
657
|
+
| `workflow.skip_discuss` | `false` | 자율 모드에서 discuss-phase 건너뛰기 |
|
|
658
|
+
| `workflow.text_mode` | `false` | 원격 세션을 위한 텍스트 전용 모드 (TUI 메뉴 없음) |
|
|
659
|
+
|
|
660
|
+
`/gsd:settings`로 토글하거나 호출별로 재정의하세요:
|
|
661
|
+
- `/gsd:plan-phase --skip-research`
|
|
662
|
+
- `/gsd:plan-phase --skip-verify`
|
|
663
|
+
|
|
664
|
+
### 실행
|
|
665
|
+
|
|
666
|
+
| 설정 | 기본값 | 역할 |
|
|
667
|
+
|---------|---------|------------------|
|
|
668
|
+
| `parallelization.enabled` | `true` | 독립 계획 동시 실행 |
|
|
669
|
+
| `planning.commit_docs` | `true` | git에서 `.planning/` 추적 |
|
|
670
|
+
| `hooks.context_warnings` | `true` | 컨텍스트 창 사용 경고 표시 |
|
|
671
|
+
|
|
672
|
+
### Git 브랜칭
|
|
673
|
+
|
|
674
|
+
실행 중 GSD의 브랜치 처리 방식을 제어합니다.
|
|
675
|
+
|
|
676
|
+
| 설정 | 옵션 | 기본값 | 역할 |
|
|
677
|
+
|---------|---------|---------|--------------|
|
|
678
|
+
| `git.branching_strategy` | `none`, `phase`, `milestone` | `none` | 브랜치 생성 전략 |
|
|
679
|
+
| `git.phase_branch_template` | string | `gsd/phase-{phase}-{slug}` | 단계 브랜치 템플릿 |
|
|
680
|
+
| `git.milestone_branch_template` | string | `gsd/{milestone}-{slug}` | 마일스톤 브랜치 템플릿 |
|
|
681
|
+
|
|
682
|
+
**전략:**
|
|
683
|
+
- **`none`** — 현재 브랜치에 커밋 (기본 GSD 동작)
|
|
684
|
+
- **`phase`** — 단계당 브랜치 생성, 단계 완료 시 병합
|
|
685
|
+
- **`milestone`** — 전체 마일스톤을 위한 하나의 브랜치 생성, 완료 시 병합
|
|
686
|
+
|
|
687
|
+
마일스톤 완료 시 GSD가 스쿼시 병합 (권장) 또는 이력과 함께 병합을 제안합니다.
|
|
688
|
+
|
|
689
|
+
---
|
|
690
|
+
|
|
691
|
+
## 보안
|
|
692
|
+
|
|
693
|
+
### 내장 보안 강화
|
|
694
|
+
|
|
695
|
+
GSD는 v1.27부터 심층 방어 보안을 포함합니다:
|
|
696
|
+
|
|
697
|
+
- **경로 순회 방지** — 모든 사용자 제공 파일 경로(`--text-file`, `--prd`)가 프로젝트 디렉터리 내에서 해석되도록 검증
|
|
698
|
+
- **프롬프트 인젝션 감지** — 중앙화된 `security.cjs` 모듈이 사용자 제공 텍스트가 기획 아티팩트에 들어가기 전 인젝션 패턴 스캔
|
|
699
|
+
- **PreToolUse 프롬프트 가드 훅** — `gsd-prompt-guard`가 `.planning/`에 대한 쓰기에서 내장된 인젝션 벡터 스캔 (권고적, 차단하지 않음)
|
|
700
|
+
- **안전한 JSON 파싱** — 잘못된 형식의 `--fields` 인수가 상태를 손상시키기 전에 캐치
|
|
701
|
+
- **셸 인수 검증** — 사용자 텍스트가 셸 보간 전에 살균됨
|
|
702
|
+
- **CI 준비 인젝션 스캐너** — `prompt-injection-scan.test.cjs`가 모든 에이전트/워크플로우/명령어 파일에서 내장된 인젝션 벡터 스캔
|
|
703
|
+
|
|
704
|
+
> [!NOTE]
|
|
705
|
+
> GSD는 LLM 시스템 프롬프트가 되는 마크다운 파일을 생성하기 때문에, 기획 아티팩트에 들어가는 사용자 제어 텍스트는 잠재적인 간접 프롬프트 인젝션 벡터가 됩니다. 이 보호 장치들은 여러 레이어에서 그런 벡터를 잡도록 설계되었습니다.
|
|
706
|
+
|
|
707
|
+
### 민감한 파일 보호
|
|
708
|
+
|
|
709
|
+
GSD의 코드베이스 매핑 및 분석 명령어는 프로젝트를 이해하기 위해 파일을 읽습니다. **비밀이 담긴 파일**을 Claude Code의 거부 목록에 추가해 보호하세요:
|
|
710
|
+
|
|
711
|
+
1. Claude Code 설정 열기 (`.claude/settings.json` 또는 전역)
|
|
712
|
+
2. 민감한 파일 패턴을 거부 목록에 추가:
|
|
713
|
+
|
|
714
|
+
```json
|
|
715
|
+
{
|
|
716
|
+
"permissions": {
|
|
717
|
+
"deny": [
|
|
718
|
+
"Read(.env)",
|
|
719
|
+
"Read(.env.*)",
|
|
720
|
+
"Read(**/secrets/*)",
|
|
721
|
+
"Read(**/*credential*)",
|
|
722
|
+
"Read(**/*.pem)",
|
|
723
|
+
"Read(**/*.key)"
|
|
724
|
+
]
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
이렇게 하면 실행하는 명령어와 관계없이 Claude가 이 파일들을 완전히 읽지 못합니다.
|
|
730
|
+
|
|
731
|
+
> [!IMPORTANT]
|
|
732
|
+
> GSD에는 비밀 커밋에 대한 내장 보호 장치가 있지만, 심층 방어가 모범 사례입니다. 민감한 파일에 대한 읽기 접근을 거부하는 것을 첫 번째 방어선으로 삼으세요.
|
|
733
|
+
|
|
734
|
+
---
|
|
735
|
+
|
|
736
|
+
## 문제 해결
|
|
737
|
+
|
|
738
|
+
**설치 후 명령어를 찾을 수 없나요?**
|
|
739
|
+
- 런타임을 재시작해 명령어/스킬을 다시 로드하세요
|
|
740
|
+
- `~/.claude/commands/gsd/` (전역) 또는 `./.claude/commands/gsd/` (로컬)에 파일이 있는지 확인하세요
|
|
741
|
+
- Codex의 경우 `~/.codex/skills/gsd-*/SKILL.md` (전역) 또는 `./.codex/skills/gsd-*/SKILL.md` (로컬)에 스킬이 있는지 확인하세요
|
|
742
|
+
|
|
743
|
+
**명령어가 예상대로 작동하지 않나요?**
|
|
744
|
+
- `/gsd:help`를 실행해 설치 확인
|
|
745
|
+
- `npx get-shit-done-cc`를 다시 실행해 재설치
|
|
746
|
+
|
|
747
|
+
**최신 버전으로 업데이트하나요?**
|
|
748
|
+
```bash
|
|
749
|
+
npx get-shit-done-cc@latest
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
**Docker 또는 컨테이너 환경을 사용하나요?**
|
|
753
|
+
|
|
754
|
+
파일 읽기가 틸드 경로(`~/.claude/...`)로 실패하면 설치 전에 `CLAUDE_CONFIG_DIR`를 설정하세요:
|
|
755
|
+
```bash
|
|
756
|
+
CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-cc --global
|
|
757
|
+
```
|
|
758
|
+
컨테이너에서 올바르게 확장되지 않을 수 있는 `~` 대신 절대 경로가 사용됩니다.
|
|
759
|
+
|
|
760
|
+
### 제거
|
|
761
|
+
|
|
762
|
+
GSD를 완전히 제거하려면:
|
|
763
|
+
|
|
764
|
+
```bash
|
|
765
|
+
# 전역 설치
|
|
766
|
+
npx get-shit-done-cc --claude --global --uninstall
|
|
767
|
+
npx get-shit-done-cc --opencode --global --uninstall
|
|
768
|
+
npx get-shit-done-cc --gemini --global --uninstall
|
|
769
|
+
npx get-shit-done-cc --codex --global --uninstall
|
|
770
|
+
npx get-shit-done-cc --copilot --global --uninstall
|
|
771
|
+
npx get-shit-done-cc --cursor --global --uninstall
|
|
772
|
+
npx get-shit-done-cc --antigravity --global --uninstall
|
|
773
|
+
|
|
774
|
+
# 로컬 설치 (현재 프로젝트)
|
|
775
|
+
npx get-shit-done-cc --claude --local --uninstall
|
|
776
|
+
npx get-shit-done-cc --opencode --local --uninstall
|
|
777
|
+
npx get-shit-done-cc --gemini --local --uninstall
|
|
778
|
+
npx get-shit-done-cc --codex --local --uninstall
|
|
779
|
+
npx get-shit-done-cc --copilot --local --uninstall
|
|
780
|
+
npx get-shit-done-cc --cursor --local --uninstall
|
|
781
|
+
npx get-shit-done-cc --antigravity --local --uninstall
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
다른 설정은 그대로 유지하면서 GSD의 모든 명령어, 에이전트, 훅, 설정을 제거합니다.
|
|
785
|
+
|
|
786
|
+
---
|
|
787
|
+
|
|
788
|
+
## 커뮤니티 포트
|
|
789
|
+
|
|
790
|
+
OpenCode, Gemini CLI, Codex는 이제 `npx get-shit-done-cc`를 통해 기본 지원됩니다.
|
|
791
|
+
|
|
792
|
+
이 커뮤니티 포트들이 멀티 런타임 지원의 선구자였습니다:
|
|
793
|
+
|
|
794
|
+
| 프로젝트 | 플랫폼 | 설명 |
|
|
795
|
+
|---------|----------|-------------|
|
|
796
|
+
| [gsd-opencode](https://github.com/rokicool/gsd-opencode) | OpenCode | 최초 OpenCode 적응 |
|
|
797
|
+
| gsd-gemini (아카이브됨) | Gemini CLI | uberfuzzy의 최초 Gemini 적응 |
|
|
798
|
+
|
|
799
|
+
---
|
|
800
|
+
|
|
801
|
+
## 스타 히스토리
|
|
802
|
+
|
|
803
|
+
<a href="https://star-history.com/#gsd-build/get-shit-done&Date">
|
|
804
|
+
<picture>
|
|
805
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=gsd-build/get-shit-done&type=Date&theme=dark" />
|
|
806
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=gsd-build/get-shit-done&type=Date" />
|
|
807
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=gsd-build/get-shit-done&type=Date" />
|
|
808
|
+
</picture>
|
|
809
|
+
</a>
|
|
810
|
+
|
|
811
|
+
---
|
|
812
|
+
|
|
813
|
+
## 라이선스
|
|
814
|
+
|
|
815
|
+
MIT 라이선스. 자세한 내용은 [LICENSE](LICENSE)를 참조하세요.
|
|
816
|
+
|
|
817
|
+
---
|
|
818
|
+
|
|
819
|
+
<div align="center">
|
|
820
|
+
|
|
821
|
+
**Claude Code는 강력합니다. GSD가 그걸 신뢰할 수 있게 만듭니다.**
|
|
822
|
+
|
|
823
|
+
</div>
|