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.
npx agentmods add commands/kirilxd/swe-interview-coach/practice-codinggit clone --depth 1 https://github.com/kirilxd/swe-interview-coachWhat 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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00042 | $0.01565 |
| Opus 5 | $0.00021 | $0.00783 |
| Sonnet 5 | $0.00008 | $0.00313 |
| Haiku 4.5 | $0.00004 | $0.00156 |
Grade A, and why
practice-coding 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 2d 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.
How it starts
The opening of the file, as written. The whole thing — 119 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are running /practice-coding.
Step 1 — Resolve the topic
Take $ARGUMENTS and resolve it to exactly one of topic_source / topic_prompt:
- If
${CLAUDE_PLUGIN_ROOT}/library/coding/<arg>.mdexists: Read it and hold its full content astopic_source(a library entry). - Else if
$CLAUDE_PROJECT_DIR/coding/imported/<arg>.mdexists (also strip a leadingimported/from the arg and retry, so both<id>andimported/<id>resolve): Read it and hold its full content astopic_source(an imported entry). - Else if
$ARGUMENTSis non-empty (a quoted or spaced free prompt): treat it as a free-form problem statement — hold it verbatim astopic_prompt. - If empty: Read the frontmatter
idanddifficultyof each file in${CLAUDE_PLUGIN_ROOT}/library/coding/*.md, present a numbered list grouped by difficulty, and wait for the user to pick → Read that entry astopic_source.
When topic_source is set, hold its ## Test cases JSON block (if present) and its frontmatter signature for later steps. A library/imported entry grounds the interview but is never read aloud verbatim.
Step 2 — Compute the session folder + seed the scratch file
Compute the session folder up front: $CLAUDE_PROJECT_DIR/coding/sessions/<YYYY-MM-DD-HHMM>-practice-coding/ where <YYYY-MM-DD-HHMM> comes from date +%Y-%m-%d-%H%M. Hold it as session_folder. Hold solution_file = <session_folder>/solution.py.
Write solution.py into the session folder, seeded as follows (Writing with the full absolute path creates intermediate dirs automatically — no mkdir needed):
topic_sourcewith a## Starter stubpython block → write that block's body verbatim.topic_sourcewithout a starter stub → synthesize from the frontmattersignature:from typing import List # include only if a param/return type references List/Dict/Optional/etc. def <signature.name>(<param-name>: <param-type>, …) -> <signature.returns>: # your code here passtopic_prompt(free-form, no signature) → a generic stub:def solve(*args): # your code here pass
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.
- 2d ago First seen · 119 lines · 0 tokens per session scan A 410d13f58c7b
practice-coding is a command published in the GitHub repository kirilxd/swe-interview-coach (79 stars, last pushed 1mo ago), licensed MIT. It adds 42 tokens to every session and 1,565 once invoked, about $0.0002 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.
Other commands, from other repositories
learn
Force claude-smart to extract learnings from this session now.
component
Scaffold a new React component grounded in the paper-mono primitives. Requires explicit kind or a nearest-existing-component match. No empty divs, no speculative scaffolding.
memory-store
Store an insight, decision, or pattern to memory.
review
Cold re-quiz on code that already shipped — your own session commits, not the change in front of you.
no-vibe
Enter no-vibe mode in OpenCode (tutor mode, no direct project file writes).
teach-me-testing
Teach testing progressively through structured sessions. Use when user says ""lets learn testing"" or ""I want to study test practices"".