Memos logo

Memos

Community
jmagar
memos

Manage notes and memos in self-hosted Memos service. Use when the user asks to "save this to memos", "create a memo", "search my memos", "find notes about X", "what did I write about", "add a note", "capture this", "remember this", "save this thought", or mentions note-taking, knowledge management, or personal notes.

Overview

Publisherjmagar
Repositoryclaude-homelab
Skill namememos
Stars
87
Forks
11
Bundled files
12
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 12 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by jmagar on GitHub. Read the source before you install it.

Installation

Install the Memos AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/jmagar/claude-homelab/tree/main/skills/memos
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/jmagar/claude-homelab.git /tmp/claude-homelab
mkdir -p .claude/skills
cp -r /tmp/claude-homelab/skills/memos .claude/skills/memos
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Memos in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Memos on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Memos is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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
  • curl and jq installed

Credential Configuration

Add these variables to ~/.claude-homelab/.env:

bash
# Memos - Self-hosted note-taking service
MEMOS_URL="https://memos.example.com"
MEMOS_API_TOKEN="<your_api_token>"

To generate an API token:

  1. Log into your Memos instance
  2. Go to Settings → Access Tokens
  3. Click "Create" and copy the generated token
  4. Add to .env file as shown above

Security:

  • .env file 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
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
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
bash scripts/memo-api.sh get <memo-id>

Update memo:

bash
bash scripts/memo-api.sh update <memo-id> "Updated content"
bash scripts/memo-api.sh update <memo-id> --add-tags "urgent"

Delete memo:

bash
bash scripts/memo-api.sh delete <memo-id>

Archive memo:

bash
bash scripts/memo-api.sh archive <memo-id>

Search Operations

Search by content:

bash
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
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
bash scripts/resource-api.sh upload /path/to/file.pdf
bash scripts/resource-api.sh upload image.png --memo-id <id>

List attachments:

bash
bash scripts/resource-api.sh list
bash scripts/resource-api.sh list --memo-id <id>

Delete attachment:

bash
bash scripts/resource-api.sh delete <attachment-name>

User Operations

Get current user:

bash
bash scripts/user-api.sh whoami

List access tokens:

bash
bash scripts/user-api.sh tokens

Workflow

When the user asks about memos:

  1. "Save this to my memos" → Extract key content, create memo with appropriate tags
  2. "What did I write about X?" → Search memos by content/tags, present results
  3. "Find my notes on project Y" → Use tag search or content filter
  4. "Update my memo about Z" → Search for memo, get ID, update content
  5. "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 Authorization header
  • Base URL: /api/v1 endpoint
  • Rate limits: No documented limits (self-hosted)
  • Pagination: Uses pageSize and pageToken parameters
  • 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 see
  • PROTECTED - Authenticated users can see
  • PUBLIC - Anyone can see (RSS feed)

Best Practices

  1. Use descriptive content: First line is preview in UI
  2. Tag consistently: Use lowercase, hyphens for multi-word (e.g., "project-alpha")
  3. Archive old memos: Keep workspace clean
  4. 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


🔧 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:

typescript
<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>
  • Troubleshooting: skills/memos/references/troubleshooting.md

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Memos AI skill do?

Manage notes and memos in self-hosted Memos service. Use when the user asks to "save this to memos", "create a memo", "search my memos", "find notes about X", "what did I write about", "add a note", "capture this", "remember this", "save this thought", or mentions note-taking, knowledge management, or personal notes.

Why use Memos on TypingMind?

Because you install it once and use it with any model. Memos is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Memos in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/jmagar/claude-homelab/tree/main/skills/memos. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Memos?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Memos?

As many as you like. As long as a model supports skills, you can use Memos with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Memos AI skill free?

Yes. It is published on GitHub by jmagar under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇