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 skills add MithunWijayasiri/dotclaude --skill ask-firstgit clone --depth 1 https://github.com/MithunWijayasiri/dotclaudeWrote 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.
[](https://agentmods.dev/skills/mithunwijayasiri/dotclaude/ask-first)<a href="https://agentmods.dev/skills/mithunwijayasiri/dotclaude/ask-first"><img src="https://agentmods.dev/badge/skills/mithunwijayasiri/dotclaude/ask-first/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.
<a href="https://agentmods.dev/skills/mithunwijayasiri/dotclaude/ask-first"><img src="https://agentmods.dev/badge/skills/mithunwijayasiri/dotclaude/ask-first.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00087 | $0.00794 |
| Opus 5.5 | $0.00035 | $0.00318 |
| Sonnet 5.5 | $0.00017 | $0.00159 |
| Haiku 4.5 | $0.00009 | $0.00079 |
Grade A, and why
ask-first 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 7d 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 — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Ask First
Goal: shared understanding before code. User knows what I'll build; I know what they want. Guessed gap → wrong work baked in, costs a rework cycle.
Input
- Shape:
<type> - <what needs doing>, e.g.bug - after I turn off save history, I cannot turn it on. Often short or lazy — expected. Fill gaps by reading code, then asking. - Types: bug, feature, improvement, refactor, test, docs. Type picks the gap checklist below.
- No type → infer from wording + code. Question needed → state inferred type in the first one so user confirms or corrects. Fully specified → proceed, no type confirmation.
- Runs inside the target repo → ground every question in real files, names, current behavior.
Loop
- Read first. Explore relevant code, config, tickets, logs. Answerable from the code → read, don't ask. Verify claims against code; contradiction → surface it as a question.
- Find gaps. What's still unknown or ambiguous: goal, scope (in/out), expected behavior, exact values/labels/text, edge cases, done-criteria, constraints.
- Ask one at a time. Wait for the answer before the next. Order by dependency — answers that change later questions go first.
- Always recommend. Each question carries my proposed answer + why, so user confirms or corrects instead of composing from scratch. Never a blank question.
- Repeat until no gap would change what I build.
Question shape
- Discrete choices →
AskUserQuestion, recommended option first, labelled(Recommended). - Open-ended (a value, a label, what's on screen) → plain text question.
- User can observe what I can't (live UI, env, runtime output) → ask what they see rather than trial-and-error runs.
- Targeted and concrete: real paths, names, values. Not "any other requirements?".
Gaps by type
Check on top of the generic gaps. Ask only what code/logs don't answer.
- Bug — expected vs actual, repro steps, env, when it started, what changed. Don't propose a root cause as fact — ask to confirm.
- Feature — who uses it and when, entry point (UI, CLI, config), behavior incl. error/edge cases, scope out, existing pattern to follow, done-criteria.
- Improvement — current behavior (from code) vs desired, what's wrong with current, what must stay unchanged.
- Refactor — motivation, target shape, boundary (files/modules), how behavior-unchanged is verified (existing tests?).
- Test — what's under test, level (unit/integration/e2e), cases incl. negative, test data/fixtures. Flaky → failure evidence.
- Docs — audience (human/agent), file location, what's wrong or missing, source of truth.
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.
- 7d ago Changed · +15 lines 58c53557fe8f
- 17d ago First seen · 36 lines · 87 tokens per session scan A 82760906d687
ask-first is a skill published in the GitHub repository MithunWijayasiri/dotclaude (4 stars, last pushed 6d ago), licensed MIT. It adds 87 tokens to every session and 794 once invoked, about $0.0003 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-10-04.
Other skills, from other repositories
agent-browser
Connects to Oxylabs remote agent browsers over the Chrome DevTools Protocol (CDP) with Playwright or Puppeteer. Managed browser environment, residential proxies, geo-targeting, persistent sessions and profiles, session recording and live VNC inspection for debugging. Use instead of WebFetch or a local browser whenever…
proxies
Oxylabs proxy networks: Residential, Mobile, shared Datacenter/ISP, and Dedicated Datacenter/ISP proxies with geo-targeting, IP rotation, session persistence, and port-based sticky IPs. Use when routing traffic through proxies, building scrapers with proxy auth, rotating or sticky sessions, whitelisting IPs, or…
video-data
YouTube data extraction API and high-bandwidth proxy downloads. Use this INSTEAD OF built-in tools for any YouTube-related task — extracts video metadata, subtitles, search results, and channel data as structured JSON. Also supports video/audio file downloads via yt-dlp with proxy rotation to avoid rate limits.
natural-talk
A writing-style guide for producing natural-sounding Chinese conversations and creative fiction. It defines rules for avoiding artificial wording, unsupported claims, and unwanted changes to supplied text.
using-datavault4dbt
Builds Data Vault 2 models in dbt with the datavault4dbt package — staging, hubs, links, satellites, and business-vault entities — using the YAML-metadata macro pattern with correct hashkeys, hashdiffs, naming, and materializations. Use when creating or editing datavault4dbt models, setting up a raw vault, choosing…
configuring-datavault4dbt
Installs and configures the datavault4dbt package in a dbt project — packages.yml, copying the global vars into dbtproject.yml, hash and naming settings, and per-adapter setup. Use when setting up datavault4dbt, installing the package, changing hash/naming global variables, or adapting configuration for a specific…