@maoleijin/dsh-mattpocock-skills 0.1.0 → 0.2.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/README.md +3 -3
- package/docs/installation.md +5 -5
- package/overlay/patches.json +46 -17
- package/overlay/skills/dsh-workflow/dsh-workflow/DSH-MAPPING.md +3 -3
- package/overlay/skills/dsh-workflow/dsh-workflow/SKILL.md +6 -6
- package/overlay/skills/dsh-workflow/dsh-workflow/SKILLS.md +5 -4
- package/package.json +20 -20
- package/scripts/install-web.bat +1 -1
- package/skills/engineering/ask-matt/SKILL.md +16 -9
- package/skills/engineering/code-review/SKILL.md +5 -3
- package/skills/engineering/codebase-design/DESIGN-IT-TWICE.md +1 -1
- package/skills/engineering/diagnosing-bugs/SKILL.md +2 -2
- package/skills/engineering/domain-modeling/{CONTEXT-FORMAT.md → GLOSSARY-FORMAT.md} +10 -10
- package/skills/engineering/domain-modeling/SKILL.md +12 -12
- package/skills/engineering/implement/SKILL.md +4 -2
- package/skills/engineering/implement-spec/SKILL.md +40 -0
- package/skills/{in-progress → engineering}/implement-spec/agents/openai.yaml +1 -1
- package/skills/engineering/improve-codebase-architecture/SKILL.md +5 -5
- package/skills/engineering/pr/CREDITS.md +3 -0
- package/skills/engineering/pr/SKILL.md +170 -0
- package/skills/engineering/pr/agents/openai.yaml +3 -0
- package/skills/engineering/setup-matt-pocock-skills/SKILL.md +6 -4
- package/skills/engineering/setup-matt-pocock-skills/domain.md +8 -8
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-github.md +5 -4
- package/skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/skills/engineering/setup-matt-pocock-skills/triage-labels.md +1 -1
- package/skills/engineering/tdd/SKILL.md +2 -2
- package/skills/engineering/to-tickets/SKILL.md +2 -2
- package/skills/engineering/triage/SKILL.md +1 -1
- package/skills/engineering/wayfinder/SKILL.md +4 -4
- package/skills/engineering/wizard/template.sh +42 -23
- package/skills/in-progress/chief-of-staff/SKILL.md +45 -0
- package/skills/in-progress/chief-of-staff/agents/openai.yaml +5 -0
- package/skills/in-progress/claude-handoff/SKILL.md +1 -1
- package/skills/productivity/grilling/SKILL.md +2 -0
- package/skills/productivity/handoff/SKILL.md +1 -1
- package/skills/productivity/teach/SKILL.md +2 -2
- package/skills/productivity/wait-what/SKILL.md +1 -1
- package/test/bundle.test.js +23 -22
- package/vendor/VENDOR.md +8 -7
- package/vendor/skills.manifest.json +67 -54
- package/vendor/vendor-skills.mjs +64 -64
- package/skills/engineering/resolving-merge-conflicts/SKILL.md +0 -14
- package/skills/engineering/resolving-merge-conflicts/agents/openai.yaml +0 -3
- package/skills/in-progress/implement-spec/SKILL.md +0 -35
- /package/skills/{in-progress → engineering}/retro/SKILL.md +0 -0
- /package/skills/{in-progress → engineering}/retro/agents/openai.yaml +0 -0
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## What this package provides
|
|
6
6
|
|
|
7
|
-
- All
|
|
7
|
+
- All 38 skills currently present upstream, plus the `dsh-workflow` guide.
|
|
8
8
|
- A read-only `ctx.skills` provider with lazy loading and invocation-policy preservation.
|
|
9
9
|
- DSH adaptations applied in memory while vendored upstream files remain byte-identical.
|
|
10
10
|
- Exact-match validation: changed upstream wording fails instead of silently producing a partial adaptation.
|
|
@@ -28,13 +28,13 @@ npx --yes @deepseek-ai/dsh --profile web --dump-config | Select-String "mattpoco
|
|
|
28
28
|
|
|
29
29
|
### DSH Desktop
|
|
30
30
|
|
|
31
|
-
DSH Desktop exclusively manages its profile
|
|
31
|
+
DSH Desktop exclusively manages its profile through three catalog-oriented pages: plugin configuration, installed plugins, and the plugin market. It does not expose an arbitrary npm-package input. After this package is accepted into the configured market catalog, open **Plugin Market**, search for the package below, inspect the preview, and confirm installation:
|
|
32
32
|
|
|
33
33
|
```text
|
|
34
34
|
@maoleijin/dsh-mattpocock-skills
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
Completely quit and reopen DSH Desktop, then start a new session.
|
|
37
|
+
Completely quit and reopen DSH Desktop, then start a new session. Until the market entry is indexed, use the Web profile; publishing to npm alone does not make a package appear in Desktop's market.
|
|
38
38
|
|
|
39
39
|
See [docs/installation.md](docs/installation.md) or run [scripts/install-web.bat](scripts/install-web.bat) on Windows.
|
|
40
40
|
|
package/docs/installation.md
CHANGED
|
@@ -24,17 +24,17 @@ Restart `dsh web`, refresh the client, and create a new session.
|
|
|
24
24
|
|
|
25
25
|
## Desktop profile
|
|
26
26
|
|
|
27
|
-
The CLI cannot modify the Desktop-managed profile.
|
|
27
|
+
The CLI cannot modify the Desktop-managed profile, and Desktop does not expose an arbitrary package-name field. Its plugin market installs only catalog entries. After this package has been accepted and indexed by the configured market:
|
|
28
28
|
|
|
29
29
|
1. Open the plugin-management window.
|
|
30
|
-
2.
|
|
31
|
-
3.
|
|
30
|
+
2. Search for `@maoleijin/dsh-mattpocock-skills`.
|
|
31
|
+
3. Open its market card.
|
|
32
32
|
4. Wait for the registry preview and verify the exact package name and version.
|
|
33
33
|
5. Confirm installation.
|
|
34
34
|
6. Completely quit and reopen DSH Desktop.
|
|
35
35
|
7. Create a new session and invoke `/dsh-workflow`.
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
Publishing to npm is necessary but not sufficient: the package must also be listed by the market's upstream catalog before this search can find it.
|
|
38
38
|
|
|
39
39
|
## Windows helper
|
|
40
40
|
|
|
@@ -48,4 +48,4 @@ Web profile:
|
|
|
48
48
|
npx --yes @deepseek-ai/dsh plugin --profile web update @maoleijin/dsh-mattpocock-skills
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
For Desktop, use the update action in its plugin
|
|
51
|
+
For Desktop, use the update action in its plugin list after the package has been installed from the market. Restart and create a new session after upgrading.
|
package/overlay/patches.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schema": "dsh-mattpocock-skills/overlay@1",
|
|
3
3
|
"upstream": {
|
|
4
4
|
"repository": "https://github.com/mattpocock/skills",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.3.1"
|
|
6
6
|
},
|
|
7
7
|
"$comment": [
|
|
8
8
|
"DSH adaptation layer. The vendored tree under skills/ stays a byte-for-byte copy of upstream;",
|
|
@@ -30,8 +30,15 @@
|
|
|
30
30
|
{
|
|
31
31
|
"file": "engineering/ask-matt/SKILL.md",
|
|
32
32
|
"note": "context hygiene: /clear and /compact are the harness's controls, not skills",
|
|
33
|
-
"find": "
|
|
34
|
-
"replace": "
|
|
33
|
+
"find": " - **`/implement`** per ticket, **`/clear`ing context between each one**.",
|
|
34
|
+
"replace": " - **`implement`** per ticket, each in **its own fresh session** (the user starts it). DSH has no clear command, so the fresh session is what keeps each ticket's context disposable.",
|
|
35
|
+
"expect": 1
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"file": "engineering/ask-matt/SKILL.md",
|
|
39
|
+
"note": "the standalone phase-boundary bullet: DSH has no /clear, so the move is named in prose",
|
|
40
|
+
"find": "- **`/clear`**: empty the window, when nothing here matters to what's next.",
|
|
41
|
+
"replace": "- **Clear**: empty the window, when nothing here matters to what's next (in DSH only the user can start a fresh session, so ask for it).",
|
|
35
42
|
"expect": 1
|
|
36
43
|
},
|
|
37
44
|
{
|
|
@@ -142,14 +149,14 @@
|
|
|
142
149
|
{
|
|
143
150
|
"file": "productivity/handoff/SKILL.md",
|
|
144
151
|
"note": "the receiving session is a new DSH session, which cannot rely on the OS temp dir surviving or being found",
|
|
145
|
-
"find": "Save to the temporary directory of the user's OS - not the current workspace.",
|
|
152
|
+
"find": "Save to the temporary directory of the user's OS (`$TMPDIR`, else `/tmp`; `%TEMP%` on Windows) - not the current workspace.",
|
|
146
153
|
"replace": "Save it inside the workspace, not the OS temp directory: the receiving agent is a fresh DSH session whose cwd is the workspace, so `handoff/<YYYY-MM-DD>-<slug>.md` is where it will actually look. Keep `/tmp` out of it — a temp path is neither discoverable from the repo nor guaranteed to survive a reboot.",
|
|
147
154
|
"expect": 1
|
|
148
155
|
},
|
|
149
156
|
{
|
|
150
157
|
"file": "in-progress/claude-handoff/SKILL.md",
|
|
151
158
|
"note": "blocker: the whole point of this skill is Claude Code's background CLI; DSH delegates in-process",
|
|
152
|
-
"find": "Write a handoff summary of the current conversation so a fresh agent can continue the work.
|
|
159
|
+
"find": "Write a handoff summary of the current conversation so a fresh agent can continue the work. Save it to the temporary directory of the user's OS, then launch a background agent seeded with it as its prompt: `claude --bg --name \"<descriptive name>\" -- \"$(cat <summary file>)\"`. Passing the file keeps the shell from running backticks or expanding `$` in the summary. It starts in the current working directory and returns immediately; the user manages it with `claude agents`.",
|
|
153
160
|
"replace": "Write a handoff summary of the current conversation so a fresh agent can continue the work. In DSH you do not shell out to another CLI for this: delegate with the `subagent` tool, passing the summary as the prompt (it runs in this workspace and returns its own report), or `subagent_fork` when the child should inherit this conversation instead of just the summary. Both return a durable agent id immediately, so keep working and pick the result up later with `job_output`/`list_agents` and `send_message`.",
|
|
154
161
|
"expect": 1
|
|
155
162
|
},
|
|
@@ -220,16 +227,10 @@
|
|
|
220
227
|
],
|
|
221
228
|
"files": {
|
|
222
229
|
"engineering/ask-matt/SKILL.md": [
|
|
223
|
-
{
|
|
224
|
-
"find": "**`/clear`**",
|
|
225
|
-
"replace": "**Clear**",
|
|
226
|
-
"expect": 1,
|
|
227
|
-
"note": "clear is a session-level move the user asks for, so it is named in prose"
|
|
228
|
-
},
|
|
229
230
|
{
|
|
230
231
|
"find": "`/code-review`",
|
|
231
232
|
"replace": "`code-review`",
|
|
232
|
-
"expect":
|
|
233
|
+
"expect": 4,
|
|
233
234
|
"note": "code-review is a skill, not a command: name it instead of running it"
|
|
234
235
|
},
|
|
235
236
|
{
|
|
@@ -286,12 +287,24 @@
|
|
|
286
287
|
"expect": 7,
|
|
287
288
|
"note": "implement is a skill, not a command: name it instead of running it"
|
|
288
289
|
},
|
|
290
|
+
{
|
|
291
|
+
"find": "`/implement-spec`",
|
|
292
|
+
"replace": "`implement-spec`",
|
|
293
|
+
"expect": 2,
|
|
294
|
+
"note": "implement-spec is a skill, not a command: name it instead of running it"
|
|
295
|
+
},
|
|
289
296
|
{
|
|
290
297
|
"find": "`/improve-codebase-architecture`",
|
|
291
298
|
"replace": "`improve-codebase-architecture`",
|
|
292
299
|
"expect": 4,
|
|
293
300
|
"note": "improve-codebase-architecture is a skill, not a command: name it instead of running it"
|
|
294
301
|
},
|
|
302
|
+
{
|
|
303
|
+
"find": "`/pr`",
|
|
304
|
+
"replace": "`pr`",
|
|
305
|
+
"expect": 1,
|
|
306
|
+
"note": "pr is a skill, not a command: name it instead of running it"
|
|
307
|
+
},
|
|
295
308
|
{
|
|
296
309
|
"find": "`/prototype`",
|
|
297
310
|
"replace": "`prototype`",
|
|
@@ -305,10 +318,10 @@
|
|
|
305
318
|
"note": "research is a skill, not a command: name it instead of running it"
|
|
306
319
|
},
|
|
307
320
|
{
|
|
308
|
-
"find": "`/
|
|
309
|
-
"replace": "`
|
|
310
|
-
"expect":
|
|
311
|
-
"note": "
|
|
321
|
+
"find": "`/retro`",
|
|
322
|
+
"replace": "`retro`",
|
|
323
|
+
"expect": 3,
|
|
324
|
+
"note": "retro is a skill, not a command: name it instead of running it"
|
|
312
325
|
},
|
|
313
326
|
{
|
|
314
327
|
"find": "`/setup-matt-pocock-skills`",
|
|
@@ -319,7 +332,7 @@
|
|
|
319
332
|
{
|
|
320
333
|
"find": "`/tdd`",
|
|
321
334
|
"replace": "`tdd`",
|
|
322
|
-
"expect":
|
|
335
|
+
"expect": 4,
|
|
323
336
|
"note": "tdd is a skill, not a command: name it instead of running it"
|
|
324
337
|
},
|
|
325
338
|
{
|
|
@@ -385,6 +398,14 @@
|
|
|
385
398
|
"note": "setup-matt-pocock-skills is a skill, not a command: name it instead of running it"
|
|
386
399
|
}
|
|
387
400
|
],
|
|
401
|
+
"engineering/implement-spec/SKILL.md": [
|
|
402
|
+
{
|
|
403
|
+
"find": "`/setup-matt-pocock-skills`",
|
|
404
|
+
"replace": "`setup-matt-pocock-skills`",
|
|
405
|
+
"expect": 1,
|
|
406
|
+
"note": "setup-matt-pocock-skills is a skill, not a command: name it instead of running it"
|
|
407
|
+
}
|
|
408
|
+
],
|
|
388
409
|
"engineering/improve-codebase-architecture/SKILL.md": [
|
|
389
410
|
{
|
|
390
411
|
"find": "`/codebase-design`",
|
|
@@ -456,6 +477,14 @@
|
|
|
456
477
|
"expect": 1,
|
|
457
478
|
"note": "grilling is a skill, not a command: name it instead of running it"
|
|
458
479
|
}
|
|
480
|
+
],
|
|
481
|
+
"productivity/teach/SKILL.md": [
|
|
482
|
+
{
|
|
483
|
+
"find": "`/teach`",
|
|
484
|
+
"replace": "`teach`",
|
|
485
|
+
"expect": 1,
|
|
486
|
+
"note": "teach is a skill, not a command: name it instead of running it"
|
|
487
|
+
}
|
|
459
488
|
]
|
|
460
489
|
}
|
|
461
490
|
}
|
|
@@ -20,7 +20,7 @@ would have changed behaviour, and this file is the short version of the same map
|
|
|
20
20
|
| "ask the user" | the `ask_user_question` tool when you want a structured choice; plain prose otherwise |
|
|
21
21
|
| TodoWrite-style checklists | the `todo_write` tool |
|
|
22
22
|
| "the issue tracker" | unchanged: `docs/agents/issue-tracker.md` in the repo, GitHub/GitLab via `gh`/`glab`, or local markdown under `.scratch/` |
|
|
23
|
-
| `
|
|
23
|
+
| `GLOSSARY.md`, `docs/adr/`, `.out-of-scope/`, `docs/agents/` | unchanged — these are repo conventions, not harness features |
|
|
24
24
|
|
|
25
25
|
## DSH features that fit these flows
|
|
26
26
|
|
|
@@ -35,6 +35,6 @@ would have changed behaviour, and this file is the short version of the same map
|
|
|
35
35
|
## What deliberately does *not* change
|
|
36
36
|
|
|
37
37
|
- The skills' substance: what a good test is, the triage roles, the deepening vocabulary, the review axes.
|
|
38
|
-
- Repo conventions: `
|
|
38
|
+
- Repo conventions: `GLOSSARY.md`, `GLOSSARY-MAP.md`, `docs/adr/`, `docs/agents/`, `.scratch/`, `.out-of-scope/`.
|
|
39
39
|
- The flow order and the phase-boundary tree, including which moves are cheap and which are lossy.
|
|
40
|
-
- Upstream's choice to keep
|
|
40
|
+
- Upstream's choice to keep 23 skills user-started. DSH makes that a hard gate rather than a convention, which is why the rewrite list exists at all.
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dsh-workflow
|
|
3
|
-
description: Map for using Matt Pocock's engineering skills inside DeepSeek Harness — which of the
|
|
3
|
+
description: Map for using Matt Pocock's engineering skills inside DeepSeek Harness — which of the 38 skills the model may load itself, which are user-only, how the flows connect, and how they hand off to DSH's subagents, plan mode, goals and session commands. Load this before routing work through the mattpocock set, or when a Matt Pocock skill tells you to run something you cannot run.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Matt Pocock's skills in DSH
|
|
7
7
|
|
|
8
|
-
This bundle ships Matt Pocock's engineering skills (`mattpocock/skills` 1.
|
|
8
|
+
This bundle ships Matt Pocock's engineering skills (`mattpocock/skills` 1.3.1, 38 skills) plus this map. The skills themselves are unchanged in substance; what this file adds is the part that differs between harnesses: **who is allowed to start a skill, and what a reference to another skill means here.**
|
|
9
9
|
|
|
10
10
|
## The one rule that changes behaviour
|
|
11
11
|
|
|
12
12
|
Upstream is written for a harness where the model can run `/name` as a command. In DSH that is false in two ways:
|
|
13
13
|
|
|
14
14
|
1. **`/name` is a user-facing slash command.** You cannot type it or execute it. A skill name in backticks is just a name: to act on it, call the `skill` tool with that exact name.
|
|
15
|
-
2. **User-only skills are hard-blocked for you.** DSH refuses to load any skill marked `disable-model-invocation: true`: `skill` returns `skill "<name>" is not available for model invocation`. That is not a policy you can talk your way around — the
|
|
15
|
+
2. **User-only skills are hard-blocked for you.** DSH refuses to load any skill marked `disable-model-invocation: true`: `skill` returns `skill "<name>" is not available for model invocation`. That is not a policy you can talk your way around — the 23 user-only skills in this bundle cannot be loaded by you at all.
|
|
16
16
|
|
|
17
17
|
So when a flow needs a user-only skill, **name it and let the user invoke it** (or suggest they ask for it). Do not claim you ran it, and do not try to reproduce its 400 lines from memory: those skills are deliberately user-started because they open a fresh context window and keep the human driving.
|
|
18
18
|
|
|
@@ -21,18 +21,18 @@ If the user wants you to be able to load one of them, that is a configuration ch
|
|
|
21
21
|
## Start here
|
|
22
22
|
|
|
23
23
|
- **`ask-matt`** — the router and flow map (user-only). It answers "which skill fits this?". Load `dsh-workflow` instead when the question is "how does this work *in DSH*".
|
|
24
|
-
- **`setup-matt-pocock-skills`** — the one prerequisite for the engineering flows (user-only): configures the issue tracker, triage labels and `
|
|
24
|
+
- **`setup-matt-pocock-skills`** — the one prerequisite for the engineering flows (user-only): configures the issue tracker, triage labels and `GLOSSARY.md`/ADR layout a repo needs. The skills that depend on its output (`code-review`, `to-spec`, `to-tickets`, `wayfinder`, `triage`) now say so explicitly instead of telling you to run it.
|
|
25
25
|
- **[SKILLS.md](SKILLS.md)** — every skill with its invocation policy and what each one is for.
|
|
26
26
|
- **[DSH-MAPPING.md](DSH-MAPPING.md)** — upstream term → DSH equivalent, and the DSH features worth reaching for in each flow.
|
|
27
27
|
|
|
28
28
|
## How the flows land in DSH
|
|
29
29
|
|
|
30
|
-
The main flow (`grill-with-docs` → `to-spec` → `to-tickets` → `implement` → `code-review`) is intact, with these hand-offs rewritten:
|
|
30
|
+
The main flow (`grill-with-docs` → `to-spec` → `to-tickets` → `implement` → `code-review` → `retro`) is intact, with these hand-offs rewritten. Upstream 1.3.0 adds `implement-spec` as the whole-spec alternative to per-ticket `implement` (user-only: it fans implementer subagents out across worktrees), and `pr` as the PR-body shape the agent reaches for itself (model-invocable).
|
|
31
31
|
|
|
32
32
|
| Flow step | Who runs it | What you do |
|
|
33
33
|
| --- | --- | --- |
|
|
34
34
|
| `grill-with-docs`, `grill-me`, `triage`, `wayfinder`, `implement`, `to-spec`, `to-tickets`, `handoff` | user-only | Name the skill when the moment arrives and let the user start it. Continue when they come back. |
|
|
35
|
-
| `grilling`, `domain-modeling`, `codebase-design`, `tdd`, `code-review`, `diagnosing-bugs`, `research`, `prototype`, `wizard`, `
|
|
35
|
+
| `grilling`, `domain-modeling`, `codebase-design`, `tdd`, `code-review`, `diagnosing-bugs`, `research`, `prototype`, `wizard`, `pr`, `writing-for-agents`, `migrate-to-shoehorn`, `scaffold-exercises`, `setup-pre-commit` | you | Load with the `skill` tool and work the skill in this session. |
|
|
36
36
|
| Parallel review, research fan-out, design-it-twice | you | DSH's `subagent` tool (background, durable id, report back) or `workflow` for a real fan-out. See [DSH-MAPPING.md](DSH-MAPPING.md). |
|
|
37
37
|
| A fresh context window between tickets | user | Only the user starts a new session. Ask for it at the phase boundary the flow names. |
|
|
38
38
|
| `/compact` | user | The command exists in DSH; ask the user to run it, optionally with their instruction. |
|
|
@@ -6,25 +6,26 @@ Generated from `vendor/skills.manifest.json` by `node vendor/vendor-skills.mjs`.
|
|
|
6
6
|
| --- | --- | --- | --- |
|
|
7
7
|
| `dsh-workflow` | model + user | overlay | DSH invocation rules, workflow map, and platform equivalents. |
|
|
8
8
|
| `ask-matt` | **user only** | engineering | Ask which skill or flow fits your situation. A router over the skills in this repo. |
|
|
9
|
+
| `chief-of-staff` | **user only** | in-progress | Pursue a long-running goal in a single session by co-ordinating subagents. |
|
|
9
10
|
| `claude-handoff` | **user only** | in-progress | Hand the current conversation off to a fresh background agent that picks up the work immediately. |
|
|
10
11
|
| `code-review` | model + user | engineering | Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/spec asked for?). Runs both reviews in parallel sub-agents and reports them side by side. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to "review since X". |
|
|
11
12
|
| `codebase-design` | model + user | engineering | Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary. |
|
|
12
13
|
| `diagnosing-bugs` | model + user | engineering | Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow. |
|
|
13
|
-
| `domain-modeling` | model + user | engineering | Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a
|
|
14
|
+
| `domain-modeling` | model + user | engineering | Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR. |
|
|
14
15
|
| `git-guardrails-claude-code` | model + user | misc | Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code. |
|
|
15
16
|
| `grill-me` | **user only** | productivity | A relentless interview to sharpen a plan or design. |
|
|
16
17
|
| `grill-with-docs` | **user only** | engineering | A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go. |
|
|
17
18
|
| `grilling` | model + user | productivity | Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases. |
|
|
18
19
|
| `handoff` | **user only** | productivity | Compact the current conversation into a handoff document for another agent to pick up. |
|
|
19
20
|
| `implement` | **user only** | engineering | Implement a piece of work based on a spec or set of tickets. |
|
|
20
|
-
| `implement-spec` | **user only** |
|
|
21
|
+
| `implement-spec` | **user only** | engineering | Implement the result of /to-spec and /to-tickets in code. |
|
|
21
22
|
| `improve-codebase-architecture` | **user only** | engineering | Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick. |
|
|
22
23
|
| `loop-me` | **user only** | in-progress | Grill me about specs for the workflows I want to build, within this workspace. |
|
|
23
24
|
| `migrate-to-shoehorn` | model + user | misc | Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data. |
|
|
25
|
+
| `pr` | model + user | engineering | Use when writing a PR body. |
|
|
24
26
|
| `prototype` | model + user | engineering | Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like. |
|
|
25
27
|
| `research` | model + user | engineering | Investigate a question against high-trust primary sources and capture the findings as a Markdown file in the repo. Use when the user wants a topic researched, docs or API facts gathered, or reading legwork delegated to a background agent. |
|
|
26
|
-
| `
|
|
27
|
-
| `retro` | **user only** | in-progress | Conduct a retrospective on a coding session. |
|
|
28
|
+
| `retro` | **user only** | engineering | Conduct a retrospective on a coding session. |
|
|
28
29
|
| `scaffold-exercises` | model + user | misc | Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section. |
|
|
29
30
|
| `setup-matt-pocock-skills` | **user only** | engineering | Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills. |
|
|
30
31
|
| `setup-pre-commit` | model + user | misc | Set up Husky pre-commit hooks with lint-staged (Prettier), type checking, and tests in the current repo. Use when user wants to add pre-commit hooks, set up Husky, configure lint-staged, or add commit-time formatting/typechecking/testing. |
|
package/package.json
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "@maoleijin/dsh-mattpocock-skills",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"private": false,
|
|
5
|
-
"publishConfig": {
|
|
6
|
-
"access": "public"
|
|
7
|
-
},
|
|
8
|
-
"description": "Continuously synchronized Matt Pocock skills for DeepSeek Harness, with a verified DSH adaptation overlay.",
|
|
2
|
+
"name": "@maoleijin/dsh-mattpocock-skills",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"description": "Continuously synchronized Matt Pocock skills for DeepSeek Harness, with a verified DSH adaptation overlay.",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"author": {
|
|
11
11
|
"name": "Matt Pocock",
|
|
12
12
|
"url": "https://www.aihero.dev"
|
|
13
13
|
},
|
|
14
14
|
"contributors": [
|
|
15
|
-
"DSH adaptation by NmouZh",
|
|
16
|
-
"Upstream synchronization design by auggie246",
|
|
17
|
-
"Maintained by MAOLEIJIN"
|
|
15
|
+
"DSH adaptation by NmouZh",
|
|
16
|
+
"Upstream synchronization design by auggie246",
|
|
17
|
+
"Maintained by MAOLEIJIN"
|
|
18
18
|
],
|
|
19
|
-
"homepage": "https://github.com/MAOLEIJIN/dsh-mattpocock-skills",
|
|
19
|
+
"homepage": "https://github.com/MAOLEIJIN/dsh-mattpocock-skills",
|
|
20
20
|
"repository": {
|
|
21
21
|
"type": "git",
|
|
22
|
-
"url": "git+https://github.com/MAOLEIJIN/dsh-mattpocock-skills.git"
|
|
22
|
+
"url": "git+https://github.com/MAOLEIJIN/dsh-mattpocock-skills.git"
|
|
23
23
|
},
|
|
24
24
|
"keywords": [
|
|
25
25
|
"dsh-plugin",
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
"tools",
|
|
47
47
|
"test",
|
|
48
48
|
"cordis.patch.yml",
|
|
49
|
-
"README.md",
|
|
50
|
-
"docs",
|
|
51
|
-
"scripts",
|
|
49
|
+
"README.md",
|
|
50
|
+
"docs",
|
|
51
|
+
"scripts",
|
|
52
52
|
"LICENSE"
|
|
53
53
|
],
|
|
54
54
|
"dsh": {
|
|
@@ -64,11 +64,11 @@
|
|
|
64
64
|
"@deepseek-ai/dsh-skill": ">=0.1.0-rc.7 <0.2.0-0 || >=0.1.5-rc.1 <0.2.0-0"
|
|
65
65
|
},
|
|
66
66
|
"scripts": {
|
|
67
|
-
"vendor": "node vendor/vendor-skills.mjs",
|
|
68
|
-
"sync": "node vendor/sync-upstream.mjs",
|
|
69
|
-
"sync:local": "node vendor/sync-upstream.mjs --from ../mattpocock-skills",
|
|
70
|
-
"sync:check": "node vendor/sync-upstream.mjs --check",
|
|
71
|
-
"check": "node vendor/sync-upstream.mjs --check",
|
|
67
|
+
"vendor": "node vendor/vendor-skills.mjs",
|
|
68
|
+
"sync": "node vendor/sync-upstream.mjs",
|
|
69
|
+
"sync:local": "node vendor/sync-upstream.mjs --from ../mattpocock-skills",
|
|
70
|
+
"sync:check": "node vendor/sync-upstream.mjs --check",
|
|
71
|
+
"check": "node vendor/sync-upstream.mjs --check",
|
|
72
72
|
"test": "node test/bundle.test.js",
|
|
73
73
|
"verify:profile": "node test/verify-profile.cjs",
|
|
74
74
|
"archive:duplicates": "node tools/archive-duplicates.mjs",
|
package/scripts/install-web.bat
CHANGED
|
@@ -28,5 +28,5 @@ if errorlevel 1 (
|
|
|
28
28
|
|
|
29
29
|
echo.
|
|
30
30
|
echo Installation complete. Restart dsh web and create a new session.
|
|
31
|
-
echo For Desktop,
|
|
31
|
+
echo For Desktop, the package must first be listed in the configured plugin market.
|
|
32
32
|
exit /b 0
|
|
@@ -8,26 +8,34 @@ disable-model-invocation: true
|
|
|
8
8
|
|
|
9
9
|
You don't remember every skill, so ask.
|
|
10
10
|
|
|
11
|
+
Before stating what a skill does or recommending a step be skipped, read that skill's SKILL.md: the summaries here are for orientation only.
|
|
12
|
+
|
|
11
13
|
A **flow** is a path through the skills. Most paths run along one **main flow**, and two **on-ramps** merge onto it. Everything else is standalone, or a vocabulary layer that runs underneath.
|
|
12
14
|
|
|
13
15
|
## The main flow: idea → ship
|
|
14
16
|
|
|
15
17
|
The route most work travels. You have an idea and want it built.
|
|
16
18
|
|
|
17
|
-
1. **`/grill-with-docs`** sharpens the idea by interview. Start here whenever you are **working in a working directory**: it's stateful, retaining what it learns in `
|
|
19
|
+
1. **`/grill-with-docs`** sharpens the idea by interview. Start here whenever you are **working in a working directory**: it's stateful, retaining what it learns in `GLOSSARY.md` and ADRs. (No working directory? Use `/grill-me` instead, covered under Standalone. Both run the same `/grilling` primitive; `grill-with-docs` is the one that leaves a paper trail, which makes it the better of the two whenever a repo is there to leave it in.)
|
|
18
20
|
2. **Branch: can you settle every question in conversation?** If a question needs a runnable answer (state, business logic, a UI you have to see), detour through a prototype, bridged by **`/handoff`** in both directions (a prototype lives in its own directory, which is exactly what `/handoff` is for; see Phase boundaries):
|
|
19
21
|
- **`/handoff`** out, then open a fresh session against that file,
|
|
20
22
|
- **`/prototype`** to answer the question with throwaway code,
|
|
21
23
|
- **`/handoff`** back what you learned, and reference it from the original idea thread.
|
|
22
24
|
3. **Branch: is this a multi-session build?**
|
|
23
|
-
- **Yes** → **`/to-spec`** (turn the thread into a spec), then **`/to-tickets`** to split it into tracer-bullet tickets, each declaring its **blocking edges**.
|
|
25
|
+
- **Yes** → **`/to-spec`** (turn the thread into a spec), then **`/to-tickets`** to split it into tracer-bullet tickets, each declaring its **blocking edges**. Then work the tickets one of two ways:
|
|
26
|
+
- **`/implement`** per ticket, **`/clear`ing context between each one**. On a local tracker that's one file per ticket under `.scratch/<feature>/issues/`, worked blockers-first by hand; on a real tracker the edges become native blocking links, so any ticket whose blockers are done can be grabbed. Each ticket is self-contained, so the last one's context is disposable.
|
|
27
|
+
- **`/implement-spec`** for the whole spec in one run. It reads the tickets as a **task graph**, runs implementer subagents across the ready **frontier** in parallel, and lands everything on one **integration branch**. Reach for it when you'd rather orchestrate the build than drive each ticket yourself.
|
|
24
28
|
- **No** → **`/implement`** right here, in the same context window.
|
|
25
29
|
|
|
26
|
-
Either way,
|
|
30
|
+
Either way, the code gets built by driving **`/tdd`** (one red-green slice at a time) and closes out with **`/code-review`**, a two-axis review (Standards + Spec) of the diff. `/implement` runs both per ticket; `/implement-spec`'s implementers each drive `/tdd`, and it runs one `/code-review` over the integration branch. Reach for **`/tdd`** on its own when you just want to build a concrete behaviour test-first without a full spec, and **`/code-review`** on its own whenever you want to review a branch or PR against a fixed point.
|
|
31
|
+
|
|
32
|
+
When the work goes up as a pull request, **`/pr`** shapes the body: the smallest visual that shows the change, before/after evidence that it works, and a one-way or two-way door call. It's model-invoked, so the agent reaches for it whenever it writes a PR.
|
|
33
|
+
|
|
34
|
+
4. **`/retro`** closes the loop. After a build, and especially one that went sideways, it looks back over the session and suggests changes to the agent's **environment**, not the code: navigation pointers, automated checks, the coding standards `/code-review` enforces, steering files, tooling. Mechanical mistakes become deterministic checks; judgement calls become coding standards. The next build then starts from a better environment.
|
|
27
35
|
|
|
28
36
|
### Context hygiene
|
|
29
37
|
|
|
30
|
-
Keep steps 1–3 in **one unbroken context window** (don't compact or clear until after `/to-tickets`) so the grilling, spec, and tickets all build on the same thinking. Each `/implement` then starts fresh, working from the ticket.
|
|
38
|
+
Keep steps 1–3 in **one unbroken context window** (don't compact or clear until after `/to-tickets`) so the grilling, spec, and tickets all build on the same thinking. Each `/implement` then starts fresh, working from the ticket. Run `/retro` in the session it's looking back on, before you clear; after clearing, point it at that session's log instead.
|
|
31
39
|
|
|
32
40
|
The limit on this is the **[smart zone](https://www.aihero.dev/ai-coding-dictionary/smart-zone)**: the window (~150k tokens on state-of-the-art models) within which the model still reasons sharply. If a session approaches it before `/to-tickets`, don't push on degraded; `/compact` at the nearest phase boundary and carry on (see Phase boundaries).
|
|
33
41
|
|
|
@@ -39,7 +47,7 @@ A starting situation that generates work, then merges onto the main flow.
|
|
|
39
47
|
|
|
40
48
|
Triage is only for issues **you didn't create**: bug reports, incoming feature requests, anything that arrives raw. Tickets that `/to-tickets` produced are already agent-ready, so **don't triage them**.
|
|
41
49
|
|
|
42
|
-
- **Something's broken** → **`/diagnosing-bugs`**. For the hard ones: the bug that resists a first glance, the intermittent flake, the regression that crept in between two known-good states. It refuses to theorise until it has a **tight feedback loop** (one command that already goes red on *this* bug), then fixes with a regression test.
|
|
50
|
+
- **Something's broken** → **`/diagnosing-bugs`**. For the hard ones: the bug that resists a first glance, the intermittent flake, the regression that crept in between two known-good states. It refuses to theorise until it has a **tight feedback loop** (one command that already goes red on *this* bug), then fixes with a regression test. Once the fix is in, run **`/retro`** in the same session to ask what would have prevented the bug; where the real finding is that there's no good seam to lock it down, that's a job for **`/improve-codebase-architecture`**.
|
|
43
51
|
|
|
44
52
|
- **A huge, foggy effort: a greenfield project or a huge feature build, too big for one session** → **`/wayfinder`**, the most cognitively demanding flow here. When the way from here to the destination isn't visible yet, it charts a **shared map** of **decision tickets** on the issue tracker and resolves them one at a time, producing **decisions, not deliverables**, until the fog is pushed back and the way is clear. Where **`/grill-with-docs`** sharpens an idea you can hold in one session, wayfinder is for the idea you can't, and it's slower and denser, so save it for exactly that, never a well-scoped feature.
|
|
45
53
|
|
|
@@ -55,7 +63,7 @@ Not feature work, just upkeep.
|
|
|
55
63
|
|
|
56
64
|
Two model-invoked references that run *beneath* the other skills, each the single source of truth for its vocabulary. Reach for them directly when the **words**, not the process, are the problem; or let the skills above pull them in.
|
|
57
65
|
|
|
58
|
-
- **`/domain-modeling`**: sharpen the project's *domain* language: challenge a fuzzy term, resolve an overloaded word ("account" doing three jobs), record a hard-to-reverse decision as an ADR. It's the active discipline `/grill-with-docs` drives to keep `
|
|
66
|
+
- **`/domain-modeling`**: sharpen the project's *domain* language: challenge a fuzzy term, resolve an overloaded word ("account" doing three jobs), record a hard-to-reverse decision as an ADR. It's the active discipline `/grill-with-docs` drives to keep `GLOSSARY.md` a clean glossary.
|
|
59
67
|
- **`/codebase-design`** is the deep-module vocabulary (module, interface, depth, seam, adapter, leverage, locality) for designing a module's *shape*: a lot of behaviour behind a small interface at a clean seam. `/tdd` and `/improve-codebase-architecture` both speak it.
|
|
60
68
|
|
|
61
69
|
## Phase boundaries
|
|
@@ -74,14 +82,13 @@ Read [PHASE-BOUNDARIES.md](PHASE-BOUNDARIES.md) for the ordered tree: the five q
|
|
|
74
82
|
|
|
75
83
|
Off the main flow entirely.
|
|
76
84
|
|
|
77
|
-
- **`/grill-me`**: the same relentless interview as `/grill-with-docs`, but **stateless**: it saves nothing locally and builds no `
|
|
85
|
+
- **`/grill-me`**: the same relentless interview as `/grill-with-docs`, but **stateless**: it saves nothing locally and builds no `GLOSSARY.md`. Reach for it when you are **not working in a working directory** (sharpening a plan, a design, a piece of writing, anything with no repo under it). If you are in a working directory, use `/grill-with-docs` instead: it runs the same interview and leaves a paper trail, so it is strictly the better one.
|
|
78
86
|
- **`/grilling`** is the interview primitive itself: rounds, the frontier, facts are the agent's job and decisions are yours. `/grill-me` and `/grill-with-docs` are the two named ways in, and `/triage`, `/wayfinder` and `/improve-codebase-architecture` all run it internally. Reach for it directly only when you want the interview with no wrapper around it.
|
|
79
|
-
- **`/resolving-merge-conflicts`** works an in-progress merge or rebase conflict hunk by hunk, resolving by **intent** traced to each side's primary source rather than by picking lines, then finishes the operation. It never runs `--abort`. Standalone and off every flow: reach for it when you are already mid-conflict.
|
|
80
87
|
- **`/prototype`** is a small, throwaway program that answers one design question: does this state model feel right, or what should this UI look like. Throwaway is a constraint on how the code is written, not a promise to destroy it: the answer folds into the real code, and the prototype itself is kept as a **primary source** on a `prototype/<name>` branch out of main, pointed at from the implementation issue. It's the detour in step 2 of the main flow, but reach for it any time a design question is hard to settle on paper.
|
|
81
88
|
- **`/research`**: delegate reading legwork to a **background agent**: it investigates a question against **primary sources**, then leaves a cited Markdown file in the repo. Keep working while it reads. The file it produces is something to take *into* the main flow at `/grill-with-docs`, since research feeds the thinking rather than replacing it.
|
|
82
89
|
- **`/to-questionnaire`** comes in when the thing blocking you isn't in your head or the codebase but in **someone else's**, and it writes them a questionnaire to fill in. It's the inverse of `/grill-me`: instead of interviewing you about the subject, it interviews you about the **send** (who it's going to, what you need back) and aims the questions at the gap. What comes back is material for `/grill-with-docs` or `/to-spec`.
|
|
83
90
|
- **`/wizard`** is for the steps only a **human** can take: provisioning infrastructure, setting up credentials or CI secrets, clicking through an unfamiliar third-party dashboard, running a one-off migration or cutover. It generates an interactive bash script that opens each URL, captures each value, and writes it into `.env` and GitHub secrets, so the procedure stops being something you re-explain to an agent every time. Model-invoked, so the agent reaches for it the moment it hits a wall only you can pass. If the agent could just do it itself, it should; this is for where a human is genuinely in the loop.
|
|
84
|
-
- **`/wait-what`** is the corrective for a message that didn't land. Use it mid-conversation, inside any other skill, and the agent re-pitches what it just said with the context you were missing, in plain English, using the `
|
|
91
|
+
- **`/wait-what`** is the corrective for a message that didn't land. Use it mid-conversation, inside any other skill, and the agent re-pitches what it just said with the context you were missing, in plain English, using the `GLOSSARY.md` vocabulary. It works after the fact; `/grill-with-docs` is the upfront cure, because a shared language agreed early is what stops the jargon arriving at all.
|
|
85
92
|
- **`/teach`**: learn a concept over multiple sessions, using the current directory as a stateful workspace.
|
|
86
93
|
- **`/writing-for-agents`** is the reference for writing documents agents consume: skills, AGENTS.md, pointed-at docs.
|
|
87
94
|
|
|
@@ -10,7 +10,7 @@ Two-axis review of the diff between `HEAD` and a fixed point the user supplies:
|
|
|
10
10
|
|
|
11
11
|
Both axes run as **parallel sub-agents** so they don't pollute each other's context, then this skill aggregates their findings.
|
|
12
12
|
|
|
13
|
-
The issue tracker should have been provided to you. If
|
|
13
|
+
The issue tracker should have been provided to you. If not, tell the user to run `/setup-matt-pocock-skills`.
|
|
14
14
|
|
|
15
15
|
## Process
|
|
16
16
|
|
|
@@ -26,14 +26,14 @@ Before going further, confirm the fixed point resolves (`git rev-parse <fixed-po
|
|
|
26
26
|
|
|
27
27
|
Look for the originating spec, in this order:
|
|
28
28
|
|
|
29
|
-
1. Issue references in the commit messages (`#123`, `Closes #45`, GitLab `!67`, etc.), fetched via the workflow in
|
|
29
|
+
1. Issue references in the commit messages (`#123`, `Closes #45`, GitLab `!67`, etc.), fetched via the workflow in the tracker doc.
|
|
30
30
|
2. A path the user passed as an argument.
|
|
31
31
|
3. A spec file under `docs/`, `specs/`, or `.scratch/` matching the branch name or feature.
|
|
32
32
|
4. If nothing is found, ask the user where the spec is. If they say there isn't one, the **Spec** sub-agent will skip and report "no spec available".
|
|
33
33
|
|
|
34
34
|
### 3. Identify the standards sources
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Search the repo for every file that documents how code should be written. When `CODING_STANDARDS.md` or `CONTRIBUTING.md` exists, it must be on the list.
|
|
37
37
|
|
|
38
38
|
On top of whatever the repo documents, the Standards axis always carries the **smell baseline** below: a fixed set of Fowler code smells (_Refactoring_, ch.3) that applies even when a repo documents nothing. Two rules bind it:
|
|
39
39
|
|
|
@@ -57,6 +57,8 @@ Each smell reads *what it is* → *how to fix*; match it against the diff:
|
|
|
57
57
|
|
|
58
58
|
### 4. Spawn both sub-agents in parallel
|
|
59
59
|
|
|
60
|
+
Issue both sub-agent calls together, in the foreground, and aggregate the reports they return.
|
|
61
|
+
|
|
60
62
|
**Standards sub-agent prompt** should include:
|
|
61
63
|
|
|
62
64
|
- The full diff command and commit list.
|
|
@@ -27,7 +27,7 @@ Prompt each sub-agent with a separate technical brief (file paths, coupling deta
|
|
|
27
27
|
- Agent 3: "Optimise for the most common caller: make the default case trivial."
|
|
28
28
|
- Agent 4 (if applicable): "Design around ports & adapters for cross-seam dependencies."
|
|
29
29
|
|
|
30
|
-
Include both [SKILL.md](SKILL.md) vocabulary and
|
|
30
|
+
Include both [SKILL.md](SKILL.md) vocabulary and GLOSSARY.md vocabulary in the brief so each sub-agent names things consistently with the architecture language and the project's domain language.
|
|
31
31
|
|
|
32
32
|
Each sub-agent outputs:
|
|
33
33
|
|
|
@@ -7,7 +7,7 @@ description: Diagnosis loop for hard bugs and performance regressions. Use when
|
|
|
7
7
|
|
|
8
8
|
A discipline for hard bugs. Skip phases only when explicitly justified.
|
|
9
9
|
|
|
10
|
-
When exploring the codebase, read `
|
|
10
|
+
When exploring the codebase, read `GLOSSARY.md` (if it exists) to get a clear mental model of the relevant modules, and check ADRs in the area you're touching.
|
|
11
11
|
|
|
12
12
|
## Redact
|
|
13
13
|
|
|
@@ -122,7 +122,7 @@ A correct seam is one where the test exercises the **real bug pattern** as it oc
|
|
|
122
122
|
If a correct seam exists:
|
|
123
123
|
|
|
124
124
|
1. Turn the minimised repro into a failing test at that seam.
|
|
125
|
-
2. Watch it fail.
|
|
125
|
+
2. Watch it fail. If you forced the red by mutating code or a fixture, `diff` against a pristine copy to prove the mutation landed before you trust it.
|
|
126
126
|
3. Apply the fix.
|
|
127
127
|
4. Watch it pass.
|
|
128
128
|
5. Re-run the Phase 1 feedback loop against the original (un-minimised) scenario.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# GLOSSARY.md Format
|
|
2
2
|
|
|
3
3
|
## Structure
|
|
4
4
|
|
|
@@ -31,18 +31,18 @@ _Avoid_: Client, buyer, account
|
|
|
31
31
|
|
|
32
32
|
## Single vs multi-context repos
|
|
33
33
|
|
|
34
|
-
**Single context (most repos):** One `
|
|
34
|
+
**Single context (most repos):** One `GLOSSARY.md` at the repo root.
|
|
35
35
|
|
|
36
|
-
**Multiple contexts:** A `
|
|
36
|
+
**Multiple contexts:** A `GLOSSARY-MAP.md` at the repo root lists the contexts, where they live, and how they relate to each other:
|
|
37
37
|
|
|
38
38
|
```md
|
|
39
|
-
#
|
|
39
|
+
# Glossary Map
|
|
40
40
|
|
|
41
41
|
## Contexts
|
|
42
42
|
|
|
43
|
-
- [Ordering](./src/ordering/
|
|
44
|
-
- [Billing](./src/billing/
|
|
45
|
-
- [Fulfillment](./src/fulfillment/
|
|
43
|
+
- [Ordering](./src/ordering/GLOSSARY.md): receives and tracks customer orders
|
|
44
|
+
- [Billing](./src/billing/GLOSSARY.md): generates invoices and processes payments
|
|
45
|
+
- [Fulfillment](./src/fulfillment/GLOSSARY.md): manages warehouse picking and shipping
|
|
46
46
|
|
|
47
47
|
## Relationships
|
|
48
48
|
|
|
@@ -53,8 +53,8 @@ _Avoid_: Client, buyer, account
|
|
|
53
53
|
|
|
54
54
|
The skill infers which structure applies:
|
|
55
55
|
|
|
56
|
-
- If `
|
|
57
|
-
- If only a root `
|
|
58
|
-
- If neither exists, create a root `
|
|
56
|
+
- If `GLOSSARY-MAP.md` exists, read it to find contexts
|
|
57
|
+
- If only a root `GLOSSARY.md` exists, single context
|
|
58
|
+
- If neither exists, create a root `GLOSSARY.md` lazily when the first term is resolved
|
|
59
59
|
|
|
60
60
|
When multiple contexts exist, infer which one the current topic relates to. If unclear, ask.
|