Agent skill

Render Code Shape

by citypaul in citypaul/.dotfiles

Render the shape of code — module boundaries, the types that cross them, signatures, and a cited call graph — for code that already exists or a change about to be built.

MITAuto-check passedDevelopment

Install Render Code Shape

skills CLI
$ npx skills add citypaul/.dotfiles --skill render-code-shape -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install citypaul/.dotfiles render-code-shape --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/citypaul/.dotfiles.git skills-src && mkdir -p .claude/skills && cp -r skills-src/claude/.claude/skills/render-code-shape .claude/skills/render-code-shape && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
render-code-shape
GitHub stars
739
Token cost
~2.5k tokens
SKILL.md length
1,315 words
Files
4 (incl. references)
Skills in repo
44
Repo updated
First seen
Licence
MIT

At a glance

Render the shape of code — module boundaries, the types that cross them, signatures, and a cited call graph — for code that already exists or a change about to be built.

  • Works in 5 steps: Frame the render → Read the parts → Render the shape → …
  • Asking how something composes
  • SKILL.md covers 1. Frame the render, 2. Read the parts, 3. Render the shape and 4. Render the call graph, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Render Code Shape is an agent skill from citypaul/.dotfiles. Render the shape of code — module boundaries, the types that cross them, signatures, and a cited call graph — for code that already exists or a change about to be built. Every name, type, and path is read from source and cited, or marked NEW; bodies collapse to one line of intent. Use when asking how something composes, tracing what a request actually touches, pseudocoding a change before implementing it, onboarding to an unfamiliar path, or producing the shape a plan and its tests will be checked against…

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `agents/openai.yaml` and `references/source-notes.md`).

It sits in Development, covering Codebase onboarding, Diagrams and Internationalization. The licence is MIT.

When your agent uses it

  • Asking how something composes
  • Tracing what a request actually touches
  • Pseudocoding a change before implementing it
  • Onboarding to an unfamiliar path

Example prompts

  • “/render-code-shape”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Frame the render
  2. Read the parts
  3. Render the shape
  4. Render the call graph
  5. Return the render

What it can do on your machine

Read from SKILL.md and the folder at commit cd4028d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Render Code Shape loads about 2.5k tokens when it runs, and up to ~3.7k if it reads all its reference files. Until then it costs about 195 tokens; SKILL.md has 1,315 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~195
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from citypaul/.dotfiles at commit cd4028d, republished under its MIT licence (© citypaul). 1,315 words, ~2,537 tokens.

Download SKILL.mdSave it as .claude/skills/render-code-shape/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
render-code-shape
description
Render the shape of code — module boundaries, the types that cross them, signatures, and a cited call graph — for code that already exists or a change about to be built. Every name, type, and path is read from source and cited, or marked NEW; bodies collapse to one line of intent. Use when asking how something composes, tracing what a request actually touches, pseudocoding a change before implementing it, onboarding to an unfamiliar path, or producing the shape a plan and its tests will be checked against. Read-only: the render is the deliverable, never the edit. For judgments about whether the shape is good see codebase-design; for where files should live see structure-codebase; for a rendered picture see diagrams; for fault localization see debugging.

Render Code Shape

Code has a waterline. Above it sits the shape: modules and their boundaries, the types and values that cross those boundaries, the signatures, and the order calls actually happen in. Below it sits syntax and the statements inside a body.

Render the shape and collapse everything below the waterline to a single line of intent. Only bodies are pseudo — every name, type, and path is read from the source and cited by file and line, or marked [NEW]. This is why the render is trustworthy in a way a remembered summary is not.

Read-only. The render is the deliverable, not the edit. Producing a render never authorizes changing production code, tests, or configuration. Implement only if the request separately authorizes it, and then under the governing workflow — tdd for behavior change, refactoring or reduce-system-complexity for behavior-preserving work.

A render is not a verdict. It states what is visible in the render. Deciding whether a boundary is well-drawn belongs to codebase-design; deciding where files should live belongs to structure-codebase; ranking architecture investments belongs to improve-codebase-architecture.

Load alongside: planning (a [NEW] render is an input to a slice plan, never a substitute for one), codebase-design and structure-codebase (judgments about the shape once it is visible), finding-seams (when the render exposes an untestable dependency), characterisation-tests (when the existing path has no behavior evidence), diagrams (when relationships are materially clearer drawn than listed), technical-writing (when the render becomes a durable document).

1. Frame the render

Name the entry points to trace from and the frame edge — the packages, services, and libraries that count as outside. Name each wiring to render: production, plus any composition root that substitutes a dependency, such as tests, local dev, or a feature flag.

Classify each entry point existing or [NEW]. For a [NEW] render, resolve the requirement it must satisfy and the existing code it attaches to.

Prefer the narrowest frame that answers the question asked. A render that expands to the whole repository answers nothing.

Complete when: the entry points, the frame edge, every wiring, and the existing/[NEW] split are each explicit.

2. Read the parts

Follow every call from each entry point, opening each file on the path. For every function reached, record its file and line, its signature as written, the effects it causes, and the calls it makes.

Expand a path until it reaches a boundary crossing, a pure leaf, the frame edge, or a function already recorded. A path ends nowhere else.

For a [NEW] render, read the surrounding modules the change attaches to with the same rigour; parts that do not exist yet are derived from the requirement and marked.

Read the source. A signature recalled from training data, inferred from a name, or carried over from an older revision is a fabrication even when it happens to be right — and the citation is what makes the difference checkable.

Complete when: every path terminates on one of those four conditions, and every name that will appear in the render is either recorded with a file and line or marked [NEW].

3. Render the shape

Write in the project's own language and naming — the glossary term, not a synonym (see ubiquitous-language). Three parts:

Types — every type, interface, or schema that crosses a boundary, declared with its fields. A type from outside the frame is named and marked external.

Boundaries — one row per module: what it owns, what it exposes, what it depends on, and what it hides behind that surface.

Signatures — grouped under their module, each carrying parameter names, parameter types, return type, and error type as written in the source. Each body collapses to a single line naming its intent.

Where the cut is not obvious, place it here:

Above the waterlineBelow it
An effect that leaves the process: network, database, filesystem, clock, randomness, environmentPure local computation
A branch that changes which downstream call happensA branch that only changes a returned value
A helper whose effect crosses the module edgeA private helper contained inside it
What is constructed and injected whereFramework and transport boilerplate

Complete when: every type named in a signature is declared here or marked external, every module row states what it hides, and every signature matches its source or carries [NEW].

4. Render the call graph

One graph per wiring, as an indented tree. Each edge reads → Receiver.method(arg: Type, arg: Type) : Return, then its annotations, then its file and line. Order siblings by execution order.

submitCheckout(req: HttpRequest) : HttpResponse                          src/http/checkout.ts:14
  → Checkout.submit(cart: Cart, actor: UserId) : Receipt                 src/checkout/service.ts:31
      → Pricing.quote(cart: Cart) : Quote                                src/pricing/quote.ts:8
          → TaxRates.lookup(region: Region) : TaxTable  [boundary: network]   src/pricing/tax.ts:22
      → Payments.charge(quote: Quote, card: CardRef) : Receipt  [boundary: network]   src/payments/stripe.ts:40
      → Orders.insert(order: Order) : OrderId  [boundary: database]      src/orders/store.ts:17
      → Email.receipt(to: EmailAddress, receipt: Receipt) : void  [async]   src/mail/queue.ts:9
      → Checkout.release(cart: Cart) : void  [error: charge declined]    src/checkout/service.ts:58

Annotate every edge that is not a plain unconditional in-process call with at least one:

AnnotationMeaning
[if …]Happens only on the named condition
[each …]Repeats over the named collection
[async]Enqueued, scheduled, or not awaited on this path
[error …]Happens on the named failure path
[boundary: …]The effect leaves the process — name which
[NEW]Does not exist yet

A function already drawn appears as → Name (above) in place of a second expansion.

Complete when: every edge names the values crossing it, every non-plain edge carries an annotation, every branch terminates on a step 2 condition, and each wiring that differs from production is drawn beside it.

Show full SKILL.md (465 more words)Show less

5. Return the render

Lead with the entry points, the frame edge, and the wirings drawn. Then give the types, the boundary table, the signatures, and the call graphs.

Close with what the shape shows, stated as facts already visible in the render rather than as judgements: dependency cycles, a dependency pointing against the module layering, argument counts, functions reached from many callers, boundary crossings on the primary path, and paths no wiring covers. Name what stayed unread and why.

Where a fact is a decision waiting to happen, name the skill that owns the decision rather than making it here — a cycle or a leaking boundary routes to codebase-design, a path with no test wiring routes to characterisation-tests or finding-seams, an untraceable dependency routes to structure-codebase.

When the render is a plan for work about to be done, save it under plans/ beside the slice plan so the implementation can be checked against it, and so a later reviewer can see which parts were [NEW] at the time.

Complete when: every citation resolves, every observation points at an element of the render, and every gap names what would close it.

Anti-Patterns

  • Rendering from memory or from a summary of the code instead of opening the files — the citation is the whole contract.
  • Carrying a signature over from an older revision, or inferring one from a name, without reading it.
  • Expanding every path to a leaf, producing a render nobody reads, when the question needed one entry point.
  • Slipping below the waterline: statements, control-flow detail, and framework boilerplate reproduced as prose.
  • Silently mixing [NEW] and existing names, so the reader cannot tell what is proposed from what is there.
  • Drawing only the production wiring when a test or feature-flag composition root substitutes a dependency that changes the graph.
  • Closing with judgments — "this is over-abstracted", "this should be split" — instead of the facts the render actually shows.
  • Editing code during the render, or treating an approved render as approval to implement.
  • Rendering a [NEW] shape and then implementing it straight through, skipping the failing behavior test that tdd requires.

Completion Check

  • Does every name, type, and path in the render resolve to a file and line in the current tree, or carry [NEW]?
  • Is the frame edge explicit, and is every wiring that substitutes a dependency drawn beside production?
  • Does every path terminate on a boundary, a pure leaf, the frame edge, or an already-drawn function?
  • Does every module row say what it hides, not just what it exposes?
  • Is every non-plain call-graph edge annotated, and does every edge name the values crossing it?
  • Are the closing observations facts visible in the render, with decisions routed to the skill that owns them?
  • Did the render stay read-only, and is unread territory named rather than quietly omitted?

© citypaul, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in claude/.claude/skills/render-code-shape of citypaul/.dotfiles.

  • SKILL.md
  • LICENSE
  • agents/openai.yaml
  • references/source-notes.md

Open the folder on GitHubat commit cd4028d

Compare with similar skills

Render Code Shape next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Render Code Shape compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Render Code Shape this skillcitypaul/.dotfiles739—~2.5kAutomated safety check: PassMIT
Deepwiki Rssopaco/deepwiki-rs3.1k—~748Automated safety check: PassMIT
GitDiagram Repository Overviewahmedkhaleel2004/gitdiagram18k—~427Automated safety check: PassMIT
Code Graph Mermaid Diagramstrailofbits/skills7.4k—~1.7kAutomated safety check: PassCC-BY-SA-4.0
GitDiagram Repo Architectureahmedkhaleel2004/gitdiagram18k—~429Automated safety check: PassMIT
Create DiagramMertcikla/tld287—~1.6kAutomated safety check: PassApache-2.0

Similar skills

  • Deepwiki Rs

    sopaco/deepwiki-rs

    AI-powered Rust documentation generation engine for comprehensive codebase analysis, C4 architecture diagrams, and automated technical documentation.

    3.1k GitHub stars~748 tokensUpdated 23 days ago
    DevelopmentAuto-check passed
  • GitDiagram Repository Overview

    ahmedkhaleel2004/gitdiagram

    Explains the architecture of a public GitHub repository through GitDiagram: how the code is organized, the main components with paths, and a Mermaid diagram.

    18k GitHub stars~427 tokensUpdated today
    DevelopmentAuto-check passed
  • Code Graph Mermaid Diagrams

    trailofbits/skills

    Official

    Generates Mermaid diagrams from Trailmark code graphs, including call graphs, class hierarchies, module dependency maps, complexity heatmaps and attack surface data flows.

    7.4k GitHub stars~1.7k tokensUpdated 5 days ago
    DevelopmentAuto-check passed
  • GitDiagram Repo Architecture

    ahmedkhaleel2004/gitdiagram

    Explains how a public GitHub repository is built by fetching its GitDiagram architecture diagram, components and optional explainer video.

    18k GitHub stars~429 tokensUpdated today
    DevelopmentAuto-check passed
  • Create Diagram

    Mertcikla/tld

    Create architecture diagrams from a local codebase or system description.

    287 GitHub stars~1.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Answers questions about code structure, history, bugs and PR risk using a CodeScope knowledge graph and semantic index built from the repository.

    28k GitHub starsUsed in 1 repo~9.3k tokens
    DevelopmentAuto-check passed

More from citypaul/.dotfiles

All 44 skills in this repo
  • Find Skills

    citypaul/.dotfiles

    Discover and, with authorization, install agent skills from the open skills ecosystem.

    739 GitHub stars~2.5k tokensUpdated 4 days ago
    Auto-check passed
  • Structure Codebase

    citypaul/.dotfiles

    Design, audit, and evolve physical source and package structures that expose real architectural boundaries while keeping related behavior together.

    739 GitHub stars~4.4k tokensUpdated 4 days ago
    Auto-check passed
  • Test Design Reviewer

    citypaul/.dotfiles

    Review test quality using Dave Farley's eight properties of good tests.

    739 GitHub stars~1k tokensUpdated 4 days ago
    Auto-check passed
  • Characterisation Tests

    citypaul/.dotfiles

    A skill your agent uses when modifying existing code that lacks tests and you need to document its actual current behavior before making changes -- the legacy code dilemma where you need tests to…

    739 GitHub stars~3.6k tokensUpdated 4 days ago
    Auto-check passed
  • CI Debugging

    citypaul/.dotfiles

    Systematic CI/CD failure diagnosis using hypothesis-first investigation, local reproduction, and environment delta analysis.

    739 GitHub stars~1.5k tokensUpdated 4 days ago
    Auto-check: notes
  • Double Check

    citypaul/.dotfiles

    Get a rigorous read-only second opinion on finished work through the host's available reviewer capabilities, preferably from a different model provider.

    739 GitHub stars~3.6k tokensUpdated 4 days ago
    Auto-check passed

Categories

Questions about Render Code Shape

What does Render Code Shape do?

Render the shape of code — module boundaries, the types that cross them, signatures, and a cited call graph — for code that already exists or a change about to be built. dotfiles. Render the shape of code — module boundaries, the types that cross them, signatures, and a cited call graph — for code that already exists or a change about to be built.

When should I use Render Code Shape?

Render Code Shape fits situations like: asking how something composes; tracing what a request actually touches; pseudocoding a change before implementing it; onboarding to an unfamiliar path.

How do I install Render Code Shape in Claude Code?

Run `npx skills add citypaul/.dotfiles --skill render-code-shape -a claude-code`. Or copy the skill folder (claude/.claude/skills/render-code-shape in citypaul/.dotfiles) into .claude/skills/render-code-shape in your project. Claude Code loads it when a task matches its description.

How do I install Render Code Shape in Codex?

Run `npx skills add citypaul/.dotfiles --skill render-code-shape -a codex`. Or copy the skill folder (claude/.claude/skills/render-code-shape in citypaul/.dotfiles) into .agents/skills/render-code-shape in your project. Codex loads it when a task matches its description.

Can I use Render Code Shape in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add citypaul/.dotfiles --skill render-code-shape -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/render-code-shape, .gemini/skills/render-code-shape, .github/skills/render-code-shape and .opencode/skills/render-code-shape in your project.

What does Render Code Shape need to run?

SKILL.md names no scripts, command-line tools or credentials: Render Code Shape is instructions for the agent only.

Does Render Code Shape access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Render Code Shape safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Render Code Shape use?

Render Code Shape is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Render Code Shape use?

About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.1k tokens, read only when the agent opens those files.

What are the alternatives to Render Code Shape?

Skills that share tags, products or a category with Render Code Shape: Deepwiki Rs (sopaco/deepwiki-rs, 3.1k stars), GitDiagram Repository Overview (ahmedkhaleel2004/gitdiagram, 18k stars), Code Graph Mermaid Diagrams (trailofbits/skills, 7.4k stars) and GitDiagram Repo Architecture (ahmedkhaleel2004/gitdiagram, 18k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Render Code Shape?

citypaul (a GitHub user) maintains it in citypaul/.dotfiles, which has 739 GitHub stars. The repository holds 44 skills in this directory. The repository was last updated on October 2, 2026.

Source: citypaul/.dotfiles on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.