From memos
Manages notes in self-hosted Memos service: create, list, search, update, delete, tag, attach files via bash API scripts. Activates on 'save to memos', note-taking, or knowledge management requests.
npx claudepluginhub jmagar/claude-homelabThis skill uses the workspace's default tool permissions.
**⚠️ MANDATORY SKILL INVOCATION ⚠️**
Manages notes in self-hosted Memos service via API scripts: create, list, search, update, delete, tag, attach files, and organize. Activates on save-to-memos, search-notes, or note-taking requests.
Stores and retrieves persistent notes via basic-memory CLI with semantic search, context building for topics, and recent activity listing across sessions.
Saves concise user-specified information to Mem9 shared memory via Bash API for persistence across Claude Code sessions. Triggers on 'remember', 'note down', or 'save' requests.
Share bugs, ideas, or general feedback.
⚠️ MANDATORY SKILL INVOCATION ⚠️
YOU MUST invoke this skill (NOT optional) when the user mentions ANY of these triggers:
Failure to invoke this skill when triggers occur violates your operational requirements.
This skill provides read-write access to a self-hosted Memos instance for quick note capture, search, and organization. Memos is a privacy-focused, self-hosted note-taking service with Markdown support, tagging, and file attachments.
Core capabilities:
Primary use case: Quick capture of important information from Claude conversations into a personal knowledge base.
curl and jq installedAdd these variables to ~/.claude-homelab/.env:
# Memos - Self-hosted note-taking service
MEMOS_URL="https://memos.example.com"
MEMOS_API_TOKEN="your-api-token-here"
To generate an API token:
.env file as shown aboveSecurity:
.env file is gitignored (never commit)chmod 600 ~/.claude-homelab/.envAll commands return JSON output for LLM parsing. Scripts source credentials from .env automatically.
Create a memo:
bash scripts/memo-api.sh create "Your memo content here"
bash scripts/memo-api.sh create "Memo with tags" --tags "work,project"
bash scripts/memo-api.sh create "Private memo" --visibility PRIVATE
List memos:
bash scripts/memo-api.sh list
bash scripts/memo-api.sh list --limit 10
bash scripts/memo-api.sh list --filter 'tag == "work"'
Get specific memo:
bash scripts/memo-api.sh get <memo-id>
Update memo:
bash scripts/memo-api.sh update <memo-id> "Updated content"
bash scripts/memo-api.sh update <memo-id> --add-tags "urgent"
Delete memo:
bash scripts/memo-api.sh delete <memo-id>
Archive memo:
bash scripts/memo-api.sh archive <memo-id>
Search by content:
bash scripts/search-api.sh "search query"
bash scripts/search-api.sh "docker kubernetes" --tags "devops"
bash scripts/search-api.sh "meeting notes" --from "2024-01-01"
Search by tag:
bash scripts/tag-api.sh list # List all tags
bash scripts/tag-api.sh search "project-x" # Find memos with tag
Upload file:
bash scripts/resource-api.sh upload /path/to/file.pdf
bash scripts/resource-api.sh upload image.png --memo-id <id>
List attachments:
bash scripts/resource-api.sh list
bash scripts/resource-api.sh list --memo-id <id>
Delete attachment:
bash scripts/resource-api.sh delete <attachment-name>
Get current user:
bash scripts/user-api.sh whoami
List access tokens:
bash scripts/user-api.sh tokens
When the user asks about memos:
User: "Save this conversation about Docker networking to my memos"
1. Extract key information from conversation
2. Create memo with descriptive content
3. Add relevant tags (e.g., "docker", "networking", "conversation")
4. Confirm creation with memo ID
5. Optionally ask if user wants to make it public/private
User: "What did I write about Kubernetes last month?"
1. Search memos with query "kubernetes"
2. Apply date filter (last 30 days)
3. Present results with memo IDs and previews
4. User can request full content of specific memos
User: "Tag all my Docker memos with 'devops'"
1. Search for memos containing "docker"
2. For each result, update memo to add "devops" tag
3. Report number of memos updated
4. Show tag statistics
Authorization header/api/v1 endpointpageSize and pageToken parameterstag == "work")Memos support full Markdown syntax:
PRIVATE - Only you can seePROTECTED - Authenticated users can seePUBLIC - Anyone can see (RSS feed)401 Unauthorized:
.env404 Not Found:
Connection refused:
.envskills/memos/scripts/skills/memos/examples/CRITICAL: When invoking scripts from this skill via the zsh-tool, ALWAYS use pty: true.
Without PTY mode, command output will not be visible even though commands execute successfully.
Correct invocation pattern:
<invoke name="mcp__plugin_zsh-tool_zsh-tool__zsh">
<parameter name="command">./skills/memos/scripts/memo-api.sh [args]</parameter>
<parameter name="pty">true</parameter>
</invoke>
skills/memos/references/troubleshooting.md