benjamin-docs 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 +63 -264
- package/dist/src/cli.js +39 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/info.js +15 -2
- package/dist/src/info.js.map +1 -1
- package/dist/src/install-skill.d.ts +44 -0
- package/dist/src/install-skill.js +112 -0
- package/dist/src/install-skill.js.map +1 -0
- package/package.json +1 -1
- package/skills/benjamin-docs/SKILL.md +2 -0
package/README.md
CHANGED
|
@@ -1,248 +1,99 @@
|
|
|
1
1
|
# benjamin-docs
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Local project memory for humans and AI agents.
|
|
4
4
|
|
|
5
|
-
`benjamin-docs` turns
|
|
5
|
+
`benjamin-docs` turns useful chats into project docs.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
It keeps decisions, plans, open questions, and handoff notes in Markdown files inside your project.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
No cloud. No dashboard. No transcript dump.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## What It Solves
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
AI work gets lost in chat history.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
You explain the same context again.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Future agents miss decisions.
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
- machine-readable metadata in `.benjamin-docs/`
|
|
21
|
-
- local validation before docs are shared or exported
|
|
22
|
-
- agent skill guidance so future sessions can update docs without drifting
|
|
19
|
+
Projects drift.
|
|
23
20
|
|
|
24
|
-
|
|
21
|
+
`benjamin-docs` gives the project a small local notebook that agents can keep up to date.
|
|
25
22
|
|
|
26
|
-
|
|
23
|
+
## Install
|
|
27
24
|
|
|
28
|
-
```
|
|
29
|
-
|
|
25
|
+
```bash
|
|
26
|
+
pnpm add -g benjamin-docs
|
|
27
|
+
benjamin-docs install-skill
|
|
28
|
+
benjamin-docs introduce
|
|
30
29
|
```
|
|
31
30
|
|
|
32
|
-
|
|
31
|
+
`install-skill` installs the bundled agent skill for common local tools:
|
|
33
32
|
|
|
34
33
|
```text
|
|
35
|
-
|
|
34
|
+
~/.agents/skills/benjamin-docs/
|
|
35
|
+
~/.codex/skills/benjamin-docs/
|
|
36
|
+
~/.claude/skills/benjamin-docs/
|
|
37
|
+
~/.cursor/skills/benjamin-docs/
|
|
36
38
|
```
|
|
37
39
|
|
|
38
|
-
After
|
|
40
|
+
Claude Desktop / Claude.ai uses uploaded skills. After install, upload:
|
|
39
41
|
|
|
40
42
|
```text
|
|
41
|
-
|
|
42
|
-
benjamin-docs/
|
|
43
|
-
.benjamin-docs/
|
|
43
|
+
~/.claude/skills/benjamin-docs/
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
## For Non-Programmers
|
|
49
|
-
|
|
50
|
-
You can use `benjamin-docs` even if you are planning an app, product, service, or creative project before any code exists.
|
|
51
|
-
|
|
52
|
-
Think of it as a project notebook that your AI agent keeps inside your project folder. The agent does the writing; the CLI creates the folders, checks that the notes are valid, and gives the next prompt to use.
|
|
46
|
+
## Use It From Any Chat
|
|
53
47
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- a place on your computer where the agent can create a project folder, such as `~/Documents/Benjamin Docs/Project Name`
|
|
57
|
-
- an AI coding agent that can run terminal commands and edit files
|
|
58
|
-
- the `benjamin-docs` CLI installed with pnpm, or a local source checkout while developing
|
|
59
|
-
|
|
60
|
-
If all you have is the current chat, start by asking your agent:
|
|
48
|
+
If you only have a chat and no project folder yet, ask your agent:
|
|
61
49
|
|
|
62
50
|
```text
|
|
63
|
-
Use benjamin-docs to create a project from this chat.
|
|
64
|
-
Suggest ~/Documents/Benjamin Docs/<Project Name> as the folder,
|
|
65
|
-
initialize it as a planning-only project, write a simple top-level README.md,
|
|
66
|
-
then capture the current context in plain language.
|
|
51
|
+
Use the benjamin-docs skill to create a project from this chat.
|
|
67
52
|
```
|
|
68
53
|
|
|
69
|
-
|
|
54
|
+
The agent should suggest:
|
|
70
55
|
|
|
71
56
|
```text
|
|
72
|
-
|
|
73
|
-
and handoff. Explain what each file is for.
|
|
57
|
+
~/Documents/Benjamin Docs/<Project Name>
|
|
74
58
|
```
|
|
75
59
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
## Create A Project From A Chat
|
|
79
|
-
|
|
80
|
-
This is the simplest first use case: you do not have a repo, codebase, or project folder yet. You only have a useful conversation.
|
|
81
|
-
|
|
82
|
-
Ask your agent:
|
|
60
|
+
After you confirm, it creates a local project with:
|
|
83
61
|
|
|
84
62
|
```text
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
and turn this conversation into a project brief, roadmap, open questions,
|
|
89
|
-
and handoff.
|
|
63
|
+
README.md
|
|
64
|
+
benjamin-docs/
|
|
65
|
+
.benjamin-docs/
|
|
90
66
|
```
|
|
91
67
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
- infer a human-readable project name when the chat makes one obvious
|
|
95
|
-
- suggest `~/Documents/Benjamin Docs/<Project Name>` as the default location
|
|
96
|
-
- ask for confirmation before creating files
|
|
97
|
-
- summarize what it will capture in short bullets
|
|
98
|
-
- create the project folder
|
|
99
|
-
- run `benjamin-docs init --mode planning` inside that folder
|
|
100
|
-
- write a top-level `README.md` that explains what the project is and where to start
|
|
101
|
-
- update the Benjamin docs under `benjamin-docs/` from the chat context
|
|
102
|
-
- run `benjamin-docs validate`
|
|
103
|
-
- show you what was created and what is still uncertain
|
|
104
|
-
|
|
105
|
-
The CLI creates and validates the docs workspace. The agent turns the chat into useful project memory.
|
|
68
|
+
## Use It In An Existing Project
|
|
106
69
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
Install globally with pnpm:
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
pnpm add -g benjamin-docs
|
|
113
|
-
benjamin-docs introduce
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Initialize docs in the current project folder:
|
|
70
|
+
From the project folder:
|
|
117
71
|
|
|
118
72
|
```bash
|
|
119
73
|
benjamin-docs init
|
|
120
|
-
benjamin-docs status
|
|
121
74
|
benjamin-docs validate
|
|
122
75
|
```
|
|
123
76
|
|
|
124
|
-
|
|
77
|
+
Then ask your agent:
|
|
125
78
|
|
|
126
|
-
```
|
|
127
|
-
benjamin-docs
|
|
79
|
+
```text
|
|
80
|
+
Capture the current project baseline with benjamin-docs.
|
|
128
81
|
```
|
|
129
82
|
|
|
130
|
-
In an interactive terminal, `init` asks what you are setting up. In scripts or agent workflows, pass a mode explicitly.
|
|
131
|
-
|
|
132
83
|
For an existing codebase:
|
|
133
84
|
|
|
134
85
|
```bash
|
|
135
86
|
benjamin-docs init --mode codebase
|
|
136
|
-
benjamin-docs validate
|
|
137
87
|
```
|
|
138
88
|
|
|
139
|
-
For
|
|
89
|
+
For one feature:
|
|
140
90
|
|
|
141
91
|
```bash
|
|
142
92
|
benjamin-docs init --mode feature --feature billing-reminders
|
|
143
|
-
benjamin-docs validate
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
If you prefer a project-local dev dependency:
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
cd /path/to/your-project
|
|
150
|
-
pnpm add -D benjamin-docs
|
|
151
|
-
pnpm exec benjamin-docs init
|
|
152
|
-
pnpm exec benjamin-docs validate
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
## Install The Agent Skill Locally
|
|
156
|
-
|
|
157
|
-
The skill teaches an agent how to capture planning/build conversations into the docs created by the CLI.
|
|
158
|
-
|
|
159
|
-
For Codex local skills:
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
|
-
mkdir -p ~/.codex/skills/benjamin-docs
|
|
163
|
-
cp skills/benjamin-docs/SKILL.md ~/.codex/skills/benjamin-docs/SKILL.md
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
Then ask your agent:
|
|
167
|
-
|
|
168
|
-
```text
|
|
169
|
-
Capture this conversation with benjamin-docs.
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
For a first planning session, a clearer prompt is:
|
|
173
|
-
|
|
174
|
-
```text
|
|
175
|
-
Use the benjamin-docs skill.
|
|
176
|
-
If there is no project folder yet, ask me where to create one.
|
|
177
|
-
Suggest ~/Documents/Benjamin Docs/<Project Name> by default.
|
|
178
|
-
Initialize it as a planning-only project, add a simple README.md,
|
|
179
|
-
and capture what we know, what we decided, what is still unclear,
|
|
180
|
-
and what I should do next. Keep it understandable for a non-technical reader.
|
|
181
93
|
```
|
|
182
94
|
|
|
183
|
-
## Local Development
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
git clone https://github.com/msiksnis/benjamin-docs.git
|
|
187
|
-
cd benjamin-docs
|
|
188
|
-
pnpm install
|
|
189
|
-
pnpm build
|
|
190
|
-
node dist/src/cli.js introduce
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
To test the source CLI inside another local project without installing the package:
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
cd /path/to/your-project
|
|
197
|
-
node /path/to/benjamin-docs/dist/src/cli.js init
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
## Checks
|
|
201
|
-
|
|
202
|
-
```bash
|
|
203
|
-
pnpm check
|
|
204
|
-
node dist/src/cli.js validate
|
|
205
|
-
npm pack --dry-run
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
Before publishing:
|
|
209
|
-
|
|
210
|
-
```bash
|
|
211
|
-
pnpm run release:check
|
|
212
|
-
pnpm publish
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## Common Commands
|
|
216
|
-
|
|
217
|
-
```bash
|
|
218
|
-
benjamin-docs introduce
|
|
219
|
-
benjamin-docs help
|
|
220
|
-
benjamin-docs --version
|
|
221
|
-
benjamin-docs init
|
|
222
|
-
benjamin-docs init --mode codebase
|
|
223
|
-
benjamin-docs init --mode feature --feature booking-capacity
|
|
224
|
-
benjamin-docs next
|
|
225
|
-
benjamin-docs status
|
|
226
|
-
benjamin-docs validate
|
|
227
|
-
benjamin-docs scope create feature booking-capacity
|
|
228
|
-
benjamin-docs anchor add booking-capacity-rules src/features/booking/capacity.ts
|
|
229
|
-
benjamin-docs export --audience developer
|
|
230
|
-
benjamin-docs promote --to codebase
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
In a source checkout, use `node dist/src/cli.js ...` after `pnpm build`.
|
|
234
|
-
|
|
235
95
|
## What It Creates
|
|
236
96
|
|
|
237
|
-
```text
|
|
238
|
-
benjamin-docs/
|
|
239
|
-
.benjamin-docs/
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
`benjamin-docs/` contains human-readable Markdown. `.benjamin-docs/` contains machine metadata for validation, exports, anchors, and future publishing.
|
|
243
|
-
|
|
244
|
-
The default workspace is:
|
|
245
|
-
|
|
246
97
|
```text
|
|
247
98
|
benjamin-docs/
|
|
248
99
|
project/
|
|
@@ -250,103 +101,51 @@ benjamin-docs/
|
|
|
250
101
|
engineering/
|
|
251
102
|
features/
|
|
252
103
|
releases/
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
Existing project docs in `docs/` are left alone. They may be useful context, but they are not the Benjamin-managed workspace unless `.benjamin-docs/config.json` explicitly says so.
|
|
256
|
-
|
|
257
|
-
## Agent Workflow
|
|
258
|
-
|
|
259
|
-
The CLI owns structure and validation. Codex or Claude skills own synthesis from the current conversation.
|
|
260
|
-
|
|
261
|
-
Ask your agent:
|
|
262
|
-
|
|
263
|
-
```text
|
|
264
|
-
Capture this conversation with benjamin-docs.
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
The agent should update the relevant docs, run validation, and report what changed.
|
|
268
104
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
```text
|
|
272
|
-
Use benjamin-docs to create a project from this chat.
|
|
273
|
-
Suggest ~/Documents/Benjamin Docs/<Project Name>, then initialize it and capture the project.
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
```text
|
|
277
|
-
Capture this planning conversation with benjamin-docs.
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
```text
|
|
281
|
-
Capture the current project baseline with benjamin-docs.
|
|
282
|
-
Read the existing docs and codebase, then update the Benjamin docs
|
|
283
|
-
under benjamin-docs/. Mark uncertain items.
|
|
105
|
+
.benjamin-docs/
|
|
284
106
|
```
|
|
285
107
|
|
|
286
|
-
|
|
287
|
-
Create a benjamin-docs feature scope for billing-reminders
|
|
288
|
-
and capture the plan, decisions, risks, and handoff.
|
|
289
|
-
```
|
|
108
|
+
`benjamin-docs/` is for people and agents.
|
|
290
109
|
|
|
291
|
-
|
|
110
|
+
`.benjamin-docs/` is metadata for validation, scopes, anchors, and exports.
|
|
292
111
|
|
|
293
|
-
|
|
112
|
+
Existing `docs/` folders are left alone unless you explicitly configure otherwise.
|
|
294
113
|
|
|
295
|
-
|
|
114
|
+
## Useful Commands
|
|
296
115
|
|
|
297
116
|
```bash
|
|
298
|
-
benjamin-docs
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
For an existing codebase:
|
|
308
|
-
|
|
309
|
-
```bash
|
|
310
|
-
benjamin-docs init --mode codebase
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
```text
|
|
314
|
-
Capture the current codebase baseline with benjamin-docs.
|
|
315
|
-
Read the README, package/config files, existing docs, and major source areas.
|
|
316
|
-
Update the project, engineering, and handoff docs under benjamin-docs/.
|
|
317
|
-
Include important code references, risks, and uncertain findings.
|
|
117
|
+
benjamin-docs introduce
|
|
118
|
+
benjamin-docs install-skill
|
|
119
|
+
benjamin-docs init
|
|
120
|
+
benjamin-docs next
|
|
121
|
+
benjamin-docs status
|
|
122
|
+
benjamin-docs validate
|
|
123
|
+
benjamin-docs scope create feature <slug>
|
|
124
|
+
benjamin-docs export --audience developer
|
|
318
125
|
```
|
|
319
126
|
|
|
320
|
-
|
|
127
|
+
## Local Development
|
|
321
128
|
|
|
322
129
|
```bash
|
|
323
|
-
benjamin-docs
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
Capture the billing-reminders feature with benjamin-docs.
|
|
328
|
-
Update the feature brief, plan, decisions, and handoff.
|
|
329
|
-
Include user goals, constraints, rejected options, test ideas, and next actions.
|
|
130
|
+
git clone https://github.com/msiksnis/benjamin-docs.git
|
|
131
|
+
cd benjamin-docs
|
|
132
|
+
pnpm install
|
|
133
|
+
pnpm check
|
|
330
134
|
```
|
|
331
135
|
|
|
332
|
-
|
|
136
|
+
Before publishing:
|
|
333
137
|
|
|
334
138
|
```bash
|
|
335
|
-
|
|
139
|
+
pnpm run release:check
|
|
140
|
+
pnpm publish
|
|
336
141
|
```
|
|
337
142
|
|
|
338
|
-
## Design Boundaries
|
|
339
|
-
|
|
340
|
-
- The repo-local docs are the source of truth.
|
|
341
|
-
- The CLI should stay deterministic and dependency-light.
|
|
342
|
-
- Ordinary local commands should not make network calls.
|
|
343
|
-
- Existing docs in a repo should not be overwritten.
|
|
344
|
-
- Hosted publishing, auth, comments, and web editing are future layers.
|
|
345
|
-
|
|
346
143
|
## Contributing
|
|
347
144
|
|
|
348
|
-
|
|
145
|
+
Keep it local-first.
|
|
146
|
+
|
|
147
|
+
Keep docs readable by non-programmers.
|
|
349
148
|
|
|
350
|
-
|
|
149
|
+
Keep agent workflows explicit.
|
|
351
150
|
|
|
352
|
-
|
|
151
|
+
Avoid magic that writes outside the project unless the user runs a clear command.
|
package/dist/src/cli.js
CHANGED
|
@@ -5,6 +5,7 @@ import { addAnchor } from "./anchors.js";
|
|
|
5
5
|
import { exportAudience } from "./export.js";
|
|
6
6
|
import { initProject, promoteToCodebase } from "./init.js";
|
|
7
7
|
import { getHelpText, getIntroductionText, getPackageVersion } from "./info.js";
|
|
8
|
+
import { formatInstallSkillResult, installSkill, knownSkillTargets } from "./install-skill.js";
|
|
8
9
|
import { formatNextMessage, getNextPrompt } from "./next.js";
|
|
9
10
|
import { createScope } from "./scopes.js";
|
|
10
11
|
import { getStatus } from "./status.js";
|
|
@@ -23,6 +24,12 @@ export async function main(argv = process.argv.slice(2), cwd = process.cwd()) {
|
|
|
23
24
|
console.log(getIntroductionText());
|
|
24
25
|
return 0;
|
|
25
26
|
}
|
|
27
|
+
if (command === "install-skill") {
|
|
28
|
+
const options = parseInstallSkillArgs(argv.slice(1));
|
|
29
|
+
const result = installSkill(options);
|
|
30
|
+
console.log(formatInstallSkillResult(result));
|
|
31
|
+
return 0;
|
|
32
|
+
}
|
|
26
33
|
if (command === "init") {
|
|
27
34
|
const options = await resolveInitOptions(argv.slice(1));
|
|
28
35
|
const result = initProject(cwd, options);
|
|
@@ -150,6 +157,38 @@ function parseSetup(value) {
|
|
|
150
157
|
return "feature";
|
|
151
158
|
throw new Error("Usage: benjamin-docs init --mode <planning|codebase|feature>");
|
|
152
159
|
}
|
|
160
|
+
function parseInstallSkillArgs(args) {
|
|
161
|
+
const options = {};
|
|
162
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
163
|
+
const arg = args[index];
|
|
164
|
+
if (arg === "--dry-run") {
|
|
165
|
+
options.dryRun = true;
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
if (arg === "--target") {
|
|
169
|
+
const value = args[index + 1];
|
|
170
|
+
if (!value)
|
|
171
|
+
throw new Error(`Usage: benjamin-docs install-skill --target <all|${knownSkillTargets().map((target) => target.id).join("|")}>`);
|
|
172
|
+
options.target = parseSkillTarget(value);
|
|
173
|
+
index += 1;
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
throw new Error(`Unknown install-skill option: ${arg}`);
|
|
177
|
+
}
|
|
178
|
+
return options;
|
|
179
|
+
}
|
|
180
|
+
function parseSkillTarget(value) {
|
|
181
|
+
if (value === "all")
|
|
182
|
+
return "all";
|
|
183
|
+
if (value === "shared")
|
|
184
|
+
return "agents";
|
|
185
|
+
if (value === "claude")
|
|
186
|
+
return "claude-code";
|
|
187
|
+
const ids = knownSkillTargets().map((target) => target.id);
|
|
188
|
+
if (ids.includes(value))
|
|
189
|
+
return value;
|
|
190
|
+
throw new Error(`Usage: benjamin-docs install-skill --target <all|${ids.join("|")}>`);
|
|
191
|
+
}
|
|
153
192
|
async function promptForInitOptions() {
|
|
154
193
|
const choices = [
|
|
155
194
|
{ label: "Planning a new project", setup: "project" },
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/info.js
CHANGED
|
@@ -20,7 +20,7 @@ export function getHelpText() {
|
|
|
20
20
|
"",
|
|
21
21
|
"If you are here with an AI agent:",
|
|
22
22
|
" 1. Run: benjamin-docs introduce",
|
|
23
|
-
" 2. If you only have a chat, ask the
|
|
23
|
+
" 2. If you only have a chat, ask: Use the benjamin-docs skill to create a project from this chat.",
|
|
24
24
|
" A good default is ~/Documents/Benjamin Docs/<Project Name>.",
|
|
25
25
|
" 3. Otherwise run: benjamin-docs init",
|
|
26
26
|
" 4. Ask: Capture the current project baseline with benjamin-docs in plain language.",
|
|
@@ -28,6 +28,7 @@ export function getHelpText() {
|
|
|
28
28
|
"Common commands:",
|
|
29
29
|
" benjamin-docs --version",
|
|
30
30
|
" benjamin-docs introduce",
|
|
31
|
+
" benjamin-docs install-skill",
|
|
31
32
|
" benjamin-docs init",
|
|
32
33
|
" benjamin-docs init --mode codebase",
|
|
33
34
|
" benjamin-docs init --mode feature --feature booking-capacity",
|
|
@@ -41,6 +42,7 @@ export function getHelpText() {
|
|
|
41
42
|
"",
|
|
42
43
|
"Start here:",
|
|
43
44
|
" benjamin-docs introduce",
|
|
45
|
+
" benjamin-docs install-skill",
|
|
44
46
|
" benjamin-docs init",
|
|
45
47
|
" benjamin-docs next",
|
|
46
48
|
].join("\n");
|
|
@@ -57,7 +59,18 @@ export function getIntroductionText() {
|
|
|
57
59
|
"",
|
|
58
60
|
"Your docs are not uploaded or published by the CLI. The repo-local docs are the source of truth.",
|
|
59
61
|
"",
|
|
60
|
-
"
|
|
62
|
+
"The CLI creates and validates the local docs workspace. The benjamin-docs skill teaches your agent how to turn chat context into useful docs.",
|
|
63
|
+
"",
|
|
64
|
+
"Install or update the skill for Codex, Cursor, and Claude Code with:",
|
|
65
|
+
"",
|
|
66
|
+
"benjamin-docs install-skill",
|
|
67
|
+
"",
|
|
68
|
+
"If you only have a chat, paste this into your AI chat:",
|
|
69
|
+
"",
|
|
70
|
+
"Use the benjamin-docs skill to create a project from this chat.",
|
|
71
|
+
"Suggest ~/Documents/Benjamin Docs/<Project Name> unless I choose a different place.",
|
|
72
|
+
"",
|
|
73
|
+
"A good default location is ~/Documents/Benjamin Docs/<Project Name>.",
|
|
61
74
|
"",
|
|
62
75
|
"If you already have a project folder, ask your AI agent to run `benjamin-docs init`, then capture the current project baseline in plain language.",
|
|
63
76
|
].join("\n");
|
package/dist/src/info.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAwB,CAAC;IACjF,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,eAAe;QACf,EAAE;QACF,qDAAqD;QACrD,EAAE;QACF,eAAe;QACf,mDAAmD;QACnD,gGAAgG;QAChG,2DAA2D;QAC3D,EAAE;QACF,mCAAmC;QACnC,mCAAmC;QACnC,
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAwB,CAAC;IACjF,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,eAAe;QACf,EAAE;QACF,qDAAqD;QACrD,EAAE;QACF,eAAe;QACf,mDAAmD;QACnD,gGAAgG;QAChG,2DAA2D;QAC3D,EAAE;QACF,mCAAmC;QACnC,mCAAmC;QACnC,oGAAoG;QACpG,kEAAkE;QAClE,wCAAwC;QACxC,sFAAsF;QACtF,EAAE;QACF,kBAAkB;QAClB,2BAA2B;QAC3B,2BAA2B;QAC3B,+BAA+B;QAC/B,sBAAsB;QACtB,sCAAsC;QACtC,gEAAgE;QAChE,sBAAsB;QACtB,wBAAwB;QACxB,0BAA0B;QAC1B,uDAAuD;QACvD,oFAAoF;QACpF,6CAA6C;QAC7C,uCAAuC;QACvC,EAAE;QACF,aAAa;QACb,2BAA2B;QAC3B,+BAA+B;QAC/B,sBAAsB;QACtB,sBAAsB;KACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,mFAAmF;QACnF,EAAE;QACF,0GAA0G;QAC1G,EAAE;QACF,2JAA2J;QAC3J,EAAE;QACF,0HAA0H;QAC1H,EAAE;QACF,kGAAkG;QAClG,EAAE;QACF,+IAA+I;QAC/I,EAAE;QACF,sEAAsE;QACtE,EAAE;QACF,6BAA6B;QAC7B,EAAE;QACF,wDAAwD;QACxD,EAAE;QACF,iEAAiE;QACjE,qFAAqF;QACrF,EAAE;QACF,sEAAsE;QACtE,EAAE;QACF,mJAAmJ;KACpJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export declare const SKILL_NAME = "benjamin-docs";
|
|
2
|
+
declare const TARGETS: readonly [{
|
|
3
|
+
readonly id: "agents";
|
|
4
|
+
readonly label: "Shared Agent Skills";
|
|
5
|
+
readonly relativePath: ".agents/skills/benjamin-docs/SKILL.md";
|
|
6
|
+
}, {
|
|
7
|
+
readonly id: "codex";
|
|
8
|
+
readonly label: "Codex";
|
|
9
|
+
readonly relativePath: ".codex/skills/benjamin-docs/SKILL.md";
|
|
10
|
+
}, {
|
|
11
|
+
readonly id: "claude-code";
|
|
12
|
+
readonly label: "Claude Code";
|
|
13
|
+
readonly relativePath: ".claude/skills/benjamin-docs/SKILL.md";
|
|
14
|
+
}, {
|
|
15
|
+
readonly id: "cursor";
|
|
16
|
+
readonly label: "Cursor";
|
|
17
|
+
readonly relativePath: ".cursor/skills/benjamin-docs/SKILL.md";
|
|
18
|
+
}];
|
|
19
|
+
export type SkillTargetId = (typeof TARGETS)[number]["id"] | "all";
|
|
20
|
+
export type InstallSkillStatus = "installed" | "updated" | "unchanged" | "would-install" | "would-update" | "would-keep";
|
|
21
|
+
export interface InstallSkillOptions {
|
|
22
|
+
homeDir?: string;
|
|
23
|
+
target?: SkillTargetId;
|
|
24
|
+
dryRun?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface InstallSkillResult {
|
|
27
|
+
skillSourcePath: string;
|
|
28
|
+
homeDir: string;
|
|
29
|
+
dryRun: boolean;
|
|
30
|
+
targets: Array<{
|
|
31
|
+
id: Exclude<SkillTargetId, "all">;
|
|
32
|
+
label: string;
|
|
33
|
+
path: string;
|
|
34
|
+
status: InstallSkillStatus;
|
|
35
|
+
}>;
|
|
36
|
+
}
|
|
37
|
+
export declare function installSkill(options?: InstallSkillOptions): InstallSkillResult;
|
|
38
|
+
export declare function formatInstallSkillResult(result: InstallSkillResult): string;
|
|
39
|
+
export declare function knownSkillTargets(): Array<{
|
|
40
|
+
id: Exclude<SkillTargetId, "all">;
|
|
41
|
+
label: string;
|
|
42
|
+
relativePath: string;
|
|
43
|
+
}>;
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join, relative, resolve, sep } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
export const SKILL_NAME = "benjamin-docs";
|
|
6
|
+
const TARGETS = [
|
|
7
|
+
{
|
|
8
|
+
id: "agents",
|
|
9
|
+
label: "Shared Agent Skills",
|
|
10
|
+
relativePath: `.agents/skills/${SKILL_NAME}/SKILL.md`,
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
id: "codex",
|
|
14
|
+
label: "Codex",
|
|
15
|
+
relativePath: `.codex/skills/${SKILL_NAME}/SKILL.md`,
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
id: "claude-code",
|
|
19
|
+
label: "Claude Code",
|
|
20
|
+
relativePath: `.claude/skills/${SKILL_NAME}/SKILL.md`,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: "cursor",
|
|
24
|
+
label: "Cursor",
|
|
25
|
+
relativePath: `.cursor/skills/${SKILL_NAME}/SKILL.md`,
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export function installSkill(options = {}) {
|
|
29
|
+
const homeDir = resolve(options.homeDir ?? process.env.BENJAMIN_DOCS_HOME ?? homedir());
|
|
30
|
+
const target = options.target ?? "all";
|
|
31
|
+
const skillSourcePath = getBundledSkillPath();
|
|
32
|
+
const skill = readFileSync(skillSourcePath, "utf8");
|
|
33
|
+
const targets = resolveTargets(target).map((entry) => {
|
|
34
|
+
const destination = resolveSkillPath(homeDir, entry.relativePath);
|
|
35
|
+
const existing = readExistingSkill(destination);
|
|
36
|
+
const status = statusFor(existing, skill, options.dryRun === true);
|
|
37
|
+
if (!options.dryRun && existing !== skill) {
|
|
38
|
+
mkdirSync(dirname(destination), { recursive: true });
|
|
39
|
+
writeFileSync(destination, skill, "utf8");
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
id: entry.id,
|
|
43
|
+
label: entry.label,
|
|
44
|
+
path: destination,
|
|
45
|
+
status,
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
return { skillSourcePath, homeDir, dryRun: options.dryRun === true, targets };
|
|
49
|
+
}
|
|
50
|
+
export function formatInstallSkillResult(result) {
|
|
51
|
+
const verb = result.dryRun ? "Skill install plan" : "Installed benjamin-docs skill";
|
|
52
|
+
const lines = [verb, ""];
|
|
53
|
+
for (const target of result.targets) {
|
|
54
|
+
lines.push(`${target.status.padEnd(13)} ${target.label.padEnd(19)} ${formatHomePath(result.homeDir, target.path)}`);
|
|
55
|
+
}
|
|
56
|
+
lines.push("");
|
|
57
|
+
lines.push("Claude Desktop / Claude.ai:");
|
|
58
|
+
lines.push(` Upload the ${SKILL_NAME} skill folder through Claude's Skills UI.`);
|
|
59
|
+
lines.push(` After this command, use: ${formatHomePath(result.homeDir, resolve(dirname(result.targets.find((target) => target.id === "claude-code")?.path ?? join(result.homeDir, ".claude/skills", SKILL_NAME, "SKILL.md"))))}`);
|
|
60
|
+
lines.push("");
|
|
61
|
+
lines.push("Then ask your agent:");
|
|
62
|
+
lines.push(` Use the ${SKILL_NAME} skill to create a project from this chat.`);
|
|
63
|
+
return lines.join("\n");
|
|
64
|
+
}
|
|
65
|
+
export function knownSkillTargets() {
|
|
66
|
+
return TARGETS.map((target) => ({ ...target }));
|
|
67
|
+
}
|
|
68
|
+
function getBundledSkillPath() {
|
|
69
|
+
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
70
|
+
return join(currentDir, "..", "..", "skills", SKILL_NAME, "SKILL.md");
|
|
71
|
+
}
|
|
72
|
+
function resolveTargets(target) {
|
|
73
|
+
if (target === "all")
|
|
74
|
+
return [...TARGETS];
|
|
75
|
+
const resolved = TARGETS.find((entry) => entry.id === target);
|
|
76
|
+
if (!resolved)
|
|
77
|
+
throw new Error(`Unknown skill target: ${target}`);
|
|
78
|
+
return [resolved];
|
|
79
|
+
}
|
|
80
|
+
function resolveSkillPath(homeDir, relativePath) {
|
|
81
|
+
const destination = resolve(homeDir, relativePath);
|
|
82
|
+
const relativePathFromHome = relative(homeDir, destination);
|
|
83
|
+
if (relativePathFromHome === ".." || relativePathFromHome.startsWith(`..${sep}`) || relativePathFromHome === "" || relativePathFromHome.startsWith("/")) {
|
|
84
|
+
throw new Error(`Refusing to install skill outside home directory: ${relativePath}`);
|
|
85
|
+
}
|
|
86
|
+
return destination;
|
|
87
|
+
}
|
|
88
|
+
function readExistingSkill(path) {
|
|
89
|
+
try {
|
|
90
|
+
return readFileSync(path, "utf8");
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (error && typeof error === "object" && "code" in error && error.code === "ENOENT")
|
|
94
|
+
return undefined;
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function statusFor(existing, next, dryRun) {
|
|
99
|
+
if (existing === undefined)
|
|
100
|
+
return dryRun ? "would-install" : "installed";
|
|
101
|
+
if (existing === next)
|
|
102
|
+
return dryRun ? "would-keep" : "unchanged";
|
|
103
|
+
return dryRun ? "would-update" : "updated";
|
|
104
|
+
}
|
|
105
|
+
function formatHomePath(homeDir, path) {
|
|
106
|
+
const relativePathFromHome = relative(homeDir, path);
|
|
107
|
+
if (relativePathFromHome && !relativePathFromHome.startsWith(`..${sep}`) && relativePathFromHome !== "..") {
|
|
108
|
+
return `~/${relativePathFromHome}`;
|
|
109
|
+
}
|
|
110
|
+
return path;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=install-skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-skill.js","sourceRoot":"","sources":["../../src/install-skill.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -7,6 +7,8 @@ description: Capture planning and build conversations into repo-local project me
|
|
|
7
7
|
|
|
8
8
|
Use this skill when the user asks to capture, document, summarize, hand off, export, preserve a planning or development conversation, or create a project from a chat with `benjamin-docs`.
|
|
9
9
|
|
|
10
|
+
If the user says "Use the benjamin-docs skill to create a project from this chat" or similar, start the Chat-To-Project Workflow directly.
|
|
11
|
+
|
|
10
12
|
## Purpose
|
|
11
13
|
|
|
12
14
|
`benjamin-docs` turns long-running project conversations into durable Markdown docs inside a project folder. It is useful when the user only has a chat, before code exists, inside existing codebases, and for individual feature scopes.
|