musubi-sdd 5.0.0 → 5.6.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.ja.md +106 -48
- package/README.md +110 -32
- package/bin/musubi-analyze.js +74 -67
- package/bin/musubi-browser.js +27 -26
- package/bin/musubi-change.js +48 -47
- package/bin/musubi-checkpoint.js +10 -7
- package/bin/musubi-convert.js +25 -25
- package/bin/musubi-costs.js +27 -10
- package/bin/musubi-gui.js +52 -46
- package/bin/musubi-init.js +1952 -10
- package/bin/musubi-orchestrate.js +327 -239
- package/bin/musubi-remember.js +69 -56
- package/bin/musubi-resolve.js +53 -45
- package/bin/musubi-trace.js +51 -22
- package/bin/musubi-validate.js +39 -30
- package/bin/musubi-workflow.js +33 -34
- package/bin/musubi.js +39 -2
- package/package.json +1 -1
- package/src/agents/agent-loop.js +94 -95
- package/src/agents/agentic/code-generator.js +119 -109
- package/src/agents/agentic/code-reviewer.js +105 -108
- package/src/agents/agentic/index.js +4 -4
- package/src/agents/browser/action-executor.js +13 -13
- package/src/agents/browser/ai-comparator.js +11 -10
- package/src/agents/browser/context-manager.js +6 -6
- package/src/agents/browser/index.js +5 -5
- package/src/agents/browser/nl-parser.js +31 -46
- package/src/agents/browser/screenshot.js +2 -2
- package/src/agents/browser/test-generator.js +6 -4
- package/src/agents/function-tool.js +71 -65
- package/src/agents/index.js +7 -7
- package/src/agents/schema-generator.js +98 -94
- package/src/analyzers/ast-extractor.js +164 -145
- package/src/analyzers/codegraph-auto-update.js +858 -0
- package/src/analyzers/complexity-analyzer.js +536 -0
- package/src/analyzers/context-optimizer.js +247 -125
- package/src/analyzers/impact-analyzer.js +1 -1
- package/src/analyzers/large-project-analyzer.js +766 -0
- package/src/analyzers/repository-map.js +83 -80
- package/src/analyzers/security-analyzer.js +19 -11
- package/src/analyzers/stuck-detector.js +19 -17
- package/src/converters/index.js +78 -57
- package/src/converters/ir/types.js +12 -12
- package/src/converters/parsers/musubi-parser.js +134 -126
- package/src/converters/parsers/openapi-parser.js +70 -53
- package/src/converters/parsers/speckit-parser.js +239 -175
- package/src/converters/writers/musubi-writer.js +123 -118
- package/src/converters/writers/speckit-writer.js +124 -113
- package/src/generators/rust-migration-generator.js +512 -0
- package/src/gui/public/index.html +1365 -1211
- package/src/gui/server.js +41 -40
- package/src/gui/services/file-watcher.js +23 -8
- package/src/gui/services/project-scanner.js +26 -20
- package/src/gui/services/replanning-service.js +27 -23
- package/src/gui/services/traceability-service.js +8 -8
- package/src/gui/services/workflow-service.js +14 -7
- package/src/index.js +151 -0
- package/src/integrations/cicd.js +90 -104
- package/src/integrations/codegraph-mcp.js +643 -0
- package/src/integrations/documentation.js +142 -103
- package/src/integrations/examples.js +95 -80
- package/src/integrations/github-client.js +17 -17
- package/src/integrations/index.js +5 -5
- package/src/integrations/mcp/index.js +21 -21
- package/src/integrations/mcp/mcp-context-provider.js +76 -78
- package/src/integrations/mcp/mcp-discovery.js +74 -72
- package/src/integrations/mcp/mcp-tool-registry.js +99 -94
- package/src/integrations/mcp-connector.js +70 -66
- package/src/integrations/platforms.js +50 -49
- package/src/integrations/tool-discovery.js +37 -31
- package/src/llm-providers/anthropic-provider.js +11 -11
- package/src/llm-providers/base-provider.js +16 -18
- package/src/llm-providers/copilot-provider.js +22 -19
- package/src/llm-providers/index.js +26 -25
- package/src/llm-providers/ollama-provider.js +11 -11
- package/src/llm-providers/openai-provider.js +12 -12
- package/src/managers/agent-memory.js +36 -24
- package/src/managers/checkpoint-manager.js +4 -8
- package/src/managers/delta-spec.js +19 -19
- package/src/managers/index.js +13 -4
- package/src/managers/memory-condenser.js +35 -45
- package/src/managers/repo-skill-manager.js +57 -31
- package/src/managers/skill-loader.js +25 -22
- package/src/managers/skill-tools.js +36 -72
- package/src/managers/workflow.js +30 -22
- package/src/monitoring/cost-tracker.js +53 -44
- package/src/monitoring/incident-manager.js +123 -103
- package/src/monitoring/index.js +144 -134
- package/src/monitoring/observability.js +82 -59
- package/src/monitoring/quality-dashboard.js +51 -39
- package/src/monitoring/release-manager.js +70 -50
- package/src/orchestration/agent-skill-binding.js +39 -47
- package/src/orchestration/error-handler.js +65 -107
- package/src/orchestration/guardrails/base-guardrail.js +26 -24
- package/src/orchestration/guardrails/guardrail-rules.js +50 -64
- package/src/orchestration/guardrails/index.js +5 -5
- package/src/orchestration/guardrails/input-guardrail.js +58 -45
- package/src/orchestration/guardrails/output-guardrail.js +104 -81
- package/src/orchestration/guardrails/safety-check.js +79 -79
- package/src/orchestration/index.js +38 -55
- package/src/orchestration/mcp-tool-adapters.js +96 -99
- package/src/orchestration/orchestration-engine.js +21 -21
- package/src/orchestration/pattern-registry.js +60 -45
- package/src/orchestration/patterns/auto.js +34 -47
- package/src/orchestration/patterns/group-chat.js +59 -65
- package/src/orchestration/patterns/handoff.js +67 -65
- package/src/orchestration/patterns/human-in-loop.js +51 -72
- package/src/orchestration/patterns/nested.js +25 -40
- package/src/orchestration/patterns/sequential.js +35 -34
- package/src/orchestration/patterns/swarm.js +63 -56
- package/src/orchestration/patterns/triage.js +150 -109
- package/src/orchestration/reasoning/index.js +9 -9
- package/src/orchestration/reasoning/planning-engine.js +143 -140
- package/src/orchestration/reasoning/reasoning-engine.js +206 -144
- package/src/orchestration/reasoning/self-correction.js +121 -128
- package/src/orchestration/replanning/adaptive-goal-modifier.js +107 -112
- package/src/orchestration/replanning/alternative-generator.js +37 -42
- package/src/orchestration/replanning/config.js +63 -59
- package/src/orchestration/replanning/goal-progress-tracker.js +98 -100
- package/src/orchestration/replanning/index.js +24 -20
- package/src/orchestration/replanning/plan-evaluator.js +49 -50
- package/src/orchestration/replanning/plan-monitor.js +32 -28
- package/src/orchestration/replanning/proactive-path-optimizer.js +175 -178
- package/src/orchestration/replanning/replan-history.js +33 -26
- package/src/orchestration/replanning/replanning-engine.js +106 -108
- package/src/orchestration/skill-executor.js +107 -109
- package/src/orchestration/skill-registry.js +85 -89
- package/src/orchestration/workflow-examples.js +228 -231
- package/src/orchestration/workflow-executor.js +65 -68
- package/src/orchestration/workflow-orchestrator.js +72 -73
- package/src/phase4-integration.js +47 -40
- package/src/phase5-integration.js +89 -30
- package/src/reporters/coverage-report.js +82 -30
- package/src/reporters/hierarchical-reporter.js +498 -0
- package/src/reporters/traceability-matrix-report.js +29 -20
- package/src/resolvers/issue-resolver.js +43 -31
- package/src/steering/advanced-validation.js +133 -124
- package/src/steering/auto-updater.js +60 -73
- package/src/steering/index.js +6 -6
- package/src/steering/quality-metrics.js +41 -35
- package/src/steering/steering-auto-update.js +83 -86
- package/src/steering/steering-validator.js +98 -106
- package/src/steering/template-constraints.js +53 -54
- package/src/templates/agents/claude-code/CLAUDE.md +32 -32
- package/src/templates/agents/claude-code/skills/agent-assistant/SKILL.md +13 -5
- package/src/templates/agents/claude-code/skills/ai-ml-engineer/mlops-guide.md +23 -23
- package/src/templates/agents/claude-code/skills/ai-ml-engineer/model-card-template.md +60 -41
- package/src/templates/agents/claude-code/skills/api-designer/api-patterns.md +27 -19
- package/src/templates/agents/claude-code/skills/api-designer/openapi-template.md +11 -7
- package/src/templates/agents/claude-code/skills/bug-hunter/SKILL.md +4 -3
- package/src/templates/agents/claude-code/skills/bug-hunter/root-cause-analysis.md +37 -15
- package/src/templates/agents/claude-code/skills/change-impact-analyzer/dependency-graph-patterns.md +36 -42
- package/src/templates/agents/claude-code/skills/change-impact-analyzer/impact-analysis-template.md +69 -60
- package/src/templates/agents/claude-code/skills/cloud-architect/aws-patterns.md +31 -38
- package/src/templates/agents/claude-code/skills/cloud-architect/azure-patterns.md +28 -23
- package/src/templates/agents/claude-code/skills/code-reviewer/SKILL.md +61 -0
- package/src/templates/agents/claude-code/skills/code-reviewer/best-practices.md +27 -0
- package/src/templates/agents/claude-code/skills/code-reviewer/review-checklist.md +29 -10
- package/src/templates/agents/claude-code/skills/code-reviewer/review-standards.md +29 -24
- package/src/templates/agents/claude-code/skills/constitution-enforcer/SKILL.md +8 -6
- package/src/templates/agents/claude-code/skills/constitution-enforcer/constitutional-articles.md +62 -26
- package/src/templates/agents/claude-code/skills/constitution-enforcer/phase-minus-one-gates.md +35 -16
- package/src/templates/agents/claude-code/skills/database-administrator/backup-recovery.md +27 -17
- package/src/templates/agents/claude-code/skills/database-administrator/tuning-guide.md +25 -20
- package/src/templates/agents/claude-code/skills/database-schema-designer/schema-patterns.md +39 -22
- package/src/templates/agents/claude-code/skills/devops-engineer/ci-cd-templates.md +25 -22
- package/src/templates/agents/claude-code/skills/issue-resolver/SKILL.md +24 -21
- package/src/templates/agents/claude-code/skills/orchestrator/SKILL.md +148 -63
- package/src/templates/agents/claude-code/skills/orchestrator/patterns.md +35 -16
- package/src/templates/agents/claude-code/skills/orchestrator/selection-matrix.md +69 -64
- package/src/templates/agents/claude-code/skills/performance-engineer/optimization-playbook.md +47 -47
- package/src/templates/agents/claude-code/skills/performance-optimizer/SKILL.md +69 -0
- package/src/templates/agents/claude-code/skills/performance-optimizer/benchmark-template.md +63 -45
- package/src/templates/agents/claude-code/skills/performance-optimizer/optimization-patterns.md +33 -35
- package/src/templates/agents/claude-code/skills/project-manager/SKILL.md +7 -6
- package/src/templates/agents/claude-code/skills/project-manager/agile-ceremonies.md +47 -28
- package/src/templates/agents/claude-code/skills/project-manager/project-templates.md +94 -78
- package/src/templates/agents/claude-code/skills/quality-assurance/SKILL.md +20 -17
- package/src/templates/agents/claude-code/skills/quality-assurance/qa-plan-template.md +63 -49
- package/src/templates/agents/claude-code/skills/release-coordinator/SKILL.md +5 -5
- package/src/templates/agents/claude-code/skills/release-coordinator/feature-flag-guide.md +30 -26
- package/src/templates/agents/claude-code/skills/release-coordinator/release-plan-template.md +67 -35
- package/src/templates/agents/claude-code/skills/requirements-analyst/ears-format.md +54 -42
- package/src/templates/agents/claude-code/skills/requirements-analyst/validation-rules.md +36 -33
- package/src/templates/agents/claude-code/skills/security-auditor/SKILL.md +77 -19
- package/src/templates/agents/claude-code/skills/security-auditor/audit-checklists.md +24 -24
- package/src/templates/agents/claude-code/skills/security-auditor/owasp-top-10.md +61 -20
- package/src/templates/agents/claude-code/skills/security-auditor/vulnerability-patterns.md +43 -11
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/SKILL.md +1 -0
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/incident-response-template.md +55 -25
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/observability-patterns.md +78 -68
- package/src/templates/agents/claude-code/skills/site-reliability-engineer/slo-sli-guide.md +73 -53
- package/src/templates/agents/claude-code/skills/software-developer/solid-principles.md +83 -37
- package/src/templates/agents/claude-code/skills/software-developer/test-first-workflow.md +38 -31
- package/src/templates/agents/claude-code/skills/steering/SKILL.md +1 -0
- package/src/templates/agents/claude-code/skills/steering/auto-update-rules.md +31 -0
- package/src/templates/agents/claude-code/skills/system-architect/adr-template.md +25 -7
- package/src/templates/agents/claude-code/skills/system-architect/c4-model-guide.md +74 -61
- package/src/templates/agents/claude-code/skills/technical-writer/doc-templates/documentation-templates.md +70 -52
- package/src/templates/agents/claude-code/skills/test-engineer/SKILL.md +2 -0
- package/src/templates/agents/claude-code/skills/test-engineer/ears-test-mapping.md +75 -71
- package/src/templates/agents/claude-code/skills/test-engineer/test-types.md +85 -63
- package/src/templates/agents/claude-code/skills/traceability-auditor/coverage-matrix-template.md +39 -36
- package/src/templates/agents/claude-code/skills/traceability-auditor/gap-detection-rules.md +22 -17
- package/src/templates/agents/claude-code/skills/ui-ux-designer/SKILL.md +1 -0
- package/src/templates/agents/claude-code/skills/ui-ux-designer/accessibility-guidelines.md +49 -75
- package/src/templates/agents/claude-code/skills/ui-ux-designer/design-system-components.md +71 -59
- package/src/templates/agents/codex/AGENTS.md +74 -42
- package/src/templates/agents/cursor/AGENTS.md +74 -42
- package/src/templates/agents/gemini-cli/GEMINI.md +74 -42
- package/src/templates/agents/github-copilot/AGENTS.md +83 -51
- package/src/templates/agents/qwen-code/QWEN.md +74 -42
- package/src/templates/agents/windsurf/AGENTS.md +74 -42
- package/src/templates/architectures/README.md +41 -0
- package/src/templates/architectures/clean-architecture/README.md +113 -0
- package/src/templates/architectures/event-driven/README.md +162 -0
- package/src/templates/architectures/hexagonal/README.md +130 -0
- package/src/templates/index.js +6 -1
- package/src/templates/locale-manager.js +16 -16
- package/src/templates/shared/delta-spec-template.md +20 -13
- package/src/templates/shared/github-actions/musubi-issue-resolver.yml +5 -5
- package/src/templates/shared/github-actions/musubi-security-check.yml +3 -3
- package/src/templates/shared/github-actions/musubi-validate.yml +4 -4
- package/src/templates/shared/steering/structure.md +95 -0
- package/src/templates/skills/browser-agent.md +21 -16
- package/src/templates/skills/web-gui.md +8 -0
- package/src/templates/template-constraints.js +50 -53
- package/src/validators/advanced-validation.js +30 -36
- package/src/validators/constitutional-validator.js +77 -73
- package/src/validators/critic-system.js +49 -59
- package/src/validators/delta-format.js +59 -55
- package/src/validators/traceability-validator.js +7 -11
|
@@ -8,68 +8,76 @@ Template for conducting performance benchmarks.
|
|
|
8
8
|
|
|
9
9
|
## Benchmark Document
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
````markdown
|
|
12
12
|
# Performance Benchmark Report
|
|
13
13
|
|
|
14
14
|
## Metadata
|
|
15
15
|
|
|
16
|
-
| Field
|
|
17
|
-
|
|
18
|
-
| Component
|
|
19
|
-
| Date
|
|
20
|
-
| Environment | [dev/staging/prod]
|
|
21
|
-
| Version
|
|
22
|
-
| Author
|
|
16
|
+
| Field | Value |
|
|
17
|
+
| ----------- | --------------------- |
|
|
18
|
+
| Component | [Component Name] |
|
|
19
|
+
| Date | YYYY-MM-DD |
|
|
20
|
+
| Environment | [dev/staging/prod] |
|
|
21
|
+
| Version | [Version/Commit] |
|
|
22
|
+
| Author | performance-optimizer |
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
26
26
|
## 1. Objectives
|
|
27
27
|
|
|
28
28
|
### What We're Testing
|
|
29
|
+
|
|
29
30
|
[Clear description of what is being benchmarked]
|
|
30
31
|
|
|
31
32
|
### Success Criteria
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
33
|
+
|
|
34
|
+
| Metric | Threshold | Priority |
|
|
35
|
+
| ----------------- | ------------ | -------- |
|
|
36
|
+
| Response Time p95 | < 200ms | Critical |
|
|
37
|
+
| Throughput | > 1000 req/s | High |
|
|
38
|
+
| Error Rate | < 0.1% | Critical |
|
|
39
|
+
| Memory Usage | < 512MB | Medium |
|
|
38
40
|
|
|
39
41
|
---
|
|
40
42
|
|
|
41
43
|
## 2. Test Environment
|
|
42
44
|
|
|
43
45
|
### Hardware
|
|
46
|
+
|
|
44
47
|
- **CPU**: [e.g., 4 vCPU]
|
|
45
48
|
- **Memory**: [e.g., 8 GB]
|
|
46
49
|
- **Storage**: [e.g., SSD]
|
|
47
50
|
- **Network**: [e.g., 1 Gbps]
|
|
48
51
|
|
|
49
52
|
### Software
|
|
53
|
+
|
|
50
54
|
- **OS**: [e.g., Ubuntu 22.04]
|
|
51
55
|
- **Runtime**: [e.g., Node.js 20.x]
|
|
52
56
|
- **Database**: [e.g., PostgreSQL 15]
|
|
53
57
|
|
|
54
58
|
### Configuration
|
|
59
|
+
|
|
55
60
|
```yaml
|
|
56
61
|
# Key settings
|
|
57
62
|
db_pool_size: 20
|
|
58
63
|
cache_ttl: 3600
|
|
59
64
|
workers: 4
|
|
60
65
|
```
|
|
66
|
+
````
|
|
61
67
|
|
|
62
68
|
---
|
|
63
69
|
|
|
64
70
|
## 3. Scenarios
|
|
65
71
|
|
|
66
72
|
### Scenario 1: [Name]
|
|
73
|
+
|
|
67
74
|
- **Description**: [What this tests]
|
|
68
75
|
- **Users**: [Concurrent users]
|
|
69
76
|
- **Duration**: [Test duration]
|
|
70
77
|
- **Data**: [Test data used]
|
|
71
78
|
|
|
72
79
|
### Scenario 2: [Name]
|
|
80
|
+
|
|
73
81
|
...
|
|
74
82
|
|
|
75
83
|
---
|
|
@@ -78,13 +86,13 @@ workers: 4
|
|
|
78
86
|
|
|
79
87
|
### Summary
|
|
80
88
|
|
|
81
|
-
| Metric
|
|
82
|
-
|
|
83
|
-
| p50 Latency | 45ms
|
|
84
|
-
| p95 Latency | 120ms
|
|
85
|
-
| p99 Latency | 250ms
|
|
86
|
-
| Throughput
|
|
87
|
-
| Error Rate
|
|
89
|
+
| Metric | Scenario 1 | Scenario 2 | Target | Status |
|
|
90
|
+
| ----------- | ----------- | ---------- | ------ | ------ |
|
|
91
|
+
| p50 Latency | 45ms | 52ms | <100ms | ✅ |
|
|
92
|
+
| p95 Latency | 120ms | 180ms | <200ms | ✅ |
|
|
93
|
+
| p99 Latency | 250ms | 380ms | <500ms | ✅ |
|
|
94
|
+
| Throughput | 1,250 req/s | 980 req/s | >1000 | ⚠️ |
|
|
95
|
+
| Error Rate | 0.01% | 0.08% | <0.1% | ✅ |
|
|
88
96
|
|
|
89
97
|
### Latency Distribution
|
|
90
98
|
|
|
@@ -100,40 +108,43 @@ Percentile | Scenario 1 | Scenario 2
|
|
|
100
108
|
|
|
101
109
|
### Resource Usage
|
|
102
110
|
|
|
103
|
-
| Resource
|
|
104
|
-
|
|
105
|
-
| CPU
|
|
106
|
-
| Memory
|
|
107
|
-
| DB Connections | 18
|
|
111
|
+
| Resource | Peak | Average | Limit |
|
|
112
|
+
| -------------- | ----- | ------- | ----- |
|
|
113
|
+
| CPU | 85% | 65% | 100% |
|
|
114
|
+
| Memory | 420MB | 350MB | 512MB |
|
|
115
|
+
| DB Connections | 18 | 12 | 20 |
|
|
108
116
|
|
|
109
117
|
---
|
|
110
118
|
|
|
111
119
|
## 5. Bottlenecks Identified
|
|
112
120
|
|
|
113
121
|
### Bottleneck 1: [Name]
|
|
122
|
+
|
|
114
123
|
- **Symptom**: [What was observed]
|
|
115
124
|
- **Cause**: [Root cause]
|
|
116
125
|
- **Impact**: [Performance impact]
|
|
117
126
|
- **Recommendation**: [How to fix]
|
|
118
127
|
|
|
119
128
|
### Bottleneck 2: [Name]
|
|
129
|
+
|
|
120
130
|
...
|
|
121
131
|
|
|
122
132
|
---
|
|
123
133
|
|
|
124
134
|
## 6. Recommendations
|
|
125
135
|
|
|
126
|
-
| Priority | Action
|
|
127
|
-
|
|
128
|
-
| High
|
|
129
|
-
| Medium
|
|
130
|
-
| Low
|
|
136
|
+
| Priority | Action | Expected Impact |
|
|
137
|
+
| -------- | --------------------------- | --------------- |
|
|
138
|
+
| High | Add database index on X | -30% latency |
|
|
139
|
+
| Medium | Enable response caching | +50% throughput |
|
|
140
|
+
| Low | Optimize JSON serialization | -5% CPU |
|
|
131
141
|
|
|
132
142
|
---
|
|
133
143
|
|
|
134
144
|
## 7. Graphs
|
|
135
145
|
|
|
136
146
|
[Include relevant graphs:]
|
|
147
|
+
|
|
137
148
|
- Latency over time
|
|
138
149
|
- Throughput over time
|
|
139
150
|
- Error rate over time
|
|
@@ -144,16 +155,20 @@ Percentile | Scenario 1 | Scenario 2
|
|
|
144
155
|
## 8. Conclusion
|
|
145
156
|
|
|
146
157
|
### Pass/Fail
|
|
158
|
+
|
|
147
159
|
[Did the benchmark meet success criteria?]
|
|
148
160
|
|
|
149
161
|
### Key Findings
|
|
162
|
+
|
|
150
163
|
1. [Finding 1]
|
|
151
164
|
2. [Finding 2]
|
|
152
165
|
|
|
153
166
|
### Next Steps
|
|
167
|
+
|
|
154
168
|
1. [ ] [Action item 1]
|
|
155
169
|
2. [ ] [Action item 2]
|
|
156
|
-
|
|
170
|
+
|
|
171
|
+
````
|
|
157
172
|
|
|
158
173
|
---
|
|
159
174
|
|
|
@@ -190,14 +205,14 @@ const scenarios = [
|
|
|
190
205
|
async function runBenchmarks() {
|
|
191
206
|
for (const scenario of scenarios) {
|
|
192
207
|
console.log(`Running: ${scenario.name}`);
|
|
193
|
-
|
|
208
|
+
|
|
194
209
|
const result = await autocannon({
|
|
195
210
|
...config,
|
|
196
211
|
method: scenario.method,
|
|
197
212
|
path: scenario.path,
|
|
198
213
|
body: scenario.body
|
|
199
214
|
});
|
|
200
|
-
|
|
215
|
+
|
|
201
216
|
console.log(`
|
|
202
217
|
Results for ${scenario.name}:
|
|
203
218
|
- Avg Latency: ${result.latency.average}ms
|
|
@@ -209,7 +224,7 @@ Results for ${scenario.name}:
|
|
|
209
224
|
}
|
|
210
225
|
|
|
211
226
|
runBenchmarks();
|
|
212
|
-
|
|
227
|
+
````
|
|
213
228
|
|
|
214
229
|
---
|
|
215
230
|
|
|
@@ -225,11 +240,11 @@ const errorRate = new Rate('errors');
|
|
|
225
240
|
|
|
226
241
|
export const options = {
|
|
227
242
|
stages: [
|
|
228
|
-
{ duration: '30s', target: 20 },
|
|
229
|
-
{ duration: '1m', target: 20 },
|
|
230
|
-
{ duration: '30s', target: 50 },
|
|
231
|
-
{ duration: '1m', target: 50 },
|
|
232
|
-
{ duration: '30s', target: 0 },
|
|
243
|
+
{ duration: '30s', target: 20 }, // Ramp up
|
|
244
|
+
{ duration: '1m', target: 20 }, // Stay at 20 users
|
|
245
|
+
{ duration: '30s', target: 50 }, // Ramp up more
|
|
246
|
+
{ duration: '1m', target: 50 }, // Stay at 50 users
|
|
247
|
+
{ duration: '30s', target: 0 }, // Ramp down
|
|
233
248
|
],
|
|
234
249
|
thresholds: {
|
|
235
250
|
http_req_duration: ['p(95)<200'],
|
|
@@ -239,14 +254,14 @@ export const options = {
|
|
|
239
254
|
|
|
240
255
|
export default function () {
|
|
241
256
|
const res = http.get('http://localhost:3000/api/users');
|
|
242
|
-
|
|
257
|
+
|
|
243
258
|
const checkResult = check(res, {
|
|
244
|
-
'status is 200':
|
|
245
|
-
'response time < 200ms':
|
|
259
|
+
'status is 200': r => r.status === 200,
|
|
260
|
+
'response time < 200ms': r => r.timings.duration < 200,
|
|
246
261
|
});
|
|
247
|
-
|
|
262
|
+
|
|
248
263
|
errorRate.add(!checkResult);
|
|
249
|
-
|
|
264
|
+
|
|
250
265
|
sleep(1);
|
|
251
266
|
}
|
|
252
267
|
```
|
|
@@ -256,17 +271,20 @@ export default function () {
|
|
|
256
271
|
## Quick Checklist
|
|
257
272
|
|
|
258
273
|
### Before Benchmark
|
|
274
|
+
|
|
259
275
|
- [ ] Isolated test environment
|
|
260
276
|
- [ ] Warm up completed
|
|
261
277
|
- [ ] Monitoring enabled
|
|
262
278
|
- [ ] Baseline established
|
|
263
279
|
|
|
264
280
|
### During Benchmark
|
|
281
|
+
|
|
265
282
|
- [ ] Monitor resources
|
|
266
283
|
- [ ] Check for errors
|
|
267
284
|
- [ ] Log unusual behavior
|
|
268
285
|
|
|
269
286
|
### After Benchmark
|
|
287
|
+
|
|
270
288
|
- [ ] Compare to baseline
|
|
271
289
|
- [ ] Document findings
|
|
272
290
|
- [ ] Create action items
|
package/src/templates/agents/claude-code/skills/performance-optimizer/optimization-patterns.md
CHANGED
|
@@ -14,13 +14,13 @@ Common patterns for optimizing application performance.
|
|
|
14
14
|
async function getUser(id: string): Promise<User> {
|
|
15
15
|
// Try cache first
|
|
16
16
|
let user = await cache.get(`user:${id}`);
|
|
17
|
-
|
|
17
|
+
|
|
18
18
|
if (!user) {
|
|
19
19
|
// Cache miss - load from DB
|
|
20
20
|
user = await db.users.findById(id);
|
|
21
21
|
await cache.set(`user:${id}`, user, { ttl: 3600 });
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
return user;
|
|
25
25
|
}
|
|
26
26
|
```
|
|
@@ -33,10 +33,10 @@ async function getUser(id: string): Promise<User> {
|
|
|
33
33
|
async function updateUser(id: string, data: Partial<User>): Promise<User> {
|
|
34
34
|
// Update DB
|
|
35
35
|
const user = await db.users.update(id, data);
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
// Update cache
|
|
38
38
|
await cache.set(`user:${id}`, user, { ttl: 3600 });
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
return user;
|
|
41
41
|
}
|
|
42
42
|
```
|
|
@@ -61,8 +61,8 @@ async function deleteUser(id: string): Promise<void> {
|
|
|
61
61
|
|
|
62
62
|
```typescript
|
|
63
63
|
const pool = new Pool({
|
|
64
|
-
max: 20,
|
|
65
|
-
min: 5,
|
|
64
|
+
max: 20, // Max connections
|
|
65
|
+
min: 5, // Min connections
|
|
66
66
|
idleTimeoutMillis: 30000,
|
|
67
67
|
connectionTimeoutMillis: 2000,
|
|
68
68
|
});
|
|
@@ -92,7 +92,7 @@ for (const user of users) {
|
|
|
92
92
|
|
|
93
93
|
// GOOD: Eager loading
|
|
94
94
|
const users = await User.findAll({
|
|
95
|
-
include: [{ model: Order }]
|
|
95
|
+
include: [{ model: Order }], // 1 query with JOIN
|
|
96
96
|
});
|
|
97
97
|
```
|
|
98
98
|
|
|
@@ -100,16 +100,16 @@ const users = await User.findAll({
|
|
|
100
100
|
|
|
101
101
|
```typescript
|
|
102
102
|
// Offset pagination (simple but slow for large offsets)
|
|
103
|
-
const page = await db.query(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
);
|
|
103
|
+
const page = await db.query('SELECT * FROM items LIMIT $1 OFFSET $2', [
|
|
104
|
+
pageSize,
|
|
105
|
+
(page - 1) * pageSize,
|
|
106
|
+
]);
|
|
107
107
|
|
|
108
108
|
// Cursor pagination (efficient)
|
|
109
|
-
const page = await db.query(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
);
|
|
109
|
+
const page = await db.query('SELECT * FROM items WHERE id > $1 ORDER BY id LIMIT $2', [
|
|
110
|
+
lastSeenId,
|
|
111
|
+
pageSize,
|
|
112
|
+
]);
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
---
|
|
@@ -129,9 +129,7 @@ app.use(compression());
|
|
|
129
129
|
// GET /users?fields=id,name,email
|
|
130
130
|
app.get('/users', (req, res) => {
|
|
131
131
|
const fields = req.query.fields?.split(',') || ['*'];
|
|
132
|
-
const users = await db.query(
|
|
133
|
-
`SELECT ${fields.join(',')} FROM users`
|
|
134
|
-
);
|
|
132
|
+
const users = await db.query(`SELECT ${fields.join(',')} FROM users`);
|
|
135
133
|
res.json(users);
|
|
136
134
|
});
|
|
137
135
|
```
|
|
@@ -158,11 +156,11 @@ await api.getUsers([1, 2, 3]);
|
|
|
158
156
|
// Don't block request for slow operations
|
|
159
157
|
app.post('/orders', async (req, res) => {
|
|
160
158
|
const order = await createOrder(req.body);
|
|
161
|
-
|
|
159
|
+
|
|
162
160
|
// Queue async tasks
|
|
163
161
|
await queue.add('send-confirmation-email', { orderId: order.id });
|
|
164
162
|
await queue.add('update-inventory', { orderId: order.id });
|
|
165
|
-
|
|
163
|
+
|
|
166
164
|
res.json(order); // Respond immediately
|
|
167
165
|
});
|
|
168
166
|
```
|
|
@@ -176,11 +174,7 @@ const products = await getProducts();
|
|
|
176
174
|
const orders = await getOrders();
|
|
177
175
|
|
|
178
176
|
// GOOD: Parallel
|
|
179
|
-
const [users, products, orders] = await Promise.all([
|
|
180
|
-
getUsers(),
|
|
181
|
-
getProducts(),
|
|
182
|
-
getOrders()
|
|
183
|
-
]);
|
|
177
|
+
const [users, products, orders] = await Promise.all([getUsers(), getProducts(), getOrders()]);
|
|
184
178
|
```
|
|
185
179
|
|
|
186
180
|
---
|
|
@@ -199,7 +193,7 @@ const Settings = React.lazy(() => import('./Settings'));
|
|
|
199
193
|
|
|
200
194
|
```html
|
|
201
195
|
<!-- Responsive images -->
|
|
202
|
-
<img
|
|
196
|
+
<img
|
|
203
197
|
srcset="image-300.jpg 300w, image-600.jpg 600w"
|
|
204
198
|
sizes="(max-width: 600px) 300px, 600px"
|
|
205
199
|
loading="lazy"
|
|
@@ -211,11 +205,11 @@ const Settings = React.lazy(() => import('./Settings'));
|
|
|
211
205
|
|
|
212
206
|
```typescript
|
|
213
207
|
// Debounce search input
|
|
214
|
-
const debouncedSearch = debounce(
|
|
208
|
+
const debouncedSearch = debounce(query => {
|
|
215
209
|
api.search(query);
|
|
216
210
|
}, 300);
|
|
217
211
|
|
|
218
|
-
input.addEventListener('input',
|
|
212
|
+
input.addEventListener('input', e => {
|
|
219
213
|
debouncedSearch(e.target.value);
|
|
220
214
|
});
|
|
221
215
|
```
|
|
@@ -226,13 +220,13 @@ input.addEventListener('input', (e) => {
|
|
|
226
220
|
|
|
227
221
|
### Key Metrics
|
|
228
222
|
|
|
229
|
-
| Metric
|
|
230
|
-
|
|
231
|
-
| TTFB
|
|
232
|
-
| FCP
|
|
233
|
-
| LCP
|
|
234
|
-
| API p95 | < 200ms | APM
|
|
235
|
-
| DB p95
|
|
223
|
+
| Metric | Target | Tool |
|
|
224
|
+
| ------- | ------- | ------------- |
|
|
225
|
+
| TTFB | < 200ms | Lighthouse |
|
|
226
|
+
| FCP | < 1.8s | Lighthouse |
|
|
227
|
+
| LCP | < 2.5s | Lighthouse |
|
|
228
|
+
| API p95 | < 200ms | APM |
|
|
229
|
+
| DB p95 | < 50ms | DB monitoring |
|
|
236
230
|
|
|
237
231
|
### Monitoring Queries
|
|
238
232
|
|
|
@@ -249,24 +243,28 @@ LIMIT 10;
|
|
|
249
243
|
## Optimization Checklist
|
|
250
244
|
|
|
251
245
|
### Database
|
|
246
|
+
|
|
252
247
|
- [ ] Indexes on frequently queried columns
|
|
253
248
|
- [ ] Connection pooling configured
|
|
254
249
|
- [ ] N+1 queries eliminated
|
|
255
250
|
- [ ] Query plans analyzed (EXPLAIN)
|
|
256
251
|
|
|
257
252
|
### API
|
|
253
|
+
|
|
258
254
|
- [ ] Response compression enabled
|
|
259
255
|
- [ ] Pagination implemented
|
|
260
256
|
- [ ] Caching strategy in place
|
|
261
257
|
- [ ] Slow operations moved to background
|
|
262
258
|
|
|
263
259
|
### Frontend
|
|
260
|
+
|
|
264
261
|
- [ ] Code splitting implemented
|
|
265
262
|
- [ ] Images optimized and lazy loaded
|
|
266
263
|
- [ ] CDN for static assets
|
|
267
264
|
- [ ] Bundle size analyzed
|
|
268
265
|
|
|
269
266
|
### Infrastructure
|
|
267
|
+
|
|
270
268
|
- [ ] Auto-scaling configured
|
|
271
269
|
- [ ] Load balancing in place
|
|
272
270
|
- [ ] CDN configured
|
|
@@ -53,6 +53,7 @@ musubi-orchestrate status
|
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
**オーケストレーションパターン**:
|
|
56
|
+
|
|
56
57
|
- **auto**: タスク内容から最適なスキルを自動選択
|
|
57
58
|
- **sequential**: スキルを順番に実行(依存関係を考慮)
|
|
58
59
|
- **group-chat**: 複数スキルが協議して結論を出す
|
|
@@ -114,13 +115,13 @@ musubi-workflow status
|
|
|
114
115
|
|
|
115
116
|
### プロジェクトマネージャーの役割
|
|
116
117
|
|
|
117
|
-
| ワークフローステージ
|
|
118
|
-
|
|
119
|
-
| Stage 0: Spike
|
|
120
|
-
| Stage 1-3: Requirements→Design→Tasks
|
|
118
|
+
| ワークフローステージ | PMの主な責務 |
|
|
119
|
+
| ---------------------------------------- | -------------------------- |
|
|
120
|
+
| Stage 0: Spike | 調査範囲の定義、期間設定 |
|
|
121
|
+
| Stage 1-3: Requirements→Design→Tasks | 進捗追跡、リソース配分 |
|
|
121
122
|
| Stage 4-6: Implementation→Review→Testing | リスク管理、ブロッカー解消 |
|
|
122
|
-
| Stage 7-8: Deployment→Monitoring
|
|
123
|
-
| Stage 9: Retrospective
|
|
123
|
+
| Stage 7-8: Deployment→Monitoring | リリース計画、本番監視 |
|
|
124
|
+
| Stage 9: Retrospective | 振り返りファシリテーション |
|
|
124
125
|
|
|
125
126
|
### 推奨コマンド
|
|
126
127
|
|
|
@@ -8,19 +8,20 @@ Guide for running effective Agile ceremonies.
|
|
|
8
8
|
|
|
9
9
|
## Ceremony Overview
|
|
10
10
|
|
|
11
|
-
| Ceremony
|
|
12
|
-
|
|
13
|
-
| Sprint Planning
|
|
14
|
-
| Daily Standup
|
|
15
|
-
| Sprint Review
|
|
16
|
-
| Retrospective
|
|
17
|
-
| Backlog Refinement | Weekly
|
|
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
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
21
|
## Sprint Planning
|
|
22
22
|
|
|
23
23
|
### Objectives
|
|
24
|
+
|
|
24
25
|
1. Define sprint goal
|
|
25
26
|
2. Select user stories
|
|
26
27
|
3. Create task breakdown
|
|
@@ -53,6 +54,7 @@ Guide for running effective Agile ceremonies.
|
|
|
53
54
|
```
|
|
54
55
|
|
|
55
56
|
### Best Practices
|
|
57
|
+
|
|
56
58
|
- Come prepared with refined backlog
|
|
57
59
|
- Focus on "what" not "how"
|
|
58
60
|
- Don't overcommit
|
|
@@ -65,21 +67,23 @@ Guide for running effective Agile ceremonies.
|
|
|
65
67
|
### Format
|
|
66
68
|
|
|
67
69
|
Each team member answers:
|
|
70
|
+
|
|
68
71
|
1. What did I complete yesterday?
|
|
69
72
|
2. What will I work on today?
|
|
70
73
|
3. Do I have any blockers?
|
|
71
74
|
|
|
72
75
|
### Anti-patterns to Avoid
|
|
73
76
|
|
|
74
|
-
| Anti-pattern
|
|
75
|
-
|
|
76
|
-
| Status report to manager
|
|
77
|
-
| Solving problems in standup
|
|
78
|
-
| Going over 15 minutes
|
|
79
|
-
| Only talking to Scrum Master | Talk to team
|
|
80
|
-
| Sitting down
|
|
77
|
+
| Anti-pattern | Better Approach |
|
|
78
|
+
| ---------------------------- | ----------------- |
|
|
79
|
+
| Status report to manager | Team sync |
|
|
80
|
+
| Solving problems in standup | Take offline |
|
|
81
|
+
| Going over 15 minutes | Keep it short |
|
|
82
|
+
| Only talking to Scrum Master | Talk to team |
|
|
83
|
+
| Sitting down | Stand up (energy) |
|
|
81
84
|
|
|
82
85
|
### Virtual Standup Tips
|
|
86
|
+
|
|
83
87
|
- Camera on
|
|
84
88
|
- Mute when not speaking
|
|
85
89
|
- Use visual board
|
|
@@ -91,6 +95,7 @@ Each team member answers:
|
|
|
91
95
|
## Sprint Review (Demo)
|
|
92
96
|
|
|
93
97
|
### Objectives
|
|
98
|
+
|
|
94
99
|
1. Demonstrate completed work
|
|
95
100
|
2. Get stakeholder feedback
|
|
96
101
|
3. Discuss backlog priorities
|
|
@@ -121,6 +126,7 @@ Each team member answers:
|
|
|
121
126
|
```
|
|
122
127
|
|
|
123
128
|
### Tips for Good Demos
|
|
129
|
+
|
|
124
130
|
- Use real scenarios
|
|
125
131
|
- Show working software
|
|
126
132
|
- Keep it interactive
|
|
@@ -132,6 +138,7 @@ Each team member answers:
|
|
|
132
138
|
## Retrospective
|
|
133
139
|
|
|
134
140
|
### Objectives
|
|
141
|
+
|
|
135
142
|
1. Reflect on the sprint
|
|
136
143
|
2. Identify improvements
|
|
137
144
|
3. Create action items
|
|
@@ -139,6 +146,7 @@ Each team member answers:
|
|
|
139
146
|
### Formats
|
|
140
147
|
|
|
141
148
|
#### Start/Stop/Continue
|
|
149
|
+
|
|
142
150
|
```
|
|
143
151
|
🟢 START doing: [What new things should we try?]
|
|
144
152
|
🔴 STOP doing: [What's not working?]
|
|
@@ -146,6 +154,7 @@ Each team member answers:
|
|
|
146
154
|
```
|
|
147
155
|
|
|
148
156
|
#### 4Ls
|
|
157
|
+
|
|
149
158
|
```
|
|
150
159
|
😍 LIKED: [What did you like?]
|
|
151
160
|
📚 LEARNED: [What did you learn?]
|
|
@@ -154,6 +163,7 @@ Each team member answers:
|
|
|
154
163
|
```
|
|
155
164
|
|
|
156
165
|
#### Sailboat
|
|
166
|
+
|
|
157
167
|
```
|
|
158
168
|
⛵ WIND (helps us): [What's pushing us forward?]
|
|
159
169
|
⚓ ANCHOR (slows us): [What's holding us back?]
|
|
@@ -162,6 +172,7 @@ Each team member answers:
|
|
|
162
172
|
```
|
|
163
173
|
|
|
164
174
|
### Facilitation Tips
|
|
175
|
+
|
|
165
176
|
- Safe space - no blame
|
|
166
177
|
- Everyone participates
|
|
167
178
|
- Time-box discussions
|
|
@@ -174,6 +185,7 @@ Each team member answers:
|
|
|
174
185
|
## Backlog Refinement
|
|
175
186
|
|
|
176
187
|
### Objectives
|
|
188
|
+
|
|
177
189
|
1. Clarify upcoming stories
|
|
178
190
|
2. Estimate stories
|
|
179
191
|
3. Break down large items
|
|
@@ -204,6 +216,7 @@ Each team member answers:
|
|
|
204
216
|
### Definition of Ready
|
|
205
217
|
|
|
206
218
|
Story is ready when:
|
|
219
|
+
|
|
207
220
|
- [ ] Clearly written with user perspective
|
|
208
221
|
- [ ] Acceptance criteria defined
|
|
209
222
|
- [ ] Estimated by team
|
|
@@ -217,36 +230,38 @@ Story is ready when:
|
|
|
217
230
|
|
|
218
231
|
### Planning Poker
|
|
219
232
|
|
|
220
|
-
| Points | Meaning
|
|
221
|
-
|
|
222
|
-
| 1
|
|
223
|
-
| 2
|
|
224
|
-
| 3
|
|
225
|
-
| 5
|
|
226
|
-
| 8
|
|
227
|
-
| 13
|
|
233
|
+
| Points | Meaning |
|
|
234
|
+
| ------ | --------------------- |
|
|
235
|
+
| 1 | Trivial |
|
|
236
|
+
| 2 | Simple |
|
|
237
|
+
| 3 | Moderate |
|
|
238
|
+
| 5 | Complex |
|
|
239
|
+
| 8 | Very Complex |
|
|
240
|
+
| 13 | Epic-sized (split it) |
|
|
228
241
|
|
|
229
242
|
### T-Shirt Sizing
|
|
230
243
|
|
|
231
244
|
| Size | Relative Effort |
|
|
232
|
-
|
|
233
|
-
| XS
|
|
234
|
-
| S
|
|
235
|
-
| M
|
|
236
|
-
| L
|
|
237
|
-
| XL
|
|
245
|
+
| ---- | --------------- |
|
|
246
|
+
| XS | Hours |
|
|
247
|
+
| S | 1-2 days |
|
|
248
|
+
| M | 3-5 days |
|
|
249
|
+
| L | 1-2 weeks |
|
|
250
|
+
| XL | Needs breakdown |
|
|
238
251
|
|
|
239
252
|
---
|
|
240
253
|
|
|
241
254
|
## Remote Ceremony Tips
|
|
242
255
|
|
|
243
256
|
### Tools
|
|
257
|
+
|
|
244
258
|
- Video: Zoom, Teams
|
|
245
259
|
- Board: Miro, Mural
|
|
246
260
|
- Voting: Mentimeter
|
|
247
261
|
- Timer: Online stopwatch
|
|
248
262
|
|
|
249
263
|
### Best Practices
|
|
264
|
+
|
|
250
265
|
- Camera on for engagement
|
|
251
266
|
- Use virtual whiteboard
|
|
252
267
|
- More breaks for longer sessions
|
|
@@ -259,24 +274,28 @@ Story is ready when:
|
|
|
259
274
|
## Ceremony Health Check
|
|
260
275
|
|
|
261
276
|
### Sprint Planning
|
|
277
|
+
|
|
262
278
|
- [ ] Sprint goal is clear
|
|
263
279
|
- [ ] Team has capacity
|
|
264
280
|
- [ ] Stories are refined
|
|
265
281
|
- [ ] Commitment is realistic
|
|
266
282
|
|
|
267
283
|
### Daily Standup
|
|
284
|
+
|
|
268
285
|
- [ ] Starts on time
|
|
269
286
|
- [ ] Finishes in 15 min
|
|
270
287
|
- [ ] Blockers are raised
|
|
271
288
|
- [ ] Team is engaged
|
|
272
289
|
|
|
273
290
|
### Sprint Review
|
|
291
|
+
|
|
274
292
|
- [ ] Working software shown
|
|
275
293
|
- [ ] Stakeholders present
|
|
276
294
|
- [ ] Feedback captured
|
|
277
295
|
- [ ] Team celebrated
|
|
278
296
|
|
|
279
297
|
### Retrospective
|
|
298
|
+
|
|
280
299
|
- [ ] Safe environment
|
|
281
300
|
- [ ] Everyone participated
|
|
282
301
|
- [ ] Actions are specific
|