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/aspenkit/aspens/basenpx skills add aspenkit/aspens --skill basegit clone --depth 1 https://github.com/aspenkit/aspensWhat 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.00014 | $0.01657 |
| Opus 5 | $0.00007 | $0.00829 |
| Sonnet 5 | $0.00003 | $0.00331 |
| Haiku 4.5 | $0.00001 | $0.00166 |
Grade A, and why
base 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 — 79 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are working in aspens — a CLI that keeps coding-agent context accurate as your codebase changes. Scans repos, generates project-specific instructions and skills for Claude Code and Codex CLI, and keeps them fresh.
Tech Stack
Node.js 20+ (ESM) | Commander | Vitest | es-module-lexer | @clack/prompts | picocolors
Commands
npm test— Run vitest suitenpm start/node bin/cli.js— Run CLIaspens scan [path]— Deterministic repo analysis (no LLM)aspens doc init [path]— Generate skills + hooks + AGENTS.md (--target claude|codex|all,--recommendedfor full recommended setup)aspens doc impact [path]— Show freshness, coverage, and drift of generated context (--applyfor auto-repair,--backend/--model/--timeout/--verbosefor LLM interpretation)aspens doc sync [path]— Incremental skill updates from git diffsaspens doc graph [path]— Rebuild import graph cache (.claude/graph.json)aspens add <type> [name]— Install templates (agents, commands, hooks)aspens customize agents— Inject project context into installed agentsaspens save-tokens [path]— Install token-saving session settings (--recommendedfor no-prompt install,--removeto uninstall)- Debug:
ASPENS_DEBUG=1dumps raw stream events to$TMPDIR/aspens-debug-{stream,codex-stream}.json - Env knob:
ASPENS_TIMEOUT(seconds) overrides default LLM timeout when--timeoutnot passed
Architecture
CLI entry (bin/cli.js) → command handlers (src/commands/) → lib modules (src/lib/)
src/lib/scanner.js— Deterministic repo scanner (languages, frameworks, domains, structure)src/lib/graph-builder.js— Static import analysis via es-module-lexer (hub files, clusters, priority)src/lib/graph-persistence.js— Graph serialization, subgraph extraction, code-map + index generationsrc/lib/runner.js— Claude/Codex CLI wrapper (runClaudefor stream-json,runCodexfor Codex JSONL); also hostsloadPrompt(partial substitution) andparseFileOutput/validateSkillFilessrc/lib/context-builder.js— Assembles repo files into prompt-friendly contextsrc/lib/skill-writer.js— Writes skill files and directory-scoped files, generates skill-rules.json, merges settingssrc/lib/skill-reader.js— Parses skill files, frontmatter,triggers:blocks, legacy activation patterns, keywordssrc/lib/diff-classifier.js— Maps changed files to affected skills for doc-syncsrc/lib/diff-helpers.js— Targeted file diffs and prioritized diff truncation for doc-syncsrc/lib/git-helpers.js— Git repo detection, git root resolution, diff retrieval, log formattingsrc/lib/git-hook.js— Post-commit git hook installation/removal for auto doc-sync (monorepo-aware)src/lib/impact.js— Context health analysis: domain coverage, hub surfacing, drift detection, hook health, save-tokens health, usefulness summary, value comparison, opportunitiessrc/lib/save-tokens.js— Save-tokens config defaults, settings builders, gitignore/readme generatorssrc/lib/timeout.js— Timeout resolution (--timeoutflag >ASPENS_TIMEOUTenv > default)src/lib/errors.js—CliErrorclass (structured errors caught by CLI top-level handler)src/lib/target.js— Target definitions (claude/codex), config persistence (.aspens.json) withsaveTokensfeature config;getAllowedPathsfor multi-target sanitizationsrc/lib/target-transform.js— Transforms Claude-format output to other target formatssrc/lib/backend.js— Backend detection and resolution (which CLI generates content)src/lib/path-resolver.js/src/lib/source-exts.js— Source-file extension and path resolution helpers shared by scanner/graphsrc/lib/parsers/— Language-specific import parsers (TypeScript, Python)src/lib/frameworks/— Framework-specific detectors (e.g. Next.js)src/prompts/— Prompt templates with{{partial}}and{{variable}}substitutionsrc/templates/— Bundled agents, commands, hooks, and settings foraspens add/doc init/save-tokens
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 · 79 lines · 14 tokens per session scan A 74c50f943464
base is a skill published in the GitHub repository aspenkit/aspens (96 stars, last pushed 17d ago), licensed MIT. It adds 14 tokens to every session and 1,657 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-30.
Other skills, from other repositories
golden-rss
Use when testing the rss golden build.
golden-chat-topics
Use when testing the goldenchattopics golden build.
golden-chat-single
Use when testing the goldenchatsingle golden build.
decided-import
Reformat ONE existing document (a decision, requirement, design, roadmap, or prompt) into ONE valid RAC (requirements-as-code) artifact, with a mandatory human-review step before any file is written and decided validate as the deterministic close. Use when a user wants to add or import a single existing decision or…
keep-the-why
Preserves or recovers the reasoning behind a codebase - architectural decisions, rejected alternatives, workarounds, incident learnings, operational constraints, and historical context the code itself cannot explain. Use when implementing or reviewing a non-trivial change involving a design decision, workaround…
summarize
Summarize conversations, logs, docs, or investigation notes into action-oriented text with evidence tags. Use for recap, handoff, CI failure digest, or MEMORY. Triggers: 总结, 汇总, summarize, 交接, 复盘, 调试总结.