{
  "markdown": "> For the Japanese version, see [README.ja.md](README.ja.md).\n\n# skill-memo\n\nA CLI tool for managing installed skills and MCP servers in Claude Code, with free-form memo support.\n\n## Features\n\n- **Auto-detection** of MCP servers from `~/.claude/settings.json` and skills from `~/.claude/skills/`\n- **Manual registration** for entries not auto-detected\n- **Memo, tag, and description** management per entry (add, edit, delete)\n- **Table-formatted listing** with filtering by type, tag, and source, plus sorting\n- **AND search** across key, name, memo, tags, and description fields\n- **Export** in Markdown or JSON format\n- Usable as a Claude Code slash command via `/catalog`\n\n## Installation\n\n```bash\ngit clone https://github.com/aliksir/skill-memo.git\ncd skill-memo\n```\n\nNo dependencies. Requires only Node.js 18+.\n\n### Using as a slash command\n\nCreate `~/.claude/commands/catalog.md` to enable the `/catalog` command.\nSee `skills/catalog.md` for a template. Adjust the paths to match your environment.\n\n## Usage\n\n### CLI\n\n```bash\n# List entries\nnode bin/skill-memo.js list\nnode bin/skill-memo.js list --type mcp         # MCP servers only\nnode bin/skill-memo.js list --type skill       # Skills only\nnode bin/skill-memo.js list --tag security     # Filter by tag\nnode bin/skill-memo.js list --sort name        # Sort by name\nnode bin/skill-memo.js list --sort updated     # Sort by updated date\nnode bin/skill-memo.js list --json             # Output as JSON array\n\n# Search (AND search, case-insensitive)\nnode bin/skill-memo.js search security\nnode bin/skill-memo.js search \"security review\"\nnode bin/skill-memo.js search --json memory\n\n# Auto-detect and sync to catalog (shows diff)\nnode bin/skill-memo.js sync\n\n# Manual add\nnode bin/skill-memo.js add skill nano-banana --memo \"Image generation skill\" --tag \"image,ai\"\nnode bin/skill-memo.js add mcp filesystem --memo \"Filesystem access\"\n\n# Update memo (\\n for newlines)\nnode bin/skill-memo.js memo mcp:memory \"Line 1\\nLine 2\"\n\n# Update tags (overwrites existing)\nnode bin/skill-memo.js tag mcp:memory \"security,review\"\n\n# Remove\nnode bin/skill-memo.js remove skill:old-tool\n\n# Export\nnode bin/skill-memo.js export                  # Markdown table (stdout)\nnode bin/skill-memo.js export --format json    # Full store as JSON\n\n# Show store file path\nnode bin/skill-memo.js path\n```\n\n### Slash command (`/catalog`)\n\n```\n/catalog                          List entries\n/catalog sync                     Auto-detect and sync\n/catalog add skill foo --memo \"memo\" --tag \"tag1,tag2\"\n/catalog memo skill:foo \"New memo\"\n/catalog remove skill:foo\n/catalog mcp                      MCP servers only\n/catalog skill                    Skills only\n/catalog search security          Search\n/catalog tag skill:foo security   Set tags\n/catalog export                   Markdown export\n/catalog export --format json     JSON export\n```\n\n## Note on context window consumption\n\nThe `/catalog` and `list` commands return all entries in table format.\nIn environments with many installed skills (e.g., 100+), **a single invocation can consume a significant portion of the context window**.\n\nMitigation:\n- Use `--type mcp` / `--type skill` to narrow the output\n- When you know what you want to do (add, edit, remove), skip `list` and use the specific command directly\n- For frequent lookups, run the CLI directly in a terminal (does not consume Claude Code's context)\n\n## Claude Cowork support\n\nWorks in Claude Cowork (Bash-free environments) too. Install `skill-memo.md` as a skill, and Claude will operate on `skill-catalog.json` directly via Read/Edit.\n\n```bash\ncp skill-memo/skill-memo.md ~/.claude/commands/skill-memo.md\n```\n\nIn Cowork, `/skill-memo list`, `/skill-memo add ...`, and `/skill-memo memo ...` are available.\n`sync` (auto-detection) uses a simplified Glob-based approach (does not parse settings.json like the CLI version).\n\n## Data store\n\nStored in `~/.claude/skill-catalog.json`.\n\n```json\n{\n  \"version\": 2,\n  \"entries\": {\n    \"mcp:memory\": {\n      \"type\": \"mcp\",\n      \"name\": \"memory\",\n      \"source\": \"auto\",\n      \"memo\": \"Knowledge graph. Entity management.\",\n      \"tags\": [\"knowledge\", \"storage\"],\n      \"description\": \"Auto-detected description\",\n      \"detectedAt\": \"2026-03-12T00:00:00.000Z\",\n      \"updatedAt\": \"2026-03-12T00:00:00.000Z\"\n    }\n  }\n}\n```\n\n- `source`: `auto` (auto-detected) / `manual` (manually registered)\n- `sync` does not overwrite existing memos or tags\n- `description` is automatically extracted from each skill's `SKILL.md` (updated on sync)\n- v1 format stores are automatically migrated to v2 (backward compatible)\n- **`~/.claude/settings.json` is read-only**. This tool never writes to it\n\n## Tests\n\n```bash\nnode test/run.js\n```\n\n74 tests (assert-based, no external dependencies).\n\n## Structure\n\n```\nskill-memo/\n  bin/skill-memo.js    CLI entry point\n  src/store.js         Data store CRUD (schema version management)\n  src/detector.js      Auto-detection (settings.json + skills/)\n  src/display.js       Table format formatter\n  test/run.js          Tests\n  skills/catalog.md    Slash command template\n```\n\n## License\n\nMIT\n",
  "bytes": 5108,
  "sha": "bd9c5586e1456f09923f1943f7b94c0303d5da6cb75cf5392a6d78307d5a5c4b",
  "repo_slug": "aliksir/skill-memo",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_aliksir_skill_memo_skill_memo_7c54f72f/readme"
}