wiki-mode — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited wiki-mode (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill returns filing suggestions. It does not write knowledge pages or move existing notes. If .vault-meta/mode.json is absent, use generic. If the file exists but is invalid, fail closed and repair it through a reviewed configuration operation before suggesting routes; never silently substitute Generic for corrupt user configuration.
Resolve the installed product root from this skill's own location, not from the vault or current working directory:
PRODUCT_ROOT=/absolute/path/to/installed/claude-obsidian
CORE="$PRODUCT_ROOT/scripts/claude-obsidian.py"
MODE_HELPER="$PRODUCT_ROOT/scripts/wiki-mode.py"
test -f "$CORE" && test -f "$MODE_HELPER"Every ../wiki/references/ link in this file resolves the same way, relative to this skill's own directory under $PRODUCT_ROOT, never relative to the selected vault's wiki/ directory.
Always select the vault explicitly:
python3 "$MODE_HELPER" --vault "$VAULT" get
python3 "$MODE_HELPER" --vault "$VAULT" config
python3 "$MODE_HELPER" --vault "$VAULT" route concept "Concept name"
python3 "$MODE_HELPER" --vault "$VAULT" route source "Source title"The helper validates the selected vault, confines paths, sanitizes names, and prints a suggestion only. A calling skill may override the suggestion when the user supplies a more specific project, area, MOC, or parent note, but it must still apply its eventual writes through one operation transaction.
| Mode | Routing intent |
|---|---|
generic | Type-based folders such as sources, entities, concepts, and sessions. |
lyt | Atomic notes under wiki/notes/, connected through MOCs. |
para | Projects, Areas, Resources, or Archives chosen by actionability. |
zettelkasten | Flat atomic notes with time-sortable, collision-resistant identifiers and explicit links. |
Use the templates as structural guidance: LYT atomic, LYT MOC, PARA area, PARA project, PARA resource, or Zettelkasten atomic. They use canonical type values from claude_obsidian/page_schema.py and a separate flat methodology_role property:
| Template | Type | Methodology role |
|---|---|---|
| LYT atomic | concept | atomic |
| LYT MOC | meta | moc |
| PARA area | concept | area |
| PARA project | entity | project |
| PARA resource collection | concept | resource |
| Zettelkasten atomic | concept | zettel |
A resource template describes a topic collection. Use source instead when the new page represents a particular captured source. The methodology role does not add a router type: pass the canonical type and respect the chosen project, area, or MOC destination. Structural MOCs use an explicit destination; meta is not a routable new-note type. Existing user pages, custom type vocabularies, and saved Dataview queries remain unchanged. Any requested migration needs its own reviewed plan; switching mode never rewrites existing notes.
A mode change is one configuration operation, dry-run first:
.vault-meta/mode.json, or start from the helper's defaultconfig when it is absent.
generic, lyt, para, orzettelkasten. Preserve the other mode-specific settings.
current target hash and limits the write to .vault-meta/mode.json:
python3 "$CORE" mode set "$MODE" --vault "$VAULT" \
--generated-at "$GENERATED_AT" --operation-id "$OPERATION_ID"its approved_plan_sha256 only after review.
python3 "$CORE" mode set "$MODE" --vault "$VAULT" \
--generated-at "$GENERATED_AT" --operation-id "$OPERATION_ID" \
--approved-plan-sha256 "$APPROVAL_SHA256" --applyFollow the operation transaction contract. Do not use scripts/wiki-mode.py's legacy direct-write set action or a setup script to bypass this workflow.
Changing mode affects routing for future operations only. Never bulk-create folders, move notes, rewrite wikilinks, or migrate existing pages as a side effect. If migration is later requested, plan and review it as a distinct operation with its own hashes and transaction.
Observe the user's current structure, think about how they retrieve and act on notes, verify a few proposed routes before changing configuration, and grow by revisiting the mode only when real filing friction appears.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.