# Obsidian Archive

> Distils the current conversation into a concise reference note and saves it to the user's Obsidian vault in a configurable archive folder. Requires the mcp-obsidian MCP server. Use when the user asks to archive, save, log, capture, or file away the current conversation/chat/session — e.g., "archive this conversation", "save this to my vault", "add this to Obsidian", "remember this for later". Do…

- **Type:** Skill
- **Install:** `agentstack add skill-bgorkem-bgorkem-skills-obsidian-archive`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [bgorkem](https://agentstack.voostack.com/s/bgorkem)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [bgorkem](https://github.com/bgorkem)
- **Source:** https://github.com/bgorkem/bgorkem-skills/tree/main/plugins/obsidian-archive/skills/obsidian-archive

## Install

```sh
agentstack add skill-bgorkem-bgorkem-skills-obsidian-archive
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Obsidian Archive

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.

## Configuration

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.

```yaml
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, `` refers to the configured value above.

## When to use

Trigger on any of:

- "Archive this conversation", "save this chat", "add this to Obsidian", "log this"
- "Save what we learned", "capture this", "write this up", "file this away"
- "Remember this for later", "turn this into a note"

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.

## Requirements

- The [`mcp-obsidian`](https://github.com/MarkusPfundstein/mcp-obsidian) MCP server, connected to the user's Obsidian vault.
- The **Local REST API** Obsidian community plugin, installed and enabled in that vault.
- Obsidian running while the skill is used (the REST API needs the app to be open).

## Dependencies

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](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices#mcp-tool-references). 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 `` |
| `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.

## Workflow

### Step 1: Decide the filename

Format: `YYYY-MM-DD - .md`

- Use the **current date** (today, not the conversation's start date unless that's obviously different).
- The slug is a 3–6 word kebab-case summary of the conversation's main subject. Examples:
  - `2026-04-19 - obsidian-cli-move-files.md`
  - `2026-04-19 - nestjs-bullmq-rate-limiter.md`
- Avoid generic slugs like `chat`, `conversation`, `discussion`.

Before writing, call `mcp-obsidian:obsidian_list_files_in_dir(dirpath="")` (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.

### Step 2: Build the note content

Use this exact structure. Sections may be omitted **only** if genuinely empty (don't pad with filler).

````markdown
---
date: YYYY-MM-DD
tags: [conversation, ]
---

# 

> One-to-two sentence TL;DR of what this conversation was about and what came out of it.

## Key decisions & conclusions

- 
- 

## Code & commands that worked

```

```

Add brief context above each block if needed (one line).

## Follow-ups & open questions

- [ ] 
- [ ] 

## Related

- [[]]
- 
````

**Content rules — important:**

- **Distil, don't transcribe.** A 40-turn conversation might compress to 15 lines. That's fine. That's the point.
- **Include what failed only if the failure is instructive.** "We tried X, it didn't work because Y, so we switched to Z" is worth capturing. Dead ends that taught nothing are not.
- **Preserve working commands verbatim.** Don't paraphrase shell commands, API calls, or code. These are the highest-value content.
- **Tag thoughtfully.** 2–4 topical tags in the frontmatter (e.g. `obsidian`, `cli`, `nestjs`, `forex`). Always include `conversation` as one tag. Don't use spaces in tags.
- **Backlink opportunistically.** If the conversation touched a topic likely to have a note in the vault, include a `[[wikilink]]` in Related. Don't invent links to notes that don't exist.
- **No "Claude said" / "User asked" framing.** Write in third person / impersonal style, like an engineering lab notebook entry.

### Step 3: Save via MCP

Call `mcp-obsidian:obsidian_append_content` with:

- `filepath`: `/YYYY-MM-DD - .md`
- `content`: the full markdown from step 2

Since this tool appends (or creates if new), step 1's collision check ensures the file doesn't already exist.

### Step 4: Confirm to the user

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 `/2026-04-19 - obsidian-cli-move-files.md` — covers the `obsidian eval` + `fileManager.renameFile` pattern for moving files with backlink updates." (In practice, `` is replaced by the configured value.)

## Examples

> In these examples, `` stands in for whatever the user has configured. The example calls below use `AI/Conversations` as the illustrative value — substitute the user's actual configured path.

### Example 1: Technical deep-dive with working code

**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:**
1. `mcp-obsidian:obsidian_list_files_in_dir(dirpath="AI/Conversations")` → no collision.
2. Build note with slug `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.
3. `mcp-obsidian:obsidian_append_content(filepath="AI/Conversations/2026-04-19 - obsidian-cli-move-files.md", content=)`.

**Result:** "Saved to `AI/Conversations/2026-04-19 - obsidian-cli-move-files.md` — covers the CLI move pattern with backlink updates."

### Example 2: Too-short conversation

**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?"

### Example 3: Update an existing archive

**User says:** "Add today's findings to yesterday's conversation note."

**Actions:**
1. `mcp-obsidian:obsidian_list_files_in_dir(dirpath="")` to find the most recent matching file.
2. `mcp-obsidian:obsidian_get_file_contents` to confirm it exists and read context.
3. `mcp-obsidian:obsidian_append_content` with a new `## Update 2026-04-19` section containing today's additions — don't rewrite the existing content.

## Edge cases

- **Multiple distinct topics.** If the conversation genuinely covered unrelated subjects, offer to save two separate notes rather than one Frankenstein file. One file per conversation is the default, but topic coherence matters more.
- **User asks for a different location/format for this call.** Respect the override for that call, but don't treat it as a permanent change — permanent changes belong in the Configuration section of this file.
- **Configured folder doesn't exist yet.** That's fine — `mcp-obsidian:obsidian_append_content` will create it (and any missing parents) on first write. No pre-creation step needed.

## Troubleshooting

**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.

## What NOT to do

- Don't save the raw conversation transcript. Ever.
- Don't include timestamps for individual turns — only the date in frontmatter.
- Don't speculate about the user's unstated intent when writing Key Decisions. If they didn't actually decide X, don't claim they did.
- Don't use emoji in the note body unless the user does. The vault is an engineering reference, not a scrapbook.
- Don't add a note you can't justify the existence of. Quality over quantity.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [bgorkem](https://github.com/bgorkem)
- **Source:** [bgorkem/bgorkem-skills](https://github.com/bgorkem/bgorkem-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-bgorkem-bgorkem-skills-obsidian-archive
- Seller: https://agentstack.voostack.com/s/bgorkem
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
