Communitygithub.com

Touch Map

Use quando a intenção da mudança já está definida e o agente deve mapear o que uma mudança de comportamento toca antes de um plano de implementação ou qualquer código. Use para novas funcionalidades, correções de bugs e refatorações que movem um limite. Não use para erros de digitação, comentários, formatação, diffs apenas de lockfile, docs sem código, ou enquanto o usuário ainda está decidindo o que quer.

O que é Touch Map?

O Touch Map é uma skill para agentes de IA (como Claude Code, Cursor, Codex) que foca em mapear, antes de qualquer implementação ou plano, todos os componentes, arquivos e domínios que uma mudança de comportamento precisa tocar. Diferente de skills de implementação ou planejamento detalhado, o Touch Map produz um mapa mental estruturado que serve como artefato independente — ele não gera código, não carrega a próxima skill na pipeline e não escreve planos de implementação. A skill é ativada somente após a intenção da mudança estar clara (funcionalidade, bug ou refatoração definida). Ela usa um atlas de domínios persistente (`.agent/domain-map.json`) para identificar os domínios impactados, então percorre arquivos relevantes seguindo importações apenas enquanto a lista de 'arquivos a tocar' ainda está mudando. O resultado final são seis seções: domínios atingidos, partes envolvidas, como elas se comunicam, arquivos a tocar, o que não será tocado e a decisão de caminho (quando há múltiplas rotas possíveis). A skill é útil para evitar trabalho redundante, garantir cobertura completa e manter um registro evolutivo da arquitetura do repositório, sendo compatível com qualquer agente que siga o protocolo de skills estruturadas.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AlemTuzlak/skills/tree/HEAD/skills/touch-map

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Touch Map faz?

Construa um mapa mental do que esta mudança deve tocar para ser concluída. Não escreva um plano de implementação. Não escreva código. Não carregue a próxima skill em uma pipeline. Uma skill de workflow posterior sequencia este mapa com outras skills.

O mapa é o produto final: as partes e os arquivos necessários para levar a mudança adiante.

Quando Usar

Carregue após o usuário ter decidido o que é a mudança e qualquer como que já escolheu.

  • Execute para: uma nova funcionalidade, uma correção de bug, uma refatoração que move um limite.
  • Pule: erros de digitação, comentários, formatação, apenas lockfile, docs sem código.
  • Se a intenção ainda está em aberto ("implemente X" sem comportamento escolhido): pare. Pergunte até que a mudança esteja definida. Depois mapeie. Não mapeie uma funcionalidade que ainda não foi escolhida.

Portões Rígidos

  1. Nenhum código e nenhuma próxima skill. Esta skill mapeia. Ela não planeja blocos. Ela não implementa.
  2. Mostre o mapa e pare. Não aguarde aprovação. O usuário interrompe se o mapa estiver errado.
  3. Não leia coupling.json. Essa é uma verificação separada posterior.
  4. Não vasculhe todo o repositório em busca de utilitários. Registre a reutilização que o agente realmente viu no(s) domínio(s) atingido(s). Uma skill posterior é responsável pela busca completa.

Atlas Persistente

Caminho: <repo>/.agent/domain-map.json

Commitado com o repositório. Apenas no grão de domínio. Nomes de funções não pertencem aqui.

{
  "version": 1,
  "domains": [
    {
      "id": "auth",
      "owns": ["packages/auth", "packages/auth-ui"],
      "talksTo": ["users", "sessions"]
    }
  ]
}
  • id — nome curto, uma palavra ou kebab-case.
  • owns — caminhos de pacotes ou pastas.
  • talksTo — outros ids de domínio.

Escreva este arquivo apenas quando um fato em nível de domínio mudou: um domínio adicionado, removido ou renomeado; caminhos owns; ou um link talksTo. Adicionar uma função dentro de um domínio existente não deve editar este arquivo.

Procedimentos

Procedimento 1: Confirmar intenção definida

  1. Se a mudança já está clara (bug nomeado, função nomeada, comportamento nomeado), continue.
  2. Se o usuário ainda está escolhendo o que quer, pare de mapear. Pergunte até que a intenção esteja definida. Depois retorne aqui.

Procedimento 2: Carregar ou inicializar o atlas

  1. Se .agent/domain-map.json existir, leia-o.
  2. Se estiver faltando, construa um primeiro atlas apenas no grão de domínio:
    • Prefira packages/* (ou as pastas de pacotes do repositório).
    • Caso contrário, use pastas de área de nível superior sob src/ (ou a raiz de código principal).
    • Defina talksTo a partir das arestas de importação entre esses caminhos owns.
    • Não coloque nomes de funções no atlas.
  3. Crie .agent/ se necessário. Escreva o arquivo. Mostre o novo atlas na mesma rodada. Continue. Não aguarde.

Procedimento 3: Focar nesta mudança

  1. Escolha o(s) domínio(s) atingido(s) a partir do atlas e da intenção definida.
  2. Comece pelos módulos que claramente pertencem à mudança.
  3. Leia esses arquivos. Siga as importações apenas enquanto a lista de "arquivos a tocar" ainda estiver mudando.
  4. Pare quando um arquivo recém-aberto não alterar o mapa. Não leia um pacote por completo.
  5. Nomeie as partes como módulos mais funções e tipos existentes que a mudança usará ou ficará ao lado. Arquivos são ponteiros, não o mapa.
  6. Observe a reutilização realmente vista nesses arquivos (caminho + símbolo). Não faça grep em todo o espaço de trabalho por auxiliares.

Procedimento 4: Escolher o caminho se houver mais de um

Se houver apenas um caminho honesto, declare-o em uma linha.

Se houver mais de um caminho, escolha um. Pare no primeiro degrau da escada que decidir:

  1. Reutilizar algo que existe em vez de escrever um novo módulo.
  2. Permanecer dentro do(s) domínio(s) atingido(s). Não abrir um novo domínio.
  3. Não adicionar um pacote, camada ou API pública se uma alteração interna funcionar.
  4. Então, o menor número de arquivos.

Nomeie o vencedor e qual degrau o decidiu. Menor número de arquivos é o desempate, não a regra inteira. Não enfie novo comportamento em um arquivo god para vencer na contagem de arquivos.

Procedimento 5: Atualizar o atlas (apenas nível de domínio)

  1. Se esta mudança adicionar, remover ou renomear um domínio, ou alterar owns / talksTo, corrija .agent/domain-map.json neste mesmo trabalho.
  2. Se nada no grão de domínio mudou, deixe o arquivo como está.

Procedimento 6: Mostrar o mapa por mudança

Mostre estas seis seções, nesta ordem. Não escreva um arquivo markdown por tarefa.

  1. Domínio(s) atingido(s) — do atlas.
  2. Partes — módulos, mais funções e tipos existentes em jogo. Inclua reutilização vista (caminho + símbolo).
  3. Como se comunicam — apenas as arestas que esta mudança usa (chamadas, tipos, dados). Não um grafo de chamadas completo. Adicione um diagrama Mermaid apenas se essas arestas forem difíceis de ver em marcadores.
  4. Arquivos a tocar — a lista final. Este é o produto independente.
  5. Não tocará — explícito. Impede edições por impulso.
  6. Escolha de caminho — uma linha se houver apenas um caminho. Se houver vários, o vencedor e o degrau da escada.

Procedimento 7: Parar

  1. Após o Procedimento 6, pare.
  2. Não escreva código. Não carregue outra skill a partir desta.

Árvore de Decisão

  • Intenção não definida → Procedimento 1, depois pare de mapear até que esteja.
  • Intenção definida, mudança de comportamento → Procedimento 2 → 3 → 4 → 5 → 6 → 7.
  • Erro de digitação / comentário / formato / lockfile / apenas docs → esta skill não se aplica.
  • Arquivo de atlas ausente → Procedimento 2 passo 2 (inicialização), depois continue.
  • Um caminho vs. vários caminhos → Procedimento 4.

Bandeiras Vermelhas

SinalO que significaFaça em vez disso
Mapear antes de o usuário escolher a funcionalidadeIntenção não definidaProcedimento 1. Pressione primeiro.
Abrir todos os arquivos em ownsTour, não um mapaProcedimento 3: pare quando a lista de arquivos estiver estável.
Fazer grep no monorepo por isRecordBusca completa é uma skill diferenteRegistre apenas a reutilização já vista.
Ler coupling.jsonArquivo erradoDeixe essa verificação para depois.
Esperar por "parece bom?" no mapaPortão é mostrar e pararMostre as seis seções e pare.
Começar a codificar após o mapaEsta skill apenas mapeiaProcedimento 7. Nenhum código.
Carregar a próxima skill da pipeline a partir daquiDeixa a composição para o workflowPare. Deixe a skill de workflow sequenciar.
Escrever .agent/touch-maps/<task>.mdLixo de tarefa obsoletoApenas chat (ou sessão). O arquivo de atlas é a única persistência.
Editar o atlas porque um auxiliar foi adicionadoGrão de função no atlasDeixe o atlas em paz. Coloque o auxiliar na seção 2.
Escolher o caminho com menos arquivos primeiroArmadilha do arquivo godExecute a escada completa.

Tratamento de Erros

  • Não está dentro de um repositório git: mapeie esta mudança nas seis seções. Pule o arquivo de atlas. Diga isso em uma linha.
  • JSON do atlas inválido: não adivinhe. Relate o erro de análise. Reconstrua a partir do Procedimento 2 passo 2 apenas se o usuário concordar, ou corrija o JSON se a intenção for óbvia (vírgula sobressalente, colchete faltando).
  • Domínio atingido incerto: escolha o menor conjunto de domínios que pode ser dono da mudança. Declare a dúvida na Escolha de caminho. Não invente um novo domínio para um bug de um arquivo.
  • Usuário interrompe dizendo que o mapa está errado: corrija as seis seções. Reexecute o Procedimento 4 se o caminho mudou. Depois pare.

Individual skills in this repo

This repo contains 14 individual skills — each has its own dedicated page.

AlemTuzlak/skills

Use when the user wants to write a blog post about a feature, product change, PR, git diff, or any technical topic - accepts marketing briefs, PRs, git refs, codebase paths, or freeform descriptions as input

AlemTuzlak/skills

Use when the user wants to generate a changelog, release notes, or document what changed between versions, tags, or PRs

AlemTuzlak/skills

Use when writing, editing, or organizing documentation, when planning what docs a feature needs, and whenever planning or implementing a new feature or change in a repo (docs ship with the code). Also use when tempted to write docs without showing the discovered readers to the user, without asking for tone, or without loading simple-english and i-have-adhd. Triggers on "write docs for X", "document this feature", "add a guide", "update the docs", "reorganize the docs", "plan feature X", "implement X", or /docs.

AlemTuzlak/skills

Use when a bug is in play: a test fails, CI is red, an API returns the wrong result, a stack trace appears, or the user says it is broken or fix this. Don't use for a new feature with no failure, for types-only work, or for docs.

AlemTuzlak/skills

Use when the user invokes /i-have-adhd, says they have ADHD, or asks for ADHD-friendly output. Also used as a required writing filter by the docs skill. Don't use for marketing copy or after the user says "stop adhd mode" or "normal mode".

AlemTuzlak/skills

Use when a settled change must be turned into an ordered stack of small blocks before anyone implements. Don't use for unsettled intent, typos, comments, formatting, docs-only work, or writing the implementation itself.

AlemTuzlak/skills

Use when the user wants to write a product update email, feature announcement newsletter, or digest email for users or subscribers

AlemTuzlak/skills

Use when the user wants to turn a raw talking-head / screen-share recording into a finished, edited, annotated video plus a full content package. Removes silences, flags mistakes for the user to cut, transcribes, adds transcript-synced overlays (code, on-screen code highlights, word highlights, lists, comparisons, diagrams, section labels, punch-in zooms), renders with original audio, then generates blog/socials/YouTube content. Triggers on "produce a video", "edit my video", "annotate my recording", "/produce-video".

AlemTuzlak/skills

Use when the user runs /prove-it or says prove it, prove the changes, show me in the browser, or asks to prove a UI or API change. Don't use only because the agent is about to say done, for types-only work, or for docs with no behavior to prove.

AlemTuzlak/skills

Use when the user wants to write, draft, or author an RFC (Request for Comments) / technical design doc for a feature, change, or architectural decision. Interactively interviews the user, grounds the proposal in the actual codebase, presents 2-3 concrete API/code-snippet approaches to choose from, then writes a review-ready RFC. Triggers on "write an RFC", "draft an RFC", "RFC for X", "design doc for X", or /rfc.

AlemTuzlak/skills

Use when the user wants to deeply learn a new topic from scratch. Runs a pre-interview (current knowledge, end-goal proficiency, depth, practice load, background, scope), researches online (articles, niche-influencer blogs, canonical docs, subtopic landscape), then produces a structured markdown course with mandatory visual diagrams, evidence-based learning-science features (retrieval practice, spaced callbacks, worked-example fading, concept ledger, jargon gate, analogy hygiene), and a self-contained interactive HTML mini-course. Triggers on /teach-me, "teach me about X", "I want to learn X", "deep dive on X", "create a course on X", "study X with me".

AlemTuzlak/skills

Use when the user wants to transcribe a video or audio file to text with word-level timestamps — spins up a self-contained local Whisper (whisper.cpp) Docker service bundled in this skill and returns transcript.txt, transcript.srt, and word-level transcript.words.json. Also used as a building block by /produce-video. Triggers on "transcribe this video", "get a transcript", "transcribe-video".

AlemTuzlak/skills

Use when the user wants to write a video script for a product demo, feature walkthrough, launch video, or social media video about a feature or product change

AlemTuzlak/skills

Use when the user wants YouTube metadata for a video — a click-worthy title, an SEO/above-the-fold description, tags, and timestamped chapters. Accepts a transcript (ideally timestamped SRT), a topic, a PR, or a freeform description. Used standalone and by /produce-video. Triggers on "youtube title", "youtube description", "youtube chapters", "youtube tags", "youtube metadata", "youtube-copy".

Habilidades Relacionadas