Skip to content

Commit 6a62d72

Browse files
authored
Merge pull request #291 from mattpocock/matt/commands-and-skills
Split skills into model-invoked vs user-invoked
2 parents 694fa30 + a032401 commit 6a62d72

50 files changed

Lines changed: 2284 additions & 493 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Changesets
2+
3+
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4+
with multi-package repos, or single-package repos to help you version and publish your code. You can
5+
find the full documentation for it [in our repository](https://github.com/changesets/changesets).
6+
7+
We have a quick list of common questions to get you started engaging with this project in
8+
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md).

.changeset/config.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"$schema": "https://unpkg.com/@changesets/config@3.1.4/schema.json",
3+
"changelog": [
4+
"@changesets/changelog-github",
5+
{ "repo": "mattpocock/skills" }
6+
],
7+
"commit": false,
8+
"fixed": [],
9+
"linked": [],
10+
"access": "restricted",
11+
"baseBranch": "main",
12+
"updateInternalDependencies": "patch",
13+
"ignore": []
14+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
"mattpocock-skills": minor
3+
---
4+
5+
Recent skill updates:
6+
7+
- Add `ask-matt` user-invoked skill for triage and multi-session build guidance.
8+
- Add `writing-great-skills` skill, with no-op hunting at the sentence level.
9+
- Add `decision-mapping`, `prefactoring`, and `implement` (PRD-based) skills.
10+
- Tighten the review skill: fail-fast ref check, single-sourced rules, no-op cuts.
11+
- Rename terminology from Commands/Skills to User-invoked/Model-invoked across the docs.
12+
- Remove the `caveman` and `zoom-out` skills and all references.

.claude-plugin/plugin.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
{
22
"name": "mattpocock-skills",
33
"skills": [
4-
"./skills/engineering/diagnose",
4+
"./skills/engineering/ask-matt",
5+
"./skills/engineering/diagnosing-bugs",
56
"./skills/engineering/grill-with-docs",
67
"./skills/engineering/triage",
78
"./skills/engineering/improve-codebase-architecture",
89
"./skills/engineering/setup-matt-pocock-skills",
910
"./skills/engineering/tdd",
1011
"./skills/engineering/to-issues",
1112
"./skills/engineering/to-prd",
12-
"./skills/engineering/zoom-out",
1313
"./skills/engineering/prototype",
14-
"./skills/productivity/caveman",
14+
"./skills/engineering/domain-modeling",
15+
"./skills/engineering/codebase-design",
1516
"./skills/productivity/grill-me",
17+
"./skills/productivity/grilling",
1618
"./skills/productivity/handoff",
1719
"./skills/productivity/teach",
18-
"./skills/productivity/write-a-skill"
20+
"./skills/productivity/writing-great-skills"
1921
]
2022
}

.github/workflows/release.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
concurrency: ${{ github.workflow }}-${{ github.ref }}
9+
10+
jobs:
11+
release:
12+
name: Version
13+
runs-on: ubuntu-latest
14+
permissions:
15+
contents: write
16+
pull-requests: write
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v4
20+
21+
- name: Setup Node.js
22+
uses: actions/setup-node@v4
23+
with:
24+
node-version: 22
25+
26+
- name: Install dependencies
27+
run: npm ci
28+
29+
- name: Create Version Pull Request
30+
uses: changesets/action@v1
31+
with:
32+
version: npx changeset version
33+
commit: "chore: version skills"
34+
title: "chore: version skills"
35+
env:
36+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
node_modules

CLAUDE.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ Every skill in `engineering/`, `productivity/`, or `misc/` must have a reference
1111

1212
Each skill entry in the top-level `README.md` must link the skill name to its `SKILL.md`.
1313

14-
Each bucket folder has a `README.md` that lists every skill in the bucket with a one-line description, with the skill name linked to its `SKILL.md`.
14+
Each bucket folder has a `README.md` that lists every skill in the bucket with a one-line description, with the skill name linked to its `SKILL.md`. Bucket `README.md`s and the top-level `README.md` group entries into **User-invoked** and **Model-invoked**.
15+
16+
Every `SKILL.md` is either user-invoked (`disable-model-invocation: true`, reachable only by the human) or model-invoked (model- or user-reachable). For the full definitions, description conventions, and why a user-invoked skill can invoke model-invoked skills but never another user-invoked one, see [docs/invocation.md](./docs/invocation.md).

README.md

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ For automated tests, a red-green-refactor loop is critical. This is where the ag
113113

114114
I've built a **[`/tdd`](./skills/engineering/tdd/SKILL.md) skill** you can slot into any project. It encourages red-green-refactor and gives the agent plenty of guidance on what makes good and bad tests.
115115

116-
For debugging, I've also built a **[`/diagnose`](./skills/engineering/diagnose/SKILL.md)** skill that wraps best debugging practices into a simple loop.
116+
For debugging, I've also built a **[`/diagnosing-bugs`](./skills/engineering/diagnosing-bugs/SKILL.md)** skill that wraps best debugging practices into a simple loop.
117117

118118
### #4: We Built A Ball Of Mud
119119

@@ -132,7 +132,6 @@ For debugging, I've also built a **[`/diagnose`](./skills/engineering/diagnose/S
132132
This is built in to every layer of these skills:
133133

134134
- [`/to-prd`](./skills/engineering/to-prd/SKILL.md) quizzes you about which modules you're touching before creating a PRD
135-
- [`/zoom-out`](./skills/engineering/zoom-out/SKILL.md) tells the agent to explain code in the context of the whole system
136135

137136
And crucially, [`/improve-codebase-architecture`](./skills/engineering/improve-codebase-architecture/SKILL.md) helps you rescue a codebase that has become a ball of mud. I recommend running it on your codebase once every few days.
138137

@@ -142,30 +141,44 @@ Software engineering fundamentals matter more than ever. These skills are my bes
142141

143142
## Reference
144143

144+
These split on one axis — who can invoke them. **User-invoked** skills are reachable only when you type them (e.g. `/grill-me`); their job is to orchestrate. **Model-invoked** skills can be invoked by you _or_ reached for automatically by the agent when the task fits; they hold the reusable discipline. A user-invoked skill may invoke model-invoked skills, but never another user-invoked one.
145+
145146
### Engineering
146147

147148
Skills I use daily for code work.
148149

149-
- **[diagnose](./skills/engineering/diagnose/SKILL.md)** — Disciplined diagnosis loop for hard bugs and performance regressions: reproduce → minimise → hypothesise → instrument → fix → regression-test.
150-
- **[grill-with-docs](./skills/engineering/grill-with-docs/SKILL.md)** — Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates `CONTEXT.md` and ADRs inline.
151-
- **[triage](./skills/engineering/triage/SKILL.md)**Triage issues through a state machine of triage roles.
152-
- **[improve-codebase-architecture](./skills/engineering/improve-codebase-architecture/SKILL.md)**Find deepening opportunities in a codebase, informed by the domain language in `CONTEXT.md` and the decisions in `docs/adr/`.
153-
- **[setup-matt-pocock-skills](./skills/engineering/setup-matt-pocock-skills/SKILL.md)**Scaffold the per-repo config (issue tracker, triage label vocabulary, domain doc layout) that the other engineering skills consume. Run once per repo before using `to-issues`, `to-prd`, `triage`, `diagnose`, `tdd`, `improve-codebase-architecture`, or `zoom-out`.
154-
- **[tdd](./skills/engineering/tdd/SKILL.md)**Test-driven development with a red-green-refactor loop. Builds features or fixes bugs one vertical slice at a time.
155-
- **[to-issues](./skills/engineering/to-issues/SKILL.md)**Break any plan, spec, or PRD into independently-grabbable GitHub issues using vertical slices.
156-
- **[to-prd](./skills/engineering/to-prd/SKILL.md)**Turn the current conversation context into a PRD and submit it as a GitHub issue. No interview — just synthesizes what you've already discussed.
157-
- **[zoom-out](./skills/engineering/zoom-out/SKILL.md)**Tell the agent to zoom out and give broader context or a higher-level perspective on an unfamiliar section of code.
150+
**User-invoked**
151+
152+
- **[ask-matt](./skills/engineering/ask-matt/SKILL.md)**Ask which skill or flow fits your situation. A router over the user-invoked skills in this repo.
153+
- **[grill-with-docs](./skills/engineering/grill-with-docs/SKILL.md)**Grilling session that also builds your project's domain model, sharpening terminology and updating `CONTEXT.md` and ADRs inline.
154+
- **[triage](./skills/engineering/triage/SKILL.md)**Move issues through a state machine of triage roles.
155+
- **[improve-codebase-architecture](./skills/engineering/improve-codebase-architecture/SKILL.md)**Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
156+
- **[setup-matt-pocock-skills](./skills/engineering/setup-matt-pocock-skills/SKILL.md)**Configure this repo for the engineering skills (issue tracker, triage labels, domain doc layout). Run once per repo before using the other engineering skills.
157+
- **[to-issues](./skills/engineering/to-issues/SKILL.md)**Break any plan, spec, or PRD into independently-grabbable issues using vertical slices.
158+
- **[to-prd](./skills/engineering/to-prd/SKILL.md)**Turn the current conversation into a PRD and publish it to the issue tracker. No interview — just synthesizes what you've already discussed.
158159
- **[prototype](./skills/engineering/prototype/SKILL.md)** — Build a throwaway prototype to flesh out a design — either a runnable terminal app for state/business-logic questions, or several radically different UI variations toggleable from one route.
159160

161+
**Model-invoked**
162+
163+
- **[diagnosing-bugs](./skills/engineering/diagnosing-bugs/SKILL.md)** — Disciplined diagnosis loop for hard bugs and performance regressions: reproduce → minimise → hypothesise → instrument → fix → regression-test.
164+
- **[tdd](./skills/engineering/tdd/SKILL.md)** — Test-driven development with a red-green-refactor loop. Builds features or fixes bugs one vertical slice at a time.
165+
- **[domain-modeling](./skills/engineering/domain-modeling/SKILL.md)** — Actively build and sharpen a project's domain model — challenge terms against the glossary, stress-test with edge-case scenarios, and update `CONTEXT.md` and ADRs inline.
166+
- **[codebase-design](./skills/engineering/codebase-design/SKILL.md)** — Shared discipline and vocabulary for designing deep modules: a lot of behaviour behind a small interface, placed at a clean seam, testable through that interface.
167+
160168
### Productivity
161169

162170
General workflow tools, not code-specific.
163171

164-
- **[caveman](./skills/productivity/caveman/SKILL.md)** — Ultra-compressed communication mode. Cuts token usage ~75% by dropping filler while keeping full technical accuracy.
172+
**User-invoked**
173+
165174
- **[grill-me](./skills/productivity/grill-me/SKILL.md)** — Get relentlessly interviewed about a plan or design until every branch of the decision tree is resolved.
166175
- **[handoff](./skills/productivity/handoff/SKILL.md)** — Compact the current conversation into a handoff document so another agent can continue the work.
167176
- **[teach](./skills/productivity/teach/SKILL.md)** — Teach the user a new skill or concept over multiple sessions, using the current directory as a stateful teaching workspace.
168-
- **[write-a-skill](./skills/productivity/write-a-skill/SKILL.md)** — Create new skills with proper structure, progressive disclosure, and bundled resources.
177+
- **[writing-great-skills](./skills/productivity/writing-great-skills/SKILL.md)** — Reference for writing and editing skills well: the vocabulary and principles that make a skill predictable.
178+
179+
**Model-invoked**
180+
181+
- **[grilling](./skills/productivity/grilling/SKILL.md)** — Interview the user relentlessly about a plan or design until every branch of the decision tree is resolved. The reusable loop behind `grill-me` and `grill-with-docs`.
169182

170183
### Misc
171184

docs/adr/0001-explicit-setup-pointer-only-for-hard-dependencies.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ Engineering skills depend on per-repo config (issue tracker, triage label vocabu
55
We split these into **hard-dependency** and **soft-dependency** skills:
66

77
- **Hard dependency** (`to-issues`, `to-prd`, `triage`) — include an explicit one-liner: _"… should have been provided to you — run `/setup-matt-pocock-skills` if not."_ Without the mapping, output is wrong, not just fuzzy.
8-
- **Soft dependency** (`diagnose`, `tdd`, `improve-codebase-architecture`, `zoom-out`) — reference "the project's domain glossary" and "ADRs in the area you're touching" in vague prose only. If the docs aren't there, the skill still works; output is just less sharp.
8+
- **Soft dependency** (`diagnose`, `tdd`, `improve-codebase-architecture`) — reference "the project's domain glossary" and "ADRs in the area you're touching" in vague prose only. If the docs aren't there, the skill still works; output is just less sharp.
99

1010
The split keeps soft-dependency skills token-light and avoids cargo-culting the setup pointer into places where it isn't load-bearing.

docs/invocation.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Model-invoked vs user-invoked
2+
3+
Every `SKILL.md` in this repo is a skill. The one axis that splits them is **invocation** — who can reach it:
4+
5+
- **User-invoked** — reachable **only by the human typing its name**. Set `disable-model-invocation: true` in the frontmatter. The `description` is **human-facing**: a one-line summary read by a person browsing slash-commands. Strip trigger lists ("Use when the user says…").
6+
- **Model-invoked** — reachable by **model or user**. The default: omit `disable-model-invocation`. The `description` is **model-facing** and keeps rich trigger phrasing ("Use when the user wants…, mentions…, asks for…") so auto-invocation fires. The test for whether a skill should stay model-invoked: _could the model usefully reach for this autonomously?_ (Reuse is the reason to extract a skill, not the test.)
7+
8+
Because a user-invoked skill has no description, nothing but the human can reach it — no other skill can fire it. So a user-invoked skill may invoke model-invoked skills, but it can never reach another user-invoked skill.
9+
10+
Bucket `README.md`s and the top-level `README.md` group entries into **User-invoked** and **Model-invoked**.
11+
12+
## Dependencies between them
13+
14+
Dependencies are expressed as **`/skill`-style prose invocation** ("Run the `/grilling` skill"), not deep `../other-skill/FILE.md` cross-references. Shared reference docs live inside the skill that owns them; other skills reach that material by invoking the skill, not by linking across folders.
15+
16+
## Passive vs active domain work
17+
18+
Merely _reading_ `CONTEXT.md` for vocabulary is a one-line prose pointer, not the `domain-modeling` skill. Only the active build/sharpen discipline (challenge terms, edge-case scenarios, write ADRs, update `CONTEXT.md` inline) is `domain-modeling`.

0 commit comments

Comments
 (0)