hool-cli 0.3.2 → 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.
- package/agents/claude/be-dev.md +147 -0
- package/agents/claude/be-tech-lead.md +201 -0
- package/agents/claude/fe-dev.md +137 -0
- package/agents/claude/fe-tech-lead.md +186 -0
- package/agents/claude/forensic.md +138 -0
- package/agents/claude/governor.md +90 -0
- package/agents/claude/qa.md +163 -0
- package/agents/cursor/be-dev.md +41 -0
- package/agents/cursor/be-tech-lead.md +47 -0
- package/agents/cursor/fe-dev.md +39 -0
- package/agents/cursor/fe-tech-lead.md +47 -0
- package/agents/cursor/forensic.md +39 -0
- package/agents/cursor/governor.md +37 -0
- package/agents/cursor/qa.md +40 -0
- package/dist/adapters/claude-code.js +7 -7
- package/dist/adapters/cursor.js +3 -3
- package/dist/adapters/generic.js +3 -3
- package/dist/core/scaffold.d.ts +6 -1
- package/dist/core/scaffold.js +164 -40
- package/dist/core/scaffold.js.map +1 -1
- package/dist/index.js +56 -24
- package/dist/index.js.map +1 -1
- package/dist/mcps/registry.js +2 -2
- package/dist/mcps/registry.js.map +1 -1
- package/hooks/agent-checklist.sh +17 -0
- package/hooks/block-pl-src-write.sh +21 -0
- package/hooks/inject-pl-context.sh +32 -0
- package/hooks/track-prompt-count.sh +50 -0
- package/package.json +6 -2
- package/prompts/agents/05-fe-tech-lead.md +47 -47
- package/prompts/agents/06-be-tech-lead.md +44 -44
- package/prompts/agents/08-be-dev.md +37 -37
- package/prompts/agents/08-fe-dev.md +37 -37
- package/prompts/agents/10-qa.md +36 -36
- package/prompts/agents/11-forensic.md +24 -24
- package/prompts/agents/governor.md +25 -25
- package/prompts/orchestrator.md +203 -203
- package/prompts/skills/01-brainstorm.md +10 -10
- package/prompts/skills/02-spec.md +14 -14
- package/prompts/skills/03-design.md +21 -21
- package/prompts/skills/04-architecture.md +23 -23
- package/rules/cursor/be-dev.mdc +38 -0
- package/rules/cursor/be-tech-lead.mdc +39 -0
- package/rules/cursor/fe-dev.mdc +36 -0
- package/rules/cursor/fe-tech-lead.mdc +39 -0
- package/rules/cursor/forensic.mdc +35 -0
- package/rules/cursor/governor.mdc +33 -0
- package/rules/cursor/qa.mdc +35 -0
- package/settings/claude-settings.json +64 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa
|
|
3
|
+
description: HOOL QA agent — owns testing from test plan creation to execution, visual testing, and exploratory testing. Dispatch for Phase 7 (test plan) and Phase 10 (test execution).
|
|
4
|
+
model: fast
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent: QA
|
|
8
|
+
You own testing — test plan creation, test execution, visual testing, exploratory testing. You care about whether the product WORKS as specified, not code quality.
|
|
9
|
+
|
|
10
|
+
## Boot Sequence (execute before anything else)
|
|
11
|
+
1. Read `.hool/memory/qa/hot.md`, `best-practices.md`, `issues.md`, `governor-feedback.md`
|
|
12
|
+
2. Read `.hool/operations/client-preferences.md`, `.hool/operations/governor-rules.md`
|
|
13
|
+
3. Read `.hool/phases/02-spec/spec.md` (and features/) — source of truth for expected behavior
|
|
14
|
+
|
|
15
|
+
## Phase 7: Test Plan
|
|
16
|
+
- Extract every acceptance criterion from spec
|
|
17
|
+
- Generate unit, integration, E2E, and visual test cases
|
|
18
|
+
- Cross-reference: every criterion has at least one test
|
|
19
|
+
- Write `.hool/phases/07-test-plan/test-plan.md` and `cases/`
|
|
20
|
+
- Create test file stubs in `tests/`
|
|
21
|
+
|
|
22
|
+
## Phase 10: Test Execution
|
|
23
|
+
- Run existing tests (unit, integration, E2E)
|
|
24
|
+
- Execute test plan cases with evidence capture
|
|
25
|
+
- Exploratory testing (rapid clicks, edge inputs, permissions)
|
|
26
|
+
- Visual testing with screenshots vs design cards
|
|
27
|
+
- Report bugs to `.hool/operations/bugs.md`
|
|
28
|
+
|
|
29
|
+
## Bug Report Format
|
|
30
|
+
BUG-XXX with severity (critical/high/medium/low), type, steps to reproduce, expected vs actual, evidence.
|
|
31
|
+
|
|
32
|
+
## Writable Paths
|
|
33
|
+
- `.hool/phases/07-test-plan/`, `tests/`, `.hool/operations/bugs.md`, `.hool/memory/qa/`
|
|
34
|
+
|
|
35
|
+
## Forbidden
|
|
36
|
+
- NEVER modify source code, fix bugs, review code quality, suggest architecture changes, modify agent prompts, or governor-rules.md
|
|
37
|
+
|
|
38
|
+
## Work Log
|
|
39
|
+
Append to `.hool/memory/qa/cold.md`. Tags: [QA-PLAN], [QA-RUN], [QA-BUG], [QA-VISUAL], [QA-EXPLORATORY], [GOTCHA], [PATTERN]
|
|
40
|
+
Rebuild `.hool/memory/qa/hot.md` after each task.
|
|
@@ -24,9 +24,9 @@ All other agents are internal — dispatched by the Product Lead as subagents.
|
|
|
24
24
|
## Quick Start
|
|
25
25
|
|
|
26
26
|
You are the Product Lead. On every invocation — **before answering any question**:
|
|
27
|
-
1. Read
|
|
28
|
-
2. Read
|
|
29
|
-
3. Read your memory files (
|
|
27
|
+
1. Read \`.hool/operations/current-phase.md\` to know where you are
|
|
28
|
+
2. Read \`.hool/operations/task-board.md\` to know what's in flight
|
|
29
|
+
3. Read your memory files (\`.hool/memory/product-lead/hot.md\`, \`best-practices.md\`, \`issues.md\`)
|
|
30
30
|
4. Read the full orchestrator prompt below — your complete process and rules
|
|
31
31
|
5. **If there are pending tasks**: Tell the user what's pending and ask if you should proceed, or if they have something else in mind. Do NOT silently wait for explicit instructions — you are the driver, not a passenger.
|
|
32
32
|
6. Continue from where you left off (see Autonomous Execution Loop below)
|
|
@@ -35,8 +35,8 @@ You are the Product Lead. On every invocation — **before answering any questio
|
|
|
35
35
|
|
|
36
36
|
When you need to dispatch an agent (Phases 5-12), use the **Agent tool**:
|
|
37
37
|
|
|
38
|
-
1. Read the agent's prompt from \`.
|
|
39
|
-
2. Read the agent's memory files (
|
|
38
|
+
1. Read the agent's prompt from \`.claude/agents/<name>.md\` — identity is baked in
|
|
39
|
+
2. Read the agent's memory files (\`.hool/memory/<agent>/hot.md\`, \`best-practices.md\`, \`issues.md\`)
|
|
40
40
|
3. Call the Agent tool with:
|
|
41
41
|
- \`prompt\`: The task description + relevant context file paths
|
|
42
42
|
- The subagent reads its own prompt, memory, and the files you specify
|
|
@@ -63,8 +63,8 @@ Phase 4 (Architecture) is the FINAL human gate. After that, you run autonomously
|
|
|
63
63
|
## Key Rules
|
|
64
64
|
|
|
65
65
|
- You are the **sole user-facing agent** — the user only talks to you
|
|
66
|
-
- All state lives in files:
|
|
67
|
-
- Agents never modify their own prompts — escalate to
|
|
66
|
+
- All state lives in files: \`.hool/phases/\`, \`.hool/operations/\`, \`.hool/memory/\`
|
|
67
|
+
- Agents never modify their own prompts — escalate to \`.hool/operations/needs-human-review.md\`
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
package/dist/adapters/cursor.js
CHANGED
|
@@ -17,7 +17,7 @@ This project uses the HOOL framework. You are the Product Lead — the sole user
|
|
|
17
17
|
|
|
18
18
|
## Agent Dispatch
|
|
19
19
|
|
|
20
|
-
When you need to dispatch an agent,
|
|
20
|
+
When you need to dispatch an agent, use the agent definitions in \`.cursor/agents/<name>.md\`. In Cursor, agents have their full identity baked in — you don't need to manually load prompt files.
|
|
21
21
|
|
|
22
22
|
After completing the agent's task, switch back to Product Lead role and continue the dispatch loop.
|
|
23
23
|
|
|
@@ -33,8 +33,8 @@ Phase 4 (Architecture) is the FINAL human gate. After that, you run autonomously
|
|
|
33
33
|
## Key Rules
|
|
34
34
|
|
|
35
35
|
- You are the **sole user-facing agent** — the user only talks to you
|
|
36
|
-
- All state lives in files:
|
|
37
|
-
- Agents never modify their own prompts — escalate to
|
|
36
|
+
- All state lives in files: \`.hool/phases/\`, \`.hool/operations/\`, \`.hool/memory/\`
|
|
37
|
+
- Agents never modify their own prompts — escalate to \`.hool/operations/needs-human-review.md\`
|
|
38
38
|
`;
|
|
39
39
|
}
|
|
40
40
|
export class CursorAdapter {
|
package/dist/adapters/generic.js
CHANGED
|
@@ -19,9 +19,9 @@ This prompt tells the agent:
|
|
|
19
19
|
|
|
20
20
|
## On Every Session
|
|
21
21
|
|
|
22
|
-
1. Read
|
|
23
|
-
2. Read
|
|
24
|
-
3. Read
|
|
22
|
+
1. Read \`.hool/operations/current-phase.md\` — know where you are
|
|
23
|
+
2. Read \`.hool/operations/task-board.md\` — know what's in flight
|
|
24
|
+
3. Read \`.hool/memory/product-lead/hot.md\` — your recent context
|
|
25
25
|
4. Follow the process in \`.hool/prompts/orchestrator.md\`
|
|
26
26
|
|
|
27
27
|
## MCP Servers
|
package/dist/core/scaffold.d.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import type { ProjectType, ExecutionMode } from '../adapters/types.js';
|
|
1
|
+
import type { ProjectType, ExecutionMode, AgentPlatform } from '../adapters/types.js';
|
|
2
2
|
export declare function scaffoldProject(projectDir: string, projectType: ProjectType, mode?: ExecutionMode): Promise<void>;
|
|
3
3
|
export declare function scaffoldOnboard(projectDir: string, projectType: ProjectType, mode?: ExecutionMode): Promise<void>;
|
|
4
4
|
export declare function reonboard(projectDir: string, mode?: ExecutionMode): Promise<void>;
|
|
5
5
|
export declare function copyPrompts(projectDir: string, promptsSourceDir: string): Promise<void>;
|
|
6
6
|
export declare function writeMcpManifest(projectDir: string, projectType: ProjectType, requiredMcps: string[]): Promise<void>;
|
|
7
7
|
export declare function writeAgentManifest(projectDir: string): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Copy platform-specific agent definitions, hooks, and settings.
|
|
10
|
+
* Source files come from hool-mini templates (bundled with CLI).
|
|
11
|
+
*/
|
|
12
|
+
export declare function copyPlatformFiles(projectDir: string, templateRootDir: string, platform: AgentPlatform): Promise<void>;
|
package/dist/core/scaffold.js
CHANGED
|
@@ -12,27 +12,36 @@ const AGENTS = [
|
|
|
12
12
|
'forensic',
|
|
13
13
|
'governor',
|
|
14
14
|
];
|
|
15
|
+
const SUBAGENTS = [
|
|
16
|
+
'fe-tech-lead',
|
|
17
|
+
'be-tech-lead',
|
|
18
|
+
'fe-dev',
|
|
19
|
+
'be-dev',
|
|
20
|
+
'qa',
|
|
21
|
+
'forensic',
|
|
22
|
+
'governor',
|
|
23
|
+
];
|
|
15
24
|
const PHASE_DIRS = [
|
|
16
|
-
'phases/00-init',
|
|
17
|
-
'phases/01-brainstorm',
|
|
18
|
-
'phases/02-spec/features',
|
|
19
|
-
'phases/03-design/cards',
|
|
20
|
-
'phases/03-design/flows',
|
|
21
|
-
'phases/04-architecture/contracts',
|
|
22
|
-
'phases/04-architecture/flows',
|
|
23
|
-
'phases/04-architecture/fe',
|
|
24
|
-
'phases/04-architecture/be',
|
|
25
|
-
'phases/05-fe-scaffold/pages',
|
|
26
|
-
'phases/06-be-scaffold/services',
|
|
27
|
-
'phases/07-test-plan/cases',
|
|
25
|
+
'.hool/phases/00-init',
|
|
26
|
+
'.hool/phases/01-brainstorm',
|
|
27
|
+
'.hool/phases/02-spec/features',
|
|
28
|
+
'.hool/phases/03-design/cards',
|
|
29
|
+
'.hool/phases/03-design/flows',
|
|
30
|
+
'.hool/phases/04-architecture/contracts',
|
|
31
|
+
'.hool/phases/04-architecture/flows',
|
|
32
|
+
'.hool/phases/04-architecture/fe',
|
|
33
|
+
'.hool/phases/04-architecture/be',
|
|
34
|
+
'.hool/phases/05-fe-scaffold/pages',
|
|
35
|
+
'.hool/phases/06-be-scaffold/services',
|
|
36
|
+
'.hool/phases/07-test-plan/cases',
|
|
28
37
|
];
|
|
29
38
|
const SKIP_PHASES = {
|
|
30
39
|
'web-app': [],
|
|
31
|
-
'browser-game': ['phases/06-be-scaffold'],
|
|
40
|
+
'browser-game': ['.hool/phases/06-be-scaffold'],
|
|
32
41
|
'mobile-android': [],
|
|
33
|
-
'animation': ['phases/06-be-scaffold'],
|
|
34
|
-
'cli-tool': ['phases/03-design', 'phases/05-fe-scaffold'],
|
|
35
|
-
'api-only': ['phases/03-design', 'phases/05-fe-scaffold'],
|
|
42
|
+
'animation': ['.hool/phases/06-be-scaffold'],
|
|
43
|
+
'cli-tool': ['.hool/phases/03-design', '.hool/phases/05-fe-scaffold'],
|
|
44
|
+
'api-only': ['.hool/phases/03-design', '.hool/phases/05-fe-scaffold'],
|
|
36
45
|
'desktop': [],
|
|
37
46
|
'other': [],
|
|
38
47
|
};
|
|
@@ -45,27 +54,30 @@ export async function scaffoldProject(projectDir, projectType, mode = 'interacti
|
|
|
45
54
|
await fs.mkdir(path.join(projectDir, dir), { recursive: true });
|
|
46
55
|
}
|
|
47
56
|
// Only create project-profile.md — the one doc that init itself produces
|
|
48
|
-
await fs.writeFile(path.join(projectDir, 'phases/00-init/project-profile.md'), `# Project Profile\n\n- **Type**: ${projectType}\n- **Mode**: ${mode}\n- **Created**: ${new Date().toISOString().split('T')[0]}\n`, 'utf-8');
|
|
57
|
+
await fs.writeFile(path.join(projectDir, '.hool/phases/00-init/project-profile.md'), `# Project Profile\n\n- **Type**: ${projectType}\n- **Mode**: ${mode}\n- **Created**: ${new Date().toISOString().split('T')[0]}\n`, 'utf-8');
|
|
49
58
|
// Create operations directory with templates
|
|
50
|
-
await fs.mkdir(path.join(projectDir, 'operations'), { recursive: true });
|
|
51
|
-
await fs.mkdir(path.join(projectDir, 'operations/context'), { recursive: true });
|
|
52
|
-
await fs.mkdir(path.join(projectDir, 'operations/dispatch'), { recursive: true });
|
|
59
|
+
await fs.mkdir(path.join(projectDir, '.hool/operations'), { recursive: true });
|
|
60
|
+
await fs.mkdir(path.join(projectDir, '.hool/operations/context'), { recursive: true });
|
|
61
|
+
await fs.mkdir(path.join(projectDir, '.hool/operations/dispatch'), { recursive: true });
|
|
53
62
|
const opTemplates = getOperationTemplates(mode);
|
|
54
63
|
for (const [filename, content] of Object.entries(opTemplates)) {
|
|
55
|
-
await fs.writeFile(path.join(projectDir, 'operations', filename), content, 'utf-8');
|
|
64
|
+
await fs.writeFile(path.join(projectDir, '.hool/operations', filename), content, 'utf-8');
|
|
56
65
|
}
|
|
57
66
|
// Create memory directories for each agent
|
|
58
67
|
const memoryHeaders = getMemoryHeaders();
|
|
59
68
|
for (const agent of AGENTS) {
|
|
60
|
-
const agentDir = path.join(projectDir, 'memory', agent);
|
|
69
|
+
const agentDir = path.join(projectDir, '.hool/memory', agent);
|
|
61
70
|
await fs.mkdir(agentDir, { recursive: true });
|
|
62
71
|
for (const [filename, content] of Object.entries(memoryHeaders)) {
|
|
63
72
|
await fs.writeFile(path.join(agentDir, filename), content, 'utf-8');
|
|
64
73
|
}
|
|
65
74
|
}
|
|
66
|
-
// Create .hool
|
|
75
|
+
// Create .hool directories
|
|
67
76
|
await fs.mkdir(path.join(projectDir, '.hool/prompts'), { recursive: true });
|
|
68
|
-
|
|
77
|
+
await fs.mkdir(path.join(projectDir, '.hool/hooks'), { recursive: true });
|
|
78
|
+
await fs.mkdir(path.join(projectDir, '.hool/logs'), { recursive: true });
|
|
79
|
+
await fs.mkdir(path.join(projectDir, '.hool/metrics'), { recursive: true });
|
|
80
|
+
// NOTE: src/, tests/ are NOT created here.
|
|
69
81
|
// Those are project concerns decided during architecture (Phase 4)
|
|
70
82
|
// and scaffolded by Tech Leads during Phases 5-6 (LLD).
|
|
71
83
|
}
|
|
@@ -78,30 +90,33 @@ export async function scaffoldOnboard(projectDir, projectType, mode = 'interacti
|
|
|
78
90
|
await fs.mkdir(path.join(projectDir, dir), { recursive: true });
|
|
79
91
|
}
|
|
80
92
|
// Project profile marks this as an onboarded project
|
|
81
|
-
await fs.writeFile(path.join(projectDir, 'phases/00-init/project-profile.md'), `# Project Profile\n\n- **Type**: ${projectType}\n- **Mode**: ${mode}\n- **Origin**: onboarded (existing codebase)\n- **Created**: ${new Date().toISOString().split('T')[0]}\n`, 'utf-8');
|
|
93
|
+
await fs.writeFile(path.join(projectDir, '.hool/phases/00-init/project-profile.md'), `# Project Profile\n\n- **Type**: ${projectType}\n- **Mode**: ${mode}\n- **Origin**: onboarded (existing codebase)\n- **Created**: ${new Date().toISOString().split('T')[0]}\n`, 'utf-8');
|
|
82
94
|
// Create operations directory with onboard-specific templates
|
|
83
|
-
await fs.mkdir(path.join(projectDir, 'operations'), { recursive: true });
|
|
84
|
-
await fs.mkdir(path.join(projectDir, 'operations/context'), { recursive: true });
|
|
85
|
-
await fs.mkdir(path.join(projectDir, 'operations/dispatch'), { recursive: true });
|
|
95
|
+
await fs.mkdir(path.join(projectDir, '.hool/operations'), { recursive: true });
|
|
96
|
+
await fs.mkdir(path.join(projectDir, '.hool/operations/context'), { recursive: true });
|
|
97
|
+
await fs.mkdir(path.join(projectDir, '.hool/operations/dispatch'), { recursive: true });
|
|
86
98
|
const opTemplates = getOnboardOperationTemplates(mode);
|
|
87
99
|
for (const [filename, content] of Object.entries(opTemplates)) {
|
|
88
|
-
await fs.writeFile(path.join(projectDir, 'operations', filename), content, 'utf-8');
|
|
100
|
+
await fs.writeFile(path.join(projectDir, '.hool/operations', filename), content, 'utf-8');
|
|
89
101
|
}
|
|
90
102
|
// Create memory directories for each agent
|
|
91
103
|
const memoryHeaders = getMemoryHeaders();
|
|
92
104
|
for (const agent of AGENTS) {
|
|
93
|
-
const agentDir = path.join(projectDir, 'memory', agent);
|
|
105
|
+
const agentDir = path.join(projectDir, '.hool/memory', agent);
|
|
94
106
|
await fs.mkdir(agentDir, { recursive: true });
|
|
95
107
|
for (const [filename, content] of Object.entries(memoryHeaders)) {
|
|
96
108
|
await fs.writeFile(path.join(agentDir, filename), content, 'utf-8');
|
|
97
109
|
}
|
|
98
110
|
}
|
|
99
|
-
// Create .hool
|
|
111
|
+
// Create .hool directories
|
|
100
112
|
await fs.mkdir(path.join(projectDir, '.hool/prompts'), { recursive: true });
|
|
113
|
+
await fs.mkdir(path.join(projectDir, '.hool/hooks'), { recursive: true });
|
|
114
|
+
await fs.mkdir(path.join(projectDir, '.hool/logs'), { recursive: true });
|
|
115
|
+
await fs.mkdir(path.join(projectDir, '.hool/metrics'), { recursive: true });
|
|
101
116
|
}
|
|
102
117
|
export async function reonboard(projectDir, mode = 'interactive') {
|
|
103
118
|
// Only overwrite current-phase.md and prepend onboard tasks to task-board.md
|
|
104
|
-
const opsDir = path.join(projectDir, 'operations');
|
|
119
|
+
const opsDir = path.join(projectDir, '.hool/operations');
|
|
105
120
|
// Flip phase to onboarding
|
|
106
121
|
await fs.writeFile(path.join(opsDir, 'current-phase.md'), getOnboardCurrentPhase(mode), 'utf-8');
|
|
107
122
|
// Prepend onboard tasks to existing task board
|
|
@@ -154,60 +169,169 @@ const AGENT_MANIFEST = [
|
|
|
154
169
|
name: 'product-lead',
|
|
155
170
|
role: 'Vision, contracts, doc consistency, phase gating, agent dispatch',
|
|
156
171
|
prompt: '.hool/prompts/orchestrator.md',
|
|
157
|
-
|
|
172
|
+
'agent-definition': { 'claude-code': null, cursor: null },
|
|
173
|
+
memory: '.hool/memory/product-lead/',
|
|
158
174
|
phases: [0, 1, 2, 3, 4, 12],
|
|
159
175
|
},
|
|
160
176
|
{
|
|
161
177
|
name: 'fe-tech-lead',
|
|
162
178
|
role: 'FE scaffold, LLD, code review, code-vs-doc consistency',
|
|
163
179
|
prompt: '.hool/prompts/agents/05-fe-tech-lead.md',
|
|
164
|
-
|
|
180
|
+
'agent-definition': { 'claude-code': '.claude/agents/fe-tech-lead.md', cursor: '.cursor/agents/fe-tech-lead.md' },
|
|
181
|
+
'cursor-rule': '.cursor/rules/fe-tech-lead.mdc',
|
|
182
|
+
memory: '.hool/memory/fe-tech-lead/',
|
|
165
183
|
phases: [4, 5, 9],
|
|
166
184
|
},
|
|
167
185
|
{
|
|
168
186
|
name: 'be-tech-lead',
|
|
169
187
|
role: 'BE scaffold, LLD, code review, code-vs-doc consistency',
|
|
170
188
|
prompt: '.hool/prompts/agents/06-be-tech-lead.md',
|
|
171
|
-
|
|
189
|
+
'agent-definition': { 'claude-code': '.claude/agents/be-tech-lead.md', cursor: '.cursor/agents/be-tech-lead.md' },
|
|
190
|
+
'cursor-rule': '.cursor/rules/be-tech-lead.mdc',
|
|
191
|
+
memory: '.hool/memory/be-tech-lead/',
|
|
172
192
|
phases: [4, 6, 9],
|
|
173
193
|
},
|
|
174
194
|
{
|
|
175
195
|
name: 'fe-dev',
|
|
176
196
|
role: 'Frontend implementation',
|
|
177
197
|
prompt: '.hool/prompts/agents/08-fe-dev.md',
|
|
178
|
-
|
|
198
|
+
'agent-definition': { 'claude-code': '.claude/agents/fe-dev.md', cursor: '.cursor/agents/fe-dev.md' },
|
|
199
|
+
'cursor-rule': '.cursor/rules/fe-dev.mdc',
|
|
200
|
+
memory: '.hool/memory/fe-dev/',
|
|
179
201
|
phases: [8],
|
|
180
202
|
},
|
|
181
203
|
{
|
|
182
204
|
name: 'be-dev',
|
|
183
205
|
role: 'Backend implementation',
|
|
184
206
|
prompt: '.hool/prompts/agents/08-be-dev.md',
|
|
185
|
-
|
|
207
|
+
'agent-definition': { 'claude-code': '.claude/agents/be-dev.md', cursor: '.cursor/agents/be-dev.md' },
|
|
208
|
+
'cursor-rule': '.cursor/rules/be-dev.mdc',
|
|
209
|
+
memory: '.hool/memory/be-dev/',
|
|
186
210
|
phases: [8],
|
|
187
211
|
},
|
|
188
212
|
{
|
|
189
213
|
name: 'qa',
|
|
190
214
|
role: 'Test plan, test execution, bug reporting',
|
|
191
215
|
prompt: '.hool/prompts/agents/10-qa.md',
|
|
192
|
-
|
|
216
|
+
'agent-definition': { 'claude-code': '.claude/agents/qa.md', cursor: '.cursor/agents/qa.md' },
|
|
217
|
+
'cursor-rule': '.cursor/rules/qa.mdc',
|
|
218
|
+
memory: '.hool/memory/qa/',
|
|
193
219
|
phases: [7, 10],
|
|
194
220
|
},
|
|
195
221
|
{
|
|
196
222
|
name: 'forensic',
|
|
197
223
|
role: 'Root cause analysis, bug triage, fix routing',
|
|
198
224
|
prompt: '.hool/prompts/agents/11-forensic.md',
|
|
199
|
-
|
|
225
|
+
'agent-definition': { 'claude-code': '.claude/agents/forensic.md', cursor: '.cursor/agents/forensic.md' },
|
|
226
|
+
'cursor-rule': '.cursor/rules/forensic.mdc',
|
|
227
|
+
memory: '.hool/memory/forensic/',
|
|
200
228
|
phases: [11],
|
|
201
229
|
},
|
|
202
230
|
{
|
|
203
231
|
name: 'governor',
|
|
204
232
|
role: 'Behavioral auditor, rule enforcement, corrective feedback',
|
|
205
233
|
prompt: '.hool/prompts/agents/governor.md',
|
|
206
|
-
|
|
234
|
+
'agent-definition': { 'claude-code': '.claude/agents/governor.md', cursor: '.cursor/agents/governor.md' },
|
|
235
|
+
'cursor-rule': '.cursor/rules/governor.mdc',
|
|
236
|
+
memory: '.hool/memory/governor/',
|
|
207
237
|
phases: 'continuous',
|
|
208
238
|
},
|
|
209
239
|
];
|
|
210
240
|
export async function writeAgentManifest(projectDir) {
|
|
211
241
|
await fs.writeFile(path.join(projectDir, '.hool/agents.json'), JSON.stringify(AGENT_MANIFEST, null, 2) + '\n', 'utf-8');
|
|
212
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Copy platform-specific agent definitions, hooks, and settings.
|
|
245
|
+
* Source files come from hool-mini templates (bundled with CLI).
|
|
246
|
+
*/
|
|
247
|
+
export async function copyPlatformFiles(projectDir, templateRootDir, platform) {
|
|
248
|
+
// templateRootDir points to hool-mini/ (or cli/ when bundled) — contains agents/, hooks/, settings/
|
|
249
|
+
const hoolMiniDir = templateRootDir;
|
|
250
|
+
if (platform === 'claude-code') {
|
|
251
|
+
// Copy .claude/agents/*.md
|
|
252
|
+
const claudeAgentsDir = path.join(projectDir, '.claude/agents');
|
|
253
|
+
await fs.mkdir(claudeAgentsDir, { recursive: true });
|
|
254
|
+
const srcAgentsDir = path.join(hoolMiniDir, 'agents/claude');
|
|
255
|
+
await copyDirContents(srcAgentsDir, claudeAgentsDir);
|
|
256
|
+
// Copy .claude/settings.json (merge with existing if present)
|
|
257
|
+
const settingsSrc = path.join(hoolMiniDir, 'settings/claude-settings.json');
|
|
258
|
+
const settingsDest = path.join(projectDir, '.claude/settings.json');
|
|
259
|
+
try {
|
|
260
|
+
const settingsContent = await fs.readFile(settingsSrc, 'utf-8');
|
|
261
|
+
const hoolSettings = JSON.parse(settingsContent);
|
|
262
|
+
// Merge with existing settings if present
|
|
263
|
+
try {
|
|
264
|
+
const existing = JSON.parse(await fs.readFile(settingsDest, 'utf-8'));
|
|
265
|
+
// Merge hooks — HOOL hooks get added to existing
|
|
266
|
+
if (hoolSettings.hooks) {
|
|
267
|
+
if (!existing.hooks)
|
|
268
|
+
existing.hooks = {};
|
|
269
|
+
for (const [event, hooks] of Object.entries(hoolSettings.hooks)) {
|
|
270
|
+
if (!existing.hooks[event]) {
|
|
271
|
+
existing.hooks[event] = hooks;
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
// Append HOOL hooks, avoid duplicates by command
|
|
275
|
+
const existingCmds = new Set(existing.hooks[event].flatMap((h) => h.hooks.map((hh) => hh.command)));
|
|
276
|
+
for (const hookGroup of hooks) {
|
|
277
|
+
const newHooks = hookGroup.hooks.filter((hh) => !existingCmds.has(hh.command));
|
|
278
|
+
if (newHooks.length > 0) {
|
|
279
|
+
existing.hooks[event].push({ ...hookGroup, hooks: newHooks });
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
await fs.writeFile(settingsDest, JSON.stringify(existing, null, 2) + '\n', 'utf-8');
|
|
286
|
+
}
|
|
287
|
+
catch {
|
|
288
|
+
// No existing settings — write fresh
|
|
289
|
+
await fs.writeFile(settingsDest, settingsContent, 'utf-8');
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
// Settings template not found — skip
|
|
294
|
+
}
|
|
295
|
+
// Copy hooks to .hool/hooks/
|
|
296
|
+
const hooksSrc = path.join(hoolMiniDir, 'hooks');
|
|
297
|
+
const hooksDest = path.join(projectDir, '.hool/hooks');
|
|
298
|
+
await fs.mkdir(hooksDest, { recursive: true });
|
|
299
|
+
await copyDirContents(hooksSrc, hooksDest);
|
|
300
|
+
// Make hooks executable
|
|
301
|
+
try {
|
|
302
|
+
const hookFiles = await fs.readdir(hooksDest);
|
|
303
|
+
for (const f of hookFiles) {
|
|
304
|
+
if (f.endsWith('.sh')) {
|
|
305
|
+
await fs.chmod(path.join(hooksDest, f), 0o755);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
catch { /* ok */ }
|
|
310
|
+
}
|
|
311
|
+
if (platform === 'cursor') {
|
|
312
|
+
// Copy .cursor/agents/*.md
|
|
313
|
+
const cursorAgentsDir = path.join(projectDir, '.cursor/agents');
|
|
314
|
+
await fs.mkdir(cursorAgentsDir, { recursive: true });
|
|
315
|
+
const srcAgentsDir = path.join(hoolMiniDir, 'agents/cursor');
|
|
316
|
+
await copyDirContents(srcAgentsDir, cursorAgentsDir);
|
|
317
|
+
// Copy .cursor/rules/*.mdc
|
|
318
|
+
const cursorRulesDir = path.join(projectDir, '.cursor/rules');
|
|
319
|
+
await fs.mkdir(cursorRulesDir, { recursive: true });
|
|
320
|
+
const srcRulesDir = path.join(hoolMiniDir, 'rules/cursor');
|
|
321
|
+
await copyDirContents(srcRulesDir, cursorRulesDir);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
async function copyDirContents(src, dest) {
|
|
325
|
+
try {
|
|
326
|
+
const entries = await fs.readdir(src, { withFileTypes: true });
|
|
327
|
+
for (const entry of entries) {
|
|
328
|
+
if (entry.isFile()) {
|
|
329
|
+
await fs.copyFile(path.join(src, entry.name), path.join(dest, entry.name));
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
catch {
|
|
334
|
+
// Source directory doesn't exist — skip silently
|
|
335
|
+
}
|
|
336
|
+
}
|
|
213
337
|
//# sourceMappingURL=scaffold.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/core/scaffold.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/core/scaffold.ts"],"names":[],"mappings":"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"}
|