Install
$ agentstack add skill-jmagar-claude-homelab-memos ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Memos Skill
⚠️ MANDATORY SKILL INVOCATION ⚠️
YOU MUST invoke this skill (NOT optional) when the user mentions ANY of these triggers:
- "save this to memos", "create a memo", "add a memo"
- "search my memos", "find notes about X", "what did I write about"
- "list my memos", "show recent memos", "what memos do I have"
- "update memo", "edit memo", "delete memo"
- "tag this memo", "add tags", "organize memos"
- "upload to memo", "attach file to memo"
- "archive memo", "pin memo", "make memo public"
- Any mention of "memos", "notes", "note-taking", or "personal knowledge"
Failure to invoke this skill when triggers occur violates your operational requirements.
Purpose
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:
- Create, read, update, and delete memos (notes)
- Search memos by content, tags, or metadata
- Upload and manage file attachments
- Organize memos with tags
- Archive and visibility controls
- Link related memos together
Primary use case: Quick capture of important information from Claude conversations into a personal knowledge base.
Setup
Prerequisites
- Memos instance running and accessible
- API access token generated from Memos UI
curlandjqinstalled
Credential Configuration
Add these variables to ~/.claude-homelab/.env:
# Memos - Self-hosted note-taking service
MEMOS_URL="https://memos.example.com"
MEMOS_API_TOKEN=""
To generate an API token:
- Log into your Memos instance
- Go to Settings → Access Tokens
- Click "Create" and copy the generated token
- Add to
.envfile as shown above
Security:
.envfile is gitignored (never commit)- Set permissions:
chmod 600 ~/.claude-homelab/.env - Token has same permissions as your user account
Commands
All commands return JSON output for LLM parsing. Scripts source credentials from .env automatically.
Memo Operations
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
Update memo:
bash scripts/memo-api.sh update "Updated content"
bash scripts/memo-api.sh update --add-tags "urgent"
Delete memo:
bash scripts/memo-api.sh delete
Archive memo:
bash scripts/memo-api.sh archive
Search Operations
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
Resource (Attachment) Operations
Upload file:
bash scripts/resource-api.sh upload /path/to/file.pdf
bash scripts/resource-api.sh upload image.png --memo-id
List attachments:
bash scripts/resource-api.sh list
bash scripts/resource-api.sh list --memo-id
Delete attachment:
bash scripts/resource-api.sh delete
User Operations
Get current user:
bash scripts/user-api.sh whoami
List access tokens:
bash scripts/user-api.sh tokens
Workflow
When the user asks about memos:
- "Save this to my memos" → Extract key content, create memo with appropriate tags
- "What did I write about X?" → Search memos by content/tags, present results
- "Find my notes on project Y" → Use tag search or content filter
- "Update my memo about Z" → Search for memo, get ID, update content
- "Delete that memo" → Confirm with user, then delete by ID
Detailed Flow: Quick Capture
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
Detailed Flow: Search and Retrieve
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
Detailed Flow: Organization
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
Notes
API Details
- Authentication: Bearer token in
Authorizationheader - Base URL:
/api/v1endpoint - Rate limits: No documented limits (self-hosted)
- Pagination: Uses
pageSizeandpageTokenparameters - Filtering: Google AIP-160 standard (e.g.,
tag == "work")
Memo Format
Memos support full Markdown syntax:
- Headers, lists, code blocks
- Links and images
- Task lists (- [ ] and - [x])
- Tables
Visibility Options
PRIVATE- Only you can seePROTECTED- Authenticated users can seePUBLIC- Anyone can see (RSS feed)
Best Practices
- Use descriptive content: First line is preview in UI
- Tag consistently: Use lowercase, hyphens for multi-word (e.g., "project-alpha")
- Archive old memos: Keep workspace clean
- Link related memos: Use memo relations for context
Common Errors
401 Unauthorized:
- Check API token in
.env - Token may have expired (regenerate in Memos UI)
404 Not Found:
- Verify memo ID exists
- Check MEMOS_URL is correct
Connection refused:
- Memos instance not running
- Verify URL in
.env
Reference
- Official Docs: https://usememos.com/docs
- API Reference: https://usememos.com/docs/api
- Scripts:
skills/memos/scripts/ - Examples:
skills/memos/examples/
🔧 Agent Tool Usage Requirements
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:
./skills/memos/scripts/memo-api.sh [args]
true
- Troubleshooting:
skills/memos/references/troubleshooting.md
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: jmagar
- Source: jmagar/claude-homelab
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.