archive-obsidian-vault
Archives monthly work items from Obsidian vault Area/ and Projects/ to Archive/ with proper organization and attachment handling. Use when archiving completed monthly work.
Best use case
archive-obsidian-vault is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Archives monthly work items from Obsidian vault Area/ and Projects/ to Archive/ with proper organization and attachment handling. Use when archiving completed monthly work.
Teams using archive-obsidian-vault should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/archive-obsidian-vault/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How archive-obsidian-vault Compares
| Feature / Agent | archive-obsidian-vault | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Archives monthly work items from Obsidian vault Area/ and Projects/ to Archive/ with proper organization and attachment handling. Use when archiving completed monthly work.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Archive Obsidian Vault ## Overview This skill automates the archival process for monthly work items in an Obsidian vault. It moves completed work from `Area/` and `Projects/` directories to `Archive/` following a consistent naming pattern, handles attachments properly, and optionally processes journal files. ## Vault Structure The Obsidian vault follows this structure: - `Area/` - Active work areas (Discussions, Drawings, Journal, People) - `Projects/` - Active projects - `Archive/` - Archived work organized by YYYY-MM [Category] pattern ## Quick Start To archive work for a specific month: 1. **Request month to archive** - Ask user for the month in YYYY-MM format (e.g., 2025-10) 2. **Identify items to archive** - Search for all files and folders matching the date pattern 3. **Process journal cleanup** - Run delete_empty_journals.py if requested 4. **Create archive directories** - Set up destination folders 5. **Move files with attachments** - Transfer files and their associated attachments 6. **Verify completion** - Confirm all items were archived successfully ## Archival Process ### Step 1: Request Month to Archive **Ask the user for the month:** - Request the month in YYYY-MM format (e.g., "2025-10") - Validate the format matches YYYY-MM pattern - Store this as the `$MONTH` variable for the rest of the process **Ask about journal processing preferences:** - Should empty journals be deleted before archiving? - Should journals be combined into monthly files? - Should bookmarks be extracted from journals? - Or should journals be moved as-is? ### Step 2: Identify Items to Archive **Search for items in Area/ directories:** Navigate to the vault location: ``` /Users/paul/Library/CloudStorage/GoogleDrive-paul@meandu.com/My Drive/Obsidian/meandu/ ``` Find items matching the month pattern: - `Area/Discussions/$MONTH *.md` files - `Area/Drawings/$MONTH-*.md` files - `Area/Journal/$MONTH-*.md` files - `Projects/$MONTH */` folders **Identify attachment references:** For each Drawings file found: - Extract attachment references using pattern: `![[*-tldrawFile.*]]` - Build list of attachment files that need to be moved - Attachments are typically in previous months' Archive/*/attachments/ folders or Projects/attachments/ ### Step 3: Process Journal Cleanup (Optional) If user requested empty journal deletion: ```bash cd 'Area/Journal' python ~/bin/obsidian/delete_empty_journals.py --dry-run . $MONTH # Review output, then run without --dry-run python ~/bin/obsidian/delete_empty_journals.py . $MONTH ``` Available journal processing scripts in `~/bin/obsidian/`: - `delete_empty_journals.py` - Removes journal files containing only whitespace - `combine_journals.py` - Merges daily YYYY-MM-DD.md files into monthly YYYY-MM Journal.md - `extract_bookmarks.py` - Extracts links into separate YYYY-MM Links.md files ### Step 4: Create Archive Directories Create destination directories following the established pattern: ```bash cd Archive mkdir -p "$MONTH Discussions" mkdir -p "$MONTH Drawings/attachments" mkdir -p "$MONTH Journals" # Create project-specific folders as needed mkdir -p "$MONTH [Project Name]" ``` ### Step 5: Move Files with Attachments **Move Discussion files:** ```bash mv Area/Discussions/$MONTH*.md Archive/$MONTH\ Discussions/ ``` **Move Drawing files and attachments:** 1. Move markdown files: ```bash mv Area/Drawings/$MONTH-*.md Archive/$MONTH\ Drawings/ ``` 2. Extract list of referenced attachments from moved files 3. Find and copy/move attachments from their current locations to Archive/$MONTH Drawings/attachments/ 4. Verify all referenced attachments are present **Move Journal files:** ```bash mv Area/Journal/$MONTH-*.md Archive/$MONTH\ Journals/ ``` **Move Project folders:** ```bash mv Projects/$MONTH\ [Project\ Name] Archive/ ``` ### Step 6: Verify Completion **Count and verify:** - Count files in each archive directory - Verify attachment references match available files - Report final counts to user **Summary format:** ``` Archived for $MONTH: - X discussion files → Archive/$MONTH Discussions/ - X drawing files → Archive/$MONTH Drawings/ - X attachment files → Archive/$MONTH Drawings/attachments/ - X journal files → Archive/$MONTH Journals/ - X project folders Total: X items archived ``` ## File Paths Reference **Vault base path:** ``` /Users/paul/Library/CloudStorage/GoogleDrive-paul@meandu.com/My Drive/Obsidian/meandu/ ``` **Key directories:** - `Area/Discussions/` - Discussion files - `Area/Drawings/` - Drawing files with tldraw attachments - `Area/Journal/` - Daily journal entries - `Projects/` - Project folders - `Archive/` - Archived work **Journal processing scripts:** ``` ~/bin/obsidian/delete_empty_journals.py ~/bin/obsidian/combine_journals.py ~/bin/obsidian/extract_bookmarks.py ``` ## Archive Naming Pattern All archive folders follow this pattern: ``` YYYY-MM [Category] ``` **Examples:** - `2025-10 Discussions` - For discussion files - `2025-10 Drawings` - For drawing files (includes attachments/ subdirectory) - `2025-10 Journals` - For journal entries - `2025-10 On-call training` - For specific projects ## Attachment Handling **Attachment reference format:** ``` ![[uuid-tldrawFile.webp]] ![[uuid-tldrawFile.png]] ``` **Finding attachments:** - Check Archive/YYYY-MM Drawings/attachments/ directories from previous months - Check Projects/attachments/ directory - Use find command to locate specific files by UUID **Organizing attachments:** - All attachments for a month go in Archive/YYYY-MM Drawings/attachments/ - Maintain flat structure (no nested directories) - Preserve original filenames ## Error Handling **Common issues:** 1. **Nested attachments directory** - If attachments end up in attachments/attachments/, flatten: ```bash cd Archive/$MONTH\ Drawings/attachments mv attachments/* . rmdir attachments ``` 2. **Shared attachments** - If files reference attachments from previous months, copy (don't move) them: ```bash cp Archive/YYYY-MM\ Drawings/attachments/uuid.png Archive/YYYY-MM\ Drawings/attachments/ ``` 3. **Google Drive sync** - If files aren't visible in Obsidian after archiving: - Wait for Google Drive to complete sync - Tell user to reload vault in Obsidian (Cmd+R) ## Best Practices 1. **Always run journal cleanup scripts with --dry-run first** to preview changes 2. **Verify attachment counts** before and after moving to ensure nothing is lost 3. **Use comm or similar tools** to verify all referenced attachments are present 4. **Report detailed summaries** to user showing what was archived 5. **Check for empty directories** after moving files to keep vault clean
Related Skills
azure-keyvault-secrets-rust
Azure Key Vault Secrets SDK for Rust. Use for storing and retrieving secrets, passwords, and API keys. Triggers: "keyvault secrets rust", "SecretClient rust", "get secret rust", "set secret rust".
azure-keyvault-py
Azure Key Vault SDK for Python. Use for secrets, keys, and certificates management with secure storage.
azure-keyvault-keys-rust
Azure Key Vault Keys SDK for Rust. Use for creating, managing, and using cryptographic keys. Triggers: "keyvault keys rust", "KeyClient rust", "create key rust", "encrypt rust", "sign rust".
azure-keyvault-certificates-rust
Azure Key Vault Certificates SDK for Rust. Use for creating, importing, and managing certificates.
obsidian
Read, write, search, and manage Obsidian vault notes. Use when: (1) Reading/writing markdown notes, (2) Searching vault content, (3) Managing daily/periodic notes, (4) Tracking tasks or oncall incidents. Supports filesystem access and Local REST API.
obsidian-bases
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.
file-archiver
创建和解压ZIP、TAR和GZIP压缩包,支持密码保护。
chatgpt-archive-topic-background-report
Build a topic-focused research collection from ChatGPT archive viewer conversations (latest archive or all archives), run a background Responses API consolidation job with web search, and save markdown plus raw response artifacts. Use when the user asks to find archive threads by topic, reconcile repetition/contradictions, and generate a saved report with minimal polling noise.
azure-security-keyvault-secrets-java
Azure Key Vault Secrets Java SDK for secret management. Use when storing, retrieving, or managing passwords, API keys, connection strings, or other sensitive configuration data.
azure-security-keyvault-keys-java
Azure Key Vault Keys Java SDK for cryptographic key management. Use when creating, managing, or using RSA/EC keys, performing encrypt/decrypt/sign/verify operations, or working with HSM-backed keys.
azure-keyvault-secrets-ts
Manage secrets using Azure Key Vault Secrets SDK for JavaScript (@azure/keyvault-secrets). Use when storing and retrieving application secrets or configuration values.
azure-keyvault-keys-ts
Manage cryptographic keys using Azure Key Vault Keys SDK for JavaScript (@azure/keyvault-keys). Use when creating, encrypting/decrypting, signing, or rotating keys.