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 skills/jimmypaolini/codebase/write-commentsnpx skills add JimmyPaolini/codebase --skill write-commentsgit clone --depth 1 https://github.com/JimmyPaolini/codebaseWrote 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/jimmypaolini/codebase/write-comments)<a href="https://agentmods.dev/skills/jimmypaolini/codebase/write-comments"><img src="https://agentmods.dev/badge/skills/jimmypaolini/codebase/write-comments.svg" alt="Measured on agentmods" 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 | $0.00092 | $0.01259 |
| Opus 5 | $0.00046 | $0.00629 |
| Sonnet 5 | $0.00018 | $0.00252 |
| Haiku 4.5 | $0.00009 | $0.00126 |
Grade A, and why
write-comments 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 today.
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 — 221 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Commenting
When to Comment
Code should be self-explanatory through good naming. Comments add value only when they explain why something is done — not what it does.
Comment when:
- Explaining non-obvious intent or business logic
- Documenting known edge cases or external constraints
- Noting a workaround with a link to the upstream issue
Don't comment when:
- The code is clear from reading it
- You're narrating what the code obviously does
How to Comment
Good Comments
// Delay is intentional: the third-party API enforces a 1s rate limit per key
await delay(1000);
// Uses linear search because this list is always < 10 items and never hot
const found = items.find((item) => item.id === targetId);
Bad Comments
// Increment counter
counter++;
// Call the API
const result = await fetchData();
// Return the value
return value;
Anti-Patterns
Obvious Comments
// Bad: restates what the code already says
const user = getUser(id); // Get the user by id
Redundant JSDoc
Avoid JSDoc on private functions or functions whose signature is self-documenting.
// Bad: JSDoc that adds nothing
/**
* Gets the user.
* @param id - The user id.
* @returns The user.
*/
function getUser(id: string): User { ... }
// Good: JSDoc only when it adds non-obvious context
/**
* Returns the user record, or throws `UserNotFoundError` if the id is
* not present in the active-users projection. Does NOT check the archive.
*/
function getUser(id: string): User { ... }
TODO Comments
Don't leave TODO comments to bypass lint rules or defer real fixes.
// Bad: silences a rule without explanation
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function process(data: any) { ... }
// Good: fix the underlying issue instead
function process(data: unknown) { ... }
If a TODO is genuinely needed (tracked work), include a ticket reference:
// TODO(#1234): remove once the upstream API supports batch deletes
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.
- today First seen · 221 lines · 92 tokens per session scan A a3c4b16db841
write-comments is a skill published in the GitHub repository JimmyPaolini/codebase (0 stars, last pushed today), licensed MIT. It adds 92 tokens to every session and 1,259 once invoked, about $0.0005 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-09-03.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
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.
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.
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.
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.
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…