@avesta-hq/prevention 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.avesta/statusLine.js +143 -0
- package/.claude/agents/avesta-acceptance-stage.md +17 -0
- package/.claude/agents/avesta-acceptance-writer.md +17 -0
- package/.claude/agents/avesta-bug-fixer.md +17 -0
- package/.claude/agents/avesta-commit-stage.md +17 -0
- package/.claude/agents/avesta-committer.md +17 -0
- package/.claude/agents/avesta-cycle-runner.md +17 -0
- package/.claude/agents/avesta-dependency-reviewer.md +17 -0
- package/.claude/agents/avesta-dora-init.md +17 -0
- package/.claude/agents/avesta-dora-reporter.md +17 -0
- package/.claude/agents/avesta-driver-builder.md +17 -0
- package/.claude/agents/avesta-dsl-builder.md +17 -0
- package/.claude/agents/avesta-enhancer.md +17 -0
- package/.claude/agents/avesta-green.md +17 -0
- package/.claude/agents/avesta-help.md +31 -0
- package/.claude/agents/avesta-init.md +17 -0
- package/.claude/agents/avesta-layer-worker.md +27 -0
- package/.claude/agents/avesta-layer.md +17 -0
- package/.claude/agents/avesta-mutation-tester.md +17 -0
- package/.claude/agents/avesta-planner.md +17 -0
- package/.claude/agents/avesta-red.md +17 -0
- package/.claude/agents/avesta-refactorer.md +17 -0
- package/.claude/agents/avesta-release-stage.md +17 -0
- package/.claude/agents/avesta-reviewer.md +17 -0
- package/.claude/agents/avesta-scaffolder.md +17 -0
- package/.claude/agents/avesta-shipper.md +17 -0
- package/.claude/agents/avesta-spiker.md +17 -0
- package/.claude/agents/avesta-tech-debt-assessor.md +17 -0
- package/.claude/agents/avesta-visionary.md +17 -0
- package/.claude/commands/avesta-acceptance-stage.md +8 -0
- package/.claude/commands/avesta-acceptance-test.md +8 -0
- package/.claude/commands/avesta-bug-fix.md +8 -0
- package/.claude/commands/avesta-code-review.md +8 -0
- package/.claude/commands/avesta-commit-stage.md +8 -0
- package/.claude/commands/avesta-commit.md +8 -0
- package/.claude/commands/avesta-cycle.md +8 -0
- package/.claude/commands/avesta-dependency-review.md +7 -0
- package/.claude/commands/avesta-dora-init.md +8 -0
- package/.claude/commands/avesta-dora-report.md +8 -0
- package/.claude/commands/avesta-driver.md +8 -0
- package/.claude/commands/avesta-dsl.md +8 -0
- package/.claude/commands/avesta-enhance.md +8 -0
- package/.claude/commands/avesta-green.md +8 -0
- package/.claude/commands/avesta-help.md +5 -0
- package/.claude/commands/avesta-init.md +8 -0
- package/.claude/commands/avesta-layer.md +31 -0
- package/.claude/commands/avesta-mutation-testing.md +8 -0
- package/.claude/commands/avesta-plan.md +8 -0
- package/.claude/commands/avesta-red.md +8 -0
- package/.claude/commands/avesta-refactor.md +8 -0
- package/.claude/commands/avesta-release-stage.md +8 -0
- package/.claude/commands/avesta-scaffold.md +8 -0
- package/.claude/commands/avesta-ship.md +8 -0
- package/.claude/commands/avesta-spike.md +8 -0
- package/.claude/commands/avesta-tech-debt.md +8 -0
- package/.claude/commands/avesta-vision.md +8 -0
- package/CLAUDE.md +88 -0
- package/README.md +113 -0
- package/bin/cli.js +643 -0
- package/package.json +59 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
const { existsSync, readFileSync } = require("fs");
|
|
2
|
+
const { join, basename } = require("path");
|
|
3
|
+
|
|
4
|
+
// ANSI helpers
|
|
5
|
+
const c = {
|
|
6
|
+
reset: "\x1b[0m",
|
|
7
|
+
dim: "\x1b[2m",
|
|
8
|
+
bold: "\x1b[1m",
|
|
9
|
+
green: "\x1b[32m",
|
|
10
|
+
yellow: "\x1b[33m",
|
|
11
|
+
orange: "\x1b[38;5;208m",
|
|
12
|
+
red: "\x1b[31m",
|
|
13
|
+
cyan: "\x1b[36m",
|
|
14
|
+
magenta: "\x1b[35m",
|
|
15
|
+
blue: "\x1b[34m",
|
|
16
|
+
white: "\x1b[37m",
|
|
17
|
+
blink: "\x1b[5m",
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const sep = `${c.dim} │ ${c.reset}`;
|
|
21
|
+
|
|
22
|
+
function getGitBranch(dir) {
|
|
23
|
+
try {
|
|
24
|
+
let d = dir;
|
|
25
|
+
while (d !== "/") {
|
|
26
|
+
const headFile = join(d, ".git", "HEAD");
|
|
27
|
+
if (existsSync(headFile)) {
|
|
28
|
+
const head = readFileSync(headFile, "utf8").trim();
|
|
29
|
+
if (head.startsWith("ref: refs/heads/")) return head.slice(16);
|
|
30
|
+
return head.slice(0, 7);
|
|
31
|
+
}
|
|
32
|
+
d = join(d, "..");
|
|
33
|
+
}
|
|
34
|
+
} catch (_) {}
|
|
35
|
+
return "";
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function getWorkflowState(dir) {
|
|
39
|
+
try {
|
|
40
|
+
const statePath = join(dir, ".avesta", "workflow-state.json");
|
|
41
|
+
if (existsSync(statePath)) {
|
|
42
|
+
return JSON.parse(readFileSync(statePath, "utf8"));
|
|
43
|
+
}
|
|
44
|
+
} catch (_) {}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
let input = "";
|
|
49
|
+
process.stdin.setEncoding("utf8");
|
|
50
|
+
process.stdin.on("data", (chunk) => (input += chunk));
|
|
51
|
+
process.stdin.on("end", () => {
|
|
52
|
+
try {
|
|
53
|
+
const data = JSON.parse(input);
|
|
54
|
+
const model = data.model?.display_name || "Claude";
|
|
55
|
+
const dir = data.workspace?.current_dir || process.cwd();
|
|
56
|
+
const remaining = data.context_window?.remaining_percentage;
|
|
57
|
+
|
|
58
|
+
const parts = [];
|
|
59
|
+
|
|
60
|
+
// 1. Prevention branding
|
|
61
|
+
parts.push(`${c.cyan}${c.bold}◆ AvestaHQ Prevention${c.reset}`);
|
|
62
|
+
|
|
63
|
+
// 2. Git branch
|
|
64
|
+
const branch = getGitBranch(dir);
|
|
65
|
+
if (branch) {
|
|
66
|
+
parts.push(`${c.magenta}${branch}${c.reset}`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// 3. Workflow state
|
|
70
|
+
const state = getWorkflowState(dir);
|
|
71
|
+
if (state && state.current_phase) {
|
|
72
|
+
const phase = state.current_phase.toUpperCase();
|
|
73
|
+
const gates = state.gates || {};
|
|
74
|
+
const tdd = state.tdd_state;
|
|
75
|
+
|
|
76
|
+
// Phase with color
|
|
77
|
+
const phaseColors = {
|
|
78
|
+
IDLE: c.dim,
|
|
79
|
+
VISION: c.blue,
|
|
80
|
+
PLAN: c.blue,
|
|
81
|
+
ATDD: c.yellow,
|
|
82
|
+
TDD: c.green,
|
|
83
|
+
DRIVER: c.yellow,
|
|
84
|
+
REVIEW: c.orange,
|
|
85
|
+
SHIP: c.cyan,
|
|
86
|
+
};
|
|
87
|
+
const phaseColor = phaseColors[phase] || c.white;
|
|
88
|
+
|
|
89
|
+
// TDD cycle detail
|
|
90
|
+
let phaseLabel = phase;
|
|
91
|
+
if (phase === "TDD" && tdd) {
|
|
92
|
+
const cycleColors = { red: c.red, green: c.green, refactor: c.yellow };
|
|
93
|
+
const cycleColor = cycleColors[tdd.cycle] || c.white;
|
|
94
|
+
phaseLabel = `TDD:${cycleColor}${tdd.cycle.toUpperCase()}${c.reset}`;
|
|
95
|
+
parts.push(phaseLabel);
|
|
96
|
+
} else {
|
|
97
|
+
parts.push(`${phaseColor}${phaseLabel}${c.reset}`);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Gate progress
|
|
101
|
+
const GATE_ORDER = [
|
|
102
|
+
"vision_approved", "plan_approved", "atdd_approved",
|
|
103
|
+
"characterization_complete", "tdd_complete",
|
|
104
|
+
"driver_complete", "review_approved",
|
|
105
|
+
];
|
|
106
|
+
const changeType = state.change_type || "feature";
|
|
107
|
+
const CHANGE_TYPE_GATES = {
|
|
108
|
+
feature: GATE_ORDER,
|
|
109
|
+
bug_fix: ["plan_approved", "tdd_complete", "review_approved"],
|
|
110
|
+
enhancement: ["plan_approved", "atdd_approved", "tdd_complete", "driver_complete", "review_approved"],
|
|
111
|
+
tech_debt: ["plan_approved", "characterization_complete", "tdd_complete", "review_approved"],
|
|
112
|
+
};
|
|
113
|
+
const requiredGates = CHANGE_TYPE_GATES[changeType] || GATE_ORDER;
|
|
114
|
+
const passed = requiredGates.filter((g) => gates[g] === true).length;
|
|
115
|
+
const total = requiredGates.length;
|
|
116
|
+
|
|
117
|
+
const gateColor = passed === total ? c.green : passed > 0 ? c.yellow : c.dim;
|
|
118
|
+
parts.push(`${gateColor}${passed}/${total} gates${c.reset}`);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// 4. Model
|
|
122
|
+
parts.push(`${c.cyan}${model}${c.reset}`);
|
|
123
|
+
|
|
124
|
+
// 5. Context window bar
|
|
125
|
+
if (remaining != null) {
|
|
126
|
+
const used = Math.min(100, Math.round(((100 - Math.round(remaining)) / 80) * 100));
|
|
127
|
+
const totalSegs = 10;
|
|
128
|
+
const filled = Math.round((used / 100) * totalSegs);
|
|
129
|
+
const bar = "\u2593".repeat(filled) + "\u2591".repeat(totalSegs - filled);
|
|
130
|
+
|
|
131
|
+
let color;
|
|
132
|
+
if (used < 63) color = c.green;
|
|
133
|
+
else if (used < 81) color = c.yellow;
|
|
134
|
+
else if (used < 95) color = c.orange;
|
|
135
|
+
else color = `${c.blink}${c.red}`;
|
|
136
|
+
|
|
137
|
+
const label = used >= 95 ? `\u{1F480} ${used}%` : `${used}%`;
|
|
138
|
+
parts.push(`${color}${bar} ${label}${c.reset}`);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
process.stdout.write(parts.join(sep));
|
|
142
|
+
} catch (_) {}
|
|
143
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-acceptance-stage
|
|
3
|
+
description: Set up acceptance stage workflow with version-based test execution
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 30
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-acceptance-stage
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("acceptance-stage")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-acceptance-writer
|
|
3
|
+
description: Write Executable Specifications in problem-domain language
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Glob, Grep
|
|
6
|
+
maxTurns: 25
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-acceptance-writer
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("acceptance-writer")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-bug-fixer
|
|
3
|
+
description: Bug fix workflow - reproduce, failing test, fix, verify
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 30
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-bug-fixer
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("bug-fixer")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-commit-stage
|
|
3
|
+
description: Set up commit stage CI/CD pipeline with test pyramid enforcement
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 30
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-commit-stage
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("commit-stage")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-committer
|
|
3
|
+
description: Create git commits following conventional commit standards
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 10
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-committer
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("committer")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-cycle-runner
|
|
3
|
+
description: Execute complete TDD red-green-refactor cycles for feature implementation
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep, Task
|
|
6
|
+
maxTurns: 50
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-cycle-runner
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("cycle-runner")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-dependency-reviewer
|
|
3
|
+
description: Review dependencies and generate gradual update plan
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 20
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-dependency-reviewer
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("dependency-reviewer")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-dora-init
|
|
3
|
+
description: Initialize DORA metrics tracking for the project
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Write, Bash
|
|
6
|
+
maxTurns: 15
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-dora-init
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("dora-init")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-dora-reporter
|
|
3
|
+
description: Display DORA metrics report for the project
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 15
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-dora-reporter
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("dora-reporter")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-driver-builder
|
|
3
|
+
description: Implement Protocol Driver for acceptance tests
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 30
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-driver-builder
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("driver-builder")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-dsl-builder
|
|
3
|
+
description: Implement Domain Specific Language for acceptance tests
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Glob, Grep
|
|
6
|
+
maxTurns: 25
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-dsl-builder
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("dsl-builder")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-enhancer
|
|
3
|
+
description: Enhancement workflow - plan, ATDD, TDD, driver, review
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 30
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-enhancer
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("enhancer")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-green
|
|
3
|
+
description: TDD Green Phase - Write MINIMAL code to pass the failing test
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 25
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-green
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("green")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-help
|
|
3
|
+
description: Show Prevention status, available commands, and next steps
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Glob, Grep
|
|
6
|
+
maxTurns: 5
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-help
|
|
10
|
+
|
|
11
|
+
Show the current Prevention workflow status, available commands, and next steps.
|
|
12
|
+
|
|
13
|
+
## Steps
|
|
14
|
+
|
|
15
|
+
1. Call `avesta_get_status()` to get the current workflow state
|
|
16
|
+
2. Display the `display_banner` from the response verbatim in a code block
|
|
17
|
+
3. Display a formatted summary following the format in the `/avesta-help` command file
|
|
18
|
+
|
|
19
|
+
### If NOT initialized:
|
|
20
|
+
|
|
21
|
+
Show getting started instructions with `/avesta-init`, `/vision`, `/plan` and change type shortcuts (`/bug-fix`, `/enhance`, `/tech-debt`).
|
|
22
|
+
|
|
23
|
+
### If initialized:
|
|
24
|
+
|
|
25
|
+
Show:
|
|
26
|
+
- Current phase, feature, change type, and mode
|
|
27
|
+
- Gate status (only gates required for the current change type)
|
|
28
|
+
- Next action
|
|
29
|
+
- Phase-specific available commands
|
|
30
|
+
|
|
31
|
+
You are operating as a specialized Prevention. Use only the MCP tools listed above.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-init
|
|
3
|
+
description: Initialize Prevention workflow tracking for a project
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Write, Bash, Glob
|
|
6
|
+
maxTurns: 15
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-init
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("init")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-layer-worker
|
|
3
|
+
description: Implement a single Clean Architecture layer with TDD (all tests first, then all code)
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 30
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-layer-worker
|
|
10
|
+
|
|
11
|
+
You implement a SINGLE Clean Architecture layer using the Layer approach (all tests first, then all code, then refactor).
|
|
12
|
+
|
|
13
|
+
## Setup
|
|
14
|
+
|
|
15
|
+
1. Extract LAYER and PROJECT_TYPE from your task prompt:
|
|
16
|
+
- LAYER: one of `domain`, `application`, `infrastructure`, `presentation`
|
|
17
|
+
- PROJECT_TYPE: one of `backend`, `frontend` (default: `backend`)
|
|
18
|
+
|
|
19
|
+
2. Call `avesta_get_prompt("layer-worker", { tdd_state: { layer: "<LAYER>", cycle: "red", test_count: 0 }, project_type: "<PROJECT_TYPE>" })` to receive your full instructions
|
|
20
|
+
|
|
21
|
+
3. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
22
|
+
|
|
23
|
+
4. Follow the received instructions exactly, applying them to YOUR LAYER ONLY
|
|
24
|
+
|
|
25
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt and skills.
|
|
26
|
+
|
|
27
|
+
**CRITICAL**: You MUST stay within your assigned layer's directory boundaries. Do not create production code in other layers.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-layer
|
|
3
|
+
description: Implement a full layer - all tests first, then all production code
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 50
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-layer
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("layer")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-mutation-tester
|
|
3
|
+
description: Analyze test effectiveness with mutation testing patterns
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 25
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-mutation-tester
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("mutation-tester")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-planner
|
|
3
|
+
description: Create implementation plans using Example Mapping and behavioral analysis
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Glob, Grep
|
|
6
|
+
maxTurns: 30
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-planner
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("planner")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-red
|
|
3
|
+
description: TDD Red Phase - Write ONE failing test
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 25
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-red
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("red")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-refactorer
|
|
3
|
+
description: TDD Refactor Phase - Improve code structure while keeping tests green
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 25
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-refactorer
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("refactorer")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-release-stage
|
|
3
|
+
description: Set up release stage CI/CD pipeline with contract verification
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 30
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-release-stage
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("release-stage")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-reviewer
|
|
3
|
+
description: Review code for XP/CD best practices and Clean Architecture
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Glob, Grep
|
|
6
|
+
maxTurns: 20
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-reviewer
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("reviewer")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-scaffolder
|
|
3
|
+
description: Scaffold project structure, dependencies, and config files
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Write, Bash, Glob
|
|
6
|
+
maxTurns: 15
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-scaffolder
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("scaffolder")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-shipper
|
|
3
|
+
description: Merge completed work to main branch
|
|
4
|
+
model: haiku
|
|
5
|
+
tools: Read, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 15
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-shipper
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("shipper")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-spiker
|
|
3
|
+
description: Technical exploration with disposable code for learning
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 30
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-spiker
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("spiker")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: avesta-tech-debt-assessor
|
|
3
|
+
description: Tech debt workflow - approval tests, refactor, verify
|
|
4
|
+
model: inherit
|
|
5
|
+
tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
maxTurns: 30
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# avesta-tech-debt-assessor
|
|
10
|
+
|
|
11
|
+
Load your system prompt and skills from the Prevention server:
|
|
12
|
+
|
|
13
|
+
1. Call `avesta_get_prompt("tech-debt-assessor")` to receive your full instructions
|
|
14
|
+
2. For each skill in the response's `skills_to_load`, call `avesta_get_skill("{skill-key}")`
|
|
15
|
+
3. Follow the received instructions exactly
|
|
16
|
+
|
|
17
|
+
You are operating as a specialized Prevention. Do not proceed without loading your prompt.
|