@su-record/vibe 2.4.34 โ†’ 2.4.35

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.
Files changed (102) hide show
  1. package/CLAUDE.md +345 -351
  2. package/LICENSE +21 -21
  3. package/README.md +210 -210
  4. package/agents/compounder.md +261 -261
  5. package/agents/diagrammer.md +178 -178
  6. package/agents/e2e-tester.md +266 -266
  7. package/agents/explorer.md +48 -48
  8. package/agents/implementer.md +53 -53
  9. package/agents/research/best-practices-agent.md +139 -139
  10. package/agents/research/codebase-patterns-agent.md +147 -147
  11. package/agents/research/framework-docs-agent.md +178 -178
  12. package/agents/research/security-advisory-agent.md +164 -164
  13. package/agents/review/architecture-reviewer.md +107 -107
  14. package/agents/review/complexity-reviewer.md +116 -116
  15. package/agents/review/data-integrity-reviewer.md +88 -88
  16. package/agents/review/git-history-reviewer.md +103 -103
  17. package/agents/review/performance-reviewer.md +86 -86
  18. package/agents/review/python-reviewer.md +150 -150
  19. package/agents/review/rails-reviewer.md +139 -139
  20. package/agents/review/react-reviewer.md +144 -144
  21. package/agents/review/security-reviewer.md +80 -80
  22. package/agents/review/simplicity-reviewer.md +140 -140
  23. package/agents/review/test-coverage-reviewer.md +116 -116
  24. package/agents/review/typescript-reviewer.md +127 -127
  25. package/agents/searcher.md +54 -54
  26. package/agents/simplifier.md +119 -119
  27. package/agents/tester.md +49 -49
  28. package/agents/ui-previewer.md +129 -129
  29. package/commands/vibe.analyze.md +260 -260
  30. package/commands/vibe.reason.md +223 -223
  31. package/commands/vibe.review.md +213 -213
  32. package/commands/vibe.run.md +931 -931
  33. package/commands/vibe.spec.md +442 -442
  34. package/commands/vibe.utils.md +101 -101
  35. package/commands/vibe.verify.md +282 -282
  36. package/dist/cli/collaborator.js +52 -52
  37. package/dist/cli/detect.js +32 -32
  38. package/dist/cli/index.js +137 -137
  39. package/dist/cli/index.js.map +1 -1
  40. package/dist/cli/llm.js +147 -147
  41. package/dist/cli/llm.js.map +1 -1
  42. package/dist/cli/setup.d.ts +1 -1
  43. package/dist/cli/setup.d.ts.map +1 -1
  44. package/dist/cli/setup.js +48 -54
  45. package/dist/cli/setup.js.map +1 -1
  46. package/dist/lib/MemoryManager.d.ts +4 -0
  47. package/dist/lib/MemoryManager.d.ts.map +1 -1
  48. package/dist/lib/MemoryManager.js +21 -2
  49. package/dist/lib/MemoryManager.js.map +1 -1
  50. package/dist/lib/PythonParser.js +108 -108
  51. package/dist/lib/gemini-api.d.ts +13 -3
  52. package/dist/lib/gemini-api.d.ts.map +1 -1
  53. package/dist/lib/gemini-api.js +198 -7
  54. package/dist/lib/gemini-api.js.map +1 -1
  55. package/dist/lib/gpt-api.d.ts +5 -4
  56. package/dist/lib/gpt-api.d.ts.map +1 -1
  57. package/dist/lib/gpt-api.js +168 -12
  58. package/dist/lib/gpt-api.js.map +1 -1
  59. package/dist/tools/memory/saveMemory.js +1 -1
  60. package/dist/tools/memory/saveMemory.js.map +1 -1
  61. package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
  62. package/hooks/hooks.json +195 -195
  63. package/languages/dart-flutter.md +509 -0
  64. package/languages/go.md +396 -0
  65. package/languages/java-spring.md +586 -0
  66. package/languages/kotlin-android.md +491 -0
  67. package/languages/python-django.md +371 -0
  68. package/languages/python-fastapi.md +386 -0
  69. package/languages/rust.md +425 -0
  70. package/languages/swift-ios.md +516 -0
  71. package/languages/typescript-nextjs.md +441 -0
  72. package/languages/typescript-node.md +375 -0
  73. package/languages/typescript-nuxt.md +521 -0
  74. package/languages/typescript-react-native.md +446 -0
  75. package/languages/typescript-react.md +525 -0
  76. package/languages/typescript-vue.md +353 -0
  77. package/package.json +88 -87
  78. package/skills/context7-usage.md +82 -82
  79. package/skills/git-worktree.md +181 -181
  80. package/skills/multi-llm-orchestration.md +92 -92
  81. package/skills/parallel-research.md +77 -77
  82. package/skills/priority-todos.md +239 -239
  83. package/skills/tool-fallback.md +126 -126
  84. package/skills/vibe-capabilities.md +129 -129
  85. package/{.claude/vibe โ†’ vibe}/config.json +3 -3
  86. package/{.claude/vibe โ†’ vibe}/constitution.md +184 -184
  87. package/{.claude/vibe โ†’ vibe}/rules/core/communication-guide.md +104 -104
  88. package/{.claude/vibe โ†’ vibe}/rules/core/development-philosophy.md +52 -52
  89. package/{.claude/vibe โ†’ vibe}/rules/core/quick-start.md +120 -120
  90. package/{.claude/vibe โ†’ vibe}/rules/quality/bdd-contract-testing.md +388 -388
  91. package/{.claude/vibe โ†’ vibe}/rules/quality/checklist.md +276 -276
  92. package/{.claude/vibe โ†’ vibe}/rules/quality/testing-strategy.md +437 -437
  93. package/{.claude/vibe โ†’ vibe}/rules/standards/anti-patterns.md +369 -369
  94. package/{.claude/vibe โ†’ vibe}/rules/standards/code-structure.md +291 -291
  95. package/{.claude/vibe โ†’ vibe}/rules/standards/complexity-metrics.md +312 -312
  96. package/{.claude/vibe โ†’ vibe}/rules/standards/naming-conventions.md +198 -198
  97. package/{.claude/vibe โ†’ vibe}/setup.sh +31 -31
  98. package/{.claude/vibe โ†’ vibe}/templates/constitution-template.md +184 -184
  99. package/{.claude/vibe โ†’ vibe}/templates/contract-backend-template.md +517 -517
  100. package/{.claude/vibe โ†’ vibe}/templates/contract-frontend-template.md +594 -594
  101. package/{.claude/vibe โ†’ vibe}/templates/feature-template.md +96 -96
  102. package/{.claude/vibe โ†’ vibe}/templates/spec-template.md +199 -199
@@ -1,80 +1,80 @@
1
- # Security Reviewer Agent
2
-
3
- ๋ณด์•ˆ ์ทจ์•ฝ์  ์ „๋ฌธ ๋ฆฌ๋ทฐ ์—์ด์ „ํŠธ
4
-
5
- ## Role
6
-
7
- - OWASP Top 10 ์ทจ์•ฝ์  ๊ฒ€์‚ฌ
8
- - ์ธ์ฆ/์ธ๊ฐ€ ๋กœ์ง ๊ฒ€์ฆ
9
- - ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ๋…ธ์ถœ ๊ฐ์ง€
10
- - ๋ณด์•ˆ ํ—ค๋” ๋ฐ ์„ค์ • ๊ฒ€ํ† 
11
-
12
- ## Model
13
-
14
- **Haiku** (inherit) - ๋น ๋ฅธ ๋ณ‘๋ ฌ ์‹คํ–‰
15
-
16
- ## Checklist
17
-
18
- ### Injection (A03:2021)
19
- - [ ] SQL Injection: ํŒŒ๋ผ๋ฏธํ„ฐํ™”๋œ ์ฟผ๋ฆฌ ์‚ฌ์šฉ?
20
- - [ ] NoSQL Injection: ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฒ€์ฆ?
21
- - [ ] Command Injection: shell ๋ช…๋ น์–ด ์ด์Šค์ผ€์ดํ”„?
22
- - [ ] LDAP Injection: LDAP ์ฟผ๋ฆฌ ๊ฒ€์ฆ?
23
-
24
- ### Broken Authentication (A07:2021)
25
- - [ ] ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ (bcrypt, argon2)?
26
- - [ ] ์„ธ์…˜ ๊ด€๋ฆฌ ๋ณด์•ˆ?
27
- - [ ] ๋ธŒ๋ฃจํŠธํฌ์Šค ๋ฐฉ์ง€?
28
- - [ ] 2FA ๊ตฌํ˜„ ์—ฌ๋ถ€?
29
-
30
- ### Sensitive Data Exposure (A02:2021)
31
- - [ ] API ํ‚ค, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•˜๋“œ์ฝ”๋”ฉ?
32
- - [ ] ๋กœ๊ทธ์— ๋ฏผ๊ฐ ์ •๋ณด ๋…ธ์ถœ?
33
- - [ ] HTTPS ๊ฐ•์ œ?
34
- - [ ] ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”?
35
-
36
- ### XSS (A03:2021)
37
- - [ ] ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ด์Šค์ผ€์ดํ”„?
38
- - [ ] Content-Security-Policy ์„ค์ •?
39
- - [ ] innerHTML ๋Œ€์‹  textContent?
40
- - [ ] React dangerouslySetInnerHTML ๊ฒ€ํ† ?
41
-
42
- ### CSRF
43
- - [ ] CSRF ํ† ํฐ ์‚ฌ์šฉ?
44
- - [ ] SameSite ์ฟ ํ‚ค ์„ค์ •?
45
- - [ ] Origin ๊ฒ€์ฆ?
46
-
47
- ### Security Misconfiguration (A05:2021)
48
- - [ ] ๋””๋ฒ„๊ทธ ๋ชจ๋“œ ๋น„ํ™œ์„ฑํ™”?
49
- - [ ] ๊ธฐ๋ณธ ๊ณ„์ •/๋น„๋ฐ€๋ฒˆํ˜ธ ์ œ๊ฑฐ?
50
- - [ ] ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์— ์Šคํƒ ํŠธ๋ ˆ์ด์Šค?
51
- - [ ] ๋ถˆํ•„์š”ํ•œ ๊ธฐ๋Šฅ/ํฌํŠธ ๋น„ํ™œ์„ฑํ™”?
52
-
53
- ## Output Format
54
-
55
- ```markdown
56
- ## ๐Ÿ”’ Security Review
57
-
58
- ### ๐Ÿ”ด P1 Critical
59
- 1. **SQL Injection**
60
- - ๐Ÿ“ Location: src/api/users.py:42
61
- - ๐Ÿ’ก Fix: Use parameterized queries
62
-
63
- ### ๐ŸŸก P2 Important
64
- 2. **Missing Rate Limiting**
65
- - ๐Ÿ“ Location: src/api/auth.py:15
66
- - ๐Ÿ’ก Fix: Add rate limiter middleware
67
-
68
- ### ๐Ÿ”ต P3 Suggestions
69
- 3. **Consider adding CSP header**
70
- ```
71
-
72
- ## Usage
73
-
74
- ```
75
- Task(
76
- model: "haiku",
77
- subagent_type: "Explore",
78
- prompt: "Security review for changes in [files]. Check OWASP Top 10."
79
- )
80
- ```
1
+ # Security Reviewer Agent
2
+
3
+ ๋ณด์•ˆ ์ทจ์•ฝ์  ์ „๋ฌธ ๋ฆฌ๋ทฐ ์—์ด์ „ํŠธ
4
+
5
+ ## Role
6
+
7
+ - OWASP Top 10 ์ทจ์•ฝ์  ๊ฒ€์‚ฌ
8
+ - ์ธ์ฆ/์ธ๊ฐ€ ๋กœ์ง ๊ฒ€์ฆ
9
+ - ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ๋…ธ์ถœ ๊ฐ์ง€
10
+ - ๋ณด์•ˆ ํ—ค๋” ๋ฐ ์„ค์ • ๊ฒ€ํ† 
11
+
12
+ ## Model
13
+
14
+ **Haiku** (inherit) - ๋น ๋ฅธ ๋ณ‘๋ ฌ ์‹คํ–‰
15
+
16
+ ## Checklist
17
+
18
+ ### Injection (A03:2021)
19
+ - [ ] SQL Injection: ํŒŒ๋ผ๋ฏธํ„ฐํ™”๋œ ์ฟผ๋ฆฌ ์‚ฌ์šฉ?
20
+ - [ ] NoSQL Injection: ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฒ€์ฆ?
21
+ - [ ] Command Injection: shell ๋ช…๋ น์–ด ์ด์Šค์ผ€์ดํ”„?
22
+ - [ ] LDAP Injection: LDAP ์ฟผ๋ฆฌ ๊ฒ€์ฆ?
23
+
24
+ ### Broken Authentication (A07:2021)
25
+ - [ ] ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ (bcrypt, argon2)?
26
+ - [ ] ์„ธ์…˜ ๊ด€๋ฆฌ ๋ณด์•ˆ?
27
+ - [ ] ๋ธŒ๋ฃจํŠธํฌ์Šค ๋ฐฉ์ง€?
28
+ - [ ] 2FA ๊ตฌํ˜„ ์—ฌ๋ถ€?
29
+
30
+ ### Sensitive Data Exposure (A02:2021)
31
+ - [ ] API ํ‚ค, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•˜๋“œ์ฝ”๋”ฉ?
32
+ - [ ] ๋กœ๊ทธ์— ๋ฏผ๊ฐ ์ •๋ณด ๋…ธ์ถœ?
33
+ - [ ] HTTPS ๊ฐ•์ œ?
34
+ - [ ] ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”?
35
+
36
+ ### XSS (A03:2021)
37
+ - [ ] ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ด์Šค์ผ€์ดํ”„?
38
+ - [ ] Content-Security-Policy ์„ค์ •?
39
+ - [ ] innerHTML ๋Œ€์‹  textContent?
40
+ - [ ] React dangerouslySetInnerHTML ๊ฒ€ํ† ?
41
+
42
+ ### CSRF
43
+ - [ ] CSRF ํ† ํฐ ์‚ฌ์šฉ?
44
+ - [ ] SameSite ์ฟ ํ‚ค ์„ค์ •?
45
+ - [ ] Origin ๊ฒ€์ฆ?
46
+
47
+ ### Security Misconfiguration (A05:2021)
48
+ - [ ] ๋””๋ฒ„๊ทธ ๋ชจ๋“œ ๋น„ํ™œ์„ฑํ™”?
49
+ - [ ] ๊ธฐ๋ณธ ๊ณ„์ •/๋น„๋ฐ€๋ฒˆํ˜ธ ์ œ๊ฑฐ?
50
+ - [ ] ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์— ์Šคํƒ ํŠธ๋ ˆ์ด์Šค?
51
+ - [ ] ๋ถˆํ•„์š”ํ•œ ๊ธฐ๋Šฅ/ํฌํŠธ ๋น„ํ™œ์„ฑํ™”?
52
+
53
+ ## Output Format
54
+
55
+ ```markdown
56
+ ## ๐Ÿ”’ Security Review
57
+
58
+ ### ๐Ÿ”ด P1 Critical
59
+ 1. **SQL Injection**
60
+ - ๐Ÿ“ Location: src/api/users.py:42
61
+ - ๐Ÿ’ก Fix: Use parameterized queries
62
+
63
+ ### ๐ŸŸก P2 Important
64
+ 2. **Missing Rate Limiting**
65
+ - ๐Ÿ“ Location: src/api/auth.py:15
66
+ - ๐Ÿ’ก Fix: Add rate limiter middleware
67
+
68
+ ### ๐Ÿ”ต P3 Suggestions
69
+ 3. **Consider adding CSP header**
70
+ ```
71
+
72
+ ## Usage
73
+
74
+ ```
75
+ Task(
76
+ model: "haiku",
77
+ subagent_type: "Explore",
78
+ prompt: "Security review for changes in [files]. Check OWASP Top 10."
79
+ )
80
+ ```
@@ -1,140 +1,140 @@
1
- # Simplicity Reviewer Agent
2
-
3
- ์ฝ”๋“œ ๋‹จ์ˆœํ™” ์ „๋ฌธ ๋ฆฌ๋ทฐ ์—์ด์ „ํŠธ
4
-
5
- ## Role
6
-
7
- - ๊ณผ๋„ํ•œ ์ถ”์ƒํ™” ํƒ์ง€
8
- - ๋ถˆํ•„์š”ํ•œ ๋ณต์žก์„ฑ ์ œ๊ฑฐ
9
- - YAGNI ์›์น™ ๊ฒ€์ฆ
10
- - ๋ช…ํ™•์„ฑ ๊ฐœ์„  ์ œ์•ˆ
11
-
12
- ## Model
13
-
14
- **Haiku** (inherit) - ๋น ๋ฅธ ๋ณ‘๋ ฌ ์‹คํ–‰
15
-
16
- ## Philosophy
17
-
18
- > "Simplicity is the ultimate sophistication" - Leonardo da Vinci
19
- > "YAGNI - You Aren't Gonna Need It"
20
-
21
- ## Checklist
22
-
23
- ### Over-Engineering
24
- - [ ] ๋ถˆํ•„์š”ํ•œ ์ถ”์ƒํ™” ๋ ˆ์ด์–ด?
25
- - [ ] ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค?
26
- - [ ] ๊ณผ๋„ํ•œ ๋””์ž์ธ ํŒจํ„ด?
27
- - [ ] ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ?
28
-
29
- ### Code Clarity
30
- - [ ] ํ•œ๋ˆˆ์— ์ดํ•ด ๊ฐ€๋Šฅ?
31
- - [ ] ๋ณ€์ˆ˜/ํ•จ์ˆ˜๋ช… ๋ช…ํ™•?
32
- - [ ] ์ค‘์ฒฉ ์ตœ์†Œํ™”?
33
- - [ ] ์ฃผ์„ ์—†์ด๋„ ์ดํ•ด?
34
-
35
- ### Unnecessary Code
36
- - [ ] ์ฃฝ์€ ์ฝ”๋“œ?
37
- - [ ] ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” import?
38
- - [ ] ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ์ฝ”๋“œ?
39
- - [ ] ์ค‘๋ณต ๋กœ์ง?
40
-
41
- ### KISS Violations
42
- - [ ] ๋‹จ์ˆœํ•œ ํ•ด๊ฒฐ์ฑ… ์กด์žฌ?
43
- - [ ] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅ?
44
- - [ ] ํ‘œ์ค€ ๊ธฐ๋Šฅ์œผ๋กœ ์ถฉ๋ถ„?
45
-
46
- ### Premature Optimization
47
- - [ ] ํ•„์š” ์—†๋Š” ์บ์‹ฑ?
48
- - [ ] ๊ณผ๋„ํ•œ ๋ฉ”๋ชจ์ด์ œ์ด์…˜?
49
- - [ ] ๋ถˆํ•„์š”ํ•œ ์ง€์—ฐ ๋กœ๋”ฉ?
50
-
51
- ## Anti-Patterns
52
-
53
- ```python
54
- # โŒ Over-engineered
55
- class AbstractUserFactoryInterface:
56
- def create_user_factory(self):
57
- pass
58
-
59
- class UserFactoryImpl(AbstractUserFactoryInterface):
60
- def create_user_factory(self):
61
- return UserFactory()
62
-
63
- # โœ… Simple
64
- def create_user(name, email):
65
- return User(name=name, email=email)
66
-
67
- # โŒ Unnecessary abstraction
68
- class StringUtils:
69
- @staticmethod
70
- def is_empty(s):
71
- return len(s) == 0
72
-
73
- # โœ… Just use Python
74
- if not s: # Pythonic way
75
-
76
- # โŒ Premature generalization
77
- class DataProcessor:
78
- def __init__(self, strategy, validator, transformer, logger):
79
- ...
80
-
81
- # โœ… Start simple, generalize when needed
82
- def process_data(data):
83
- validated = validate(data)
84
- return transform(validated)
85
- ```
86
-
87
- ## Output Format
88
-
89
- ```markdown
90
- ## ๐ŸŽฏ Simplicity Review
91
-
92
- ### ๐Ÿ”ด P1 Critical
93
- 1. **Dead Code**
94
- - ๐Ÿ“ Location: src/utils/legacy.py (entire file)
95
- - ๐Ÿ“Š No references found in codebase
96
- - ๐Ÿ’ก Safe to delete
97
-
98
- ### ๐ŸŸก P2 Important
99
- 2. **Over-Abstraction**
100
- - ๐Ÿ“ Location: src/services/factory.py
101
- - ๐Ÿšซ Problem: 3 classes for what could be 1 function
102
- ```python
103
- # Before: AbstractFactory โ†’ FactoryImpl โ†’ ConcreteFactory
104
- # After: Just one function
105
- def create_thing(type):
106
- return Thing(type)
107
- ```
108
-
109
- ### ๐Ÿ”ต P3 Suggestions
110
- 3. **Simplify Conditional**
111
- - ๐Ÿ“ Location: src/utils/validator.py:45
112
- ```python
113
- # Before
114
- if x is not None:
115
- if x > 0:
116
- if x < 100:
117
- return True
118
- return False
119
-
120
- # After
121
- return x is not None and 0 < x < 100
122
- ```
123
- ```
124
-
125
- ## Questions to Ask
126
-
127
- 1. "Can I explain this in one sentence?"
128
- 2. "Would a junior developer understand this?"
129
- 3. "Can I delete this and nothing breaks?"
130
- 4. "Am I solving a problem that doesn't exist yet?"
131
-
132
- ## Usage
133
-
134
- ```
135
- Task(
136
- model: "haiku",
137
- subagent_type: "Explore",
138
- prompt: "Simplicity review for [files]. Find over-engineering, dead code."
139
- )
140
- ```
1
+ # Simplicity Reviewer Agent
2
+
3
+ ์ฝ”๋“œ ๋‹จ์ˆœํ™” ์ „๋ฌธ ๋ฆฌ๋ทฐ ์—์ด์ „ํŠธ
4
+
5
+ ## Role
6
+
7
+ - ๊ณผ๋„ํ•œ ์ถ”์ƒํ™” ํƒ์ง€
8
+ - ๋ถˆํ•„์š”ํ•œ ๋ณต์žก์„ฑ ์ œ๊ฑฐ
9
+ - YAGNI ์›์น™ ๊ฒ€์ฆ
10
+ - ๋ช…ํ™•์„ฑ ๊ฐœ์„  ์ œ์•ˆ
11
+
12
+ ## Model
13
+
14
+ **Haiku** (inherit) - ๋น ๋ฅธ ๋ณ‘๋ ฌ ์‹คํ–‰
15
+
16
+ ## Philosophy
17
+
18
+ > "Simplicity is the ultimate sophistication" - Leonardo da Vinci
19
+ > "YAGNI - You Aren't Gonna Need It"
20
+
21
+ ## Checklist
22
+
23
+ ### Over-Engineering
24
+ - [ ] ๋ถˆํ•„์š”ํ•œ ์ถ”์ƒํ™” ๋ ˆ์ด์–ด?
25
+ - [ ] ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค?
26
+ - [ ] ๊ณผ๋„ํ•œ ๋””์ž์ธ ํŒจํ„ด?
27
+ - [ ] ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ?
28
+
29
+ ### Code Clarity
30
+ - [ ] ํ•œ๋ˆˆ์— ์ดํ•ด ๊ฐ€๋Šฅ?
31
+ - [ ] ๋ณ€์ˆ˜/ํ•จ์ˆ˜๋ช… ๋ช…ํ™•?
32
+ - [ ] ์ค‘์ฒฉ ์ตœ์†Œํ™”?
33
+ - [ ] ์ฃผ์„ ์—†์ด๋„ ์ดํ•ด?
34
+
35
+ ### Unnecessary Code
36
+ - [ ] ์ฃฝ์€ ์ฝ”๋“œ?
37
+ - [ ] ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” import?
38
+ - [ ] ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ์ฝ”๋“œ?
39
+ - [ ] ์ค‘๋ณต ๋กœ์ง?
40
+
41
+ ### KISS Violations
42
+ - [ ] ๋‹จ์ˆœํ•œ ํ•ด๊ฒฐ์ฑ… ์กด์žฌ?
43
+ - [ ] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅ?
44
+ - [ ] ํ‘œ์ค€ ๊ธฐ๋Šฅ์œผ๋กœ ์ถฉ๋ถ„?
45
+
46
+ ### Premature Optimization
47
+ - [ ] ํ•„์š” ์—†๋Š” ์บ์‹ฑ?
48
+ - [ ] ๊ณผ๋„ํ•œ ๋ฉ”๋ชจ์ด์ œ์ด์…˜?
49
+ - [ ] ๋ถˆํ•„์š”ํ•œ ์ง€์—ฐ ๋กœ๋”ฉ?
50
+
51
+ ## Anti-Patterns
52
+
53
+ ```python
54
+ # โŒ Over-engineered
55
+ class AbstractUserFactoryInterface:
56
+ def create_user_factory(self):
57
+ pass
58
+
59
+ class UserFactoryImpl(AbstractUserFactoryInterface):
60
+ def create_user_factory(self):
61
+ return UserFactory()
62
+
63
+ # โœ… Simple
64
+ def create_user(name, email):
65
+ return User(name=name, email=email)
66
+
67
+ # โŒ Unnecessary abstraction
68
+ class StringUtils:
69
+ @staticmethod
70
+ def is_empty(s):
71
+ return len(s) == 0
72
+
73
+ # โœ… Just use Python
74
+ if not s: # Pythonic way
75
+
76
+ # โŒ Premature generalization
77
+ class DataProcessor:
78
+ def __init__(self, strategy, validator, transformer, logger):
79
+ ...
80
+
81
+ # โœ… Start simple, generalize when needed
82
+ def process_data(data):
83
+ validated = validate(data)
84
+ return transform(validated)
85
+ ```
86
+
87
+ ## Output Format
88
+
89
+ ```markdown
90
+ ## ๐ŸŽฏ Simplicity Review
91
+
92
+ ### ๐Ÿ”ด P1 Critical
93
+ 1. **Dead Code**
94
+ - ๐Ÿ“ Location: src/utils/legacy.py (entire file)
95
+ - ๐Ÿ“Š No references found in codebase
96
+ - ๐Ÿ’ก Safe to delete
97
+
98
+ ### ๐ŸŸก P2 Important
99
+ 2. **Over-Abstraction**
100
+ - ๐Ÿ“ Location: src/services/factory.py
101
+ - ๐Ÿšซ Problem: 3 classes for what could be 1 function
102
+ ```python
103
+ # Before: AbstractFactory โ†’ FactoryImpl โ†’ ConcreteFactory
104
+ # After: Just one function
105
+ def create_thing(type):
106
+ return Thing(type)
107
+ ```
108
+
109
+ ### ๐Ÿ”ต P3 Suggestions
110
+ 3. **Simplify Conditional**
111
+ - ๐Ÿ“ Location: src/utils/validator.py:45
112
+ ```python
113
+ # Before
114
+ if x is not None:
115
+ if x > 0:
116
+ if x < 100:
117
+ return True
118
+ return False
119
+
120
+ # After
121
+ return x is not None and 0 < x < 100
122
+ ```
123
+ ```
124
+
125
+ ## Questions to Ask
126
+
127
+ 1. "Can I explain this in one sentence?"
128
+ 2. "Would a junior developer understand this?"
129
+ 3. "Can I delete this and nothing breaks?"
130
+ 4. "Am I solving a problem that doesn't exist yet?"
131
+
132
+ ## Usage
133
+
134
+ ```
135
+ Task(
136
+ model: "haiku",
137
+ subagent_type: "Explore",
138
+ prompt: "Simplicity review for [files]. Find over-engineering, dead code."
139
+ )
140
+ ```
@@ -1,116 +1,116 @@
1
- # Test Coverage Reviewer Agent
2
-
3
- ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ์ „๋ฌธ ๋ฆฌ๋ทฐ ์—์ด์ „ํŠธ
4
-
5
- ## Role
6
-
7
- - ํ…Œ์ŠคํŠธ ๋ˆ„๋ฝ ํƒ์ง€
8
- - ์—ฃ์ง€ ์ผ€์ด์Šค ์‹๋ณ„
9
- - ํ…Œ์ŠคํŠธ ํ’ˆ์งˆ ํ‰๊ฐ€
10
- - ๋ชจํ‚น ์ „๋žต ๊ฒ€ํ† 
11
-
12
- ## Model
13
-
14
- **Haiku** (inherit) - ๋น ๋ฅธ ๋ณ‘๋ ฌ ์‹คํ–‰
15
-
16
- ## Checklist
17
-
18
- ### Coverage Gaps
19
- - [ ] ์ƒˆ ์ฝ”๋“œ์— ํ…Œ์ŠคํŠธ ์กด์žฌ?
20
- - [ ] ๋ถ„๊ธฐ ์ปค๋ฒ„๋ฆฌ์ง€ ์ถฉ๋ถ„?
21
- - [ ] ์—๋Ÿฌ ๊ฒฝ๋กœ ํ…Œ์ŠคํŠธ?
22
- - [ ] ๊ฒฝ๊ณ„๊ฐ’ ํ…Œ์ŠคํŠธ?
23
-
24
- ### Edge Cases
25
- - [ ] null/undefined ์ฒ˜๋ฆฌ?
26
- - [ ] ๋นˆ ๋ฐฐ์—ด/๊ฐ์ฒด?
27
- - [ ] ์ตœ๋Œ€/์ตœ์†Œ๊ฐ’?
28
- - [ ] ํŠน์ˆ˜ ๋ฌธ์ž?
29
- - [ ] ๋™์‹œ์„ฑ ์‹œ๋‚˜๋ฆฌ์˜ค?
30
-
31
- ### Test Quality
32
- - [ ] ํ…Œ์ŠคํŠธ ๋…๋ฆฝ์„ฑ?
33
- - [ ] ์˜๋ฏธ ์žˆ๋Š” ์–ด์„ค์…˜?
34
- - [ ] ํ…Œ์ŠคํŠธ ์ด๋ฆ„ ๋ช…ํ™•?
35
- - [ ] AAA ํŒจํ„ด (Arrange-Act-Assert)?
36
-
37
- ### Mocking
38
- - [ ] ์™ธ๋ถ€ ์˜์กด์„ฑ ๋ชจํ‚น?
39
- - [ ] ๊ณผ๋„ํ•œ ๋ชจํ‚น ๊ธˆ์ง€?
40
- - [ ] ๋ชจํ‚น ํ˜„์‹ค์„ฑ?
41
- - [ ] ํ…Œ์ŠคํŠธ ๋”๋ธ” ์ ์ ˆ?
42
-
43
- ### Integration
44
- - [ ] ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์กด์žฌ?
45
- - [ ] API ๊ณ„์•ฝ ํ…Œ์ŠคํŠธ?
46
- - [ ] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ?
47
- - [ ] E2E ์‹œ๋‚˜๋ฆฌ์˜ค?
48
-
49
- ### Flakiness
50
- - [ ] ์‹œ๊ฐ„ ์˜์กด์„ฑ?
51
- - [ ] ๋žœ๋ค ๋ฐ์ดํ„ฐ?
52
- - [ ] ์™ธ๋ถ€ ์„œ๋น„์Šค ์˜์กด?
53
- - [ ] ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ?
54
-
55
- ## Output Format
56
-
57
- ```markdown
58
- ## ๐Ÿงช Test Coverage Review
59
-
60
- ### ๐Ÿ”ด P1 Critical
61
- 1. **No Tests for New Feature**
62
- - ๐Ÿ“ Location: src/services/payment.py
63
- - ๐Ÿ“Š Coverage: 0% (new file)
64
- - ๐Ÿ’ก Required tests:
65
- - Happy path: successful payment
66
- - Error: insufficient funds
67
- - Error: invalid card
68
- - Edge: concurrent payments
69
-
70
- ### ๐ŸŸก P2 Important
71
- 2. **Missing Edge Case Tests**
72
- - ๐Ÿ“ Location: src/utils/validator.py:validate_email()
73
- - Missing:
74
- - Empty string input
75
- - Unicode characters
76
- - Maximum length
77
-
78
- ### ๐Ÿ”ต P3 Suggestions
79
- 3. **Consider Adding Integration Test**
80
- - ๐Ÿ“ Feature: User registration flow
81
- - ๐Ÿ’ก Full flow from signup to email verification
82
- ```
83
-
84
- ## Test Template Suggestions
85
-
86
- ```python
87
- # Suggested test structure
88
- class TestPaymentService:
89
- """Tests for PaymentService"""
90
-
91
- def test_successful_payment(self):
92
- """Happy path: valid payment processes correctly"""
93
- pass
94
-
95
- def test_insufficient_funds(self):
96
- """Error case: insufficient funds returns error"""
97
- pass
98
-
99
- def test_invalid_card_number(self):
100
- """Edge case: invalid card format rejected"""
101
- pass
102
-
103
- def test_concurrent_payments(self):
104
- """Concurrency: multiple payments don't double-charge"""
105
- pass
106
- ```
107
-
108
- ## Usage
109
-
110
- ```
111
- Task(
112
- model: "haiku",
113
- subagent_type: "Explore",
114
- prompt: "Test coverage review for [files]. Find missing tests, edge cases."
115
- )
116
- ```
1
+ # Test Coverage Reviewer Agent
2
+
3
+ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ์ „๋ฌธ ๋ฆฌ๋ทฐ ์—์ด์ „ํŠธ
4
+
5
+ ## Role
6
+
7
+ - ํ…Œ์ŠคํŠธ ๋ˆ„๋ฝ ํƒ์ง€
8
+ - ์—ฃ์ง€ ์ผ€์ด์Šค ์‹๋ณ„
9
+ - ํ…Œ์ŠคํŠธ ํ’ˆ์งˆ ํ‰๊ฐ€
10
+ - ๋ชจํ‚น ์ „๋žต ๊ฒ€ํ† 
11
+
12
+ ## Model
13
+
14
+ **Haiku** (inherit) - ๋น ๋ฅธ ๋ณ‘๋ ฌ ์‹คํ–‰
15
+
16
+ ## Checklist
17
+
18
+ ### Coverage Gaps
19
+ - [ ] ์ƒˆ ์ฝ”๋“œ์— ํ…Œ์ŠคํŠธ ์กด์žฌ?
20
+ - [ ] ๋ถ„๊ธฐ ์ปค๋ฒ„๋ฆฌ์ง€ ์ถฉ๋ถ„?
21
+ - [ ] ์—๋Ÿฌ ๊ฒฝ๋กœ ํ…Œ์ŠคํŠธ?
22
+ - [ ] ๊ฒฝ๊ณ„๊ฐ’ ํ…Œ์ŠคํŠธ?
23
+
24
+ ### Edge Cases
25
+ - [ ] null/undefined ์ฒ˜๋ฆฌ?
26
+ - [ ] ๋นˆ ๋ฐฐ์—ด/๊ฐ์ฒด?
27
+ - [ ] ์ตœ๋Œ€/์ตœ์†Œ๊ฐ’?
28
+ - [ ] ํŠน์ˆ˜ ๋ฌธ์ž?
29
+ - [ ] ๋™์‹œ์„ฑ ์‹œ๋‚˜๋ฆฌ์˜ค?
30
+
31
+ ### Test Quality
32
+ - [ ] ํ…Œ์ŠคํŠธ ๋…๋ฆฝ์„ฑ?
33
+ - [ ] ์˜๋ฏธ ์žˆ๋Š” ์–ด์„ค์…˜?
34
+ - [ ] ํ…Œ์ŠคํŠธ ์ด๋ฆ„ ๋ช…ํ™•?
35
+ - [ ] AAA ํŒจํ„ด (Arrange-Act-Assert)?
36
+
37
+ ### Mocking
38
+ - [ ] ์™ธ๋ถ€ ์˜์กด์„ฑ ๋ชจํ‚น?
39
+ - [ ] ๊ณผ๋„ํ•œ ๋ชจํ‚น ๊ธˆ์ง€?
40
+ - [ ] ๋ชจํ‚น ํ˜„์‹ค์„ฑ?
41
+ - [ ] ํ…Œ์ŠคํŠธ ๋”๋ธ” ์ ์ ˆ?
42
+
43
+ ### Integration
44
+ - [ ] ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์กด์žฌ?
45
+ - [ ] API ๊ณ„์•ฝ ํ…Œ์ŠคํŠธ?
46
+ - [ ] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ŠคํŠธ?
47
+ - [ ] E2E ์‹œ๋‚˜๋ฆฌ์˜ค?
48
+
49
+ ### Flakiness
50
+ - [ ] ์‹œ๊ฐ„ ์˜์กด์„ฑ?
51
+ - [ ] ๋žœ๋ค ๋ฐ์ดํ„ฐ?
52
+ - [ ] ์™ธ๋ถ€ ์„œ๋น„์Šค ์˜์กด?
53
+ - [ ] ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ?
54
+
55
+ ## Output Format
56
+
57
+ ```markdown
58
+ ## ๐Ÿงช Test Coverage Review
59
+
60
+ ### ๐Ÿ”ด P1 Critical
61
+ 1. **No Tests for New Feature**
62
+ - ๐Ÿ“ Location: src/services/payment.py
63
+ - ๐Ÿ“Š Coverage: 0% (new file)
64
+ - ๐Ÿ’ก Required tests:
65
+ - Happy path: successful payment
66
+ - Error: insufficient funds
67
+ - Error: invalid card
68
+ - Edge: concurrent payments
69
+
70
+ ### ๐ŸŸก P2 Important
71
+ 2. **Missing Edge Case Tests**
72
+ - ๐Ÿ“ Location: src/utils/validator.py:validate_email()
73
+ - Missing:
74
+ - Empty string input
75
+ - Unicode characters
76
+ - Maximum length
77
+
78
+ ### ๐Ÿ”ต P3 Suggestions
79
+ 3. **Consider Adding Integration Test**
80
+ - ๐Ÿ“ Feature: User registration flow
81
+ - ๐Ÿ’ก Full flow from signup to email verification
82
+ ```
83
+
84
+ ## Test Template Suggestions
85
+
86
+ ```python
87
+ # Suggested test structure
88
+ class TestPaymentService:
89
+ """Tests for PaymentService"""
90
+
91
+ def test_successful_payment(self):
92
+ """Happy path: valid payment processes correctly"""
93
+ pass
94
+
95
+ def test_insufficient_funds(self):
96
+ """Error case: insufficient funds returns error"""
97
+ pass
98
+
99
+ def test_invalid_card_number(self):
100
+ """Edge case: invalid card format rejected"""
101
+ pass
102
+
103
+ def test_concurrent_payments(self):
104
+ """Concurrency: multiple payments don't double-charge"""
105
+ pass
106
+ ```
107
+
108
+ ## Usage
109
+
110
+ ```
111
+ Task(
112
+ model: "haiku",
113
+ subagent_type: "Explore",
114
+ prompt: "Test coverage review for [files]. Find missing tests, edge cases."
115
+ )
116
+ ```