ccmemo — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ccmemo (Plugin) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Claude Code starts every session with a blank slate. The quirk you debugged yesterday, the plan you were halfway through — all gone when the session ends. ccmemo saves that knowledge and progress as Markdown files in your repository, so the next session picks up where you left off.
ccmemo adds four slash commands that persist knowledge and plans as plain Markdown in .claude/:
| Command | What it does | More |
|---|---|---|
/record-knowledge | Save a quirk, pitfall, or decision as a tagged entry | Example |
/recall-knowledge | Hybrid semantic search across entries (synonyms, cross-language) | docs/hybrid-search.md |
/review-knowledge | Keep the knowledge base healthy — stale/orphan entries, missing links, tag issues | Reviewing |
/plan-task | Persist multi-step plans and progress across sessions | Plan & task |
Claude Code invokes these automatically when relevant; you can also trigger any of them by name.
Up and running in three steps. The plugin is the recommended path — skills and hooks activate the moment it's installed.
1. Install the plugin (in Claude Code):
/plugin marketplace add LevNas/claudecode-plugins
/plugin install ccmemo@levnas-pluginsThat alone makes /record-knowledge, /plan-task, /review-knowledge, and /recall-knowledge available and wires up the Context Guard hooks.
2. Scaffold the starter config into your project — a tag registry for knowledge and an index for tasks. Easiest is to just ask Claude Code:
Scaffold ccmemo's knowledge and tasks templates into .claude/.Prefer a command? From your project root:
tpl=$(find ~/.claude/plugins/cache -type d -path '*ccmemo*/templates' | sort | tail -1)
cp -r "$tpl/knowledge" .claude/knowledge
cp -r "$tpl/tasks" .claude/tasks3. Try it. Run /record-knowledge and describe something worth remembering — Claude writes a Markdown entry under .claude/knowledge/entries/. Commit it, and your next session (or a teammate's) finds it automatically.
Semantic search via /recall-knowledge is opt-in (one-time index build) — see docs/hybrid-search.md.Copy the skills and templates straight from the repo:
git clone --depth 1 https://github.com/LevNas/ccmemo /tmp/ccmemo
cp -r /tmp/ccmemo/skills/* .claude/skills/ # the four skills
cp -r /tmp/ccmemo/templates/knowledge .claude/knowledge
cp -r /tmp/ccmemo/templates/tasks .claude/tasks
rm -rf /tmp/ccmemoYour project ends up with:
your-project/.claude/
├── skills/{record-knowledge,plan-task,review-knowledge,recall-knowledge}/SKILL.md
├── knowledge/{CLAUDE.md,entries/}
└── tasks/{CLAUDE.md,readme.md}Hooks (Context Guard) are wired through the plugin; with a manual copy, add the hooks/hooks.json entries yourself if you want them.
/record-knowledge creates an entry like .claude/knowledge/entries/20260302-143052-alice-docker-compose-port-conflict.md:
---
title: Docker Compose port conflict with host nginx
author: "@alice"
created: 2026-03-02
status: active
tags: "#docker #nginx #pitfall"
---
When running `docker compose up`, port 80 conflicts with the host's nginx.
Use `ports: ["8080:80"]` or stop host nginx first.
- ref: [Docker Compose networking](https://docs.docker.com/compose/networking/)
- see: [Nginx reverse proxy setup](nginx-reverse-proxy.md) — related configurationSee docs/examples.md for personal and team workflow walkthroughs.
Quick keyword/filename lookups need no setup:
fd -e md . .claude/knowledge/entries/ | fzf # fuzzy search by filename
rg '#pitfall' .claude/knowledge/entries/ # search by tag
rg '^title:' .claude/knowledge/entries/ # list all titlesFor meaning-based search (synonyms, or a Japanese query against English identifiers), /recall-knowledge runs hybrid semantic search — ripgrep + local vector embeddings + the see:-link graph — and falls back to ripgrep when the index is absent. Setup: docs/hybrid-search.md.
/review-knowledge keeps the base healthy in three modes:
see:links), missing connections, tag issues, and summary stats
topic:<keyword>) — summarizes a topic and asks reflectivequestions to verify accuracy
fix) — interactively adds missing links and registers tags/plan-task persists multi-step plans in .claude/tasks/. Two modes:
plan-v1.md, todo.md, readme.md) are committedand become the shared source of truth. Progress moves [ ] → [~] → [x]; plan revisions are kept as plan-v2.md, etc. Each task dir also holds context-*.md files that capture detailed working context (see Context Guard).
.claude/tasks/ and treat your issue tracker (GitHub,GitLab, Jira) as the source of truth; .claude/tasks/ becomes a per-session scratchpad. Session start checks assigned issues instead of readme.md.
Add a lookup section to your project's CLAUDE.md so Claude checks relevant entries before starting work. Patterns and examples: docs/claude-md-examples.md.
.claude/knowledge/CLAUDE.md (lowercasekebab-case, # prefix). Claude checks it before creating new tags.
author field defaults to @<username>; set it to your Githosting username.
skills/*/SKILL.md to add project-specific conventions(tag categories, issue-tracker comment formats, plan templates).
CCMEMO_AUTOCOMMIT=1 and asafety-net hook commits only .claude/knowledge/ and .claude/tasks/ changes at session end (SessionEnd) and before compaction (PreCompact). It never runs git add -A, never pushes, and a leak-scan gate blocks commits containing leak-prone shapes (set CCMEMO_AUTOCOMMIT_ON_LEAK=warn to commit with a warning instead). It complements — does not replace — your manual end-of-session commit, so it is a no-op when you have already committed.
Everything is plain Markdown in your repo, so it follows the same branch/merge/review workflow as your code:
(and every Claude Code session) on Tuesday.
re-explaining context or re-discovering the same issues.
Maintained by @LevNas; contributions and forks welcome. See CONTRIBUTING.md for scope, plugin conventions, the linter command, and pull request guidelines.
MIT. If you build on ccmemo, a credit line is appreciated (not required):
Based on ccmemo by LevNas.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.