musubi-sdd 3.0.0 → 3.5.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/bin/musubi-browser.js +0 -0
- package/bin/musubi-change.js +623 -10
- package/bin/musubi-convert.js +0 -0
- package/bin/musubi-gui.js +0 -0
- package/bin/musubi-orchestrate.js +456 -0
- package/bin/musubi-trace.js +393 -0
- package/bin/musubi-validate.js +0 -10
- package/package.json +3 -2
- package/src/analyzers/impact-analyzer.js +682 -0
- package/src/integrations/cicd.js +782 -0
- package/src/integrations/documentation.js +740 -0
- package/src/integrations/examples.js +789 -0
- package/src/integrations/index.js +23 -0
- package/src/integrations/platforms.js +929 -0
- package/src/managers/delta-spec.js +484 -0
- package/src/monitoring/incident-manager.js +890 -0
- package/src/monitoring/index.js +633 -0
- package/src/monitoring/observability.js +938 -0
- package/src/monitoring/release-manager.js +622 -0
- package/src/orchestration/index.js +168 -0
- package/src/orchestration/orchestration-engine.js +409 -0
- package/src/orchestration/pattern-registry.js +319 -0
- package/src/orchestration/patterns/auto.js +386 -0
- package/src/orchestration/patterns/group-chat.js +395 -0
- package/src/orchestration/patterns/human-in-loop.js +506 -0
- package/src/orchestration/patterns/nested.js +322 -0
- package/src/orchestration/patterns/sequential.js +278 -0
- package/src/orchestration/patterns/swarm.js +395 -0
- package/src/orchestration/workflow-orchestrator.js +738 -0
- package/src/reporters/coverage-report.js +452 -0
- package/src/reporters/traceability-matrix-report.js +684 -0
- package/src/steering/advanced-validation.js +812 -0
- package/src/steering/auto-updater.js +670 -0
- package/src/steering/index.js +119 -0
- package/src/steering/quality-metrics.js +650 -0
- package/src/steering/template-constraints.js +789 -0
- package/src/templates/agents/claude-code/skills/agent-assistant/SKILL.md +22 -0
- package/src/templates/agents/claude-code/skills/ai-ml-engineer/mlops-guide.md +350 -0
- package/src/templates/agents/claude-code/skills/ai-ml-engineer/model-card-template.md +246 -0
- package/src/templates/agents/claude-code/skills/api-designer/api-patterns.md +336 -0
- package/src/templates/agents/claude-code/skills/api-designer/openapi-template.md +376 -0
- package/src/templates/agents/claude-code/skills/bug-hunter/root-cause-analysis.md +177 -0
- package/src/templates/agents/claude-code/skills/change-impact-analyzer/dependency-graph-patterns.md +348 -0
- package/src/templates/agents/claude-code/skills/change-impact-analyzer/impact-analysis-template.md +246 -0
- package/src/templates/agents/claude-code/skills/cloud-architect/aws-patterns.md +239 -0
- package/src/templates/agents/claude-code/skills/cloud-architect/azure-patterns.md +300 -0
- package/src/templates/agents/claude-code/skills/cloud-architect/terraform-templates/azure-webapp.tf +337 -0
- package/src/templates/agents/claude-code/skills/code-reviewer/best-practices.md +155 -0
- package/src/templates/agents/claude-code/skills/code-reviewer/review-checklist.md +184 -0
- package/src/templates/agents/claude-code/skills/code-reviewer/review-standards.md +272 -0
- package/src/templates/agents/claude-code/skills/constitution-enforcer/constitutional-articles.md +449 -0
- package/src/templates/agents/claude-code/skills/constitution-enforcer/phase-minus-one-gates.md +375 -0
- package/src/templates/agents/claude-code/skills/database-administrator/backup-recovery.md +331 -0
- package/src/templates/agents/claude-code/skills/database-administrator/tuning-guide.md +314 -0
- package/src/templates/agents/claude-code/skills/database-schema-designer/schema-patterns.md +335 -0
- package/src/templates/agents/claude-code/skills/devops-engineer/ci-cd-templates.md +443 -0
- package/src/templates/agents/claude-code/skills/devops-engineer/pipeline-templates/github-actions.yml +311 -0
- package/src/templates/agents/claude-code/skills/devops-engineer/pipeline-templates/gitlab-ci.yml +255 -0
- package/src/templates/agents/claude-code/skills/issue-resolver/SKILL.md +21 -0
- package/src/templates/agents/claude-code/skills/orchestrator/SKILL.md +90 -28
- package/src/templates/agents/claude-code/skills/orchestrator/patterns.md +266 -0
- package/src/templates/agents/claude-code/skills/orchestrator/selection-matrix.md +185 -0
- package/src/templates/agents/claude-code/skills/performance-engineer/optimization-playbook.md +306 -0
- package/src/templates/agents/claude-code/skills/performance-optimizer/benchmark-template.md +272 -0
- package/src/templates/agents/claude-code/skills/performance-optimizer/optimization-patterns.md +273 -0
- package/src/templates/agents/claude-code/skills/project-manager/SKILL.md +32 -0
- package/src/templates/agents/claude-code/skills/project-manager/agile-ceremonies.md +283 -0
- package/src/templates/agents/claude-code/skills/project-manager/project-templates.md +345 -0
- package/src/templates/agents/claude-code/skills/quality-assurance/qa-plan-template.md +219 -0
- package/src/templates/agents/claude-code/skills/release-coordinator/feature-flag-guide.md +312 -0
- package/src/templates/agents/claude-code/skills/release-coordinator/release-plan-template.md +230 -0
- package/src/templates/agents/claude-code/skills/requirements-analyst/ears-format.md +259 -0
- package/src/templates/agents/claude-code/skills/requirements-analyst/validation-rules.md +359 -0
- package/src/templates/agents/claude-code/skills/security-auditor/audit-checklists.md +243 -0
- package/src/templates/agents/claude-code/skills/security-auditor/owasp-top-10.md +349 -0
- package/src/templates/agents/claude-code/skills/security-auditor/vulnerability-patterns.md +295 -0
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/SKILL.md +27 -0
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/incident-response-template.md +286 -0
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/observability-patterns.md +359 -0
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/slo-sli-guide.md +302 -0
- package/src/templates/agents/claude-code/skills/software-developer/solid-principles.md +348 -0
- package/src/templates/agents/claude-code/skills/software-developer/test-first-workflow.md +370 -0
- package/src/templates/agents/claude-code/skills/steering/SKILL.md +30 -0
- package/src/templates/agents/claude-code/skills/steering/auto-update-rules.md +328 -0
- package/src/templates/agents/claude-code/skills/system-architect/adr-template.md +295 -0
- package/src/templates/agents/claude-code/skills/system-architect/c4-model-guide.md +328 -0
- package/src/templates/agents/claude-code/skills/technical-writer/doc-templates/documentation-templates.md +436 -0
- package/src/templates/agents/claude-code/skills/test-engineer/SKILL.md +21 -0
- package/src/templates/agents/claude-code/skills/test-engineer/ears-test-mapping.md +444 -0
- package/src/templates/agents/claude-code/skills/test-engineer/test-types.md +425 -0
- package/src/templates/agents/claude-code/skills/traceability-auditor/coverage-matrix-template.md +131 -0
- package/src/templates/agents/claude-code/skills/traceability-auditor/gap-detection-rules.md +227 -0
- package/src/templates/agents/claude-code/skills/ui-ux-designer/SKILL.md +27 -0
- package/src/templates/agents/claude-code/skills/ui-ux-designer/accessibility-guidelines.md +318 -0
- package/src/templates/agents/claude-code/skills/ui-ux-designer/design-system-components.md +345 -0
- package/src/templates/agents/codex/AGENTS.md +36 -1
- package/src/templates/agents/cursor/AGENTS.md +36 -1
- package/src/templates/agents/gemini-cli/GEMINI.md +36 -1
- package/src/templates/agents/github-copilot/AGENTS.md +65 -1
- package/src/templates/agents/qwen-code/QWEN.md +36 -1
- package/src/templates/agents/windsurf/AGENTS.md +36 -1
- package/src/templates/shared/delta-spec-template.md +246 -0
- package/src/validators/constitutional-validator.js +494 -0
- package/src/validators/delta-format.js +474 -0
- package/src/validators/traceability-validator.js +561 -0
package/src/templates/agents/claude-code/skills/performance-optimizer/optimization-patterns.md
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# Performance Optimization Patterns
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Common patterns for optimizing application performance.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Caching Patterns
|
|
10
|
+
|
|
11
|
+
### Cache-Aside (Lazy Loading)
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
async function getUser(id: string): Promise<User> {
|
|
15
|
+
// Try cache first
|
|
16
|
+
let user = await cache.get(`user:${id}`);
|
|
17
|
+
|
|
18
|
+
if (!user) {
|
|
19
|
+
// Cache miss - load from DB
|
|
20
|
+
user = await db.users.findById(id);
|
|
21
|
+
await cache.set(`user:${id}`, user, { ttl: 3600 });
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return user;
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Use When**: Read-heavy workloads
|
|
29
|
+
|
|
30
|
+
### Write-Through Cache
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
async function updateUser(id: string, data: Partial<User>): Promise<User> {
|
|
34
|
+
// Update DB
|
|
35
|
+
const user = await db.users.update(id, data);
|
|
36
|
+
|
|
37
|
+
// Update cache
|
|
38
|
+
await cache.set(`user:${id}`, user, { ttl: 3600 });
|
|
39
|
+
|
|
40
|
+
return user;
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Use When**: Data consistency is critical
|
|
45
|
+
|
|
46
|
+
### Cache Invalidation
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
async function deleteUser(id: string): Promise<void> {
|
|
50
|
+
await db.users.delete(id);
|
|
51
|
+
await cache.delete(`user:${id}`);
|
|
52
|
+
await cache.delete(`user:${id}:*`); // Related keys
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 2. Database Patterns
|
|
59
|
+
|
|
60
|
+
### Connection Pooling
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
const pool = new Pool({
|
|
64
|
+
max: 20, // Max connections
|
|
65
|
+
min: 5, // Min connections
|
|
66
|
+
idleTimeoutMillis: 30000,
|
|
67
|
+
connectionTimeoutMillis: 2000,
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Indexing Strategy
|
|
72
|
+
|
|
73
|
+
```sql
|
|
74
|
+
-- Frequently queried columns
|
|
75
|
+
CREATE INDEX idx_users_email ON users(email);
|
|
76
|
+
|
|
77
|
+
-- Composite index for common queries
|
|
78
|
+
CREATE INDEX idx_orders_user_date ON orders(user_id, created_at DESC);
|
|
79
|
+
|
|
80
|
+
-- Partial index for filtered queries
|
|
81
|
+
CREATE INDEX idx_active_users ON users(id) WHERE status = 'active';
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Query Optimization
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
// BAD: N+1 Query
|
|
88
|
+
const users = await User.findAll();
|
|
89
|
+
for (const user of users) {
|
|
90
|
+
user.orders = await Order.findByUserId(user.id); // N queries!
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// GOOD: Eager loading
|
|
94
|
+
const users = await User.findAll({
|
|
95
|
+
include: [{ model: Order }] // 1 query with JOIN
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Pagination
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
// Offset pagination (simple but slow for large offsets)
|
|
103
|
+
const page = await db.query(
|
|
104
|
+
'SELECT * FROM items LIMIT $1 OFFSET $2',
|
|
105
|
+
[pageSize, (page - 1) * pageSize]
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
// Cursor pagination (efficient)
|
|
109
|
+
const page = await db.query(
|
|
110
|
+
'SELECT * FROM items WHERE id > $1 ORDER BY id LIMIT $2',
|
|
111
|
+
[lastSeenId, pageSize]
|
|
112
|
+
);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 3. API Patterns
|
|
118
|
+
|
|
119
|
+
### Response Compression
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
import compression from 'compression';
|
|
123
|
+
app.use(compression());
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Field Selection (Sparse Fieldsets)
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
// GET /users?fields=id,name,email
|
|
130
|
+
app.get('/users', (req, res) => {
|
|
131
|
+
const fields = req.query.fields?.split(',') || ['*'];
|
|
132
|
+
const users = await db.query(
|
|
133
|
+
`SELECT ${fields.join(',')} FROM users`
|
|
134
|
+
);
|
|
135
|
+
res.json(users);
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Batch Operations
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
// BAD: Multiple requests
|
|
143
|
+
await api.getUser(1);
|
|
144
|
+
await api.getUser(2);
|
|
145
|
+
await api.getUser(3);
|
|
146
|
+
|
|
147
|
+
// GOOD: Batch request
|
|
148
|
+
await api.getUsers([1, 2, 3]);
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 4. Async Patterns
|
|
154
|
+
|
|
155
|
+
### Background Jobs
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
// Don't block request for slow operations
|
|
159
|
+
app.post('/orders', async (req, res) => {
|
|
160
|
+
const order = await createOrder(req.body);
|
|
161
|
+
|
|
162
|
+
// Queue async tasks
|
|
163
|
+
await queue.add('send-confirmation-email', { orderId: order.id });
|
|
164
|
+
await queue.add('update-inventory', { orderId: order.id });
|
|
165
|
+
|
|
166
|
+
res.json(order); // Respond immediately
|
|
167
|
+
});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Parallel Execution
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
// BAD: Sequential
|
|
174
|
+
const users = await getUsers();
|
|
175
|
+
const products = await getProducts();
|
|
176
|
+
const orders = await getOrders();
|
|
177
|
+
|
|
178
|
+
// GOOD: Parallel
|
|
179
|
+
const [users, products, orders] = await Promise.all([
|
|
180
|
+
getUsers(),
|
|
181
|
+
getProducts(),
|
|
182
|
+
getOrders()
|
|
183
|
+
]);
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 5. Frontend Patterns
|
|
189
|
+
|
|
190
|
+
### Code Splitting
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
// Lazy load routes
|
|
194
|
+
const Dashboard = React.lazy(() => import('./Dashboard'));
|
|
195
|
+
const Settings = React.lazy(() => import('./Settings'));
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Image Optimization
|
|
199
|
+
|
|
200
|
+
```html
|
|
201
|
+
<!-- Responsive images -->
|
|
202
|
+
<img
|
|
203
|
+
srcset="image-300.jpg 300w, image-600.jpg 600w"
|
|
204
|
+
sizes="(max-width: 600px) 300px, 600px"
|
|
205
|
+
loading="lazy"
|
|
206
|
+
alt="Product"
|
|
207
|
+
/>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Debouncing
|
|
211
|
+
|
|
212
|
+
```typescript
|
|
213
|
+
// Debounce search input
|
|
214
|
+
const debouncedSearch = debounce((query) => {
|
|
215
|
+
api.search(query);
|
|
216
|
+
}, 300);
|
|
217
|
+
|
|
218
|
+
input.addEventListener('input', (e) => {
|
|
219
|
+
debouncedSearch(e.target.value);
|
|
220
|
+
});
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## 6. Performance Metrics
|
|
226
|
+
|
|
227
|
+
### Key Metrics
|
|
228
|
+
|
|
229
|
+
| Metric | Target | Tool |
|
|
230
|
+
|--------|--------|------|
|
|
231
|
+
| TTFB | < 200ms | Lighthouse |
|
|
232
|
+
| FCP | < 1.8s | Lighthouse |
|
|
233
|
+
| LCP | < 2.5s | Lighthouse |
|
|
234
|
+
| API p95 | < 200ms | APM |
|
|
235
|
+
| DB p95 | < 50ms | DB monitoring |
|
|
236
|
+
|
|
237
|
+
### Monitoring Queries
|
|
238
|
+
|
|
239
|
+
```sql
|
|
240
|
+
-- Slow queries (PostgreSQL)
|
|
241
|
+
SELECT query, calls, mean_time, total_time
|
|
242
|
+
FROM pg_stat_statements
|
|
243
|
+
ORDER BY mean_time DESC
|
|
244
|
+
LIMIT 10;
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Optimization Checklist
|
|
250
|
+
|
|
251
|
+
### Database
|
|
252
|
+
- [ ] Indexes on frequently queried columns
|
|
253
|
+
- [ ] Connection pooling configured
|
|
254
|
+
- [ ] N+1 queries eliminated
|
|
255
|
+
- [ ] Query plans analyzed (EXPLAIN)
|
|
256
|
+
|
|
257
|
+
### API
|
|
258
|
+
- [ ] Response compression enabled
|
|
259
|
+
- [ ] Pagination implemented
|
|
260
|
+
- [ ] Caching strategy in place
|
|
261
|
+
- [ ] Slow operations moved to background
|
|
262
|
+
|
|
263
|
+
### Frontend
|
|
264
|
+
- [ ] Code splitting implemented
|
|
265
|
+
- [ ] Images optimized and lazy loaded
|
|
266
|
+
- [ ] CDN for static assets
|
|
267
|
+
- [ ] Bundle size analyzed
|
|
268
|
+
|
|
269
|
+
### Infrastructure
|
|
270
|
+
- [ ] Auto-scaling configured
|
|
271
|
+
- [ ] Load balancing in place
|
|
272
|
+
- [ ] CDN configured
|
|
273
|
+
- [ ] Monitoring and alerts
|
|
@@ -28,6 +28,38 @@ You are a project manager for software development projects who handles project
|
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
+
## Multi-Skill Orchestration (v3.5.0 NEW)
|
|
32
|
+
|
|
33
|
+
`musubi-orchestrate` CLI で複数のスキルを協調させてタスクを実行できます:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# タスクに最適なスキルを自動選択して実行
|
|
37
|
+
musubi-orchestrate auto "ユーザー認証機能を設計して実装"
|
|
38
|
+
|
|
39
|
+
# 指定したスキルを順番に実行
|
|
40
|
+
musubi-orchestrate sequential --skills requirements-analyst system-architect software-developer
|
|
41
|
+
|
|
42
|
+
# オーケストレーションパターンを指定して実行
|
|
43
|
+
musubi-orchestrate run group-chat --skills security-auditor code-reviewer performance-optimizer
|
|
44
|
+
|
|
45
|
+
# 利用可能なパターンを一覧表示
|
|
46
|
+
musubi-orchestrate list-patterns
|
|
47
|
+
|
|
48
|
+
# 利用可能なスキルを一覧表示
|
|
49
|
+
musubi-orchestrate list-skills
|
|
50
|
+
|
|
51
|
+
# オーケストレーション状態を確認
|
|
52
|
+
musubi-orchestrate status
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**オーケストレーションパターン**:
|
|
56
|
+
- **auto**: タスク内容から最適なスキルを自動選択
|
|
57
|
+
- **sequential**: スキルを順番に実行(依存関係を考慮)
|
|
58
|
+
- **group-chat**: 複数スキルが協議して結論を出す
|
|
59
|
+
- **nested**: 階層的にスキルを委譲
|
|
60
|
+
- **swarm**: 並列実行(P-label戦略)
|
|
61
|
+
- **human-in-loop**: 人間の承認ゲートを含むワークフロー
|
|
62
|
+
|
|
31
63
|
---
|
|
32
64
|
|
|
33
65
|
## Project Memory (Steering System)
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# Agile Ceremonies Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Guide for running effective Agile ceremonies.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Ceremony Overview
|
|
10
|
+
|
|
11
|
+
| Ceremony | Frequency | Duration | Participants |
|
|
12
|
+
|----------|-----------|----------|--------------|
|
|
13
|
+
| Sprint Planning | Sprint start | 2-4 hours | Team, PO |
|
|
14
|
+
| Daily Standup | Daily | 15 min | Team |
|
|
15
|
+
| Sprint Review | Sprint end | 1-2 hours | Team, PO, Stakeholders |
|
|
16
|
+
| Retrospective | Sprint end | 1-2 hours | Team |
|
|
17
|
+
| Backlog Refinement | Weekly | 1 hour | Team, PO |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Sprint Planning
|
|
22
|
+
|
|
23
|
+
### Objectives
|
|
24
|
+
1. Define sprint goal
|
|
25
|
+
2. Select user stories
|
|
26
|
+
3. Create task breakdown
|
|
27
|
+
|
|
28
|
+
### Agenda
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
## Sprint Planning Agenda (2 hours)
|
|
32
|
+
|
|
33
|
+
1. **Review** (15 min)
|
|
34
|
+
- Velocity trends
|
|
35
|
+
- Capacity for sprint
|
|
36
|
+
- Carryover items
|
|
37
|
+
|
|
38
|
+
2. **Sprint Goal** (15 min)
|
|
39
|
+
- PO presents priorities
|
|
40
|
+
- Team discusses goal
|
|
41
|
+
- Agree on sprint goal
|
|
42
|
+
|
|
43
|
+
3. **Story Selection** (45 min)
|
|
44
|
+
- Review top backlog items
|
|
45
|
+
- Clarify requirements
|
|
46
|
+
- Estimate if needed
|
|
47
|
+
- Commit to stories
|
|
48
|
+
|
|
49
|
+
4. **Task Breakdown** (45 min)
|
|
50
|
+
- Break stories into tasks
|
|
51
|
+
- Identify dependencies
|
|
52
|
+
- Assign initial owners
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Best Practices
|
|
56
|
+
- Come prepared with refined backlog
|
|
57
|
+
- Focus on "what" not "how"
|
|
58
|
+
- Don't overcommit
|
|
59
|
+
- Ensure stories meet Definition of Ready
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Daily Standup
|
|
64
|
+
|
|
65
|
+
### Format
|
|
66
|
+
|
|
67
|
+
Each team member answers:
|
|
68
|
+
1. What did I complete yesterday?
|
|
69
|
+
2. What will I work on today?
|
|
70
|
+
3. Do I have any blockers?
|
|
71
|
+
|
|
72
|
+
### Anti-patterns to Avoid
|
|
73
|
+
|
|
74
|
+
| Anti-pattern | Better Approach |
|
|
75
|
+
|--------------|-----------------|
|
|
76
|
+
| Status report to manager | Team sync |
|
|
77
|
+
| Solving problems in standup | Take offline |
|
|
78
|
+
| Going over 15 minutes | Keep it short |
|
|
79
|
+
| Only talking to Scrum Master | Talk to team |
|
|
80
|
+
| Sitting down | Stand up (energy) |
|
|
81
|
+
|
|
82
|
+
### Virtual Standup Tips
|
|
83
|
+
- Camera on
|
|
84
|
+
- Mute when not speaking
|
|
85
|
+
- Use visual board
|
|
86
|
+
- Same time daily
|
|
87
|
+
- Async option: posted update by 9am
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Sprint Review (Demo)
|
|
92
|
+
|
|
93
|
+
### Objectives
|
|
94
|
+
1. Demonstrate completed work
|
|
95
|
+
2. Get stakeholder feedback
|
|
96
|
+
3. Discuss backlog priorities
|
|
97
|
+
|
|
98
|
+
### Agenda
|
|
99
|
+
|
|
100
|
+
```markdown
|
|
101
|
+
## Sprint Review Agenda (1 hour)
|
|
102
|
+
|
|
103
|
+
1. **Introduction** (5 min)
|
|
104
|
+
- Sprint goal recap
|
|
105
|
+
- What was committed vs completed
|
|
106
|
+
|
|
107
|
+
2. **Demonstrations** (40 min)
|
|
108
|
+
- Demo each completed story
|
|
109
|
+
- Get feedback per item
|
|
110
|
+
- Note questions for later
|
|
111
|
+
|
|
112
|
+
3. **Metrics Review** (5 min)
|
|
113
|
+
- Velocity
|
|
114
|
+
- Burndown
|
|
115
|
+
- Quality metrics
|
|
116
|
+
|
|
117
|
+
4. **Backlog Discussion** (10 min)
|
|
118
|
+
- Upcoming priorities
|
|
119
|
+
- Feedback impact on backlog
|
|
120
|
+
- Release timeline
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Tips for Good Demos
|
|
124
|
+
- Use real scenarios
|
|
125
|
+
- Show working software
|
|
126
|
+
- Keep it interactive
|
|
127
|
+
- Collect feedback actively
|
|
128
|
+
- Celebrate accomplishments
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Retrospective
|
|
133
|
+
|
|
134
|
+
### Objectives
|
|
135
|
+
1. Reflect on the sprint
|
|
136
|
+
2. Identify improvements
|
|
137
|
+
3. Create action items
|
|
138
|
+
|
|
139
|
+
### Formats
|
|
140
|
+
|
|
141
|
+
#### Start/Stop/Continue
|
|
142
|
+
```
|
|
143
|
+
🟢 START doing: [What new things should we try?]
|
|
144
|
+
🔴 STOP doing: [What's not working?]
|
|
145
|
+
🔵 CONTINUE doing: [What's working well?]
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
#### 4Ls
|
|
149
|
+
```
|
|
150
|
+
😍 LIKED: [What did you like?]
|
|
151
|
+
📚 LEARNED: [What did you learn?]
|
|
152
|
+
😕 LACKED: [What was missing?]
|
|
153
|
+
🔮 LONGED FOR: [What do you wish for?]
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
#### Sailboat
|
|
157
|
+
```
|
|
158
|
+
⛵ WIND (helps us): [What's pushing us forward?]
|
|
159
|
+
⚓ ANCHOR (slows us): [What's holding us back?]
|
|
160
|
+
🪨 ROCKS (risks): [What dangers are ahead?]
|
|
161
|
+
🏝️ ISLAND (goal): [Where do we want to go?]
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Facilitation Tips
|
|
165
|
+
- Safe space - no blame
|
|
166
|
+
- Everyone participates
|
|
167
|
+
- Time-box discussions
|
|
168
|
+
- Vote on top items
|
|
169
|
+
- Limit action items (2-3)
|
|
170
|
+
- Follow up next retro
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Backlog Refinement
|
|
175
|
+
|
|
176
|
+
### Objectives
|
|
177
|
+
1. Clarify upcoming stories
|
|
178
|
+
2. Estimate stories
|
|
179
|
+
3. Break down large items
|
|
180
|
+
|
|
181
|
+
### Agenda
|
|
182
|
+
|
|
183
|
+
```markdown
|
|
184
|
+
## Refinement Agenda (1 hour)
|
|
185
|
+
|
|
186
|
+
1. **Review Action Items** (5 min)
|
|
187
|
+
- From last refinement
|
|
188
|
+
|
|
189
|
+
2. **Epic Review** (10 min)
|
|
190
|
+
- Status of in-flight epics
|
|
191
|
+
- Upcoming epics overview
|
|
192
|
+
|
|
193
|
+
3. **Story Refinement** (40 min)
|
|
194
|
+
- Review 3-5 stories
|
|
195
|
+
- Clarify requirements
|
|
196
|
+
- Add acceptance criteria
|
|
197
|
+
- Estimate (story points)
|
|
198
|
+
|
|
199
|
+
4. **Wrap Up** (5 min)
|
|
200
|
+
- Action items
|
|
201
|
+
- Stories ready for sprint
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Definition of Ready
|
|
205
|
+
|
|
206
|
+
Story is ready when:
|
|
207
|
+
- [ ] Clearly written with user perspective
|
|
208
|
+
- [ ] Acceptance criteria defined
|
|
209
|
+
- [ ] Estimated by team
|
|
210
|
+
- [ ] Dependencies identified
|
|
211
|
+
- [ ] Small enough for one sprint
|
|
212
|
+
- [ ] Testable
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Estimation Techniques
|
|
217
|
+
|
|
218
|
+
### Planning Poker
|
|
219
|
+
|
|
220
|
+
| Points | Meaning |
|
|
221
|
+
|--------|---------|
|
|
222
|
+
| 1 | Trivial |
|
|
223
|
+
| 2 | Simple |
|
|
224
|
+
| 3 | Moderate |
|
|
225
|
+
| 5 | Complex |
|
|
226
|
+
| 8 | Very Complex |
|
|
227
|
+
| 13 | Epic-sized (split it) |
|
|
228
|
+
|
|
229
|
+
### T-Shirt Sizing
|
|
230
|
+
|
|
231
|
+
| Size | Relative Effort |
|
|
232
|
+
|------|-----------------|
|
|
233
|
+
| XS | Hours |
|
|
234
|
+
| S | 1-2 days |
|
|
235
|
+
| M | 3-5 days |
|
|
236
|
+
| L | 1-2 weeks |
|
|
237
|
+
| XL | Needs breakdown |
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Remote Ceremony Tips
|
|
242
|
+
|
|
243
|
+
### Tools
|
|
244
|
+
- Video: Zoom, Teams
|
|
245
|
+
- Board: Miro, Mural
|
|
246
|
+
- Voting: Mentimeter
|
|
247
|
+
- Timer: Online stopwatch
|
|
248
|
+
|
|
249
|
+
### Best Practices
|
|
250
|
+
- Camera on for engagement
|
|
251
|
+
- Use virtual whiteboard
|
|
252
|
+
- More breaks for longer sessions
|
|
253
|
+
- Async pre-work reduces time
|
|
254
|
+
- Clear facilitation hand-offs
|
|
255
|
+
- Record for absent members
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Ceremony Health Check
|
|
260
|
+
|
|
261
|
+
### Sprint Planning
|
|
262
|
+
- [ ] Sprint goal is clear
|
|
263
|
+
- [ ] Team has capacity
|
|
264
|
+
- [ ] Stories are refined
|
|
265
|
+
- [ ] Commitment is realistic
|
|
266
|
+
|
|
267
|
+
### Daily Standup
|
|
268
|
+
- [ ] Starts on time
|
|
269
|
+
- [ ] Finishes in 15 min
|
|
270
|
+
- [ ] Blockers are raised
|
|
271
|
+
- [ ] Team is engaged
|
|
272
|
+
|
|
273
|
+
### Sprint Review
|
|
274
|
+
- [ ] Working software shown
|
|
275
|
+
- [ ] Stakeholders present
|
|
276
|
+
- [ ] Feedback captured
|
|
277
|
+
- [ ] Team celebrated
|
|
278
|
+
|
|
279
|
+
### Retrospective
|
|
280
|
+
- [ ] Safe environment
|
|
281
|
+
- [ ] Everyone participated
|
|
282
|
+
- [ ] Actions are specific
|
|
283
|
+
- [ ] Previous actions reviewed
|