Commit graph

37 commits

Author SHA1 Message Date
Matt Pocock
af6d6922c3 Drop Negative Space; keep Negation only
Negative Space read as clever but not actionable — "notice your
silences" is fuzzy legwork the agent can't reliably act on. Negation
stays: a checkable authoring failure with a positive-instruction cure.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 13:57:05 +01:00
Matt Pocock
30afefecc9 changeset for Negation and Negative Space failure modes
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 13:56:16 +01:00
Matt Pocock
7d34a8dc38 Split fog and out-of-scope into separate explanatory sections
QA follow-up: the Fog of war section was teaching both concepts, which
muddies the leading word — fog should point only *toward* the
destination. Now Fog of war teaches only the not-yet-specified bucket
(with the two-way fog-or-ticket sharpness test restored), and a new
Out of scope section owns the scope axis: beyond the destination,
closed not graduating, kept out of Decisions so far.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 17:44:13 +01:00
Matt Pocock
3ea01314c1 Rename the two buckets to plain map headings: Not yet specified / Out of scope
Following review: the map-body headings a cold reader sees should be
self-evident without having read the skill, so drop the metaphor from
the headings — `## Not yet specified` (in-scope, unripe) and
`## Out of scope` (beyond the destination). Keep **fog of war** as the
leading word: it still titles the explanatory section and drives the
"clears the fog" / "graduate the fog" behavior in the prose.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 17:35:50 +01:00
Matt Pocock
299eb0c017 Give wayfinder a distinct Deferred section for beyond-destination work
Fog is the undiscovered frontier *toward* the destination — in scope,
just not yet sharp — so it graduates into tickets as the frontier
advances. Work ruled out of *this* effort's scope was being parked in
Fog too, where it read as takeable frontier (an unblocked, unclaimed
ticket is indistinguishable from a live one).

Add a dedicated `## Deferred` section for beyond-the-destination work:
it never graduates (the frontier stops at the destination) and returns
only as a fresh effort if the destination is redrawn. The "Fog or
ticket?" test becomes "Fog, ticket, or deferred?", gated on scope as
well as sharpness, and both charting and working-the-map now defer a
mis-scoped ticket (close it, one line in Deferred) rather than leaving
it on the frontier or logging it in Decisions so far.

Builds on #455 (destination as the leading word / destination fixes
scope).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 15:08:48 +01:00
Matt Pocock
53c6219cd2 Reframe wayfinder around "destination" as the leading word
Wayfinding finds the way to a destination rather than building it. The
destination varies per effort and is named first, since it shapes every
ticket. Adds a Destination map-body field, makes it triage step 1, and
unifies the stray "goal" mentions onto "destination".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 14:57:57 +01:00
Matt Pocock
6f9e9956fd wayfinder: claim by assigning the ticket, not a label
A session now claims a ticket by assigning it to the dev driving the
map, rather than setting a `wayfinder:claimed` label. The assignee is
the claim; an open, unassigned ticket is unclaimed. Reads more naturally
in the tracker's own UI and frees the label vocabulary to
`wayfinder:<type>` alone.

Updates the GitHub and GitLab tracker-operations docs to the assignee
mechanism (`--add-assignee @me` / `--assignee @me`). The local-markdown
tracker keeps its `Status: claimed` line — a file store has no assignee.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 11:34:42 +01:00
Matt Pocock
8c2a4c554a wayfinder: tighten blocking rule, update GH/GL templates
Concision pass on the blocking rule (fold the "wherever the tracker has
one" clause into the fallback sentence; drop restatements). Bring the
GitHub and GitLab issue-tracker templates up to the same standard: the
GitHub template now carries the native issue-dependencies recipe and
frontier query; the GitLab template names the native /blocked_by link
(Premium/Ultimate) with the body-convention fallback.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 10:42:56 +01:00
Matt Pocock
b289481499 wayfinder: prefer native blocking, and say why
The blocking rule now leads with the tracker's native dependency
relationship and encodes the rationale: native rendering makes the
frontier visible in the tracker's own UI, so the human sees what's
takeable without opening the map. Notes the body-convention fallback
for trackers that lack native blocking (GitHub has it; GitLab only on
paid tiers).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 10:39:04 +01:00
Matt Pocock
e1c025eaee Add minor changeset for grilling gate and leading word
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 09:48:46 +01:00
Matt Pocock
1445797da5
Merge pull request #428 from mattpocock/wayfinder-plan-big-work
wayfinder: reframe description around planning big work
2026-07-02 14:29:34 +01:00
Matt Pocock
8cc3328633 wayfinder: reframe description around planning big work
The description does the skill's invocation work, so lead with the trigger
that actually reaches for Wayfinder — a huge chunk of work, more than one
agent session can hold — instead of the softer "chart a route through a
foggy problem". Skill body and fog-of-war mechanic unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 14:28:49 +01:00
Matt Pocock
5f45f2e35a
Merge pull request #409 from mattpocock/research-skill
Add the research skill
2026-07-02 14:06:32 +01:00
Matt Pocock
927293589b refactor(wayfinder): make the map an index, not a store
State the no-duplication contract up front with a leading word: the map
indexes decisions and points at the tickets that hold them; a decision
lives in exactly one place — its ticket — so the map only gists and links.

Also close a fog-vs-ticket duplication: graduating fog into a ticket now
clears the graduated patch from the Fog.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 09:45:58 +01:00
Matt Pocock
5c3c49df1a feat(wayfinder): make the map collaborative via the issue tracker
Move the map off a local Markdown file and onto the repo's configured
issue tracker. The map is a single wayfinder:map issue whose tickets are
its child issues — one shared URL the team can watch and comment on.

Blocking, claiming (wayfinder:claimed), and the frontier query use native
tracker semantics; a session loads the map at low resolution (Notes +
per-closed-ticket context pointers + Fog prose) and zooms into tickets on
demand. Per-tracker mechanics live behind the docs/agents/issue-tracker.md
pointer, so setup-matt-pocock-skills seeds a "Wayfinding operations"
section for GitHub, GitLab, and local-markdown; absent that doc, Wayfinder
defaults to local-markdown.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 20:28:48 +01:00
Matt Pocock
de7f02e2b1 refactor(wayfinder): neutralize intro, drop persona framing
Remove the "You are the Wayfinder" second-person persona from the intro,
description, and README so the agent doesn't adopt a persona. Keep the
leading-word frame (chart / fog / frontier / map); wayfinder stays only as
the skill/invocation name.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 19:51:05 +01:00
Matt Pocock
01f0b7e11a refactor(wayfinder): invoke as /wayfinder, not /wayfinding
The persona is the Wayfinder; the invocation should match. Rename the
folder and skill name to wayfinder and update the invocation examples,
README link, and changeset. "wayfinding" stays only as the activity noun.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 19:48:33 +01:00
Matt Pocock
4027ea6afd refactor(decision-mapping): rename to wayfinding
Reframe the planning skill around the Wayfinder persona — chart a route
through a foggy problem, resolving tickets one at a time until the way to
the goal is clear. "Decision map" was jargony and inaccurate (only 1 of 4
ticket types is a decision).

Rename the folder and skill name, rewrite the description and framing, and
prune: unify node->ticket, bind "frontier" to the unblocked set, drop the
duplicated "one question at a time" (owned by /grilling), trim intro no-ops.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 19:47:01 +01:00
Matt Pocock
0d74d01cbc feat: add the research skill
A small, model-invoked skill that spins up a background agent to
investigate a question against high-trust primary sources, then leaves a
single cited Markdown file wherever the repo keeps such notes.

Wires it into the plugin set, both READMEs (Model-invoked), a docs page,
and the ask-matt router, per the repo's promoted-skill conventions.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 16:32:15 +01:00
Matt Pocock
21f59763be
Merge pull request #393 from mattpocock/tdd-reference-only-seams
tdd: reshape into reference-only with pre-agreed seams
2026-07-01 12:51:40 +01:00
Matt Pocock
930a450089 Add changeset for ask-matt full skill map
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 12:28:34 +01:00
Matt Pocock
14c13c5bf9 Rename review skill to code-review and promote to engineering
Rename the in-progress `review` skill to `code-review` and move it from
`skills/in-progress/` into the promoted `skills/engineering/` bucket.

- Add it to `.claude-plugin/plugin.json` and the Model-invoked sections of
  the top-level and Engineering READMEs; drop it from the in-progress README.
- Add a docs page at `docs/engineering/code-review.md`.
- Point `/implement` and its docs at `/code-review`.
- Update the smell-baseline changeset reference; add a changeset for the move.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 12:04:12 +01:00
Matt Pocock
64d9f3d49e Add Task ticket type to decision-mapping skill
Some blockers are neither a decision, a prototype, nor research — just
literal manual work (moving data, signing up for a service, provisioning
access) that must happen before discussion can move forward.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 10:41:51 +01:00
Matt Pocock
7a4c7561d4 Add changeset for review smell baseline
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 10:19:49 +01:00
Matt Pocock
80e9dcc685 tdd: drop the refactor stage — red → green, not red → green → refactor
Refactoring belongs to the review stage, not the implementation loop.
Remove the refactor rule and the now-orphaned refactoring.md (its home is
the review skill), and point the loop's rule at the review skill so it
isn't re-added.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 09:48:57 +01:00
Matt Pocock
e81f97660a tdd: reshape into reference-only with pre-agreed seams
The red → green → refactor loop is anchored by leading words the model
already holds, so the step-by-step Workflow mostly restated the loop and
duplicated the horizontal-slicing anti-pattern. Drop the Workflow and
per-cycle checklist; fold their durable idea (vertical slices / tracer
bullets) into Anti-patterns and a short Rules-of-the-loop list.

Introduce **seam** as the leading word for where tests go, collapsing the
old Philosophy "public interfaces" prose and the Planning "confirm
interface / behaviors" handshake into one rule: test only at pre-agreed
seams, confirmed with the user before any test is written.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 09:43:49 +01:00
Matt Pocock
43ea0884b0 tdd: add tautological-test anti-pattern
Tests whose assertion is recomputed the way the code computes it pass by
construction and give zero confidence. Add it as a peer of the existing
implementation-coupling anti-pattern: a Philosophy principle, a per-cycle
checklist gate, and a BAD/GOOD example pair in tests.md. Includes a patch
changeset.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 21:22:50 +01:00
Matt Pocock
850873cd73 feat: implement model-invoked prototype skill and enhance wizard functionality 2026-06-29 13:51:38 +01:00
Matt Pocock
6eeb81b5fc Merge branch 'main' of https://github.com/mattpocock/skills 2026-06-18 09:41:33 +01:00
Matt Pocock
e00eadb4bb Added PR's as a triage surface 2026-06-18 09:41:30 +01:00
github-actions[bot]
7d684becad chore: version skills 2026-06-17 21:26:49 +00:00
Matt Pocock
aa024cb195 feat: enhance teach skill to prioritize reusable components from ./assets 2026-06-17 22:26:34 +01:00
Matt Pocock
d20ee2684e feat: let teach skill share code between lessons via ./assets
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 22:18:21 +01:00
Matt Pocock
bddb833cba fix: create GitHub releases on version bump
Add `publish: npx changeset tag` to the release workflow and enable
tagging for private packages in the changesets config, so merging a
Version PR creates a git tag and GitHub release.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 15:46:32 +01:00
github-actions[bot]
82e85064ea chore: version skills 2026-06-17 14:39:42 +00:00
Matt Pocock
47bde84da0 feat: introduce new skills and refine existing ones
- Add `ask-matt` skill for user-invoked routing.
- Introduce `codebase-design` and `domain-modeling` skills, updating dependencies.
- Remove unused `caveman` and `zoom-out` skills.
- Rename `diagnose` skill to `diagnosing-bugs`.
- Add `resolving-merge-conflicts` skill for handling git conflicts.
- Tighten `review` skill with improved checks.
- Update skill taxonomy to user-invoked and model-invoked.
- Replace `write-a-skill` with `writing-great-skills` for better guidance.
2026-06-17 15:39:06 +01:00
Matt Pocock
a032401486 chore: set up changesets
Add changesets for tracking and versioning skill changes:
- package.json (private) + @changesets/cli and @changesets/changelog-github
- .changeset/config.json using the GitHub release-style changelog
- release workflow that opens a version PR on push to main (no npm publish)
- initial changeset recording recent skill updates

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 15:21:20 +01:00