@su-record/vibe 2.4.4 → 2.4.6
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/settings.json +48 -48
- package/.claude/settings.local.json +24 -24
- package/.claude/vibe/constitution.md +184 -184
- package/.claude/vibe/rules/core/communication-guide.md +104 -104
- package/.claude/vibe/rules/core/development-philosophy.md +52 -52
- package/.claude/vibe/rules/core/quick-start.md +120 -120
- package/.claude/vibe/rules/languages/dart-flutter.md +509 -509
- package/.claude/vibe/rules/languages/go.md +396 -396
- package/.claude/vibe/rules/languages/java-spring.md +586 -586
- package/.claude/vibe/rules/languages/kotlin-android.md +491 -491
- package/.claude/vibe/rules/languages/python-django.md +371 -371
- package/.claude/vibe/rules/languages/python-fastapi.md +386 -386
- package/.claude/vibe/rules/languages/rust.md +425 -425
- package/.claude/vibe/rules/languages/swift-ios.md +516 -516
- package/.claude/vibe/rules/languages/typescript-nextjs.md +441 -441
- package/.claude/vibe/rules/languages/typescript-node.md +375 -375
- package/.claude/vibe/rules/languages/typescript-nuxt.md +521 -521
- package/.claude/vibe/rules/languages/typescript-react-native.md +446 -446
- package/.claude/vibe/rules/languages/typescript-react.md +525 -525
- package/.claude/vibe/rules/languages/typescript-vue.md +353 -353
- package/.claude/vibe/rules/quality/bdd-contract-testing.md +388 -388
- package/.claude/vibe/rules/quality/checklist.md +276 -276
- package/.claude/vibe/rules/quality/testing-strategy.md +437 -437
- package/.claude/vibe/rules/standards/anti-patterns.md +369 -369
- package/.claude/vibe/rules/standards/code-structure.md +291 -291
- package/.claude/vibe/rules/standards/complexity-metrics.md +312 -312
- package/.claude/vibe/rules/standards/naming-conventions.md +198 -198
- package/.claude/vibe/setup.sh +31 -31
- package/.claude/vibe/templates/constitution-template.md +184 -184
- package/.claude/vibe/templates/contract-backend-template.md +517 -517
- package/.claude/vibe/templates/contract-frontend-template.md +594 -594
- package/.claude/vibe/templates/feature-template.md +96 -96
- package/.claude/vibe/templates/spec-template.md +199 -199
- package/CLAUDE.md +345 -345
- package/LICENSE +21 -21
- package/README.md +164 -164
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer.md +48 -48
- package/agents/implementer.md +53 -53
- package/agents/research/best-practices-agent.md +139 -139
- package/agents/research/codebase-patterns-agent.md +147 -147
- package/agents/research/framework-docs-agent.md +181 -181
- package/agents/research/security-advisory-agent.md +167 -167
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +152 -152
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +119 -119
- package/agents/tester.md +49 -49
- package/agents/ui-previewer.md +137 -137
- package/commands/vibe.analyze.md +260 -260
- package/commands/vibe.reason.md +223 -223
- package/commands/vibe.review.md +213 -213
- package/commands/vibe.run.md +935 -842
- package/commands/vibe.spec.md +442 -405
- package/commands/vibe.utils.md +101 -101
- package/commands/vibe.verify.md +282 -282
- package/dist/cli/index.js +386 -386
- package/dist/lib/MemoryManager.js +92 -92
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/gemini-mcp.js +15 -15
- package/dist/lib/gemini-oauth.js +35 -35
- package/dist/lib/gpt-mcp.js +17 -17
- package/dist/lib/gpt-oauth.js +44 -44
- package/dist/orchestrator/orchestrator.js +12 -12
- package/dist/orchestrator/parallelResearch.js +24 -24
- package/dist/tools/analytics/getUsageAnalytics.js +12 -12
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
- package/dist/tools/planning/generatePrd.js +46 -46
- package/dist/tools/prompt/enhancePromptGemini.js +160 -160
- package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/hooks/hooks.json +189 -189
- package/package.json +85 -85
- package/skills/context7-usage.md +82 -82
- package/skills/git-worktree.md +181 -181
- package/skills/multi-llm-orchestration.md +97 -97
- package/skills/parallel-research.md +77 -77
- package/skills/priority-todos.md +239 -239
- package/skills/tool-fallback.md +126 -126
- package/skills/vibe-capabilities.md +127 -127
package/.claude/settings.json
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"Bash(cat:*)",
|
|
5
|
-
"Bash(mv:*)",
|
|
6
|
-
"Bash(sed:*)",
|
|
7
|
-
"Bash(git add:*)",
|
|
8
|
-
"Bash(git commit:*)",
|
|
9
|
-
"Bash(npm publish:*)",
|
|
10
|
-
"Bash(git push:*)",
|
|
11
|
-
"Bash(npm pack)",
|
|
12
|
-
"Bash(npm install:*)",
|
|
13
|
-
"Bash(npm view:*)",
|
|
14
|
-
"Bash(gh release create:*)",
|
|
15
|
-
"Bash(gh release view:*)",
|
|
16
|
-
"Bash(npm run build:*)",
|
|
17
|
-
"Bash(mkdir:*)",
|
|
18
|
-
"Bash(npm link:*)",
|
|
19
|
-
"Bash(vibe list:*)",
|
|
20
|
-
"Bash(vibe read:*)",
|
|
21
|
-
"Bash(vibe init:*)",
|
|
22
|
-
"Bash(npm pack:*)",
|
|
23
|
-
"Bash(npm config set:*)",
|
|
24
|
-
"Bash(node:*)",
|
|
25
|
-
"Bash(git restore:*)",
|
|
26
|
-
"Bash(npm version:*)",
|
|
27
|
-
"Bash(gh release:*)",
|
|
28
|
-
"Bash(vibe version:*)",
|
|
29
|
-
"Bash(vibe update:*)",
|
|
30
|
-
"Bash(vibe status:*)",
|
|
31
|
-
"Bash(git rm:*)"
|
|
32
|
-
],
|
|
33
|
-
"deny": [],
|
|
34
|
-
"ask": []
|
|
35
|
-
},
|
|
36
|
-
"hooks": {
|
|
37
|
-
"UserPromptSubmit": [
|
|
38
|
-
{
|
|
39
|
-
"hooks": [
|
|
40
|
-
{
|
|
41
|
-
"type": "command",
|
|
42
|
-
"command": "echo '[MANDATORY SKILL PROTOCOL] Available skills: vibe-capabilities (vibe features), multi-llm-orchestration (GPT/Gemini usage), tool-fallback (error recovery), context7-usage (library docs), parallel-research (complex problems), git-worktree (branch work), priority-todos (task management). Step 1: For EACH skill state YES/NO with reason. Step 2: Use Skill(name) for YES skills NOW. Step 3: IMPLEMENT only after activation. CRITICAL: Skipping activation makes response WORTHLESS.'",
|
|
43
|
-
"statusMessage": "Evaluating skills..."
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(cat:*)",
|
|
5
|
+
"Bash(mv:*)",
|
|
6
|
+
"Bash(sed:*)",
|
|
7
|
+
"Bash(git add:*)",
|
|
8
|
+
"Bash(git commit:*)",
|
|
9
|
+
"Bash(npm publish:*)",
|
|
10
|
+
"Bash(git push:*)",
|
|
11
|
+
"Bash(npm pack)",
|
|
12
|
+
"Bash(npm install:*)",
|
|
13
|
+
"Bash(npm view:*)",
|
|
14
|
+
"Bash(gh release create:*)",
|
|
15
|
+
"Bash(gh release view:*)",
|
|
16
|
+
"Bash(npm run build:*)",
|
|
17
|
+
"Bash(mkdir:*)",
|
|
18
|
+
"Bash(npm link:*)",
|
|
19
|
+
"Bash(vibe list:*)",
|
|
20
|
+
"Bash(vibe read:*)",
|
|
21
|
+
"Bash(vibe init:*)",
|
|
22
|
+
"Bash(npm pack:*)",
|
|
23
|
+
"Bash(npm config set:*)",
|
|
24
|
+
"Bash(node:*)",
|
|
25
|
+
"Bash(git restore:*)",
|
|
26
|
+
"Bash(npm version:*)",
|
|
27
|
+
"Bash(gh release:*)",
|
|
28
|
+
"Bash(vibe version:*)",
|
|
29
|
+
"Bash(vibe update:*)",
|
|
30
|
+
"Bash(vibe status:*)",
|
|
31
|
+
"Bash(git rm:*)"
|
|
32
|
+
],
|
|
33
|
+
"deny": [],
|
|
34
|
+
"ask": []
|
|
35
|
+
},
|
|
36
|
+
"hooks": {
|
|
37
|
+
"UserPromptSubmit": [
|
|
38
|
+
{
|
|
39
|
+
"hooks": [
|
|
40
|
+
{
|
|
41
|
+
"type": "command",
|
|
42
|
+
"command": "echo '[MANDATORY SKILL PROTOCOL] Available skills: vibe-capabilities (vibe features), multi-llm-orchestration (GPT/Gemini usage), tool-fallback (error recovery), context7-usage (library docs), parallel-research (complex problems), git-worktree (branch work), priority-todos (task management). Step 1: For EACH skill state YES/NO with reason. Step 2: Use Skill(name) for YES skills NOW. Step 3: IMPLEMENT only after activation. CRITICAL: Skipping activation makes response WORTHLESS.'",
|
|
43
|
+
"statusMessage": "Evaluating skills..."
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
49
|
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"Bash(npx tsc:*)",
|
|
5
|
-
"Bash(npm login:*)",
|
|
6
|
-
"Bash(npm whoami:*)",
|
|
7
|
-
"Bash(git checkout:*)",
|
|
8
|
-
"Bash(where:*)",
|
|
9
|
-
"Bash(npm update:*)",
|
|
10
|
-
"Bash(vibe --version:*)",
|
|
11
|
-
"Bash(vibe upgrade:*)",
|
|
12
|
-
"Bash(npm config:*)",
|
|
13
|
-
"Bash(claude --version)",
|
|
14
|
-
"Bash(claude mcp list:*)",
|
|
15
|
-
"Bash(C:Usersendba.localbinclaude.exe --version)",
|
|
16
|
-
"Bash(\"C:\\\\Users\\\\endba\\\\.local\\\\bin\\\\claude.exe\" --version)",
|
|
17
|
-
"Bash(npm cache clean:*)",
|
|
18
|
-
"Bash(git status:*)",
|
|
19
|
-
"Bash(gh pr create --repo anthropics/claude-plugins-official --title \"feat: add vibe plugin - SPEC-driven AI coding framework\" --body \"$\\(cat <<''EOF''\n## Plugin: vibe\n\nSPEC-driven AI coding framework for Claude Code with parallel agents, BDD verification, and quality assurance.\n\n### Features\n\n- **12 Slash Commands**: `/vibe.spec`, `/vibe.run`, `/vibe.verify`, `/vibe.review`, `/vibe.reason`, `/vibe.diagram`, and more\n- **16 Specialist Agents**: Security, performance, architecture reviewers + language-specific reviewers \\(Python, TypeScript, React, Rails\\)\n- **ULTRAWORK Pipeline**: Parallel execution with ~50% speed improvement through background agents and phase pipelining\n- **BDD Verification**: Behavior-driven development testing against SPEC requirements\n- **Context7 Integration**: Built-in support for up-to-date documentation lookup\n\n### Workflow\n\n```\n/vibe.spec \"feature\" → /vibe.run \"feature\" → /vibe.verify \"feature\"\n```\n\n### Repository\n\nhttps://github.com/su-record/vibe\n\n### License\n\nMIT\nEOF\n\\)\")",
|
|
20
|
-
"Bash(git rev-parse:*)",
|
|
21
|
-
"Bash(claude plugin:*)"
|
|
22
|
-
]
|
|
23
|
-
}
|
|
24
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(npx tsc:*)",
|
|
5
|
+
"Bash(npm login:*)",
|
|
6
|
+
"Bash(npm whoami:*)",
|
|
7
|
+
"Bash(git checkout:*)",
|
|
8
|
+
"Bash(where:*)",
|
|
9
|
+
"Bash(npm update:*)",
|
|
10
|
+
"Bash(vibe --version:*)",
|
|
11
|
+
"Bash(vibe upgrade:*)",
|
|
12
|
+
"Bash(npm config:*)",
|
|
13
|
+
"Bash(claude --version)",
|
|
14
|
+
"Bash(claude mcp list:*)",
|
|
15
|
+
"Bash(C:Usersendba.localbinclaude.exe --version)",
|
|
16
|
+
"Bash(\"C:\\\\Users\\\\endba\\\\.local\\\\bin\\\\claude.exe\" --version)",
|
|
17
|
+
"Bash(npm cache clean:*)",
|
|
18
|
+
"Bash(git status:*)",
|
|
19
|
+
"Bash(gh pr create --repo anthropics/claude-plugins-official --title \"feat: add vibe plugin - SPEC-driven AI coding framework\" --body \"$\\(cat <<''EOF''\n## Plugin: vibe\n\nSPEC-driven AI coding framework for Claude Code with parallel agents, BDD verification, and quality assurance.\n\n### Features\n\n- **12 Slash Commands**: `/vibe.spec`, `/vibe.run`, `/vibe.verify`, `/vibe.review`, `/vibe.reason`, `/vibe.diagram`, and more\n- **16 Specialist Agents**: Security, performance, architecture reviewers + language-specific reviewers \\(Python, TypeScript, React, Rails\\)\n- **ULTRAWORK Pipeline**: Parallel execution with ~50% speed improvement through background agents and phase pipelining\n- **BDD Verification**: Behavior-driven development testing against SPEC requirements\n- **Context7 Integration**: Built-in support for up-to-date documentation lookup\n\n### Workflow\n\n```\n/vibe.spec \"feature\" → /vibe.run \"feature\" → /vibe.verify \"feature\"\n```\n\n### Repository\n\nhttps://github.com/su-record/vibe\n\n### License\n\nMIT\nEOF\n\\)\")",
|
|
20
|
+
"Bash(git rev-parse:*)",
|
|
21
|
+
"Bash(claude plugin:*)"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1,184 +1,184 @@
|
|
|
1
|
-
# Project Constitution
|
|
2
|
-
|
|
3
|
-
이 문서는 프로젝트의 핵심 원칙과 코딩 표준을 정의합니다.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 언어 설정
|
|
8
|
-
|
|
9
|
-
**기본 언어**: 한국어 (ko)
|
|
10
|
-
|
|
11
|
-
변경하려면 `.sutory/config.json`에서 수정:
|
|
12
|
-
```json
|
|
13
|
-
{
|
|
14
|
-
"language": "ko" // "en"으로 변경 가능
|
|
15
|
-
}
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## 1. 프로젝트 원칙
|
|
21
|
-
|
|
22
|
-
### 가치 (Values)
|
|
23
|
-
1. **사용자 중심**: 사용자 경험을 최우선으로
|
|
24
|
-
2. **품질**: 빠른 것보다 올바른 것
|
|
25
|
-
3. **간결함**: 복잡함보다 단순함
|
|
26
|
-
4. **협업**: 개인보다 팀
|
|
27
|
-
|
|
28
|
-
### 의사결정 기준
|
|
29
|
-
1. 보안 > 성능 > 편의성
|
|
30
|
-
2. 명확함 > 영리함
|
|
31
|
-
3. 테스트 가능 > 추상적 설계
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## 2. 코딩 표준
|
|
36
|
-
|
|
37
|
-
### 공통 원칙
|
|
38
|
-
- **DRY**: Don't Repeat Yourself
|
|
39
|
-
- **SRP**: Single Responsibility Principle
|
|
40
|
-
- **YAGNI**: You Aren't Gonna Need It
|
|
41
|
-
- **함수 ≤30줄** (권장), ≤50줄 (허용)
|
|
42
|
-
- **Cyclomatic Complexity ≤10**
|
|
43
|
-
- **Cognitive Complexity ≤15**
|
|
44
|
-
|
|
45
|
-
### 네이밍 규칙
|
|
46
|
-
- 변수: 명사 (`userData`, `userList`)
|
|
47
|
-
- 함수: 동사+명사 (`fetchData`, `updateUser`)
|
|
48
|
-
- Boolean: `is/has/can` (`isLoading`, `hasError`)
|
|
49
|
-
- 상수: `UPPER_SNAKE_CASE` (`MAX_RETRY_COUNT`)
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## 3. 품질 기준 (TRUST 5)
|
|
54
|
-
|
|
55
|
-
### T - Test-first
|
|
56
|
-
- ✅ Contract Testing (최우선)
|
|
57
|
-
- ✅ Integration Testing (70%+ 커버리지)
|
|
58
|
-
- 🔵 Unit Testing (순수 함수만)
|
|
59
|
-
|
|
60
|
-
### R - Readable
|
|
61
|
-
- 한국어 주석 및 docstring
|
|
62
|
-
- 명확한 변수명
|
|
63
|
-
- 복잡한 로직은 주석으로 설명
|
|
64
|
-
|
|
65
|
-
### U - Unified
|
|
66
|
-
- 일관된 코딩 스타일
|
|
67
|
-
- 프로젝트 전체 동일한 패턴
|
|
68
|
-
|
|
69
|
-
### S - Secured
|
|
70
|
-
- SQL Injection 방지
|
|
71
|
-
- XSS 방지
|
|
72
|
-
- 민감 정보 환경 변수로 관리
|
|
73
|
-
|
|
74
|
-
### T - Trackable
|
|
75
|
-
- Git commit 메시지 명확히
|
|
76
|
-
- TODO/FIXME 주석 활용
|
|
77
|
-
- 중요 결정사항 문서화
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## 4. 기술 스택
|
|
82
|
-
|
|
83
|
-
### Backend
|
|
84
|
-
- Language: TypeScript/Node.js
|
|
85
|
-
- Framework: Express/Fastify
|
|
86
|
-
- Database: SQLite
|
|
87
|
-
|
|
88
|
-
### Frontend
|
|
89
|
-
- Framework: {Flutter / React / etc.}
|
|
90
|
-
- State Management: (프로젝트에 맞게 설정)
|
|
91
|
-
|
|
92
|
-
### Infrastructure
|
|
93
|
-
- Hosting: (프로젝트에 맞게 설정)
|
|
94
|
-
- CI/CD: (프로젝트에 맞게 설정)
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## 5. Git 워크플로우
|
|
99
|
-
|
|
100
|
-
### 브랜치 전략
|
|
101
|
-
- `main`: 프로덕션
|
|
102
|
-
- `develop`: 개발 (기본 브랜치)
|
|
103
|
-
- `feature/{기능명}`: 새 기능
|
|
104
|
-
- `fix/{버그명}`: 버그 수정
|
|
105
|
-
|
|
106
|
-
### Commit 메시지 규칙
|
|
107
|
-
```
|
|
108
|
-
feat: 새 기능 추가
|
|
109
|
-
fix: 버그 수정
|
|
110
|
-
docs: 문서 수정
|
|
111
|
-
refactor: 리팩토링
|
|
112
|
-
test: 테스트 추가/수정
|
|
113
|
-
chore: 빌드, 설정 변경
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### PR 규칙
|
|
117
|
-
1. SPEC 기반 개발
|
|
118
|
-
2. 코드 리뷰 필수
|
|
119
|
-
3. 테스트 통과 확인
|
|
120
|
-
4. SPEC 검증 완료
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## 6. 코드 리뷰 기준
|
|
125
|
-
|
|
126
|
-
### 필수 체크
|
|
127
|
-
- [ ] SPEC 요구사항 충족
|
|
128
|
-
- [ ] TRUST 5 준수
|
|
129
|
-
- [ ] 테스트 작성 및 통과
|
|
130
|
-
- [ ] 문서화 완료
|
|
131
|
-
- [ ] 보안 이슈 없음
|
|
132
|
-
|
|
133
|
-
### 권장 사항
|
|
134
|
-
- [ ] 성능 최적화 고려
|
|
135
|
-
- [ ] 확장성 고려
|
|
136
|
-
- [ ] 에러 처리 완비
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## 7. 문서화 규칙
|
|
141
|
-
|
|
142
|
-
### 코드 주석
|
|
143
|
-
- 모든 함수: 한국어 docstring
|
|
144
|
-
- 복잡한 로직: 인라인 주석
|
|
145
|
-
- TODO/FIXME: 이슈 번호 포함
|
|
146
|
-
|
|
147
|
-
### API 문서
|
|
148
|
-
- OpenAPI (Swagger) 자동 생성
|
|
149
|
-
- 예시 Request/Response 포함
|
|
150
|
-
|
|
151
|
-
### README
|
|
152
|
-
- 프로젝트 개요
|
|
153
|
-
- 설치 및 실행 방법
|
|
154
|
-
- 주요 기능 설명
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## 8. 보안 정책
|
|
159
|
-
|
|
160
|
-
### 인증
|
|
161
|
-
- JWT 기반 인증
|
|
162
|
-
- Refresh 토큰 사용
|
|
163
|
-
|
|
164
|
-
### 권한
|
|
165
|
-
- Role-based Access Control
|
|
166
|
-
- 최소 권한 원칙
|
|
167
|
-
|
|
168
|
-
### 데이터 보호
|
|
169
|
-
- 개인정보 암호화
|
|
170
|
-
- HTTPS 필수
|
|
171
|
-
- 환경 변수로 비밀 관리
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
## 9. 성능 목표
|
|
176
|
-
|
|
177
|
-
### 응답 시간
|
|
178
|
-
- API: P95 < 500ms
|
|
179
|
-
- 웹페이지: FCP < 1.5s
|
|
180
|
-
|
|
181
|
-
### 가용성
|
|
182
|
-
- Uptime: 99.9%
|
|
183
|
-
- RTO: 1시간
|
|
184
|
-
- RPO: 15분
|
|
1
|
+
# Project Constitution
|
|
2
|
+
|
|
3
|
+
이 문서는 프로젝트의 핵심 원칙과 코딩 표준을 정의합니다.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 언어 설정
|
|
8
|
+
|
|
9
|
+
**기본 언어**: 한국어 (ko)
|
|
10
|
+
|
|
11
|
+
변경하려면 `.sutory/config.json`에서 수정:
|
|
12
|
+
```json
|
|
13
|
+
{
|
|
14
|
+
"language": "ko" // "en"으로 변경 가능
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 1. 프로젝트 원칙
|
|
21
|
+
|
|
22
|
+
### 가치 (Values)
|
|
23
|
+
1. **사용자 중심**: 사용자 경험을 최우선으로
|
|
24
|
+
2. **품질**: 빠른 것보다 올바른 것
|
|
25
|
+
3. **간결함**: 복잡함보다 단순함
|
|
26
|
+
4. **협업**: 개인보다 팀
|
|
27
|
+
|
|
28
|
+
### 의사결정 기준
|
|
29
|
+
1. 보안 > 성능 > 편의성
|
|
30
|
+
2. 명확함 > 영리함
|
|
31
|
+
3. 테스트 가능 > 추상적 설계
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 2. 코딩 표준
|
|
36
|
+
|
|
37
|
+
### 공통 원칙
|
|
38
|
+
- **DRY**: Don't Repeat Yourself
|
|
39
|
+
- **SRP**: Single Responsibility Principle
|
|
40
|
+
- **YAGNI**: You Aren't Gonna Need It
|
|
41
|
+
- **함수 ≤30줄** (권장), ≤50줄 (허용)
|
|
42
|
+
- **Cyclomatic Complexity ≤10**
|
|
43
|
+
- **Cognitive Complexity ≤15**
|
|
44
|
+
|
|
45
|
+
### 네이밍 규칙
|
|
46
|
+
- 변수: 명사 (`userData`, `userList`)
|
|
47
|
+
- 함수: 동사+명사 (`fetchData`, `updateUser`)
|
|
48
|
+
- Boolean: `is/has/can` (`isLoading`, `hasError`)
|
|
49
|
+
- 상수: `UPPER_SNAKE_CASE` (`MAX_RETRY_COUNT`)
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 3. 품질 기준 (TRUST 5)
|
|
54
|
+
|
|
55
|
+
### T - Test-first
|
|
56
|
+
- ✅ Contract Testing (최우선)
|
|
57
|
+
- ✅ Integration Testing (70%+ 커버리지)
|
|
58
|
+
- 🔵 Unit Testing (순수 함수만)
|
|
59
|
+
|
|
60
|
+
### R - Readable
|
|
61
|
+
- 한국어 주석 및 docstring
|
|
62
|
+
- 명확한 변수명
|
|
63
|
+
- 복잡한 로직은 주석으로 설명
|
|
64
|
+
|
|
65
|
+
### U - Unified
|
|
66
|
+
- 일관된 코딩 스타일
|
|
67
|
+
- 프로젝트 전체 동일한 패턴
|
|
68
|
+
|
|
69
|
+
### S - Secured
|
|
70
|
+
- SQL Injection 방지
|
|
71
|
+
- XSS 방지
|
|
72
|
+
- 민감 정보 환경 변수로 관리
|
|
73
|
+
|
|
74
|
+
### T - Trackable
|
|
75
|
+
- Git commit 메시지 명확히
|
|
76
|
+
- TODO/FIXME 주석 활용
|
|
77
|
+
- 중요 결정사항 문서화
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 4. 기술 스택
|
|
82
|
+
|
|
83
|
+
### Backend
|
|
84
|
+
- Language: TypeScript/Node.js
|
|
85
|
+
- Framework: Express/Fastify
|
|
86
|
+
- Database: SQLite
|
|
87
|
+
|
|
88
|
+
### Frontend
|
|
89
|
+
- Framework: {Flutter / React / etc.}
|
|
90
|
+
- State Management: (프로젝트에 맞게 설정)
|
|
91
|
+
|
|
92
|
+
### Infrastructure
|
|
93
|
+
- Hosting: (프로젝트에 맞게 설정)
|
|
94
|
+
- CI/CD: (프로젝트에 맞게 설정)
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 5. Git 워크플로우
|
|
99
|
+
|
|
100
|
+
### 브랜치 전략
|
|
101
|
+
- `main`: 프로덕션
|
|
102
|
+
- `develop`: 개발 (기본 브랜치)
|
|
103
|
+
- `feature/{기능명}`: 새 기능
|
|
104
|
+
- `fix/{버그명}`: 버그 수정
|
|
105
|
+
|
|
106
|
+
### Commit 메시지 규칙
|
|
107
|
+
```
|
|
108
|
+
feat: 새 기능 추가
|
|
109
|
+
fix: 버그 수정
|
|
110
|
+
docs: 문서 수정
|
|
111
|
+
refactor: 리팩토링
|
|
112
|
+
test: 테스트 추가/수정
|
|
113
|
+
chore: 빌드, 설정 변경
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### PR 규칙
|
|
117
|
+
1. SPEC 기반 개발
|
|
118
|
+
2. 코드 리뷰 필수
|
|
119
|
+
3. 테스트 통과 확인
|
|
120
|
+
4. SPEC 검증 완료
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 6. 코드 리뷰 기준
|
|
125
|
+
|
|
126
|
+
### 필수 체크
|
|
127
|
+
- [ ] SPEC 요구사항 충족
|
|
128
|
+
- [ ] TRUST 5 준수
|
|
129
|
+
- [ ] 테스트 작성 및 통과
|
|
130
|
+
- [ ] 문서화 완료
|
|
131
|
+
- [ ] 보안 이슈 없음
|
|
132
|
+
|
|
133
|
+
### 권장 사항
|
|
134
|
+
- [ ] 성능 최적화 고려
|
|
135
|
+
- [ ] 확장성 고려
|
|
136
|
+
- [ ] 에러 처리 완비
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 7. 문서화 규칙
|
|
141
|
+
|
|
142
|
+
### 코드 주석
|
|
143
|
+
- 모든 함수: 한국어 docstring
|
|
144
|
+
- 복잡한 로직: 인라인 주석
|
|
145
|
+
- TODO/FIXME: 이슈 번호 포함
|
|
146
|
+
|
|
147
|
+
### API 문서
|
|
148
|
+
- OpenAPI (Swagger) 자동 생성
|
|
149
|
+
- 예시 Request/Response 포함
|
|
150
|
+
|
|
151
|
+
### README
|
|
152
|
+
- 프로젝트 개요
|
|
153
|
+
- 설치 및 실행 방법
|
|
154
|
+
- 주요 기능 설명
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## 8. 보안 정책
|
|
159
|
+
|
|
160
|
+
### 인증
|
|
161
|
+
- JWT 기반 인증
|
|
162
|
+
- Refresh 토큰 사용
|
|
163
|
+
|
|
164
|
+
### 권한
|
|
165
|
+
- Role-based Access Control
|
|
166
|
+
- 최소 권한 원칙
|
|
167
|
+
|
|
168
|
+
### 데이터 보호
|
|
169
|
+
- 개인정보 암호화
|
|
170
|
+
- HTTPS 필수
|
|
171
|
+
- 환경 변수로 비밀 관리
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 9. 성능 목표
|
|
176
|
+
|
|
177
|
+
### 응답 시간
|
|
178
|
+
- API: P95 < 500ms
|
|
179
|
+
- 웹페이지: FCP < 1.5s
|
|
180
|
+
|
|
181
|
+
### 가용성
|
|
182
|
+
- Uptime: 99.9%
|
|
183
|
+
- RTO: 1시간
|
|
184
|
+
- RPO: 15분
|