Skip to content
Skillpedia
General coding48k · #2712

data-structure-protocol

Lets your agent remember the structure of code. It helps understand how code parts connect and work together without needing to re-read everything.

What it does

This tool helps AI understand a code project's structure, how parts connect, and why they exist. This allows the AI to navigate and modify code more efficiently without rereading everything.

When to use it

  • ✓When the AI needs to understand how a code project is organized.
  • ✓Before making major code changes to know what might be affected.
  • ✓When you want the AI to help map or organize a project.

Example of what to ask your AI

“How can I use DSP to understand the dependencies between my project's modules?”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/data-structure-protocol/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/data-structure-protocol/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

DSP turns code into a map (graph) where each part is a 'node' and connections are 'edges'. It stores information about each part's purpose and the reason for its connections, all in simple text files.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add sickn33/agentic-awesome-skills --skill data-structure-protocol

Or download just the file:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/data-structure-protocol/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

Data Structure Protocol (DSP)

LLM coding agents lose context between tasks. On large codebases they spend most of their tokens on "orientation" — figuring out where things live, what depends on what, and what is safe to change. DSP solves this by externalizing the project's structural map into a persistent, queryable graph stored in a .dsp/ directory next to the code.

DSP is NOT documentation for humans and NOT an AST dump. It captures three things: meaning (why an entity exists), boundaries (what it imports and exposes), and reasons (why each connection exists). This is enough for an agent to navigate, refactor, and generate code without loading the entire source tree into the context window.

When to Use

Use this skill when:

  • The project has a .dsp/ directory (DSP is already set up)
  • The user asks to set up DSP, bootstrap, or map a project's structure
  • Creating, modifying, or deleting code files in a DSP-tracked project (to keep the graph updated)
  • Navigating project structure, understanding dependencies, or finding specific modules
  • The user mentions DSP, dsp-cli, .dsp, or structure mapping
  • Performing impact analysis before a refactor or dependency replacement

Core Concepts

Code = graph

DSP models the codebase as a directed graph. Nodes are entities, edges are imports and shared/exports.

Two entity kinds exist:

  • Object: any "thing" that isn't a function (module/file/class/config/resource/external dependency)
  • Function: an exported function/method/handler/pipeline

Identity by UID, not by file path

Every entity gets a stable UID: obj-<8hex> for objects, func-<8hex> for functions. File paths are attributes that can change; UIDs survive renames, moves, and reformatting.

For entities inside a file, the UID is anchored with a comment marker in source code:

// @dsp func-7f3a9c12
export function calculateTotal(items) { ... }
# @dsp obj-e5f6g7h8
class UserService:

Every connection has a "why"

When an import is recorded, DSP stores a short reason explaining why that dependency exists. This lives in the exports/ reverse index of the imported entity. A dependency graph without reasons tells you what imports what; reasons tell you what is safe to change and who will break.

Storage format

Each entity gets a small directory under .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/

Everything is plain text. Diffable. Reviewable. No database needed.

Full import coverage

Every file or artifact that is imported anywhere must be represented in .dsp as an Object — code, images, styles, configs, JSON, wasm, everything. External dependencies (npm packages, stdlib, etc.) are recorded as kind: external but their internals are never analyzed.

How It Works

Initial Setup

The skill relies on a standalone Python CLI script dsp-cli.py. If it is missing from the project, download it:

curl -O https://raw.githubusercontent.com/k-kolomeitsev/data-structure-protocol/main/skills/data-structure-protocol/scripts/dsp-cli.py

Requires Python 3.10+. All commands use python dsp-cli.py --root <project-root> <command>.

Bootstrap (initial mapping)

If .dsp/ is empty, traverse the project from root entrypoint(s) via DFS on imports:

  1. Identify root entrypoints (package.json main, framework entry, main.py, etc.)
  2. Document the root file: create-object, create-function for each export, create-shared, add-import for all dependencies
  3. Take the first non-external import, document it fully, descend into its imports
  4. Backtrack when no unvisited local imports remain; continue until all reachable files are documented
  5. External dependencies: create-object --kind external, add to TOC, but never descend into node_modules/site-packages/etc.

…

FAQ

What is a 'graph' in this context?

A graph is like a connection map. Think of cities (code parts) and roads (connections). DSP uses this to show how your code parts link together.

Why use UIDs instead of file paths?

UIDs (Unique Universal Identifiers) are like permanent names. If you rename or move a file, the UID doesn't change, ensuring connections stay correct. File paths can change.

What does 'every connection has a why' mean?

Besides knowing one code part uses another, DSP records the reason for that connection. This helps the AI understand if it's safe to remove or change a connection without breaking other parts of the project.

Details

Original description by the author

Give agents persistent structural memory of a codebase — navigate dependencies, track public APIs, and understand why connections exist without re-reading the whole repo.

repo: sickn33/agentic-awesome-skills

Popularity

GitHub stars
48k
Ranking position
#2712
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills