codeaholicguy/memory
AI DevKit · Use the memory CLI as a durable knowledge layer. Search before non-trivial work, store verified reusable knowledge, update stale entries, and avoid saving transcripts, secrets, or one-off task progress.
npx skills add https://github.com/codeaholicguy/ai-devkit --skill memory
Use npx ai-devkit@latest memory ... as the durable knowledge layer.
npx ai-devkit@latest memory search --query "<task, subsystem, error, or convention>" --limit 5
For broad or risky tasks, search multiple angles: subsystem, error text, framework, command, and task intent.
npx ai-devkit@latest memory search --query "<knowledge to store>" --table
Before storing, all must be true:
Store:
Do not store:
npx ai-devkit@latest memory search \
--query "<query>" \
--tags "<tags>" \
--scope "<scope>" \
--limit 5
Use --table to get IDs for updates:
npx ai-devkit@latest memory search --query "<query>" --table
Options: --query/-q required; --tags; --scope/-s; --limit/-l from 1-20; --table.
npx ai-devkit@latest memory store \
--title "<actionable title, 10-100 chars>" \
--content "<context, guidance, evidence, exceptions>" \
--tags "<lowercase,tags>" \
--scope "<global|project:name|repo:org/repo>"
Use this content shape when helpful:
Context: Where this applies.
Guidance: What to do.
Evidence: File, command, test, or user instruction.
Exceptions: When not to apply it.
Find the ID with search --table, then update only changed fields:
npx ai-devkit@latest memory update \
--id "<memory-id>" \
--title "<updated title>" \
--content "<updated content>" \
--tags "<replacement,tags>" \
--scope "<updated scope>"
--tags replaces all existing tags.
Use the narrowest useful scope:
repo:<org/repo> for one repository.project:<name> for one app, product, or workspace.global only for knowledge that applies across unrelated projects.If unsure, use a narrower scope.
npx ai-devkit@latest --version.--limit range.~/.ai-devkit/memory.db; project config can override it automatically.Take codeaholicguy/memory from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.