obsidian-markdown-mastery — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited obsidian-markdown-mastery (Agent Skill) and scored it 87/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 3 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 3 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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 requires Python 3.8+ and standard library only. No external packages needed.
To install this skill's dependencies:
pip-compile ./requirements.in
pip install -r ./requirements.txtSee ./requirements.txt for the dependency lockfile (currently empty — standard library only).
Status: Active Author: Obsidian Integration Plugin Domain: Obsidian Integration
The obsidian-markdown-mastery skill is responsible for the exact formatting, extraction, and validation of Obsidian-flavoured Markdown. It provides the low-level string manipulation that allows higher-order agents (like the Graph Traverser or JSON Canvas Architect) to safely interpret relational links without breaking the .md Vault.
CRITICAL ARCHITECTURAL RULE: All vault data manipulation MUST occur through deterministic Python scripts rather than agent-prompted regex. This skill defines the obsidian-parser module that performs these deterministic actions.>
Agnosticism Enforcement: This module knows NOTHING about project-specific protocols, persistence layers, or external services. It only knows how to parse text into valid Obsidian links and block-quotes. Project-specific configuration (vault paths, injection points) is managed via the OBSIDIAN_VAULT_PATH environment variable.Extracts all Obsidian-specific metadata (links, embeds, blocks) from a given markdown file or string. Command: python ./parser.py analyze --file <path_to_md>
Wraps a target text block in an Obsidian-flavored callout. Command: python ./parser.py callout --type <type> --title <title> --text <content>
When manipulating strings via this module, the following formats are enforced:
[[Note Name]][[Note Name#Heading Name]][[Note Name#^block-id]][[Note Name|Display Text]]![[Note Name]] (Note the leading !) > [!type] Title
> Content block goes here.info, warning, error, success, note.Other tools (such as protocol-manager and chronicle-manager) rely on the unified OBSIDIAN_VAULT_PATH environment variable to discover where the root of the Obsidian Vault resides. If missing, it defaults to the project root.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.