doctor

doctor is a skill for Claude Code from jjanczur/tyran. It costs 60 tokens per session (371 once invoked), scanned A, original, Apache-2.0.

A diagnostic tool for Tyran, checking whether its automated checks, stored records, leases, policies, and configuration are working correctly.

In plain words
What is it for?
Use it to inspect hooks, compare the journal with its projections, find abandoned agent leases, detect unused policy rules, and validate configuration.
Why use it?
Some checks can silently stop working, so a clean-looking session may not mean the safeguards are active.

Skill for Claude Code

Written for Claude Code: ${CLAUDE_PLUGIN_ROOT} variable.

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 tyran plugin — 15 skills, 5 agents, 5 hooks shipped together

Good fit Use it to inspect hooks, compare the journal with its projections, find abandoned agent leases, detect unused policy rules, and validate configuration.

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 jjanczur/tyran
Claude Code
/plugin install tyran

Made for: Claude Code.

Or install tyran, the plugin that ships this one along with the rest of its 15 skills, 5 agents, 5 hooks.

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 doctor

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

Your own site · 80×15
<a href="https://agentmods.dev/skills/jjanczur/tyran/doctor"><img src="https://agentmods.dev/badge/skills/jjanczur/tyran/doctor.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 60 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 371 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.00060 $0.00371
Opus 5 $0.00030 $0.00186
Sonnet 5 $0.00012 $0.00074
Haiku 4.5 $0.00006 $0.00037

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

Security

Grade A, and why

doctor 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/doctor/SKILL.md · 36 lines

What it actually says

Doctor

Three checks, in this order. Run all three even if the first is clean — they fail independently.

node "${CLAUDE_PLUGIN_ROOT}/scripts/doctor.mjs" --hooks
node "${CLAUDE_PLUGIN_ROOT}/scripts/doctor.mjs" --state
node "${CLAUDE_PLUGIN_ROOT}/scripts/schema.mjs" validate config .tyran/config.yaml

--hooks is the one that matters most, and it is worth saying why. Hooks fail OPEN: a gate whose file is missing, whose execute bit was lost, or whose matcher can never match does not degrade into a weaker check — the action it was meant to stop simply proceeds, with nothing printed anywhere. A dead gate and a healthy gate look identical from inside a session. This check is the only thing that can tell them apart.

--state compares the journal against its projections and finds drift, leases held by agents that have long since reported, and policy rules that match no path in the repo.

Reporting

Paste the raw output. For each finding give the fix the tool named, and say plainly which findings are errors and which are informational — a report that blurs the two trains the operator to skim the next one.

If everything is clean, say so in one line with the counts, and resist adding advice. A clean doctor run that arrives with a list of suggestions reads as a failed one.

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 · 36 lines · 60 tokens per session scan A b4bc36deccf9

Subscribe to this mod's changes

doctor is a skill published in the GitHub repository jjanczur/tyran (79 stars, last pushed 7d ago), licensed Apache-2.0. It adds 60 tokens to every session and 371 once invoked, about $0.0003 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-30.