Claude-skill-registry atuin-memory
Check, store, and retrieve project memories from atuin kv. Use when starting work on a project, recalling previous context, storing plans or specs, or when the user mentions memory, atuin, or project context.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/other/other/claude-atuin-memory-skill" ~/.claude/skills/majiayu000-claude-skill-registry-atuin-memory && rm -rf "$T"
manifest:
skills/other/other/claude-atuin-memory-skill/SKILL.mdsafety · automated scan (low risk)
This is a pattern-based risk scan, not a security review. Our crawler flagged:
- dumps environment variables
Always read a skill's source content before installing. Patterns alone don't mean the skill is malicious — but they warrant attention.
source content
Project Memory with Atuin
Store and retrieve project context using atuin kv to persist across sessions.
Project Detection
Reuse these variables in all commands:
PROJECT=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || basename "$PWD") BRANCH=$(git branch --show-current 2>/dev/null) BRANCH=${BRANCH:-main}
Before Starting Work
echo "=== $PROJECT ($BRANCH) ===" # Discover what memories exist for this project atuin kv list --namespace "project-metadata" | grep -F "$PROJECT-" || echo "(no memories found)"
Then retrieve relevant memories:
# Empty output means memory doesn't exist atuin kv get --namespace "project-metadata" "$PROJECT-$BRANCH-plan" atuin kv get --namespace "project-metadata" "$PROJECT-$BRANCH-spec" atuin kv get --namespace "project-metadata" "$PROJECT-$BRANCH-todo"
Acting on Retrieved Memories
<memory-actions> <on-retrieval> - Check if stored plan/spec/todo still matches git state and current goals - Briefly summarize what you found so user can correct misunderstandings - Raise blockers, gaps, or open questions before proceeding—don't assume, ask - Pick up from first incomplete todo item; if none exist, start fresh </on-retrieval> <on-completion> - Update stored state after completing work so next session can resume cleanly </on-completion> </memory-actions>Storing Memories
For multi-line content, write to a temp file first to avoid shell escaping issues:
# 1. Write content to temp file # 2. Store from temp file atuin kv set --namespace "project-metadata" --key "$PROJECT-$BRANCH-plan" "$(cat /tmp/plan.md)" # 3. Verify storage succeeded atuin kv get --namespace "project-metadata" "$PROJECT-$BRANCH-plan" | head -5
For short single-line values, store directly:
atuin kv set --namespace "project-metadata" --key "$PROJECT-$BRANCH-status" "in-progress"
Key Naming
| Key Pattern | Purpose |
|---|---|
| Implementation plans |
| Specifications/designs |
| Task state |
| Session summaries (use current date) |
Deleting Memories
# Delete a specific key atuin kv delete --namespace "project-metadata" "$PROJECT-$BRANCH-plan" # Verify deletion (should return empty) atuin kv get --namespace "project-metadata" "$PROJECT-$BRANCH-plan"
Quick Reference
Argument syntax is inconsistent across subcommands — pay attention to positional vs flag arguments:
| Operation | Command | Notes |
|---|---|---|
| List all | | |
| Get | | KEY is positional |
| Set | | KEY is flag, VALUE is positional |
| Delete | | KEY is positional (not ) |