#1 by GitHub stars
mattpocock/skills
Skills for Real Engineers. Straight from my .agents directory.
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
skills/engineering/ask-matt/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/code-review/SKILL.md
Week of Nov 2, 2026 · +1 / −1 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
- 11 Both axes run as **parallel sub-agents** so they don't pollute each other's context, then this skill aggregates their findings.
+ 11 Both axes run as **parallel sub-agents** so they don't pollute each other's context, then this skill aggregates their findings. Start every sub-agent with a fresh context window.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/codebase-design/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/diagnosing-bugs/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/domain-modeling/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/grill-with-docs/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/implement/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/implement-spec/SKILL.md
Week of Nov 2, 2026 · +4 / −2 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
+ 15 Start every subagent with a fresh context window.
+ 16
- 27 4. Use **implementer subagents** to implement each ticket, each in its own worktree on its own branch. Each implementer subagent:
+ 29 4. Use a fresh **implementer subagent** for each ticket, each in its own worktree on its own branch. Each implementer subagent:
- 36 7. Once all tickets are complete, call the Skill tool with `code-review` on the integration branch. Fix all issues raised by the code review in a single **implementer subagent**.
+ 38 7. Once all tickets are complete, call the Skill tool with `code-review` on the integration branch. Fix all issues raised by the code review in a single fresh **implementer subagent**.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/improve-codebase-architecture/SKILL.md
Week of Nov 2, 2026 · +1 / −1 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
- 27 Then spawn a sub-agent to walk the codebase. Don't follow rigid heuristics; explore organically and note where you experience friction:
+ 27 Then spawn a sub-agent with a fresh context window to walk the codebase. Don't follow rigid heuristics; explore organically and note where you experience friction:
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/pr/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/prototype/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/research/SKILL.md
Week of Nov 2, 2026 · +1 / −1 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
- 6 Spin up a **background agent** to do the research, so you keep working while it reads.
+ 6 Spin up a **background agent** to do the research, so you keep working while it reads. Start it with a fresh context window.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/retro/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/setup-matt-pocock-skills/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/tdd/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/to-spec/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/to-tickets/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/triage/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/wayfinder/SKILL.md
Week of Nov 2, 2026 · +1 / −1 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
- 115 5. **Fire the research subagents.** For each `research` ticket you just created, spin up a subagent that calls the Skill tool with "research" to resolve it in parallel, capturing its findings on a throwaway `research/<name>` branch with a context pointer from the ticket. Push the branch but open no PR: it is never merged.
+ 115 5. **Fire the research subagents.** For each `research` ticket you just created, spin up a subagent with a fresh context window that calls the Skill tool with "research" to resolve it in parallel, capturing its findings on a throwaway `research/<name>` branch with a context pointer from the ticket. Push the branch but open no PR: it is never merged.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/engineering/wizard/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/in-progress/chief-of-staff/SKILL.md
Week of Nov 2, 2026 · +9 / −2 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
- 22 Use background agents so you can stay in active dialogue with the user.
+ 22 Use background agents so you can stay in active dialogue with the user. Start every subagent with a fresh context window.
- 28 Keep your memory in a **wiki**: a folder of interlinked markdown pages that outlives this session. Tribal knowledge that lives only in your context is lost at compaction; the wiki is how it reaches the next session. If the goal has no wiki yet, agree its location with the user before the first write.
+ 28 Keep your memory in a **wiki**: a folder of interlinked markdown pages that outlives this session. Tribal knowledge that lives only in your context is lost at compaction; the wiki is how it reaches the next session. Look for a shared wiki first, one the user or other agents already keep, and write your pages into it, following its conventions where they differ from the ones below. Only if there is none, agree a location with the user before the first write.
+ 48
+ 49 ## Procedures
+ 50
+ 51 Some procedures you run live in other skills, installed beside this one. To run one, read its `SKILL.md` at the path below, relative to this skill's directory, and follow it.
+ 52
+ 53 - **Retro** (`../retro/SKILL.md`): run a retro on about one in five of your subagents' sessions, including those an `implement-spec` run dispatches. Pick first the ones where something went wrong. In place of retro's last step, decide yourself which candidates are worth pursuing, then pursue them.
+ 54 - **Large chunks of work**: write a spec with `../to-spec/SKILL.md`, break it into tickets with `../to-tickets/SKILL.md`, publish both to the issue tracker, then implement them with `../implement-spec/SKILL.md`.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/in-progress/claude-handoff/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/in-progress/loop-me/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/in-progress/setup-ts-deep-modules/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/in-progress/software-factory/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 4ae2317ddb22
No earlier version was observed for comparison.
skills/in-progress/writing-beats/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/in-progress/writing-fragments/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/in-progress/writing-shape/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/misc/git-guardrails-claude-code/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/misc/migrate-to-shoehorn/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/misc/scaffold-exercises/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/misc/setup-pre-commit/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/productivity/grill-me/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/productivity/grilling/SKILL.md
Week of Nov 2, 2026 · +1 / −1 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
- 28 Finding _facts_ is your job, never the user's. When a frontier question needs a fact from the environment (filesystem, tools, etc.), dispatch a sub-agent to find it; don't ask the user for anything you could look up yourself. Don't block on it: a running exploration is an unsettled prerequisite, so only the questions downstream of it wait for the sub-agent to report; ask the rest of the frontier now. The _decisions_ are the user's: put each to them and wait.
+ 28 Finding _facts_ is your job, never the user's. When a frontier question needs a fact from the environment (filesystem, tools, etc.), dispatch a sub-agent with a fresh context window to find it; don't ask the user for anything you could look up yourself. Don't block on it: a running exploration is an unsettled prerequisite, so only the questions downstream of it wait for the sub-agent to report; ask the rest of the frontier now. The _decisions_ are the user's: put each to them and wait.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/productivity/handoff/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/productivity/teach/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/productivity/to-questionnaire/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/productivity/wait-what/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
skills/productivity/writing-for-agents/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
59db609eb1e1 → 4ae2317ddb22
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 59db609eb1e1
No earlier version was observed for comparison.
Verified commit 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
git clone --filter=blob:none --no-checkout https://github.com/mattpocock/skills.git .hotskills/mattpocock-skills && git -C .hotskills/mattpocock-skills checkout --detach 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
# Copy each selected skill directory from .hotskills/mattpocock-skills into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/mattpocock/skills.git .hotskills/mattpocock-skills && git -C .hotskills/mattpocock-skills checkout --detach 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d
# Copy each selected skill directory from .hotskills/mattpocock-skills into .agents/skills/<skill-name>/Heat
7.8- Star growth, last 7 daysAhead of 94% of tracked repositories
- Star growth, last 24 hoursAhead of 95% of tracked repositories
- Rank movement, last 7 daysAhead of 79% of tracked repositories
- Commits, last 30 daysAhead of 84% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- ask-matt
skills/engineering/ask-matt - code-review
skills/engineering/code-review - codebase-design
skills/engineering/codebase-design - diagnosing-bugs
skills/engineering/diagnosing-bugs - domain-modeling
skills/engineering/domain-modeling - grill-with-docs
skills/engineering/grill-with-docs - implement
skills/engineering/implement - implement-spec
skills/engineering/implement-spec - improve-codebase-architecture
skills/engineering/improve-codebase-architecture - pr
skills/engineering/pr - prototype
skills/engineering/prototype - research
skills/engineering/research - retro
skills/engineering/retro - setup-matt-pocock-skills
skills/engineering/setup-matt-pocock-skills - tdd
skills/engineering/tdd - to-spec
skills/engineering/to-spec - to-tickets
skills/engineering/to-tickets - triage
skills/engineering/triage - wayfinder
skills/engineering/wayfinder - wizard
skills/engineering/wizard - chief-of-staff
skills/in-progress/chief-of-staff - claude-handoff
skills/in-progress/claude-handoff - loop-me
skills/in-progress/loop-me - setup-ts-deep-modules
skills/in-progress/setup-ts-deep-modules - software-factory
skills/in-progress/software-factory - writing-beats
skills/in-progress/writing-beats - writing-fragments
skills/in-progress/writing-fragments - writing-shape
skills/in-progress/writing-shape - git-guardrails-claude-code
skills/misc/git-guardrails-claude-code - migrate-to-shoehorn
skills/misc/migrate-to-shoehorn - scaffold-exercises
skills/misc/scaffold-exercises - setup-pre-commit
skills/misc/setup-pre-commit - grill-me
skills/productivity/grill-me - grilling
skills/productivity/grilling - handoff
skills/productivity/handoff - teach
skills/productivity/teach - to-questionnaire
skills/productivity/to-questionnaire - wait-what
skills/productivity/wait-what - writing-for-agents
skills/productivity/writing-for-agents
How it works
ask-matt
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
2,990 tokensWhen the skill is activated
Reference documents
43,907 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
- Phase boundaries
- Standalone
- Precondition
Scripts executed separately
../diagnosing-bugs/scripts/hitl-loop.template.sh../wizard/template.sh
Files
../../../.claude-plugin/marketplace.jsonasset605 bytes../../../.claude-plugin/plugin.jsonasset1,690 bytesPHASE-BOUNDARIES.mddoc4,249 bytesSKILL.mdcore12,594 bytesSKILL.mdcore12,594 bytesSKILL.mdcore12,594 bytesSKILL.mdcore12,594 bytesagents/openai.yamlasset137 bytes../code-review/SKILL.mddoc6,721 bytes../code-review/agents/openai.yamlasset100 bytes../codebase-design/DEEPENING.mddoc2,553 bytes../codebase-design/DESIGN-IT-TWICE.mddoc2,699 bytes../codebase-design/SKILL.mddoc6,446 bytes../codebase-design/agents/openai.yamlasset102 bytes../diagnosing-bugs/SKILL.mddoc8,664 bytes../diagnosing-bugs/agents/openai.yamlasset103 bytes../diagnosing-bugs/scripts/hitl-loop.template.shruns1,316 bytes../domain-modeling/ADR-FORMAT.mddoc2,733 bytes../domain-modeling/GLOSSARY-FORMAT.mddoc2,300 bytes../domain-modeling/SKILL.mddoc3,346 bytes../domain-modeling/agents/openai.yamlasset101 bytes../grill-with-docs/SKILL.mddoc247 bytes../grill-with-docs/agents/openai.yamlasset145 bytes../implement-spec/SKILL.mddoc2,835 bytes../implement-spec/agents/openai.yamlasset168 bytes../implement/SKILL.mddoc622 bytes../implement/agents/openai.yamlasset139 bytes../improve-codebase-architecture/HTML-REPORT.mddoc6,641 bytes../improve-codebase-architecture/SKILL.mddoc6,028 bytes../improve-codebase-architecture/agents/openai.yamlasset166 bytes../pr/CREDITS.mddoc604 bytes../pr/SKILL.mddoc4,169 bytes../pr/agents/openai.yamlasset93 bytes../prototype/LOGIC.mddoc6,036 bytes../prototype/SKILL.mddoc2,931 bytes../prototype/UI.mddoc6,913 bytes../prototype/agents/openai.yamlasset100 bytes../research/SKILL.mddoc832 bytes../research/agents/openai.yamlasset94 bytes../retro/SKILL.mddoc4,369 bytes../retro/agents/openai.yamlasset146 bytes../setup-matt-pocock-skills/SKILL.mddoc7,526 bytes../setup-matt-pocock-skills/agents/openai.yamlasset152 bytes../setup-matt-pocock-skills/domain.mddoc2,042 bytes../setup-matt-pocock-skills/issue-tracker-github.mddoc5,082 bytes../setup-matt-pocock-skills/issue-tracker-gitlab.mddoc3,979 bytes../setup-matt-pocock-skills/issue-tracker-local.mddoc1,810 bytes../setup-matt-pocock-skills/triage-labels.mddoc1,057 bytes../tdd/SKILL.mddoc3,629 bytes../tdd/agents/openai.yamlasset87 bytes../tdd/mocking.mddoc1,481 bytes../tdd/tests.mddoc2,214 bytes../to-spec/SKILL.mddoc3,043 bytes../to-spec/agents/openai.yamlasset135 bytes../to-tickets/SKILL.mddoc5,812 bytes../to-tickets/agents/openai.yamlasset146 bytes../triage/AGENT-BRIEF.mddoc7,942 bytes../triage/OUT-OF-SCOPE.mddoc4,667 bytes../triage/SKILL.mddoc6,558 bytes../triage/agents/openai.yamlasset135 bytes../wayfinder/SKILL.mddoc12,408 bytes../wayfinder/agents/openai.yamlasset144 bytes../wizard/SKILL.mddoc4,123 bytes../wizard/agents/openai.yamlasset96 bytes../wizard/template.shruns9,498 bytes../../productivity/grill-me/SKILL.mddoc157 bytes../../productivity/grill-me/agents/openai.yamlasset137 bytes../../productivity/grilling/SKILL.mddoc2,077 bytes../../productivity/grilling/agents/openai.yamlasset113 bytes../../productivity/handoff/SKILL.mddoc940 bytes../../productivity/handoff/agents/openai.yamlasset141 bytes../../productivity/teach/GLOSSARY-FORMAT.mddoc2,122 bytes../../productivity/teach/LEARNING-RECORD-FORMAT.mddoc2,747 bytes../../productivity/teach/MISSION-FORMAT.mddoc1,540 bytes../../productivity/teach/RESOURCES-FORMAT.mddoc1,924 bytes../../productivity/teach/SKILL.mddoc9,733 bytes../../productivity/teach/agents/openai.yamlasset139 bytes../../productivity/to-questionnaire/SKILL.mddoc2,904 bytes../../productivity/to-questionnaire/agents/openai.yamlasset166 bytes../../productivity/wait-what/SKILL.mddoc396 bytes../../productivity/wait-what/agents/openai.yamlasset158 bytes../../productivity/writing-for-agents/SKILL-MECHANICS.mddoc2,629 bytes../../productivity/writing-for-agents/SKILL.mddoc10,886 bytes../../productivity/writing-for-agents/agents/openai.yamlasset102 bytes
Read SKILL.md
# Ask Matt
You don't remember every skill, so ask.
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.
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-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.)
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):View the complete source on GitHubcode-review
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/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".
What it loads into context
Frontmatter
100 tokensAlways available to the agent
SKILL.md
1,531 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,721 bytesSKILL.mdcore6,721 bytesSKILL.mdcore6,721 bytesagents/openai.yamlasset100 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 / spec?
Both axes run as **parallel sub-agents** so they don't pollute each other's context, then this skill aggregates their findings. Start every sub-agent with a fresh context window.
The issue tracker should have been provided to you. If not, tell the user to run `/setup-matt-pocock-skills`.
## 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 GitHubcodebase-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,349 tokensWhen the skill is activated
Reference documents
1,146 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,553 bytesDESIGN-IT-TWICE.mddoc2,699 bytesSKILL.mdcore6,446 bytesagents/openai.yamlasset102 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 GitHubdiagnosing-bugs
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
43 tokensAlways available to the agent
SKILL.md
2,034 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
- Redact
- Phase 1: Build a feedback loop
- Phase 2: Reproduce + minimise
- Phase 3: Hypothesise
- Phase 4: Instrument
- Phase 5: Fix + regression test
- Phase 6: Cleanup
Scripts executed separately
scripts/hitl-loop.template.sh
Files
SKILL.mdcore8,664 bytesSKILL.mdcore8,664 bytesagents/openai.yamlasset103 bytesscripts/hitl-loop.template.shruns1,316 bytes
Read SKILL.md
# Diagnosing Bugs
A discipline for hard bugs. Skip phases only when explicitly justified.
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.
## Redact
This skill has you show commands, outputs and captured artifacts. **Redact every secret first**: write `<REDACTED>` in its place. Build loops against env vars, so the credential stays in the environment rather than in what you show. Captured artifacts carry auth headers: quote only the lines that carry the signal.
If the redacted output is not enough to diagnose the bug, say so and ask the user.
## Phase 1: Build a feedback loop
View the complete source on GitHubdomain-modeling
When your agent uses it
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.
What it loads into context
Frontmatter
39 tokensAlways available to the agent
SKILL.md
781 tokensWhen the skill is activated
Reference documents
1,158 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.mddoc2,733 bytesGLOSSARY-FORMAT.mddoc2,300 bytesSKILL.mdcore3,346 bytesagents/openai.yamlasset101 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* `GLOSSARY.md` 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
Most repos have a single context:
```
/
├── GLOSSARY.md
├── docs/
│ └── adr/
│ ├── 0001-event-sourced-orders.mdView the complete source on GitHubgrill-with-docs
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
40 tokensAlways available to the agent
SKILL.md
60 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.mdcore247 bytesagents/openai.yamlasset145 bytes
Read SKILL.md
Call the Skill tool twice, for "grilling" and "domain-modeling".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
136 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.mdcore622 bytesagents/openai.yamlasset139 bytes
Read SKILL.md
Implement the work described by the user in the spec or tickets.
If the user passes a ticket reference, fetch it from the issue tracker and state its title before starting. If the reference is ambiguous, ask.
Call the Skill tool with "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, call the Skill tool with "code-review" to review the work.
Commit your work to the current branch.View the complete source on GitHubimplement-spec
When your agent uses it
Implement the result of /to-spec and /to-tickets in code.
What it loads into context
Frontmatter
30 tokensAlways available to the agent
SKILL.md
603 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
- Steps
Files
SKILL.mdcore2,835 bytesagents/openai.yamlasset168 bytes
Read SKILL.md
You have been provided a spec. This spec should have tickets associated with it, describing how to implement the spec.
The issue tracker should have been provided to you. If not, tell the user to run `/setup-matt-pocock-skills`.
The goal is the entire spec implemented on a single **integration branch**, with every ticket resolved the way the issue tracker closes work.
The tickets are not a list of steps. They are a **task graph** with blocking relationships between them. This means there is always a **frontier** of tickets which are ready to be grabbed.
Start every subagent with a fresh context window.
Communication to and from subagents should be sparse. Communicate primarily through **context pointers**: to the spec, tickets, research notes, and previous commits. Don't duplicate information already available via pointers.
**Implementer subagents** should be run in the background where possible for maximum concurrency.
View the complete source on GitHubimprove-codebase-architecture
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
42 tokensAlways available to the agent
SKILL.md
1,354 tokensWhen the skill is activated
Reference documents
1,596 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Process
Files
HTML-REPORT.mddoc6,641 bytesSKILL.mdcore6,028 bytesagents/openai.yamlasset166 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:
- Call the Skill tool with "codebase-design" 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, and don't drift into "component," "service," "API," or "boundary."
- The domain language in `GLOSSARY.md` gives names to good seams; ADRs in `docs/adr/` record decisions this command should not re-litigate.
## Process
### 1. Explore
**Scope before you scan: YAGNI.** Deepening a module pays off by making future changes to it easier, so put extra weight on the parts of the codebase that have recently changed. Decide *where* to look before you look:View the complete source on GitHubpr
When your agent uses it
Use when writing a PR body.
What it loads into context
Frontmatter
65 tokensAlways available to the agent
SKILL.md
979 tokensWhen the skill is activated
Reference documents
139 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Sections
Files
CREDITS.mddoc604 bytesSKILL.mdcore4,169 bytesagents/openai.yamlasset93 bytes
Read SKILL.md
Use this template for writing the PR body:
```markdown
## Summary
<diagram, diff-sketch, or tree>
## Evidence
- **Before:** <screenshot/output/failing test run>
**After:** <screenshot/output/passing test run>
## Merge Danger
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
642 tokensWhen the skill is activated
Reference documents
2,904 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
Files
LOGIC.mddoc6,036 bytesSKILL.mdcore2,931 bytesUI.mddoc6,913 bytesagents/openai.yamlasset100 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, using 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 single shareable HTML file (free-play buttons plus tabbed guided walkthroughs) that pushes the state machine through cases that are hard to reason about on paper, and that a non-developer can drive.
- **"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, so 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 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
177 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.mdcore832 bytesSKILL.mdcore832 bytesSKILL.mdcore832 bytesagents/openai.yamlasset94 bytes
Read SKILL.md
Spin up a **background agent** to do the research, so you keep working while it reads. Start it with a fresh context window.
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 GitHubretro
When your agent uses it
Conduct a retrospective on a coding session.
What it loads into context
Frontmatter
22 tokensAlways available to the agent
SKILL.md
953 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
- Steps
- Reference
Files
SKILL.mdcore4,369 bytesagents/openai.yamlasset146 bytes
Read SKILL.md
The user has asked for a **retrospective**. You are suggesting improvements to the coding agent's **environment** to improve future runs.
## Steps
1. Call the Skill tool with `writing-for-agents` for the writing style guide.
2. Read the primary sources for the session the user specifies. This may mean searching through session logs on this machine. If the user doesn't specify a session, default to the current one.
3. Look for candidates for improvement in these categories.
- **Navigation**: how easy was it for the agent to find the right files? Are there hidden dependencies between files? Would a **navigation pointer** make it easier? _Use when_ the session took a long time to find a piece of information.
- **Automated checks**: are there automated checks that could catch errors the agent made? Linting, typing, tests, filesystem linters? Read the repo's own check command first (its `package.json`/build-tool `lint`/`check` scripts, its CI workflow), so a check that already exists but sits unwired or silently broken is the finding, not a reinvention. A repo with no **guardrail** (no pre-commit hook and no CI job running its lint/typecheck/test command) is itself a finding: an un-linted repo is a standing missed opportunity, not a neutral default. _Use when_ the agent made a mistake an automated check could have caught, or the repo has no guardrail at all.
- **Coding standards**: should the **reviewer agent** be given a new rule to enforce? Should an existing rule be removed or clarified? Classify the violation first: a **mechanical** one (a fixed syntactic pattern, a banned API, an import shape, a file-location rule) gets a deterministic check, full stop: a custom rule in the repo's own linter, a new pre-commit hook, or a new CI job, whichever the repo's language and existing guardrail make cheapest. Default to building the check over writing the rule. Reserve `CODING_STANDARDS.md` for genuine **judgement calls** (cross-file consistency, "matches the surrounding style," anything no guardrail could ever substitute for). _Use when_ the reviewer agent failed to catch a mistake.
- **Global AGENTS.md**: are there any steering instructions that should be moved to coding standards (or automated checks) instead? _Use when_ the AGENTS.md file is particularly large - in the repo OR the user's global scope.View the complete source on GitHubsetup-matt-pocock-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
56 tokensAlways available to the agent
SKILL.md
1,873 tokensWhen the skill is activated
Reference documents
3,652 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Process
Files
SKILL.mdcore7,526 bytesagents/openai.yamlasset152 bytesdomain.mddoc2,042 bytesissue-tracker-github.mddoc5,082 bytesissue-tracker-gitlab.mddoc3,979 bytesissue-tracker-local.mddoc1,810 bytestriage-labels.mddoc1,057 bytes
Read SKILL.md
# Setup Matt Pocock's 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 `GLOSSARY.md` and ADRs live, and the consumer rules for reading them
This is a prompt-driven skill, not a deterministic script. Explore, present what you found, confirm with the user, then write.
## Process
### 1. Explore
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
774 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,629 bytesSKILL.mdcore3,629 bytesSKILL.mdcore3,629 bytesagents/openai.yamlasset87 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 `GLOSSARY.md` (if it exists) 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 it 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 GitHubto-spec
When your agent uses it
Turn the current conversation into a spec and publish it to the project issue tracker: no interview, just synthesis of what you've already discussed.
What it loads into context
Frontmatter
42 tokensAlways available to the agent
SKILL.md
632 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,043 bytesagents/openai.yamlasset135 bytes
Read SKILL.md
This skill takes the current conversation context and codebase understanding and produces a spec. Do NOT interview the user; just synthesize what you already know.
The issue tracker and triage label vocabulary should have been provided to you. If not, tell the user to run `/setup-matt-pocock-skills`.
## 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, then publish it to the project issue tracker. Apply the `ready-for-agent` triage label - no need for additional triage.
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 one file per ticket locally, or native blocking links on a real tracker).
What it loads into context
Frontmatter
65 tokensAlways available to the agent
SKILL.md
1,270 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
- Parent
- What to build
- Acceptance criteria
- Blocked by
Files
SKILL.mdcore5,812 bytesSKILL.mdcore5,812 bytesSKILL.mdcore5,812 bytesagents/openai.yamlasset146 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. If not, tell the user to run `/setup-matt-pocock-skills`.
## 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,557 tokensWhen the skill is activated
Reference documents
2,845 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,942 bytesOUT-OF-SCOPE.mddoc4,667 bytesSKILL.mdcore6,558 bytesagents/openai.yamlasset135 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**, using the same roles, same states, and 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 GitHubwayfinder
When your agent uses it
Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision 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,831 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,408 bytesagents/openai.yamlasset144 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 **decision tickets** (questions whose resolution is a decision, not slices of a build to execute) 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, with 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.
## 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.
## The Map
View the complete source on GitHubwizard
When your agent uses it
Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.
What it loads into context
Frontmatter
62 tokensAlways available to the agent
SKILL.md
957 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
Scripts executed separately
template.sh
Files
SKILL.mdcore4,123 bytesSKILL.mdcore4,123 bytesSKILL.mdcore4,123 bytesagents/openai.yamlasset96 bytestemplate.shruns9,498 bytes
Read SKILL.md
# Wizard
A **wizard** is a bash script that walks a human, step by step, through a manual procedure that's tedious to do by hand and tedious to re-explain to an AI every time. It opens each URL, says exactly what to click and copy, captures the values, writes them where they belong (`.env`, GitHub secrets), confirms at every stage, and shows how many stages are left. It might configure third-party services, run a one-off migration, or move the project from one state to another.
The delightful UX is already solved by [template.sh](template.sh): stage-by-stage progress, confirmation gates, cross-platform URL opening (including WSL), hidden secret entry, idempotent `.env` upserts, `gh secret`/`gh variable` writes, and a closing summary. **Your job is only to scope the procedure and author its stages.** The library above the `STAGES` marker is identical in every wizard; that consistency is the point: never hand-edit it.
A wizard is ephemeral by default: built for one run, saved to a scratch or `scripts/` path, deleted when the job's done. Commit it only when the user wants a repeatable setup path that should live in the repo.
## Process
### 1. Scope the procedure
Work out every manual step the human must take and every value that gets captured along the way. Read the repo first, don't ask cold:
View the complete source on GitHubchief-of-staff
When your agent uses it
Pursue a long-running goal in a single session by co-ordinating subagents.
What it loads into context
Frontmatter
34 tokensAlways available to the agent
SKILL.md
1,044 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
- Schedules
- Subagents
- Wiki
- Procedures
- Strategic View
Files
SKILL.mdcore4,729 bytesagents/openai.yamlasset184 bytes
Read SKILL.md
You are a chief of staff, co-ordinating subagents and schedules to pursue a long-running goal. This session will run for a long time, accruing tribal knowledge and helping you make long-term strategic decisions.
You are the Directly Responsible Individual for this goal. You are empowered to think much longer-term than you're used to. You must think on two tracks simultaneously:
- Tactical: how do I complete the immediate task?
- Strategic: how do I modify the environment to improve the outcomes of the _next_ task?
## Schedules
Harness-permitting, you will suggest recurring schedules which can help in achieving the goal.
## Subagents
All work should be done in subagents. Protect your context window.View the complete source on GitHubclaude-handoff
When your agent uses it
Hand the current conversation off to a fresh background agent that picks up the work immediately.
What it loads into context
Frontmatter
47 tokensAlways available to the agent
SKILL.md
307 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.mdcore1,424 bytesagents/openai.yamlasset141 bytes
Read SKILL.md
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`.
Always pass `-n`/`--name` with a descriptive name (e.g. `--name "Fix login bug"`); it sets the display name shown in the job list, session picker, and terminal title.
Include a "suggested skills" section in the summary, naming which skills the next agent should call the Skill tool for.
Do not duplicate content already captured in other artifacts (specs, 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, since the summary becomes the agent's prompt.
If the user passed arguments, treat them as a description of what the next session will focus on and tailor the summary accordingly.View the complete source on GitHubloop-me
When your agent uses it
Grill me about specs for the workflows I want to build, within this workspace.
What it loads into context
Frontmatter
48 tokensAlways available to the agent
SKILL.md
565 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 loop lens
- Vocabulary
- Definition of done
- The workspace
Files
SKILL.mdcore2,522 bytesSKILL.mdcore2,522 bytesagents/openai.yamlasset140 bytes
Read SKILL.md
Run a stateful `/grilling` session whose only output is **workflow** specs. Use the grilling discipline (relentless, a round of questions at a time, a recommended answer attached to each) aimed at the vocabulary and goal below. Create, edit, and delete specs as the grilling resolves things.
## The loop lens
A **loop** is a recurring pattern in the user's life: their career, their week, their morning, a single repeated activity. Picturing a life as loops within loops reveals how predictable its activities really are, which is what makes them worth **delegating**. Use the lens to find loops worth specifying, and propose ones the user hasn't noticed.
A **workflow** is the spec of one loop, made real. You run a workflow on a loop: the loop is its running instantiation. Workflows live in `workflows/*.md` and are the source of truth.
## Vocabulary
A shared language, reached for only when a workflow calls for it: never a checklist. **Mandate nothing structural**: a workflow needs no AI, no checkpoint, and no schedule unless the grilling shows it does.
- **Trigger**: what fires each run, an **event** (a new email, a new issue) or a **schedule** (every morning). Event-triggering is usually the more efficient.
- **Checkpoint**: a human-in-the-loop point where the user is asked to verify or decide. Some workflows have none and run autonomously; some use no AI at all.View the complete source on GitHubsetup-ts-deep-modules
When your agent uses it
Wire dependency-cruiser into a TypeScript repo so each package is a deep module, with implementation hidden in subfolders and reachable only through its entry-point files. User-invoked.
What it loads into context
Frontmatter
56 tokensAlways available to the agent
SKILL.md
1,822 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 shape this enforces
- Steps
- Notes
Scripts executed separately
dependency-cruiser.config.cjs
Files
SKILL.mdcore7,546 bytesagents/openai.yamlasset149 bytesdependency-cruiser.config.cjsruns3,712 bytes
Read SKILL.md
# Setup TS Deep Modules
Make every package in this repo a **deep module**: a lot of behaviour behind a small interface. A package's public surface is its **entry points** (the files at the package root), and everything in its subfolders is hidden. This skill installs [dependency-cruiser](https://github.com/sverweij/dependency-cruiser) and the rules that make the entry points the only way in, then proves the rules bite.
For the vocabulary (deep module, interface, seam, depth), call the Skill tool with "codebase-design" and use its language throughout.
## The shape this enforces
```
src/packages/
<name>/
index.ts ← an entry point (public). Import this from outside.
client.ts ← another entry point. Packages may expose SEVERAL.
lib/ ← implementation: hidden from outside, free to import each other.View the complete source on GitHubsoftware-factory
When your agent uses it
Shared language for designing a software factory: the tasks it runs and the services it plugs into.
What it loads into context
Frontmatter
34 tokensAlways available to the agent
SKILL.md
1,303 tokensWhen the skill is activated
Reference documents
8,445 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Tasks and runs
- Services
- Designing a factory
Files
EXAMPLE-TASKS.mddoc3,731 bytesGIT-HOSTS.mddoc7,706 bytesOBSERVABILITY-PLATFORMS.mddoc7,849 bytesRUNNERS.mddoc8,738 bytesSKILL.mdcore5,999 bytesSKILL.mdcore5,999 bytesTICKET-TRACKERS.mddoc8,465 bytes
Read SKILL.md
A **software factory** is a system of agents that turns tickets, PRs and schedules into merged code, deployed on remote infrastructure the user chooses. This skill is the language for designing one. Use these terms, and only these, when discussing or whiteboarding a factory; when the user reaches for a word under _Avoid_, name the canonical term.
## Tasks and runs
**Task**:
A kind of work the factory performs, defined once and run many times: review, explore, implement, ratchet. A task may work on a ticket, a PR, or the codebase as a whole.
_Avoid_: job, workflow, action
**Trigger**:
The event that starts a run: a change in the ticket tracker or git host, a clock in the orchestrator, or another run.
**Run**:
One execution of a task on one runner, from its trigger to its finish, treated as a black box. A run triggers further runs either directly, through logic in the orchestrator, or by changing the ticket tracker or git host. A run never waits for a human: it ends, and the human's later change to the ticket tracker or git host triggers a new run.
_Avoid_: sessionView the complete source on GitHubwriting-beats
When your agent uses it
Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.
What it loads into context
Frontmatter
39 tokensAlways available to the agent
SKILL.md
1,088 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
- Grounding
- What is a beat
- Pulling from the pile
- Ending the journey
- Writing rhythm
Files
SKILL.mdcore4,855 bytesagents/openai.yamlasset142 bytes
Read SKILL.md
<what-to-do>
The user has passed (or will pass) a markdown file of raw material. This is **exploit**: the exploring is done, the pile is fixed. Commit to a path through it and mine the pile to fill each beat.
If the user did not say where to save the article, ask once and remember the path.
Then run a beat-by-beat journey, choose-your-own-adventure style:
1. **Establish the prerequisites.** Before any beats, settle with the user what the audience already knows walking in: the concepts that are **grounded** from the start. Everything else must be grounded by a beat before a later beat can use it. See [Grounding](#grounding).
2. Write 2–3 candidate **starting beats**, drawn from the raw material. Each is a different entry point into the article. Each may only lean on grounded concepts; note what new concepts each one grounds. Show the user the beats before writing to the article file. The user picks one. Preview what beats that pick unlocks, as if the user is seeing a little way down the path.
3. Once the user picks a starting beat, write **only that beat** to the article file. A beat may be one sentence or several paragraphs, whatever that beat naturally is. Stop there.
4. Re-read the article file from disk. Then offer 2–3 candidate **next beats**: different directions the journey could pivot to from where the article now stands. Each must be reachable from the current grounded set; note what each one grounds.
5. Loop steps 3–5 until the article reaches a natural end.
View the complete source on GitHubwriting-fragments
When your agent uses it
Writing, explore: mine raw fragments, no structure yet.
What it loads into context
Frontmatter
28 tokensAlways available to the agent
SKILL.md
786 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
- What is a fragment
- File format
- Writing rhythm
Files
SKILL.mdcore3,558 bytesagents/openai.yamlasset140 bytes
Read SKILL.md
<what-to-do>
This is pure **explore**: widen the space of what could be written without committing to structure. Committing is _exploit_, a separate skill's job. Run a grilling session that produces fragments, interviewing the user relentlessly about whatever they want to write about. Imposing phases, outlines, or article structure is out of scope here.
As fragments emerge from either side of the conversation, append them to a single markdown file.
If the user did not pass a path, ask once where to save the document, then remember it for the rest of the session.
Capture fragments from the very first thing the user says, including the initial prompt.
On first write, put a single H1 at the top with a working title (it can change later) and nothing else: no metadata, no TOC, no date.
</what-to-do>
View the complete source on GitHubwriting-shape
When your agent uses it
Writing, exploit: shape raw material into an article, paragraph by paragraph.
What it loads into context
Frontmatter
31 tokensAlways available to the agent
SKILL.md
1,359 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 loop
- Grounding
- Conversational feel
- Pulling from the pile
- Format arguments to actually have
- Writing rhythm
- Out of scope
Files
SKILL.mdcore5,922 bytesagents/openai.yamlasset144 bytes
Read SKILL.md
<what-to-do>
The user has passed (or will pass) a markdown file of raw material. Treat it as the input pile: anything from a tidy list of fragments to a wall of unstructured prose to a transcript. The format does not matter. Read it end-to-end before doing anything else.
Then run a shaping session that produces a separate article document. This is **exploit**: the exploring is done, the pile is fixed: commit to a structure and mine the pile to fill it. Do not edit the raw material file: it is read-only to this skill.
If the user did not say where to save the article, ask once and remember the path.
</what-to-do>
<supporting-info>
## The loop
View the complete source on GitHubgit-guardrails-claude-code
When your agent uses it
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.
What it loads into context
Frontmatter
66 tokensAlways available to the agent
SKILL.md
589 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
- What Gets Blocked
- Steps
Scripts executed separately
scripts/block-dangerous-git.sh
Files
SKILL.mdcore2,313 bytesSKILL.mdcore2,313 bytesagents/openai.yamlasset112 bytesscripts/block-dangerous-git.shruns507 bytes
Read SKILL.md
# Setup Git Guardrails
Sets up a PreToolUse hook that intercepts and blocks dangerous git commands before Claude executes them.
## What Gets Blocked
- `git push` (all variants including `--force`)
- `git reset --hard`
- `git clean -f` / `git clean -fd`
- `git branch -D`
- `git checkout .` / `git restore .`
When blocked, Claude sees a message telling it that it does not have authority to access these commands.
View the complete source on GitHubmigrate-to-shoehorn
When your agent uses it
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.
What it loads into context
Frontmatter
51 tokensAlways available to the agent
SKILL.md
724 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
- Why shoehorn?
- Install
- Migration patterns
- When to use each
- Workflow
Files
SKILL.mdcore2,795 bytesSKILL.mdcore2,795 bytesagents/openai.yamlasset110 bytes
Read SKILL.md
# Migrate to Shoehorn
## Why shoehorn?
`shoehorn` lets you pass partial data in tests while keeping TypeScript happy. It replaces `as` assertions with type-safe alternatives.
**Test code only.** Never use shoehorn in production code.
Problems with `as` in tests:
- Trained not to use it
- Must manually specify target type
- Double-as (`as unknown as Type`) for intentionally wrong data
View the complete source on GitHubscaffold-exercises
When your agent uses it
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.
What it loads into context
Frontmatter
48 tokensAlways available to the agent
SKILL.md
949 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
- Directory naming
- Exercise variants
- Required files
- Workflow
- Lint rules summary
- Moving/renaming exercises
- Example: stubbing from a plan
Files
SKILL.mdcore3,589 bytesSKILL.mdcore3,589 bytesSKILL.mdcore3,589 bytesagents/openai.yamlasset108 bytes
Read SKILL.md
# Scaffold Exercises
Create exercise directory structures that pass `pnpm ai-hero-cli internal lint`, then commit with `git commit`.
## Directory naming
- **Sections**: `XX-section-name/` inside `exercises/` (e.g., `01-retrieval-skill-building`)
- **Exercises**: `XX.YY-exercise-name/` inside a section (e.g., `01.03-retrieval-with-bm25`)
- Section number = `XX`, exercise number = `XX.YY`
- Names are dash-case (lowercase, hyphens)
## Exercise variants
Each exercise needs at least one of these subfolders:View the complete source on GitHubsetup-pre-commit
When your agent uses it
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.
What it loads into context
Frontmatter
66 tokensAlways available to the agent
SKILL.md
654 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
- What This Sets Up
- Steps
- Notes
Files
SKILL.mdcore2,258 bytesSKILL.mdcore2,258 bytesagents/openai.yamlasset99 bytes
Read SKILL.md
# Setup Pre-Commit Hooks
## What This Sets Up
- **Husky** pre-commit hook
- **lint-staged** running Prettier on all staged files
- **Prettier** config (if missing)
- **typecheck** and **test** scripts in the pre-commit hook
## Steps
### 1. Detect package manager
Check for `package-lock.json` (npm), `pnpm-lock.yaml` (pnpm), `yarn.lock` (yarn), `bun.lockb` (bun). Use whichever is present. Default to npm if unclear.View the complete source on GitHubgrill-me
When your agent uses it
A relentless interview to sharpen a plan or design.
What it loads into context
Frontmatter
24 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.mdcore157 bytesagents/openai.yamlasset137 bytes
grilling
When your agent uses it
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.
What it loads into context
Frontmatter
40 tokensAlways available to the agent
SKILL.md
437 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.mdcore2,077 bytesagents/openai.yamlasset113 bytes
Read SKILL.md
Interview the user relentlessly until you reach a shared understanding. Map this as a **design tree**: every decision branches into the decisions that hang off it.
Work the tree in **rounds**. The **frontier** is every decision whose prerequisites are already settled: the questions you can ask _now_ without guessing at answers you haven't heard yet. Ask the whole frontier in one round: number each question and give your recommended answer. Then wait for the user's answers before the next round.
Format a round like so:
```
❓ **Q1** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
➡<U+FE0F> <your recommended answer>
---
❓ **Q2** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>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
198 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.mdcore940 bytesagents/openai.yamlasset141 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 (`$TMPDIR`, else `/tmp`; `%TEMP%` on Windows) - not the current workspace.
Include a "suggested skills" section in the document, naming which skills the next agent should call the Skill tool for.
Do not duplicate content already captured in other artifacts (specs, 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 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,997 tokensWhen the skill is activated
Reference documents
1,858 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,122 bytesLEARNING-RECORD-FORMAT.mddoc2,747 bytesMISSION-FORMAT.mddoc1,540 bytesRESOURCES-FORMAT.mddoc1,924 bytesSKILL.mdcore9,733 bytesSKILL.mdcore9,733 bytesagents/openai.yamlasset139 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. Workspace paths (`./lessons/` and the rest) resolve from the directory `/teach` was run in; only the `*-FORMAT.md` links resolve from this skill's folder. 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-questionnaire
When your agent uses it
Turn a decision you can't fully answer into a questionnaire for someone else to fill in.
What it loads into context
Frontmatter
32 tokensAlways available to the agent
SKILL.md
632 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
- Document structure
- Context
- How to answer
- <Theme heading>
- Anything else?
Files
SKILL.mdcore2,904 bytesagents/openai.yamlasset166 bytes
Read SKILL.md
Turn something the user can't answer alone into a **questionnaire**: a Markdown document they hand to one person to fill in async, or fill out together over a meeting. The recipient holds knowledge the user lacks; the questionnaire pulls it out of them.
**Grill the send, not the subject.** Interview the user only about the _send_, which they can always answer: who it goes to, and what they need back. The questions in the document then target the **gap** between what the recipient knows and what the user needs.
1. **Who is it going to?** Ask, in one exchange, the recipient's role, expertise, and relationship to the user. This fixes the questionnaire's tone and how much context it must carry. Done when you know who the recipient is and what they know that the user doesn't.
2. **What do you need back?** Ask, in one exchange, the specific decisions or facts the user can't resolve alone and needs from this person. Done when you have a concrete list of what the user must walk away able to do or decide.
3. **Write the questionnaire.** Draft questions aimed at the gap from steps 1–2, following the Document structure below. Write it to `to-questionnaire-<slug>.md` in the current directory (slug from the topic) and report the path. Done when the file exists and every item the user named in step 2 is covered by a question.
## Document structure
Frame the document as a **discovery questionnaire**: the user lacks context, the recipient holds it. Order questions most-important-first, since async means you may only get one pass, and group them under `##` headings by theme once there are more than a handful. Write it using the template below.View the complete source on GitHubwait-what
When your agent uses it
Stop. That last message did not land: re-pitch it.
What it loads into context
Frontmatter
30 tokensAlways available to the agent
SKILL.md
102 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.mdcore396 bytesagents/openai.yamlasset158 bytes
Read SKILL.md
Wait, I don't understand where you've got to here. Re-pitch that: give me a little bit of context, talk in ASD-STE100 Simplified Technical English, and use the ubiquitous language from `GLOSSARY.md` (follow `GLOSSARY-MAP.md` to the right one if the repo has more than one).View the complete source on GitHubwriting-for-agents
When your agent uses it
Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.
What it loads into context
Frontmatter
32 tokensAlways available to the agent
SKILL.md
2,349 tokensWhen the skill is activated
Reference documents
567 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Context pointers
- The two loads
- Information hierarchy
- Steps and completion criteria
- When to split
- Leading words
- Pruning
Files
SKILL-MECHANICS.mddoc2,629 bytesSKILL.mdcore10,886 bytesSKILL.mdcore10,886 bytesSKILL.mdcore10,886 bytesagents/openai.yamlasset102 bytes
Read SKILL.md
Reference for writing any document an agent consumes: a skill, an `AGENTS.md` / `CLAUDE.md`, a doc reached by a pointer. The packaging differs; the writing does not: the same levers make each one predictable, since the agent takes the same _process_ every run rather than producing the same output.
When the document you're writing is a skill, read [`SKILL-MECHANICS.md`](SKILL-MECHANICS.md) for frontmatter, invocation choice, and router skills.
## Context pointers
A **context pointer** is a reference held in the agent's context that names some out-of-context material and encodes the condition for reaching it. A skill's description is one; a line in `AGENTS.md` naming a doc is the same object. The pointer's _wording_, not its target, decides when the agent reaches the material, and how reliably. A must-have target behind a weakly worded pointer is a variance bug: sharpen the wording first, and inline the material only if sharpening fails.
A pointer does two jobs: state what the material is, and list the **branches** that should trigger reaching it (a branch is a distinct case the document handles, so different runs take different paths through it). Every word of an always-loaded pointer costs on every turn, so it earns even harder pruning than the body:
- **Front-load the leading word**: the pointer is where it does its triggering work.
- **One trigger per branch.** Synonyms that rename a single branch are one branch written twice; collapse them and keep only genuinely distinct branches.
- **Cut identity the body already carries.**
View the complete source on GitHubSkills included
- ask-matt
- code-review
- codebase-design
- diagnosing-bugs
- domain-modeling
- grill-with-docs
- implement
- implement-spec
- improve-codebase-architecture
- pr
- prototype
- research
- retro
- setup-matt-pocock-skills
- tdd
- to-spec
- to-tickets
- triage
- wayfinder
- wizard
- chief-of-staff
- claude-handoff
- loop-me
- setup-ts-deep-modules
- software-factory
- writing-beats
- writing-fragments
- writing-shape
- git-guardrails-claude-code
- migrate-to-shoehorn
- scaffold-exercises
- setup-pre-commit
- grill-me
- grilling
- handoff
- teach
- to-questionnaire
- wait-what
- writing-for-agents
Repository facts
- License
- MIT
- Created
- Feb 3, 2026
- Last pushed
- Nov 5, 2026
- Forks
- 26,406
- Open issues
- 194
- Project activity
- Active
Rank over the last 12 weeks
Now #1 · best #1 · up 1 in 30 days
- #4 on Aug 2
- #4 from Aug 7 to Aug 24
- #3 from Aug 25 to Sep 2
- #2 from Sep 3 to Oct 25
- #2 from Oct 28 to Nov 3
- #1 since Nov 4
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 5, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 24 notes
skills/engineering/ask-matt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/ask-matt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/ask-matt/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/code-review/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/code-review/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/diagnosing-bugs/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/research/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/research/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/tdd/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/tdd/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/to-tickets/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/to-tickets/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/wizard/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/engineering/wizard/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/in-progress/loop-me/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/in-progress/software-factory/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/misc/git-guardrails-claude-code/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/misc/migrate-to-shoehorn/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/misc/scaffold-exercises/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/misc/scaffold-exercises/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 2 dangerous shell commandsin 1 file: skills/engineering/wizard/template.sh:147
- 123 network referencesin 19 files: software-factory/TICKET-TRACKERS.md:13 skills/engineering/tdd/mocking.md:42 software-factory/GIT-HOSTS.md:13 and 16 more
- No hidden or obfuscated text
- No instruction overrides
- 6 executable scriptsin 4 files: skills/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh:1 skills/engineering/wizard/template.sh:1 setup-ts-deep-modules/dependency-cruiser.config.cjs:1 and 1 more
- 12 references to secretsin 2 files: skills/engineering/wizard/template.sh:106 skills/engineering/tdd/mocking.md:32
- No requests to vote in Hot
Show all 143 signals by file
.claude-plugin/marketplace.json
.claude-plugin/plugin.json
- Network accessline 5
"author": { "name": "Matt Pocock", "url": "https://www.aihero.dev" - Network accessline 6
"name": "Matt Pocock", "url": "https://www.aihero.dev" }, - Network accessline 7
"url": "https://www.aihero.dev" - Network accessline 8
}, "homepage": "https://www.aihero.dev/s/skills-newsletter", "repository": "https://github.com/mattpocock/skills", - Network accessline 9
"homepage": "https://www.aihero.dev/s/skills-newsletter", - Network accessline 10
"repository": "https://github.com/mattpocock/skills",
skills/engineering/ask-matt/PHASE-BOUNDARIES.md
- Network accessline 21
**1. Can you continue in this session?** Two things make the answer yes: the next phase needs this phase as a **primary source**, or you have enough [smart zone](https://www.aihero.dev/ai-coding-dictionary/smart-zone) left (~150k tokens) fo
skills/engineering/ask-matt/SKILL.md
- Network accessline 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-tic
skills/engineering/diagnosing-bugs/SKILL.md
- Network accessline 26
1. **Failing test** at whatever seam reaches the bug: unit, integration, e2e. 2. **Curl / HTTP script** against a running dev server. - Network accessline 26
1. **Failing test** at whatever seam reaches the bug: unit, integration, e2e. 2. **Curl / HTTP script** against a running dev server. - Network accessline 27
2. **Curl / HTTP script** against a running dev server. - Network accessline 27
2. **Curl / HTTP script** against a running dev server.
skills/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh
skills/engineering/improve-codebase-architecture/HTML-REPORT.md
- Network accessline 11
<meta charset="utf-8" /> <title>Architecture review for {{repo name}}</title> <script src="https://cdn.tailwindcss.com"></script> - Network accessline 11
<meta charset="utf-8" /> <title>Architecture review for {{repo name}}</title> <script src="https://cdn.tailwindcss.com"></script> - Network accessline 12
<title>Architecture review for {{repo name}}</title> <script src="https://cdn.tailwindcss.com"></script> <script type="module"> - Network accessline 12
<title>Architecture review for {{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 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 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"; - Network accessline 15
import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs";
skills/engineering/pr/CREDITS.md
- Network accessline 3
The **Summary** section's menu of visuals (pseudocode, call trees, component trees, file trees, Mermaid, diffs) and its placement guidance come from [Dex Horthy](https://github.com/dexhorthy)'s [`show-me`](https://github.com/humanlayer/huma - Network accessline 3
The **Summary** section's menu of visuals (pseudocode, call trees, component trees, file trees, Mermaid, diffs) and its placement guidance come from [Dex Horthy](https://github.com/dexhorthy)'s [`show-me`](https://github.com/humanlayer/huma
skills/engineering/pr/SKILL.md
- Network accessline 7
author: Dex Horthy organisation: Humanlayer url: "https://github.com/humanlayer/skills/blob/main/plugins/show-me/skills/show-me/SKILL.md" - Network accessline 7
author: Dex Horthy organisation: Humanlayer url: "https://github.com/humanlayer/skills/blob/main/plugins/show-me/skills/show-me/SKILL.md" - Network accessline 8
organisation: Humanlayer url: "https://github.com/humanlayer/skills/blob/main/plugins/show-me/skills/show-me/SKILL.md" --- - Network accessline 8
organisation: Humanlayer url: "https://github.com/humanlayer/skills/blob/main/plugins/show-me/skills/show-me/SKILL.md" --- - Network accessline 9
url: "https://github.com/humanlayer/skills/blob/main/plugins/show-me/skills/show-me/SKILL.md" - Network accessline 9
url: "https://github.com/humanlayer/skills/blob/main/plugins/show-me/skills/show-me/SKILL.md"
skills/engineering/setup-matt-pocock-skills/SKILL.md
- Network accessline 44
- **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 44
- **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 45
- **GitLab**: issues live in the repo's GitLab Issues (uses the [`glab`](https://gitlab.com/gitlab-org/cli) CLI) - Network accessline 45
- **GitLab**: issues live in the repo's GitLab Issues (uses the [`glab`](https://gitlab.com/gitlab-org/cli) CLI)
skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md
skills/engineering/tdd/mocking.md
- Access to secretsline 32
[Credential-related source omitted] - 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 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 43
const api = { getUser: (id) => fetch(`/users/${id}`), getOrders: (userId) => fetch(`/users/${userId}/orders`), - Network accessline 44
getUser: (id) => fetch(`/users/${id}`), - Network accessline 44
getUser: (id) => fetch(`/users/${id}`), - Network accessline 45
getOrders: (userId) => fetch(`/users/${userId}/orders`), - Network accessline 45
getOrders: (userId) => fetch(`/users/${userId}/orders`), - Network accessline 46
createOrder: (data) => fetch('/orders', { method: 'POST', body: data }), - 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 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 50
const api = { fetch: (endpoint, options) => fetch(endpoint, options), }; - Network accessline 51
fetch: (endpoint, options) => fetch(endpoint, options), - Network accessline 51
fetch: (endpoint, options) => fetch(endpoint, options),
skills/engineering/wizard/template.sh
- Executable scriptline 1
#!/usr/bin/env bash - Executable scriptline 1
#!/usr/bin/env bash - Access to secretsline 106
[Credential-related source omitted] - Access to secretsline 106
[Credential-related source omitted] - Dangerous shell operationline 147
rm -f "$tmp" - Dangerous shell operationline 147
rm -f "$tmp" - Access to secretsline 186
[Credential-related source omitted] - Access to secretsline 186
[Credential-related source omitted] - Network accessline 208
stage "Stripe: API keys" say "We'll grab your Stripe test keys and store them for local dev + CI." open_url "https://dashboard.stripe.com/test/apikeys" - Network accessline 208
stage "Stripe: API keys" say "We'll grab your Stripe test keys and store them for local dev + CI." open_url "https://dashboard.stripe.com/test/apikeys" - Network accessline 209
say "We'll grab your Stripe test keys and store them for local dev + CI." open_url "https://dashboard.stripe.com/test/apikeys" step "On the API keys page, copy the Publishable key (starts pk_test_)." - Network accessline 209
say "We'll grab your Stripe test keys and store them for local dev + CI." open_url "https://dashboard.stripe.com/test/apikeys" step "On the API keys page, copy the Publishable key (starts pk_test_)." - Network accessline 210
open_url "https://dashboard.stripe.com/test/apikeys" - Network accessline 210
open_url "https://dashboard.stripe.com/test/apikeys" - Access to secretsline 215
[Credential-related source omitted] - Access to secretsline 215
[Credential-related source omitted] - Access to secretsline 216
[Credential-related source omitted] - Access to secretsline 216
[Credential-related source omitted] - Access to secretsline 217
[Credential-related source omitted] - Access to secretsline 217
[Credential-related source omitted]
skills/in-progress/setup-ts-deep-modules/SKILL.md
- Network accessline 9
Make every package in this repo a **deep module**: a lot of behaviour behind a small interface. A package's public surface is its **entry points** (the files at the package root), and everything in its subfolders is hidden. This skill insta
skills/in-progress/setup-ts-deep-modules/dependency-cruiser.config.cjs
- Executable scriptline 1
Executable file
skills/in-progress/software-factory/GIT-HOSTS.md
- Network accessline 13
- [GitHub](https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api): the default; Issues, Actions, Apps and the largest integration ecosystem. - [GitLab](https://about.gitlab.com/pricing/): issues, merge requests, CI - Network accessline 14
- [GitLab](https://about.gitlab.com/pricing/): issues, merge requests, CI/CD and runners in one product, SaaS or self-managed. - Network accessline 22
- [Bitbucket Cloud](https://support.atlassian.com/bitbucket-cloud/docs/api-request-limits/): Atlassian's git host, paired with Jira and Bitbucket Pipelines. - Network accessline 23
- [Azure DevOps (Azure Repos)](https://learn.microsoft.com/en-us/azure/devops/integrate/concepts/rate-limits): Repos, Boards, Pipelines and Entra identities in one organisation, so it fills all four slots. - Network accessline 24
- [AWS CodeCommit](https://aws.amazon.com/blogs/devops/aws-codecommit-returns-to-general-availability/): a bare git host with IAM identities; pair it with an external tracker and CI. - Network accessline 32
- [Forgejo](https://forgejo.org/2026-10-release-v17-0/): community-governed, lightweight, with Forgejo Actions. - Network accessline 33
- [Gitea](https://about.gitea.com/): lightweight with Gitea Actions; also sold managed. - Network accessline 34
- [GitLab self-managed](https://about.gitlab.com/install/) and [GitHub Enterprise Server](https://docs.github.com/en/enterprise-server@latest): the full platforms on the user's own infrastructure. - Network accessline 42
- [Gerrit](https://www.gerritcodereview.com/): patchset review with label votes; the Android and Chromium model. - Network accessline 43
- [Tangled](https://blog.tangled.org/ci/): git hosting on the AT Protocol with stacked PRs and its own CI runner. - Network accessline 51
- [Cursor Origin](https://cursor.com/origin): from the Graphite team, with GitHub sync and signed PR, review and push webhooks. - Network accessline 52
- [GitLab next-gen SCM](https://about.gitlab.com/blog/gitlab-next-gen-scm/): rebuilt GitLab backend with clone-free agent APIs. - Network accessline 60
- [Cloudflare Artifacts](https://www.cloudflare.com/product/artifacts/): git-compatible storage on Workers; fork a baseline per task. - Network accessline 61
- [Pierre code.storage](https://code.storage/docs): white-label git API with ephemeral branches.
skills/in-progress/software-factory/OBSERVABILITY-PLATFORMS.md
- Network accessline 11
- **Harness OTel**: the agent harness exports OpenTelemetry itself. Claude Code and the Claude Agent SDK take `CLAUDE_CODE_ENABLE_TELEMETRY=1` plus `OTEL_*` variables, with prompts and tool output opt-in; Codex CLI takes an `[otel]` block i - Network accessline 12
- **Platform push**: the model platform sends traces for you, as Claude Managed Agents do to an OTLP destination set in the Claude Console. ([Claude docs](https://platform.claude.com/docs/en/manage-claude/opentelemetry/api)) - Network accessline 17
OpenTelemetry is the common wire: harness OTel and platform push land in any OTLP backend. The GenAI semantic conventions (`invoke_agent`, `chat`, `execute_tool` spans) are still settling, so expect span names to drift. ([OTel GenAI agent s - Network accessline 25
**Starting points**: [GitHub Actions run logs](https://docs.github.com/en/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization), [E2B sandbox logs and metri - Network accessline 37
**Starting points**: [Langfuse](https://langfuse.com/pricing) and [Arize Phoenix](https://phoenix.arize.com) (open source, self-hostable), [LangSmith](https://www.langchain.com/pricing-langsmith), [Braintrust](https://www.braintrust.dev/pri - Network accessline 49
**Starting points**: [Datadog Agent Observability](https://www.datadoghq.com/product/llm-observability/), [Grafana Cloud](https://grafana.com/pricing/), [Honeycomb](https://www.honeycomb.io/pricing), [SigNoz](https://signoz.io/pricing/) (op - Network accessline 59
**Starting points**: [LiteLLM Proxy](https://docs.litellm.ai/docs/proxy/logging) (open source, forwards logs to Langfuse or OTel), [Portkey](https://portkey.ai/pricing).
skills/in-progress/software-factory/RUNNERS.md
- Network accessline 23
Starting points: - [GitHub Actions](https://docs.github.com/en/actions/reference/limits): the default for an all-GitHub factory; [pricing](https://docs.github.com/en/billing/reference/actions-runner-pricing). - Network accessline 24
- [GitHub Actions](https://docs.github.com/en/actions/reference/limits): the default for an all-GitHub factory; [pricing](https://docs.github.com/en/billing/reference/actions-runner-pricing). - Network accessline 25
- [Claude Code GitHub Action](https://code.claude.com/docs/en/github-actions): Claude Code as a workflow step. - Network accessline 26
- [GitLab hosted runners](https://docs.gitlab.com/ci/runners/hosted_runners/linux/): an ephemeral VM per job. - Network accessline 27
- [Actions Runner Controller](https://docs.github.com/en/actions/concepts/runners/actions-runner-controller): self-hosted, one ephemeral pod per job on the user's Kubernetes. - Network accessline 35
Starting points: [E2B](https://e2b.dev/pricing), [Daytona](https://www.daytona.io/pricing), [Modal Sandboxes](https://modal.com/docs/guide/sandboxes), [Vercel Sandbox](https://vercel.com/docs/vercel-sandbox/pricing). - Network accessline 43
Starting points: - [Claude Code cloud](https://code.claude.com/docs/en/claude-code-on-the-web), with [scheduled tasks](https://code.claude.com/docs/en/routines) for cron, API and GitHub event triggers. - Network accessline 44
- [Claude Code cloud](https://code.claude.com/docs/en/claude-code-on-the-web), with [scheduled tasks](https://code.claude.com/docs/en/routines) for cron, API and GitHub event triggers. - Network accessline 45
- [Claude Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview): API-first; create a run against an environment and stream events. - Network accessline 46
- [Codex cloud](https://developers.openai.com/codex/cloud): a container per task. - Network accessline 47
- [Copilot coding agent](https://docs.github.com/en/copilot/concepts/agents/coding-agent/about-coding-agent): assign an issue to Copilot; its runner is a GitHub Actions runner. - Network accessline 55
Starting points: [Claude Code self-hosted environments](https://code.claude.com/docs/en/self-hosted-environments), [Cursor self-hosted pool](https://cursor.com/docs/cloud-agent/self-hosted-pool), [Copilot coding agent on ARC](https://docs.g - Network accessline 63
Starting points: [Fly Machines](https://docs.fly.io/machines/overview) ([pricing](https://docs.fly.io/about/pricing)), [Hetzner Cloud](https://www.hetzner.com/cloud/) plus Docker, [Kubernetes Jobs](https://kubernetes.io/docs/concepts/worklo
skills/in-progress/software-factory/TICKET-TRACKERS.md
- Network accessline 13
- [GitHub Issues](https://docs.github.com/en/copilot/concepts/agents/about-third-party-agents): the default; assign-to-agent for Copilot, Claude and Codex. - Network accessline 14
- [GitLab Issues](https://about.gitlab.com/blog/how-to-use-a-work-item-created-trigger/): Duo Agent Platform flows triggered from work items. - Network accessline 15
- [Forgejo](https://forgejo.org/2026-10-release-v17-0/): self-hosted, Actions-compatible. - Network accessline 23
- [Linear](https://linear.app/developers/agents): the most agent-shaped tracker. - Network accessline 24
- [Jira](https://support.atlassian.com/jira-software-cloud/docs/collaborate-on-work-items-with-ai-agents/): status-triggered agents; fits an org already on Atlassian. - Network accessline 25
- [Shortcut](https://www.shortcut.com/help/integrations/using-ai-agents): assign a story or mention an agent in a comment. - Network accessline 26
- [YouTrack](https://www.jetbrains.com/youtrack/): workflows-as-code; self-hosts. - Network accessline 34
- [Plane](https://developers.plane.so/dev-tools/agents/overview): Linear-like; bot users per app; agents reply in comments. - Network accessline 35
- [Huly](https://github.com/hcengineering/huly-selfhost): all-in-one workspace with two-way GitHub sync; a heavy stack to operate. - Network accessline 36
- [OpenProject](https://www.openproject.org/): mature, classic project management. - Network accessline 44
- [Notion](https://www.notion.com/help/custom-agents): database-as-tracker; agents fire on database changes. - Network accessline 45
- [Asana](https://asana.com/product/ai/ai-teammates): AI Teammates take assigned tasks. - Network accessline 46
- [ClickUp](https://clickup.com/brain/cloud-agents): Cloud Agents return a PR in the task thread. - Network accessline 47
- [Trello](https://developer.atlassian.com/cloud/trello/guides/rest-api/webhooks/): boards and lists; webhooks plus Butler automation. - Network accessline 55
- [Beads](https://github.com/steveyegge/beads): JSONL with dependency tracking, so a run picks the next unblocked ticket. - Network accessline 56
- [Backlog.md](https://github.com/MrLesk/Backlog.md): Markdown tasks with a Kanban view and MCP server. - Network accessline 60
The factory's own app holds tickets in its own database, usually beside the orchestrator. The "Own tracker" design. A factory picks it when the tracker *is* the product (an internal platform, a customer-facing support factory) or no off-the
skills/misc/git-guardrails-claude-code/scripts/block-dangerous-git.sh
- Executable scriptline 1
#!/bin/bash
skills/productivity/teach/RESOURCES-FORMAT.md
- Network accessline 12
- [Book: _The Science and Practice of Strength Training_ by Zatsiorsky & Kraemer](https://example.com) - Network accessline 12
- [Book: _The Science and Practice of Strength Training_ by 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?" by Greg Nuckols (Stronger By Science)](https://example.com) Evidence-based revi - 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?" by Greg Nuckols (Stronger By Science)](https://example.com) Evidence-based revi - Network accessline 14
- [Article: "How Much Should I Train?" by Greg Nuckols (Stronger By Science)](https://example.com) - Network accessline 14
- [Article: "How Much Should I Train?" by Greg Nuckols (Stronger By Science)](https://example.com) - Network accessline 19
- [r/weightroom](https://reddit.com/r/weightroom) - Network accessline 19
- [r/weightroom](https://reddit.com/r/weightroom)
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.
Declared and executed: 1 fact
- Contacts dashboard.stripe.com, which SKILL.md, the README and the plugin manifest do not mentionwizard/template.sh:210High confidence
Signal confidence: 134 facts
- Network access in prose of documentationask-matt/PHASE-BOUNDARIES.md:21Low confidence
- Network access in prose of the SKILL.mdask-matt/SKILL.md:40Low confidence
- Network access in prose of the SKILL.mdskills/engineering/diagnosing-bugs/SKILL.md:26Low confidence
- Network access in prose of the SKILL.mddiagnosing-bugs/SKILL.md:26Low confidence
- Network access in prose of the SKILL.mdskills/engineering/diagnosing-bugs/SKILL.md:27Low confidence
- Network access in prose of the SKILL.mddiagnosing-bugs/SKILL.md:27Low confidence
- Executable script in code of a file that runsskills/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh:1High confidence
- Executable script in code of a file that runsdiagnosing-bugs/scripts/hitl-loop.template.sh:1High confidence
- Network access in code of a file that runsskills/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh:34High confidence
- Network access in code of a file that runsdiagnosing-bugs/scripts/hitl-loop.template.sh:34High confidence
- Network access in code of documentationskills/engineering/improve-codebase-architecture/HTML-REPORT.md:11Low confidence
- Network access in code of documentationimprove-codebase-architecture/HTML-REPORT.md:11Low confidence
- Network access in code of documentationskills/engineering/improve-codebase-architecture/HTML-REPORT.md:12Low confidence
- Network access in code of documentationimprove-codebase-architecture/HTML-REPORT.md:12Low confidence
- Network access in code of documentationskills/engineering/improve-codebase-architecture/HTML-REPORT.md:13Low confidence
- Network access in code of documentationimprove-codebase-architecture/HTML-REPORT.md:13Low confidence
- Network access in code of documentationskills/engineering/improve-codebase-architecture/HTML-REPORT.md:14Low confidence
- Network access in code of documentationimprove-codebase-architecture/HTML-REPORT.md:14Low confidence
- Network access in code of documentationskills/engineering/improve-codebase-architecture/HTML-REPORT.md:15Low confidence
- Network access in code of documentationimprove-codebase-architecture/HTML-REPORT.md:15Low confidence
- Network access in prose of documentationskills/engineering/pr/CREDITS.md:3Low confidence
- Network access in prose of documentationpr/CREDITS.md:3Low confidence
- Network access in the frontmatter of the SKILL.mdskills/engineering/pr/SKILL.md:7Low confidence
- Network access in the frontmatter of the SKILL.mdpr/SKILL.md:7Low confidence
- Network access in the frontmatter of the SKILL.mdskills/engineering/pr/SKILL.md:8Low confidence
- Network access in the frontmatter of the SKILL.mdpr/SKILL.md:8Low confidence
- Network access in the frontmatter of the SKILL.mdskills/engineering/pr/SKILL.md:9Low confidence
- Network access in the frontmatter of the SKILL.mdpr/SKILL.md:9Low confidence
- Network access in prose of the SKILL.mdskills/engineering/setup-matt-pocock-skills/SKILL.md:44Low confidence
- Network access in prose of the SKILL.mdsetup-matt-pocock-skills/SKILL.md:44Low confidence
- Network access in prose of the SKILL.mdskills/engineering/setup-matt-pocock-skills/SKILL.md:45Low confidence
- Network access in prose of the SKILL.mdsetup-matt-pocock-skills/SKILL.md:45Low confidence
- Network access in prose of documentationskills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md:3Low confidence
- Network access in prose of documentationsetup-matt-pocock-skills/issue-tracker-gitlab.md:3Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueskills/engineering/tdd/mocking.md:32Low 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 documentationskills/engineering/tdd/mocking.md:42Low confidence
- Network access in code of documentationtdd/mocking.md:42Low confidence
- Network access in code of documentationskills/engineering/tdd/mocking.md:43Low confidence
- Network access in code of documentationtdd/mocking.md:43Low confidence
- Network access in code of documentationskills/engineering/tdd/mocking.md:44Low confidence
- Network access in code of documentationtdd/mocking.md:44Low confidence
- Network access in code of documentationskills/engineering/tdd/mocking.md:45Low confidence
- Network access in code of documentationtdd/mocking.md:45Low confidence
- Network access in code of documentationskills/engineering/tdd/mocking.md:46Low confidence
- Network access in code of documentationtdd/mocking.md:46Low confidence
- Network access in code of documentationskills/engineering/tdd/mocking.md:49Low confidence
- Network access in code of documentationtdd/mocking.md:49Low confidence
- Network access in code of documentationskills/engineering/tdd/mocking.md:50Low confidence
- Network access in code of documentationtdd/mocking.md:50Low confidence
and 84 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/engineering/ask-matt/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/engineering/ask-matt/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/engineering/ask-matt/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/engineering/ask-matt/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.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/mattpocock-skills/)