obsidian-archive — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited obsidian-archive (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.
Distil the current conversation into a concise reference note and save it to the user's Obsidian vault under the configured archive folder, one file per conversation.
The goal is a future-user-friendly note: something they can grep or backlink to months later and immediately recall what was figured out. Not a transcript. Not a stenographer's record. A distillation.
Before using this skill, set the archive folder below to a path that exists (or should exist) in your vault. It's a vault-relative path — no leading slash, trailing slash optional. The skill will save every note under this folder.
archive_folder: AI/Conversations/If the value above is left at a placeholder, looks empty, or obviously doesn't match the user's vault, ask once which folder to use and proceed with that for this call — don't guess, and don't silently fall back to the example value. If the user specifies a different folder inline (e.g. "save it under Notes/Chats/ instead"), respect that override for the call but don't treat it as a permanent change to the configured default — that's an edit to this file.
Throughout the rest of this skill, <archive_folder> refers to the configured value above.
Trigger on any of:
If the user's intent is ambiguous (e.g. "save this" could mean saving a file they uploaded), ask one quick clarifying question before proceeding.
mcp-obsidian MCP server, connected to the user's Obsidian vault.This skill orchestrates tools from the mcp-obsidian MCP server. If these aren't loaded into context, call tool_search(query="obsidian") first to load them.
Tool names below use the fully qualified ServerName:tool_name form per Anthropic's best practices. This skill assumes the server is registered in the MCP client as mcp-obsidian. If it's registered under a different name in your config, substitute that name for the mcp-obsidian: prefix everywhere below.
| Tool | Purpose |
|---|---|
mcp-obsidian:obsidian_list_files_in_dir | Check for filename collisions inside <archive_folder> |
mcp-obsidian:obsidian_append_content | Create the note (creates the file and parent folders if they don't exist) |
mcp-obsidian:obsidian_get_file_contents | Read existing archive when the user wants to update it |
If the MCP server isn't connected, stop and tell the user — don't fall back to a different vault location or save strategy.
Format: YYYY-MM-DD - <slug>.md
2026-04-19 - obsidian-cli-move-files.md2026-04-19 - nestjs-bullmq-rate-limiter.mdchat, conversation, discussion.Before writing, call mcp-obsidian:obsidian_list_files_in_dir(dirpath="<archive_folder>") (substitute the configured value) to check for collisions. If the exact filename exists, append -2, -3, etc.
If the folder doesn't exist yet, mcp-obsidian:obsidian_append_content will create it — no need to create it separately.
Use this exact structure. Sections may be omitted only if genuinely empty (don't pad with filler).
---
date: YYYY-MM-DD
tags: [conversation, <2-4 topical tags>]
---
# <Descriptive title — same subject as the slug, but human-readable>
> One-to-two sentence TL;DR of what this conversation was about and what came out of it.
## Key decisions & conclusions
- <Bullet. What was decided or concluded. Terse. Active voice.>
- <Another. Include the *why* when non-obvious.>
## Code & commands that worked
<only commands/snippets that were confirmed working — not drafts that failed>
Add brief context above each block if needed (one line).
## Follow-ups & open questions
- [ ] <Thing explicitly deferred, or a natural next step>
- [ ] <Open question that wasn't resolved>
## Related
- [[<Existing vault note if relevant>]]
- <External URL with short description, if a key reference>Content rules — important:
obsidian, cli, nestjs, forex). Always include conversation as one tag. Don't use spaces in tags.[[wikilink]] in Related. Don't invent links to notes that don't exist.Call mcp-obsidian:obsidian_append_content with:
filepath: <archive_folder>/YYYY-MM-DD - <slug>.mdcontent: the full markdown from step 2Since this tool appends (or creates if new), step 1's collision check ensures the file doesn't already exist.
Reply with: the path that was saved, and a one-line summary of what's in it. Don't paste the full note back — they can open it in Obsidian.
Example: "Saved to <archive_folder>/2026-04-19 - obsidian-cli-move-files.md — covers the obsidian eval + fileManager.renameFile pattern for moving files with backlink updates." (In practice, <archive_folder> is replaced by the configured value.)
In these examples,<archive_folder>stands in for whatever the user has configured. The example calls below useAI/Conversationsas the illustrative value — substitute the user's actual configured path.
User says: "Archive this conversation before I lose it."
Context: A 25-turn conversation about moving files in Obsidian via CLI, culminating in a working two-step command. Configured archive_folder is AI/Conversations/.
Actions:
mcp-obsidian:obsidian_list_files_in_dir(dirpath="AI/Conversations") → no collision.obsidian-cli-move-files, tags [conversation, obsidian, cli, mcp], TL;DR summarising the CLI-vs-MCP tradeoff, a Key Decisions section listing the fileManager.renameFile insight, a Code block with the working two-step command, and a Follow-ups entry to wrap it in a zsh function.mcp-obsidian:obsidian_append_content(filepath="AI/Conversations/2026-04-19 - obsidian-cli-move-files.md", content=<markdown>).Result: "Saved to AI/Conversations/2026-04-19 - obsidian-cli-move-files.md — covers the CLI move pattern with backlink updates."
User says: "Save this chat to Obsidian."
Context: Three turns about the weather.
Action: Don't archive. Reply: "This conversation's pretty short — it covered today's forecast and nothing that'd benefit from a reference note. Want to archive it anyway, or skip?"
User says: "Add today's findings to yesterday's conversation note."
Actions:
mcp-obsidian:obsidian_list_files_in_dir(dirpath="<archive_folder>") to find the most recent matching file.mcp-obsidian:obsidian_get_file_contents to confirm it exists and read context.mcp-obsidian:obsidian_append_content with a new ## Update 2026-04-19 section containing today's additions — don't rewrite the existing content.mcp-obsidian:obsidian_append_content will create it (and any missing parents) on first write. No pre-creation step needed.Error: `404 Not Found` from mcp-obsidian:obsidian_append_content Cause: Obsidian isn't running, or the Local REST API plugin is disabled/misconfigured. Solution: Ask the user to confirm Obsidian is open and the Local REST API plugin is enabled. Don't retry blindly.
Tool call fails with "tool not found" Cause: The mcp-obsidian tools aren't loaded in this session. Solution: Call tool_search(query="obsidian") first, then retry.
Filename collision after appending `-2`, `-3`, `-4` Cause: The user is archiving many conversations on the same subject on the same day. Solution: Ask whether they want to update an existing file (see Example 3) rather than keep creating new ones.
Configured `archive_folder` is empty, clearly a placeholder, or doesn't fit the vault Cause: The skill hasn't been configured for this vault yet. Solution: Ask the user which folder to use, save there for this call, and recommend they update the Configuration section so the choice persists across sessions.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.