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 atman-33/workhub --skill kb-lintgit clone --depth 1 https://github.com/atman-33/workhubWrote 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/atman-33/workhub/kb-lint)<a href="https://agentmods.dev/skills/atman-33/workhub/kb-lint"><img src="https://agentmods.dev/badge/skills/atman-33/workhub/kb-lint.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.1 | $0.00046 | $0.01270 |
| Opus 5 | $0.00023 | $0.00635 |
| Sonnet 5 | $0.00009 | $0.00254 |
| Haiku 4.5 | $0.00005 | $0.00127 |
Grade A, and why
kb-lint 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 — 160 lines — stays where its author put it; the contents beside it link to each section on GitHub.
KB Lint — Knowledge Base Health Check
Audit the workhub vault for structural issues, inconsistencies, and
maintenance opportunities. Covers the note zones (inbox/, projects/,
knowledge/, archive/) plus a size check on profile/decision-policy.md —
the task board (tasks/) is app-managed and only gets link checks.
Usage
/kb-lint # Full report (read-only)
/kb-lint --fix # Auto-fix safe issues
/kb-lint --zone knowledge # Lint only one zone
Checks
1. Index Drift
Compare _index.md contents (projects/_index.md, knowledge/_index.md,
archive/_index.md) against actual files on disk.
| Issue | Meaning |
|---|---|
| MISSING | Listed in index but file/folder not found |
| UNLISTED | File/folder exists but not in index |
| STALE_INDEX | updated date > 7 days older than newest change in the zone |
Auto-fix: Add unlisted entries, remove missing entries, update dates.
2. Orphan Documents
Files in projects/, knowledge/, or archive/ that have:
- No incoming
[[wikilinks]]from other files - No entry in any
_index.md - No tags
Exclude from check: journal/**, inbox/**, tasks/**, templates/**,
_ai/**, _index.md, home.md, AGENTS.md, CLAUDE.md.
Report: List orphans with suggested action (link, tag, or archive).
3. Tag Consistency
| Issue | Rule |
|---|---|
| MISSING_PROJECT_TAG | File in projects/x/ lacks #proj/x |
| BAD_TAG_FORMAT | Spaces or unexpected casing in tag |
| CROSS_REF_TAG | #proj/x tag on file outside projects/ — note as intentional cross-reference |
Auto-fix: Add missing #proj/ tags to frontmatter.
4. Broken Links
For each [[wikilink]] found in vault documents:
- Verify target file exists
- Report
BROKEN_LINKif not found
With obsidian CLI: obsidian links broken
Without CLI: Grep for \[\[.*?\]\], resolve each target.
5. Frontmatter Quality
Check documents in note zones for required fields:
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 Changed · +22 lines 265d69a11afa
- 4d ago First seen · 138 lines · 46 tokens per session scan A aaf4c7e4c99a
kb-lint is a skill published in the GitHub repository atman-33/workhub (2 stars, last pushed 2d ago), licensed MIT. It adds 46 tokens to every session and 1,270 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-09-03.
Other skills, from other repositories
gonavi-cli
Operate databases through the GoNavi headless CLI — the gonavi executable shipped in verified GitHub Release archives. Covers listing/adding/importing saved connections, running SQL queries against saved connections or ad-hoc connection files, exporting result sets to csv/json/md/html/xlsx, batch-executing SQL files…
ucai-patterns
Use when the user asks about Claude Code best practices, how to write agents, how to use hooks, how to manage context, or how to work effectively with Claude Code's native systems.
memory-curator
Use at session-close when a session captured several new memories, or on-demand, to consolidate, deduplicate, prune, and structure the beads memory store. Triggers on "curate memories", "clean up memories", "memory sweep".
memory
Use this skill when Pioneer should proactively use durable memory or recalled context: decide whether memory can improve a turn, answer from remembered user/project facts, request memory tools, search/list/get stored memories, save durable preferences or project decisions, forget memories, audit or clean up memory, or…
orient
Use when user invokes /orient with a topic keyword, entity type, project name, time qualifier, or combination. Also triggers on "what do we know about X", "remind me about X", "where did we leave off on X". Provides targeted context loading — searches the MCP Memory Server graph, knowledge files, journal entries, and…
capture
Use when user invokes /capture to capture information from the current conversation into a staging file for later reflection and knowledge graph processing. Accepts no arguments (auto-extract), specific facts as text, or filter keywords like "decisions" or "technical". Do NOT use when the user wants to write directly…