@h1dr0n/skill-pool 0.1.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.md +296 -0
- package/bin/cli.js +157 -0
- package/package.json +41 -0
- package/skills/api/agents/backend-specialist.md +69 -0
- package/skills/api/agents/database-optimizer.md +176 -0
- package/skills/api/manifest.yaml +20 -0
- package/skills/api/rules/auth-security.md +45 -0
- package/skills/api/skills/api-patterns/SKILL.md +81 -0
- package/skills/api/skills/api-patterns/api-style.md +42 -0
- package/skills/api/skills/api-patterns/auth.md +24 -0
- package/skills/api/skills/api-patterns/documentation.md +26 -0
- package/skills/api/skills/api-patterns/graphql.md +41 -0
- package/skills/api/skills/api-patterns/rate-limiting.md +31 -0
- package/skills/api/skills/api-patterns/response.md +37 -0
- package/skills/api/skills/api-patterns/rest.md +40 -0
- package/skills/api/skills/api-patterns/scripts/api_validator.py +211 -0
- package/skills/api/skills/api-patterns/security-testing.md +122 -0
- package/skills/api/skills/api-patterns/trpc.md +41 -0
- package/skills/api/skills/api-patterns/versioning.md +22 -0
- package/skills/api/skills/database-patterns.md +126 -0
- package/skills/api/skills/deployment-patterns.md +105 -0
- package/skills/api/skills/docker-patterns.md +135 -0
- package/skills/common/agents/code-reviewer.md +78 -0
- package/skills/common/agents/planner.md +80 -0
- package/skills/common/agents/security-reviewer.md +82 -0
- package/skills/common/agents/software-architect.md +81 -0
- package/skills/common/manifest.yaml +25 -0
- package/skills/common/rules/coding-style.md +39 -0
- package/skills/common/rules/git-workflow.md +33 -0
- package/skills/common/rules/security.md +25 -0
- package/skills/common/skills/architecture/SKILL.md +55 -0
- package/skills/common/skills/architecture/context-discovery.md +43 -0
- package/skills/common/skills/architecture/examples.md +94 -0
- package/skills/common/skills/architecture/pattern-selection.md +68 -0
- package/skills/common/skills/architecture/patterns-reference.md +50 -0
- package/skills/common/skills/architecture/trade-off-analysis.md +77 -0
- package/skills/common/skills/brainstorming/SKILL.md +163 -0
- package/skills/common/skills/brainstorming/dynamic-questioning.md +350 -0
- package/skills/common/skills/clean-code.md +99 -0
- package/skills/common/skills/code-review-checklist.md +86 -0
- package/skills/common/skills/plan-writing/SKILL.md +152 -0
- package/skills/common/skills/skill-feedback.md +94 -0
- package/skills/common/skills/tdd-workflow.md +130 -0
- package/skills/common/skills/verification-loop.md +112 -0
- package/skills/cpp/agents/cpp-build-resolver.md +90 -0
- package/skills/cpp/agents/cpp-reviewer.md +72 -0
- package/skills/cpp/manifest.yaml +15 -0
- package/skills/cpp/skills/cpp-coding-standards.md +722 -0
- package/skills/cpp/skills/cpp-testing.md +323 -0
- package/skills/devops/agents/devops-automator.md +376 -0
- package/skills/devops/agents/sre.md +90 -0
- package/skills/devops/manifest.yaml +20 -0
- package/skills/devops/skills/deployment-patterns.md +427 -0
- package/skills/devops/skills/deployment-procedures/SKILL.md +241 -0
- package/skills/devops/skills/docker-patterns.md +364 -0
- package/skills/devops/skills/e2e-testing.md +326 -0
- package/skills/devops/skills/github-ops.md +144 -0
- package/skills/django/manifest.yaml +16 -0
- package/skills/django/skills/django-patterns.md +734 -0
- package/skills/django/skills/django-security.md +593 -0
- package/skills/django/skills/django-tdd.md +729 -0
- package/skills/django/skills/django-verification.md +469 -0
- package/skills/dotnet/agents/csharp-reviewer.md +101 -0
- package/skills/dotnet/manifest.yaml +14 -0
- package/skills/dotnet/skills/csharp-testing.md +321 -0
- package/skills/dotnet/skills/dotnet-patterns.md +321 -0
- package/skills/go/agents/code-reviewer.md +76 -0
- package/skills/go/agents/go-build-resolver.md +94 -0
- package/skills/go/agents/go-reviewer.md +76 -0
- package/skills/go/manifest.yaml +17 -0
- package/skills/go/rules/go-style.md +55 -0
- package/skills/go/skills/golang-patterns.md +674 -0
- package/skills/go/skills/golang-testing.md +720 -0
- package/skills/java/agents/java-build-resolver.md +153 -0
- package/skills/java/agents/java-reviewer.md +92 -0
- package/skills/java/manifest.yaml +18 -0
- package/skills/java/skills/java-coding-standards.md +147 -0
- package/skills/java/skills/jpa-patterns.md +151 -0
- package/skills/java/skills/springboot-patterns.md +314 -0
- package/skills/java/skills/springboot-security.md +272 -0
- package/skills/kotlin/agents/kotlin-build-resolver.md +118 -0
- package/skills/kotlin/agents/kotlin-reviewer.md +159 -0
- package/skills/kotlin/manifest.yaml +17 -0
- package/skills/kotlin/skills/kotlin-coroutines-flows.md +284 -0
- package/skills/kotlin/skills/kotlin-patterns.md +711 -0
- package/skills/kotlin/skills/kotlin-testing.md +824 -0
- package/skills/laravel/manifest.yaml +15 -0
- package/skills/laravel/skills/laravel-patterns.md +409 -0
- package/skills/laravel/skills/laravel-security.md +279 -0
- package/skills/laravel/skills/laravel-tdd.md +277 -0
- package/skills/laravel/skills/laravel-verification.md +173 -0
- package/skills/mobile/agents/dart-build-resolver.md +201 -0
- package/skills/mobile/agents/flutter-reviewer.md +243 -0
- package/skills/mobile/manifest.yaml +19 -0
- package/skills/mobile/skills/android-clean-architecture.md +339 -0
- package/skills/mobile/skills/dart-flutter-patterns.md +563 -0
- package/skills/mobile/skills/swiftui-patterns.md +259 -0
- package/skills/nestjs/manifest.yaml +13 -0
- package/skills/nestjs/skills/nestjs-patterns.md +230 -0
- package/skills/perl/manifest.yaml +13 -0
- package/skills/perl/skills/perl-patterns.md +504 -0
- package/skills/perl/skills/perl-security.md +503 -0
- package/skills/perl/skills/perl-testing.md +475 -0
- package/skills/python/agents/python-reviewer.md +98 -0
- package/skills/python/manifest.yaml +18 -0
- package/skills/python/rules/python-style.md +69 -0
- package/skills/python/skills/python-patterns/SKILL.md +441 -0
- package/skills/python/skills/python-patterns.md +90 -0
- package/skills/python/skills/python-testing.md +81 -0
- package/skills/rust/agents/rust-build-resolver.md +148 -0
- package/skills/rust/agents/rust-reviewer.md +94 -0
- package/skills/rust/manifest.yaml +16 -0
- package/skills/rust/rules/rust-style.md +107 -0
- package/skills/rust/skills/rust-patterns.md +499 -0
- package/skills/rust/skills/rust-testing.md +500 -0
- package/skills/security/agents/accessibility-auditor.md +316 -0
- package/skills/security/agents/security-reviewer.md +108 -0
- package/skills/security/manifest.yaml +19 -0
- package/skills/security/skills/red-team-tactics/SKILL.md +199 -0
- package/skills/security/skills/security-bounty-hunter.md +99 -0
- package/skills/security/skills/security-review.md +495 -0
- package/skills/security/skills/security-scan.md +165 -0
- package/skills/security/skills/vulnerability-scanner/SKILL.md +276 -0
- package/skills/security/skills/vulnerability-scanner/checklists.md +121 -0
- package/skills/security/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/skills/swift/manifest.yaml +16 -0
- package/skills/swift/skills/swift-actor-persistence.md +142 -0
- package/skills/swift/skills/swift-concurrency.md +216 -0
- package/skills/swift/skills/swift-protocol-di-testing.md +190 -0
- package/skills/swift/skills/swiftui-patterns.md +259 -0
- package/skills/unity/agents/game-designer.md +167 -0
- package/skills/unity/agents/unity-architect.md +52 -0
- package/skills/unity/agents/unity-editor-tool-developer.md +310 -0
- package/skills/unity/agents/unity-multiplayer-engineer.md +321 -0
- package/skills/unity/agents/unity-shader-graph-artist.md +269 -0
- package/skills/unity/manifest.yaml +21 -0
- package/skills/unity/rules/csharp-patterns.md +48 -0
- package/skills/unity/rules/unity-specific.md +53 -0
- package/skills/unity/skills/systematic-debugging.md +92 -0
- package/skills/unity/skills/unity-architecture.md +173 -0
- package/skills/unreal/agents/level-designer.md +208 -0
- package/skills/unreal/agents/technical-artist.md +229 -0
- package/skills/unreal/agents/unreal-multiplayer-architect.md +313 -0
- package/skills/unreal/agents/unreal-systems-engineer.md +310 -0
- package/skills/unreal/agents/unreal-technical-artist.md +256 -0
- package/skills/unreal/agents/unreal-world-builder.md +273 -0
- package/skills/unreal/manifest.yaml +21 -0
- package/skills/unreal/skills/unreal-patterns.md +183 -0
- package/skills/web/agents/frontend-specialist.md +71 -0
- package/skills/web/agents/ui-designer.md +383 -0
- package/skills/web/agents/ux-architect.md +469 -0
- package/skills/web/manifest.yaml +22 -0
- package/skills/web/rules/accessibility.md +54 -0
- package/skills/web/rules/css-performance.md +52 -0
- package/skills/web/skills/e2e-testing.md +132 -0
- package/skills/web/skills/frontend-design/SKILL.md +452 -0
- package/skills/web/skills/frontend-design/animation-guide.md +331 -0
- package/skills/web/skills/frontend-design/color-system.md +311 -0
- package/skills/web/skills/frontend-design/decision-trees.md +418 -0
- package/skills/web/skills/frontend-design/motion-graphics.md +306 -0
- package/skills/web/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/skills/web/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/skills/web/skills/frontend-design/typography-system.md +345 -0
- package/skills/web/skills/frontend-design/ux-psychology.md +1116 -0
- package/skills/web/skills/frontend-design/visual-effects.md +383 -0
- package/skills/web/skills/react-nextjs.md +135 -0
- package/skills/web/skills/tailwind-patterns/SKILL.md +269 -0
- package/src/adapters/antigravity.js +164 -0
- package/src/adapters/claude.js +188 -0
- package/src/adapters/cursor.js +161 -0
- package/src/adapters/index.js +67 -0
- package/src/adapters/windsurf.js +158 -0
- package/src/commands/add.js +266 -0
- package/src/commands/create.js +127 -0
- package/src/commands/diff.js +78 -0
- package/src/commands/info.js +88 -0
- package/src/commands/init.js +224 -0
- package/src/commands/install.js +90 -0
- package/src/commands/list.js +54 -0
- package/src/commands/remove.js +101 -0
- package/src/commands/targets.js +32 -0
- package/src/commands/update.js +57 -0
- package/src/core/manifest.js +57 -0
- package/src/core/plugins.js +86 -0
- package/src/core/resolver.js +84 -0
- package/src/core/tracker.js +49 -0
- package/src/utils/fs.js +80 -0
- package/src/utils/git.js +52 -0
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# Dynamic Question Generation
|
|
2
|
+
|
|
3
|
+
> **PRINCIPLE:** Questions are not about gathering data—they are about **revealing architectural consequences**.
|
|
4
|
+
>
|
|
5
|
+
> Every question must connect to a concrete implementation decision that affects cost, complexity, or timeline.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🧠 Core Principles
|
|
10
|
+
|
|
11
|
+
### 1. Questions Reveal Consequences
|
|
12
|
+
|
|
13
|
+
A good question is not "What color do you want?" but:
|
|
14
|
+
|
|
15
|
+
```markdown
|
|
16
|
+
❌ BAD: "What authentication method?"
|
|
17
|
+
✅ GOOD: "Should users sign up with email/password or social login?
|
|
18
|
+
|
|
19
|
+
Impact:
|
|
20
|
+
- Email/Pass → Need password reset, hashing, 2FA infrastructure
|
|
21
|
+
- Social → OAuth providers, user profile mapping, less control
|
|
22
|
+
|
|
23
|
+
Trade-off: Security vs. Development time vs. User friction"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 2. Context Before Content
|
|
27
|
+
|
|
28
|
+
First understand **where** this request fits:
|
|
29
|
+
|
|
30
|
+
| Context | Question Focus |
|
|
31
|
+
|---------|----------------|
|
|
32
|
+
| **Greenfield** (new project) | Foundation decisions: stack, hosting, scale |
|
|
33
|
+
| **Feature Addition** | Integration points, existing patterns, breaking changes |
|
|
34
|
+
| **Refactor** | Why refactor? Performance? Maintainability? What's broken? |
|
|
35
|
+
| **Debug** | Symptoms → Root cause → Reproduction path |
|
|
36
|
+
|
|
37
|
+
### 3. Minimum Viable Questions
|
|
38
|
+
|
|
39
|
+
**PRINCIPLE:** Each question must eliminate a fork in the implementation road.
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Before Question:
|
|
43
|
+
├── Path A: Do X (5 min)
|
|
44
|
+
├── Path B: Do Y (15 min)
|
|
45
|
+
└── Path C: Do Z (1 hour)
|
|
46
|
+
|
|
47
|
+
After Question:
|
|
48
|
+
└── Path Confirmed: Do X (5 min)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
If a question doesn't reduce implementation paths → **DELETE IT**.
|
|
52
|
+
|
|
53
|
+
### 4. Questions Generate Data, Not Assumptions
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
❌ ASSUMPTION: "User probably wants Stripe for payments"
|
|
57
|
+
✅ QUESTION: "Which payment provider fits your needs?
|
|
58
|
+
|
|
59
|
+
Stripe → Best documentation, 2.9% + $0.30, US-centric
|
|
60
|
+
LemonSqueezy → Merchant of Record, 5% + $0.50, global taxes
|
|
61
|
+
Paddle → Complex pricing, handles EU VAT, enterprise focus"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 📋 Question Generation Algorithm
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
INPUT: User request + Context (greenfield/feature/refactor/debug)
|
|
70
|
+
│
|
|
71
|
+
├── STEP 1: Parse Request
|
|
72
|
+
│ ├── Extract domain (ecommerce, auth, realtime, cms, etc.)
|
|
73
|
+
│ ├── Extract features (explicit and implied)
|
|
74
|
+
│ └── Extract scale indicators (users, data volume, frequency)
|
|
75
|
+
│
|
|
76
|
+
├── STEP 2: Identify Decision Points
|
|
77
|
+
│ ├── What MUST be decided before coding? (blocking)
|
|
78
|
+
│ ├── What COULD be decided later? (deferable)
|
|
79
|
+
│ └── What has ARCHITECTURAL impact? (high-leverage)
|
|
80
|
+
│
|
|
81
|
+
├── STEP 3: Generate Questions (Priority Order)
|
|
82
|
+
│ ├── P0: Blocking decisions (cannot proceed without answer)
|
|
83
|
+
│ ├── P1: High-leverage (affects >30% of implementation)
|
|
84
|
+
│ ├── P2: Medium-leverage (affects specific features)
|
|
85
|
+
│ └── P3: Nice-to-have (edge cases, optimization)
|
|
86
|
+
│
|
|
87
|
+
└── STEP 4: Format Each Question
|
|
88
|
+
├── What: Clear question
|
|
89
|
+
├── Why: Impact on implementation
|
|
90
|
+
├── Options: Trade-offs (not just A vs B)
|
|
91
|
+
└── Default: What happens if user doesn't answer
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 🎯 Domain-Specific Question Banks
|
|
97
|
+
|
|
98
|
+
### E-Commerce
|
|
99
|
+
|
|
100
|
+
| Question | Why It Matters | Trade-offs |
|
|
101
|
+
|----------|----------------|------------|
|
|
102
|
+
| **Single or Multi-vendor?** | Multi-vendor → Commission logic, vendor dashboards, split payments | +Revenue, -Complexity |
|
|
103
|
+
| **Inventory Tracking?** | Needs stock tables, reservation logic, low-stock alerts | +Accuracy, -Development time |
|
|
104
|
+
| **Digital or Physical Products?** | Digital → Download links, no shipping | Physical → Shipping APIs, tracking |
|
|
105
|
+
| **Subscription or One-time?** | Subscription → Recurring billing, dunning, proration | +Revenue, -Complexity |
|
|
106
|
+
|
|
107
|
+
### Authentication
|
|
108
|
+
|
|
109
|
+
| Question | Why It Matters | Trade-offs |
|
|
110
|
+
|----------|----------------|------------|
|
|
111
|
+
| **Social Login Needed?** | OAuth providers vs. password reset infrastructure | +UX, -Control |
|
|
112
|
+
| **Role-Based Permissions?** | RBAC tables, policy enforcement, admin UI | +Security, -Development time |
|
|
113
|
+
| **2FA Required?** | TOTP/SMI infrastructure, backup codes, recovery flow | +Security, -UX friction |
|
|
114
|
+
| **Email Verification?** | Verification tokens, email service, resend logic | +Security, -Sign-up friction |
|
|
115
|
+
|
|
116
|
+
### Real-time
|
|
117
|
+
|
|
118
|
+
| Question | Why It Matters | Trade-offs |
|
|
119
|
+
|----------|----------------|------------|
|
|
120
|
+
| **WebSocket or Polling?** | WS → Server scaling, connection management | Polling → Simpler, higher latency |
|
|
121
|
+
| **Expected Concurrent Users?** | <100 → Single server, >1000 → Redis pub/sub, >10k → specialized infra | +Scale, -Complexity |
|
|
122
|
+
| **Message Persistence?** | History tables, storage costs, pagination | +UX, -Storage |
|
|
123
|
+
| **Ephemeral or Durable?** | Ephemeral → In-memory, Durable → Database write before emit | +Reliability, -Latency |
|
|
124
|
+
|
|
125
|
+
### Content/CMS
|
|
126
|
+
|
|
127
|
+
| Question | Why It Matters | Trade-offs |
|
|
128
|
+
|----------|----------------|------------|
|
|
129
|
+
| **Rich Text or Markdown?** | Rich Text → Sanitization, XSS risks | Markdown → Simple, no WYSIWYG |
|
|
130
|
+
| **Draft/Publish Workflow?** | Status field, scheduled jobs, versioning | +Control, -Complexity |
|
|
131
|
+
| **Media Handling?** | Upload endpoints, storage, optimization | +Features, -Development time |
|
|
132
|
+
| **Multi-language?** | i18n tables, translation UI, fallback logic | +Reach, -Complexity |
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 📐 Dynamic Question Template
|
|
137
|
+
|
|
138
|
+
```markdown
|
|
139
|
+
Based on your request for [DOMAIN] [FEATURE]:
|
|
140
|
+
|
|
141
|
+
## 🔴 CRITICAL (Blocking Decisions)
|
|
142
|
+
|
|
143
|
+
### 1. **[DECISION POINT]**
|
|
144
|
+
|
|
145
|
+
**Question:** [Clear, specific question]
|
|
146
|
+
|
|
147
|
+
**Why This Matters:**
|
|
148
|
+
- [Explain architectural consequence]
|
|
149
|
+
- [Affects: cost / complexity / timeline / scale]
|
|
150
|
+
|
|
151
|
+
**Options:**
|
|
152
|
+
| Option | Pros | Cons | Best For |
|
|
153
|
+
|--------|------|------|----------|
|
|
154
|
+
| A | [Advantage] | [Disadvantage] | [Use case] |
|
|
155
|
+
| B | [Advantage] | [Disadvantage] | [Use case] |
|
|
156
|
+
|
|
157
|
+
**If Not Specified:** [Default choice + rationale]
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 🟡 HIGH-LEVERAGE (Affects Implementation)
|
|
162
|
+
|
|
163
|
+
### 2. **[DECISION POINT]**
|
|
164
|
+
[Same format]
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## 🟢 NICE-TO-HAVE (Edge Cases)
|
|
169
|
+
|
|
170
|
+
### 3. **[DECISION POINT]**
|
|
171
|
+
[Same format]
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 🔄 Iterative Questioning
|
|
177
|
+
|
|
178
|
+
### First Pass (3-5 Questions)
|
|
179
|
+
Focus on **blocking decisions**. Don't proceed without answers.
|
|
180
|
+
|
|
181
|
+
### Second Pass (After Initial Implementation)
|
|
182
|
+
As patterns emerge, ask:
|
|
183
|
+
- "This feature implies [X]. Should we handle [edge case] now or defer?"
|
|
184
|
+
- "We're using [Pattern A]. Should [Feature B] follow the same pattern?"
|
|
185
|
+
|
|
186
|
+
### Third Pass (Optimization)
|
|
187
|
+
When functionality works:
|
|
188
|
+
- "Performance bottleneck at [X]. Optimize now or acceptable for now?"
|
|
189
|
+
- "Refactor [Y] for maintainability or ship as-is?"
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 🎭 Example: Full Question Generation
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
USER REQUEST: "Build an Instagram clone"
|
|
197
|
+
|
|
198
|
+
STEP 1: Parse
|
|
199
|
+
├── Domain: Social Media
|
|
200
|
+
├── Features: Photo sharing, engagement (likes/comments), user profiles
|
|
201
|
+
├── Implied: Feed, following, authentication
|
|
202
|
+
└── Scale: Potentially high (social apps go viral)
|
|
203
|
+
|
|
204
|
+
STEP 2: Decision Points
|
|
205
|
+
├── Blocking: Storage strategy, authentication method, feed type
|
|
206
|
+
├── High-leverage: Real-time notifications, data model complexity
|
|
207
|
+
└── Deferable: Analytics, advanced search, reels/video
|
|
208
|
+
|
|
209
|
+
STEP 3: Generate Questions (Priority)
|
|
210
|
+
|
|
211
|
+
P0 (Blocking):
|
|
212
|
+
1. Storage Strategy → Affects architecture, cost, speed
|
|
213
|
+
2. Feed Algorithm → Affects database queries, complexity
|
|
214
|
+
3. Auth Method → Affects dev time, UX, security
|
|
215
|
+
|
|
216
|
+
P1 (High-leverage):
|
|
217
|
+
4. Real-time Notifications → WebSocket vs polling
|
|
218
|
+
5. Media Processing → Client-side vs server-side optimization
|
|
219
|
+
|
|
220
|
+
P2 (Deferable):
|
|
221
|
+
6. Story/Reels → Major feature creep, defer to v2
|
|
222
|
+
7. DM/Chat → Separate subsystem, defer to v2
|
|
223
|
+
|
|
224
|
+
STEP 4: Format Output
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## 📊 Generated Output (Example)
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
Based on your Instagram clone request:
|
|
233
|
+
|
|
234
|
+
## 🔴 CRITICAL DECISIONS (Cannot Proceed Without Answers)
|
|
235
|
+
|
|
236
|
+
### 1. **Photo Storage Strategy**
|
|
237
|
+
|
|
238
|
+
**Question:** Where will user photos be stored and served?
|
|
239
|
+
|
|
240
|
+
**Why This Matters:**
|
|
241
|
+
- Affects: Monthly hosting costs, page load speed, CDN complexity
|
|
242
|
+
- High-volume social apps: 1000 users × 10 photos × 2MB = 20GB storage
|
|
243
|
+
|
|
244
|
+
**Options:**
|
|
245
|
+
| Option | Cost | Speed | Complexity | Best For |
|
|
246
|
+
|--------|------|-------|------------|----------|
|
|
247
|
+
| **Cloudinary** | $89/mo (25GB) | Fast (CDN) | Low | MVP, rapid launch |
|
|
248
|
+
| **AWS S3 + CloudFront** | $0.023/GB | Fast (CDN) | Medium | Production, cost-optimized |
|
|
249
|
+
| **Supabase Storage** | Free tier 1GB | Medium | Low | Small scale, simple |
|
|
250
|
+
| **Local Storage** | Server cost | Slow | Low | Development only |
|
|
251
|
+
|
|
252
|
+
**If Not Specified:** Cloudinary (balanced for MVP)
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
### 2. **Feed Algorithm Choice**
|
|
257
|
+
|
|
258
|
+
**Question:** How should the main feed work?
|
|
259
|
+
|
|
260
|
+
**Why This Matters:**
|
|
261
|
+
- Affects: Database query complexity, caching strategy, development time
|
|
262
|
+
- Algorithmic feeds require ML infrastructure, ranking signals
|
|
263
|
+
|
|
264
|
+
**Options:**
|
|
265
|
+
| Option | Complexity | Database Impact | Best For |
|
|
266
|
+
|--------|------------|-----------------|----------|
|
|
267
|
+
| **Chronological** | Low | Simple query | Early stage, transparency |
|
|
268
|
+
| **Follow-Only** | Medium | JOIN with pagination | Most social apps |
|
|
269
|
+
| **Algorithmic** | High | Pre-computed feed tables | Instagram competitor |
|
|
270
|
+
|
|
271
|
+
**If Not Specified:** Follow-Only (balanced for social app)
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
### 3. **Authentication Approach**
|
|
276
|
+
|
|
277
|
+
**Question:** How do users sign up and login?
|
|
278
|
+
|
|
279
|
+
**Why This Matters:**
|
|
280
|
+
- Affects: Development time (2-5 hours), security posture, UX friction
|
|
281
|
+
|
|
282
|
+
**Options:**
|
|
283
|
+
| Option | Dev Time | Security | UX | Best For |
|
|
284
|
+
|--------|----------|----------|-----|----------|
|
|
285
|
+
| **Email/Password** | 4-5 hrs | High (if 2FA) | Medium | Full control needed |
|
|
286
|
+
| **Social Only** | 1-2 hrs | Provider-dependent | Smooth | B2C, rapid launch |
|
|
287
|
+
| **Magic Link** | 2-3 hrs | Medium | Very smooth | Security-focused |
|
|
288
|
+
| **Clerk/Auth0** | 1 hr | High | Smooth | Fastest to market |
|
|
289
|
+
|
|
290
|
+
**If Not Specified:** Clerk (fastest for MVP)
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## 🟡 HIGH-LEVERAGE (Affects Architecture)
|
|
295
|
+
|
|
296
|
+
### 4. **Real-time Notifications**
|
|
297
|
+
|
|
298
|
+
**Question:** Do users need instant notifications for likes/comments?
|
|
299
|
+
|
|
300
|
+
**Why This Matters:**
|
|
301
|
+
- WebSocket adds infrastructure complexity (Redis pub/sub for scaling)
|
|
302
|
+
- Polling is simpler but higher latency
|
|
303
|
+
|
|
304
|
+
**Options:**
|
|
305
|
+
| Option | Complexity | Scale Cost | Best For |
|
|
306
|
+
|--------|------------|------------|----------|
|
|
307
|
+
| **WebSocket + Redis** | High | $10+/mo | >1000 concurrent users |
|
|
308
|
+
| **Polling (30s)** | Low | DB queries | <1000 users |
|
|
309
|
+
| **No Real-time** | None | None | MVP, validate first |
|
|
310
|
+
|
|
311
|
+
**If Not Specified:** Polling for MVP (defer WebSocket until validated)
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## 🟢 NICE-TO-HAVE (Defer to v2)
|
|
316
|
+
|
|
317
|
+
### 5. **Video/Reels Support**
|
|
318
|
+
- Major complexity (video processing, streaming infrastructure)
|
|
319
|
+
- Recommendation: Launch with photos only, add video after validation
|
|
320
|
+
|
|
321
|
+
### 6. **Direct Messaging**
|
|
322
|
+
- Separate subsystem (chat infrastructure different from feed)
|
|
323
|
+
- Recommendation: Use Pusher/Stream for real-time or defer entirely
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## 📋 Summary
|
|
328
|
+
|
|
329
|
+
| Decision | Recommendation | If Changed |
|
|
330
|
+
|----------|----------------|------------|
|
|
331
|
+
| Storage | Cloudinary | +3 hrs setup |
|
|
332
|
+
| Feed | Follow-only | +2 hrs query optimization |
|
|
333
|
+
| Auth | Clerk | -3 hrs dev time |
|
|
334
|
+
| Real-time | Polling | +5 hrs WebSocket setup |
|
|
335
|
+
| Video | Defer to v2 | N/A |
|
|
336
|
+
| DM | Defer to v2 | N/A |
|
|
337
|
+
|
|
338
|
+
**Total Estimated MVP Time:** 15-20 hours with recommendations above
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## 🎯 Principles Recap
|
|
344
|
+
|
|
345
|
+
1. **Every question = Architectural decision** → Not data gathering
|
|
346
|
+
2. **Show trade-offs** → User understands consequences
|
|
347
|
+
3. **Prioritize blocking decisions** → Cannot proceed without
|
|
348
|
+
4. **Provide defaults** → If user doesn't answer, we proceed anyway
|
|
349
|
+
5. **Domain-aware** → Ecommerce questions ≠ Auth questions ≠ Real-time questions
|
|
350
|
+
6. **Iterative** → More questions as patterns emerge during implementation
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clean-code
|
|
3
|
+
description: Pragmatic coding standards - SRP, DRY, KISS, YAGNI, naming, function design, code structure. Use as general coding guidance.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Clean Code
|
|
7
|
+
|
|
8
|
+
## When to Activate
|
|
9
|
+
- Writing new code
|
|
10
|
+
- Refactoring existing code
|
|
11
|
+
- Reviewing code quality
|
|
12
|
+
- Onboarding to coding standards
|
|
13
|
+
|
|
14
|
+
## Core Principles
|
|
15
|
+
|
|
16
|
+
| Principle | Meaning | Application |
|
|
17
|
+
|-----------|---------|-------------|
|
|
18
|
+
| **SRP** | Single Responsibility | One reason to change per module |
|
|
19
|
+
| **DRY** | Don't Repeat Yourself | Extract when repetition is real (3+) |
|
|
20
|
+
| **KISS** | Keep It Simple | Simplest solution that works |
|
|
21
|
+
| **YAGNI** | You Aren't Gonna Need It | Don't build for hypothetical futures |
|
|
22
|
+
| **Boy Scout** | Leave it better | Small improvements on each touch |
|
|
23
|
+
|
|
24
|
+
## Naming
|
|
25
|
+
|
|
26
|
+
### Rules
|
|
27
|
+
- Names reveal intent: `getUserById` not `getData`
|
|
28
|
+
- Booleans: `isActive`, `hasPermission`, `canDelete`
|
|
29
|
+
- Functions: verb + noun: `calculateTotal`, `validateEmail`
|
|
30
|
+
- Avoid abbreviations unless universally known (URL, HTTP, ID)
|
|
31
|
+
- Searchable names: `MAX_RETRY_COUNT` not `3`
|
|
32
|
+
|
|
33
|
+
### Anti-patterns
|
|
34
|
+
| Bad | Good | Why |
|
|
35
|
+
|-----|------|-----|
|
|
36
|
+
| `data` | `userProfile` | What data? |
|
|
37
|
+
| `temp` | `swapBuffer` | Purpose unclear |
|
|
38
|
+
| `flag` | `isEnabled` | What flag? |
|
|
39
|
+
| `process()` | `validateAndSave()` | What process? |
|
|
40
|
+
| `x, y` (outside math) | `width, height` | Context lost |
|
|
41
|
+
|
|
42
|
+
## Function Design
|
|
43
|
+
|
|
44
|
+
### Rules
|
|
45
|
+
- **Small**: < 50 lines, ideally < 20
|
|
46
|
+
- **Focused**: Does one thing well
|
|
47
|
+
- **Few arguments**: 0-3 parameters, use objects for more
|
|
48
|
+
- **No side effects**: Or name them clearly (`saveAndNotify`)
|
|
49
|
+
- **Return early**: Guard clauses at the top
|
|
50
|
+
|
|
51
|
+
### Pattern: Guard Clauses
|
|
52
|
+
```
|
|
53
|
+
// BAD: Deep nesting
|
|
54
|
+
function process(user) {
|
|
55
|
+
if (user) {
|
|
56
|
+
if (user.isActive) {
|
|
57
|
+
if (user.hasPermission) {
|
|
58
|
+
// actual logic buried here
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// GOOD: Early returns
|
|
65
|
+
function process(user) {
|
|
66
|
+
if (!user) return;
|
|
67
|
+
if (!user.isActive) return;
|
|
68
|
+
if (!user.hasPermission) return;
|
|
69
|
+
// actual logic at top level
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Code Structure
|
|
74
|
+
|
|
75
|
+
### Composition Over Inheritance
|
|
76
|
+
- Prefer small, composable functions
|
|
77
|
+
- Use dependency injection for flexibility
|
|
78
|
+
- Avoid deep inheritance hierarchies
|
|
79
|
+
|
|
80
|
+
### Immutability
|
|
81
|
+
- Create new objects instead of mutating
|
|
82
|
+
- Use spread/destructuring for updates
|
|
83
|
+
- Const by default, let only when needed
|
|
84
|
+
|
|
85
|
+
### Error Handling
|
|
86
|
+
- Handle errors explicitly, never silently swallow
|
|
87
|
+
- Use specific exception types
|
|
88
|
+
- Fail fast with clear messages
|
|
89
|
+
- Log context, not just the error message
|
|
90
|
+
|
|
91
|
+
## Self-Check Before Completing
|
|
92
|
+
|
|
93
|
+
- [ ] Can I explain each function in one sentence?
|
|
94
|
+
- [ ] Are there any functions > 50 lines?
|
|
95
|
+
- [ ] Are there any files > 800 lines?
|
|
96
|
+
- [ ] Is there any copy-pasted code?
|
|
97
|
+
- [ ] Would a new team member understand this?
|
|
98
|
+
- [ ] Are error cases handled?
|
|
99
|
+
- [ ] Are there any magic numbers/strings?
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review-checklist
|
|
3
|
+
description: Structured code review process - correctness, security, performance, quality, testing. Use when reviewing code changes or PRs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Code Review Checklist
|
|
7
|
+
|
|
8
|
+
## When to Activate
|
|
9
|
+
- Reviewing pull requests
|
|
10
|
+
- After writing or modifying code
|
|
11
|
+
- Before merging to shared branches
|
|
12
|
+
- When security-sensitive code changes
|
|
13
|
+
|
|
14
|
+
## Review Priority Order
|
|
15
|
+
|
|
16
|
+
### 1. Correctness (Blocker)
|
|
17
|
+
- [ ] Logic handles all edge cases (null, empty, boundary values)
|
|
18
|
+
- [ ] Error paths are handled explicitly
|
|
19
|
+
- [ ] No off-by-one errors
|
|
20
|
+
- [ ] Race conditions considered in async code
|
|
21
|
+
- [ ] State mutations are intentional and tracked
|
|
22
|
+
|
|
23
|
+
### 2. Security (Blocker)
|
|
24
|
+
- [ ] No hardcoded secrets (API keys, passwords, tokens)
|
|
25
|
+
- [ ] User input validated and sanitized
|
|
26
|
+
- [ ] No SQL injection (parameterized queries used)
|
|
27
|
+
- [ ] No XSS (output properly escaped)
|
|
28
|
+
- [ ] No path traversal (file paths sanitized)
|
|
29
|
+
- [ ] Auth checks present on protected routes
|
|
30
|
+
- [ ] Sensitive data not logged or exposed in errors
|
|
31
|
+
|
|
32
|
+
### 3. Performance (Warning)
|
|
33
|
+
- [ ] No N+1 queries (use JOINs or batching)
|
|
34
|
+
- [ ] No unbounded queries (LIMIT applied)
|
|
35
|
+
- [ ] Expensive operations cached where appropriate
|
|
36
|
+
- [ ] No unnecessary re-renders (React) or recomputations
|
|
37
|
+
- [ ] Large data sets paginated
|
|
38
|
+
|
|
39
|
+
### 4. Code Quality (Info)
|
|
40
|
+
- [ ] Functions < 50 lines, files < 800 lines
|
|
41
|
+
- [ ] Naming is clear and descriptive
|
|
42
|
+
- [ ] No deep nesting (> 4 levels)
|
|
43
|
+
- [ ] DRY - no copy-paste duplication
|
|
44
|
+
- [ ] Single responsibility per function/class
|
|
45
|
+
- [ ] No dead code or commented-out blocks
|
|
46
|
+
|
|
47
|
+
### 5. Testing (Warning)
|
|
48
|
+
- [ ] New functionality has tests
|
|
49
|
+
- [ ] Edge cases covered
|
|
50
|
+
- [ ] Tests are behavioral, not implementation-coupled
|
|
51
|
+
- [ ] Coverage >= 80%
|
|
52
|
+
- [ ] No flaky tests introduced
|
|
53
|
+
|
|
54
|
+
## Severity Levels
|
|
55
|
+
|
|
56
|
+
| Level | Meaning | Action |
|
|
57
|
+
|-------|---------|--------|
|
|
58
|
+
| CRITICAL | Security vulnerability or data loss | **Block** - Must fix |
|
|
59
|
+
| HIGH | Bug or significant quality issue | **Warn** - Should fix |
|
|
60
|
+
| MEDIUM | Maintainability concern | **Info** - Consider fixing |
|
|
61
|
+
| LOW | Style or minor suggestion | **Note** - Optional |
|
|
62
|
+
|
|
63
|
+
## Review Comment Format
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
**[SEVERITY]** Brief description
|
|
67
|
+
|
|
68
|
+
**Problem:** What's wrong and why it matters
|
|
69
|
+
**Suggestion:** How to fix it
|
|
70
|
+
**Example:** Code showing the fix (if helpful)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## AI-Specific Review Checks
|
|
74
|
+
- [ ] No hallucinated imports or APIs
|
|
75
|
+
- [ ] Generated code actually compiles/runs
|
|
76
|
+
- [ ] No over-engineered abstractions for simple problems
|
|
77
|
+
- [ ] Error handling is real, not placeholder
|
|
78
|
+
- [ ] Tests actually test behavior, not just exist
|
|
79
|
+
|
|
80
|
+
## Verdict
|
|
81
|
+
|
|
82
|
+
| Verdict | Criteria |
|
|
83
|
+
|---------|----------|
|
|
84
|
+
| **Approve** | No CRITICAL or HIGH issues |
|
|
85
|
+
| **Warning** | Only HIGH issues (merge with caution) |
|
|
86
|
+
| **Block** | CRITICAL issues found |
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-writing
|
|
3
|
+
description: Structured task planning with clear breakdowns, dependencies, and verification criteria. Use when implementing features, refactoring, or any multi-step work.
|
|
4
|
+
allowed-tools: Read, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plan Writing
|
|
8
|
+
|
|
9
|
+
> Source: obra/superpowers
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
This skill provides a framework for breaking down work into clear, actionable tasks with verification criteria.
|
|
13
|
+
|
|
14
|
+
## Task Breakdown Principles
|
|
15
|
+
|
|
16
|
+
### 1. Small, Focused Tasks
|
|
17
|
+
- Each task should take 2-5 minutes
|
|
18
|
+
- One clear outcome per task
|
|
19
|
+
- Independently verifiable
|
|
20
|
+
|
|
21
|
+
### 2. Clear Verification
|
|
22
|
+
- How do you know it's done?
|
|
23
|
+
- What can you check/test?
|
|
24
|
+
- What's the expected output?
|
|
25
|
+
|
|
26
|
+
### 3. Logical Ordering
|
|
27
|
+
- Dependencies identified
|
|
28
|
+
- Parallel work where possible
|
|
29
|
+
- Critical path highlighted
|
|
30
|
+
- **Phase X: Verification is always LAST**
|
|
31
|
+
|
|
32
|
+
### 4. Dynamic Naming in Project Root
|
|
33
|
+
- Plan files are saved as `{task-slug}.md` in the PROJECT ROOT
|
|
34
|
+
- Name derived from task (e.g., "add auth" → `auth-feature.md`)
|
|
35
|
+
- **NEVER** inside `.claude/`, `docs/`, or temp folders
|
|
36
|
+
|
|
37
|
+
## Planning Principles (NOT Templates!)
|
|
38
|
+
|
|
39
|
+
> 🔴 **NO fixed templates. Each plan is UNIQUE to the task.**
|
|
40
|
+
|
|
41
|
+
### Principle 1: Keep It SHORT
|
|
42
|
+
|
|
43
|
+
| ❌ Wrong | ✅ Right |
|
|
44
|
+
|----------|----------|
|
|
45
|
+
| 50 tasks with sub-sub-tasks | 5-10 clear tasks max |
|
|
46
|
+
| Every micro-step listed | Only actionable items |
|
|
47
|
+
| Verbose descriptions | One-line per task |
|
|
48
|
+
|
|
49
|
+
> **Rule:** If plan is longer than 1 page, it's too long. Simplify.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### Principle 2: Be SPECIFIC, Not Generic
|
|
54
|
+
|
|
55
|
+
| ❌ Wrong | ✅ Right |
|
|
56
|
+
|----------|----------|
|
|
57
|
+
| "Set up project" | "Run `npx create-next-app`" |
|
|
58
|
+
| "Add authentication" | "Install next-auth, create `/api/auth/[...nextauth].ts`" |
|
|
59
|
+
| "Style the UI" | "Add Tailwind classes to `Header.tsx`" |
|
|
60
|
+
|
|
61
|
+
> **Rule:** Each task should have a clear, verifiable outcome.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
### Principle 3: Dynamic Content Based on Project Type
|
|
66
|
+
|
|
67
|
+
**For NEW PROJECT:**
|
|
68
|
+
- What tech stack? (decide first)
|
|
69
|
+
- What's the MVP? (minimal features)
|
|
70
|
+
- What's the file structure?
|
|
71
|
+
|
|
72
|
+
**For FEATURE ADDITION:**
|
|
73
|
+
- Which files are affected?
|
|
74
|
+
- What dependencies needed?
|
|
75
|
+
- How to verify it works?
|
|
76
|
+
|
|
77
|
+
**For BUG FIX:**
|
|
78
|
+
- What's the root cause?
|
|
79
|
+
- What file/line to change?
|
|
80
|
+
- How to test the fix?
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
### Principle 4: Scripts Are Project-Specific
|
|
85
|
+
|
|
86
|
+
> 🔴 **DO NOT copy-paste script commands. Choose based on project type.**
|
|
87
|
+
|
|
88
|
+
| Project Type | Relevant Scripts |
|
|
89
|
+
|--------------|------------------|
|
|
90
|
+
| Frontend/React | `ux_audit.py`, `accessibility_checker.py` |
|
|
91
|
+
| Backend/API | `api_validator.py`, `security_scan.py` |
|
|
92
|
+
| Mobile | `mobile_audit.py` |
|
|
93
|
+
| Database | `schema_validator.py` |
|
|
94
|
+
| Full-stack | Mix of above based on what you touched |
|
|
95
|
+
|
|
96
|
+
**Wrong:** Adding all scripts to every plan
|
|
97
|
+
**Right:** Only scripts relevant to THIS task
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
### Principle 5: Verification is Simple
|
|
102
|
+
|
|
103
|
+
| ❌ Wrong | ✅ Right |
|
|
104
|
+
|----------|----------|
|
|
105
|
+
| "Verify the component works correctly" | "Run `npm run dev`, click button, see toast" |
|
|
106
|
+
| "Test the API" | "curl localhost:3000/api/users returns 200" |
|
|
107
|
+
| "Check styles" | "Open browser, verify dark mode toggle works" |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Plan Structure (Flexible, Not Fixed!)
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
# [Task Name]
|
|
115
|
+
|
|
116
|
+
## Goal
|
|
117
|
+
One sentence: What are we building/fixing?
|
|
118
|
+
|
|
119
|
+
## Tasks
|
|
120
|
+
- [ ] Task 1: [Specific action] → Verify: [How to check]
|
|
121
|
+
- [ ] Task 2: [Specific action] → Verify: [How to check]
|
|
122
|
+
- [ ] Task 3: [Specific action] → Verify: [How to check]
|
|
123
|
+
|
|
124
|
+
## Done When
|
|
125
|
+
- [ ] [Main success criteria]
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
> **That's it.** No phases, no sub-sections unless truly needed.
|
|
129
|
+
> Keep it minimal. Add complexity only when required.
|
|
130
|
+
|
|
131
|
+
## Notes
|
|
132
|
+
[Any important considerations]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Best Practices (Quick Reference)
|
|
138
|
+
|
|
139
|
+
1. **Start with goal** - What are we building/fixing?
|
|
140
|
+
2. **Max 10 tasks** - If more, break into multiple plans
|
|
141
|
+
3. **Each task verifiable** - Clear "done" criteria
|
|
142
|
+
4. **Project-specific** - No copy-paste templates
|
|
143
|
+
5. **Update as you go** - Mark `[x]` when complete
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## When to Use
|
|
148
|
+
|
|
149
|
+
- New project from scratch
|
|
150
|
+
- Adding a feature
|
|
151
|
+
- Fixing a bug (if complex)
|
|
152
|
+
- Refactoring multiple files
|