arch-blueprint: Instructions file for Claude Code

CLAUDE.md

arch-blueprint CLAUDE.md is an instructions file for Claude Code from nkhitrov/arch-blueprint. It costs 12,803 tokens per session, scanned A, original, MIT.

A repository instruction file for arch-blueprint, a command-line tool that creates architecture diagrams from a Python project's module import graph. It documents the project's commands, tests, formatting, linting, and Git conventions.

In plain words
What is it for?
It is for guiding changes to arch-blueprint, running its Python checks, and generating PlantUML or D2 diagrams from Python imports.
Why use it?
It gives a coding agent the project-specific rules it needs to work consistently. It also records how to run the checks used by continuous integration, the automated build checks.

Instructions file for Claude Code

Written for Claude Code: the file is CLAUDE.md. Also seen: mentions CLAUDE.md; mentions Claude Code.

This is nkhitrov/arch-blueprint's own configuration. It tells Claude Code how to work on arch-blueprint itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything arch-blueprint configures →

Reuse

Borrowing it

Nothing to install: this file belongs to nkhitrov/arch-blueprint. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/nkhitrov/arch-blueprint/master/CLAUDE.md
Clone the repo
git clone --depth 1 https://github.com/nkhitrov/arch-blueprint

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for arch-blueprint CLAUDE.md

README.md
[![agentmods](https://agentmods.dev/badge/instructions/nkhitrov/arch-blueprint/claude-md/github.svg)](https://agentmods.dev/instructions/nkhitrov/arch-blueprint/claude-md)
Your own site
<a href="https://agentmods.dev/instructions/nkhitrov/arch-blueprint/claude-md"><img src="https://agentmods.dev/badge/instructions/nkhitrov/arch-blueprint/claude-md/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for arch-blueprint CLAUDE.md

Your own site · 80×15
<a href="https://agentmods.dev/instructions/nkhitrov/arch-blueprint/claude-md"><img src="https://agentmods.dev/badge/instructions/nkhitrov/arch-blueprint/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 12,803 This file is loaded in full into every session.
When invoked 12,803 The same file — it is already loaded in full.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.12803 $0.12803
Opus 5.5 $0.05121 $0.05121
Sonnet 5.5 $0.02561 $0.02561
Haiku 4.5 $0.01280 $0.01280

Measured 18d ago against content hash 78b37bd18128, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

arch-blueprint CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 18d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

CLAUDE.md · 619 lines

How it starts

The opening of the file, as written. The whole thing — 619 lines — stays where its author put it; the contents beside it link to each section on GitHub.

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Overview

arch-blueprint is a CLI that generates architecture diagrams (PlantUML or D2) from a Python project's module import graph. It is built on top of grimp, which constructs the import graph.

Commands

This project uses uv for environment and dependency management.

  • Install/sync deps: uv sync (CI uses uv sync --locked)
  • Run all checks (what CI runs): uv run pre-commit run -a (lint, format, mypy, pytest)
  • Run the test suite only: uv run pytest
  • Format: uv run ruff format
  • Lint (with autofix): uv run ruff check --fix src tests
  • Type-check (strict mypy): uv run mypy ./src ./tests
  • Run the CLI against a project: uv run arch-blueprint draw <project_dir> [-m '<pattern>'] [-f FMT] [-o FILE]
    • Example: uv run arch-blueprint draw src -m 'arch_blueprint.*'
    • Every command is explicit (draw, diff, history, serve). The old implicit form arch-blueprint <dir> -m ... and the old render SNAPSHOT are gone; each gets an exit-2 hint naming the draw command to run instead. draw takes a project directory or a snapshot file (an existing file, or any *.json).
    • Without -m, draw and diff --base draw every package in <project_dir> whole (extract/layout.py:detect_roots → pkg.**, noted on stderr); history without ROOTs does the same at --head. A src-layout root (src/ a namespace dir holding packages) is refused with a hint rather than drawn as src.myapp.
    • -o FILE writes to a file; without -f its extension picks the format (.puml, .d2, .json, .png → puml-png). -f puml-png / d2-png draw an image through the IMAGE_RENDERERS tool and require -o.
    • Graphing this project is a special case: arch_blueprint is already in sys.modules (the CLI is it), so find_spec resolves to the running copy whatever <project_dir> says. To graph a different checkout, put it first on PYTHONPATH so that copy is the one running.
    • --modules/-m accepts grimp glob patterns (pkg.*, pkg.**, pkg.*.*.models.*).
    • -m can be repeated to graph several top-level packages at once and draw the links between them — useful when <project_dir> is a root with no __init__.py containing sibling packages (e.g. -m 'app1.*' -m 'app2.*'). A cross-package link is drawn only when both endpoints belong to the selected set — which includes a dependency on a package whose children were selected, since pkg.* never selects pkg itself.
    • --format/-f defaults to puml. The notes listing a cycle's imports are opt-in in every command (--cycle-details), for a pair and a longer cycle alike. diff and history draw the diff over the whole graph; --changes-only draws just the changes and the modules they touch.
    • --links namespace|module (default namespace) chooses what an arrow connects: the namespaces where two modules' paths diverge, or the nodes themselves. Accepted by every command that builds a graph (draw PROJECT_DIR, diff --base, history), not by draw SNAPSHOT or a snapshot-file diff (_reject_links) — a snapshot records the level it was built at. Even an explicit --links namespace is rejected there (the parser default is None, resolved by _link_level), and a diff of two snapshots of different levels is exit 2. A level also says how it is drawn (Level.nested → RendererOptions.nested), laid out by renderer/layout.py (see Frames and labels below): namespace and the -grouped levels are nested — every dotted prefix a frame, a chain of frames that hold nothing but one frame merged into one labelled by the joined path (app.features.core.executory_processes). module and class are flat — every node one box labelled by its dotted name less the prefix all drawn names share, which is shown once as the diagram title; every endpoint no node carries (a facade an arrow ends on) is declared as a node of its own. Containers only lengthen node-to-node arrows.
    • --links class|class-grouped make the nodes definitions, not modules: the top-level classes and module-level functions of every selected module, always together — a class that calls a function using another class depends on it through that function, drawn as two arrows. Arrows are always definition to definition, wherever a definition's code names another — bases, metaclass, decorators, class-level annotations, __init__, signatures, defaults and bodies (string annotations included). class is flat; class-grouped is nested (Level.nested), so every node sits in its module's frame. One edge per definition pair, so edge_weight is always 1 there. -m 'pkg.**' also takes the definitions of pkg/__init__.py (GrimpSource.pattern_stems). These levels parse every module's source with libcst — about ten times slower than the module levels. Example: uv run arch-blueprint draw tests/fixtures/classes -m 'refs.**' --links class-grouped.
    • --deps out|in (extract/focus.py:DEPS_DIRECTIONS, routed by follows_out / follows_in) makes -m the focus and also draws every object the focus directly depends on (out) or that directly depends on it (in), wherever in <project_dir> it lives, as a neighbor (BlueprintGraph.neighbors): muted and dashed (NEIGHBOR_COLOR, _format_neighbor), no metric blocks, labelled by its full name when flat (the flat prefix is the focus's; a facade endpoint no focused node lies under is a neighbor too — Layout.neighbors). The direction only picks the neighbors: every edge between the focus and a neighbor is drawn, either way, so a cycle through one is never half hidden; a neighbor's imports / references of anything but the focus are never read (no neighbor → neighbor edge), and stdlib / third-party code is never a node. Accepted where --links is (_reject_deps on snapshots); --metric with it is exit 2 (_check_deps, also for a snapshot built with it) — a neighbor's own imports are not read, so its numbers would lie; a --deps snapshot / history cache entry computes only the compute-only metrics (_undrawn_metrics). Example: uv run arch-blueprint draw tests/fixtures/focus_deps -m 'app.features.core.executory_processes.**' --deps out --links class.
    • --metric NAME (repeatable) displays a metric. A node metric (fan_in, fan_out, instability) renders as a block on each node; a link metric (edge_weight) renders as a label on each connection, including cyclic ones (as forward/backward). An unknown name is an error, not a silent no-op. diff and history take it too: a changed value reads old → new (±d).
  • Snapshot / draw a snapshot / diff (see Snapshot and diff below):
    • uv run arch-blueprint draw <project_dir> -m '<pattern>' -o graph.json — graph snapshot.
    • uv run arch-blueprint draw graph.json [-f FMT] [-o FILE] [--metric NAME] — draw a snapshot.
    • uv run arch-blueprint diff OLD.json NEW.json [-f FMT] [-o FILE] [--metric NAME] — draw what changed.
    • uv run arch-blueprint diff --base REV [--head REV] <project_dir> [-m '<pattern>'] — both sides built from git (--head defaults to the working tree).
    • uv run arch-blueprint history <project_dir> [ROOT ...] [-m '<pattern>'] [--base REV] [--head REV] [-o DIR] [-f puml|d2|puml-png|d2-png] — an album: a diagram and a diff per commit that changed the graph (see History album below).
  • Interactive viewer (see Viewer below): uv run arch-blueprint serve <project_dir> [-m '<pattern>'] [--links module|class] [--port N] [--no-open] — a local page (127.0.0.1) to fold / unfold packages, focus a node, list an arrow's imports; the view state lives in the URL.
  • Runnable example fixture: uv run arch-blueprint draw examples/project_root -m 'app1.*' -m 'app2.*' -m 'plugins.**' (see examples/README.md) — exercises multi-root cross-links and namespace-package handling.

Read the full file on GitHub · 619 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 18d ago Changed · +36 lines · +798 tokens per session 78b37bd18128
  2. 19d ago Changed · +45 lines · +1,116 tokens per session ceb1a43e01db
  3. 1mo ago Changed · +178 lines · +4,062 tokens per session 2fc9e25363db
  4. 1mo ago Changed · +48 lines · +1,138 tokens per session 01b3bf8b985f
  5. 1mo ago Changed · +121 lines · +2,557 tokens per session c35283baec9c
  6. 2mo ago First seen · 191 lines · 3,132 tokens per session scan A 0bbc6858884c

Subscribe to this mod's changes

arch-blueprint CLAUDE.md is an instructions file published in the GitHub repository nkhitrov/arch-blueprint (66 stars, last pushed 18d ago), licensed MIT. It adds 12,803 tokens to every session, about $0.0512 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other instructions, from other repositories

vscode buildNext.instructions.md

Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).

microsoft/vscode · 9,715 tokens

next.js AGENTS.md

AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.

vercel/next.js · 7,461 tokens

vscode oss-third-party-notices.instructions.md

Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, cache eligibility and rollout and applying the notice (cutover).

microsoft/vscode · 5,262 tokens

langchain AGENTS.md

AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.

langchain-ai/langchain · 4,680 tokens

vscode copilot-instructions.md

Copilot instructions for microsoft/vscode, covering vs code copilot instructions, project overview, root folders, core architecture (src/ folder) and built-in extensions (extensions/ folder).

microsoft/vscode · 2,750 tokens

deno copilot-instructions.md

Copilot instructions for denoland/deno, covering deno development guide for github copilot, network access, high level overview, key directories and key files to understand first.

denoland/deno · 3,077 tokens