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/shenchangmin/cairnkit/knowledgegit clone --depth 1 https://github.com/shenchangmin/cairnkitWhat 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.00018 | $0.00626 |
| Opus 5 | $0.00009 | $0.00313 |
| Sonnet 5 | $0.00004 | $0.00125 |
| Haiku 4.5 | $0.00002 | $0.00063 |
Grade A, and why
knowledge 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.
What it actually says
/knowledge
Operate on the knowledge base. Subcommands:
- stats →
cairn --root . knowledge stats— health report (zero DB, offline). - lint →
cairn --root . lint [--fix]— orphans/stale/duplicates/conflicts;--fixonly rebuilds the index (content conflicts are surfaced, never auto-resolved). - sync →
cairn --root . kbrepo pull, then inspect the knowledge contribution before any push. Pull resolves the current branch, upstream, and one raw fetch URL only from checkout-local Git config. Local paths become literal absolute operands; matching URL rewrites and remote or legacy-alias reinterpretation are rejected; successful output contains no remote paths. Beforekbrepo push, use the repository's secret scanner when present and a conservative private-key/credential-pattern check with filenames only (never print matching values). The engine independently scans paths plus raw and decoded JSON/YAML values and string escapes, including unknown fields, and rejects dirty or outgoing-history paths outside its knowledge allowlist, non-regular/non-UTF-8 files, invalid entries, credential-shaped commit metadata, and common credential patterns. It rejects unresolved, shallow, grafted, or replacement history; stages only validated dirty paths; audits every commit and full tree relative to the live tip of exactly one push URL resolved only from checkout-local Git config; clears inherited repository-binding Git variables; rejects matching URL rewrites and remote/legacy-alias reinterpretation; disables Git hooks/tag following; pins the audited local object ID; and binds one current-branch ref update with a tip lease. If a possible secret is found or the contribution cannot be reviewed safely, stop without pushing. Only after an explicit publication request runcairn --root . kbrepo push --message .... With no remote it commits locally and reportspushed: false; if a configured push fails after commit, the command exits nonzero and reports that the validated local commit remains. Re-running the same command with a clean worktree audits and retries those pending commits after the remote is repaired. - Workflow INIT/ARCHIVE use
kbrepo sync-in/sync-outto bridge project-local knowledge with the configured shared checkout. IDs/domains/shared paths use portable ASCII components; atomic writes and Git-tree audits reject case-aliased prefixes. Those commands never commit or push; thissyncaction is the separate explicit remote-publication path. - decay →
cairn --root . lifecycle decay— event-triggered staleness demotion.
Run lint+decay periodically (every N workflows, or when SessionStart reports it overdue).
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.
- yesterday First seen · 40 lines · 18 tokens per session scan A bffa88f054f5
knowledge is a command published in the GitHub repository shenchangmin/cairnkit (1 stars, last pushed 1mo ago), licensed MIT. It adds 18 tokens to every session and 626 once invoked, about $0.0001 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-31.
Other commands, from other repositories
issue-amend
Re-snapshot the active issue's scope from the spec, clear verified and reviewed receipts, and record the change as a permanent amendment.
q-research
Read the research-mode skill's SKILL.md for the full ruleset before proceeding. Follow all constraints, the source lookup cascade, the token budget, and the "what counts as cited" rules exactly.
ingest-l1
L1 analysis loop for the abapwiki knowledge base: for each batch it launches the abap-analyzer sub-agent in parallel, then the adversarial judge abap-deepcheck (separate session), applies only the analyses that pass the fail-closed gate, and commits. Resumes exactly after an interruption. Use this skill to document…
graphify
Turn your vault into a clustered knowledge graph with HTML and JSON outputs.
export-project
Export a single registered Gnosys project to a portable .json.gz bundle (round-trips with gnosys import project).
ambiguity
Check if a query matches memories in multiple projects.