π― Why customize
A skill installed directly from the public repository already works β but it works generically. It doesn't know your customer, your vocabulary, your stack, or your compliance rules. The quality gap between a skill good is a skill excellent itβs in a thin layer: the domain you inject into it.
Customizing a skill doesn't mean redoing it. It means taking a foundation that already solves the generic problem (reviewing code, generating documentation, planning a feature) and adding the 5β10 questions, 3 technical terms, and 2 business rules that turn the skill into a teammate who speaks your companyβs language.
π‘ Practical Tip
A generic skill becomes great when you load it with the vocabulary from your domain. For example, the skill code-review the generic version finds logic bugs; the customized version for a tax team finds those too "it's calculating ICMS without considering tax substitution". Same structure, new context, 10x the value.
β Skill adapted to your domain
- β Knows company terminology (acronyms, products, teams)
- β Asks specific questions about your business
- β Trigger activates in the right contexts
- β Reuses the upstream's logic and workflow
- β Keep community updates when you want
β Out-of-the-box skill
- β Asks generic questions you've already answered
- β Doesn't recognize terms from your domain
- β Trigger activates in the wrong contexts (or never activates)
- β Result needs a lot of manual correction afterward
- β May conflict with internal rules (compliance)
π Detailed anatomy of a SKILL.md
Before customizing, you need to understand its anatomy. Every skill has 3 layers: the YAML frontmatter (activation metadata), the body in Markdown (instructions for the agent) and, optionally, reference files in references/. Most of the customization happens in the first two.
π Complete SKILL.md (reference model)
--- name: minha-skill description: Use when X happens. Triggers: keyword1, keyword2. --- # Skill Body ## When to use Descreva os cenarios onde o agente DEVE carregar esta skill. Inclua exemplos de frases do usuario que devem ativar. ## Workflow 1. Read the relevant project files 2. Ask the domain-specific questions in references/QUESTIONS.md 3. Produce the output document at docs/output.md 4. Validate against the checklist in references/CHECKLIST.md ## Output format Sempre devolva um resumo em 3 bullets + caminho do arquivo gerado.
Each part has a different role:
-
β’
name β unique identifier. Used internally by the agent and by you in the terminal (
/minha-skill). - β’ description β the most critical field. It's what the agent reads to decide whether to load the skill. Bad triggers = a dead skill.
- β’ When to use β scenarios in prose. Reinforces the triggers and adds context.
- β’ Workflow β numbered steps. It's the playbook the agent follows.
- β’ Output format β defines the output format. Without it, the agent improvises.
β οΈ The field that decides everything
O description is the trigger. If it's vague, your skill will never activateβeven with a brilliant workflow. Before customizing the workflow, customize description. Itβs the entry point.
π£ Effective triggers and descriptions
The ideal description has 3 parts: when to activate (scenario in prose), explicit triggers (keywords) and, optionally, contraindications (when not to activate). This format drastically reduces false positives and false negatives.
β Vague description
"Help with code"
Active in any a conversation about programming. Result: the skill is loaded all the time, with no focus. The agent doesnβt know when itβs actually useful.
β Specific description
"Use when debugging intermittent bugs in async pipelines. Triggers: race condition, flaky test, retry storm, intermittent."
Activates only when the problem is this type. The agent loads focused skills and the noise drops.
π§ 3 real before-and-afters
# Exemplo 1 β Skill de revisao de PR description: Revisa pull requests description: Use ao revisar PRs em monorepo TypeScript com Turborepo. Triggers: revisar PR, code review, analisar diff, checar mudancas. NAO usar para revisao de docs ou changelog. # Exemplo 2 β Skill de migration SQL description: Cria migrations de banco description: Use ao criar/ajustar migrations Postgres com Prisma em ambiente multi-tenant. Triggers: migration, alter table, adicionar coluna, schema change, prisma migrate. # Exemplo 3 β Skill de checklist de compliance description: Ajuda com compliance description: Use antes de fazer deploy em ambiente que processa dados de cartao (PCI-DSS). Triggers: deploy, release, producao, pagamento, cartao, PCI. Bloqueia o deploy se faltar item.
Notice the pattern: each description became a phrase + list of triggers + optional blocking. This is the format the agent uses best to decide when to activate.
βοΈ Editing internal templates
A lot of skills load templates: files in references/ or templates/ with questions, checklists, or document templates. Customizing a skill usually means editing these files β not the SKILL.md itself.
Example: the skill /grill-with-docs uses a file QUESTIONS.md with generic questions to challenge your plan. For a team that works with Brazilian tax regulations, these questions aren't enough. You adds the tax domain questions without changing the rest.
π Editing references/QUESTIONS.md
# QUESTIONS.md (template original) ## Architecture - Por que essa solucao e nao outra? - Quais alternativas voce considerou? - O que acontece se a carga 10x? ## Data - Como esses dados sao persistidos? - Qual o owner do schema? ## Fiscal (BR) β adicionado pelo time - Esta operacao gera fato gerador de ICMS? - Tem substituicao tributaria (ICMS-ST) envolvida? - Estado de origem e destino sao os mesmos? Se nao, qual a aliquota interestadual aplicavel? - O CFOP escolhido bate com a natureza da operacao? - Existe regime especial (Simples, MEI, Lucro Real) que muda o calculo? - Como o XML da NFe vai refletir essa mudanca?
Notice that you adds, doesn't remove it. It keeps what came from upstream (general architecture and data best practices) and injects domain knowledge. That way, when the tax team uses /grill-with-docs, they get an interrogation that covers both overall architecture how much Brazilian tax rules.
π Where to edit
- references/*.md β Questions, checklists, term dictionaries.
- templates/*.md β Document templates the skill fills in.
- SKILL.md (workflow) β Only edit if the sequence of steps changed.
- SKILL.md (description) β ALWAYS edit when adding new domain triggers.
π΄ Forks vs local overrides
Two strategies dominate in the real world: fork the entire repo of skills (you become responsible for everything) or local override in ~/.claude/skills/ (you keep the upstream clean and override only what you need). Each has a clear trade-off.
β Fork of the entire repo
- βFull control: can change any skill
- βSingle version, clear history
- βGood for large teams (CI validates everything)
- βKeeping up with upstream changes is recurring work
- βMerge conflicts can pile up
β Local override in ~/.claude/skills/
- βUpstream keeps updating on its own
- βYou version only what you customized
- βGreat for an individual or small team
- βAn override may conflict when upstream changes the structure
- βSharing across machines requires manual syncing or a separate repo
The choice is almost never binaryβitβs a decision path based on how many skills you change and how critical it is to stay in sync with the community.
Do you customize 1β3 skills?
Individual case or small team
Use local override. Copy SKILL.md to ~/.claude/skills/nome-skill/ and edits it. Upstream remains independent.
Do you customize 5+ skills and have a team?
Sharing and standardization matter
Fork of the repo + internal repository. The whole team uses the same customized version. CI runs quality checks.
Do you need frequent upstream updates?
The community quickly evolves the foundation
Use local override with git pull regularly against upstream. The override absorbs only what you changedβthe rest updates on its own.
Did you change the entire workflow?
The skill became something else
Consider create a new skill (module 3.3). Customization has its limits β when the workflow changes a lot, it's cleaner to create a dedicated skill.
πΏ Version control with git
Customization without version control is a waste of time. At some point, you'll want to roll back, compare versions, or share with the team. The practice that works best: separate branch for customizations + periodic rebase with upstream.
βοΈ Initial setup β complete flow
# 1. Clone o repo de skills (publico ou fork do time) git clone https://github.com/seu-org/skills.git cd skills # 2. Crie um branch para suas customizacoes do dominio git checkout -b custom/fiscal-br # 3. Customize as skills (edite SKILL.md, references/, etc) $EDITOR grill-with-docs/references/QUESTIONS.md # 4. Commit com mensagem que explica O QUE de dominio mudou git add grill-with-docs/ git commit -m "grill-with-docs: adiciona perguntas fiscais BR (ICMS-ST, CFOP)" # 5. Periodicamente, pegue updates do upstream git fetch origin main git rebase origin/main # 6. Se houver conflito, resolva preservando seu dominio # Em geral conflitos sao em paragrafos de exemplo, # nao em estrutura β facil de resolver. # 7. Empurre para o seu fork ou repo do time git push origin custom/fiscal-br --force-with-lease
Three rules that prevent pain:
- β’ Small commits by domain. "add tax questions" is one commit; "adjust the grill workflow" is another. Makes rebasing cheap.
- β’ Rebase, don't merge. Keeps the history linear; when you go back through the log, you can see exactly which skills you customized, in order.
-
β’
Version tag when stable.
git tag fiscal-v1.0. You can roll back quickly if a customization goes wrong.
π§ͺ Complete example: customizing /grill-with-docs
Let's bring it all together in a real case. You're a tech lead at a Brazilian fintech. The skill /grill-with-docs of the context-mode does a good grilling in the planning phase before coding, but doesnβt know tax compliance. Weβll customize it step by step.
Copy the skill to the local override
We bring the complete structure to ~/.claude/skills/ renaming to isolate the tax version.
Add a "Domain Questions" section
No references/QUESTIONS.md, add the fiscal block without removing anything from the generic one.
Updates description with tax-related triggers
No SKILL.md, includes domain keywords (ICMS, CFOP, NFe) for correct activation.
Test and version
Run it on a real plan, confirm that the agent asks the tax questions, and commit on the branch custom/fiscal-br.
π Full diff of the customization
# Passo 1: copia para override local mkdir -p ~/.claude/skills/grill-with-docs-fiscal cp -r ./grill-with-docs/* ~/.claude/skills/grill-with-docs-fiscal/ # Passo 2: SKILL.md β antes e depois --- name: grill-with-docs-fiscal description: Grilling session that challenges your plan against the existing domain model. description: Grilling session that challenges your plan against the domain model AND Brazilian fiscal rules. Triggers: grill, desafiar plano, plano fiscal, ICMS, ICMS-ST, CFOP, NFe, substituicao tributaria, fiscal BR. NAO usar para revisao puramente de UI/frontend. --- # Passo 3: references/QUESTIONS.md β adiciona secao ## Domain Questions β Fiscal BR ### Operacao - Esta operacao gera fato gerador de ICMS? - Tem ICMS-ST (substituicao tributaria)? - Existe DIFAL entre estados envolvidos? - O CFOP escolhido bate com a natureza da operacao? ### Regime - Cliente esta em Simples Nacional, Lucro Real ou Presumido? - Tem regime especial (RETID, Reintegra, Zona Franca)? ### Documento fiscal - Como NFe vai refletir a mudanca? - Precisa de carta de correcao para historico? - Vai impactar SPED Fiscal ou EFD-Contribuicoes? ### Compliance - A regra esta no nosso parecer juridico fiscal vigente? - Quem Γ© o owner contabil para validar? # Passo 4: commit no branch de customizacoes cd ~/skills-fork git checkout -b custom/fiscal-br git add grill-with-docs-fiscal/ git commit -m "grill-with-docs-fiscal: customiza com regras fiscais BR - adiciona triggers ICMS, ICMS-ST, CFOP, NFe - adiciona secao Domain Questions com 15 perguntas fiscais - mantem questoes genericas de arquitetura do upstream"
Result: when you or someone on the team runs /grill-with-docs-fiscal in a plan involving NFe issuance, the agent goes through the 15 compliance questions in addition to the general ones. The plan that comes out of it has already accounted for tax substitution, DIFAL, and SPED β things the generic skill would never ask about.
π₯ Sharing customizations with the team
Individual customization is good; shared customization is a multiplier. When the whole team uses the same customized version of the skills, decisions stay consistent β every PR gets reviewed with the same rigor, and every plan goes through the same grilling.
β Team skills monorepo
- βOne version-controlled source of truth
- βCI validates the structure (frontmatter, required sections)
- βNew onboarding:
git cloneand done - βPR reviews ensure the skillβs quality
- βThe whole team thinks alike in critical areas
β Everyone on their own machine
- βDrift: each developer has a slightly different version
- βKnowledge gets stuck on the machine of whoever customized it
- βOnboarding: a new developer inherits nothing
- βNo CI, no review, no quality guarantees
- βAgent decisions vary across developers (same plan, different questions)
π Syncing in the team monorepo
# Repo: github.com/empresa/skills-team # Dev novo: instala todas as skills do time git clone git@github.com:empresa/skills-team.git ~/.claude/skills # Dev existente: pega atualizacoes cd ~/.claude/skills git pull origin main # Customizou algo? Manda PR para o monorepo do time git checkout -b feat/grill-fiscal-novas-perguntas $EDITOR grill-with-docs-fiscal/references/QUESTIONS.md git commit -m "grill-fiscal: 3 perguntas sobre EFD-Reinf" git push origin feat/grill-fiscal-novas-perguntas gh pr create --fill
This workflow turns each individual improvement into a team asset. When someone realizes an important question is missing, it becomes a PR β not a file on their machine that nobody else will use.
π€ When to create a new skill vs. customize one
Not every need calls for customization. Sometimes what you need is a skill new β the workflow is so different that extending an existing one is worse than starting from scratch. Four questions resolve that uncertainty.
π§ The 4 questions
- Is the workflow (sequence of steps) the same? If yes β customize. If the execution flow changes completely β new skill.
- Does the final output have the same format? If yes β customize. If you're generating a different artifact (code vs. document vs. JSON) β new skill.
- Do the triggers overlap with the base skill? If yes β customize (same trigger, more context). If they're completely new triggers β new skill.
- Are you adding <30% of the content? If yes β customize. If you're going to rewrite half of SKILL.md β new skill (it's cleaner).
Rule of thumb: 3+ "new skill" in the responses = stop customizing and build from scratch. Youβll have less trouble in the long run.
ποΈ Hands-on exercise
Time to get hands-on. The exercise is simple and short, but itβs what separates those who have only read from those who have really learned to customize.
π Step by step
- Choose 1 skill that you use at least once a week.
- Identify 1 point where it "doesnβt know your domain" β a question thatβs too generic, a trigger that picks up the wrong context, or a template without terms from your work.
- Copy the SKILL.md for
~/.claude/skills/. - Customize the point you identified (description, references/*, or workflow).
- Document the before and after: copy and paste the old text, copy and paste the new text, and describe in 2 sentences what improved.
- Use the new version for 1 week. If it helped, commit and share it. If not, adjust it or go back to the original.
π‘ Where the weak point usually is
In most cases, the thing that "doesn't know your domain" is a generic question in references/. Start there before changing the workflow.
π Module Summary
Next Module:
3.3 β Creating skills from scratch