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
package/src/templates/agents/claude-code/skills/change-impact-analyzer/dependency-graph-patterns.md
CHANGED
|
@@ -9,16 +9,19 @@ Patterns for building and analyzing dependency graphs in software systems.
|
|
|
9
9
|
## Types of Dependencies
|
|
10
10
|
|
|
11
11
|
### Direct Dependencies
|
|
12
|
+
|
|
12
13
|
```
|
|
13
14
|
A → B: A directly uses B
|
|
14
15
|
```
|
|
15
16
|
|
|
16
17
|
### Transitive Dependencies
|
|
18
|
+
|
|
17
19
|
```
|
|
18
20
|
A → B → C: A depends on C through B
|
|
19
21
|
```
|
|
20
22
|
|
|
21
23
|
### Circular Dependencies
|
|
24
|
+
|
|
22
25
|
```
|
|
23
26
|
A → B → C → A: Problematic cycle
|
|
24
27
|
```
|
|
@@ -43,7 +46,7 @@ const graph: DependencyGraph = {
|
|
|
43
46
|
edges: new Map([
|
|
44
47
|
['auth.ts', new Set(['user.ts', 'db.ts'])],
|
|
45
48
|
['user.ts', new Set(['db.ts'])],
|
|
46
|
-
])
|
|
49
|
+
]),
|
|
47
50
|
};
|
|
48
51
|
```
|
|
49
52
|
|
|
@@ -52,12 +55,12 @@ const graph: DependencyGraph = {
|
|
|
52
55
|
```dot
|
|
53
56
|
digraph Dependencies {
|
|
54
57
|
rankdir=TB;
|
|
55
|
-
|
|
58
|
+
|
|
56
59
|
// Nodes
|
|
57
60
|
auth [label="auth.ts"];
|
|
58
61
|
user [label="user.ts"];
|
|
59
62
|
db [label="db.ts"];
|
|
60
|
-
|
|
63
|
+
|
|
61
64
|
// Edges
|
|
62
65
|
auth -> user;
|
|
63
66
|
auth -> db;
|
|
@@ -78,14 +81,14 @@ function getAllDependencies(
|
|
|
78
81
|
visited = new Set<string>()
|
|
79
82
|
): Set<string> {
|
|
80
83
|
if (visited.has(node)) return visited;
|
|
81
|
-
|
|
84
|
+
|
|
82
85
|
visited.add(node);
|
|
83
|
-
|
|
86
|
+
|
|
84
87
|
const deps = graph.edges.get(node) || new Set();
|
|
85
88
|
for (const dep of deps) {
|
|
86
89
|
getAllDependencies(graph, dep, visited);
|
|
87
90
|
}
|
|
88
|
-
|
|
91
|
+
|
|
89
92
|
return visited;
|
|
90
93
|
}
|
|
91
94
|
```
|
|
@@ -93,18 +96,16 @@ function getAllDependencies(
|
|
|
93
96
|
### Find Circular Dependencies
|
|
94
97
|
|
|
95
98
|
```typescript
|
|
96
|
-
function findCircularDependencies(
|
|
97
|
-
graph: DependencyGraph
|
|
98
|
-
): string[][] {
|
|
99
|
+
function findCircularDependencies(graph: DependencyGraph): string[][] {
|
|
99
100
|
const cycles: string[][] = [];
|
|
100
101
|
const visited = new Set<string>();
|
|
101
102
|
const recursionStack = new Set<string>();
|
|
102
|
-
|
|
103
|
+
|
|
103
104
|
function dfs(node: string, path: string[]): void {
|
|
104
105
|
visited.add(node);
|
|
105
106
|
recursionStack.add(node);
|
|
106
107
|
path.push(node);
|
|
107
|
-
|
|
108
|
+
|
|
108
109
|
const deps = graph.edges.get(node) || new Set();
|
|
109
110
|
for (const dep of deps) {
|
|
110
111
|
if (!visited.has(dep)) {
|
|
@@ -115,17 +116,17 @@ function findCircularDependencies(
|
|
|
115
116
|
cycles.push(path.slice(cycleStart));
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
|
-
|
|
119
|
+
|
|
119
120
|
path.pop();
|
|
120
121
|
recursionStack.delete(node);
|
|
121
122
|
}
|
|
122
|
-
|
|
123
|
+
|
|
123
124
|
for (const node of graph.nodes.keys()) {
|
|
124
125
|
if (!visited.has(node)) {
|
|
125
126
|
dfs(node, []);
|
|
126
127
|
}
|
|
127
128
|
}
|
|
128
|
-
|
|
129
|
+
|
|
129
130
|
return cycles;
|
|
130
131
|
}
|
|
131
132
|
```
|
|
@@ -137,29 +138,29 @@ function topologicalSort(graph: DependencyGraph): string[] {
|
|
|
137
138
|
const inDegree = new Map<string, number>();
|
|
138
139
|
const result: string[] = [];
|
|
139
140
|
const queue: string[] = [];
|
|
140
|
-
|
|
141
|
+
|
|
141
142
|
// Initialize in-degrees
|
|
142
143
|
for (const node of graph.nodes.keys()) {
|
|
143
144
|
inDegree.set(node, 0);
|
|
144
145
|
}
|
|
145
|
-
|
|
146
|
+
|
|
146
147
|
for (const deps of graph.edges.values()) {
|
|
147
148
|
for (const dep of deps) {
|
|
148
149
|
inDegree.set(dep, (inDegree.get(dep) || 0) + 1);
|
|
149
150
|
}
|
|
150
151
|
}
|
|
151
|
-
|
|
152
|
+
|
|
152
153
|
// Start with nodes that have no dependencies
|
|
153
154
|
for (const [node, degree] of inDegree) {
|
|
154
155
|
if (degree === 0) {
|
|
155
156
|
queue.push(node);
|
|
156
157
|
}
|
|
157
158
|
}
|
|
158
|
-
|
|
159
|
+
|
|
159
160
|
while (queue.length > 0) {
|
|
160
161
|
const node = queue.shift()!;
|
|
161
162
|
result.push(node);
|
|
162
|
-
|
|
163
|
+
|
|
163
164
|
const deps = graph.edges.get(node) || new Set();
|
|
164
165
|
for (const dep of deps) {
|
|
165
166
|
inDegree.set(dep, inDegree.get(dep)! - 1);
|
|
@@ -168,7 +169,7 @@ function topologicalSort(graph: DependencyGraph): string[] {
|
|
|
168
169
|
}
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
|
-
|
|
172
|
+
|
|
172
173
|
return result;
|
|
173
174
|
}
|
|
174
175
|
```
|
|
@@ -178,13 +179,11 @@ function topologicalSort(graph: DependencyGraph): string[] {
|
|
|
178
179
|
## Impact Scoring
|
|
179
180
|
|
|
180
181
|
### Afferent Coupling (Ca)
|
|
182
|
+
|
|
181
183
|
Number of modules that depend on this module.
|
|
182
184
|
|
|
183
185
|
```typescript
|
|
184
|
-
function getAfferentCoupling(
|
|
185
|
-
graph: DependencyGraph,
|
|
186
|
-
node: string
|
|
187
|
-
): number {
|
|
186
|
+
function getAfferentCoupling(graph: DependencyGraph, node: string): number {
|
|
188
187
|
let count = 0;
|
|
189
188
|
for (const [source, deps] of graph.edges) {
|
|
190
189
|
if (deps.has(node)) {
|
|
@@ -196,13 +195,11 @@ function getAfferentCoupling(
|
|
|
196
195
|
```
|
|
197
196
|
|
|
198
197
|
### Efferent Coupling (Ce)
|
|
198
|
+
|
|
199
199
|
Number of modules this module depends on.
|
|
200
200
|
|
|
201
201
|
```typescript
|
|
202
|
-
function getEfferentCoupling(
|
|
203
|
-
graph: DependencyGraph,
|
|
204
|
-
node: string
|
|
205
|
-
): number {
|
|
202
|
+
function getEfferentCoupling(graph: DependencyGraph, node: string): number {
|
|
206
203
|
return graph.edges.get(node)?.size || 0;
|
|
207
204
|
}
|
|
208
205
|
```
|
|
@@ -269,10 +266,10 @@ function extractImports(filePath: string): string[] {
|
|
|
269
266
|
ts.ScriptTarget.Latest,
|
|
270
267
|
true
|
|
271
268
|
);
|
|
272
|
-
|
|
269
|
+
|
|
273
270
|
const imports: string[] = [];
|
|
274
|
-
|
|
275
|
-
ts.forEachChild(sourceFile,
|
|
271
|
+
|
|
272
|
+
ts.forEachChild(sourceFile, node => {
|
|
276
273
|
if (ts.isImportDeclaration(node)) {
|
|
277
274
|
const moduleSpecifier = node.moduleSpecifier;
|
|
278
275
|
if (ts.isStringLiteral(moduleSpecifier)) {
|
|
@@ -280,7 +277,7 @@ function extractImports(filePath: string): string[] {
|
|
|
280
277
|
}
|
|
281
278
|
}
|
|
282
279
|
});
|
|
283
|
-
|
|
280
|
+
|
|
284
281
|
return imports;
|
|
285
282
|
}
|
|
286
283
|
```
|
|
@@ -290,10 +287,7 @@ function extractImports(filePath: string): string[] {
|
|
|
290
287
|
```typescript
|
|
291
288
|
function getDependencies(packagePath: string): string[] {
|
|
292
289
|
const pkg = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
|
|
293
|
-
return [
|
|
294
|
-
...Object.keys(pkg.dependencies || {}),
|
|
295
|
-
...Object.keys(pkg.devDependencies || {})
|
|
296
|
-
];
|
|
290
|
+
return [...Object.keys(pkg.dependencies || {}), ...Object.keys(pkg.devDependencies || {})];
|
|
297
291
|
}
|
|
298
292
|
```
|
|
299
293
|
|
|
@@ -302,12 +296,9 @@ function getDependencies(packagePath: string): string[] {
|
|
|
302
296
|
## Change Impact from Graph
|
|
303
297
|
|
|
304
298
|
```typescript
|
|
305
|
-
function getImpactedModules(
|
|
306
|
-
graph: DependencyGraph,
|
|
307
|
-
changedModules: string[]
|
|
308
|
-
): Set<string> {
|
|
299
|
+
function getImpactedModules(graph: DependencyGraph, changedModules: string[]): Set<string> {
|
|
309
300
|
const impacted = new Set<string>();
|
|
310
|
-
|
|
301
|
+
|
|
311
302
|
// Find all modules that depend on changed modules
|
|
312
303
|
for (const changed of changedModules) {
|
|
313
304
|
// Reverse DFS to find dependents
|
|
@@ -321,7 +312,7 @@ function getImpactedModules(
|
|
|
321
312
|
}
|
|
322
313
|
}
|
|
323
314
|
}
|
|
324
|
-
|
|
315
|
+
|
|
325
316
|
return impacted;
|
|
326
317
|
}
|
|
327
318
|
```
|
|
@@ -331,18 +322,21 @@ function getImpactedModules(
|
|
|
331
322
|
## Dependency Analysis Checklist
|
|
332
323
|
|
|
333
324
|
### Build Graph
|
|
325
|
+
|
|
334
326
|
- [ ] Parse source files
|
|
335
327
|
- [ ] Extract import statements
|
|
336
328
|
- [ ] Resolve module paths
|
|
337
329
|
- [ ] Store in graph structure
|
|
338
330
|
|
|
339
331
|
### Analyze
|
|
332
|
+
|
|
340
333
|
- [ ] Find circular dependencies
|
|
341
334
|
- [ ] Calculate coupling metrics
|
|
342
335
|
- [ ] Identify hotspots
|
|
343
336
|
- [ ] Generate reports
|
|
344
337
|
|
|
345
338
|
### Visualize
|
|
339
|
+
|
|
346
340
|
- [ ] Create diagrams
|
|
347
341
|
- [ ] Highlight problem areas
|
|
348
342
|
- [ ] Show change impact
|
package/src/templates/agents/claude-code/skills/change-impact-analyzer/impact-analysis-template.md
CHANGED
|
@@ -23,25 +23,29 @@ Framework for analyzing the impact of proposed changes on a system.
|
|
|
23
23
|
# Change Impact Analysis: [Change Name]
|
|
24
24
|
|
|
25
25
|
## Change Overview
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
26
|
+
|
|
27
|
+
| Field | Value |
|
|
28
|
+
| ------------ | ------------------------------------------ |
|
|
29
|
+
| Request ID | CHG-[XXX] |
|
|
30
|
+
| Requested By | [Name] |
|
|
31
|
+
| Date | YYYY-MM-DD |
|
|
32
|
+
| Priority | Low / Medium / High / Critical |
|
|
33
|
+
| Status | Draft / Under Review / Approved / Rejected |
|
|
33
34
|
|
|
34
35
|
---
|
|
35
36
|
|
|
36
37
|
## 1. Change Description
|
|
37
38
|
|
|
38
39
|
### What is being changed?
|
|
40
|
+
|
|
39
41
|
[Clear description of the proposed change]
|
|
40
42
|
|
|
41
43
|
### Why is this change needed?
|
|
44
|
+
|
|
42
45
|
[Business justification]
|
|
43
46
|
|
|
44
47
|
### What is the expected outcome?
|
|
48
|
+
|
|
45
49
|
[Success criteria]
|
|
46
50
|
|
|
47
51
|
---
|
|
@@ -50,26 +54,26 @@ Framework for analyzing the impact of proposed changes on a system.
|
|
|
50
54
|
|
|
51
55
|
### Files Affected
|
|
52
56
|
|
|
53
|
-
| File/Module
|
|
54
|
-
|
|
55
|
-
| src/auth/login.ts
|
|
56
|
-
| src/api/users.ts
|
|
57
|
-
| tests/auth.test.ts | Add
|
|
57
|
+
| File/Module | Change Type | Effort |
|
|
58
|
+
| ------------------ | ----------- | ------ |
|
|
59
|
+
| src/auth/login.ts | Modify | Medium |
|
|
60
|
+
| src/api/users.ts | Modify | Low |
|
|
61
|
+
| tests/auth.test.ts | Add | Medium |
|
|
58
62
|
|
|
59
63
|
### Dependencies
|
|
60
64
|
|
|
61
|
-
| Dependency
|
|
62
|
-
|
|
63
|
-
| User Service | Breaking
|
|
64
|
-
| Auth Library | Compatible
|
|
65
|
-
| Database
|
|
65
|
+
| Dependency | Impact | Action Needed |
|
|
66
|
+
| ------------ | ------------- | ------------- |
|
|
67
|
+
| User Service | Breaking | Update API |
|
|
68
|
+
| Auth Library | Compatible | None |
|
|
69
|
+
| Database | Schema change | Migration |
|
|
66
70
|
|
|
67
71
|
### APIs Affected
|
|
68
72
|
|
|
69
|
-
| API
|
|
70
|
-
|
|
71
|
-
| POST /login | New field
|
|
72
|
-
| GET /user
|
|
73
|
+
| API | Change | Breaking |
|
|
74
|
+
| ----------- | ------------------ | -------- |
|
|
75
|
+
| POST /login | New field | No |
|
|
76
|
+
| GET /user | New response field | No |
|
|
73
77
|
|
|
74
78
|
---
|
|
75
79
|
|
|
@@ -77,20 +81,20 @@ Framework for analyzing the impact of proposed changes on a system.
|
|
|
77
81
|
|
|
78
82
|
### Technical Impact
|
|
79
83
|
|
|
80
|
-
| Area
|
|
81
|
-
|
|
82
|
-
| Performance
|
|
83
|
-
| Security
|
|
84
|
-
| Scalability
|
|
85
|
-
| Maintainability | Medium
|
|
84
|
+
| Area | Impact Level | Description |
|
|
85
|
+
| --------------- | ------------ | --------------------- |
|
|
86
|
+
| Performance | Low | No significant change |
|
|
87
|
+
| Security | Medium | New auth flow |
|
|
88
|
+
| Scalability | Low | No change |
|
|
89
|
+
| Maintainability | Medium | Added complexity |
|
|
86
90
|
|
|
87
91
|
### Business Impact
|
|
88
92
|
|
|
89
|
-
| Area
|
|
90
|
-
|
|
91
|
-
| Users
|
|
92
|
-
| Operations | Low
|
|
93
|
-
| Revenue
|
|
93
|
+
| Area | Impact Level | Description |
|
|
94
|
+
| ---------- | ------------ | -------------- |
|
|
95
|
+
| Users | Medium | New login step |
|
|
96
|
+
| Operations | Low | Minor training |
|
|
97
|
+
| Revenue | None | N/A |
|
|
94
98
|
|
|
95
99
|
---
|
|
96
100
|
|
|
@@ -98,13 +102,14 @@ Framework for analyzing the impact of proposed changes on a system.
|
|
|
98
102
|
|
|
99
103
|
### Risks
|
|
100
104
|
|
|
101
|
-
| Risk
|
|
102
|
-
|
|
103
|
-
| User confusion
|
|
104
|
-
| Integration failure
|
|
105
|
-
| Performance regression | Low
|
|
105
|
+
| Risk | Probability | Impact | Mitigation |
|
|
106
|
+
| ---------------------- | ----------- | ------ | ----------------- |
|
|
107
|
+
| User confusion | Medium | Medium | Clear UI guidance |
|
|
108
|
+
| Integration failure | Low | High | Thorough testing |
|
|
109
|
+
| Performance regression | Low | Medium | Load testing |
|
|
106
110
|
|
|
107
111
|
### Rollback Plan
|
|
112
|
+
|
|
108
113
|
1. [Step 1 to revert]
|
|
109
114
|
2. [Step 2 to revert]
|
|
110
115
|
3. [Verification steps]
|
|
@@ -115,19 +120,19 @@ Framework for analyzing the impact of proposed changes on a system.
|
|
|
115
120
|
|
|
116
121
|
### Tasks
|
|
117
122
|
|
|
118
|
-
| Task
|
|
119
|
-
|
|
120
|
-
| Update auth logic
|
|
121
|
-
| Add tests
|
|
123
|
+
| Task | Owner | Estimate | Dependencies |
|
|
124
|
+
| -------------------- | ------ | -------- | -------------- |
|
|
125
|
+
| Update auth logic | [Name] | 2 days | None |
|
|
126
|
+
| Add tests | [Name] | 1 day | Auth logic |
|
|
122
127
|
| Update documentation | [Name] | 0.5 days | Implementation |
|
|
123
128
|
|
|
124
129
|
### Timeline
|
|
125
130
|
|
|
126
|
-
| Phase
|
|
127
|
-
|
|
131
|
+
| Phase | Start | End | Owner |
|
|
132
|
+
| ----------- | ----- | ----- | -------- |
|
|
128
133
|
| Development | MM/DD | MM/DD | Dev Team |
|
|
129
|
-
| Testing
|
|
130
|
-
| Deployment
|
|
134
|
+
| Testing | MM/DD | MM/DD | QA Team |
|
|
135
|
+
| Deployment | MM/DD | MM/DD | DevOps |
|
|
131
136
|
|
|
132
137
|
---
|
|
133
138
|
|
|
@@ -143,31 +148,33 @@ Framework for analyzing the impact of proposed changes on a system.
|
|
|
143
148
|
|
|
144
149
|
## 7. Communication Plan
|
|
145
150
|
|
|
146
|
-
| Audience
|
|
147
|
-
|
|
148
|
-
| Dev Team
|
|
149
|
-
| Stakeholders | Email
|
|
150
|
-
| Users
|
|
151
|
+
| Audience | Channel | When | Owner |
|
|
152
|
+
| ------------ | ------- | ------------- | ------ |
|
|
153
|
+
| Dev Team | Slack | Before start | [Name] |
|
|
154
|
+
| Stakeholders | Email | Before deploy | [Name] |
|
|
155
|
+
| Users | In-app | After deploy | [Name] |
|
|
151
156
|
|
|
152
157
|
---
|
|
153
158
|
|
|
154
159
|
## 8. Approval
|
|
155
160
|
|
|
156
|
-
| Approver | Role
|
|
157
|
-
|
|
158
|
-
| [Name]
|
|
159
|
-
| [Name]
|
|
160
|
-
| [Name]
|
|
161
|
+
| Approver | Role | Decision | Date |
|
|
162
|
+
| -------- | ------------- | -------- | ---- |
|
|
163
|
+
| [Name] | Tech Lead | | |
|
|
164
|
+
| [Name] | Product Owner | | |
|
|
165
|
+
| [Name] | Security | | |
|
|
161
166
|
|
|
162
167
|
---
|
|
163
168
|
|
|
164
169
|
## 9. Post-Implementation
|
|
165
170
|
|
|
166
171
|
### Verification Steps
|
|
172
|
+
|
|
167
173
|
- [ ] [Verification 1]
|
|
168
174
|
- [ ] [Verification 2]
|
|
169
175
|
|
|
170
176
|
### Monitoring
|
|
177
|
+
|
|
171
178
|
- [ ] Error rates checked
|
|
172
179
|
- [ ] Performance baseline compared
|
|
173
180
|
- [ ] User feedback collected
|
|
@@ -216,17 +223,18 @@ git log --oneline --name-only -- src/changed-file.ts | \
|
|
|
216
223
|
|
|
217
224
|
## Impact Severity Matrix
|
|
218
225
|
|
|
219
|
-
| Probability ↓ / Impact → | Low
|
|
220
|
-
|
|
221
|
-
| **High**
|
|
222
|
-
| **Medium**
|
|
223
|
-
| **Low**
|
|
226
|
+
| Probability ↓ / Impact → | Low | Medium | High |
|
|
227
|
+
| ------------------------ | ------ | ------ | -------- |
|
|
228
|
+
| **High** | Medium | High | Critical |
|
|
229
|
+
| **Medium** | Low | Medium | High |
|
|
230
|
+
| **Low** | Low | Low | Medium |
|
|
224
231
|
|
|
225
232
|
---
|
|
226
233
|
|
|
227
234
|
## Quick Impact Checklist
|
|
228
235
|
|
|
229
236
|
### Before Approving
|
|
237
|
+
|
|
230
238
|
- [ ] All affected files identified
|
|
231
239
|
- [ ] Breaking changes documented
|
|
232
240
|
- [ ] Dependencies analyzed
|
|
@@ -237,6 +245,7 @@ git log --oneline --name-only -- src/changed-file.ts | \
|
|
|
237
245
|
- [ ] Stakeholders notified
|
|
238
246
|
|
|
239
247
|
### Red Flags
|
|
248
|
+
|
|
240
249
|
- 🚩 Many files affected
|
|
241
250
|
- 🚩 Database schema changes
|
|
242
251
|
- 🚩 Public API breaking changes
|
|
@@ -62,29 +62,20 @@ resources:
|
|
|
62
62
|
```yaml
|
|
63
63
|
# task-definition.json
|
|
64
64
|
{
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
{
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
],
|
|
80
|
-
"environment": [
|
|
81
|
-
{
|
|
82
|
-
"name": "DATABASE_URL",
|
|
83
|
-
"value": "postgres://..."
|
|
84
|
-
}
|
|
85
|
-
]
|
|
86
|
-
}
|
|
87
|
-
]
|
|
65
|
+
'family': 'my-api',
|
|
66
|
+
'networkMode': 'awsvpc',
|
|
67
|
+
'requiresCompatibilities': ['FARGATE'],
|
|
68
|
+
'cpu': '256',
|
|
69
|
+
'memory': '512',
|
|
70
|
+
'containerDefinitions':
|
|
71
|
+
[
|
|
72
|
+
{
|
|
73
|
+
'name': 'api',
|
|
74
|
+
'image': 'my-api:latest',
|
|
75
|
+
'portMappings': [{ 'containerPort': 3000, 'protocol': 'tcp' }],
|
|
76
|
+
'environment': [{ 'name': 'DATABASE_URL', 'value': 'postgres://...' }],
|
|
77
|
+
},
|
|
78
|
+
],
|
|
88
79
|
}
|
|
89
80
|
```
|
|
90
81
|
|
|
@@ -124,7 +115,7 @@ Resources:
|
|
|
124
115
|
Properties:
|
|
125
116
|
CidrBlock: 10.0.0.0/16
|
|
126
117
|
EnableDnsHostnames: true
|
|
127
|
-
|
|
118
|
+
|
|
128
119
|
PublicSubnet1:
|
|
129
120
|
Type: AWS::EC2::Subnet
|
|
130
121
|
Properties:
|
|
@@ -132,7 +123,7 @@ Resources:
|
|
|
132
123
|
CidrBlock: 10.0.1.0/24
|
|
133
124
|
AvailabilityZone: !Select [0, !GetAZs '']
|
|
134
125
|
MapPublicIpOnLaunch: true
|
|
135
|
-
|
|
126
|
+
|
|
136
127
|
PrivateSubnet1:
|
|
137
128
|
Type: AWS::EC2::Subnet
|
|
138
129
|
Properties:
|
|
@@ -149,10 +140,7 @@ Resources:
|
|
|
149
140
|
"Statement": [
|
|
150
141
|
{
|
|
151
142
|
"Effect": "Allow",
|
|
152
|
-
"Action": [
|
|
153
|
-
"dynamodb:GetItem",
|
|
154
|
-
"dynamodb:PutItem"
|
|
155
|
-
],
|
|
143
|
+
"Action": ["dynamodb:GetItem", "dynamodb:PutItem"],
|
|
156
144
|
"Resource": "arn:aws:dynamodb:*:*:table/users",
|
|
157
145
|
"Condition": {
|
|
158
146
|
"StringEquals": {
|
|
@@ -195,45 +183,50 @@ Resources:
|
|
|
195
183
|
|
|
196
184
|
### Compute Savings
|
|
197
185
|
|
|
198
|
-
| Option
|
|
199
|
-
|
|
186
|
+
| Option | Savings | Use Case |
|
|
187
|
+
| ------------------ | --------- | --------------------- |
|
|
200
188
|
| Reserved Instances | Up to 72% | Predictable workloads |
|
|
201
|
-
| Savings Plans
|
|
202
|
-
| Spot Instances
|
|
189
|
+
| Savings Plans | Up to 72% | Flexible compute |
|
|
190
|
+
| Spot Instances | Up to 90% | Fault-tolerant |
|
|
203
191
|
|
|
204
192
|
### Storage Tiers
|
|
205
193
|
|
|
206
|
-
| Tier
|
|
207
|
-
|
|
208
|
-
| S3 Standard | $$$
|
|
209
|
-
| S3 IA
|
|
210
|
-
| S3 Glacier
|
|
194
|
+
| Tier | Cost | Access |
|
|
195
|
+
| ----------- | ---- | ---------- |
|
|
196
|
+
| S3 Standard | $$$ | Frequent |
|
|
197
|
+
| S3 IA | $$ | Infrequent |
|
|
198
|
+
| S3 Glacier | $ | Archive |
|
|
211
199
|
|
|
212
200
|
---
|
|
213
201
|
|
|
214
202
|
## Well-Architected Checklist
|
|
215
203
|
|
|
216
204
|
### Operational Excellence
|
|
205
|
+
|
|
217
206
|
- [ ] Infrastructure as code
|
|
218
207
|
- [ ] Automated deployments
|
|
219
208
|
- [ ] Monitoring and alerting
|
|
220
209
|
|
|
221
210
|
### Security
|
|
211
|
+
|
|
222
212
|
- [ ] Least privilege IAM
|
|
223
213
|
- [ ] Encryption at rest and in transit
|
|
224
214
|
- [ ] VPC isolation
|
|
225
215
|
|
|
226
216
|
### Reliability
|
|
217
|
+
|
|
227
218
|
- [ ] Multi-AZ deployment
|
|
228
219
|
- [ ] Auto-scaling configured
|
|
229
220
|
- [ ] Disaster recovery plan
|
|
230
221
|
|
|
231
222
|
### Performance
|
|
223
|
+
|
|
232
224
|
- [ ] Right-sized resources
|
|
233
225
|
- [ ] Caching implemented
|
|
234
226
|
- [ ] CDN for static content
|
|
235
227
|
|
|
236
228
|
### Cost Optimization
|
|
229
|
+
|
|
237
230
|
- [ ] Reserved/spot usage
|
|
238
231
|
- [ ] Resource tagging
|
|
239
232
|
- [ ] Cost monitoring
|