omgkit 2.2.0 → 2.3.1
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/README.md +3 -3
- package/package.json +1 -1
- package/plugin/skills/databases/database-management/SKILL.md +288 -0
- package/plugin/skills/databases/database-migration/SKILL.md +285 -0
- package/plugin/skills/databases/database-schema-design/SKILL.md +195 -0
- package/plugin/skills/databases/mongodb/SKILL.md +60 -776
- package/plugin/skills/databases/prisma/SKILL.md +53 -744
- package/plugin/skills/databases/redis/SKILL.md +53 -860
- package/plugin/skills/databases/supabase/SKILL.md +283 -0
- package/plugin/skills/devops/aws/SKILL.md +68 -672
- package/plugin/skills/devops/github-actions/SKILL.md +54 -657
- package/plugin/skills/devops/kubernetes/SKILL.md +67 -602
- package/plugin/skills/devops/performance-profiling/SKILL.md +59 -863
- package/plugin/skills/frameworks/django/SKILL.md +87 -853
- package/plugin/skills/frameworks/express/SKILL.md +95 -1301
- package/plugin/skills/frameworks/fastapi/SKILL.md +90 -1198
- package/plugin/skills/frameworks/laravel/SKILL.md +87 -1187
- package/plugin/skills/frameworks/nestjs/SKILL.md +106 -973
- package/plugin/skills/frameworks/react/SKILL.md +94 -962
- package/plugin/skills/frameworks/vue/SKILL.md +95 -1242
- package/plugin/skills/frontend/accessibility/SKILL.md +91 -1056
- package/plugin/skills/frontend/frontend-design/SKILL.md +69 -1262
- package/plugin/skills/frontend/responsive/SKILL.md +76 -799
- package/plugin/skills/frontend/shadcn-ui/SKILL.md +73 -921
- package/plugin/skills/frontend/tailwindcss/SKILL.md +60 -788
- package/plugin/skills/frontend/threejs/SKILL.md +72 -1266
- package/plugin/skills/languages/javascript/SKILL.md +106 -849
- package/plugin/skills/methodology/brainstorming/SKILL.md +70 -576
- package/plugin/skills/methodology/defense-in-depth/SKILL.md +79 -831
- package/plugin/skills/methodology/dispatching-parallel-agents/SKILL.md +81 -654
- package/plugin/skills/methodology/executing-plans/SKILL.md +86 -529
- package/plugin/skills/methodology/finishing-development-branch/SKILL.md +95 -586
- package/plugin/skills/methodology/problem-solving/SKILL.md +67 -681
- package/plugin/skills/methodology/receiving-code-review/SKILL.md +70 -533
- package/plugin/skills/methodology/requesting-code-review/SKILL.md +70 -610
- package/plugin/skills/methodology/root-cause-tracing/SKILL.md +70 -646
- package/plugin/skills/methodology/sequential-thinking/SKILL.md +70 -478
- package/plugin/skills/methodology/systematic-debugging/SKILL.md +66 -559
- package/plugin/skills/methodology/test-driven-development/SKILL.md +91 -752
- package/plugin/skills/methodology/testing-anti-patterns/SKILL.md +78 -687
- package/plugin/skills/methodology/token-optimization/SKILL.md +72 -602
- package/plugin/skills/methodology/verification-before-completion/SKILL.md +108 -529
- package/plugin/skills/methodology/writing-plans/SKILL.md +79 -566
- package/plugin/skills/omega/omega-architecture/SKILL.md +91 -752
- package/plugin/skills/omega/omega-coding/SKILL.md +161 -552
- package/plugin/skills/omega/omega-sprint/SKILL.md +132 -777
- package/plugin/skills/omega/omega-testing/SKILL.md +157 -845
- package/plugin/skills/omega/omega-thinking/SKILL.md +165 -606
- package/plugin/skills/security/better-auth/SKILL.md +46 -1034
- package/plugin/skills/security/oauth/SKILL.md +80 -934
- package/plugin/skills/security/owasp/SKILL.md +78 -862
- package/plugin/skills/testing/playwright/SKILL.md +77 -700
- package/plugin/skills/testing/pytest/SKILL.md +73 -811
- package/plugin/skills/testing/vitest/SKILL.md +60 -920
- package/plugin/skills/tools/document-processing/SKILL.md +111 -838
- package/plugin/skills/tools/image-processing/SKILL.md +126 -659
- package/plugin/skills/tools/mcp-development/SKILL.md +85 -758
- package/plugin/skills/tools/media-processing/SKILL.md +118 -735
- package/plugin/stdrules/SKILL_STANDARDS.md +490 -0
- package/plugin/skills/SKILL_STANDARDS.md +0 -743
|
@@ -1,871 +1,226 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: omega-
|
|
3
|
-
description: AI-native sprint management with autonomous agent
|
|
2
|
+
name: managing-omega-sprints
|
|
3
|
+
description: Orchestrates AI-native sprint management with autonomous agent coordination and continuous delivery. Use when running development sprints with AI agent teams or coordinating parallel task execution.
|
|
4
4
|
category: omega
|
|
5
5
|
triggers:
|
|
6
6
|
- omega sprint
|
|
7
7
|
- sprint planning
|
|
8
8
|
- AI team management
|
|
9
9
|
- agent orchestration
|
|
10
|
-
- sprint execution
|
|
11
|
-
- autonomous development
|
|
12
|
-
- team coordination
|
|
13
10
|
---
|
|
14
11
|
|
|
15
|
-
# Omega
|
|
12
|
+
# Managing Omega Sprints
|
|
16
13
|
|
|
17
|
-
Execute **AI-native sprint management** with autonomous agent orchestration, intelligent task routing, and continuous delivery cycles.
|
|
14
|
+
Execute **AI-native sprint management** with autonomous agent orchestration, intelligent task routing, and continuous delivery cycles.
|
|
18
15
|
|
|
19
|
-
##
|
|
16
|
+
## Quick Start
|
|
20
17
|
|
|
21
|
-
|
|
18
|
+
```yaml
|
|
19
|
+
# 1. Define sprint vision
|
|
20
|
+
Vision:
|
|
21
|
+
Objective: "Implement OAuth2 authentication"
|
|
22
|
+
Success: ["3 providers", "95% completion rate", "OWASP compliant"]
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
# 2. Break into agent-executable tasks
|
|
25
|
+
Tasks:
|
|
26
|
+
- { id: "types", agent: "architect", tokens: 5K }
|
|
27
|
+
- { id: "google-oauth", agent: "fullstack", tokens: 8K, depends: ["types"] }
|
|
28
|
+
- { id: "tests", agent: "tester", tokens: 6K, depends: ["google-oauth"] }
|
|
29
|
+
|
|
30
|
+
# 3. Execute with autonomy level
|
|
31
|
+
Execution:
|
|
32
|
+
Autonomy: "semi-auto"
|
|
33
|
+
Checkpoints: ["phase-complete", "error-threshold"]
|
|
34
|
+
QualityGates: ["coverage > 80%", "no-critical-bugs"]
|
|
35
|
+
```
|
|
30
36
|
|
|
31
37
|
## Features
|
|
32
38
|
|
|
33
|
-
|
|
39
|
+
| Feature | Description | Guide |
|
|
40
|
+
|---------|-------------|-------|
|
|
41
|
+
| Sprint Lifecycle | Vision, Plan, Execute, Deliver, Retrospect | AI-native 5-phase cycle |
|
|
42
|
+
| Task Breakdown | Atomic, testable, agent-sized tasks | Hours not days per task |
|
|
43
|
+
| Agent Routing | Match tasks to optimal agents | Capability + load scoring |
|
|
44
|
+
| Autonomy Levels | Full-auto to supervised modes | Balance speed and oversight |
|
|
45
|
+
| Quality Gates | Automated checkpoints | Coverage, security, performance |
|
|
46
|
+
| Parallel Execution | Swarm-based task processing | Maximize parallelization |
|
|
47
|
+
| Sprint Analytics | Velocity, quality, efficiency metrics | Continuous improvement |
|
|
34
48
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
│
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
│ ▼ ▼ ▼ ▼ │
|
|
47
|
-
│ Define what Break into AI agents Ship to │
|
|
48
|
-
│ success looks agent-ready work in production │
|
|
49
|
-
│ like tasks parallel │
|
|
50
|
-
│ │ │ │ │ │
|
|
51
|
-
│ └───────────────┴───────────────┴───────────────┘ │
|
|
52
|
-
│ │ │
|
|
53
|
-
│ ▼ │
|
|
54
|
-
│ ┌─────────────┐ │
|
|
55
|
-
│ │ RETROSPECT │ │
|
|
56
|
-
│ └──────┬──────┘ │
|
|
57
|
-
│ │ │
|
|
58
|
-
│ ▼ │
|
|
59
|
-
│ Learn, adapt, improve │
|
|
60
|
-
│ Feed into next sprint │
|
|
61
|
-
│ │
|
|
62
|
-
└─────────────────────────────────────────────────────────────────────────┘
|
|
63
|
-
|
|
64
|
-
Key Differences from Traditional Sprints:
|
|
65
|
-
- Tasks sized for AI execution (hours, not days)
|
|
66
|
-
- Parallel execution by agent swarm
|
|
67
|
-
- Continuous integration throughout
|
|
68
|
-
- Automated quality gates
|
|
69
|
-
- Zero context-switching cost
|
|
49
|
+
## Common Patterns
|
|
50
|
+
|
|
51
|
+
### Sprint Lifecycle
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
VISION ──> PLAN ──> EXECUTE ──> DELIVER ──> RETROSPECT
|
|
55
|
+
│ │ │ │ │
|
|
56
|
+
▼ ▼ ▼ ▼ ▼
|
|
57
|
+
Define Break into Agents Ship to Learn and
|
|
58
|
+
success agent-ready work production improve
|
|
59
|
+
criteria tasks parallel
|
|
70
60
|
```
|
|
71
61
|
|
|
72
|
-
###
|
|
62
|
+
### Vision Definition
|
|
73
63
|
|
|
74
64
|
```typescript
|
|
75
|
-
/**
|
|
76
|
-
* Sprint Vision: Define what success looks like
|
|
77
|
-
* Clear vision enables autonomous agent decision-making
|
|
78
|
-
*/
|
|
79
|
-
|
|
80
65
|
interface SprintVision {
|
|
81
|
-
// What are we building?
|
|
82
66
|
objective: string;
|
|
83
|
-
|
|
84
|
-
// Why does it matter?
|
|
85
67
|
businessValue: string;
|
|
86
|
-
|
|
87
|
-
// How do we know we're done?
|
|
88
68
|
successCriteria: SuccessCriterion[];
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
69
|
+
scope: {
|
|
70
|
+
included: string[];
|
|
71
|
+
excluded: string[];
|
|
72
|
+
risks: Risk[];
|
|
73
|
+
};
|
|
94
74
|
qualityGates: QualityGate[];
|
|
95
75
|
}
|
|
96
76
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
measurement: 'automated' | 'manual';
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
interface ScopeDefinition {
|
|
104
|
-
included: string[];
|
|
105
|
-
excluded: string[];
|
|
106
|
-
assumptions: string[];
|
|
107
|
-
risks: Risk[];
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Vision Template
|
|
111
|
-
const sprintVision: SprintVision = {
|
|
112
|
-
objective: "Implement user authentication with OAuth2 providers",
|
|
113
|
-
|
|
114
|
-
businessValue: "Enable users to sign in with existing accounts, reducing signup friction by 60%",
|
|
115
|
-
|
|
77
|
+
const vision: SprintVision = {
|
|
78
|
+
objective: "Implement user authentication with OAuth2",
|
|
79
|
+
businessValue: "Reduce signup friction by 60%",
|
|
116
80
|
successCriteria: [
|
|
117
|
-
{
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
measurement: "automated"
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
metric: "Auth flow completion rate",
|
|
124
|
-
target: "95%",
|
|
125
|
-
measurement: "automated"
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
metric: "Security audit passed",
|
|
129
|
-
target: "OWASP compliance",
|
|
130
|
-
measurement: "manual"
|
|
131
|
-
}
|
|
81
|
+
{ metric: "OAuth providers", target: 3 },
|
|
82
|
+
{ metric: "Auth completion rate", target: "95%" },
|
|
83
|
+
{ metric: "Security audit", target: "OWASP compliant" }
|
|
132
84
|
],
|
|
133
|
-
|
|
134
|
-
scope: {
|
|
135
|
-
included: [
|
|
136
|
-
"OAuth2 provider integration",
|
|
137
|
-
"Session management",
|
|
138
|
-
"User profile creation",
|
|
139
|
-
"Token refresh logic"
|
|
140
|
-
],
|
|
141
|
-
excluded: [
|
|
142
|
-
"Password-based auth",
|
|
143
|
-
"2FA implementation",
|
|
144
|
-
"Admin user management"
|
|
145
|
-
],
|
|
146
|
-
assumptions: [
|
|
147
|
-
"Database schema already supports user records",
|
|
148
|
-
"Frontend auth UI components exist"
|
|
149
|
-
],
|
|
150
|
-
risks: [
|
|
151
|
-
{
|
|
152
|
-
description: "OAuth provider API changes",
|
|
153
|
-
probability: "low",
|
|
154
|
-
impact: "medium",
|
|
155
|
-
mitigation: "Use official SDKs with version pinning"
|
|
156
|
-
}
|
|
157
|
-
]
|
|
158
|
-
},
|
|
159
|
-
|
|
160
85
|
qualityGates: [
|
|
161
86
|
{ type: 'coverage', threshold: 80 },
|
|
162
|
-
{ type: 'security-scan', threshold: 'no-critical' }
|
|
163
|
-
{ type: 'performance', threshold: 'p99 < 200ms' }
|
|
87
|
+
{ type: 'security-scan', threshold: 'no-critical' }
|
|
164
88
|
]
|
|
165
89
|
};
|
|
166
90
|
```
|
|
167
91
|
|
|
168
|
-
###
|
|
92
|
+
### Task Breakdown
|
|
169
93
|
|
|
170
94
|
```typescript
|
|
171
|
-
/**
|
|
172
|
-
* Break vision into agent-executable tasks
|
|
173
|
-
* Tasks should be atomic, testable, and independent
|
|
174
|
-
*/
|
|
175
|
-
|
|
176
95
|
interface SprintTask {
|
|
177
96
|
id: string;
|
|
178
97
|
title: string;
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
estimatedTokens: number; // AI work estimation
|
|
98
|
+
type: 'feature' | 'bugfix' | 'test' | 'docs';
|
|
99
|
+
priority: 'critical' | 'high' | 'medium';
|
|
100
|
+
estimatedTokens: number;
|
|
183
101
|
dependencies: string[];
|
|
184
|
-
acceptanceCriteria: string[];
|
|
185
102
|
suggestedAgent: AgentType;
|
|
186
|
-
|
|
103
|
+
acceptanceCriteria: string[];
|
|
187
104
|
}
|
|
188
105
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
| 'docs' // Documentation
|
|
195
|
-
| 'research' // Investigation/spike
|
|
196
|
-
| 'config'; // Configuration changes
|
|
197
|
-
|
|
198
|
-
// Task breakdown algorithm
|
|
199
|
-
class TaskBreaker {
|
|
200
|
-
async breakdownFeature(feature: string): Promise<SprintTask[]> {
|
|
201
|
-
const analysis = await this.analyzeFeature(feature);
|
|
202
|
-
|
|
203
|
-
return [
|
|
204
|
-
// Layer 1: Foundation
|
|
205
|
-
...this.generateFoundationTasks(analysis),
|
|
206
|
-
// Layer 2: Core implementation
|
|
207
|
-
...this.generateImplementationTasks(analysis),
|
|
208
|
-
// Layer 3: Integration
|
|
209
|
-
...this.generateIntegrationTasks(analysis),
|
|
210
|
-
// Layer 4: Quality
|
|
211
|
-
...this.generateQualityTasks(analysis)
|
|
212
|
-
];
|
|
213
|
-
}
|
|
106
|
+
// Layer-based breakdown
|
|
107
|
+
const tasks = [
|
|
108
|
+
// Layer 1: Foundation
|
|
109
|
+
{ id: 'types', title: 'Define TypeScript interfaces', agent: 'architect' },
|
|
110
|
+
{ id: 'schema', title: 'Create DB migrations', depends: ['types'] },
|
|
214
111
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
id: 'foundation-types',
|
|
219
|
-
title: 'Define TypeScript interfaces and types',
|
|
220
|
-
description: 'Create type definitions for all new entities and operations',
|
|
221
|
-
type: 'feature',
|
|
222
|
-
priority: 'critical',
|
|
223
|
-
estimatedTokens: 5000,
|
|
224
|
-
dependencies: [],
|
|
225
|
-
acceptanceCriteria: [
|
|
226
|
-
'All interfaces exported',
|
|
227
|
-
'JSDoc comments on all types',
|
|
228
|
-
'Strict mode compliant'
|
|
229
|
-
],
|
|
230
|
-
suggestedAgent: 'architect',
|
|
231
|
-
testStrategy: { type: 'type-check', coverage: 100 }
|
|
232
|
-
},
|
|
233
|
-
{
|
|
234
|
-
id: 'foundation-schema',
|
|
235
|
-
title: 'Create database schema migrations',
|
|
236
|
-
description: 'Add necessary tables/columns for the feature',
|
|
237
|
-
type: 'feature',
|
|
238
|
-
priority: 'critical',
|
|
239
|
-
estimatedTokens: 3000,
|
|
240
|
-
dependencies: ['foundation-types'],
|
|
241
|
-
acceptanceCriteria: [
|
|
242
|
-
'Migration runs without errors',
|
|
243
|
-
'Rollback tested',
|
|
244
|
-
'Indexes added for query patterns'
|
|
245
|
-
],
|
|
246
|
-
suggestedAgent: 'fullstack-developer',
|
|
247
|
-
testStrategy: { type: 'migration-test', rollback: true }
|
|
248
|
-
}
|
|
249
|
-
];
|
|
250
|
-
}
|
|
112
|
+
// Layer 2: Implementation (parallel)
|
|
113
|
+
{ id: 'google', title: 'Google OAuth', depends: ['types'] },
|
|
114
|
+
{ id: 'github', title: 'GitHub OAuth', depends: ['types'] },
|
|
251
115
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
return analysis.components.map(component => ({
|
|
255
|
-
id: `impl-${component.name}`,
|
|
256
|
-
title: `Implement ${component.name}`,
|
|
257
|
-
description: component.description,
|
|
258
|
-
type: 'feature' as TaskType,
|
|
259
|
-
priority: 'high',
|
|
260
|
-
estimatedTokens: component.complexity * 2000,
|
|
261
|
-
dependencies: component.dependencies,
|
|
262
|
-
acceptanceCriteria: component.acceptance,
|
|
263
|
-
suggestedAgent: this.selectAgent(component),
|
|
264
|
-
testStrategy: { type: 'unit', coverage: 80 }
|
|
265
|
-
}));
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
// Example: OAuth feature breakdown
|
|
270
|
-
const oauthTasks: SprintTask[] = [
|
|
271
|
-
{
|
|
272
|
-
id: 'oauth-types',
|
|
273
|
-
title: 'Define OAuth type definitions',
|
|
274
|
-
type: 'feature',
|
|
275
|
-
priority: 'critical',
|
|
276
|
-
estimatedTokens: 3000,
|
|
277
|
-
dependencies: [],
|
|
278
|
-
suggestedAgent: 'architect',
|
|
279
|
-
// ... rest of task definition
|
|
280
|
-
},
|
|
281
|
-
{
|
|
282
|
-
id: 'oauth-google',
|
|
283
|
-
title: 'Implement Google OAuth provider',
|
|
284
|
-
type: 'feature',
|
|
285
|
-
priority: 'high',
|
|
286
|
-
estimatedTokens: 8000,
|
|
287
|
-
dependencies: ['oauth-types'],
|
|
288
|
-
suggestedAgent: 'fullstack-developer',
|
|
289
|
-
// ... rest of task definition
|
|
290
|
-
},
|
|
291
|
-
// Additional parallel tasks...
|
|
116
|
+
// Layer 3: Quality
|
|
117
|
+
{ id: 'tests', title: 'Integration tests', depends: ['google', 'github'] }
|
|
292
118
|
];
|
|
293
119
|
```
|
|
294
120
|
|
|
295
|
-
###
|
|
121
|
+
### Agent Routing
|
|
296
122
|
|
|
297
123
|
```typescript
|
|
298
|
-
|
|
299
|
-
* Route tasks to optimal agents based on capabilities
|
|
300
|
-
* Enables parallel execution and specialization
|
|
301
|
-
*/
|
|
302
|
-
|
|
303
|
-
interface AgentProfile {
|
|
304
|
-
type: AgentType;
|
|
305
|
-
capabilities: string[];
|
|
306
|
-
specializations: string[];
|
|
307
|
-
maxConcurrentTasks: number;
|
|
308
|
-
averageTokensPerHour: number;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
type AgentType =
|
|
312
|
-
| 'architect' // System design, interfaces
|
|
313
|
-
| 'fullstack-developer' // Feature implementation
|
|
314
|
-
| 'frontend-developer' // UI/UX implementation
|
|
315
|
-
| 'backend-developer' // API/server implementation
|
|
316
|
-
| 'debugger' // Bug investigation and fixes
|
|
317
|
-
| 'tester' // Test creation and QA
|
|
318
|
-
| 'docs-manager' // Documentation
|
|
319
|
-
| 'oracle' // Research and analysis
|
|
320
|
-
| 'reviewer'; // Code review
|
|
321
|
-
|
|
322
|
-
const agentProfiles: Map<AgentType, AgentProfile> = new Map([
|
|
323
|
-
['architect', {
|
|
324
|
-
type: 'architect',
|
|
325
|
-
capabilities: ['system-design', 'api-design', 'type-definition'],
|
|
326
|
-
specializations: ['distributed-systems', 'performance'],
|
|
327
|
-
maxConcurrentTasks: 2,
|
|
328
|
-
averageTokensPerHour: 15000
|
|
329
|
-
}],
|
|
330
|
-
['fullstack-developer', {
|
|
331
|
-
type: 'fullstack-developer',
|
|
332
|
-
capabilities: ['feature-implementation', 'integration', 'crud'],
|
|
333
|
-
specializations: ['react', 'node', 'database'],
|
|
334
|
-
maxConcurrentTasks: 3,
|
|
335
|
-
averageTokensPerHour: 20000
|
|
336
|
-
}],
|
|
337
|
-
['debugger', {
|
|
338
|
-
type: 'debugger',
|
|
339
|
-
capabilities: ['bug-investigation', 'root-cause-analysis', 'hotfix'],
|
|
340
|
-
specializations: ['performance', 'memory', 'race-conditions'],
|
|
341
|
-
maxConcurrentTasks: 2,
|
|
342
|
-
averageTokensPerHour: 12000
|
|
343
|
-
}],
|
|
344
|
-
['tester', {
|
|
345
|
-
type: 'tester',
|
|
346
|
-
capabilities: ['unit-tests', 'integration-tests', 'e2e-tests'],
|
|
347
|
-
specializations: ['test-strategy', 'mocking', 'coverage'],
|
|
348
|
-
maxConcurrentTasks: 4,
|
|
349
|
-
averageTokensPerHour: 18000
|
|
350
|
-
}]
|
|
351
|
-
]);
|
|
352
|
-
|
|
353
|
-
class AgentRouter {
|
|
354
|
-
private taskQueue: PriorityQueue<SprintTask>;
|
|
355
|
-
private agentPool: Map<AgentType, Agent[]>;
|
|
356
|
-
|
|
357
|
-
async routeTask(task: SprintTask): Promise<Agent> {
|
|
358
|
-
// 1. Find capable agents
|
|
359
|
-
const capableAgents = this.findCapableAgents(task);
|
|
360
|
-
|
|
361
|
-
// 2. Score agents by fit
|
|
362
|
-
const scoredAgents = capableAgents.map(agent => ({
|
|
363
|
-
agent,
|
|
364
|
-
score: this.calculateFitScore(agent, task)
|
|
365
|
-
}));
|
|
366
|
-
|
|
367
|
-
// 3. Select best available agent
|
|
368
|
-
const best = scoredAgents
|
|
369
|
-
.filter(a => a.agent.isAvailable())
|
|
370
|
-
.sort((a, b) => b.score - a.score)[0];
|
|
371
|
-
|
|
372
|
-
if (!best) {
|
|
373
|
-
// Queue for next available
|
|
374
|
-
await this.queueForAgent(task, scoredAgents[0].agent.type);
|
|
375
|
-
return this.waitForAgent(task);
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
return best.agent;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
private calculateFitScore(agent: Agent, task: SprintTask): number {
|
|
382
|
-
let score = 0;
|
|
383
|
-
|
|
384
|
-
// Base capability match
|
|
385
|
-
const profile = agentProfiles.get(agent.type)!;
|
|
386
|
-
const capabilityMatch = this.matchCapabilities(profile, task);
|
|
387
|
-
score += capabilityMatch * 40;
|
|
388
|
-
|
|
389
|
-
// Specialization bonus
|
|
390
|
-
const specializationMatch = this.matchSpecializations(profile, task);
|
|
391
|
-
score += specializationMatch * 30;
|
|
392
|
-
|
|
393
|
-
// Current load factor
|
|
394
|
-
const loadFactor = 1 - (agent.currentTasks / profile.maxConcurrentTasks);
|
|
395
|
-
score += loadFactor * 20;
|
|
124
|
+
type AgentType = 'architect' | 'fullstack' | 'debugger' | 'tester' | 'reviewer';
|
|
396
125
|
|
|
397
|
-
// Context continuity bonus (same feature = less context switching)
|
|
398
|
-
if (agent.hasContextFor(task.relatedFeature)) {
|
|
399
|
-
score += 10;
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
return score;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
// Routing configuration by task type
|
|
407
126
|
const routingRules: Record<TaskType, AgentType[]> = {
|
|
408
|
-
feature: ['fullstack
|
|
409
|
-
bugfix: ['debugger', 'fullstack
|
|
410
|
-
refactor: ['architect', 'fullstack-developer'],
|
|
127
|
+
feature: ['fullstack', 'frontend', 'backend'],
|
|
128
|
+
bugfix: ['debugger', 'fullstack'],
|
|
411
129
|
test: ['tester'],
|
|
412
130
|
docs: ['docs-manager'],
|
|
413
|
-
research: ['oracle', 'architect']
|
|
414
|
-
config: ['fullstack-developer', 'backend-developer']
|
|
131
|
+
research: ['oracle', 'architect']
|
|
415
132
|
};
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
### 5. Autonomy Levels & Checkpoints
|
|
419
|
-
|
|
420
|
-
```typescript
|
|
421
|
-
/**
|
|
422
|
-
* Define autonomy levels for sprint execution
|
|
423
|
-
* Balance speed with human oversight
|
|
424
|
-
*/
|
|
425
|
-
|
|
426
|
-
type AutonomyLevel = 'full-auto' | 'semi-auto' | 'supervised' | 'manual';
|
|
427
|
-
|
|
428
|
-
interface AutonomyConfig {
|
|
429
|
-
level: AutonomyLevel;
|
|
430
|
-
checkpoints: Checkpoint[];
|
|
431
|
-
escalationRules: EscalationRule[];
|
|
432
|
-
approvalRequired: ApprovalTrigger[];
|
|
433
|
-
}
|
|
434
133
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
134
|
+
// Scoring algorithm
|
|
135
|
+
function calculateFitScore(agent: Agent, task: Task): number {
|
|
136
|
+
let score = 0;
|
|
137
|
+
score += capabilityMatch * 40; // Core capabilities
|
|
138
|
+
score += specializationMatch * 30; // Domain expertise
|
|
139
|
+
score += (1 - loadFactor) * 20; // Availability
|
|
140
|
+
score += hasContext ? 10 : 0; // Context continuity
|
|
141
|
+
return score;
|
|
439
142
|
}
|
|
143
|
+
```
|
|
440
144
|
|
|
441
|
-
|
|
442
|
-
| 'task-complete'
|
|
443
|
-
| 'phase-complete'
|
|
444
|
-
| 'error-threshold'
|
|
445
|
-
| 'token-threshold'
|
|
446
|
-
| 'time-threshold'
|
|
447
|
-
| 'security-concern'
|
|
448
|
-
| 'breaking-change';
|
|
145
|
+
### Autonomy Levels
|
|
449
146
|
|
|
450
|
-
|
|
147
|
+
```typescript
|
|
148
|
+
const autonomyConfigs = {
|
|
451
149
|
'full-auto': {
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
{ trigger: 'phase-complete', action: 'notify' },
|
|
455
|
-
{ trigger: 'error-threshold', action: 'pause' }
|
|
456
|
-
],
|
|
457
|
-
escalationRules: [
|
|
458
|
-
{ condition: 'security-vulnerability', action: 'pause-and-alert' }
|
|
459
|
-
],
|
|
460
|
-
approvalRequired: ['production-deploy', 'breaking-api-change']
|
|
150
|
+
checkpoints: [{ trigger: 'phase-complete', action: 'notify' }],
|
|
151
|
+
approvalRequired: ['production-deploy']
|
|
461
152
|
},
|
|
462
|
-
|
|
463
153
|
'semi-auto': {
|
|
464
|
-
level: 'semi-auto',
|
|
465
154
|
checkpoints: [
|
|
466
155
|
{ trigger: 'task-complete', action: 'notify' },
|
|
467
156
|
{ trigger: 'phase-complete', action: 'review', timeout: 3600 }
|
|
468
157
|
],
|
|
469
|
-
escalationRules: [
|
|
470
|
-
{ condition: 'test-failure', action: 'pause' },
|
|
471
|
-
{ condition: 'coverage-drop', action: 'notify' }
|
|
472
|
-
],
|
|
473
158
|
approvalRequired: ['merge-to-main', 'production-deploy']
|
|
474
159
|
},
|
|
475
|
-
|
|
476
160
|
'supervised': {
|
|
477
|
-
|
|
478
|
-
checkpoints: [
|
|
479
|
-
{ trigger: 'task-complete', action: 'review' }
|
|
480
|
-
],
|
|
481
|
-
escalationRules: [
|
|
482
|
-
{ condition: 'any-error', action: 'pause' }
|
|
483
|
-
],
|
|
161
|
+
checkpoints: [{ trigger: 'task-complete', action: 'review' }],
|
|
484
162
|
approvalRequired: ['all-merges', 'all-deploys']
|
|
485
|
-
},
|
|
486
|
-
|
|
487
|
-
'manual': {
|
|
488
|
-
level: 'manual',
|
|
489
|
-
checkpoints: [
|
|
490
|
-
{ trigger: 'task-complete', action: 'pause' }
|
|
491
|
-
],
|
|
492
|
-
escalationRules: [],
|
|
493
|
-
approvalRequired: ['every-action']
|
|
494
163
|
}
|
|
495
164
|
};
|
|
496
|
-
|
|
497
|
-
// Sprint execution with autonomy control
|
|
498
|
-
class SprintExecutor {
|
|
499
|
-
private autonomy: AutonomyConfig;
|
|
500
|
-
private agents: AgentRouter;
|
|
501
|
-
|
|
502
|
-
async executeSprint(
|
|
503
|
-
tasks: SprintTask[],
|
|
504
|
-
autonomyLevel: AutonomyLevel
|
|
505
|
-
): Promise<SprintResult> {
|
|
506
|
-
this.autonomy = autonomyConfigs[autonomyLevel];
|
|
507
|
-
|
|
508
|
-
// Sort tasks by dependency graph
|
|
509
|
-
const orderedTasks = this.topologicalSort(tasks);
|
|
510
|
-
|
|
511
|
-
// Group into parallelizable batches
|
|
512
|
-
const batches = this.createParallelBatches(orderedTasks);
|
|
513
|
-
|
|
514
|
-
const results: TaskResult[] = [];
|
|
515
|
-
|
|
516
|
-
for (const batch of batches) {
|
|
517
|
-
// Execute batch in parallel
|
|
518
|
-
const batchResults = await Promise.all(
|
|
519
|
-
batch.map(task => this.executeTask(task))
|
|
520
|
-
);
|
|
521
|
-
|
|
522
|
-
results.push(...batchResults);
|
|
523
|
-
|
|
524
|
-
// Check for phase checkpoint
|
|
525
|
-
if (this.isPhaseComplete(batch)) {
|
|
526
|
-
await this.handleCheckpoint('phase-complete', batchResults);
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
return this.compileSprintResult(results);
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
private async handleCheckpoint(
|
|
534
|
-
trigger: CheckpointTrigger,
|
|
535
|
-
context: unknown
|
|
536
|
-
): Promise<void> {
|
|
537
|
-
const checkpoint = this.autonomy.checkpoints.find(
|
|
538
|
-
cp => cp.trigger === trigger
|
|
539
|
-
);
|
|
540
|
-
|
|
541
|
-
if (!checkpoint) return;
|
|
542
|
-
|
|
543
|
-
switch (checkpoint.action) {
|
|
544
|
-
case 'pause':
|
|
545
|
-
await this.pauseAndWaitForApproval(trigger, context);
|
|
546
|
-
break;
|
|
547
|
-
case 'review':
|
|
548
|
-
const approved = await this.requestReview(trigger, context);
|
|
549
|
-
if (!approved && !checkpoint.timeout) {
|
|
550
|
-
await this.pauseAndWaitForApproval(trigger, context);
|
|
551
|
-
}
|
|
552
|
-
break;
|
|
553
|
-
case 'notify':
|
|
554
|
-
await this.sendNotification(trigger, context);
|
|
555
|
-
break;
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
165
|
```
|
|
560
166
|
|
|
561
|
-
###
|
|
167
|
+
### Sprint Metrics
|
|
562
168
|
|
|
563
169
|
```typescript
|
|
564
|
-
/**
|
|
565
|
-
* Track sprint performance for continuous improvement
|
|
566
|
-
*/
|
|
567
|
-
|
|
568
170
|
interface SprintMetrics {
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
// Quality
|
|
575
|
-
bugsIntroduced: number;
|
|
576
|
-
testCoverage: number;
|
|
577
|
-
codeQualityScore: number;
|
|
578
|
-
|
|
579
|
-
// Efficiency
|
|
580
|
-
totalTokensUsed: number;
|
|
581
|
-
tokensPerTask: number;
|
|
582
|
-
parallelizationRatio: number;
|
|
583
|
-
|
|
584
|
-
// Time
|
|
585
|
-
cycleTime: Duration;
|
|
586
|
-
leadTime: Duration;
|
|
587
|
-
blockedTime: Duration;
|
|
588
|
-
|
|
589
|
-
// Agent performance
|
|
590
|
-
agentUtilization: Map<AgentType, number>;
|
|
591
|
-
agentEfficiency: Map<AgentType, number>;
|
|
171
|
+
velocity: { completed: number; planned: number; ratio: number };
|
|
172
|
+
quality: { bugs: number; coverage: number; score: number };
|
|
173
|
+
efficiency: { totalTokens: number; parallelization: number };
|
|
174
|
+
agents: Map<AgentType, { tasks: number; efficiency: number }>;
|
|
592
175
|
}
|
|
593
176
|
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
insights: this.generateInsights(metrics, sprint),
|
|
604
|
-
recommendations: this.generateRecommendations(metrics)
|
|
605
|
-
};
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
private generateInsights(
|
|
609
|
-
metrics: SprintMetrics,
|
|
610
|
-
sprint: Sprint
|
|
611
|
-
): SprintInsight[] {
|
|
612
|
-
const insights: SprintInsight[] = [];
|
|
613
|
-
|
|
614
|
-
// Velocity insights
|
|
615
|
-
if (metrics.velocityRatio < 0.8) {
|
|
616
|
-
insights.push({
|
|
617
|
-
type: 'velocity',
|
|
618
|
-
severity: 'warning',
|
|
619
|
-
message: 'Sprint velocity below target',
|
|
620
|
-
analysis: this.analyzeVelocityDrop(metrics, sprint),
|
|
621
|
-
suggestion: 'Consider smaller task breakdown or capacity adjustment'
|
|
622
|
-
});
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
// Quality insights
|
|
626
|
-
if (metrics.bugsIntroduced > sprint.previousBugs) {
|
|
627
|
-
insights.push({
|
|
628
|
-
type: 'quality',
|
|
629
|
-
severity: 'warning',
|
|
630
|
-
message: 'Bug introduction rate increased',
|
|
631
|
-
analysis: this.analyzeBugPatterns(sprint),
|
|
632
|
-
suggestion: 'Review test coverage in affected areas'
|
|
633
|
-
});
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
// Efficiency insights
|
|
637
|
-
if (metrics.parallelizationRatio < 0.6) {
|
|
638
|
-
insights.push({
|
|
639
|
-
type: 'efficiency',
|
|
640
|
-
severity: 'info',
|
|
641
|
-
message: 'Low parallelization achieved',
|
|
642
|
-
analysis: 'Many tasks have sequential dependencies',
|
|
643
|
-
suggestion: 'Break down tasks further to enable parallel execution'
|
|
644
|
-
});
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
return insights;
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
private generateRecommendations(
|
|
651
|
-
metrics: SprintMetrics
|
|
652
|
-
): SprintRecommendation[] {
|
|
653
|
-
return [
|
|
654
|
-
// Task sizing recommendations
|
|
655
|
-
...this.taskSizingRecommendations(metrics),
|
|
656
|
-
// Agent allocation recommendations
|
|
657
|
-
...this.agentAllocationRecommendations(metrics),
|
|
658
|
-
// Process improvement recommendations
|
|
659
|
-
...this.processRecommendations(metrics)
|
|
660
|
-
];
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
// Real-time sprint dashboard
|
|
665
|
-
interface SprintDashboard {
|
|
666
|
-
currentPhase: SprintPhase;
|
|
667
|
-
progress: ProgressMetrics;
|
|
668
|
-
activeAgents: ActiveAgent[];
|
|
669
|
-
blockers: Blocker[];
|
|
670
|
-
timeline: TimelineEvent[];
|
|
671
|
-
}
|
|
672
|
-
|
|
673
|
-
const dashboardTemplate = `
|
|
674
|
-
┌─────────────────────────────────────────────────────────────────────────┐
|
|
675
|
-
│ SPRINT DASHBOARD: ${sprintName} │
|
|
676
|
-
├─────────────────────────────────────────────────────────────────────────┤
|
|
677
|
-
│ │
|
|
678
|
-
│ PROGRESS QUALITY AGENTS │
|
|
679
|
-
│ ═════════ ═══════ ══════ │
|
|
680
|
-
│ ████████░░ 80% Coverage: 87% 🟢 arch: idle │
|
|
681
|
-
│ 24/30 tasks Bugs: 2 🔵 dev-1: working │
|
|
682
|
-
│ Security: ✓ 🔵 dev-2: working │
|
|
683
|
-
│ CURRENT PHASE: Execute Perf: ✓ 🟡 tester: queued │
|
|
684
|
-
│ │
|
|
685
|
-
│ TIMELINE │
|
|
686
|
-
│ ════════ │
|
|
687
|
-
│ 09:00 ───●─── Sprint started │
|
|
688
|
-
│ 09:15 ───●─── Foundation phase complete │
|
|
689
|
-
│ 11:30 ───●─── Implementation 60% │
|
|
690
|
-
│ 12:00 ───○─── NOW │
|
|
691
|
-
│ 14:00 ───○─── Integration phase (est.) │
|
|
692
|
-
│ 16:00 ───○─── Sprint end (target) │
|
|
693
|
-
│ │
|
|
694
|
-
└─────────────────────────────────────────────────────────────────────────┘
|
|
695
|
-
`;
|
|
177
|
+
// Dashboard template
|
|
178
|
+
`
|
|
179
|
+
SPRINT DASHBOARD: ${name}
|
|
180
|
+
────────────────────────────────────
|
|
181
|
+
PROGRESS QUALITY AGENTS
|
|
182
|
+
████████░░ 80% Coverage: 87% arch: idle
|
|
183
|
+
24/30 tasks Bugs: 2 dev-1: working
|
|
184
|
+
Security: OK tester: queued
|
|
185
|
+
`
|
|
696
186
|
```
|
|
697
187
|
|
|
698
|
-
###
|
|
188
|
+
### Retrospective Framework
|
|
699
189
|
|
|
700
190
|
```markdown
|
|
701
|
-
##
|
|
702
|
-
|
|
703
|
-
### Sprint Summary
|
|
704
|
-
- Sprint: [Name/Number]
|
|
705
|
-
- Duration: [Start] - [End]
|
|
706
|
-
- Velocity: [X/Y tasks, Z%]
|
|
707
|
-
- Quality: [Coverage %, Bugs introduced]
|
|
708
|
-
|
|
709
|
-
### What Went Well (WWW)
|
|
710
|
-
Document successes to replicate:
|
|
191
|
+
## Sprint Retrospective
|
|
711
192
|
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
193
|
+
### Summary
|
|
194
|
+
- Velocity: X/Y tasks (Z%)
|
|
195
|
+
- Quality: Coverage %, Bugs introduced
|
|
196
|
+
- Efficiency: Tokens used, Parallelization ratio
|
|
716
197
|
|
|
717
|
-
### What
|
|
718
|
-
|
|
198
|
+
### What Went Well
|
|
199
|
+
1. [Success] - Why it worked - How to replicate
|
|
719
200
|
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
- Root cause: [Analysis]
|
|
723
|
-
- Proposed solution: [Action]
|
|
201
|
+
### What Could Improve
|
|
202
|
+
1. [Challenge] - Root cause - Proposed solution
|
|
724
203
|
|
|
725
|
-
###
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
| architect | 5 | 45K | 95% | Excellent type definitions |
|
|
730
|
-
| fullstack-1 | 12 | 180K | 87% | Context switches costly |
|
|
731
|
-
| tester | 8 | 72K | 92% | Good coverage strategy |
|
|
732
|
-
|
|
733
|
-
### Action Items for Next Sprint
|
|
734
|
-
|
|
735
|
-
| Action | Owner | Priority | Due |
|
|
736
|
-
|--------|-------|----------|-----|
|
|
737
|
-
| [Action 1] | [Who] | High | Sprint+1 |
|
|
738
|
-
| [Action 2] | [Who] | Medium | Sprint+1 |
|
|
739
|
-
|
|
740
|
-
### Sprint-over-Sprint Trends
|
|
741
|
-
|
|
742
|
-
```
|
|
743
|
-
Velocity: ▅▆▇█▇ (trending up)
|
|
744
|
-
Quality: ▇▇▇▇█ (stable high)
|
|
745
|
-
Efficiency:▄▅▆▇█ (improving)
|
|
746
|
-
```
|
|
204
|
+
### Action Items
|
|
205
|
+
| Action | Priority | Owner |
|
|
206
|
+
|--------|----------|-------|
|
|
207
|
+
| [Action] | High | [Agent] |
|
|
747
208
|
|
|
748
|
-
###
|
|
749
|
-
|
|
750
|
-
2. [Pattern to encode in agent prompts]
|
|
751
|
-
3. [Process improvement to implement]
|
|
752
|
-
```
|
|
753
|
-
|
|
754
|
-
## Use Cases
|
|
755
|
-
|
|
756
|
-
### Feature Development Sprint
|
|
757
|
-
|
|
758
|
-
```typescript
|
|
759
|
-
/**
|
|
760
|
-
* Complete sprint for building a new feature
|
|
761
|
-
*/
|
|
762
|
-
|
|
763
|
-
async function runFeatureSprint(feature: FeatureRequest): Promise<void> {
|
|
764
|
-
const sprintManager = new SprintManager();
|
|
765
|
-
|
|
766
|
-
// Phase 1: Vision
|
|
767
|
-
const vision = await sprintManager.defineVision({
|
|
768
|
-
objective: feature.description,
|
|
769
|
-
successCriteria: feature.acceptance,
|
|
770
|
-
scope: await sprintManager.analyzeScope(feature)
|
|
771
|
-
});
|
|
772
|
-
|
|
773
|
-
// Phase 2: Plan
|
|
774
|
-
const tasks = await sprintManager.breakdownTasks(vision);
|
|
775
|
-
await sprintManager.validateDependencies(tasks);
|
|
776
|
-
await sprintManager.estimateCapacity(tasks);
|
|
777
|
-
|
|
778
|
-
// Phase 3: Execute
|
|
779
|
-
const result = await sprintManager.executeSprint(tasks, {
|
|
780
|
-
autonomyLevel: 'semi-auto',
|
|
781
|
-
qualityGates: [
|
|
782
|
-
{ type: 'test-coverage', threshold: 80 },
|
|
783
|
-
{ type: 'no-critical-bugs' },
|
|
784
|
-
{ type: 'performance-regression', threshold: '10%' }
|
|
785
|
-
]
|
|
786
|
-
});
|
|
787
|
-
|
|
788
|
-
// Phase 4: Deliver
|
|
789
|
-
if (result.allGatesPassed) {
|
|
790
|
-
await sprintManager.deployToStaging();
|
|
791
|
-
await sprintManager.runSmokeTests();
|
|
792
|
-
await sprintManager.deployToProduction();
|
|
793
|
-
}
|
|
794
|
-
|
|
795
|
-
// Phase 5: Retrospect
|
|
796
|
-
const retro = await sprintManager.generateRetrospective(result);
|
|
797
|
-
await sprintManager.applyLearnings(retro);
|
|
798
|
-
}
|
|
799
|
-
```
|
|
800
|
-
|
|
801
|
-
### Bug Fix Sprint
|
|
802
|
-
|
|
803
|
-
```typescript
|
|
804
|
-
/**
|
|
805
|
-
* Rapid bug fix sprint with debugging focus
|
|
806
|
-
*/
|
|
807
|
-
|
|
808
|
-
async function runBugFixSprint(bugs: Bug[]): Promise<void> {
|
|
809
|
-
const sprint = new SprintManager();
|
|
810
|
-
|
|
811
|
-
// Prioritize by severity
|
|
812
|
-
const prioritized = bugs.sort((a, b) =>
|
|
813
|
-
severityScore(b.severity) - severityScore(a.severity)
|
|
814
|
-
);
|
|
815
|
-
|
|
816
|
-
// Route to debugger agents
|
|
817
|
-
const tasks = prioritized.map(bug => ({
|
|
818
|
-
id: `fix-${bug.id}`,
|
|
819
|
-
title: `Fix: ${bug.title}`,
|
|
820
|
-
type: 'bugfix' as TaskType,
|
|
821
|
-
priority: mapSeverityToPriority(bug.severity),
|
|
822
|
-
suggestedAgent: 'debugger' as AgentType,
|
|
823
|
-
acceptanceCriteria: [
|
|
824
|
-
'Bug no longer reproducible',
|
|
825
|
-
'Regression test added',
|
|
826
|
-
'No new bugs introduced'
|
|
827
|
-
]
|
|
828
|
-
}));
|
|
829
|
-
|
|
830
|
-
// Execute with higher oversight for critical bugs
|
|
831
|
-
await sprint.executeSprint(tasks, {
|
|
832
|
-
autonomyLevel: hasCriticalBugs(bugs) ? 'supervised' : 'semi-auto'
|
|
833
|
-
});
|
|
834
|
-
}
|
|
209
|
+
### Learnings to Encode
|
|
210
|
+
- [Pattern to add to agent prompts]
|
|
835
211
|
```
|
|
836
212
|
|
|
837
213
|
## Best Practices
|
|
838
214
|
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
### Don'ts
|
|
853
|
-
|
|
854
|
-
- Don't start without clear vision and scope
|
|
855
|
-
- Don't create tasks with circular dependencies
|
|
856
|
-
- Don't skip quality gates under time pressure
|
|
857
|
-
- Don't ignore retrospective insights
|
|
858
|
-
- Don't over-commit capacity
|
|
859
|
-
- Don't context-switch agents unnecessarily
|
|
860
|
-
- Don't deploy without automated tests
|
|
861
|
-
- Don't skip the retrospective phase
|
|
862
|
-
- Don't let blockers sit unaddressed
|
|
863
|
-
- Don't forget to update documentation
|
|
864
|
-
|
|
865
|
-
## References
|
|
866
|
-
|
|
867
|
-
- [Agile Manifesto](https://agilemanifesto.org/)
|
|
868
|
-
- [Scrum Guide](https://scrumguides.org/)
|
|
869
|
-
- [Shape Up](https://basecamp.com/shapeup)
|
|
870
|
-
- [Accelerate (DORA Metrics)](https://itrevolution.com/book/accelerate/)
|
|
871
|
-
- [Team Topologies](https://teamtopologies.com/)
|
|
215
|
+
| Do | Avoid |
|
|
216
|
+
|----|-------|
|
|
217
|
+
| Define clear success criteria before sprint | Starting without vision and scope |
|
|
218
|
+
| Break tasks small enough for single-agent | Tasks with circular dependencies |
|
|
219
|
+
| Enable maximum parallelization | Skipping quality gates under pressure |
|
|
220
|
+
| Set appropriate autonomy based on risk | Ignoring retrospective insights |
|
|
221
|
+
| Track metrics consistently | Over-committing capacity |
|
|
222
|
+
| Run retrospectives after every sprint | Context-switching agents unnecessarily |
|
|
223
|
+
| Encode learnings into agent prompts | Deploying without automated tests |
|
|
224
|
+
| Use quality gates to prevent regressions | Letting blockers sit unaddressed |
|
|
225
|
+
| Maintain sprint rhythm for predictability | Skipping the retrospective phase |
|
|
226
|
+
| Celebrate wins to build momentum | Forgetting to update documentation |
|