golem-cc 2.1.2 → 3.0.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 (84) hide show
  1. package/.claude/commands/golem/build.md +18 -0
  2. package/.claude/commands/golem/config.md +39 -0
  3. package/.claude/commands/golem/continue.md +73 -0
  4. package/.claude/commands/golem/doctor.md +46 -0
  5. package/.claude/commands/golem/document.md +138 -0
  6. package/.claude/commands/golem/help.md +58 -0
  7. package/.claude/commands/golem/pause.md +130 -0
  8. package/.claude/commands/golem/plan.md +111 -0
  9. package/.claude/commands/golem/review.md +166 -0
  10. package/.claude/commands/golem/security.md +186 -0
  11. package/.claude/commands/golem/simplify.md +76 -0
  12. package/.claude/commands/golem/spec.md +105 -0
  13. package/.claude/commands/golem/status.md +33 -0
  14. package/.golem/agents/code-simplifier.md +54 -0
  15. package/.golem/agents/review-architecture.md +59 -0
  16. package/.golem/agents/review-logic.md +50 -0
  17. package/.golem/agents/review-security.md +50 -0
  18. package/.golem/agents/review-style.md +48 -0
  19. package/.golem/agents/review-tests.md +48 -0
  20. package/.golem/agents/spec-builder.md +60 -0
  21. package/.golem/bin/golem.mjs +270 -0
  22. package/.golem/lib/build.mjs +557 -0
  23. package/.golem/lib/claude.mjs +95 -0
  24. package/.golem/lib/config.mjs +421 -0
  25. package/.golem/lib/display.mjs +191 -0
  26. package/.golem/lib/doctor.mjs +197 -0
  27. package/.golem/lib/document.mjs +792 -0
  28. package/.golem/lib/gates.mjs +78 -0
  29. package/.golem/lib/init.mjs +166 -0
  30. package/.golem/lib/output.mjs +40 -0
  31. package/.golem/lib/ratelimit.mjs +86 -0
  32. package/.golem/lib/security.mjs +603 -0
  33. package/.golem/lib/simplify.mjs +101 -0
  34. package/.golem/lib/tui.mjs +368 -0
  35. package/.golem/lib/usage.mjs +119 -0
  36. package/.golem/lib/worktree.mjs +509 -0
  37. package/.golem/prompts/build.md +23 -0
  38. package/.golem/prompts/document-inline.md +66 -0
  39. package/.golem/prompts/document-markdown.md +80 -0
  40. package/.golem/prompts/simplify.md +35 -0
  41. package/README.md +141 -142
  42. package/bin/golem-shim.mjs +36 -0
  43. package/bin/install.mjs +193 -0
  44. package/package.json +27 -32
  45. package/.env.example +0 -17
  46. package/bin/golem +0 -1040
  47. package/commands/golem/build.md +0 -235
  48. package/commands/golem/config.md +0 -55
  49. package/commands/golem/doctor.md +0 -137
  50. package/commands/golem/help.md +0 -212
  51. package/commands/golem/plan.md +0 -214
  52. package/commands/golem/review.md +0 -376
  53. package/commands/golem/security.md +0 -204
  54. package/commands/golem/simplify.md +0 -94
  55. package/commands/golem/spec.md +0 -226
  56. package/commands/golem/status.md +0 -60
  57. package/dist/api/freshworks.d.ts +0 -61
  58. package/dist/api/freshworks.d.ts.map +0 -1
  59. package/dist/api/freshworks.js +0 -119
  60. package/dist/api/freshworks.js.map +0 -1
  61. package/dist/api/gitea.d.ts +0 -96
  62. package/dist/api/gitea.d.ts.map +0 -1
  63. package/dist/api/gitea.js +0 -154
  64. package/dist/api/gitea.js.map +0 -1
  65. package/dist/cli/index.d.ts +0 -9
  66. package/dist/cli/index.d.ts.map +0 -1
  67. package/dist/cli/index.js +0 -352
  68. package/dist/cli/index.js.map +0 -1
  69. package/dist/sync/ticket-sync.d.ts +0 -53
  70. package/dist/sync/ticket-sync.d.ts.map +0 -1
  71. package/dist/sync/ticket-sync.js +0 -226
  72. package/dist/sync/ticket-sync.js.map +0 -1
  73. package/dist/types.d.ts +0 -125
  74. package/dist/types.d.ts.map +0 -1
  75. package/dist/types.js +0 -5
  76. package/dist/types.js.map +0 -1
  77. package/dist/worktree/manager.d.ts +0 -54
  78. package/dist/worktree/manager.d.ts.map +0 -1
  79. package/dist/worktree/manager.js +0 -190
  80. package/dist/worktree/manager.js.map +0 -1
  81. package/golem/agents/code-simplifier.md +0 -81
  82. package/golem/agents/spec-builder.md +0 -90
  83. package/golem/prompts/PROMPT_build.md +0 -71
  84. package/golem/prompts/PROMPT_plan.md +0 -102
@@ -1 +0,0 @@
1
- {"version":3,"file":"ticket-sync.js","sourceRoot":"","sources":["../../src/sync/ticket-sync.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts DELETED
@@ -1,125 +0,0 @@
1
- /**
2
- * Core types for golem workflow
3
- */
4
- export type TicketStatus = 'new' | 'spec' | 'planning' | 'in-progress' | 'review' | 'done' | 'blocked';
5
- export type CommitType = 'feat' | 'fix' | 'refactor' | 'docs' | 'test' | 'chore';
6
- export interface TicketState {
7
- id: string;
8
- slug: string;
9
- fresh: {
10
- id: string;
11
- url: string;
12
- subject: string;
13
- description: string;
14
- priority: 1 | 2 | 3 | 4;
15
- status: number;
16
- } | null;
17
- gitea: {
18
- repo: string;
19
- issueNumber: number;
20
- url: string;
21
- prNumber?: number;
22
- prUrl?: string;
23
- } | null;
24
- git: {
25
- worktree: string;
26
- branch: string;
27
- commits: string[];
28
- };
29
- status: TicketStatus;
30
- type: CommitType;
31
- created: string;
32
- updated: string;
33
- specFile?: string;
34
- planFile?: string;
35
- }
36
- export interface FreshTicket {
37
- id: number;
38
- subject: string;
39
- description: string;
40
- description_text: string;
41
- status: number;
42
- priority: 1 | 2 | 3 | 4;
43
- ticket_type: 'Incident' | 'Service Request';
44
- created_at: string;
45
- updated_at: string;
46
- requester_id: number;
47
- responder_id: number;
48
- custom_fields: Record<string, unknown>;
49
- }
50
- export interface FreshTicketCreatePayload {
51
- subject: string;
52
- description: string;
53
- priority?: 1 | 2 | 3 | 4;
54
- status?: number;
55
- source?: number;
56
- email?: string;
57
- requester_id?: number;
58
- responder_id?: number;
59
- group_id?: number;
60
- category?: string;
61
- sub_category?: string;
62
- resolution_notes?: string;
63
- custom_fields?: Record<string, unknown>;
64
- }
65
- export interface GiteaIssue {
66
- id: number;
67
- number: number;
68
- title: string;
69
- body: string;
70
- state: 'open' | 'closed';
71
- html_url: string;
72
- created_at: string;
73
- updated_at: string;
74
- labels: {
75
- name: string;
76
- color: string;
77
- }[];
78
- milestone?: {
79
- title: string;
80
- };
81
- }
82
- export interface GiteaIssueCreatePayload {
83
- title: string;
84
- body: string;
85
- labels?: string[];
86
- milestone?: number;
87
- }
88
- export interface GiteaPullRequest {
89
- id: number;
90
- number: number;
91
- title: string;
92
- body: string;
93
- state: 'open' | 'closed' | 'merged';
94
- html_url: string;
95
- head: {
96
- ref: string;
97
- };
98
- base: {
99
- ref: string;
100
- };
101
- merged: boolean;
102
- mergeable: boolean;
103
- }
104
- export interface GolemContext {
105
- projectRoot: string;
106
- golemDir: string;
107
- ticketsDir: string;
108
- specsDir: string;
109
- worktreesDir: string;
110
- currentTicket?: TicketState;
111
- }
112
- export interface SyncResult {
113
- success: boolean;
114
- freshUpdated: boolean;
115
- giteaUpdated: boolean;
116
- localUpdated: boolean;
117
- error?: string;
118
- }
119
- export interface BuildIterationResult {
120
- taskCompleted: string | null;
121
- allDone: boolean;
122
- commits: string[];
123
- error?: string;
124
- }
125
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * Core types for golem workflow
3
- */
4
- export {};
5
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,54 +0,0 @@
1
- /**
2
- * Git worktree management
3
- *
4
- * Creates isolated worktrees per ticket under .golem/worktrees/
5
- */
6
- import type { TicketState } from '../types.js';
7
- export interface WorktreeInfo {
8
- path: string;
9
- branch: string;
10
- commitSha: string;
11
- }
12
- /**
13
- * Get the root of the current git repository
14
- */
15
- export declare function getRepoRoot(): string;
16
- /**
17
- * Get the default branch (main or master)
18
- */
19
- export declare function getDefaultBranch(): string;
20
- /**
21
- * List all worktrees
22
- */
23
- export declare function listWorktrees(): WorktreeInfo[];
24
- /**
25
- * Create a worktree for a ticket
26
- */
27
- export declare function createWorktree(ticket: TicketState, options?: {
28
- baseBranch?: string;
29
- }): Promise<string>;
30
- /**
31
- * Remove a worktree
32
- */
33
- export declare function removeWorktree(worktreePath: string): Promise<void>;
34
- /**
35
- * Get current branch in a worktree
36
- */
37
- export declare function getCurrentBranch(worktreePath: string): string;
38
- /**
39
- * Get list of commits on branch since it diverged from base
40
- */
41
- export declare function getCommitsSinceBase(worktreePath: string, baseBranch?: string): Promise<string[]>;
42
- /**
43
- * Squash all commits since base into one
44
- */
45
- export declare function squashCommits(worktreePath: string, message: string, baseBranch?: string): Promise<string>;
46
- /**
47
- * Create a commit in the worktree
48
- */
49
- export declare function createCommit(worktreePath: string, message: string): Promise<string>;
50
- /**
51
- * Push branch to remote
52
- */
53
- export declare function pushBranch(worktreePath: string, force?: boolean): Promise<void>;
54
- //# sourceMappingURL=manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/worktree/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAqBD;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAczC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CA0B9C;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACpC,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAOnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,YAAY,EAAE,MAAM,EACpB,KAAK,UAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -1,190 +0,0 @@
1
- /**
2
- * Git worktree management
3
- *
4
- * Creates isolated worktrees per ticket under .golem/worktrees/
5
- */
6
- import { execSync, exec } from 'node:child_process';
7
- import { promisify } from 'node:util';
8
- import { mkdir, access } from 'node:fs/promises';
9
- import { join } from 'node:path';
10
- const execAsync = promisify(exec);
11
- /**
12
- * Run git command and return stdout
13
- */
14
- function git(command, cwd) {
15
- return execSync(`git ${command}`, {
16
- cwd,
17
- encoding: 'utf-8',
18
- stdio: ['pipe', 'pipe', 'pipe'],
19
- }).trim();
20
- }
21
- /**
22
- * Run git command async
23
- */
24
- async function gitAsync(command, cwd) {
25
- const { stdout } = await execAsync(`git ${command}`, { cwd });
26
- return stdout.trim();
27
- }
28
- /**
29
- * Get the root of the current git repository
30
- */
31
- export function getRepoRoot() {
32
- return git('rev-parse --show-toplevel');
33
- }
34
- /**
35
- * Get the default branch (main or master)
36
- */
37
- export function getDefaultBranch() {
38
- try {
39
- // Try to get from remote HEAD
40
- const ref = git('symbolic-ref refs/remotes/origin/HEAD');
41
- return ref.replace('refs/remotes/origin/', '');
42
- }
43
- catch {
44
- // Fall back to checking if main or master exists
45
- try {
46
- git('rev-parse --verify main');
47
- return 'main';
48
- }
49
- catch {
50
- return 'master';
51
- }
52
- }
53
- }
54
- /**
55
- * List all worktrees
56
- */
57
- export function listWorktrees() {
58
- const output = git('worktree list --porcelain');
59
- const worktrees = [];
60
- let current = {};
61
- for (const line of output.split('\n')) {
62
- if (line.startsWith('worktree ')) {
63
- current.path = line.replace('worktree ', '');
64
- }
65
- else if (line.startsWith('HEAD ')) {
66
- current.commitSha = line.replace('HEAD ', '');
67
- }
68
- else if (line.startsWith('branch ')) {
69
- current.branch = line.replace('branch refs/heads/', '');
70
- }
71
- else if (line === '') {
72
- if (current.path && current.branch && current.commitSha) {
73
- worktrees.push(current);
74
- }
75
- current = {};
76
- }
77
- }
78
- // Handle last entry
79
- if (current.path && current.branch && current.commitSha) {
80
- worktrees.push(current);
81
- }
82
- return worktrees;
83
- }
84
- /**
85
- * Create a worktree for a ticket
86
- */
87
- export async function createWorktree(ticket, options = {}) {
88
- const repoRoot = getRepoRoot();
89
- const baseBranch = options.baseBranch || getDefaultBranch();
90
- const worktreePath = join(repoRoot, ticket.git.worktree);
91
- const branch = ticket.git.branch;
92
- // Ensure worktrees directory exists
93
- await mkdir(join(repoRoot, '.golem/worktrees'), { recursive: true });
94
- // Check if worktree already exists
95
- const worktrees = listWorktrees();
96
- const existing = worktrees.find(w => w.branch === branch);
97
- if (existing) {
98
- return existing.path;
99
- }
100
- // Determine the best base ref to use
101
- let baseRef = baseBranch;
102
- // Try to fetch and use remote if available
103
- try {
104
- git('fetch origin', repoRoot);
105
- // Verify origin/baseBranch exists
106
- git(`rev-parse --verify origin/${baseBranch}`, repoRoot);
107
- baseRef = `origin/${baseBranch}`;
108
- }
109
- catch {
110
- // No remote or remote branch doesn't exist, use local branch
111
- try {
112
- git(`rev-parse --verify ${baseBranch}`, repoRoot);
113
- baseRef = baseBranch;
114
- }
115
- catch {
116
- // Local branch doesn't exist either, use HEAD
117
- baseRef = 'HEAD';
118
- }
119
- }
120
- // Create the worktree with a new branch based on the base ref
121
- git(`worktree add -b ${branch} "${worktreePath}" ${baseRef}`, repoRoot);
122
- return worktreePath;
123
- }
124
- /**
125
- * Remove a worktree
126
- */
127
- export async function removeWorktree(worktreePath) {
128
- const repoRoot = getRepoRoot();
129
- // Check if it exists
130
- try {
131
- await access(worktreePath);
132
- }
133
- catch {
134
- return; // Already gone
135
- }
136
- // Remove the worktree
137
- git(`worktree remove "${worktreePath}" --force`, repoRoot);
138
- }
139
- /**
140
- * Get current branch in a worktree
141
- */
142
- export function getCurrentBranch(worktreePath) {
143
- return git('rev-parse --abbrev-ref HEAD', worktreePath);
144
- }
145
- /**
146
- * Get list of commits on branch since it diverged from base
147
- */
148
- export async function getCommitsSinceBase(worktreePath, baseBranch) {
149
- const base = baseBranch || getDefaultBranch();
150
- const output = await gitAsync(`log origin/${base}..HEAD --format=%H`, worktreePath);
151
- return output ? output.split('\n') : [];
152
- }
153
- /**
154
- * Squash all commits since base into one
155
- */
156
- export async function squashCommits(worktreePath, message, baseBranch) {
157
- const base = baseBranch || getDefaultBranch();
158
- // Soft reset to merge base, keeping changes staged
159
- await gitAsync(`reset --soft origin/${base}`, worktreePath);
160
- // Create new commit with all changes
161
- await gitAsync(`commit -m "${message.replace(/"/g, '\\"')}"`, worktreePath);
162
- // Return new commit SHA
163
- return gitAsync('rev-parse HEAD', worktreePath);
164
- }
165
- /**
166
- * Create a commit in the worktree
167
- */
168
- export async function createCommit(worktreePath, message) {
169
- // Stage all changes
170
- await gitAsync('add -A', worktreePath);
171
- // Check if there are changes to commit
172
- try {
173
- await gitAsync('diff --cached --quiet', worktreePath);
174
- // No changes
175
- return '';
176
- }
177
- catch {
178
- // There are changes, commit them
179
- }
180
- await gitAsync(`commit -m "${message.replace(/"/g, '\\"')}"`, worktreePath);
181
- return gitAsync('rev-parse HEAD', worktreePath);
182
- }
183
- /**
184
- * Push branch to remote
185
- */
186
- export async function pushBranch(worktreePath, force = false) {
187
- const forceFlag = force ? '--force-with-lease' : '';
188
- await gitAsync(`push -u origin HEAD ${forceFlag}`, worktreePath);
189
- }
190
- //# sourceMappingURL=manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/worktree/manager.ts"],"names":[],"mappings":"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"}
@@ -1,81 +0,0 @@
1
- # Code Simplifier Agent
2
-
3
- You simplify code without changing behavior. Your goal is to make code clearer, not clever.
4
-
5
- ## Simplification Rules
6
-
7
- ### Priority 1: Remove AI Artifacts
8
- These are telltale signs of AI-generated code:
9
- - Unnecessary comments explaining obvious code
10
- - Defensive checks that can never trigger
11
- - Type casts to `any` without need
12
- - Commented-out code blocks
13
- - TODO comments for completed work
14
- - Verbose error messages that duplicate the code
15
-
16
- ### Priority 2: Reduce Complexity
17
- - Flatten nested conditionals (use early returns)
18
- - Replace nested ternaries with if/else
19
- - Extract complex boolean expressions to named variables
20
- - Consolidate duplicate code paths
21
-
22
- ```typescript
23
- // Before
24
- if (user) {
25
- if (user.isActive) {
26
- if (user.hasPermission('read')) {
27
- return data;
28
- }
29
- }
30
- }
31
- return null;
32
-
33
- // After
34
- if (!user?.isActive) return null;
35
- if (!user.hasPermission('read')) return null;
36
- return data;
37
- ```
38
-
39
- ### Priority 3: Improve Clarity
40
- - Rename unclear variables (single letters, cryptic abbreviations)
41
- - Rename functions to describe what they return/do
42
- - Remove dead/unreachable code
43
- - Simplify over-engineered abstractions
44
-
45
- ```typescript
46
- // Before
47
- const d = getData();
48
- const r = process(d);
49
-
50
- // After
51
- const userData = fetchUserData();
52
- const formattedProfile = formatProfile(userData);
53
- ```
54
-
55
- ### Priority 4: Structural
56
- - Extract large functions (>50 lines) into focused helpers
57
- - Inline trivial one-use functions
58
- - Simplify unnecessary layers of abstraction
59
-
60
- ## Skip These Files
61
- - Test files (`*.test.ts`, `*.spec.ts`)
62
- - Type definitions (`*.d.ts`)
63
- - Config files (`*.config.*`)
64
- - Generated files
65
- - `.golem/IMPLEMENTATION_PLAN.md`
66
-
67
- ## Critical Rules
68
-
69
- 1. **NEVER change behavior** - If unsure, don't change it
70
- 2. **Run tests after each file** - Revert if tests fail
71
- 3. **One change at a time** - Don't batch unrelated changes
72
- 4. **Preserve formatting conventions** - Match surrounding code style
73
-
74
- ## Process
75
-
76
- 1. Read the file
77
- 2. Identify ONE simplification opportunity
78
- 3. Make the change
79
- 4. Run tests
80
- 5. If pass, continue. If fail, revert.
81
- 6. Repeat until no more safe simplifications
@@ -1,90 +0,0 @@
1
- # Spec Builder Agent
2
-
3
- You guide users through a structured conversation to define project requirements. Your goal is to extract clear, testable specifications that will drive implementation.
4
-
5
- ## Conversation Style
6
-
7
- - Ask one question at a time (don't overwhelm)
8
- - Use `AskUserQuestion` for concrete choices
9
- - Use open questions for exploration
10
- - Summarize understanding before moving on
11
- - Push back if requirements are vague ("what exactly should happen when...")
12
-
13
- ## Phase Flow
14
-
15
- ### Phase 1: Context (2-4 exchanges)
16
- - What's the problem? (not the solution)
17
- - Who's affected?
18
- - What's the minimum viable scope?
19
- - What's explicitly out of scope?
20
-
21
- ### Phase 2: Topics (1-2 exchanges)
22
- - Propose 1-5 distinct concerns
23
- - Apply "no AND test" - each topic describable without conjunctions
24
- - Get user confirmation on topic list
25
-
26
- ### Phase 3: Deep Dive (per topic, 2-3 exchanges)
27
- - What MUST this do?
28
- - What SHOULD it do?
29
- - What must it NOT do?
30
- - What tests prove it works?
31
-
32
- ### Phase 4: Documentation
33
- - Write spec files to `.golem/specs/`
34
- - Write `AGENTS.md` with operational commands
35
-
36
- ## Spec Quality Checklist
37
-
38
- Before writing a spec file, ensure:
39
- - [ ] Purpose is clear in one paragraph
40
- - [ ] Must-haves are concrete and testable
41
- - [ ] Must-nots define clear boundaries
42
- - [ ] Acceptance criteria are checkboxes
43
- - [ ] Tests describe input → expected output
44
-
45
- ## Anti-patterns
46
-
47
- Avoid these in specs:
48
- - Vague requirements ("should be fast", "user-friendly")
49
- - Implementation details ("use Redis", "add a button")
50
- - Scope creep ("and also it should...")
51
- - Missing error cases
52
-
53
- ## Example Good Spec
54
-
55
- ```markdown
56
- # API Rate Limiting
57
-
58
- Ticket: INC-1234
59
-
60
- ## Purpose
61
- Prevent API abuse by limiting requests per client. Protects infrastructure and ensures fair usage.
62
-
63
- ## Requirements
64
-
65
- ### Must Have
66
- - Limit: 100 requests per minute per API key
67
- - Return 429 Too Many Requests when exceeded
68
- - Include Retry-After header in 429 responses
69
- - Limits tracked per API key, not per IP
70
-
71
- ### Should Have
72
- - Different limits for different endpoint tiers
73
- - Admin endpoints to check/reset limits
74
-
75
- ### Must Not
76
- - Block requests during brief spikes (use sliding window)
77
- - Persist limits across server restarts (in-memory OK)
78
-
79
- ## Acceptance Criteria
80
- - [ ] 100th request in a minute succeeds
81
- - [ ] 101st request returns 429
82
- - [ ] Retry-After header present and accurate
83
- - [ ] Different API keys have independent limits
84
-
85
- ## Tests
86
- - Send 100 requests rapidly → all succeed
87
- - Send 101st request → 429 with Retry-After
88
- - Wait Retry-After seconds → next request succeeds
89
- - Two API keys → independent counters
90
- ```
@@ -1,71 +0,0 @@
1
- # Build Lead Mode
2
-
3
- You are the BUILD LEAD. You orchestrate the build process but do NOT implement tasks yourself.
4
-
5
- ## Your Role
6
-
7
- - Spawn builder teammates for each task (one at a time)
8
- - Monitor their progress
9
- - Handle blockers and failures
10
- - Keep the user informed
11
- - Commit and squash when appropriate
12
-
13
- ## The Loop
14
-
15
- For each task:
16
-
17
- 1. **Announce** the task to the user
18
- 2. **Spawn** a builder teammate with fresh context
19
- 3. **Monitor** the builder's progress
20
- 4. **Handle** success (commit) or failure (surface to user)
21
- 5. **Continue** to next task or **squash** at stage end
22
-
23
- ## Builder Teammate Prompt Template
24
-
25
- When spawning a builder:
26
-
27
- ```
28
- You are a builder. Complete this ONE task, then shut down.
29
-
30
- TASK: {task title}
31
- FILES: {expected files}
32
- NOTES: {implementation hints}
33
- TESTS: {what tests verify this}
34
-
35
- WORKFLOW:
36
- 1. Write tests first (red phase)
37
- 2. Implement minimum code to pass tests (green phase)
38
- 3. Run validation gates from .golem/AGENTS.md
39
- 4. If gates fail: fix and retry (up to 3 attempts)
40
- 5. Simplify code
41
- 6. Re-run validation
42
- 7. Report: SUCCESS or BLOCKED with reason
43
-
44
- DO NOT commit or modify the plan - the lead handles that.
45
- If stuck, report BLOCKED immediately. Do not spin.
46
- ```
47
-
48
- ## Handling Blockers
49
-
50
- When a builder reports BLOCKED:
51
- - Surface immediately to the user
52
- - Present options (skip, retry with guidance, wait for fix)
53
- - Do NOT auto-retry
54
- - The user has visibility and can help
55
-
56
- ## User Commands
57
-
58
- The user can say:
59
- - **skip** - Skip blocked task
60
- - **retry** - Try the task again
61
- - **stop** - Pause the build
62
- - **status** - Show progress
63
-
64
- ## Critical Rules
65
-
66
- - You are the LEAD - delegate, don't implement
67
- - Each builder gets fresh context (one task, then shutdown)
68
- - Surface blockers immediately
69
- - Keep user informed at every step
70
- - Handle commits and plan updates yourself
71
- - Squash at stage completion