vibe-fabric 0.3.3 → 0.4.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 (53) hide show
  1. package/dist/cli/commands/analyze.d.ts +33 -0
  2. package/dist/cli/commands/analyze.d.ts.map +1 -0
  3. package/dist/cli/commands/analyze.js +243 -0
  4. package/dist/cli/commands/analyze.js.map +1 -0
  5. package/dist/cli/commands/config/get.d.ts +9 -0
  6. package/dist/cli/commands/config/get.d.ts.map +1 -0
  7. package/dist/cli/commands/config/get.js +69 -0
  8. package/dist/cli/commands/config/get.js.map +1 -0
  9. package/dist/cli/commands/config/list.d.ts +24 -0
  10. package/dist/cli/commands/config/list.d.ts.map +1 -0
  11. package/dist/cli/commands/config/list.js +146 -0
  12. package/dist/cli/commands/config/list.js.map +1 -0
  13. package/dist/cli/commands/config/set.d.ts +14 -0
  14. package/dist/cli/commands/config/set.d.ts.map +1 -0
  15. package/dist/cli/commands/config/set.js +111 -0
  16. package/dist/cli/commands/config/set.js.map +1 -0
  17. package/dist/cli/commands/repo/list.d.ts +26 -0
  18. package/dist/cli/commands/repo/list.d.ts.map +1 -0
  19. package/dist/cli/commands/repo/list.js +197 -0
  20. package/dist/cli/commands/repo/list.js.map +1 -0
  21. package/dist/cli/commands/repo/remove.d.ts +29 -0
  22. package/dist/cli/commands/repo/remove.d.ts.map +1 -0
  23. package/dist/cli/commands/repo/remove.js +219 -0
  24. package/dist/cli/commands/repo/remove.js.map +1 -0
  25. package/dist/cli/commands/report.d.ts +16 -0
  26. package/dist/cli/commands/report.d.ts.map +1 -0
  27. package/dist/cli/commands/report.js +160 -0
  28. package/dist/cli/commands/report.js.map +1 -0
  29. package/dist/cli/index.js +14 -0
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/core/config.d.ts +25 -0
  32. package/dist/core/config.d.ts.map +1 -1
  33. package/dist/core/config.js +77 -0
  34. package/dist/core/config.js.map +1 -1
  35. package/dist/core/repo/templates/claude-agents.d.ts.map +1 -1
  36. package/dist/core/repo/templates/claude-agents.js +136 -28
  37. package/dist/core/repo/templates/claude-agents.js.map +1 -1
  38. package/dist/core/repo/templates/claude-prompts.d.ts +1 -1
  39. package/dist/core/repo/templates/claude-prompts.d.ts.map +1 -1
  40. package/dist/core/repo/templates/claude-prompts.js +412 -157
  41. package/dist/core/repo/templates/claude-prompts.js.map +1 -1
  42. package/dist/core/repo/templates/claude-scripts.d.ts.map +1 -1
  43. package/dist/core/repo/templates/claude-scripts.js +555 -94
  44. package/dist/core/repo/templates/claude-scripts.js.map +1 -1
  45. package/dist/core/report.d.ts +25 -0
  46. package/dist/core/report.d.ts.map +1 -0
  47. package/dist/core/report.js +702 -0
  48. package/dist/core/report.js.map +1 -0
  49. package/dist/types/report.d.ts +158 -0
  50. package/dist/types/report.d.ts.map +1 -0
  51. package/dist/types/report.js +7 -0
  52. package/dist/types/report.js.map +1 -0
  53. package/package.json +1 -1
@@ -0,0 +1,160 @@
1
+ /**
2
+ * vibe report - Generate exportable project reports
3
+ *
4
+ * Generates project reports in Markdown, JSON, or HTML format for sharing
5
+ * with stakeholders or integration with external tools.
6
+ */
7
+ import { Command, Option } from 'clipanion';
8
+ import chalk from 'chalk';
9
+ import ora from 'ora';
10
+ import { writeFile, mkdir } from 'fs/promises';
11
+ import { existsSync } from 'fs';
12
+ import path from 'path';
13
+ import { loadConfig } from '../../core/config.js';
14
+ import { findProjectRoot } from '../../core/project.js';
15
+ import { aggregateReportData, generateMarkdown, generateJson, generateHtml, } from '../../core/report.js';
16
+ /**
17
+ * Valid format values
18
+ */
19
+ const VALID_FORMATS = ['markdown', 'json', 'html'];
20
+ /**
21
+ * Valid type values
22
+ */
23
+ const VALID_TYPES = ['full', 'status', 'coverage', 'gaps'];
24
+ export class ReportCommand extends Command {
25
+ static paths = [['report']];
26
+ static usage = Command.Usage({
27
+ description: 'Generate exportable project reports',
28
+ details: `
29
+ Generates project reports in various formats for sharing with stakeholders
30
+ or integration with external tools.
31
+
32
+ Supported formats:
33
+ - markdown (default): GitHub-flavored Markdown
34
+ - json: Machine-readable JSON with schema
35
+ - html: Self-contained HTML with embedded CSS
36
+
37
+ Report types:
38
+ - full (default): All sections included
39
+ - status: Repository and scope status only
40
+ - coverage: PRD coverage analysis only
41
+ - gaps: Gap analysis only
42
+
43
+ Output is written to stdout by default, or to a file with --output.
44
+ `,
45
+ examples: [
46
+ ['Generate Markdown report to stdout', 'vibe report'],
47
+ ['Generate JSON report', 'vibe report --format json'],
48
+ ['Generate HTML report to file', 'vibe report --format html --output report.html'],
49
+ ['Generate coverage-only report', 'vibe report --type coverage'],
50
+ ['Generate gaps report as JSON', 'vibe report --type gaps --format json'],
51
+ ],
52
+ });
53
+ // Options
54
+ format = Option.String('--format,-f', 'markdown', {
55
+ description: 'Output format: markdown, json, html',
56
+ });
57
+ output = Option.String('--output,-o', {
58
+ description: 'Write report to file instead of stdout',
59
+ });
60
+ type = Option.String('--type,-t', 'full', {
61
+ description: 'Report type: full, status, coverage, gaps',
62
+ });
63
+ async execute() {
64
+ // Validate format
65
+ const format = this.format.toLowerCase();
66
+ if (!VALID_FORMATS.includes(format)) {
67
+ this.context.stderr.write(chalk.red(` Error: Invalid format '${this.format}'.\n`));
68
+ this.context.stderr.write(chalk.gray(` Valid formats: ${VALID_FORMATS.join(', ')}\n\n`));
69
+ return 1;
70
+ }
71
+ // Validate type
72
+ const reportType = this.type.toLowerCase();
73
+ if (!VALID_TYPES.includes(reportType)) {
74
+ this.context.stderr.write(chalk.red(` Error: Invalid type '${this.type}'.\n`));
75
+ this.context.stderr.write(chalk.gray(` Valid types: ${VALID_TYPES.join(', ')}\n\n`));
76
+ return 1;
77
+ }
78
+ // Find project root
79
+ const projectRoot = findProjectRoot(process.cwd());
80
+ if (!projectRoot) {
81
+ this.context.stderr.write(chalk.red(' Error: Not inside a vibe-fabric project.\n'));
82
+ this.context.stderr.write(chalk.gray(' Run `vibe init` to create a planning hub first.\n\n'));
83
+ return 1;
84
+ }
85
+ // Load config
86
+ const config = await loadConfig(projectRoot);
87
+ if (!config) {
88
+ this.context.stderr.write(chalk.red(' Error: Failed to load configuration.\n\n'));
89
+ return 1;
90
+ }
91
+ // Show spinner only when writing to file (stdout should be clean for piping)
92
+ const showSpinner = !!this.output;
93
+ const spinner = showSpinner ? ora('Generating report...').start() : null;
94
+ try {
95
+ // Aggregate data
96
+ const data = await aggregateReportData(projectRoot, config);
97
+ // Generate report
98
+ let report;
99
+ switch (format) {
100
+ case 'json':
101
+ report = generateJson(data, reportType);
102
+ break;
103
+ case 'html':
104
+ report = generateHtml(data, reportType);
105
+ break;
106
+ case 'markdown':
107
+ default:
108
+ report = generateMarkdown(data, reportType);
109
+ break;
110
+ }
111
+ // Output report
112
+ if (this.output) {
113
+ // Write to file
114
+ const outputPath = path.resolve(this.output);
115
+ const outputDir = path.dirname(outputPath);
116
+ // Create directory if it doesn't exist
117
+ if (!existsSync(outputDir)) {
118
+ await mkdir(outputDir, { recursive: true });
119
+ }
120
+ await writeFile(outputPath, report, 'utf-8');
121
+ spinner?.succeed(chalk.green(`Report saved to ${outputPath}`));
122
+ // Show summary
123
+ this.context.stdout.write('\n');
124
+ this.context.stdout.write(chalk.gray(` Format: ${format}\n`));
125
+ this.context.stdout.write(chalk.gray(` Type: ${reportType}\n`));
126
+ this.context.stdout.write(chalk.gray(` Health: ${getHealthDisplay(data.summary.health)}\n`));
127
+ this.context.stdout.write('\n');
128
+ }
129
+ else {
130
+ // Write to stdout
131
+ this.context.stdout.write(report);
132
+ if (!report.endsWith('\n')) {
133
+ this.context.stdout.write('\n');
134
+ }
135
+ }
136
+ return 0;
137
+ }
138
+ catch (error) {
139
+ spinner?.fail(chalk.red('Failed to generate report'));
140
+ this.context.stderr.write(chalk.red(` Error: ${error instanceof Error ? error.message : 'Unknown error'}\n\n`));
141
+ return 1;
142
+ }
143
+ }
144
+ }
145
+ /**
146
+ * Get colored health display
147
+ */
148
+ function getHealthDisplay(health) {
149
+ switch (health) {
150
+ case 'healthy':
151
+ return chalk.green('healthy');
152
+ case 'warning':
153
+ return chalk.yellow('warning');
154
+ case 'critical':
155
+ return chalk.red('critical');
156
+ default:
157
+ return health;
158
+ }
159
+ }
160
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/cli/commands/report.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -6,14 +6,21 @@ import { HelpCommand } from './commands/help.js';
6
6
  import { DoctorCommand } from './commands/doctor.js';
7
7
  import { RepoAddCommand } from './commands/repo/add.js';
8
8
  import { RepoCreateCommand } from './commands/repo/create.js';
9
+ import { RepoListCommand } from './commands/repo/list.js';
10
+ import { RepoRemoveCommand } from './commands/repo/remove.js';
9
11
  import { PrdCommand } from './commands/prd.js';
12
+ import { AnalyzeCommand } from './commands/analyze.js';
10
13
  import { ScopeCommand } from './commands/scope.js';
11
14
  import { SendCommand } from './commands/send.js';
12
15
  import { SyncCommand } from './commands/sync.js';
13
16
  import { StatusCommand } from './commands/status.js';
14
17
  import { CoverageCommand } from './commands/coverage.js';
15
18
  import { GapsCommand } from './commands/gaps.js';
19
+ import { ReportCommand } from './commands/report.js';
16
20
  import { ClaudeCommandsCommand } from './commands/claude.js';
21
+ import { ConfigGetCommand } from './commands/config/get.js';
22
+ import { ConfigSetCommand } from './commands/config/set.js';
23
+ import { ConfigListCommand } from './commands/config/list.js';
17
24
  import { runDashboard } from './ui/dashboard.js';
18
25
  // Create CLI instance
19
26
  const cli = new Cli({
@@ -28,14 +35,21 @@ cli.register(HelpCommand);
28
35
  cli.register(DoctorCommand);
29
36
  cli.register(RepoAddCommand);
30
37
  cli.register(RepoCreateCommand);
38
+ cli.register(RepoListCommand);
39
+ cli.register(RepoRemoveCommand);
31
40
  cli.register(PrdCommand);
41
+ cli.register(AnalyzeCommand);
32
42
  cli.register(ScopeCommand);
33
43
  cli.register(SendCommand);
34
44
  cli.register(SyncCommand);
35
45
  cli.register(StatusCommand);
36
46
  cli.register(CoverageCommand);
37
47
  cli.register(GapsCommand);
48
+ cli.register(ReportCommand);
38
49
  cli.register(ClaudeCommandsCommand);
50
+ cli.register(ConfigGetCommand);
51
+ cli.register(ConfigSetCommand);
52
+ cli.register(ConfigListCommand);
39
53
  // Register built-in commands
40
54
  cli.register(Builtins.DefinitionsCommand);
41
55
  // Run CLI
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -15,4 +15,29 @@ export declare function isVibeProject(dirPath: string): boolean;
15
15
  * Get the config file path for a project
16
16
  */
17
17
  export declare function getConfigPath(projectPath: string): string;
18
+ /**
19
+ * Get a config value by dot-notation key
20
+ * @param config - The configuration object
21
+ * @param key - Dot-notation key (e.g., "project.name", "repos")
22
+ * @returns The value at the key, or undefined if not found
23
+ */
24
+ export declare function getConfigValue(config: Config, key: string): unknown;
25
+ /**
26
+ * Set a config value by dot-notation key
27
+ * @param config - The configuration object to modify
28
+ * @param key - Dot-notation key (e.g., "project.name")
29
+ * @param value - The value to set
30
+ * @returns The modified config
31
+ */
32
+ export declare function setConfigValue(config: Config, key: string, value: unknown): Config;
33
+ /**
34
+ * Parse a string value to appropriate type
35
+ * @param value - The string value to parse
36
+ * @returns The parsed value (boolean, number, or string)
37
+ */
38
+ export declare function parseValue(value: string): unknown;
39
+ /**
40
+ * Get all valid config keys (for validation and autocomplete)
41
+ */
42
+ export declare function getValidConfigKeys(): string[];
18
43
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAmB1D;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB5E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAmB1D;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsB5E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAWnE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACb,MAAM,CAcR;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAcjD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAc7C"}
@@ -75,4 +75,81 @@ export function isVibeProject(dirPath) {
75
75
  export function getConfigPath(projectPath) {
76
76
  return path.join(projectPath, CONFIG_FILE_NAME);
77
77
  }
78
+ /**
79
+ * Get a config value by dot-notation key
80
+ * @param config - The configuration object
81
+ * @param key - Dot-notation key (e.g., "project.name", "repos")
82
+ * @returns The value at the key, or undefined if not found
83
+ */
84
+ export function getConfigValue(config, key) {
85
+ const parts = key.split('.');
86
+ let current = config;
87
+ for (const part of parts) {
88
+ if (current === null || current === undefined)
89
+ return undefined;
90
+ if (typeof current !== 'object')
91
+ return undefined;
92
+ current = current[part];
93
+ }
94
+ return current;
95
+ }
96
+ /**
97
+ * Set a config value by dot-notation key
98
+ * @param config - The configuration object to modify
99
+ * @param key - Dot-notation key (e.g., "project.name")
100
+ * @param value - The value to set
101
+ * @returns The modified config
102
+ */
103
+ export function setConfigValue(config, key, value) {
104
+ const parts = key.split('.');
105
+ const lastPart = parts.pop();
106
+ let current = config;
107
+ for (const part of parts) {
108
+ if (!(part in current) || typeof current[part] !== 'object') {
109
+ current[part] = {};
110
+ }
111
+ current = current[part];
112
+ }
113
+ current[lastPart] = value;
114
+ return config;
115
+ }
116
+ /**
117
+ * Parse a string value to appropriate type
118
+ * @param value - The string value to parse
119
+ * @returns The parsed value (boolean, number, or string)
120
+ */
121
+ export function parseValue(value) {
122
+ // Boolean
123
+ if (value.toLowerCase() === 'true')
124
+ return true;
125
+ if (value.toLowerCase() === 'false')
126
+ return false;
127
+ // Number (only if it's a valid number and not empty)
128
+ const trimmed = value.trim();
129
+ if (trimmed !== '') {
130
+ const num = Number(trimmed);
131
+ if (!isNaN(num))
132
+ return num;
133
+ }
134
+ // String (return as-is)
135
+ return value;
136
+ }
137
+ /**
138
+ * Get all valid config keys (for validation and autocomplete)
139
+ */
140
+ export function getValidConfigKeys() {
141
+ return [
142
+ 'project',
143
+ 'project.name',
144
+ 'project.version',
145
+ 'project.created',
146
+ 'project.type',
147
+ 'project.description',
148
+ 'project.description.summary',
149
+ 'project.description.goals',
150
+ 'project.description.constraints',
151
+ 'project.description.targetUsers',
152
+ 'repos',
153
+ ];
154
+ }
78
155
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-agents.d.ts","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,YAAY,EAAE,YAAY,EA4KtC,CAAC"}
1
+ {"version":3,"file":"claude-agents.d.ts","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,YAAY,EAAE,YAAY,EAwRtC,CAAC"}
@@ -117,25 +117,79 @@ description: Pre-execution research for Ralph autonomous mode
117
117
 
118
118
  # Ralph Research Agent
119
119
 
120
- You prepare context for autonomous execution sessions.
120
+ You prepare comprehensive context for autonomous task execution. Your research
121
+ enables subsequent sessions to execute tasks without needing to re-investigate
122
+ the codebase.
123
+
124
+ ## Context
125
+
126
+ This agent runs ONCE at the start of a Ralph execution loop. The context you
127
+ gather will be saved to the plan file and used by ALL subsequent task sessions.
128
+
129
+ ## Capabilities
130
+
131
+ - Read and analyze plan files
132
+ - Explore codebase structure via maps
133
+ - Search knowledge base for patterns and gotchas
134
+ - Identify key files for each task
135
+ - Detect potential blockers early
121
136
 
122
137
  ## Task
123
138
 
124
- Before each execution session:
125
- 1. Review the current plan state
126
- 2. Identify what was completed in previous sessions
127
- 3. Determine the next logical steps
128
- 4. Gather relevant context (files, KB entries)
129
- 5. Identify potential blockers
139
+ 1. **Read the Plan**
140
+ - Understand all tasks and their order
141
+ - Note dependencies between tasks
142
+ - Identify acceptance criteria
130
143
 
131
- ## Output
144
+ 2. **Analyze Codebase**
145
+ - Read maps in \`vibe/maps/\` for architecture understanding
146
+ - Search \`vibe/knowledge-base/\` for relevant entries
147
+ - Check completed plans for similar work patterns
148
+ - Identify coding conventions and patterns
149
+
150
+ 3. **Map Files to Tasks**
151
+ - For each task, list specific files to read
152
+ - For each task, list files to create or modify
153
+ - Identify shared utilities and types
154
+ - Locate test file conventions
155
+
156
+ 4. **Document Findings**
157
+ - Append "Ralph Research Context" section to plan
158
+ - Include codebase summary, key patterns
159
+ - List files by task
160
+ - Note any potential blockers
161
+
162
+ ## Output Format
163
+
164
+ Append to plan file:
165
+
166
+ \`\`\`markdown
167
+ ## Ralph Research Context
168
+
169
+ ### Codebase Summary
170
+ - [Architecture patterns]
171
+ - [Coding conventions]
172
+ - [Key utilities]
173
+
174
+ ### Key Files by Task
175
+
176
+ **Task 1:**
177
+ - Read: [files]
178
+ - Modify: [files]
179
+ - Test: [test files]
180
+
181
+ [Continue for all tasks...]
182
+
183
+ ### Potential Blockers
184
+ - [Identified risks]
185
+ \`\`\`
186
+
187
+ ## Guidelines
132
188
 
133
- Produce a session brief containing:
134
- - Summary of progress so far
135
- - Next steps to execute
136
- - Required context and files
137
- - Known risks or considerations
138
- - Success criteria for this session
189
+ - Be thorough - task sessions depend on this research
190
+ - Be specific - use actual file paths
191
+ - Be concise - avoid unnecessary prose
192
+ - EXIT immediately when complete
139
193
  `,
140
194
  },
141
195
  // ralph-cleanup-agent.md
@@ -148,25 +202,79 @@ description: Post-execution verification for Ralph autonomous mode
148
202
 
149
203
  # Ralph Cleanup Agent
150
204
 
151
- You verify and clean up after autonomous execution sessions.
205
+ You verify and finalize work after all tasks are complete. This is the last
206
+ phase of a Ralph execution loop.
207
+
208
+ ## Context
209
+
210
+ This agent runs ONCE after all tasks have been executed. You verify the complete
211
+ implementation, run quality checks, and prepare the plan for completion.
212
+
213
+ ## Capabilities
214
+
215
+ - Run test suites and quality checks
216
+ - Verify acceptance criteria
217
+ - Update plan documentation
218
+ - Add knowledge base entries
219
+ - Finalize plan status
152
220
 
153
221
  ## Task
154
222
 
155
- After each execution session:
156
- 1. Verify changes are correct and complete
157
- 2. Run relevant tests
158
- 3. Update progress log
159
- 4. Check acceptance criteria
160
- 5. Prepare handoff notes for next session
223
+ 1. **Run Quality Checks**
224
+ - Execute full test suite: \`npm test\`
225
+ - Run typecheck: \`npm run typecheck\`
226
+ - Run linter: \`npm run lint\`
227
+ - Run build: \`npm run build\`
161
228
 
162
- ## Output
229
+ 2. **Verify Acceptance Criteria**
230
+ - Review each AC from the plan
231
+ - Mark each as verified or note issues
232
+ - Be honest about failures
233
+
234
+ 3. **Review Changes**
235
+ - Check all modified files
236
+ - Remove debug code or console.logs
237
+ - Ensure formatting is consistent
238
+
239
+ 4. **Finalize Documentation**
240
+ - Add completion summary to plan
241
+ - Update plan status to "complete"
242
+ - Create knowledge base entries for learnings
243
+
244
+ ## Output Format
245
+
246
+ Add to plan file:
247
+
248
+ \`\`\`markdown
249
+ ## Completion Summary
250
+
251
+ ### Verification Date
252
+ [Date]
253
+
254
+ ### Quality Checks
255
+ - [x] Tests pass
256
+ - [x] Typecheck passes
257
+ - [x] Lint passes
258
+ - [x] Build succeeds
259
+
260
+ ### Acceptance Criteria
261
+ - [x] AC-1: Verified
262
+ - [x] AC-2: Verified
263
+
264
+ ### Files Changed
265
+ - [List of all files]
266
+
267
+ ### Status
268
+ **COMPLETE**
269
+ \`\`\`
270
+
271
+ ## Guidelines
163
272
 
164
- Produce a session summary containing:
165
- - Changes made in this session
166
- - Test results
167
- - Updated acceptance criteria checklist
168
- - Any issues encountered
169
- - Recommendations for next session
273
+ - Run ALL quality checks
274
+ - Be honest about failures
275
+ - Simple fixes (formatting) can be done
276
+ - Complex issues should be noted, not fixed
277
+ - EXIT immediately when complete
170
278
  `,
171
279
  },
172
280
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"claude-agents.js","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,qBAAqB;IACrB;QACE,IAAI,EAAE,mCAAmC;QACzC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCZ;KACE;IAED,mBAAmB;IACnB;QACE,IAAI,EAAE,iCAAiC;QACvC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCZ;KACE;IAED,gBAAgB;IAChB;QACE,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBZ;KACE;IAED,0BAA0B;IAC1B;QACE,IAAI,EAAE,wCAAwC;QAC9C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BZ;KACE;IAED,yBAAyB;IACzB;QACE,IAAI,EAAE,uCAAuC;QAC7C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BZ;KACE;CACF,CAAC"}
1
+ {"version":3,"file":"claude-agents.js","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,qBAAqB;IACrB;QACE,IAAI,EAAE,mCAAmC;QACzC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCZ;KACE;IAED,mBAAmB;IACnB;QACE,IAAI,EAAE,iCAAiC;QACvC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCZ;KACE;IAED,gBAAgB;IAChB;QACE,IAAI,EAAE,8BAA8B;QACpC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBZ;KACE;IAED,0BAA0B;IAC1B;QACE,IAAI,EAAE,wCAAwC;QAC9C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFZ;KACE;IAED,yBAAyB;IACzB;QACE,IAAI,EAAE,uCAAuC;QAC7C,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFZ;KACE;CACF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * .claude/prompts/ templates
2
+ * .claude/prompts/ templates for Ralph autonomous executor
3
3
  */
4
4
  import type { TemplateFile } from './index.js';
5
5
  export declare const claudePrompts: TemplateFile[];
@@ -1 +1 @@
1
- {"version":3,"file":"claude-prompts.d.ts","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,aAAa,EAAE,YAAY,EAkQvC,CAAC"}
1
+ {"version":3,"file":"claude-prompts.d.ts","sourceRoot":"","sources":["../../../../src/core/repo/templates/claude-prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,aAAa,EAAE,YAAY,EAigBvC,CAAC"}