hool-cli 0.1.0 → 0.1.2
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/README.md +25 -194
- package/dist/adapters/claude-code.js +9 -1
- package/dist/adapters/claude-code.js.map +1 -1
- package/dist/adapters/cursor.js +9 -1
- package/dist/adapters/cursor.js.map +1 -1
- package/dist/adapters/generic.js +9 -0
- package/dist/adapters/generic.js.map +1 -1
- package/dist/adapters/types.d.ts +2 -0
- package/dist/core/scaffold.d.ts +2 -2
- package/dist/core/scaffold.js +30 -2
- package/dist/core/scaffold.js.map +1 -1
- package/dist/core/templates.d.ts +2 -1
- package/dist/core/templates.js +51 -2
- package/dist/core/templates.js.map +1 -1
- package/dist/index.js +176 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,219 +1,50 @@
|
|
|
1
|
-
# HOOL
|
|
1
|
+
# HOOL — Human Out Of Loop
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Agent-Driven SDLC. Describe what you want to build, then step away. Agents handle spec, design, architecture, implementation, testing, and bug fixing.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Quick Start
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npx hool init
|
|
8
|
+
npx hool-cli init
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
You'll be asked three questions:
|
|
12
|
+
1. **Platform** — Claude Code, Cursor, or generic
|
|
13
|
+
2. **Project type** — web app, browser game, mobile, CLI tool, API, desktop, animation, or other
|
|
14
|
+
3. **Mode** — Interactive (you review spec/design/architecture) or Full-HOOL (fully autonomous)
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
Then open your AI coding tool and tell it:
|
|
14
17
|
|
|
15
|
-
### Step 1: Ask project type
|
|
16
18
|
```
|
|
17
|
-
|
|
18
|
-
1. Web application
|
|
19
|
-
2. Browser game
|
|
20
|
-
3. Mobile app (React Native)
|
|
21
|
-
4. Animation / motion
|
|
22
|
-
5. CLI tool
|
|
23
|
-
6. API / backend only
|
|
19
|
+
Read .hool/prompts/orchestrator.md and begin Phase 1: Brainstorm
|
|
24
20
|
```
|
|
25
21
|
|
|
26
|
-
|
|
27
|
-
Based on selection, creates:
|
|
28
|
-
```
|
|
29
|
-
your-project/
|
|
30
|
-
phases/
|
|
31
|
-
00-init/
|
|
32
|
-
project-profile.md
|
|
33
|
-
01-brainstorm/
|
|
34
|
-
brainstorm.md
|
|
35
|
-
02-spec/
|
|
36
|
-
spec.md
|
|
37
|
-
03-design/
|
|
38
|
-
design.md
|
|
39
|
-
cards/
|
|
40
|
-
04-architecture/
|
|
41
|
-
architecture.md
|
|
42
|
-
contracts.md
|
|
43
|
-
schema.md
|
|
44
|
-
flows.md
|
|
45
|
-
fe/
|
|
46
|
-
be/
|
|
47
|
-
05-fe-scaffold/
|
|
48
|
-
fe-lld.md
|
|
49
|
-
06-be-scaffold/
|
|
50
|
-
be-lld.md
|
|
51
|
-
07-test-plan/
|
|
52
|
-
test-plan.md
|
|
53
|
-
operations/
|
|
54
|
-
current-phase.md
|
|
55
|
-
task-board.md
|
|
56
|
-
bugs.md
|
|
57
|
-
issues.md
|
|
58
|
-
inconsistencies.md
|
|
59
|
-
needs-human-review.md
|
|
60
|
-
memory/
|
|
61
|
-
product-lead/
|
|
62
|
-
hot.md, cold.md, best-practices.md, issues.md
|
|
63
|
-
fe-tech-lead/
|
|
64
|
-
hot.md, cold.md, best-practices.md, issues.md
|
|
65
|
-
be-tech-lead/
|
|
66
|
-
hot.md, cold.md, best-practices.md, issues.md
|
|
67
|
-
fe-dev/
|
|
68
|
-
hot.md, cold.md, best-practices.md, issues.md
|
|
69
|
-
be-dev/
|
|
70
|
-
hot.md, cold.md, best-practices.md, issues.md
|
|
71
|
-
qa/
|
|
72
|
-
hot.md, cold.md, best-practices.md, issues.md
|
|
73
|
-
forensic/
|
|
74
|
-
hot.md, cold.md, best-practices.md, issues.md
|
|
75
|
-
logs/
|
|
76
|
-
fe.log
|
|
77
|
-
be.log
|
|
78
|
-
src/
|
|
79
|
-
frontend/
|
|
80
|
-
backend/
|
|
81
|
-
tests/
|
|
82
|
-
unit/
|
|
83
|
-
integration/
|
|
84
|
-
e2e/
|
|
85
|
-
.hool/
|
|
86
|
-
mcps.json
|
|
87
|
-
prompts/ <- agent prompts (copied from hool-mini templates)
|
|
88
|
-
CLAUDE.md <- injected with HOOL product-lead instructions
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Step 3: Check & Install MCPs (global)
|
|
92
|
-
MCPs are installed GLOBALLY (once per machine, not per project).
|
|
93
|
-
|
|
94
|
-
On first run:
|
|
95
|
-
```
|
|
96
|
-
Checking global MCPs...
|
|
97
|
-
ok context7 -- already installed
|
|
98
|
-
!! playwright -- not found
|
|
99
|
-
|
|
100
|
-
Install missing MCPs globally? (y/n)
|
|
101
|
-
Installing playwright -> ~/.claude/mcp_servers.json ok
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Required MCPs by project type:
|
|
105
|
-
```
|
|
106
|
-
ALL projects: context7
|
|
107
|
-
Web app: + playwright
|
|
108
|
-
Browser game: + playwright
|
|
109
|
-
Mobile app: + adb MCP (warn if adb CLI not on PATH)
|
|
110
|
-
Animation: + playwright
|
|
111
|
-
CLI / API only: (no additional)
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Writes to `~/.claude/mcp_servers.json` (global, shared across all projects).
|
|
115
|
-
|
|
116
|
-
### Step 4: Set up Claude Code integration
|
|
117
|
-
Injects HOOL product-lead instructions into project CLAUDE.md so that when you open Claude Code in this project, it knows:
|
|
118
|
-
- The phase structure
|
|
119
|
-
- Which agent prompts to load
|
|
120
|
-
- Where state files live
|
|
121
|
-
- Which MCPs are available
|
|
122
|
-
|
|
123
|
-
### Step 5: Initialize status files
|
|
124
|
-
Creates all status files with empty templates:
|
|
125
|
-
- `operations/current-phase.md` -> Phase 0, awaiting start
|
|
126
|
-
- `operations/task-board.md` -> empty
|
|
127
|
-
- `operations/bugs.md`, `operations/issues.md`, `operations/inconsistencies.md`, `operations/needs-human-review.md` -> empty
|
|
128
|
-
- All agent memory files (`memory/<agent-name>/hot.md`, `cold.md`, `best-practices.md`, `issues.md`) -> initialized with headers
|
|
129
|
-
|
|
130
|
-
### Step 6: Write project MCP manifest
|
|
131
|
-
Creates `.hool/mcps.json` -- a READ-ONLY manifest declaring which global MCPs this project uses. Not an installer, just a reference.
|
|
132
|
-
```json
|
|
133
|
-
{
|
|
134
|
-
"required": ["context7", "playwright"],
|
|
135
|
-
"optional": ["hool-context-mcp"],
|
|
136
|
-
"domain": "web-app"
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### Step 7: Done
|
|
141
|
-
```
|
|
142
|
-
HOOL initialized for: Web Application
|
|
143
|
-
|
|
144
|
-
Start building:
|
|
145
|
-
$ claude
|
|
146
|
-
> /hool start
|
|
147
|
-
|
|
148
|
-
Or manually:
|
|
149
|
-
> Read .hool/prompts/product-lead.md and begin Phase 1: Brainstorm
|
|
150
|
-
|
|
151
|
-
Global MCPs verified: context7, playwright
|
|
152
|
-
Project profile: web-app
|
|
153
|
-
Status: ready for Phase 1 -- Brainstorm
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
## Other commands
|
|
22
|
+
## Commands
|
|
157
23
|
|
|
158
24
|
```bash
|
|
159
|
-
npx hool init #
|
|
160
|
-
npx hool status #
|
|
161
|
-
npx hool
|
|
162
|
-
npx hool reset # reset status files (keep phases/)
|
|
163
|
-
npx hool upgrade # update prompts/agents to latest version
|
|
25
|
+
npx hool-cli init # Scaffold HOOL in current directory
|
|
26
|
+
npx hool-cli status # Show current phase and task summary
|
|
27
|
+
npx hool-cli reset # Reset operations and memory (keeps phase docs)
|
|
164
28
|
```
|
|
165
29
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
```
|
|
169
|
-
npm package: hool
|
|
170
|
-
bin: hool
|
|
171
|
-
contains:
|
|
172
|
-
- CLI (Node.js)
|
|
173
|
-
- Prompt templates (markdown)
|
|
174
|
-
- MCP installer logic
|
|
175
|
-
- CLAUDE.md generator
|
|
176
|
-
```
|
|
30
|
+
Or install globally:
|
|
177
31
|
|
|
178
|
-
Install globally or use npx:
|
|
179
32
|
```bash
|
|
180
|
-
npm install -g hool
|
|
181
|
-
|
|
33
|
+
npm install -g hool-cli
|
|
34
|
+
hool init
|
|
35
|
+
hool status
|
|
182
36
|
```
|
|
183
37
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
MCPs install GLOBALLY -- one install per machine, shared across all projects.
|
|
38
|
+
Update to the latest version:
|
|
187
39
|
|
|
40
|
+
```bash
|
|
41
|
+
npm update -g hool-cli
|
|
188
42
|
```
|
|
189
|
-
npm-based MCPs (context7, playwright):
|
|
190
|
-
-> writes to ~/.claude/mcp_servers.json (global)
|
|
191
43
|
|
|
192
|
-
|
|
193
|
-
-> pip/uvx install, writes to ~/.claude/mcp_servers.json (global)
|
|
44
|
+
## Documentation
|
|
194
45
|
|
|
195
|
-
|
|
196
|
-
-> installed globally, reads per-project config from .hool/context-config.json
|
|
46
|
+
Full documentation: [github.com/the-wise-agents/hool](https://github.com/the-wise-agents/hool)
|
|
197
47
|
|
|
198
|
-
|
|
199
|
-
-> Check if installed on PATH, warn if not, provide install instructions
|
|
200
|
-
-> Don't auto-install system-level tools
|
|
201
|
-
```
|
|
48
|
+
## License
|
|
202
49
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
```
|
|
206
|
-
GLOBAL (~/.claude/mcp_servers.json):
|
|
207
|
-
- MCP server binaries and configs
|
|
208
|
-
- Installed once, available to all projects
|
|
209
|
-
- `hool init` checks and installs missing ones
|
|
210
|
-
|
|
211
|
-
PROJECT-LEVEL (.hool/mcps.json):
|
|
212
|
-
- Read-only manifest: which MCPs this project uses
|
|
213
|
-
- NOT an installer -- just a reference
|
|
214
|
-
- Helps `hool init` know what to check globally
|
|
215
|
-
|
|
216
|
-
PROJECT-LEVEL (.hool/context-config.json):
|
|
217
|
-
- hool-context-mcp reads this for per-project indexing config
|
|
218
|
-
- Which dirs to watch, chunking rules, ignore patterns
|
|
219
|
-
```
|
|
50
|
+
MIT
|
|
@@ -47,10 +47,18 @@ MCP server configs are in \`.hool/mcps.json\` and installed to your platform's M
|
|
|
47
47
|
|
|
48
48
|
${getMcpSection(config.projectType)}
|
|
49
49
|
|
|
50
|
+
## Execution Mode: ${config.mode}
|
|
51
|
+
|
|
52
|
+
${config.mode === 'full-hool'
|
|
53
|
+
? `This project runs in **full-hool mode**. After brainstorming (Phase 1), you are fully autonomous.
|
|
54
|
+
Do NOT ask the user for approval at spec, design, or architecture gates.
|
|
55
|
+
Log all significant decisions to \`operations/needs-human-review.md\` for post-build review.`
|
|
56
|
+
: `This project runs in **interactive mode**. Phases 0-4 require human review and sign-off.
|
|
57
|
+
Phase 4 (Architecture) is the FINAL human gate. After that, you run autonomously.`}
|
|
58
|
+
|
|
50
59
|
## Key Rules
|
|
51
60
|
|
|
52
61
|
- You are the **sole user-facing agent** — the user only talks to you
|
|
53
|
-
- After Phase 4 sign-off, the human is OUT — you run autonomously
|
|
54
62
|
- All state lives in files: \`phases/\`, \`operations/\`, \`memory/\`
|
|
55
63
|
- Agents never modify their own prompts — escalate to \`operations/needs-human-review.md\`
|
|
56
64
|
- Read your full orchestrator prompt at \`.hool/prompts/orchestrator.md\` for the complete process
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/adapters/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;AAEtF,SAAS,aAAa,CAAC,WAAmB;IACxC,MAAM,IAAI,GAAG,CAAC,8HAA8H,CAAC,CAAC;IAC9I,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;IAC7G,CAAC;IACD,IAAI,WAAW,KAAK,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAqB;IAC7C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCP,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/adapters/claude-code.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/cursor.js
CHANGED
|
@@ -20,10 +20,18 @@ When you need to dispatch an agent, read the agent's prompt from \`.hool/prompts
|
|
|
20
20
|
|
|
21
21
|
After completing the agent's task, switch back to Product Lead role and continue the dispatch loop.
|
|
22
22
|
|
|
23
|
+
## Execution Mode: ${config.mode}
|
|
24
|
+
|
|
25
|
+
${config.mode === 'full-hool'
|
|
26
|
+
? `This project runs in **full-hool mode**. After brainstorming (Phase 1), you are fully autonomous.
|
|
27
|
+
Do NOT ask the user for approval at spec, design, or architecture gates.
|
|
28
|
+
Log all significant decisions to \`operations/needs-human-review.md\` for post-build review.`
|
|
29
|
+
: `This project runs in **interactive mode**. Phases 0-4 require human review and sign-off.
|
|
30
|
+
Phase 4 (Architecture) is the FINAL human gate. After that, you run autonomously.`}
|
|
31
|
+
|
|
23
32
|
## Key Rules
|
|
24
33
|
|
|
25
34
|
- You are the **sole user-facing agent** — the user only talks to you
|
|
26
|
-
- After Phase 4 sign-off, the human is OUT — you run autonomously
|
|
27
35
|
- All state lives in files: \`phases/\`, \`operations/\`, \`memory/\`
|
|
28
36
|
- Agents never modify their own prompts — escalate to \`operations/needs-human-review.md\`
|
|
29
37
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAE9E,SAAS,mBAAmB,CAAC,MAAqB;IAChD,OAAO
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAE9E,SAAS,mBAAmB,CAAC,MAAqB;IAChD,OAAO;;;;;;;;;;;;;;;;;qBAiBY,MAAM,CAAC,IAAI;;EAE9B,MAAM,CAAC,IAAI,KAAK,WAAW;QACzB,CAAC,CAAC;;6FAEuF;QACzF,CAAC,CAAC;kFAC4E;;;;;;;CAOjF,CAAC;AACF,CAAC;AAED,MAAM,OAAO,aAAa;IACf,QAAQ,GAAkB,QAAQ,CAAC;IAE5C,KAAK,CAAC,kBAAkB,CAAC,MAAqB;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAkB;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACvD,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,IAAI,MAAM,GAA6C,EAAE,CAAC;QAC1D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;YAC/D,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;QAC/C,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC;QAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,oBAAoB,CAAC,MAAqB;QACxC,OAAO;YACL,EAAE;YACF,mBAAmB;YACnB,oCAAoC;YACpC,2DAA2D;YAC3D,2FAA2F;SAC5F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF"}
|
package/dist/adapters/generic.js
CHANGED
|
@@ -32,6 +32,15 @@ ${config.projectType === 'web-app' || config.projectType === 'browser-game' || c
|
|
|
32
32
|
: '- context7: npx -y @context7/mcp'}
|
|
33
33
|
|
|
34
34
|
See .hool/mcps.json for the full manifest.
|
|
35
|
+
|
|
36
|
+
## Execution Mode: ${config.mode}
|
|
37
|
+
|
|
38
|
+
${config.mode === 'full-hool'
|
|
39
|
+
? `This project runs in **full-hool mode**. After brainstorming (Phase 1), the agent is fully autonomous.
|
|
40
|
+
Do NOT ask the user for approval at spec, design, or architecture gates.
|
|
41
|
+
Log all significant decisions to \`operations/needs-human-review.md\` for post-build review.`
|
|
42
|
+
: `This project runs in **interactive mode**. Phases 0-4 require human review and sign-off.
|
|
43
|
+
Phase 4 (Architecture) is the FINAL human gate. After that, the agent runs autonomously.`}
|
|
35
44
|
`;
|
|
36
45
|
}
|
|
37
46
|
export class GenericAdapter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../src/adapters/generic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,SAAS,oBAAoB,CAAC,MAAqB;IACjD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BP,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,cAAc,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW;QAC7G,CAAC,CAAC,+EAA+E;QACjF,CAAC,CAAC,kCACJ
|
|
1
|
+
{"version":3,"file":"generic.js","sourceRoot":"","sources":["../../src/adapters/generic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,SAAS,oBAAoB,CAAC,MAAqB;IACjD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BP,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,cAAc,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW;QAC7G,CAAC,CAAC,+EAA+E;QACjF,CAAC,CAAC,kCACJ;;;;qBAImB,MAAM,CAAC,IAAI;;EAE9B,MAAM,CAAC,IAAI,KAAK,WAAW;QACzB,CAAC,CAAC;;6FAEuF;QACzF,CAAC,CAAC;yFACmF;CACxF,CAAC;AACF,CAAC;AAED,MAAM,OAAO,cAAc;IAChB,QAAQ,GAAkB,SAAS,CAAC;IAE7C,KAAK,CAAC,kBAAkB,CAAC,MAAqB;QAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;QAC9E,MAAM,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAmB;QAClC,sEAAsE;QACtE,sCAAsC;IACxC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,kEAAkE;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oBAAoB,CAAC,MAAqB;QACxC,OAAO;YACL,EAAE;YACF,mBAAmB;YACnB,iDAAiD;YACjD,wDAAwD;YACxD,2FAA2F;YAC3F,EAAE;YACF,gFAAgF;SACjF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF"}
|
package/dist/adapters/types.d.ts
CHANGED
|
@@ -5,11 +5,13 @@ export interface McpDefinition {
|
|
|
5
5
|
installCommand: string;
|
|
6
6
|
configEntry: Record<string, unknown>;
|
|
7
7
|
}
|
|
8
|
+
export type ExecutionMode = 'interactive' | 'full-hool';
|
|
8
9
|
export interface AdapterConfig {
|
|
9
10
|
platform: AgentPlatform;
|
|
10
11
|
projectType: ProjectType;
|
|
11
12
|
projectDir: string;
|
|
12
13
|
promptsDir: string;
|
|
14
|
+
mode: ExecutionMode;
|
|
13
15
|
}
|
|
14
16
|
export interface Adapter {
|
|
15
17
|
readonly platform: AgentPlatform;
|
package/dist/core/scaffold.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ProjectType } from '../adapters/types.js';
|
|
2
|
-
export type ExecutionMode = 'interactive' | 'full-hool';
|
|
1
|
+
import type { ProjectType, ExecutionMode } from '../adapters/types.js';
|
|
3
2
|
export declare function scaffoldProject(projectDir: string, projectType: ProjectType, mode?: ExecutionMode): Promise<void>;
|
|
3
|
+
export declare function scaffoldOnboard(projectDir: string, projectType: ProjectType, mode?: ExecutionMode): Promise<void>;
|
|
4
4
|
export declare function copyPrompts(projectDir: string, promptsSourceDir: string): Promise<void>;
|
|
5
5
|
export declare function writeMcpManifest(projectDir: string, projectType: ProjectType, requiredMcps: string[]): Promise<void>;
|
|
6
6
|
export declare function writeAgentManifest(projectDir: string): Promise<void>;
|
package/dist/core/scaffold.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from 'fs/promises';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import { getOperationTemplates, getMemoryHeaders } from './templates.js';
|
|
3
|
+
import { getOperationTemplates, getOnboardOperationTemplates, getMemoryHeaders } from './templates.js';
|
|
4
4
|
import { MCP_REGISTRY } from '../mcps/registry.js';
|
|
5
5
|
const AGENTS = [
|
|
6
6
|
'product-lead',
|
|
@@ -47,7 +47,7 @@ export async function scaffoldProject(projectDir, projectType, mode = 'interacti
|
|
|
47
47
|
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');
|
|
48
48
|
// Create operations directory with templates
|
|
49
49
|
await fs.mkdir(path.join(projectDir, 'operations'), { recursive: true });
|
|
50
|
-
const opTemplates = getOperationTemplates();
|
|
50
|
+
const opTemplates = getOperationTemplates(mode);
|
|
51
51
|
for (const [filename, content] of Object.entries(opTemplates)) {
|
|
52
52
|
await fs.writeFile(path.join(projectDir, 'operations', filename), content, 'utf-8');
|
|
53
53
|
}
|
|
@@ -66,6 +66,34 @@ export async function scaffoldProject(projectDir, projectType, mode = 'interacti
|
|
|
66
66
|
// Those are project concerns decided during architecture (Phase 4)
|
|
67
67
|
// and scaffolded by Tech Leads during Phases 5-6 (LLD).
|
|
68
68
|
}
|
|
69
|
+
export async function scaffoldOnboard(projectDir, projectType, mode = 'interactive') {
|
|
70
|
+
const skip = SKIP_PHASES[projectType] || [];
|
|
71
|
+
// Create phase directories (same as init — agents populate during onboarding)
|
|
72
|
+
for (const dir of PHASE_DIRS) {
|
|
73
|
+
if (skip.some(s => dir.startsWith(s)))
|
|
74
|
+
continue;
|
|
75
|
+
await fs.mkdir(path.join(projectDir, dir), { recursive: true });
|
|
76
|
+
}
|
|
77
|
+
// Project profile marks this as an onboarded project
|
|
78
|
+
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');
|
|
79
|
+
// Create operations directory with onboard-specific templates
|
|
80
|
+
await fs.mkdir(path.join(projectDir, 'operations'), { recursive: true });
|
|
81
|
+
const opTemplates = getOnboardOperationTemplates(mode);
|
|
82
|
+
for (const [filename, content] of Object.entries(opTemplates)) {
|
|
83
|
+
await fs.writeFile(path.join(projectDir, 'operations', filename), content, 'utf-8');
|
|
84
|
+
}
|
|
85
|
+
// Create memory directories for each agent
|
|
86
|
+
const memoryHeaders = getMemoryHeaders();
|
|
87
|
+
for (const agent of AGENTS) {
|
|
88
|
+
const agentDir = path.join(projectDir, 'memory', agent);
|
|
89
|
+
await fs.mkdir(agentDir, { recursive: true });
|
|
90
|
+
for (const [filename, content] of Object.entries(memoryHeaders)) {
|
|
91
|
+
await fs.writeFile(path.join(agentDir, filename), content, 'utf-8');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Create .hool directory
|
|
95
|
+
await fs.mkdir(path.join(projectDir, '.hool/prompts'), { recursive: true });
|
|
96
|
+
}
|
|
69
97
|
export async function copyPrompts(projectDir, promptsSourceDir) {
|
|
70
98
|
const hoolPromptsDir = path.join(projectDir, '.hool/prompts');
|
|
71
99
|
async function copyDir(src, dest) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/core/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/core/scaffold.ts"],"names":[],"mappings":"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"}
|
package/dist/core/templates.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export declare function getOperationTemplates(): Record<string, string>;
|
|
1
|
+
export declare function getOperationTemplates(mode?: string): Record<string, string>;
|
|
2
|
+
export declare function getOnboardOperationTemplates(mode?: string): Record<string, string>;
|
|
2
3
|
export declare function getMemoryHeaders(): Record<string, string>;
|
package/dist/core/templates.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export function getOperationTemplates() {
|
|
1
|
+
export function getOperationTemplates(mode = 'interactive') {
|
|
2
2
|
return {
|
|
3
|
-
'current-phase.md': `# Current Phase\n\n
|
|
3
|
+
'current-phase.md': `# Current Phase\n\n- **Mode**: ${mode}\n- **Phase**: 0 (Project Init)\n\nAwaiting start.\n`,
|
|
4
4
|
'task-board.md': `# Task Board\n\n## Active Tasks\n_No tasks yet._\n\n## Completed Tasks\n_None._\n`,
|
|
5
5
|
'bugs.md': `# Bug Tracker\n\n_No bugs reported yet._\n`,
|
|
6
6
|
'issues.md': `# Issues\n\n_No issues logged yet._\n`,
|
|
@@ -8,6 +8,55 @@ export function getOperationTemplates() {
|
|
|
8
8
|
'needs-human-review.md': `# Needs Human Review\n\n_Nothing pending human review._\n`,
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
+
export function getOnboardOperationTemplates(mode = 'interactive') {
|
|
12
|
+
return {
|
|
13
|
+
'current-phase.md': `# Current Phase
|
|
14
|
+
|
|
15
|
+
- **Mode**: ${mode}
|
|
16
|
+
- **Phase**: onboarding
|
|
17
|
+
- **Status**: awaiting-analysis
|
|
18
|
+
|
|
19
|
+
Onboarding an existing project. The Product Lead will:
|
|
20
|
+
1. Scan the project and generate a project profile
|
|
21
|
+
2. Extract architecture, contracts, schema from existing code
|
|
22
|
+
3. Infer a spec from observed behavior (needs human review)
|
|
23
|
+
4. Run gap analysis and surface issues
|
|
24
|
+
5. Seed agent memory with findings
|
|
25
|
+
6. Present a summary for human review
|
|
26
|
+
|
|
27
|
+
After onboarding completes and human reviews, phase transitions to **standby**.
|
|
28
|
+
`,
|
|
29
|
+
'task-board.md': `# Task Board
|
|
30
|
+
|
|
31
|
+
## Active Tasks
|
|
32
|
+
- [ ] ONBOARD-001: Project discovery — scan codebase, identify stack
|
|
33
|
+
- [ ] ONBOARD-002: Architecture extraction — reverse-engineer architecture docs
|
|
34
|
+
- [ ] ONBOARD-003: Spec inference — infer product spec from code behavior
|
|
35
|
+
- [ ] ONBOARD-004: Gap analysis — surface issues, tech debt, inconsistencies
|
|
36
|
+
- [ ] ONBOARD-005: Seed agent memory — route findings to agent memory files
|
|
37
|
+
- [ ] ONBOARD-006: Human review gate — present summary for review
|
|
38
|
+
|
|
39
|
+
## Completed Tasks
|
|
40
|
+
_None._
|
|
41
|
+
`,
|
|
42
|
+
'bugs.md': `# Bug Tracker
|
|
43
|
+
|
|
44
|
+
_No bugs reported yet._
|
|
45
|
+
`,
|
|
46
|
+
'issues.md': `# Issues
|
|
47
|
+
|
|
48
|
+
_No issues logged yet. Onboarding will populate this._
|
|
49
|
+
`,
|
|
50
|
+
'inconsistencies.md': `# Inconsistencies
|
|
51
|
+
|
|
52
|
+
_No inconsistencies found yet. Onboarding will populate this._
|
|
53
|
+
`,
|
|
54
|
+
'needs-human-review.md': `# Needs Human Review
|
|
55
|
+
|
|
56
|
+
_Onboarding will add the inferred spec here for review._
|
|
57
|
+
`,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
11
60
|
export function getMemoryHeaders() {
|
|
12
61
|
return {
|
|
13
62
|
'hot.md': `## Compact\n_No history yet._\n\n## Summary\n_No history yet._\n\n## Recent\n_No history yet._\n`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB;
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,OAAe,aAAa;IAChE,OAAO;QACL,kBAAkB,EAAE,kCAAkC,IAAI,sDAAsD;QAEhH,eAAe,EAAE,mFAAmF;QAEpG,SAAS,EAAE,4CAA4C;QAEvD,WAAW,EAAE,uCAAuC;QAEpD,oBAAoB,EAAE,wDAAwD;QAE9E,uBAAuB,EAAE,2DAA2D;KACrF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAe,aAAa;IACvE,OAAO;QACL,kBAAkB,EAAE;;cAEV,IAAI;;;;;;;;;;;;;CAajB;QAEG,eAAe,EAAE;;;;;;;;;;;;CAYpB;QAEG,SAAS,EAAE;;;CAGd;QAEG,WAAW,EAAE;;;CAGhB;QAEG,oBAAoB,EAAE;;;CAGzB;QAEG,uBAAuB,EAAE;;;CAG5B;KACE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,QAAQ,EAAE,kGAAkG;QAE5G,SAAS,EAAE,gBAAgB;QAE3B,mBAAmB,EAAE,4DAA4D;QAEjF,WAAW,EAAE,oDAAoD;KAClE,CAAC;AACJ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import chalk from 'chalk';
|
|
|
5
5
|
import path from 'path';
|
|
6
6
|
import fs from 'fs/promises';
|
|
7
7
|
import { fileURLToPath } from 'url';
|
|
8
|
-
import { scaffoldProject, copyPrompts, writeMcpManifest, writeAgentManifest } from './core/scaffold.js';
|
|
8
|
+
import { scaffoldProject, scaffoldOnboard, copyPrompts, writeMcpManifest, writeAgentManifest } from './core/scaffold.js';
|
|
9
9
|
import { createAdapter } from './adapters/index.js';
|
|
10
10
|
import { checkAndInstallMcps } from './mcps/installer.js';
|
|
11
11
|
import { getRequiredMcpNames } from './mcps/registry.js';
|
|
@@ -30,7 +30,7 @@ const program = new Command();
|
|
|
30
30
|
program
|
|
31
31
|
.name('hool')
|
|
32
32
|
.description('Agent-Driven SDLC — scaffold and configure HOOL for any project')
|
|
33
|
-
.version('0.1.
|
|
33
|
+
.version('0.1.2');
|
|
34
34
|
// ── hool init ──────────────────────────────────────────────
|
|
35
35
|
program
|
|
36
36
|
.command('init')
|
|
@@ -80,6 +80,7 @@ program
|
|
|
80
80
|
projectType,
|
|
81
81
|
projectDir,
|
|
82
82
|
promptsDir,
|
|
83
|
+
mode,
|
|
83
84
|
};
|
|
84
85
|
// 4. Scaffold project structure
|
|
85
86
|
console.log(chalk.dim('\n Scaffolding project structure...'));
|
|
@@ -128,6 +129,137 @@ program
|
|
|
128
129
|
console.log(adapter.getCompletionMessage(config));
|
|
129
130
|
console.log('');
|
|
130
131
|
});
|
|
132
|
+
// ── hool onboard ──────────────────────────────────────────
|
|
133
|
+
program
|
|
134
|
+
.command('onboard')
|
|
135
|
+
.description('Onboard an existing codebase into HOOL (reverse-engineer phase docs)')
|
|
136
|
+
.option('-d, --dir <path>', 'Project directory', '.')
|
|
137
|
+
.option('-p, --platform <platform>', 'Platform (claude-code, cursor, generic)')
|
|
138
|
+
.option('-t, --type <type>', 'Project type (web-app, browser-game, mobile-android, animation, cli-tool, api-only, desktop, other)')
|
|
139
|
+
.option('-m, --mode <mode>', 'Execution mode (interactive, full-hool)')
|
|
140
|
+
.action(async (opts) => {
|
|
141
|
+
const projectDir = path.resolve(opts.dir);
|
|
142
|
+
console.log(chalk.bold('\n HOOL — Onboard Existing Project\n'));
|
|
143
|
+
// Check if already a HOOL project
|
|
144
|
+
try {
|
|
145
|
+
await fs.access(path.join(projectDir, '.hool'));
|
|
146
|
+
console.log(chalk.red(' This directory already has a .hool/ folder. Use `hool init` for new projects or `hool reset` to start fresh.\n'));
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
catch { /* not initialized — good */ }
|
|
150
|
+
// 1. Ask platform (or use flag)
|
|
151
|
+
const platform = opts.platform || await select({
|
|
152
|
+
message: 'Which AI coding tool are you using?',
|
|
153
|
+
choices: [
|
|
154
|
+
{ name: 'Claude Code', value: 'claude-code' },
|
|
155
|
+
{ name: 'Cursor', value: 'cursor' },
|
|
156
|
+
{ name: 'Other / generic', value: 'generic' },
|
|
157
|
+
],
|
|
158
|
+
});
|
|
159
|
+
// 2. Ask project type (or use flag)
|
|
160
|
+
const projectType = opts.type || await select({
|
|
161
|
+
message: 'What type of project is this?',
|
|
162
|
+
choices: [
|
|
163
|
+
{ name: 'Web application', value: 'web-app' },
|
|
164
|
+
{ name: 'Browser game', value: 'browser-game' },
|
|
165
|
+
{ name: 'Mobile app (Android)', value: 'mobile-android' },
|
|
166
|
+
{ name: 'Animation / motion', value: 'animation' },
|
|
167
|
+
{ name: 'CLI tool', value: 'cli-tool' },
|
|
168
|
+
{ name: 'API / backend only', value: 'api-only' },
|
|
169
|
+
{ name: 'Desktop application', value: 'desktop' },
|
|
170
|
+
{ name: 'Other', value: 'other' },
|
|
171
|
+
],
|
|
172
|
+
});
|
|
173
|
+
// 3. Ask execution mode (or use flag)
|
|
174
|
+
const mode = opts.mode || await select({
|
|
175
|
+
message: 'How much control do you want?',
|
|
176
|
+
choices: [
|
|
177
|
+
{ name: 'Interactive — review extracted docs before agents start working', value: 'interactive' },
|
|
178
|
+
{ name: 'Full-HOOL — extract and go, review later', value: 'full-hool' },
|
|
179
|
+
],
|
|
180
|
+
});
|
|
181
|
+
const adapter = createAdapter(platform);
|
|
182
|
+
const promptsDir = await getPromptsSourceDir();
|
|
183
|
+
const config = {
|
|
184
|
+
platform,
|
|
185
|
+
projectType,
|
|
186
|
+
projectDir,
|
|
187
|
+
promptsDir,
|
|
188
|
+
mode,
|
|
189
|
+
};
|
|
190
|
+
// 4. Scaffold HOOL structure around existing code
|
|
191
|
+
console.log(chalk.dim('\n Scaffolding HOOL around existing project...'));
|
|
192
|
+
await scaffoldOnboard(projectDir, projectType, mode);
|
|
193
|
+
console.log(chalk.green(' ✓ HOOL structure created (existing code untouched)'));
|
|
194
|
+
// 5. Copy prompt templates
|
|
195
|
+
console.log(chalk.dim(' Copying agent prompts...'));
|
|
196
|
+
try {
|
|
197
|
+
await copyPrompts(projectDir, promptsDir);
|
|
198
|
+
console.log(chalk.green(' ✓ Agent prompts copied to .hool/prompts/'));
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
console.log(chalk.yellow(' ⚠ Could not copy prompts (source not found). Copy them manually to .hool/prompts/'));
|
|
202
|
+
}
|
|
203
|
+
// 6. Inject platform instructions
|
|
204
|
+
console.log(chalk.dim(` Configuring for ${platform}...`));
|
|
205
|
+
await adapter.injectInstructions(config);
|
|
206
|
+
console.log(chalk.green(` ✓ ${platform} instructions injected`));
|
|
207
|
+
// 7. Check & install MCPs
|
|
208
|
+
if (platform !== 'generic') {
|
|
209
|
+
console.log(chalk.dim(' Checking MCPs...'));
|
|
210
|
+
const results = await checkAndInstallMcps(adapter, config);
|
|
211
|
+
for (const r of results) {
|
|
212
|
+
if (r.status === 'already-installed') {
|
|
213
|
+
console.log(chalk.green(` ✓ ${r.name} — already installed`));
|
|
214
|
+
}
|
|
215
|
+
else if (r.status === 'installed') {
|
|
216
|
+
console.log(chalk.green(` ✓ ${r.name} — installed`));
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
console.log(chalk.red(` ✗ ${r.name} — failed: ${r.error}`));
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// 8. Write MCP manifest + agent manifest
|
|
224
|
+
const requiredMcps = getRequiredMcpNames(projectType);
|
|
225
|
+
await writeMcpManifest(projectDir, projectType, requiredMcps);
|
|
226
|
+
console.log(chalk.green(' ✓ MCP manifest written to .hool/mcps.json'));
|
|
227
|
+
await writeAgentManifest(projectDir);
|
|
228
|
+
console.log(chalk.green(' ✓ Agent manifest written to .hool/agents.json'));
|
|
229
|
+
// 9. Done — tell user to start the onboarding analysis
|
|
230
|
+
console.log(chalk.bold.green(`\n HOOL onboarding ready for: ${projectType}`));
|
|
231
|
+
console.log(chalk.dim(` Platform: ${platform}`));
|
|
232
|
+
console.log(chalk.dim(` Mode: ${mode}`));
|
|
233
|
+
console.log(chalk.dim(` MCPs: ${requiredMcps.join(', ')}`));
|
|
234
|
+
const onboardMessage = platform === 'claude-code'
|
|
235
|
+
? [
|
|
236
|
+
'',
|
|
237
|
+
' Next — start the onboarding analysis:',
|
|
238
|
+
' $ claude',
|
|
239
|
+
' > Read operations/current-phase.md and begin onboarding',
|
|
240
|
+
'',
|
|
241
|
+
' The Product Lead will scan your codebase, extract architecture,',
|
|
242
|
+
' infer a spec, and surface issues. You\'ll review before agents start.',
|
|
243
|
+
].join('\n')
|
|
244
|
+
: platform === 'cursor'
|
|
245
|
+
? [
|
|
246
|
+
'',
|
|
247
|
+
' Next — start the onboarding analysis:',
|
|
248
|
+
' 1. Open this project in Cursor',
|
|
249
|
+
' 2. Tell the agent: "Read operations/current-phase.md and begin onboarding"',
|
|
250
|
+
'',
|
|
251
|
+
' The agent will scan your codebase, extract docs, and present findings for review.',
|
|
252
|
+
].join('\n')
|
|
253
|
+
: [
|
|
254
|
+
'',
|
|
255
|
+
' Next — start the onboarding analysis:',
|
|
256
|
+
' 1. Open this project in your AI coding tool',
|
|
257
|
+
' 2. Load HOOL-INSTRUCTIONS.md',
|
|
258
|
+
' 3. Tell the agent: "Read operations/current-phase.md and begin onboarding"',
|
|
259
|
+
].join('\n');
|
|
260
|
+
console.log(onboardMessage);
|
|
261
|
+
console.log('');
|
|
262
|
+
});
|
|
131
263
|
// ── hool status ────────────────────────────────────────────
|
|
132
264
|
program
|
|
133
265
|
.command('status')
|
|
@@ -191,5 +323,47 @@ program
|
|
|
191
323
|
}
|
|
192
324
|
console.log(chalk.green('\n ✓ Operations and memory reset. Phase docs preserved.\n'));
|
|
193
325
|
});
|
|
326
|
+
// ── hool mode ─────────────────────────────────────────────
|
|
327
|
+
program
|
|
328
|
+
.command('mode')
|
|
329
|
+
.description('Show or switch execution mode (interactive / full-hool)')
|
|
330
|
+
.argument('[new-mode]', 'New mode to switch to (interactive or full-hool)')
|
|
331
|
+
.option('-d, --dir <path>', 'Project directory', '.')
|
|
332
|
+
.action(async (newMode, opts) => {
|
|
333
|
+
const projectDir = path.resolve(opts.dir);
|
|
334
|
+
const profilePath = path.join(projectDir, 'phases/00-init/project-profile.md');
|
|
335
|
+
const phasePath = path.join(projectDir, 'operations/current-phase.md');
|
|
336
|
+
try {
|
|
337
|
+
let profile = await fs.readFile(profilePath, 'utf-8');
|
|
338
|
+
const currentMode = profile.match(/\*\*Mode\*\*:\s*(\S+)/)?.[1] || 'unknown';
|
|
339
|
+
if (!newMode) {
|
|
340
|
+
console.log(chalk.bold(`\n Current mode: ${currentMode}\n`));
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
if (newMode !== 'interactive' && newMode !== 'full-hool') {
|
|
344
|
+
console.log(chalk.red(`\n Invalid mode: ${newMode}. Use "interactive" or "full-hool".\n`));
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
if (newMode === currentMode) {
|
|
348
|
+
console.log(chalk.dim(`\n Already in ${currentMode} mode.\n`));
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
// Update project-profile.md
|
|
352
|
+
profile = profile.replace(/(\*\*Mode\*\*:\s*)\S+/, `$1${newMode}`);
|
|
353
|
+
await fs.writeFile(profilePath, profile, 'utf-8');
|
|
354
|
+
// Update current-phase.md
|
|
355
|
+
try {
|
|
356
|
+
let phase = await fs.readFile(phasePath, 'utf-8');
|
|
357
|
+
phase = phase.replace(/(\*\*Mode\*\*:\s*)\S+/, `$1${newMode}`);
|
|
358
|
+
await fs.writeFile(phasePath, phase, 'utf-8');
|
|
359
|
+
}
|
|
360
|
+
catch { /* current-phase.md might not have mode yet */ }
|
|
361
|
+
console.log(chalk.green(`\n Mode switched: ${currentMode} -> ${newMode}`));
|
|
362
|
+
console.log(chalk.dim(` Updated: project-profile.md, current-phase.md\n`));
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
console.log(chalk.red('\n Not a HOOL project. Run `hool init` first.\n'));
|
|
366
|
+
}
|
|
367
|
+
});
|
|
194
368
|
program.parse();
|
|
195
369
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|