vulyk: Command for Claude Code

.claude/commands/vulyk-plan.md

vulyk-plan is a command for Claude Code from Black-coffe/vulyk. It costs 49 tokens per session (2,611 once invoked), scanned A, original, MIT.

A planning command that turns a request into a brief, project research, and small implementation stories. It classifies the work by tier and asks for approval when the process requires it.

In plain words
What is it for?
Use it to plan repository changes, especially work that needs several stories. It is for recording the request, checking existing project knowledge, asking necessary questions, and preparing approved work items.
Why use it?
It gives larger changes a written source of requirements and a traceable plan before implementation begins. This helps prevent stories from drifting away from the original request.

Command for Claude Code

Written for Claude Code: argument-hint in frontmatter. Also seen: reads .claude/ paths.

This is Black-coffe/vulyk's own configuration. It tells Claude Code how to work on vulyk 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 vulyk configures →

Reuse

Borrowing it

Nothing to install: this file belongs to Black-coffe/vulyk. 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/Black-coffe/vulyk/main/.claude/commands/vulyk-plan.md
Clone the repo
git clone --depth 1 https://github.com/Black-coffe/vulyk

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 vulyk-plan

README.md
[![agentmods](https://agentmods.dev/badge/commands/black-coffe/vulyk/vulyk-plan/github.svg)](https://agentmods.dev/commands/black-coffe/vulyk/vulyk-plan)
Your own site
<a href="https://agentmods.dev/commands/black-coffe/vulyk/vulyk-plan"><img src="https://agentmods.dev/badge/commands/black-coffe/vulyk/vulyk-plan/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 vulyk-plan

Your own site · 80×15
<a href="https://agentmods.dev/commands/black-coffe/vulyk/vulyk-plan"><img src="https://agentmods.dev/badge/commands/black-coffe/vulyk/vulyk-plan.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 49 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,611 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.00049 $0.02611
Opus 5.5 $0.00020 $0.01044
Sonnet 5.5 $0.00010 $0.00522
Haiku 4.5 $0.00005 $0.00261

Measured yesterday against content hash 4ae0cbaa9afa, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

vulyk-plan 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 yesterday.

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/commands/vulyk-plan.md · 109 lines

How it starts

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

Plan: "$ARGUMENTS"

  1. Deliverable first. Decide what the owner gets back: changed code or a document. A request to validate, audit, monitor, assess, research, compare, or "make me a spec / a plan / a report" is study work, and so is --study. Study work never cuts a story, dispatches a worker or opens a council: write docs/specs/<slug>/brief.md (step 2), recon as in step 3 with at most two scouts, and write docs/specs/<slug>/report.md: findings with file:line evidence, what was not read or run, options with the recommended one first and why, and the candidate stories the owner could approve next time (a list, not story files). Commit it as study(<slug>): <title> and stop. The owner turns a report into code by running /vulyk-plan again, in their own words. When both readings are genuinely possible, ask one question.
  2. Tier. Classify per the constitution's routing table and announce it with a one-line reason. Tier 0: do it now, no paperwork. Tier 1-4 continue. The floor: brief.md with ## Asks at Tier 1+, verbatim ## Requirements quotes in stories at Tier 2+, wave-check.sh and trace-check.sh whenever stories exist.
  3. Brief. Write docs/specs/<slug>/brief.md: the request verbatim as a > blockquote, piped through bash scripts/redact.sh, with the date. A bug report's error text, stack trace and reproduction go in verbatim too. Everything downstream traces back to this file, so never paraphrase it. When the request carries a stack trace, run bash scripts/trace-autopsy.sh docs/specs/<slug>/brief.md right after: autopsy.md beside the brief lists its repo frames, each code line and the last commits that touched it at HEAD (a lead, not a verdict).
  4. Recon. Read memory/memory.md and the relevant memory/map/ slices first. A targeted question about a file or two: read them yourself. Dispatch drone-scout only for broad or unmapped territory: Tier 1 none (one if the location is unknown), Tier 2 at most one, Tier 3 at most two, Tier 4 at most four, in parallel. A frame line in autopsy.md makes the location known: Tier 1-2 send no scout for it. Tier 2-4: run bash scripts/symbol-map.sh --exact <file> once per file the plan is likely to name (one call on many files is cut at 1536 bytes after a few) and keep every output: the planner dispatch receives it. Checklist, Tier 2-4: meta-tests, docs/ADR, .env.example, re-exports, sibling files with the same pattern. 3a. Horizon, Tier 2-4 on new ground (ADR-022). Skip it for study work, Tier 0-1, no-question mode and --no-horizon; --horizon runs it anyway. New ground is a recon fact: take two to four terms that name the asked capability (its nouns and verbs, not the project's) and Grep them in memory/memory.md, memory/map/ and the source. Zero hits on the capability fires the step; a hit on its container (a folder or file family, such as .claude/commands/ for a new command) does not count. An empty repo fires it too. A request inside existing code gets no horizon and no extra question. Announce it in one line in the owner's language: the terms, where they were searched, that the step runs, and that in the default permission mode the three lenses may ask for web search (a refusal is safe: their outside facts come back не подтверждено). VULYK grants no web permission itself. Then dispatch drone-horizon three times in one message, lens: altitude, depth and range, each with the brief path, a one-paragraph recon summary (what was not found and where it was looked for) and the Profile rows Configurations that exist today and Owner language copied verbatim, with no model parameter. Each returns up to three proposals: what, why, cost, check, sources, status, kind (gap or extension) and an ask line. A lens that fails or returns nothing is noted, and the step goes on with the others. Cut the candidates to at most three: merge duplicates, and drop what contradicts the Profile's Configurations that exist today or the repo, or is not tied to the owner's goal. A kept kind: gap stays a gap only when you name the ask or the verbatim request fragment that fails without it, and write that fragment beside it; otherwise relabel it extension. Number the kept proposals H1-H3. Write docs/specs/<slug>/horizon.md: the terms and where they were searched, every candidate with its verdict (kept, merged or dropped, one-line reason), and the kept proposals, numbered, with their fields and, for a gap, the fragment it rests on. Proposals never go into brief.md by themselves; only what the owner picks in the grill does.
  5. Grill, Tier 2-4. Follow templates/grill.md; it owns every rule of the round, horizon questions included. Its output lands in brief.md as ## Answers then ## Asks. Tier 1 skips it: ## Asks is the task phrase as item 1.
  6. Plan. Tier 1-2: write plan.md yourself from templates/plan.md. Tier 3-4: dispatch queen-planner with the brief, scout reports, the symbol-map output and map pointers; Tier 4 also consults lead-architect on the central design fork, and both Tier 4 dispatches carry model: <top_model> (bash scripts/top-model.sh). Tier 3 passes model: <p> from p="$(bash scripts/model-profile.sh --role planner)" only when it is not opus (else no model parameter). At Tier 3-4, when bash scripts/model-profile.sh --role routine prints haiku, add the line routine stories: model: haiku to the planner's brief. A queen-planner or lead-architect dispatch that returns the Fable-limit refusal (an error carrying You've reached your Fable limit / model_requires_usage_credits, or a text that starts with Agent terminated early due to an API error and carries reached your Fable limit; a quote is not it) and was not already on opus is redispatched once with the same prompt and model: opus; then, <from> the model it was passed ("" when none): bash scripts/journal.sh docs/specs/<slug> 01-spec "fallback: <agent> plan <from> -> opus (Fable limit; ADR-015 exception)" "plan", bash scripts/telemetry.sh record fable_limit_fallback 1 0 --spec <slug> --ref <slug>:plan:<agent> --model fable --agent <agent>, and one sentence to the owner, in the owner's language; then go on. A second refusal stops planning and is reported as it is today. No other error is retried this way.
  7. Stories, from templates/story.md, with no model: line (the worker's frontmatter decides): model: opus only for a long-horizon or judgment-heavy story, with the reason in one line (ADR-015); model: haiku for a routine or reusable story (helpers, boilerplate, a repeated pattern) only when --role routine prints haiku, with the reason in one line. At Tier 1-2 you build them yourself in order, so cut by review unit: Tier 1 exactly one story, Tier 2 one to three. At Tier 3-4 each story is one worker's job, and it earns its own worker only when it runs in parallel with its wave-mates on disjoint ## Files; fold the rest together. A story that adds a branch, a loop, a parser, or handling of money, security or data writes is marked red: required by you, the planner, and names the test that fails when that logic breaks: a test file in its own ## Files whose path appears in its ## Verification (so stamp-red seals it), with red_reason: prefilled when the assertion is known. A marked story gets no worker-test story in a later wave; its test is in the same story. One such test, not coverage, and a trivial change names none.
  8. Check. bash scripts/wave-check.sh docs/specs/<slug> and bash scripts/trace-check.sh docs/specs/<slug>. Fix what they report in the story files now, including any ## Verification segment that is not a ## Commands cell.
  9. Coverage, Tier 3-4. Dispatch drone-coverage with exactly two paths, brief.md and plan.md. An absent or partial ask rides forward as a ## Assumptions line in plan.md, never silently.
  10. Close the plan.
    • Tier 1 runs straight through: bash scripts/cycle.sh briefed docs/specs/<slug> --commit --mode mini-brief, then /vulyk-build <slug> in this session.
    • Tier 2-4 stop for approval by default. Show the plan in the owner's language: the tier, the stories by wave (one line each), the ## Assumptions, and what the build will spend (Tier 2: you build, one reviewer per round; Tier 3-4: the workers and seats). Wait. On approval, fill **Approved:** with the owner and the date, run bash scripts/journal.sh docs/specs/<slug> 02-approved "approved by <owner>" branch, and commit the spec directory (vulyk(<slug>): approved; chore(vulyk-<slug>): approved when the Profile's Commit convention names conventional commits, as cycle.sh writes it). A "no" or a change request reopens steps 5-7 once; a second one is a new brief.
    • Straight-through opt-in, only with --go or when the grill's last answer asked for it: instead of waiting, bash scripts/cycle.sh briefed docs/specs/<slug> --commit (--mode assumed in no-question mode) and continue.
  11. Launch.
  • Tier 2 after approval: tell the owner to /clear and run /vulyk-build <slug> in a fresh session. The build needs the files, not this planning conversation. Stop here.
  • Tier 2 with --go, and Tier 3-4: run /vulyk-build <slug> now.

Read the full file on GitHub · 109 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. yesterday Changed · +7 lines 4ae0cbaa9afa
  2. 2d ago Changed · +18 lines 3f5d1d67d29a
  3. 5d ago Changed · +17 lines dbef06c3873e
  4. 10d ago Changed · +4 lines f2d065a3f382
  5. 13d ago Changed · +4 lines aee34861c821
  6. 1mo ago Changed · +1 lines 91932860aa5d
  7. 1mo ago Changed · -13 lines · +9 tokens per session c2d9adfce036
  8. 1mo ago Changed · +1 lines 8d89a556c013
  9. 1mo ago Changed · +53 lines · +23 tokens per session 8ce5130a7b3d
  10. 1mo ago First seen · 17 lines · 17 tokens per session scan A 47fca013c74b

Subscribe to this mod's changes

vulyk-plan is a command published in the GitHub repository Black-coffe/vulyk (2 stars, last pushed today), licensed MIT. It adds 49 tokens to every session and 2,611 once invoked, about $0.0002 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-31.