tornhill

tornhill is a skill for Claude Code from sina-heidariaan/tornhill. It costs 172 tokens per session (3,158 once invoked), scanned A, original, Apache-2.0.

A skill that creates a high-level but evidence-backed map of a project's architecture, then places findings on it. Findings can cover failures, hidden dependencies, performance, correctness, edge cases, and recurring maintenance problems.

In plain words
What is it for?
Use it to inspect system structure and data flow, identify single points of failure and coupling, and produce Mermaid diagrams or interactive HTML views with links back to the source.
Why use it?
It prevents architecture diagrams from becoming guesses by requiring each component, connection, and finding to point to real code or git-history evidence.

Skill for Claude Code

Written for Claude Code: argument-hint in frontmatter.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the tornhill plugin — 2 skills shipped together

Good fit Use it to inspect system structure and data flow, identify single points of failure and coupling, and produce Mermaid diagrams or interactive HTML views with links back to the source.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add sina-heidariaan/tornhill
Claude Code
/plugin install tornhill

Made for: Claude Code.

Or install tornhill, the plugin that ships this one along with the rest of its 2 skills.

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 tornhill

README.md
[![agentmods](https://agentmods.dev/badge/skills/sina-heidariaan/tornhill/tornhill/github.svg)](https://agentmods.dev/skills/sina-heidariaan/tornhill/tornhill)
Your own site
<a href="https://agentmods.dev/skills/sina-heidariaan/tornhill/tornhill"><img src="https://agentmods.dev/badge/skills/sina-heidariaan/tornhill/tornhill/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 tornhill

Your own site · 80×15
<a href="https://agentmods.dev/skills/sina-heidariaan/tornhill/tornhill"><img src="https://agentmods.dev/badge/skills/sina-heidariaan/tornhill/tornhill.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 172 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,158 The whole file, excluding the scripts and references it only reads on demand.
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.00172 $0.03158
Opus 5 $0.00086 $0.01579
Sonnet 5 $0.00034 $0.00632
Haiku 4.5 $0.00017 $0.00316

Measured 10d ago against content hash 62ddba09bb1c, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

Grade A, and why

tornhill 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 10d 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.

skills/tornhill/SKILL.md · 215 lines

How it starts

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

tornhill Skill

Produces a critique-led architecture view. The diagram is the substrate; the findings overlay is the product. Drawing boxes without the critique layer is the failure mode this skill exists to avoid.

Design: critique-led · Mermaid source + interactive HTML twin · flows auto-proposed then user-pinned · one-shot on demand with a provenance stamp.

⛔ Grounding contract (overrides everything)

An invented architecture map lies — authoritatively. Every claim tornhill makes must be checkable by opening real code. So:

  • Every box and every arrow carries an evidence anchor — a real path:line. Derive edges from actual imports/calls/routes using whatever code-search or code-graph tools you have — tornhill-mine-graph.py (deterministic Tier-0 import graph, needs no tooling), ripgrep, an LSP, or a code-graph MCP. Never infer an edge from a name.
  • No anchor, no node/edge. If you cannot cite it, you drop it. A smaller true map beats a larger plausible one.
  • Every finding cites its evidence — a path:line, a churn count, or a co-change pair from tornhill-mine-git.py. No "probably / likely / typically".
  • Code + git are ground truth. When the map and the code disagree, fix the map.

The path:line anchor does double duty: it is the falsifiable proof of the claim, and the renderer turns it into a click-to-open code link in the HTML twin.

Altitude rule (the hard part — enforce by COLLAPSING)

Build the full graph, then collapse so it stays analyzable:

  • L1 System Context — the system + external actors/integrations.
  • L2 Containers / runtime units — deployables, datastores, caches, queues.
  • L3 Components — modules within a unit. Cluster by directory/module; hide edges below a coupling threshold; suppress leaf utilities. This collapse is what yields the spaceship altitude.
  • Hard stop before L4 GLOBALLY. Never draw classes/functions/code in the main diagrams. Exception: inside a risk-selected, user-confirmed deep-dive scope (the deep op), L4 (symbols + detailed sequences) is permitted, bounded by tornhill-mine-symbols.py --scope. The global L1–L3 view still collapses.

Read the full file on GitHub · 215 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. 10d ago First seen · 215 lines · 172 tokens per session scan A 62ddba09bb1c

Subscribe to this mod's changes

tornhill is a skill published in the GitHub repository sina-heidariaan/tornhill (1 stars, last pushed 2mo ago), licensed Apache-2.0. It adds 172 tokens to every session and 3,158 once invoked, about $0.0009 per session on Opus 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-31.

Related

Other skills, from other repositories

cloudflare-workers-observability

Cloudflare Workers observability with logging, Analytics Engine, Tail Workers, metrics, and alerting. Use for monitoring, debugging, tracing, or encountering log parsing, metric aggregation, alert configuration errors.

secondsky/claude-skills · 47 tokens

cloudflare-workers-dev-experience

Cloudflare Workers local development with Wrangler, Miniflare, hot reload, debugging. Use for project setup, wrangler.jsonc configuration, or encountering local dev, HMR, binding simulation errors.

secondsky/claude-skills · 47 tokens

diagnosing-bugs

Diagnosis loop for hard bugs and performance regressions. Builds a red-capable feedback loop and runs it before hypothesising — complements static code review (which finds bugs by reading) by running actual repros. Use when the user says 'diagnose'/'debug this', or reports something broken/throwing/failing/slow.

gtapps/claude-code-hermit · 72 tokens

issue-debugging

Systematic methodology for issue debugging including root cause analysis, impact mapping, tiered validation plans, and confidence assessment. Use when analyzing bugs, fixing issues, or validating fixes.

QBall-Inc/the-bulwark · 39 tokens

fix-bug

Run the Fix Validation pipeline to investigate, fix, and validate a bug. Ensures deterministic pipeline execution with IssueAnalyzer, FixWriter, TestWriter (conditional), TestAudit (conditional), and FixValidator stages.

QBall-Inc/the-bulwark · 46 tokens

ccc-systematic-debugging

Root-cause debugging via the Iron Law: no fix without confirmed root cause. Reproduce → hypothesize → verify → fix. Use when investigating bugs, test failures, or…

KevinZai/commander · 42 tokens