@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.
Files changed (60) hide show
  1. package/.avesta/statusLine.js +143 -0
  2. package/.claude/agents/avesta-acceptance-stage.md +17 -0
  3. package/.claude/agents/avesta-acceptance-writer.md +17 -0
  4. package/.claude/agents/avesta-bug-fixer.md +17 -0
  5. package/.claude/agents/avesta-commit-stage.md +17 -0
  6. package/.claude/agents/avesta-committer.md +17 -0
  7. package/.claude/agents/avesta-cycle-runner.md +17 -0
  8. package/.claude/agents/avesta-dependency-reviewer.md +17 -0
  9. package/.claude/agents/avesta-dora-init.md +17 -0
  10. package/.claude/agents/avesta-dora-reporter.md +17 -0
  11. package/.claude/agents/avesta-driver-builder.md +17 -0
  12. package/.claude/agents/avesta-dsl-builder.md +17 -0
  13. package/.claude/agents/avesta-enhancer.md +17 -0
  14. package/.claude/agents/avesta-green.md +17 -0
  15. package/.claude/agents/avesta-help.md +31 -0
  16. package/.claude/agents/avesta-init.md +17 -0
  17. package/.claude/agents/avesta-layer-worker.md +27 -0
  18. package/.claude/agents/avesta-layer.md +17 -0
  19. package/.claude/agents/avesta-mutation-tester.md +17 -0
  20. package/.claude/agents/avesta-planner.md +17 -0
  21. package/.claude/agents/avesta-red.md +17 -0
  22. package/.claude/agents/avesta-refactorer.md +17 -0
  23. package/.claude/agents/avesta-release-stage.md +17 -0
  24. package/.claude/agents/avesta-reviewer.md +17 -0
  25. package/.claude/agents/avesta-scaffolder.md +17 -0
  26. package/.claude/agents/avesta-shipper.md +17 -0
  27. package/.claude/agents/avesta-spiker.md +17 -0
  28. package/.claude/agents/avesta-tech-debt-assessor.md +17 -0
  29. package/.claude/agents/avesta-visionary.md +17 -0
  30. package/.claude/commands/avesta-acceptance-stage.md +8 -0
  31. package/.claude/commands/avesta-acceptance-test.md +8 -0
  32. package/.claude/commands/avesta-bug-fix.md +8 -0
  33. package/.claude/commands/avesta-code-review.md +8 -0
  34. package/.claude/commands/avesta-commit-stage.md +8 -0
  35. package/.claude/commands/avesta-commit.md +8 -0
  36. package/.claude/commands/avesta-cycle.md +8 -0
  37. package/.claude/commands/avesta-dependency-review.md +7 -0
  38. package/.claude/commands/avesta-dora-init.md +8 -0
  39. package/.claude/commands/avesta-dora-report.md +8 -0
  40. package/.claude/commands/avesta-driver.md +8 -0
  41. package/.claude/commands/avesta-dsl.md +8 -0
  42. package/.claude/commands/avesta-enhance.md +8 -0
  43. package/.claude/commands/avesta-green.md +8 -0
  44. package/.claude/commands/avesta-help.md +5 -0
  45. package/.claude/commands/avesta-init.md +8 -0
  46. package/.claude/commands/avesta-layer.md +31 -0
  47. package/.claude/commands/avesta-mutation-testing.md +8 -0
  48. package/.claude/commands/avesta-plan.md +8 -0
  49. package/.claude/commands/avesta-red.md +8 -0
  50. package/.claude/commands/avesta-refactor.md +8 -0
  51. package/.claude/commands/avesta-release-stage.md +8 -0
  52. package/.claude/commands/avesta-scaffold.md +8 -0
  53. package/.claude/commands/avesta-ship.md +8 -0
  54. package/.claude/commands/avesta-spike.md +8 -0
  55. package/.claude/commands/avesta-tech-debt.md +8 -0
  56. package/.claude/commands/avesta-vision.md +8 -0
  57. package/CLAUDE.md +88 -0
  58. package/README.md +113 -0
  59. package/bin/cli.js +643 -0
  60. 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.