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 regen-coordination/org-os-template --skill working-with-obsidian-canvasgit clone --depth 1 https://github.com/regen-coordination/org-os-templateWrote 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/regen-coordination/org-os-template/working-with-obsidian-canvas)<a href="https://agentmods.dev/skills/regen-coordination/org-os-template/working-with-obsidian-canvas"><img src="https://agentmods.dev/badge/skills/regen-coordination/org-os-template/working-with-obsidian-canvas/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/regen-coordination/org-os-template/working-with-obsidian-canvas"><img src="https://agentmods.dev/badge/skills/regen-coordination/org-os-template/working-with-obsidian-canvas.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Rogue Agent · line 251 Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.Fix: Prevent the skill from modifying its own code, SKILL.md, or configuration files. Treat skill files as read-only at runtime.
- medium analysis-evasion · line 1 Suspicious Unicode normalization or mixed-script contentFix: Review the flagged content for security risks. Ensure no credentials, secrets, or sensitive data are exposed.
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.00087 | $0.03284 |
| Opus 5 | $0.00044 | $0.01642 |
| Sonnet 5 | $0.00017 | $0.00657 |
| Haiku 4.5 | $0.00009 | $0.00328 |
Grade A, and why
working-with-obsidian-canvas 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 9d 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 — 252 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Working with Obsidian Canvas (v0.1)
What This Is
A canvas is a spatial design document, not a data dump. Layout encodes intent: which nodes sit together, what zones contain what, how arrows flow. A merge that preserves all the JSON but flattens the spatial reorganization has destroyed the document.
This skill teaches Claude to:
- Classify the intent of a canvas-touching task before acting.
- Refuse to hand-edit canvases that are owned by a generator script.
- Validate every canvas before writing it back to disk.
- Stop and escalate on structural divergence in merges — the load-bearing rule.
The skill ships two scripts. Use them; don't reimplement their logic in your head:
scripts/validate-canvas.mjs <path>— integrity checks (dangling edges, missing file refs, ID collisions, bounds, palette). Exits non-zero on errors.scripts/diff-canvas.mjs <ours> <theirs>— emits a JSON classifier report (additive/disjoint-edit/positional-edit/structural/conflicting-spatial/no-change) plus the recommended action.
When to Use
- Operator asks to read, summarize, generate, edit, or merge a
.canvasfile. - A git merge or rebase touches a
.canvasfile. - The operator pastes a canvas path and asks for "preview" / "audit" / "clean up".
- Operator asks to "add a node" / "add this to the canvas" / "wire these together".
- A canvas has dangling file refs or broken links.
When NOT to Use
- The target is a non-canvas Obsidian file (
.md,.base) — different file format, different skill. - The operator is editing a canvas in the Obsidian app and asks an unrelated question.
- The task is canvas → HTML/PDF export (deferred — separate
exporting-obsidian-canvasskill once it exists). - Auto-layout via dagre / force-directed graph — out of scope for v0.1.
Phase A — Classify intent
First question on every canvas-touching task. Pick exactly one:
| Intent | Signal | Path |
|---|---|---|
| Read-only | "summarize", "what's in this canvas", "list", "audit" | B → end |
| Additive edit | "add a node", "wire X to Y", "append this section" | B → C → D → E |
| Structural edit | "reorganize", "rename zones", "move", "restructure layout" | B → C → confirm → D → E |
| Generative | "make a canvas for", "build a map of" (no existing canvas) | C → D → E |
| Merge | git merge/rebase, "merge <branch> into main", "reconcile" |
B → F |
What ships with it
5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 9d ago First seen · 252 lines · 87 tokens per session scan A 2c0d88cf3345
working-with-obsidian-canvas is a skill published in the GitHub repository regen-coordination/org-os-template (5 stars, last pushed 6d ago), licensed MIT. It adds 87 tokens to every session and 3,284 once invoked, about $0.0004 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
document-parsing
Extract readable Markdown from local Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, and text-based PDF files using the preinstalled AnyDoc runtime.
opengeni-documents
Create, inspect, edit, review, import, and export durable OpenGeni document artifacts and explicit DOCX file boundaries. Use for reports, briefs, proposals, forms, tables, sections, headers, footers, comments, tracked changes, and Word-compatible delivery.
opengeni-presentations
Create, inspect, edit, import, and export durable OpenGeni presentation artifacts and explicit PPTX file boundaries. Use for decks, slides, masters, layouts, rich text, tables, charts, imported media, groups, notes, and visual presentation QA.
opengeni-spreadsheets
Create, inspect, calculate, edit, import, and export durable OpenGeni spreadsheet artifacts and explicit XLSX/CSV file boundaries. Use for workbooks, formulas, analyses, tables, calculations, and spreadsheet visual QA. Do not use for controlling a live Excel application.
ckm:slides
Create strategic HTML presentations with Chart.js, design tokens, responsive layouts, copywriting formulas, and contextual slide strategies.
baoyu-youtube-transcript
A tool for downloading the written captions, subtitles, chapter information, speaker labels, and cover image from a YouTube video using its URL or ID.