π³ Structure overview
The repository mp-skill/ and is organized in a short root with three types of elements: documentation files at the root, service folders (docs, scripts, manifest) and the folder skills/ divided into buckets. See the entire tree in one place:
mp-skill/ βββ README.md # indice publico de skills βββ CONTEXT.md # quem e o autor, principios βββ CLAUDE.md # regras do repo para o agente βββ LICENSE # licenca de uso βββ .claude-plugin/ β βββ plugin.json # manifest do plugin Claude Code βββ docs/ # documentos longos, ADRs βββ scripts/ # automacoes auxiliares βββ skills/ βββ engineering/ # codigo diario (publico) βββ productivity/ # workflow nao-codigo (publico) βββ misc/ # uso raro (publico) βββ personal/ # meu setup (privado) βββ in-progress/ # rascunhos (privado) βββ deprecated/ # aposentadas (privado)
π Quick layout read
- β’ Lean root: just 4 `.md` files + 1 LICENSE + 3 service folders.
- β’ Everything that becomes a skill lives in
skills/: nothing outside this directory. - β’ Six buckets, six intentions: no bucket competes with another.
- β’ Public vs. private visibility and determined by the bucketβnot by a flag inside the `.md`.
βοΈ skills/engineering/ β daily coding
The bucket engineering/ keeps the skills you actually reach for when writing, reading, or reviewing code. There are 10 skills, each with a focused purpose and a clear verb. If a skill here isnβt used by weeks, it moves down to misc/ β engineering doesnβt accumulate baggage.
The 10 engineering/ skills
π‘ Practical Tip
Before creating a new skill in engineering/, read the names of the 10 existing ones. If the new idea is variation of one of them, and itβs better to extend the existing one than duplicate it. The bucket only grows when a truly new intent appears.
π§° skills/productivity/ β non-code workflow
The bucket productivity/ exists for skills that orchestrate the work: conduct interviews, close sessions, write, decide. Thereβs no code compilation here. These are 4 skills, all used weekly.
The 4 productivity/ skills
-
1
grill-me β adversarial session: the agent questions your plan before you spend time carrying it out.
-
2
handoff β packages a sessionβs state so the next agent can continue without losing context.
-
3
brainstorm β explores intent and requirements before writing a single line of code.
-
4
doc-coauthoring β guides a structured co-authoring workflow for long documents.
π Why separate from engineering/
Productivity skills activate in different phases of the workβbefore (brainstorm, grill-me), during (handoff), or in parallel (doc-coauthoring). Mixing it with engineering pollutes the agent's triggers: it tries to pull in handoff in the middle of a TDD cycle, or tdd during a PRD conversation.
π¦ skills/misc/ β rarely used
misc/ and purgatory. Skills that used to be useful and still apply in specific cases, but don't deserve daily mental space. They belong here specifically so they don't clutter engineering or productivity.
benchmark-models
Run a set of prompts across several models and compare outputs. Useful when youβre evaluating a model upgrade, rare on a typical day.
export-conversation
Packages a conversation in Markdown for archiving or sharing. Only appears when you really want to save everything.
video-transcript
Transcribes and summarizes a video. Used occasionally when someone shares a 1-hour talk.
scrape-doc
Captures an HTML page and converts it to clean Markdown. Solves a very specific problem.
β¬οΈ When to move from misc/ to engineering/
If you notice you're invoking a skill for misc/ more than 2x per week, itβs no longer βrare.β Promote it to engineering/ or productivity/, add it to the README and the plugin.json. The reverse applies too: a skill in engineering that's been idle for 1+ month moves down to misc.
π personal/, in-progress/, deprecated/
The three buckets private. Everything here is in the repo, but no appears in the README.md nor in the plugin.json. Knowing the difference between them keeps you from cluttering the public catalog with drafts or tools so specific they only work on your machine.
β Appears publicly
-
β
Skills in
engineering/ -
β
Skills in
productivity/ -
β
Skills in
misc/ -
β
Listed in the
README.mdroot -
β
Registered in
.claude-plugin/plugin.json -
β
Listed in the
README.mdof the bucket
β Stays private
-
β
personal/β tied to my setup -
β
in-progress/β unfinished draft -
β
deprecated/β retired, kept for history - β NEVER appears in the root README
-
β
NEVER goes into
plugin.json - β NEVER mentioned in the bucket README
π Promotion rule
For a skill exit of personal/in-progress/deprecated and enter in engineering/productivity/misc, you need to do this in the same PR:
- 1. Move the folder to the correct public bucket.
- 2. Add a line to the
README.mdroot linking to theSKILL.md. - 3. Add an entry in
.claude-plugin/plugin.json. - 4. Update the
README.mdof the bucket with a one-line description.
Without these 4 steps, the promotion is incomplete β and the agent will be able to discover the skill, but the human catalog wonβt.
π CLAUDE.md, CONTEXT.md, README.md
The three `.md` files in the root have distinct audiences. Swapping one for the other confuses both people and agents. Remember: README is for newcomers, CONTEXT is for understanding intent, and CLAUDE is for the agent to operate.
README.md
human-facing publicBrowsable index of public skills. Each skill is linked to its SKILL.md. Anyone arriving at GitHub reads this file first.
CONTEXT.md
intent and principlesWho the author is, why the repo exists, design principles that guide decisions (e.g., "skills are small and focused"). Stable; rarely changes.
CLAUDE.md
agent rulesOperational conventions: where to create skills, what needs to appear in README/plugin.json, bucket restrictions. Claude Code reads it automatically.
# Trecho real do CLAUDE.md deste repo Skills are organized into bucket folders under `skills/`: - engineering/ # daily code work - productivity/ # daily non-code workflow tools - misc/ # kept around but rarely used - personal/ # tied to my own setup, not promoted - in-progress/ # drafts not yet ready to ship - deprecated/ # no longer used Every skill in engineering/, productivity/, or misc/ must have a reference in the top-level README.md and an entry in .claude-plugin/plugin.json. Skills in personal/, in-progress/, and deprecated/ must not appear in either.
π§ Practical Tip
When you're unsure where to write a new rule, ask: who needs to read this? If a human is exploring the project, use CONTEXT or README. If the agent is operating it, use CLAUDE. Putting everything in README is the most common mistake β and what makes the repo hard to maintain.
π‘ plugin.json and how Claude Code discovers skills
Claude Code doesn't discover your skills by filesystem magic. It reads a manifest in .claude-plugin/plugin.json that explicitly lists every published skill. Without an entry in the manifest, the skill exists on disk but the agent can't see it.
// .claude-plugin/plugin.json { "name": "mp-skill", "version": "1.0.0", "description": "Skills do Matt Pocock para Claude Code", "skills": [ { "name": "diagnose", "path": "skills/engineering/diagnose" }, { "name": "tdd", "path": "skills/engineering/tdd" }, { "name": "handoff", "path": "skills/productivity/handoff" } // ... uma entrada por skill publica ] }
β Good use of the manifest
- βOne entry per published skill
- βPath relative to the repo root
- βName matches the
name:of the front matter - βUpdated in the same PR that adds the skill
β Typical errors
- βList skills from
personal/orin-progress/ - βName differs from the frontmatter
- βPath pointing to a file, not a folder
- βForgetting the input β the agent can't see the skill
π Discovery workflow
Claude Code loads the plugin.json on startup, reads each listed path, opens the SKILL.md of each one and indexes the frontmatter (especially the description) in the trigger memory. And the description determines whether the skill activates in a conversationβnot the filename.
𧬠Anatomy of a SKILL.md
Every skill is a single file: SKILL.md, inside a folder named after the skill. YAML frontmatter at the top, markdown body below. There are no other required filesβif you need references, put them in references/ inside the folder.
--- <-- frontmatter YAML name: minha-skill description: Use when ... (descricao de trigger) --- <-- fim do frontmatter # Skill body Instrucoes em markdown para o agente seguir quando esta skill ativa. Pode ter exemplos, regras, checklists, snippets de codigo. Mantenha conciso: o agente vai ler isso TODA vez que a skill ativar. Cada linha gasta contexto.
π― Rules for the description
- β’ Start with "Use when ..." or "Use this when ..." β the agent looks for this pattern.
- β’ List concrete triggers: "when the user wants to debug a failing test", not "for debugging".
- β’ Include keywords that the user will probably say ("rebind," "permission," "bucket").
- β’ If there is cases where NOT to use, mention: "Skip if ...".
- β’ 1β3 sentences. Triggers use up context in every conversation.
π Folder structure of a skill
skills/engineering/diagnose/ βββ SKILL.md # obrigatorio βββ references/ # opcional, refs longas β βββ checklist.md βββ examples/ # opcional, exemplos βββ caso-1.md
π Module Summary
Next Module:
2.3 β Skill naming conventions and granularity