base
Skill100 starsChanged 6 months agoMITView on GitHub
Core conventions, tech stack, and project structure for aspens
10 other projects use a version of this.
Adopted by
Most recently taken up by
- ChainGPT-org/chaingpt-claude-skilltheir own version, first seen Nov 1, 2026
- Eskyee/agentbot-opensourcetheir own version, first seen Oct 13, 2026
- alinaqi/claude-bootstraptheir own version, first seen Oct 8, 2026
- BankrBot/openclaw-skillstheir own version, first seen Oct 8, 2026
- alinaqi/maggytheir own version, first seen Jun 12, 2026
- BankrBot/skillstheir own version, first seen Apr 28, 2026
Used with
Projects with it also use aeon-autoresearch, aeon-deal-flow and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
BankrBotSkillaeon-autoresearch
Evolve any installed skill by generating four variations along separate theses (better inputs / sharper output / more robust / rethink), scoring them on a weighted rubric, and applying the winner. Never downgrades a working skill — aborts cleanly if no variation improves the original. Use when an installed skill is producing low-signal output, hitting deprecated APIs, or feels stale. Triggers: "improve this skill", "evolve $skill", "auto-research my X", "regenerate variations".
Also in 3 projects that use this
BankrBotSkillaeon-deal-flow
Weekly funding round tracker across configurable verticals (AI, crypto, prediction markets, agentic infrastructure, etc.). Primary-source-required (Form D, press release, or verified founder/firm post) — filters re-announcements and rumored rounds. Per round: lead, size, valuation if disclosed, what they do, why now, and the sharpest risk. Triggers: "this week in funding", "deal flow", "who raised this week", "crypto funding rounds", "AI funding tracker".
Also in 3 projects that use this
- +10 more from BankrBot
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 10
- BankrBot/openclaw-skills★ 1.2ksame name
- BankrBot/skills★ 1.2ksame name
- alinaqi/maggy★ 711same name
- alinaqi/claude-bootstrap★ 708same name
- automagik-dev/forge★ 89same name
- automagik-dev/autopg★ 35same name
- Eskyee/agentbot-opensource★ 17same name
- basezh/agent-skills-on-base★ 15same name
- namastexlabs/automagik-tools★ 15same name
- ChainGPT-org/chaingpt-claude-skill★ 7same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository27 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- agent-customizationSkill
- architectureSkill
- claude-runnerSkill
- cli-shellSkill
- codex-supportSkill
- doc-impactSkill
- doc-syncSkill
- import-graphSkill
- repo-scanningSkill
- save-tokensSkill
- skill-generationSkill
- template-librarySkill
- agent-customizationSkill
- baseSkill
- claude-runnerSkill
- cli-shellSkill
- codex-supportSkill
- doc-impactSkill
- doc-syncSkill
- import-graphSkill
- repo-scanningSkill
- save-tokensSkill
- skill-generationSkill
- template-librarySkill
The file
Files
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
Critical Conventions
- Pure ESM —
"type": "module"throughout; useimport/export, neverrequire() - es-module-lexer WASM — must
await initbefore callingparse()in graph-builder - Claude CLI execution —
runClaude()spawnsclaude -pwith stream-json; always use--verboseflag with stream-json - Codex CLI execution —
runCodex()spawnscodex exec --json --sandbox read-only --ask-for-approval never --ephemeral; returns{ text, usage }matchingrunClaudeinterface - Stdin with backpressure —
runClaude/runCodexpipe prompts via stdin and respectdrainwhenwrite()returns false; never rewrite to use args (shell length limits) - Path sanitization —
parseFileOutput()restricts writes to.claude/andAGENTS.mdby default; acceptsallowedPathsoverride for multi-target viagetAllowedPaths(targets) - Read-only LLM tools — customize-style commands pass
allowedTools: ['Read', 'Glob', 'Grep']; never broaden without review - Prompt partials —
{{name}}in prompt files resolves tosrc/prompts/partials/name.mdfirst, then falls back to template variables - Target/Backend distinction — Target = output format/location; Backend = which LLM CLI generates content. Config persisted in
.aspens.json. Customize is Claude-only (CliErroriftargets: ['codex']) - Scanner is deterministic — no LLM calls; pure filesystem analysis
- CliError pattern — command handlers throw
CliErrorinstead of callingprocess.exit(); caught at top level inbin/cli.js - Monorepo support —
getGitRoot()resolves the actual git root; hooks, sync, and impact scope to the subdirectory project path - Verify before claiming — Never state something is configured/running/done without confirming in-session
Structure
bin/— CLI entry point (commander setup, CliError handler)src/commands/— Command handlers (scan, doc-init, doc-impact, doc-sync, doc-graph, add, customize, save-tokens)src/lib/— Core library modulessrc/prompts/— Prompt templates + partialssrc/templates/— Installable agents, commands, hooks, settingstests/— Vitest test files
Last Updated: 2026-05-11
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

