Ravel
Skill 12vault/ravel/.agents/plugins/plugins/ravel/skills/ravel
Build, enrich, query, explain, visualize, and teach codebase or document knowledge graphs with Ravel. Use when the user invokes $ravel or /ravel; asks to locate implementation context for a non-trivial coding task; asks to understand architecture, technologies, business domains, change impact, onboarding, docs, PDFs, or schemas; or wants graph-first repository analysis across any programming language.From its SKILL.md
npx -y skills add 12vault/ravel --skill ravelAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
9.8 KB, as published. Nobody here has run it
Ravel
Use the Go CLI for deterministic scanning, storage, queries, and validation. Use agents for language-independent semantics, architecture, domains, and teaching. Never claim an inferred relation is extracted.
Route the request
ravel .orravel tech: build the structural graph and map technologies. Readreferences/workflows.md.ravel understand: explain architecture, intent, domains, flows, and risks. Readreferences/workflows.md.ravel learn: create dependency-ordered tours and onboarding material. Readreferences/workflows.md.ravel diff: analyze the impact of current changes. Readreferences/workflows.md.ravel docs,ravel pdf, orravel schema: ingest non-code sources. Readreferences/corpus.md.- Non-trivial coding tasks: when the implementation files, symbols, or change surface are not already known, run
ravel context "<user task>"before broad repository search or opening many files. Refine exact targets withravel query,ravel explain, orravel path, then runravel affected <target>before editing a selected shared symbol or file. Treat the graph as a map: read the returned source and tests before changing code. Skip this step for trivial, known-file, or strictly local edits and when sufficient context is already loaded. - Natural-language relationship questions: prefer
ravel contextfor a connected, token-bounded subgraph. Useravel queryfor a short exact/lexical result list, thenravel pathorravel explainfor a named target. - Read compact truncation reasons literally:
token_budgetmay justify raising--token-budget, whilebranch_limitrequires narrower relations/depth or a larger--branch-fanout. More output tokens do not reopen a pruned traversal branch. - Reverse-impact questions: use
ravel affected <file|symbol|node-id>for incoming callers, references, implementers, importers, and dependents. Its default impact filter excludes generic containment noise. Files bootstrap direct definitions; packages/modules/directories bootstrap directly contained files plus direct definitions, capped at 20 origins. It does not recursively expand repository or nested-directory trees; use changed-file inputs orravel difffor that scope. Unresolved targets remain errors rather than guesses. - Cross-project questions: use
ravel mergefor explicitalias=graph-directoryinputs, orravel global add|list|query|context|buildfor a reusable private local registry. Merged IDs and paths are project-namespaced; do not expose registry paths in answers. - Pull-request impact: use
ravel prsonly when the user asks for live GitHub PR state or supplies an offline--manifest. Live mode delegates network access to the authenticatedghCLI. Use--conflictsfor file/community overlap and--jsonfor structured results. - MCP-capable hosts may launch
ravel mcp --out <graphdir>and use its read-onlyquery,context,explain,path, and reverse-impactaffectedtools. Keepcontexttoken-bounded and treat explicit unresolved results as unresolved. The optional--transport httpserver must be user-started; keep the default loopback bind, pass secrets through--api-key-env, and require explicit user authorization before any non-loopback bind. - Retrieval or answer-quality evaluation: use
ravel benchmarkwith the versioned repository-question JSONL contract. An optional--answersledger records externally adjudicated correctness, rubric fact coverage, tokens, spend, and provenance without raw answers; Ravel never invokes a model or judge. - Community descriptions: run
ravel community --template, askcommunity-describerto fill onlydescriptionandrationale, then import withravel community describe <file>. AI content must never set community IDs, membership, deterministic names, granularity, or hub thresholds. - Community continuity: membership-hashed IDs are authoritative. Updates may transfer deterministic display labels by one-to-one Jaccard overlap (
>=0.70remapped,0.40–0.70provisional review), but descriptions transfer only when membership is identical. Substantial merges get new labels; only the strongest child of a split may inherit. - Agent-produced nodes or edges: read
references/fragments.md, write a fragment, then runravel ingest <fragment.json>. - Native polyglot nodes come from the pinned pure-Go Tree-sitter layer. Treat syntax captures as
extracted, name-only target matches asinferred, and ambiguous or unsupported shapes as unresolved; usecode-analyzeronly to fill evidence-backed gaps rather than duplicating parser facts.
Core workflow
- After bootstrap, check for
.reporavel/graph.json. When it exists, runravel update <target>once before reading or querying the graph. This local, hash-aware refresh needs no additional consent; report changed paths or refresh failures, and never hide a stale-graph warning. - Read
.reporavel/report.mdafter the refresh. For a non-trivial coding task with an unknown implementation location or change surface, useravel context "<user task>"before broad source search; useravel querywhen only a symbol or path lookup is needed, andravel affected <target>before changing a selected shared target. - When no graph exists, run
ravel audit <target>, show the user what will be read, and ask before the initialravel build <target>. - When an update invalidates agent enrichment needed by the request, read
references/workflows.mdandreferences/orchestration.md, use the changed paths recorded by the update, and rerun only the affected roles. Do not redo unaffected enrichment. - For enrichment workflows, run
ravel plan <route> --jsonand dispatch every ready role. Parallelize only tasks whose dependencies are complete. - Require each role to return one fragment file. Run
ravel ingestafter each wave; stop the workflow if validation fails. - Answer from graph evidence and cite
path:startLinewhen available.
Do not start ravel watch, install Git hooks, or leave background processes running automatically. Suggest ravel watch --interval 2s <target> for saved-file refresh during active development and ravel hook install <target> for opt-in post-commit/post-checkout refresh. Both require explicit user consent.
Specialized roles
Use the eight executable role prompts in agents/. On hosts with native subagents, dispatch those roles directly. Otherwise execute the same prompts sequentially in isolated passes.
project-scanner: inventory languages, frameworks, manifests, entry points, and boundaries.code-analyzer: extract symbols and explicit code relationships for any language.architecture-analyzer: infer layers, components, decisions, and cross-cutting concerns.tour-builder: create dependency-ordered explanations and onboarding tours.graph-reviewer: reject missing endpoints, unsupported claims, duplicates, and weak provenance.domain-analyzer: model business domains, flows, steps, actors, and affected code.document-analyzer: extract concepts, claims, citations, schema entities, and code links from docs and PDFs.community-describer: add optional inferred prose descriptions to deterministic communities without changing their identity.
Keep each role scoped to explicit files from the audited corpus. Do not let agents scan ignored or secret-like files.
Bootstrap
On the first invocation, run scripts/ravel.sh version on macOS/Linux or scripts/ravel.ps1 version on Windows, then use that launcher for every Ravel command. The launcher compares the global CLI with the version in VERSION, entirely locally. When the global CLI is older, it selects the bundled binary and prints a short, non-blocking update notice; surface that notice to the user and continue the task. The source-checkout launcher may select the synchronized repository marketplace binary. It never downloads, installs, or updates anything.
The selected CLI automatically refreshes only Ravel skill bundles and static project instructions that already contain Ravel-owned installation markers. This lets binary and marketplace updates migrate existing integrations on their next invocation without creating a new platform integration or replacing an existing hook command. Set RAVEL_NO_AUTO_REFRESH=1 to disable this local maintenance.
If the packaged launcher is absent, probe ravel context --help. If that fails, stop and ask before installing or updating Ravel. Never invoke ravel update-check or ravel self-update automatically during a skill task: update-check performs an explicit release-metadata network request, and self-update downloads and replaces software. After resolving the command, continue from ravel audit.
Safety
- Keep source and graph artifacts local unless the user explicitly authorizes an external model or service.
- Never read
.env, keys, certificates, credential stores, or ignored files. Ravel applies.gitignore, credential-directory, and key-material exclusions before content reads; stop if an audit contradicts that policy. - Include every evidence file in fragment
sourcePaths. Tag direct evidence withconfidence: extractedandevidence: path:line; tag agent reasoning withconfidence: inferredand a concreterationale. - Treat unresolved and ambiguous relationships honestly.
- Never create new hooks, dependencies, models, or integrations without consent. Automatic refresh may maintain only previously installed Ravel-owned skills and instructions; it must not expand platform or project scope.