data-structure-protocol
Faz seu agente lembrar da estrutura de um código. Ajuda a entender como as partes do código se conectam e funcionam juntas sem precisar ler tudo de novo.
O que ela faz
Essa ferramenta ajuda a IA a entender a estrutura de um projeto de código, como as partes se conectam e por que elas existem. Isso permite que a IA navegue e modifique o código de forma mais eficiente, sem precisar ler tudo de novo.
Quando usar
- ✓Quando a IA precisa entender como um projeto de código está organizado.
- ✓Antes de fazer grandes mudanças no código para saber o que pode ser afetado.
- ✓Quando você quer que a IA ajude a mapear ou organizar um projeto.
Exemplo do que pedir para a IA
“Como posso usar o DSP para entender as dependências entre os módulos do meu projeto?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
O DSP transforma o código em um mapa (grafo) onde cada parte é um 'nó' e as conexões são 'arestas'. Ele armazena informações sobre o propósito de cada parte e o motivo de suas conexões, tudo em arquivos de texto simples.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill data-structure-protocolOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/data-structure-protocol/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Protocolo de Estrutura de Dados (DSP)
Agentes de codificação de LLM perdem contexto entre tarefas. Em bases de código grandes, eles gastam a maior parte de seus tokens em "orientação" — descobrindo onde as coisas estão, o que depende do quê e o que é seguro mudar. O DSP resolve isso externalizando o mapa estrutural do projeto em um grafo persistente e consultável, armazenado em um diretório .dsp/ ao lado do código.
DSP NÃO é documentação para humanos e NÃO é um dump de AST. Ele captura três coisas: significado (por que uma entidade existe), limites (o que ela importa e expõe) e razões (por que cada conexão existe). Isso é suficiente para um agente navegar, refatorar e gerar código sem carregar toda a árvore de origem na janela de contexto.
Quando Usar
Use esta habilidade quando:
- O projeto possui um diretório
.dsp/(DSP já está configurado) - O usuário pede para configurar o DSP, inicializar ou mapear a estrutura de um projeto
- Criando, modificando ou excluindo arquivos de código em um projeto rastreado pelo DSP (para manter o grafo atualizado)
- Navegando na estrutura do projeto, entendendo dependências ou encontrando módulos específicos
- O usuário menciona DSP, dsp-cli,
.dspou mapeamento de estrutura - Realizando análise de impacto antes de uma refatoração ou substituição de dependência
Conceitos Principais
Código = grafo
O DSP modela a base de código como um grafo direcionado. Nós são entidades, arestas são importações e compartilhamentos/exportações.
Existem dois tipos de entidades:
- Objeto: qualquer "coisa" que não seja uma função (módulo/arquivo/classe/configuração/recurso/dependência externa)
- Função: uma função/método/handler/pipeline exportado
Identidade por UID, não por caminho de arquivo
Cada entidade recebe um UID estável: obj-<8hex> para objetos, func-<8hex> para funções. Caminhos de arquivo são atributos que podem mudar; UIDs sobrevivem a renomeações, movimentações e reformatações.
Para entidades dentro de um arquivo, o UID é ancorado com um marcador de comentário no código-fonte:
// @dsp func-7f3a9c12
export function calculateTotal(items) { ... }
# @dsp obj-e5f6g7h8
class UserService:
Toda conexão tem um "porquê"
Quando uma importação é registrada, o DSP armazena uma breve razão explicando por que essa dependência existe. Isso fica no índice reverso exports/ da entidade importada. Um grafo de dependência sem razões diz o que importa o quê; razões dizem o que é seguro mudar e quem vai quebrar.
Formato de armazenamento
Cada entidade recebe um pequeno diretório sob .dsp/:
.dsp/
├── TOC # ordered list of all entity UIDs from root
├── obj-a1b2c3d4/
│ ├── description # source path, kind, purpose (1-3 sentences)
│ ├── imports # UIDs this entity depends on (one per line)
│ ├── shared # UIDs of public API / exported entities
│ └── exports/ # reverse index: who imports this and why
│ ├── <importer_uid> # file content = "why" text
│ └── <shared_uid>/
│ ├── description # what is exported
│ └── <importer_uid> # why this specific export is imported
└── func-7f3a9c12/
├── description
├── imports
└── exports/
Tudo é texto puro. Comparável. Revisável. Nenhum banco de dados é necessário.
Cobertura completa de importação
Todo arquivo ou artefato que é importado em qualquer lugar deve ser representado em .dsp como um Objeto — código, imagens, estilos, configurações, JSON, wasm, tudo. Dependências externas (pacotes npm, stdlib, etc.) são registradas como kind: external, mas seus internos nunca são analisados.
Como Funciona
Configuração Inicial
A habilidade depende de um script CLI Python autônomo dsp-cli.py. Se ele estiver faltando no projeto, baixe-o:
curl -O https://raw.githubusercontent.com/k-kolomeitsev/data-structure-protocol/main/skills/data-structure-protocol/scripts/dsp-cli.py
Requer Python 3.10+. Todos os comandos usam python dsp-cli.py --root <project-root> <command>.
Inicialização (mapeamento inicial)
Se .dsp/ estiver vazio, percorra o projeto a partir do(s) ponto(s) de entrada raiz via DFS nas importações:
- Identifique os pontos de entrada raiz (
package.jsonprincipal, ponto de entrada do framework,main.py, etc.) - Documente o arquivo raiz:
create-object,create-functionpara cada exportação,create-shared,add-importpara todas as dependências - Pegue a primeira importação não externa, documente-a completamente, desça em suas importações
- Volte quando não houver mais importações locais não visitadas; continue até que todos os arquivos alcançáveis sejam documentados
- Dependências externas:
create-object --kind external, adicione ao TOC, mas nunca desça emnode_modules/site-packages/etc.
…
Perguntas frequentes
O que é um 'grafo' neste contexto?
Um grafo é como um mapa de conexões. Pense em cidades (partes do código) e estradas (conexões). O DSP usa isso para mostrar como as partes do seu código se ligam umas às outras.
Por que usar UIDs em vez de caminhos de arquivo?
UIDs (Identificadores Únicos Universais) são como nomes permanentes. Se você renomear ou mover um arquivo, o UID não muda, garantindo que as conexões permaneçam corretas. Caminhos de arquivo podem mudar.
O que significa 'cada conexão tem um porquê'?
Além de saber que uma parte do código usa outra, o DSP registra o motivo dessa conexão. Isso ajuda a IA a entender se é seguro remover ou alterar uma conexão sem quebrar outras partes do projeto.
Detalhes
Descrição original do autor
Give agents persistent structural memory of a codebase — navigate dependencies, track public APIs, and understand why connections exist without re-reading the whole repo.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2712
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC