oh-my-ag 1.2.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/.agent/skills/_shared/api-contracts/README.md +56 -0
- package/.agent/skills/_shared/api-contracts/template.md +88 -0
- package/.agent/skills/_shared/clarification-protocol.md +217 -0
- package/.agent/skills/_shared/common-checklist.md +31 -0
- package/.agent/skills/_shared/context-budget.md +118 -0
- package/.agent/skills/_shared/context-loading.md +105 -0
- package/.agent/skills/_shared/difficulty-guide.md +55 -0
- package/.agent/skills/_shared/lessons-learned.md +113 -0
- package/.agent/skills/_shared/memory-protocol.md +79 -0
- package/.agent/skills/_shared/reasoning-templates.md +161 -0
- package/.agent/skills/_shared/skill-routing.md +80 -0
- package/.agent/skills/_shared/verify.sh +252 -0
- package/.agent/skills/backend-agent/SKILL.md +47 -0
- package/.agent/skills/backend-agent/resources/api-template.py +326 -0
- package/.agent/skills/backend-agent/resources/checklist.md +36 -0
- package/.agent/skills/backend-agent/resources/error-playbook.md +98 -0
- package/.agent/skills/backend-agent/resources/examples.md +85 -0
- package/.agent/skills/backend-agent/resources/execution-protocol.md +45 -0
- package/.agent/skills/backend-agent/resources/snippets.md +197 -0
- package/.agent/skills/backend-agent/resources/tech-stack.md +39 -0
- package/.agent/skills/commit/SKILL.md +121 -0
- package/.agent/skills/commit/config/commit-config.yaml +55 -0
- package/.agent/skills/commit/resources/conventional-commits.md +166 -0
- package/.agent/skills/debug-agent/SKILL.md +51 -0
- package/.agent/skills/debug-agent/resources/bug-report-template.md +332 -0
- package/.agent/skills/debug-agent/resources/checklist.md +30 -0
- package/.agent/skills/debug-agent/resources/common-patterns.md +734 -0
- package/.agent/skills/debug-agent/resources/debugging-checklist.md +362 -0
- package/.agent/skills/debug-agent/resources/error-playbook.md +94 -0
- package/.agent/skills/debug-agent/resources/examples.md +87 -0
- package/.agent/skills/debug-agent/resources/execution-protocol.md +51 -0
- package/.agent/skills/frontend-agent/SKILL.md +48 -0
- package/.agent/skills/frontend-agent/resources/checklist.md +38 -0
- package/.agent/skills/frontend-agent/resources/component-template.tsx +92 -0
- package/.agent/skills/frontend-agent/resources/error-playbook.md +108 -0
- package/.agent/skills/frontend-agent/resources/examples.md +77 -0
- package/.agent/skills/frontend-agent/resources/execution-protocol.md +49 -0
- package/.agent/skills/frontend-agent/resources/snippets.md +205 -0
- package/.agent/skills/frontend-agent/resources/tailwind-rules.md +343 -0
- package/.agent/skills/frontend-agent/resources/tech-stack.md +36 -0
- package/.agent/skills/mobile-agent/SKILL.md +46 -0
- package/.agent/skills/mobile-agent/resources/checklist.md +35 -0
- package/.agent/skills/mobile-agent/resources/error-playbook.md +106 -0
- package/.agent/skills/mobile-agent/resources/examples.md +79 -0
- package/.agent/skills/mobile-agent/resources/execution-protocol.md +49 -0
- package/.agent/skills/mobile-agent/resources/screen-template.dart +298 -0
- package/.agent/skills/mobile-agent/resources/snippets.md +235 -0
- package/.agent/skills/mobile-agent/resources/tech-stack.md +45 -0
- package/.agent/skills/orchestrator/SKILL.md +99 -0
- package/.agent/skills/orchestrator/config/cli-config.yaml +78 -0
- package/.agent/skills/orchestrator/resources/memory-schema.md +212 -0
- package/.agent/skills/orchestrator/resources/subagent-prompt-template.md +153 -0
- package/.agent/skills/orchestrator/scripts/parallel-run.sh +330 -0
- package/.agent/skills/orchestrator/scripts/spawn-agent.sh +263 -0
- package/.agent/skills/orchestrator/templates/backend-task.md +18 -0
- package/.agent/skills/orchestrator/templates/debug-task.md +16 -0
- package/.agent/skills/orchestrator/templates/frontend-task.md +17 -0
- package/.agent/skills/orchestrator/templates/mobile-task.md +17 -0
- package/.agent/skills/orchestrator/templates/qa-task.md +16 -0
- package/.agent/skills/orchestrator/templates/tasks-example.yaml +15 -0
- package/.agent/skills/pm-agent/SKILL.md +47 -0
- package/.agent/skills/pm-agent/resources/error-playbook.md +75 -0
- package/.agent/skills/pm-agent/resources/examples.md +121 -0
- package/.agent/skills/pm-agent/resources/execution-protocol.md +46 -0
- package/.agent/skills/pm-agent/resources/task-template.json +57 -0
- package/.agent/skills/qa-agent/SKILL.md +43 -0
- package/.agent/skills/qa-agent/resources/checklist.md +294 -0
- package/.agent/skills/qa-agent/resources/error-playbook.md +95 -0
- package/.agent/skills/qa-agent/resources/examples.md +100 -0
- package/.agent/skills/qa-agent/resources/execution-protocol.md +50 -0
- package/.agent/skills/qa-agent/resources/self-check.md +27 -0
- package/.agent/skills/workflow-guide/SKILL.md +57 -0
- package/.agent/skills/workflow-guide/resources/examples.md +68 -0
- package/README.ko.md +459 -0
- package/README.md +563 -0
- package/bin/cli.js +205 -0
- package/package.json +75 -0
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
# Bug Report Template
|
|
2
|
+
|
|
3
|
+
Use this template when documenting bugs in the Knowledge Base.
|
|
4
|
+
|
|
5
|
+
Save to: `.gemini/antigravity/brain/bugs/bug-YYYYMMDD-[short-description].md`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Bug: [Short Descriptive Title]
|
|
10
|
+
|
|
11
|
+
**Date Reported**: YYYY-MM-DD
|
|
12
|
+
**Date Fixed**: YYYY-MM-DD (or "In Progress")
|
|
13
|
+
**Reporter**: [User name or issue number]
|
|
14
|
+
**Assignee**: [Agent that fixed it]
|
|
15
|
+
**Severity**: 🔴 CRITICAL | 🟠 HIGH | 🟡 MEDIUM | 🔵 LOW
|
|
16
|
+
**Status**: 🐛 OPEN | 🔧 IN PROGRESS | ✅ FIXED | ⏸️ ON HOLD | ❌ WON'T FIX
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 📝 Problem Description
|
|
21
|
+
|
|
22
|
+
**What happened?**
|
|
23
|
+
[Clear description of the bug from user's perspective]
|
|
24
|
+
|
|
25
|
+
**What was expected?**
|
|
26
|
+
[What should have happened instead]
|
|
27
|
+
|
|
28
|
+
**Impact**:
|
|
29
|
+
- Users affected: [All | Specific role | Percentage]
|
|
30
|
+
- Business impact: [Revenue loss | User frustration | Security risk]
|
|
31
|
+
- Workaround available: [Yes/No - describe if yes]
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 🔄 Reproduction Steps
|
|
36
|
+
|
|
37
|
+
1. Navigate to [page/route]
|
|
38
|
+
2. Click on [button/element]
|
|
39
|
+
3. Enter [data] in [field]
|
|
40
|
+
4. Observe [unexpected behavior]
|
|
41
|
+
|
|
42
|
+
**Frequency**:
|
|
43
|
+
- [ ] Every time (100%)
|
|
44
|
+
- [ ] Intermittent (specify pattern: ___%)
|
|
45
|
+
- [ ] Specific conditions only (describe: ___)
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 🖼️ Evidence
|
|
50
|
+
|
|
51
|
+
**Error Messages**:
|
|
52
|
+
```
|
|
53
|
+
[Exact error text from console/logs]
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Stack Trace**:
|
|
57
|
+
```
|
|
58
|
+
[Full stack trace if available]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Screenshots**:
|
|
62
|
+
- Before: [description or file path]
|
|
63
|
+
- After: [description or file path]
|
|
64
|
+
- Error state: [description or file path]
|
|
65
|
+
|
|
66
|
+
**Browser Console**:
|
|
67
|
+
```javascript
|
|
68
|
+
// Relevant console errors
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Network Requests**:
|
|
72
|
+
```
|
|
73
|
+
Request URL: [URL]
|
|
74
|
+
Status Code: [200/404/500/etc]
|
|
75
|
+
Response: [relevant response data]
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 🌍 Environment
|
|
81
|
+
|
|
82
|
+
**Frontend**:
|
|
83
|
+
- Browser: [Chrome 120 | Firefox 121 | Safari 17]
|
|
84
|
+
- OS: [Windows 11 | macOS 14 | iOS 17 | Android 14]
|
|
85
|
+
- Screen size: [Desktop | Tablet | Mobile]
|
|
86
|
+
- Browser extensions: [Any relevant extensions]
|
|
87
|
+
|
|
88
|
+
**Backend**:
|
|
89
|
+
- Environment: [Development | Staging | Production]
|
|
90
|
+
- Server version: [API version]
|
|
91
|
+
- Database: [PostgreSQL 16.1]
|
|
92
|
+
|
|
93
|
+
**Mobile** (if applicable):
|
|
94
|
+
- Device: [iPhone 15 | Samsung Galaxy S24]
|
|
95
|
+
- OS Version: [iOS 17.2 | Android 14]
|
|
96
|
+
- App Version: [1.2.3]
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 🔍 Investigation
|
|
101
|
+
|
|
102
|
+
### Initial Analysis
|
|
103
|
+
|
|
104
|
+
**Hypothesis**:
|
|
105
|
+
[What you think is causing the bug]
|
|
106
|
+
|
|
107
|
+
**Investigation Steps Taken**:
|
|
108
|
+
1. [What was checked]
|
|
109
|
+
2. [What was ruled out]
|
|
110
|
+
3. [Key findings]
|
|
111
|
+
|
|
112
|
+
### Root Cause
|
|
113
|
+
|
|
114
|
+
**Technical Explanation**:
|
|
115
|
+
[Deep dive into why the bug occurs]
|
|
116
|
+
|
|
117
|
+
**Code Location**:
|
|
118
|
+
- File: `path/to/file.tsx`
|
|
119
|
+
- Line: 145
|
|
120
|
+
- Function: `handleSubmit()`
|
|
121
|
+
|
|
122
|
+
**Specific Issue**:
|
|
123
|
+
```typescript
|
|
124
|
+
// Problem code
|
|
125
|
+
const user = data.user.profile.name; // Crashes if profile is undefined
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Why it happens**:
|
|
129
|
+
[Explain the conditions that trigger this]
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 🔧 Solution
|
|
134
|
+
|
|
135
|
+
### Fix Applied
|
|
136
|
+
|
|
137
|
+
**Approach**:
|
|
138
|
+
[High-level description of the fix strategy]
|
|
139
|
+
|
|
140
|
+
**Code Changes**:
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
// File: path/to/file.tsx (line 145)
|
|
144
|
+
|
|
145
|
+
// ❌ BEFORE (buggy code)
|
|
146
|
+
const user = data.user.profile.name;
|
|
147
|
+
|
|
148
|
+
// ✅ AFTER (fixed code)
|
|
149
|
+
const user = data?.user?.profile?.name ?? 'Unknown';
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Why this works**:
|
|
153
|
+
[Explain the fix]
|
|
154
|
+
|
|
155
|
+
### Files Modified
|
|
156
|
+
|
|
157
|
+
- ✏️ `src/components/UserProfile.tsx` - Added null check for profile
|
|
158
|
+
- ✏️ `src/lib/api/users.ts` - Improved error handling
|
|
159
|
+
- ➕ `src/components/UserProfile.test.tsx` - Added regression test
|
|
160
|
+
|
|
161
|
+
### Migration/Deployment Notes
|
|
162
|
+
|
|
163
|
+
**Database Changes**: None | [Describe migrations needed]
|
|
164
|
+
**Configuration Changes**: None | [Describe config updates]
|
|
165
|
+
**Breaking Changes**: None | [Describe breaking changes]
|
|
166
|
+
**Rollback Plan**: [How to revert if needed]
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## ✅ Verification
|
|
171
|
+
|
|
172
|
+
### Testing Performed
|
|
173
|
+
|
|
174
|
+
- [x] **Regression test added**
|
|
175
|
+
- File: `src/components/UserProfile.test.tsx`
|
|
176
|
+
- Coverage: Null profile, undefined user, missing name
|
|
177
|
+
|
|
178
|
+
- [x] **Manual testing**
|
|
179
|
+
- Tested original reproduction steps
|
|
180
|
+
- Tested edge cases (null, undefined, empty)
|
|
181
|
+
- Verified fix works in all browsers
|
|
182
|
+
|
|
183
|
+
- [x] **Related areas checked**
|
|
184
|
+
- Found similar pattern in `TeamProfile.tsx` - also fixed
|
|
185
|
+
- Checked all `.profile.` usages - 3 more locations updated
|
|
186
|
+
|
|
187
|
+
- [x] **Performance impact**: None | [Describe if any]
|
|
188
|
+
|
|
189
|
+
### Test Results
|
|
190
|
+
|
|
191
|
+
**Unit Tests**: ✅ 15/15 passing
|
|
192
|
+
**Integration Tests**: ✅ 8/8 passing
|
|
193
|
+
**E2E Tests**: ✅ 3/3 passing
|
|
194
|
+
**Manual QA**: ✅ Verified on Chrome, Firefox, Safari
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 📚 Prevention
|
|
199
|
+
|
|
200
|
+
### How to Avoid Similar Bugs
|
|
201
|
+
|
|
202
|
+
1. **Always check for null/undefined** before accessing nested properties
|
|
203
|
+
2. **Use optional chaining (`?.`)** for safe property access
|
|
204
|
+
3. **Provide default values** with nullish coalescing (`??`)
|
|
205
|
+
4. **Add TypeScript strict null checks** to catch at compile time
|
|
206
|
+
5. **Write defensive code** - assume data might be missing
|
|
207
|
+
|
|
208
|
+
### Code Patterns to Follow
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
// ✅ GOOD: Safe access with fallback
|
|
212
|
+
const name = user?.profile?.name ?? 'Anonymous';
|
|
213
|
+
|
|
214
|
+
// ✅ GOOD: Explicit null check
|
|
215
|
+
if (user?.profile) {
|
|
216
|
+
const name = user.profile.name;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// ✅ GOOD: Early return
|
|
220
|
+
if (!user?.profile) {
|
|
221
|
+
return <div>No profile available</div>;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// ❌ BAD: Unsafe nested access
|
|
225
|
+
const name = user.profile.name; // Crashes if profile undefined
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Recommended Tools
|
|
229
|
+
|
|
230
|
+
- **TypeScript** with `strictNullChecks: true`
|
|
231
|
+
- **ESLint** rule: `no-unsafe-member-access`
|
|
232
|
+
- **Unit tests** for edge cases (null, undefined, empty)
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## 🔗 Related
|
|
237
|
+
|
|
238
|
+
**Similar Bugs**:
|
|
239
|
+
- Bug #123: Similar null check issue in `CommentList`
|
|
240
|
+
- Bug #456: Related data loading pattern
|
|
241
|
+
|
|
242
|
+
**Dependent Issues**:
|
|
243
|
+
- Issue #789: Need to improve error handling across all API calls
|
|
244
|
+
|
|
245
|
+
**Documentation**:
|
|
246
|
+
- [Link to architecture decision record]
|
|
247
|
+
- [Link to API documentation]
|
|
248
|
+
|
|
249
|
+
**External References**:
|
|
250
|
+
- [Stack Overflow link if used]
|
|
251
|
+
- [GitHub issue in library if relevant]
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## 📊 Metrics
|
|
256
|
+
|
|
257
|
+
**Time to Fix**: [2 hours | 1 day | 1 week]
|
|
258
|
+
**Lines Changed**: [+15 -5]
|
|
259
|
+
**Files Affected**: [3 files]
|
|
260
|
+
**Tests Added**: [5 new tests]
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 💬 Communication
|
|
265
|
+
|
|
266
|
+
**Notified**:
|
|
267
|
+
- [x] Product Manager - Impact assessment
|
|
268
|
+
- [x] QA Team - Additional testing needed
|
|
269
|
+
- [x] Users affected - Via email/announcement
|
|
270
|
+
- [ ] Other teams - [Specify]
|
|
271
|
+
|
|
272
|
+
**Changelog Entry**:
|
|
273
|
+
```markdown
|
|
274
|
+
### Fixed
|
|
275
|
+
- Fixed crash when user profile is missing ([#issue-number])
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 🎓 Lessons Learned
|
|
281
|
+
|
|
282
|
+
**What went well**:
|
|
283
|
+
- Quick identification of root cause
|
|
284
|
+
- Proactive fix of similar patterns
|
|
285
|
+
- Comprehensive test coverage
|
|
286
|
+
|
|
287
|
+
**What could improve**:
|
|
288
|
+
- Should have caught this in code review
|
|
289
|
+
- TypeScript strict mode would have prevented this
|
|
290
|
+
- Need better null check linting rules
|
|
291
|
+
|
|
292
|
+
**Action Items**:
|
|
293
|
+
- [ ] Enable TypeScript strictNullChecks across project
|
|
294
|
+
- [ ] Add ESLint rule for unsafe member access
|
|
295
|
+
- [ ] Update code review checklist to include null checks
|
|
296
|
+
- [ ] Create coding standards doc for defensive programming
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## 🏷️ Tags
|
|
301
|
+
|
|
302
|
+
`frontend` `null-check` `crash` `typescript` `user-profile` `high-priority`
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
**Sign-off**: [Your name/agent name]
|
|
307
|
+
**Reviewed by**: [PM Agent | QA Agent | Frontend Agent]
|
|
308
|
+
**Approved for deploy**: [Yes/No]
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## Template Notes
|
|
313
|
+
|
|
314
|
+
**How to use this template**:
|
|
315
|
+
|
|
316
|
+
1. **Copy this template** when documenting a new bug
|
|
317
|
+
2. **Fill in all sections** - don't skip parts
|
|
318
|
+
3. **Be specific** - future developers need details
|
|
319
|
+
4. **Include code** - show the before/after
|
|
320
|
+
5. **Link related issues** - help connect patterns
|
|
321
|
+
6. **Update status** as work progresses
|
|
322
|
+
7. **Save to Knowledge Base** for future reference
|
|
323
|
+
|
|
324
|
+
**Sections you can skip**:
|
|
325
|
+
- Screenshots (if text description is clear)
|
|
326
|
+
- Stack trace (if no error thrown)
|
|
327
|
+
- Migration notes (if no DB/config changes)
|
|
328
|
+
|
|
329
|
+
**Optional sections to add**:
|
|
330
|
+
- Timeline (for long-running bugs)
|
|
331
|
+
- Cost impact (for business-critical bugs)
|
|
332
|
+
- Vendor communication (if third-party bug)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Debug Agent - Self-Verification Checklist
|
|
2
|
+
|
|
3
|
+
Run through every item before submitting your fix.
|
|
4
|
+
|
|
5
|
+
## Fix Quality
|
|
6
|
+
- [ ] Root cause identified (not just symptom patched)
|
|
7
|
+
- [ ] Fix is minimal and focused (no unrelated changes)
|
|
8
|
+
- [ ] Edge cases handled (null, empty, boundary values)
|
|
9
|
+
- [ ] No new bugs introduced
|
|
10
|
+
|
|
11
|
+
## Regression Test
|
|
12
|
+
- [ ] Test written that fails without the fix
|
|
13
|
+
- [ ] Test passes with the fix
|
|
14
|
+
- [ ] Test covers the specific triggering condition
|
|
15
|
+
- [ ] All existing tests still pass
|
|
16
|
+
|
|
17
|
+
## Similar Patterns
|
|
18
|
+
- [ ] Searched for same pattern elsewhere in codebase
|
|
19
|
+
- [ ] Reported or fixed similar occurrences
|
|
20
|
+
- [ ] Noted if systemic issue needs architectural fix
|
|
21
|
+
|
|
22
|
+
## Documentation
|
|
23
|
+
- [ ] Bug report saved to `.gemini/antigravity/brain/bugs/`
|
|
24
|
+
- [ ] Root cause clearly explained
|
|
25
|
+
- [ ] Prevention advice included
|
|
26
|
+
- [ ] Files modified listed
|
|
27
|
+
|
|
28
|
+
## Security Check (if applicable)
|
|
29
|
+
- [ ] Fix doesn't introduce SQL injection, XSS, or auth bypass
|
|
30
|
+
- [ ] Sensitive data not exposed in error messages or logs
|