PTENES
MODULE 2.2

πŸ—‚οΈ Repository structure

Each folder has a clear purpose. Understand the layout of the mp-skill/ and what makes it possible to find a skill in seconds, decide where to create the next one, and know what is public and what is private.

9
Sections
40
Minutes
Inter
Level
Practical
Type
1

🌳 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`.
Root
4 docs + LICENSE
Service
docs, scripts, plugin
Buckets
6 folders in skills/
Promotion
README + plugin.json
2

βš™οΈ 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

diagnose Investigate a bug or unexpected behavior systematically before guessing at a fix.
grill-with-docs Stress-tests a plan against the project’s existing documentation and updates ADRs inline.
triage Classifies issues and tasks into quick priority buckets.
improve-architecture Audits codebase architecture and proposes concrete simplifications.
setup-mp-skills Install and configure Matt Pocock's entire skill package in a new project.
tdd Guides test-driven development with explicit red-green-refactor.
to-issues Break an idea or plan into actionable GitHub issues.
to-prd Turns an exploratory conversation into a structured PRD.
zoom-out Forces a step back to review assumptions and the direction of the work.
prototype Builds a disposable working prototype to validate an idea.

πŸ’‘ 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.

Frequency
Daily
Focus
Code
Visibility
Publish
Size
10 skills
3

🧰 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.

4

πŸ“¦ 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.

1

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.

2

export-conversation

Packages a conversation in Markdown for archiving or sharing. Only appears when you really want to save everything.

3

video-transcript

Transcribes and summarizes a video. Used occasionally when someone shares a 1-hour talk.

4

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.

5

πŸ”’ 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.md root
  • βœ“ Registered in .claude-plugin/plugin.json
  • βœ“ Listed in the README.md of 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.md root linking to the SKILL.md.
  • 3. Add an entry in .claude-plugin/plugin.json.
  • 4. Update the README.md of 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.

6

πŸ“„ 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 public

Browsable index of public skills. Each skill is linked to its SKILL.md. Anyone arriving at GitHub reads this file first.

CONTEXT.md

intent and principles

Who 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 rules

Operational 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.

7

πŸ“‘ 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/ or in-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.

8

🧬 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
Required
SKILL.md
Frontmatter
name + description
Trigger
"Use when..."
Body
Concise Markdown

πŸ“Œ Module Summary

βœ“
Lean root β€” 4 docs, LICENSE, 3 service folders, 1 `skills/` folder.
βœ“
6 buckets, 6 intents β€” engineering, productivity, misc, personal, in-progress, deprecated.
βœ“
Public vs. private β€” decided by bucket, not by internal flag.
βœ“
Promotion in 4 steps β€” move the folder + root README + plugin.json + bucket README.
βœ“
CLAUDE/CONTEXT/README β€” three distinct audiences: the agent, principles, and the person arriving.
βœ“
plugin.json and the manifest β€” without an entry there, the skill is invisible to the agent.
βœ“
SKILL.md = frontmatter + body β€” description with "Use when..." and what activates the skill.

Next Module:

2.3 β€” Skill naming conventions and granularity