socratic

socratic is a skill for Claude Code, Codex from Tiltely/lens. It costs 111 tokens per session (2,168 once invoked), scanned A, original, MIT.

A discovery and review process that asks structured questions before designing or coding a significant feature, issue, or objective, then audits the result afterward. It records decisions and selects relevant review areas.

In plain words
What is it for?
Use it before non-trivial development work to clarify requirements, constraints, and knock-on effects, and after implementation to check whether the result matches the decisions made.
Why use it?
Starting with an incomplete understanding of the requirements can lead to rework, missed dependencies, or changes that affect unrelated parts of an application. The process brings those risks to the surface early.

Skill for Claude CodeCodex

Part of the lens plugin — 11 skills, 1 hook shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/tiltely/lens/socratic
Any agent
npx skills add Tiltely/lens --skill socratic
Clone the repo
git clone --depth 1 https://github.com/Tiltely/lens

Made for: Claude Code, Codex.

Or install lens, the plugin that ships this one along with the rest of its 11 skills, 1 hook.

Per session 111 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,168 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00111 $0.02168
Opus 5 $0.00056 $0.01084
Sonnet 5 $0.00022 $0.00434
Haiku 4.5 $0.00011 $0.00217

Measured 3d ago against content hash f254fcdc9d6d, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

socratic 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 3d 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/socratic/SKILL.md · 124 lines

How it starts

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

Socratic Discovery Orchestrator

Read first:

  • ${CLAUDE_PLUGIN_ROOT}/core/protocol.md (how to ask; the four excavations)
  • ${CLAUDE_PLUGIN_ROOT}/core/dossier.md (dossier lifecycle — you own creation/reset)
  • ${CLAUDE_PLUGIN_ROOT}/core/registry.md (available lenses for the plan)

Mode: explicit argument wins ("audit"). Otherwise: starting new work → design; reviewing something already built → audit (confirm your inference in one line).

Flow — design mode

  1. Dossier: per dossier.md. FIRST run the branch gate (dossier.md "Branch gate") — if on a base branch (main/master/develop/trunk), STOP and offer to create lens/<goal-slug>, stay, or use a worktree, and WAIT; if already on a feature branch, proceed silently. THEN create the branch-scoped dossier at <toplevel>/.lens/dossiers/<branch-slug>--<hash>.md (goal + date + branch: header; .lens/ git exclusion). No global reset — only this branch's file is written, so a concurrent session on another branch is untouched; if the legacy .lens-dossier.md exists, offer the one-time migration (dossier.md). Run stack detection (core/stack-detection.md); record stack:.
  2. Socratic rounds (protocol.md rules — ONE question at a time; classify each as fact vs intent first: fact questions get the five-rung evidence ladder (protocol.md "Evidence before questions") — dossier, repo, org prior art, the project's reachable knowledge systems, runtime truth — and arrive as confirmations when evidence exists. Name the reachable knowledge-system roles ONCE here, before Round A, so the rest of the dialogue knows which rungs exist):
    • Round A — the goal: what does success look like? for whom? what is explicitly out of scope?
    • Round B — caveats: what must be true for this to work? what constraints bound it?
    • Round C — rabbit holes: which sub-problems look small but are not? Name each.
    • Round D — blast radius: which systems/repos/platforms/people does this touch? (API, web, mobile, DB, infra, third parties, docs, team.) These four are SEEDS for the frontier (protocol.md "The frontier"), not a fixed script: each answer may spawn new branches — add them to the ## frontier mind-map (a tree, tagged [status][stakes]) and work it DOWN by stakes, not by round order. Discovery ends per protocol.md "When discovery is done": drain by stakes (drop no-consequence, default LOW, defer real-but-later), and PROPOSE synthesis (showing the mind-map) once only LOW/deferred branches remain or answers stop spawning branches. The user can say "enough, synthesize" at any step — honor it. Append everything to the dossier as you go.
  3. Lens plan (build it once the frontier is empty or deferred). Every lens — bundled or user-created — is a candidate; union the lens rows from all sources, nearest-wins on lens name (project > global > bundled — a nearer definition overrides a farther one, like a nearer CLAUDE.md):
    • bundled core/registry.md;
    • your global registry: resolve the foundry from the lens config (first-readable-wins: $LENS_CONFIG~/.claude/lens.json~/lens/lens.json; read its foundry key), then read <foundry>/registry.md and the lens bodies in <foundry>/lenses/<name>/SKILL.md. Skip silently if no config/registry exists.
    • project <repo>/.lens/registry.md (+ <repo>/.lens/lenses/) — if cwd is in a git repo (root via git rev-parse --show-toplevel) and it exists. A lens is the (registry row + its SKILL.md); nearest-wins selects BOTH from the level that defines the name. Pick the lenses whose triggers match what the rounds surfaced; for transparency tag each by origin — (bundled) / (yours) / (project). Present an ordered plan: lens → one-line reason. Let the user prune or reorder.
  4. Execute the chain in this session, dispatching per lens:
    • a BUNDLED lens → invoke its skill (/lens:<name>);
    • a lens you created (global <foundry>/lenses/<name>/SKILL.md or project <repo>/.lens/lenses/<name>/SKILL.md) → READ its SKILL.md inline and run its battery here (same as how this orchestrator reads core/*.md). Single-writer rule holds: you write the dossier. Each lens reads the dossier and skips answered questions (printing skip lines).
  5. Synthesis: render the final mind-map (the frontier tree — every node resolved or deferred); decisions made; open risks; the four excavations as a compact map; concrete action list. This is the DRAFT plan.
  6. Red-team the plan (MANDATORY): run the adversary lens on the draft — read-inline ${CLAUDE_PLUGIN_ROOT}/skills/adversary/SKILL.md (or invoke /lens:adversary). It first SUGGESTS plan mode and waits for the user, then attacks the plan (refutation, weakest decision, what discovery missed, reversibility, "first thing that worked"). Disposition every finding: revise a decision / reopen a frontier branch (→ back to step 2) / accept as explicit risk. The plan is FINAL only after it survives. Then write the final dossier state. (This step is not pruned — the adversarial pass reliably finds what discovery missed.)
  7. Close: remind the user — after the implementation lands, run /lens:socratic audit to verify it against this dossier, and /lens:retro after that (the SessionEnd hook has already queued this session if any lens ran).

Read the full file on GitHub · 124 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. 3d ago First seen · 124 lines · 111 tokens per session scan A f254fcdc9d6d

Subscribe to this mod's changes

socratic is a skill published in the GitHub repository Tiltely/lens (5 stars, last pushed 24d ago), licensed MIT. It adds 111 tokens to every session and 2,168 once invoked, about $0.0006 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

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.

obra/superpowers · 37 tokens

auto-perf-optimize

Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.

microsoft/vscode · 62 tokens

chat-perf

Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.

microsoft/vscode · 51 tokens

chat-pet-sprite-creation

Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.

microsoft/vscode · 53 tokens

cpu-profile-analysis

Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…

microsoft/vscode · 71 tokens