Not in the top 1,000 by GitHub stars
evist0/okf-matt-skills
Matt Pocock's agent skills, reworked on Google's Open Knowledge Format
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
codebase-design/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
debug/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → f3ea5610b95d
No earlier version was observed for comparison.
domain-modeling/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
grill/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
grill-plain/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
grilling/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
handoff/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
implement/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
improve-arch/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
prototype/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
reconcile/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
research/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
setup-okf-matt-skills/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
tdd/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → f3ea5610b95d
No earlier version was observed for comparison.
teach/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
to-spec/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
to-tickets/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
triage/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
vet/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
wayfinder/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
which-skill/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
write-skill/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
f3ea5610b95d → f3ea5610b95d
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → f3ea5610b95d
No earlier version was observed for comparison.
Heat
3.3- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- codebase-design
codebase-design - debug
debug - domain-modeling
domain-modeling - grill
grill - grill-plain
grill-plain - grilling
grilling - handoff
handoff - implement
implement - improve-arch
improve-arch - prototype
prototype - reconcile
reconcile - research
research - setup-okf-matt-skills
setup-okf-matt-skills - tdd
tdd - teach
teach - to-spec
to-spec - to-tickets
to-tickets - triage
triage - vet
vet - wayfinder
wayfinder - which-skill
which-skill - write-skill
write-skill
How it works
codebase-design
When your agent uses it
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.
What it loads into context
Frontmatter
61 tokensAlways available to the agent
SKILL.md
1,351 tokensWhen the skill is activated
Reference documents
1,150 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Glossary
- Deep vs shallow
- Principles
- Designing for testability
- Relationships
- Rejected framings
- Going deeper
Files
DEEPENING.mddoc2,559 bytesDESIGN-IT-TWICE.mddoc2,738 bytesSKILL.mdcore6,488 bytes
Read SKILL.md
# Codebase Design
Design **deep modules**: a lot of behaviour behind a small interface, placed at a clean seam, testable through that interface. Use this language and these principles wherever code is being designed or restructured. The aim is leverage for callers, locality for maintainers, and testability for everyone.
## Glossary
Use these terms exactly — don't substitute "component," "service," "API," or "boundary." Consistent language is the whole point.
**Module** — anything with an interface and an implementation. Deliberately scale-agnostic: a function, class, package, or tier-spanning slice. _Avoid_: unit, component, service.
**Interface** — everything a caller must know to use the module correctly: the type signature, but also invariants, ordering constraints, error modes, required configuration, and performance characteristics. _Avoid_: API, signature (too narrow — they refer only to the type-level surface).
**Implementation** — what's inside a module, its body of code. Distinct from **Adapter**: a thing can be a small adapter with a large implementation (a Postgres repo) or a large adapter with a small implementation (an in-memory fake). Reach for "adapter" when the seam is the topic; "implementation" otherwise.
View the complete source on GitHubdebug
When your agent uses it
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.
What it loads into context
Frontmatter
41 tokensAlways available to the agent
SKILL.md
2,058 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Phase 1 — Build a feedback loop
- Phase 2 — Reproduce + minimise
- Phase 3 — Hypothesise
- Phase 4 — Instrument
- Phase 5 — Fix + regression test
- Phase 6 — Cleanup + post-mortem
Scripts executed separately
scripts/hitl-loop.template.sh
Files
SKILL.mdcore8,886 bytesSKILL.mdcore8,886 bytesscripts/hitl-loop.template.shruns1,164 bytes
Read SKILL.md
# Debug
A discipline for hard bugs. Skip phases only when explicitly justified.
When exploring the codebase, read the project's OKF knowledge bundle if it exists (`knowledge/glossary/` for a clear mental model of the relevant modules, `knowledge/adr/` for decisions), and check ADRs in the area you're touching.
## Phase 1 — Build a feedback loop
**This is the skill.** Everything else is mechanical. If you have a **tight** pass/fail signal for the bug — one that goes red on _this_ bug — you will find the cause; bisection, hypothesis-testing, and instrumentation all just consume it. If you don't have one, no amount of staring at code will save you.
Spend disproportionate effort here. **Be aggressive. Be creative. Refuse to give up.**
### Ways to construct one — try them in roughly this order
View the complete source on GitHubdomain-modeling
When your agent uses it
Build and sharpen a project's domain model. Use when the user wants to pin down domain terminology or a ubiquitous language, record an architectural decision, or when another skill needs to maintain the domain model.
What it loads into context
Frontmatter
47 tokensAlways available to the agent
SKILL.md
1,042 tokensWhen the skill is activated
Reference documents
2,017 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- File structure
- During the session
Files
ADR-FORMAT.mddoc3,925 bytesCONTEXT-FORMAT.mddoc4,515 bytesSKILL.mdcore4,686 bytes
Read SKILL.md
# Domain Modeling
Actively build and sharpen the project's domain model as you design. This is the *active* discipline — challenging terms, inventing edge-case scenarios, and writing the glossary and decisions down the moment they crystallise. (Merely *reading* the knowledge bundle's glossary for vocabulary is not this skill — that's a one-line habit any skill can do. This skill is for when you're changing the model, not just consuming it.)
## File structure
The domain model lives in an **Open Knowledge Format (OKF)** knowledge bundle at `knowledge/` in the repo root. Most repos have a single context:
```
knowledge/
├── index.md ← bundle map (reserved: no frontmatter)
├── log.md ← change history, newest first (reserved: no frontmatter)
├── glossary/ ← one file per term (the glossary)
│ ├── index.mdView the complete source on GitHubgrill
When your agent uses it
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.
What it loads into context
Frontmatter
37 tokensAlways available to the agent
SKILL.md
57 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore235 bytes
Read SKILL.md
Run a `/grilling` session, using the `/domain-modeling` skill.View the complete source on GitHubgrill-plain
When your agent uses it
A relentless interview to sharpen a plan or design.
What it loads into context
Frontmatter
25 tokensAlways available to the agent
SKILL.md
36 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore150 bytes
grilling
When your agent uses it
Grill the user relentlessly about a plan or design. Use when the user wants to stress-test a plan before building, or uses any 'grill' trigger phrases.
What it loads into context
Frontmatter
45 tokensAlways available to the agent
SKILL.md
174 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore843 bytes
Read SKILL.md
Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
Ask the questions one at a time, waiting for feedback on each question before continuing. Asking multiple questions at once is bewildering.
If a *fact* can be found by exploring the codebase, look it up rather than asking me. The *decisions*, though, are mine — put each one to me and wait for my answer.
Do not enact the plan until I confirm we have reached a shared understanding.View the complete source on GitHubhandoff
When your agent uses it
Compact the current conversation into a handoff document for another agent to pick up.
What it loads into context
Frontmatter
44 tokensAlways available to the agent
SKILL.md
178 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore878 bytes
Read SKILL.md
Write a handoff document summarising the current conversation so a fresh agent can continue the work. Save to the temporary directory of the user's OS - not the current workspace.
Include a "suggested skills" section in the document, which suggests skills that the agent should invoke.
Do not duplicate content already captured in other artifacts (PRDs, plans, ADRs, issues, commits, diffs). Reference them by path or URL instead.
Redact any sensitive information, such as API keys, passwords, or personally identifiable information.
If the user passed arguments, treat them as a description of what the next session will focus on and tailor the doc accordingly.View the complete source on GitHubimplement
When your agent uses it
Implement a piece of work based on a spec or set of tickets.
What it loads into context
Frontmatter
28 tokensAlways available to the agent
SKILL.md
140 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore639 bytes
Read SKILL.md
Implement the work described by the user in the spec or tickets.
Use /tdd where possible, at pre-agreed seams.
Run typechecking regularly, single test files regularly, and the full test suite once at the end.
Once done, use /vet to review the work.
After the review's findings are resolved, run /reconcile to bring the OKF knowledge bundle back into agreement with what you built — over the same diff the review used.
Commit your work to the current branch, so code and knowledge land in one commit.View the complete source on GitHubimprove-arch
When your agent uses it
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
What it loads into context
Frontmatter
40 tokensAlways available to the agent
SKILL.md
1,215 tokensWhen the skill is activated
Reference documents
1,595 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Process
Files
HTML-REPORT.mddoc6,685 bytesSKILL.mdcore5,490 bytes
Read SKILL.md
# Improve Codebase Architecture
Surface architectural friction and propose **deepening opportunities** — refactors that turn shallow modules into deep ones. The aim is testability and AI-navigability.
This command is _informed_ by the project's domain model and built on a shared design vocabulary:
- Run the `/codebase-design` skill for the architecture vocabulary (**module**, **interface**, **depth**, **seam**, **adapter**, **leverage**, **locality**) and its principles (the deletion test, "the interface is the test surface", "one adapter = hypothetical seam, two = real"). Use these terms exactly in every suggestion — don't drift into "component," "service," "API," or "boundary."
- The domain language in `knowledge/glossary/` gives names to good seams; ADRs in `knowledge/adr/` record decisions this command should not re-litigate.
## Process
### 1. Explore
Read the project's domain glossary (`knowledge/glossary/`) and any ADRs (`knowledge/adr/`) in the area you're touching first.View the complete source on GitHubprototype
When your agent uses it
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.
What it loads into context
Frontmatter
43 tokensAlways available to the agent
SKILL.md
652 tokensWhen the skill is activated
Reference documents
2,822 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Pick a branch
- Rules that apply to both
- When done
Files
LOGIC.mddoc5,594 bytesSKILL.mdcore3,002 bytesUI.mddoc6,789 bytes
Read SKILL.md
# Prototype
A prototype is **throwaway code that answers a question**. The question decides the shape.
## Pick a branch
Identify which question is being answered — from the user's prompt, the surrounding code, or by asking if the user is around:
- **"Does this logic / state model feel right?"** → [LOGIC.md](LOGIC.md). Build a tiny interactive terminal app that pushes the state machine through cases that are hard to reason about on paper.
- **"What should this look like?"** → [UI.md](UI.md). Generate several radically different UI variations on a single route, switchable via a URL search param and a floating bottom bar.
The two branches produce very different artifacts — getting this wrong wastes the whole prototype. If the question is genuinely ambiguous and the user isn't reachable, default to whichever branch better matches the surrounding code (a backend module → logic; a page or component → UI) and state the assumption at the top of the prototype.
## Rules that apply to bothView the complete source on GitHubreconcile
When your agent uses it
Reconcile the OKF knowledge bundle (knowledge/) with what a completed code change built, over that change's diff. Use once a change has finished landing — the build closeout, just before committing — or when the user asks to reconcile knowledge against code.
What it loads into context
Frontmatter
58 tokensAlways available to the agent
SKILL.md
1,456 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Scope
- Process
- Completion
Files
SKILL.mdcore6,566 bytes
Read SKILL.md
# Reconcile
A change landed: the code moved, but the OKF bundle (`knowledge/`) may not have. **Reconcile** them — bring durable knowledge back into agreement with what was actually built, so the next session starts from a consistent bundle.
This is the *writing* discipline of the **build** phase — the mirror of `/domain-modeling`, which writes the bundle during **design**. It runs last in the `/implement` closeout, over the same diff `/vet` judged, so code and knowledge land in one commit.
## Scope
Reconcile against the diff, never the whole bundle. Fixed point is the one `/vet` used, or one the user supplies: `git diff <fixed-point>...HEAD`.
Durable knowledge is everything under `knowledge/` — the canonical categories `glossary/`, `adr/`, and `spec/`, plus any project-specific concept category registered in `knowledge/index.md`. Touch a concept only when the diff gives you a reason to.
## Process
View the complete source on GitHubresearch
When your agent uses it
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.
What it loads into context
Frontmatter
53 tokensAlways available to the agent
SKILL.md
169 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore799 bytesSKILL.mdcore799 bytesSKILL.mdcore799 bytes
Read SKILL.md
Spin up a **background agent** to do the research, so you keep working while it reads.
Its job:
1. Investigate the question against **primary sources** — official docs, source code, specs, first-party APIs — not a secondary write-up of them. Follow every claim back to the source that owns it.
2. Write the findings to a single Markdown file, citing each claim's source.
3. Save it where the repo already keeps such notes; match the existing convention, and if there is none, put it somewhere sensible and say where.View the complete source on GitHubsetup-okf-matt-skills
When your agent uses it
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.
What it loads into context
Frontmatter
54 tokensAlways available to the agent
SKILL.md
2,942 tokensWhen the skill is activated
Reference documents
4,176 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Process
- The agent layer (`knowledge/_agents/`)
Files
SKILL.mdcore12,094 bytesSKILL.mdcore12,094 bytesagents-index.mddoc3,249 bytesdomain.mddoc2,790 bytesissue-tracker-github.mddoc3,745 bytesissue-tracker-gitlab.mddoc3,826 bytesissue-tracker-local.mddoc1,748 bytestriage-labels.mddoc1,033 bytes
Read SKILL.md
# Setup okf-matt-skills
Scaffold the per-repo configuration that the engineering skills assume:
- **Issue tracker** — where issues live (GitHub by default; local markdown is also supported out of the box)
- **Triage labels** — the strings used for the five canonical triage roles
- **Domain docs** — where the OKF knowledge bundle (`knowledge/`) lives, and the consumer rules for reading it
All three land in the **agent layer** at `knowledge/_agents/` — a reserved, `_`-prefixed
service directory inside the OKF bundle that holds agent-operational config and notes, and
is **never** a domain context (see "The agent layer" below).
This is a prompt-driven skill, not a deterministic script. Explore, present what you found, confirm with the user, then write.
View the complete source on GitHubtdd
When your agent uses it
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
What it loads into context
Frontmatter
37 tokensAlways available to the agent
SKILL.md
695 tokensWhen the skill is activated
Reference documents
848 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- What a good test is
- Seams — where tests go
- Anti-patterns
- Rules of the loop
Files
SKILL.mdcore3,305 bytesSKILL.mdcore3,305 bytesmocking.mddoc1,481 bytestests.mddoc2,214 bytes
Read SKILL.md
# Test-Driven Development
TDD is the red → green loop. This skill is the reference that makes that loop produce tests worth keeping: what a good test is, where tests go, the anti-patterns, and the rules of the loop. Every section applies on every cycle — consult them before and during the loop, not after.
When exploring the codebase, read the project's OKF knowledge bundle if it exists (`knowledge/glossary/` for the domain language, `knowledge/adr/` for decisions) so test names and interface vocabulary match the project's domain language, and respect ADRs in the area you're touching.
## What a good test is
Tests verify behavior through public interfaces, not implementation details. Code can change entirely; tests shouldn't. A good test reads like a specification — "user can checkout with valid cart" tells you exactly what capability exists — and survives refactors because it doesn't care about internal structure.
See [tests.md](tests.md) for examples and [mocking.md](mocking.md) for mocking guidelines.
## Seams — where tests go
View the complete source on GitHubteach
When your agent uses it
Teach the user a new skill or concept, within this workspace.
What it loads into context
Frontmatter
40 tokensAlways available to the agent
SKILL.md
1,944 tokensWhen the skill is activated
Reference documents
1,859 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Teaching Workspace
- Philosophy
- Lessons
- Assets
- The Mission
- Zone Of Proximal Development
- Knowledge
- Skills
- Acquiring Wisdom
- Reference Documents
- `NOTES.md`
Files
GLOSSARY-FORMAT.mddoc2,131 bytesLEARNING-RECORD-FORMAT.mddoc2,777 bytesMISSION-FORMAT.mddoc1,553 bytesRESOURCES-FORMAT.mddoc1,926 bytesSKILL.mdcore9,507 bytesSKILL.mdcore9,507 bytes
Read SKILL.md
The user has asked you to teach them something. This is a stateful request - they intend to learn the topic over multiple sessions.
## Teaching Workspace
Treat the current directory as a teaching workspace. The state of their learning is captured in this directory in several files:
- `MISSION.md`: A document capturing the _reason_ the user is interested in the topic. This should be used to ground all teaching. Use the format in [MISSION-FORMAT.md](./MISSION-FORMAT.md).
- `./reference/*.html`: A directory of reference materials. These are the compressed learnings from the lessons - cheat sheets, reference algorithms, syntax, yoga poses, glossaries. They are the raw units of learning. They should be beautiful documents which print out well, and are designed for quick reference.
- `RESOURCES.md`: A list of resources which can be explored to ground your teaching in contextual knowledge, or to acquire knowledge and wisdom. Use the format in [RESOURCES-FORMAT.md](./RESOURCES-FORMAT.md).
- `./learning-records/*.md`: A directory of learning records, which capture what the user has learned. These are loosely equivalent to architectural decision records in software development - they capture non-obvious lessons and key insights that may need to be revised later, or drive future sessions. These should be used to calculate the zone of proximal development. They are titled `0001-<dash-case-name>.md`, where the number increments each time. Use the format in [LEARNING-RECORD-FORMAT.md](./LEARNING-RECORD-FORMAT.md).
- `./lessons/*.html`: A directory of lessons. A **lesson** is a single, self-contained HTML output that teaches one tightly-scoped thing tied to the mission. This is the primary unit of teaching in this workspace.
- `./assets/*`: Reusable **components** shared across lessons. See [Assets](#assets).
- `NOTES.md`: A scratchpad for you to jot down user preferences, or working notes.
View the complete source on GitHubto-spec
When your agent uses it
Turn the current conversation into a spec and save it to the OKF knowledge bundle — no interview, just synthesis of what you've already discussed.
What it loads into context
Frontmatter
42 tokensAlways available to the agent
SKILL.md
727 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Process
- Problem Statement
- Solution
- User Stories
- Implementation Decisions
- Testing Decisions
- Out of Scope
- Further Notes
Files
SKILL.mdcore3,375 bytes
Read SKILL.md
This skill takes the current conversation context and codebase understanding and produces a spec (you may know this document as a PRD). Do NOT interview the user — just synthesize what you already know.
The issue tracker and triage label vocabulary should have been provided to you — run `/setup-okf-matt-skills` if not.
## Process
1. Explore the repo to understand the current state of the codebase, if you haven't already. Use the project's domain glossary vocabulary throughout the spec, and respect any ADRs in the area you're touching.
2. Sketch out the seams at which you're going to test the feature. Existing seams should be preferred to new ones. Use the highest seam possible. If new seams are needed, propose them at the highest point you can. The fewer seams across the codebase, the better - the ideal number is one.
Check with the user that these seams match their expectations.
3. Write the spec using the template below and save it as an OKF concept under `knowledge/spec/` (e.g. `knowledge/spec/<slug>.md`), then append a line to `knowledge/log.md`. The spec is now a durable knowledge record; breaking it into agent-ready tickets on the tracker is `/to-tickets`' job.
View the complete source on GitHubto-tickets
When your agent uses it
Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker — edges as text in a local file, or native blocking links on a real tracker.
What it loads into context
Frontmatter
63 tokensAlways available to the agent
SKILL.md
1,243 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Process
- <Ticket title>
- <Ticket title>
- Parent
- What to build
- Acceptance criteria
- Blocked by
Files
SKILL.mdcore5,771 bytesSKILL.mdcore5,771 bytesSKILL.mdcore5,771 bytes
Read SKILL.md
# To Tickets
Break a plan, spec, or conversation into a set of **tickets** — tracer-bullet vertical slices, each declaring the tickets that **block** it.
The issue tracker and triage label vocabulary should have been provided to you — run `/setup-okf-matt-skills` if not.
## Process
### 1. Gather context
Work from whatever is already in the conversation context. If the user passes a reference (a spec path, an issue number or URL) as an argument, fetch it and read its full body and comments.
### 2. Explore the codebase (optional)
View the complete source on GitHubtriage
When your agent uses it
Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs.
What it loads into context
Frontmatter
44 tokensAlways available to the agent
SKILL.md
1,566 tokensWhen the skill is activated
Reference documents
2,850 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Reference docs
- Roles
- Invocation
- Show what needs attention
- Triage a specific issue or PR
- Quick state override
- Needs-info template
- Resuming a previous session
Files
AGENT-BRIEF.mddoc7,972 bytesOUT-OF-SCOPE.mddoc4,712 bytesSKILL.mdcore6,632 bytes
Read SKILL.md
# Triage
Move issues on the project issue tracker through a small state machine of triage roles.
If this repo treats external pull requests as a request surface (see the issue-tracker config), triage covers them too: **a PR is an issue with attached code** — same roles, same states, same machine, with a few deltas marked "for a PR" below. Resolve a bare `#42` to an issue or PR per the tracker config.
Every comment or issue posted to the issue tracker during triage **must** start with this disclaimer:
```
> *This was generated by AI during triage.*
```
## Reference docs
View the complete source on GitHubvet
When your agent uses it
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/PRD 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".
What it loads into context
Frontmatter
99 tokensAlways available to the agent
SKILL.md
1,534 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Process
- Why two axes
Files
SKILL.mdcore6,741 bytesSKILL.mdcore6,741 bytesSKILL.mdcore6,741 bytes
Read SKILL.md
Two-axis review of the diff between `HEAD` and a fixed point the user supplies:
- **Standards** — does the code conform to this repo's documented coding standards?
- **Spec** — does the code faithfully implement the originating issue / PRD / spec?
Both axes run as **parallel sub-agents** so they don't pollute each other's context, then this skill aggregates their findings.
The issue tracker should have been provided to you — run `/setup-okf-matt-skills` if `knowledge/_agents/issue-tracker.md` is missing.
## Process
### 1. Pin the fixed point
Whatever the user said is the fixed point — a commit SHA, branch name, tag, `main`, `HEAD~5`, etc. If they didn't specify one, ask for it.View the complete source on GitHubwayfinder
When your agent uses it
Plan a huge chunk of work — more than one agent session can hold — as a shared map of investigation tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.
What it loads into context
Frontmatter
57 tokensAlways available to the agent
SKILL.md
2,749 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Plan, don't do
- Refer by name
- The Map
- Ticket Types
- Fog of war
- Out of scope
- Invocation
Files
SKILL.mdcore12,175 bytes
Read SKILL.md
A loose idea has arrived — too big for one agent session, and wrapped in fog: the way from here to the **destination** isn't visible yet. Wayfinding is about finding that way, not charging at the destination. This skill charts the way as a **shared map** on the repo's issue tracker, then works its tickets one at a time until the route is clear.
The destination varies per effort, and naming it is the first act of charting — it shapes every ticket. It might be a spec to hand off and iterate on, a decision to lock before planning starts, or a change made in place like a data-structure migration. The map is domain-agnostic — engineering work, course content, whatever fits the shape.
## Plan, don't do
Wayfinder is **planning** by default: each ticket resolves a decision, and the map is done when the way is clear — nothing left to decide before someone goes and does the thing. The pull to just do the work is usually the signal you've reached the edge of the map and it's time to hand off. An effort can override this in its **Notes** — carrying execution into the map itself — but absent that, produce decisions, not deliverables.
When the way is clear and no tickets remain, the map is done: hand the cleared route to `/to-spec`, which captures it as a durable spec under `knowledge/spec/` for the multi-session build to follow (or, if the effort turned out small enough, implement directly).
## Refer by name
Every map and ticket is an issue, so it has a **name** — its title. In everything the human reads — narration, the map's Decisions-so-far — refer to it by that name, never by a bare id, number, or slug. A wall of `#42, #43, #44` is illegible; names read at a glance. The id and URL don't vanish — a name wraps its link — but they ride *inside* the name, never stand in for it.
View the complete source on GitHubwhich-skill
When your agent uses it
Ask which skill or flow fits your situation. A router over the skills in this repo.
What it loads into context
Frontmatter
33 tokensAlways available to the agent
SKILL.md
1,944 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The main flow: idea → ship
- On-ramps
- Codebase health
- Vocabulary underneath
- Crossing sessions
- Standalone
- Precondition
Files
SKILL.mdcore8,127 bytesSKILL.mdcore8,127 bytes
Read SKILL.md
# Which skill?
You don't remember every skill, so ask.
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.
## The main flow: idea → ship
The route most work travels. You have an idea and want it built.
1. **`/grill`** — sharpen the idea by interview. Start here when you **have a codebase**: it's stateful, retaining what it learns in the OKF knowledge bundle (`knowledge/` — glossary and ADRs). (No codebase? Use `/grill-plain` — see Standalone. Both run the same `/grilling` primitive; `grill` is the one that leaves a paper trail.)
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 (see Crossing sessions):
- **`/handoff`** out, then open a fresh session against that file,
- **`/prototype`** to answer the question with throwaway code,View the complete source on GitHubwrite-skill
When your agent uses it
Reference for writing and editing skills well — the vocabulary and principles that make a skill predictable.
What it loads into context
Frontmatter
33 tokensAlways available to the agent
SKILL.md
2,074 tokensWhen the skill is activated
Reference documents
4,050 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Invocation
- Writing the description
- Information hierarchy
- When to split
- Pruning
- Leading words
- Failure modes
Files
GLOSSARY.mddoc18,479 bytesSKILL.mdcore9,405 bytesSKILL.mdcore9,405 bytes
Read SKILL.md
A skill exists to wrangle determinism out of a stochastic system. **Predictability** — the agent taking the same _process_ every run, not producing the same output — is the root virtue; every lever below serves it.
**Bold terms** are defined in [`GLOSSARY.md`](GLOSSARY.md); look them up there for the full meaning.
## Invocation
Two choices, trading different costs:
- A **model-invoked** skill keeps a **description**, so the agent can fire it autonomously _and_ other skills can reach it (you can still type its name too). It contributes to **context load** — the description sits in the window every turn. Mechanics: omit `disable-model-invocation`, and write a model-facing description with rich trigger phrasing ("Use when the user wants…, mentions…").
- A **user-invoked** skill strips the description from the agent's reach: only you, typing its name, can invoke it — and no other skill can. Zero context load, but it spends **cognitive load**: _you_ are the index that must remember it exists. Mechanics: set `disable-model-invocation: true`; the `description` becomes human-facing — a one-line summary, trigger lists stripped.
Pick model-invocation only when the agent must reach the skill on its own, or another skill must. If it only ever fires by hand, make it user-invoked and pay no context load.
When user-invoked skills multiply past what you can remember, that piled-up cognitive load is cured by a **router skill**: one user-invoked skill that names the others and when to reach for each.View the complete source on GitHubSkills included
- codebase-design
- debug
- domain-modeling
- grill
- grill-plain
- grilling
- handoff
- implement
- improve-arch
- prototype
- reconcile
- research
- setup-okf-matt-skills
- tdd
- teach
- to-spec
- to-tickets
- triage
- vet
- wayfinder
- which-skill
- write-skill
Repository facts
- License
- MIT
- Created
- Jul 7, 2026
- Last pushed
- Jul 8, 2026
- Forks
- 4
- Open issues
- 0
- Project activity
- Slowing
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 12 notes
debug/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedresearch/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedresearch/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedsetup-okf-matt-skills/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedtdd/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedteach/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedto-tickets/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedto-tickets/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedvet/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedvet/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedwhich-skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedwrite-skill/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 26 network referencesin 8 files: tdd/mocking.md:42 improve-arch/HTML-REPORT.md:11 teach/RESOURCES-FORMAT.md:12 and 5 more
- No hidden or obfuscated text
- No instruction overrides
- 1 executable scriptin 1 file: debug/scripts/hitl-loop.template.sh:1
- 1 reference to secretsin 1 file: tdd/mocking.md:32
- No requests to vote in Hot
Show all 28 signals by file
debug/SKILL.md
- Network accessline 20
1. **Failing test** at whatever seam reaches the bug — unit, integration, e2e. 2. **Curl / HTTP script** against a running dev server. - Network accessline 21
2. **Curl / HTTP script** against a running dev server. - Network accessline 53
Phase 1 is done when the loop is **tight** and **red-capable**: you can name **one command** — a script path, a test invocation, a curl — that you have **already run at least once** (paste the invocation and its output), and that is:
debug/scripts/hitl-loop.template.sh
improve-arch/HTML-REPORT.md
- Network accessline 11
<meta charset="utf-8" /> <title>Architecture review — {{repo name}}</title> <script src="https://cdn.tailwindcss.com"></script> - Network accessline 12
<title>Architecture review — {{repo name}}</title> <script src="https://cdn.tailwindcss.com"></script> <script type="module"> - Network accessline 13
<script src="https://cdn.tailwindcss.com"></script> - Network accessline 14
<script type="module"> import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs"; mermaid.initialize({ startOnLoad: true, theme: "neutral", securityLevel: "loose" }); - Network accessline 15
import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs";
setup-okf-matt-skills/SKILL.md
- Network accessline 45
- **GitHub** — issues live in the repo's GitHub Issues (uses the `gh` CLI) - **GitLab** — issues live in the repo's GitLab Issues (uses the [`glab`](https://gitlab.com/gitlab-org/cli) CLI) - Network accessline 46
- **GitLab** — issues live in the repo's GitLab Issues (uses the [`glab`](https://gitlab.com/gitlab-org/cli) CLI) - Network accessline 170
This repo keeps durable knowledge in an [Open Knowledge Format](https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md) bundle at `knowledge/`. Each concept is a markdown file carrying a `type` frontmatter field; res
setup-okf-matt-skills/issue-tracker-gitlab.md
- Network accessline 3
Issues and PRDs for this repo live as GitLab issues. Use the [`glab`](https://gitlab.com/gitlab-org/cli) CLI for all operations.
tdd/mocking.md
- Access to secretsline 32
[Credential-related source omitted] - Network accessline 42
// GOOD: Each function is independently mockable const api = { getUser: (id) => fetch(`/users/${id}`), - Network accessline 43
const api = { getUser: (id) => fetch(`/users/${id}`), getOrders: (userId) => fetch(`/users/${userId}/orders`), - Network accessline 44
getUser: (id) => fetch(`/users/${id}`), - Network accessline 45
getOrders: (userId) => fetch(`/users/${userId}/orders`), - Network accessline 46
createOrder: (data) => fetch('/orders', { method: 'POST', body: data }), - Network accessline 49
// BAD: Mocking requires conditional logic inside the mock const api = { fetch: (endpoint, options) => fetch(endpoint, options), - Network accessline 50
const api = { fetch: (endpoint, options) => fetch(endpoint, options), }; - Network accessline 51
fetch: (endpoint, options) => fetch(endpoint, options),
teach/RESOURCES-FORMAT.md
- Network accessline 12
- [Book: _The Science and Practice of Strength Training_ — Zatsiorsky & Kraemer](https://example.com) - Network accessline 13
Foundational text on programming and adaptation. Use for: anything to do with periodisation, recovery, intensity zones. - [Article: "How Much Should I Train?" — Greg Nuckols (Stronger By Science)](https://example.com) Evidence-based revie - Network accessline 14
- [Article: "How Much Should I Train?" — Greg Nuckols (Stronger By Science)](https://example.com) - Network accessline 19
- [r/weightroom](https://reddit.com/r/weightroom)
which-skill/SKILL.md
- Network accessline 32
The limit on this is the **[smart zone](https://www.aihero.dev/ai-coding-dictionary/smart-zone)**: the window (~120k tokens on state-of-the-art models) within which the model still reasons sharply. If a session approaches it before `/to-tic
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 28 facts
- Network access in prose of the SKILL.mddebug/SKILL.md:20Low confidence
- Network access in prose of the SKILL.mddebug/SKILL.md:21Low confidence
- Network access in prose of the SKILL.mddebug/SKILL.md:53Low confidence
- Executable script in code of a file that runsdebug/scripts/hitl-loop.template.sh:1High confidence
- Network access in code of a file that runsdebug/scripts/hitl-loop.template.sh:31High confidence
- Network access in code of documentationimprove-arch/HTML-REPORT.md:11Low confidence
- Network access in code of documentationimprove-arch/HTML-REPORT.md:12Low confidence
- Network access in code of documentationimprove-arch/HTML-REPORT.md:13Low confidence
- Network access in code of documentationimprove-arch/HTML-REPORT.md:14Low confidence
- Network access in code of documentationimprove-arch/HTML-REPORT.md:15Low confidence
- Network access in prose of the SKILL.mdsetup-okf-matt-skills/SKILL.md:45Low confidence
- Network access in prose of the SKILL.mdsetup-okf-matt-skills/SKILL.md:46Low confidence
- Network access in code of the SKILL.mdsetup-okf-matt-skills/SKILL.md:170High confidence
- Network access in prose of documentationsetup-okf-matt-skills/issue-tracker-gitlab.md:3Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valuetdd/mocking.md:32Low confidence
- Network access in code of documentationtdd/mocking.md:42Low confidence
- Network access in code of documentationtdd/mocking.md:43Low confidence
- Network access in code of documentationtdd/mocking.md:44Low confidence
- Network access in code of documentationtdd/mocking.md:45Low confidence
- Network access in code of documentationtdd/mocking.md:46Low confidence
- Network access in code of documentationtdd/mocking.md:49Low confidence
- Network access in code of documentationtdd/mocking.md:50Low confidence
- Network access in code of documentationtdd/mocking.md:51Low confidence
- Network access in code of documentationteach/RESOURCES-FORMAT.md:12Low confidence
- Network access in code of documentationteach/RESOURCES-FORMAT.md:13Low confidence
- Network access in code of documentationteach/RESOURCES-FORMAT.md:14Low confidence
- Network access in code of documentationteach/RESOURCES-FORMAT.md:19Low confidence
- Network access in prose of the SKILL.mdwhich-skill/SKILL.md:32Low confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Frontmatter field disable-model-invocation in grill-plain/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md codebase-design/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md codebase-design/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md codebase-design/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md codebase-design/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md codebase-design/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.