Lightweight, intelligent project memory for Claude Code
Keep helps you track work, capture learnings as you code, and grow project context naturally through CLAUDE.md files. Claude detects resumable work at session start and provides workflow hints to help you build a natural cadence.
Keep is a skill + commands system for Claude Code that provides:
- Persistent memory across sessions via
.claude/work/tracking files - Intelligent learning capture - decisions, patterns, and gotchas documented automatically
- Context evolution - proactive suggestions to create/update CLAUDE.md files as patterns emerge
- GitHub integration - sync progress to issues, recommend next work based on continuity
- Zero ceremony - natural workflows that enhance rather than constrain
- No complex setup - leverages native Claude Code CLAUDE.md loading
- Solo-optimized - built for individual developers, not enterprise ceremony
- Graceful degradation - works offline, without GitHub, with minimal files
- Intelligence over automation - suggests and learns, doesn't enforce rigid processes
Keep provides session continuity and workflow hints - Claude detects when you have resumable work at the start of a new conversation, and agents provide helpful next-step hints to teach you the natural rhythm.
You invoke Keep commands manually as you work:
- Starting work: Run
/keep:start [issue]to load context and begin tracking - Saving progress: Run
/keep:saveat natural breakpoints (after features, decisions, or every 30-45 min) - Completing tasks: Run
/keep:donewhen tests pass and you're ready to move on - Growing context: Run
/keep:grow [directory]to document patterns in CLAUDE.md files
Keep integrates into your workflow through helpful hints:
You: /keep:start 42
Claude: *loads issue, context, creates tracking file*
💡 Next steps: As you work, use /keep:save to checkpoint progress
and capture decisions.
You: *work for 45 minutes, implement feature*
You: /keep:save
Claude: *captures progress and decisions*
💡 Next steps: Continue working, or use /keep:done when you've
completed the issue and tests pass.
Session resume detection: When you start a new conversation with active work from a recent session (< 48h), Claude will suggest resuming where you left off.
# Add the Keep marketplace
/plugin marketplace add https://github.com/lackeyjb/claude-keep
# Install the plugin
/plugin install keep@keep-marketplace# Clone the repository
git clone https://github.com/lackeyjb/claude-keep.git
# Add as local marketplace
/plugin marketplace add ./claude-keep
# Install the plugin
/plugin install keep@keep-marketplace- Ensure you have
ghCLI installed (optional, for GitHub integration) - Keep will automatically create
.claude/directory structure in your projects when you first use a command - Create initial project context:
Keep will analyze your project and suggest creating a root CLAUDE.md with tech stack, architecture, and conventions.
/keep:grow . - Start using commands!
In your project (auto-created by Keep):
your-project/
├── CLAUDE.md # Root context (create manually or let Keep suggest)
├── src/
│ └── auth/
│ └── CLAUDE.md # Module context (Keep suggests when patterns emerge)
└── .claude/
├── work/ # Active issue tracking (auto-created)
├── archive/ # Completed issues (auto-created)
└── state.md # Current session state (auto-created)
Plugin structure (installed via /plugin install):
keep/
├── .claude-plugin/
│ ├── plugin.json # Plugin metadata
│ └── marketplace.json # Marketplace configuration
├── commands/
│ ├── start.md # Start work command
│ ├── save.md # Save progress command
│ ├── done.md # Complete work command
│ └── grow.md # Grow context command
├── agents/
│ ├── start.md # Start workflow agent
│ ├── save.md # Save workflow agent
│ ├── done.md # Done workflow agent
│ ├── grow.md # Grow workflow agent
│ └── shared/ # Shared patterns (error handling, principles, etc.)
└── skills/keep/
├── SKILL.md # Keep skill intelligence
├── references/ # File format specs, workflows
└── scripts/ # GitHub helpers, scoring algorithm
Start work on a GitHub issue with full context loading. Automatically detects and resumes interrupted work.
/keep:start 1234What it does:
- Intelligent resume: Detects if you're resuming previous work on this issue
- Recent work (< 24h): Instantly resumes with cached data, skips GitHub fetch
- Moderate (24-48h): Asks whether to resume cached or refetch fresh data
- Stale (> 48h): Refetches from GitHub to ensure latest status
- Fetches issue from GitHub (when starting fresh or data is stale)
- Loads relevant CLAUDE.md files for context
- Reads recent work from
.claude/state.mdand archive - Creates/updates
.claude/work/1234.mdtracking file - Suggests approach based on project patterns
Proactive resume detection: Keep watches for session boundaries. When you start a new conversation and have active work from a recent session (< 48h), Claude will proactively suggest resuming:
You: [starts new session]
Claude: "I see you were working on issue #1234 (Add rate limiting) - last updated
6 hours ago. You had made good progress: middleware 80% complete, 3 decisions
captured. Want to pick up where you left off?"
Zero-issues workflow: When no issue number is provided and no issues exist:
- Discover - Searches planning docs (ROADMAP.md, TODO.md) and code signals (TODO/FIXME comments, missing tests)
- Synthesize - Generates 3-5 actionable issue suggestions with source attribution
- Create - You select which issues to create, Keep generates and posts them to GitHub
- Start - You pick which issue to work on, Keep begins normal workflow
Flags:
--offline- Skip GitHub, work locally only
Save progress and capture learnings.
/keep:save
/keep:save --sync # Also post update to GitHubWhat it does:
- Reviews recent conversation for progress, decisions, learnings
- Filters through "6-month test" - only captures high-value insights
- Updates
.claude/work/{issue}.mdwith timestamped entries - Checks if patterns emerged (3+ high-value decisions in same area)
- Suggests CLAUDE.md updates when threshold met AND passes quality filter
- Enforces strict size limits: 200 lines (root), 150 lines (module)
- Requires pruning when files >80% capacity
- Optional: Sync progress summary to GitHub
Flags:
--sync- Force sync to GitHub--local- Skip GitHub sync confirmation
Complete work and sync to GitHub.
/keep:done
/keep:done --close # Also close the issueWhat it does:
- Generates comprehensive summary of work completed
- Suggests CLAUDE.md updates for accumulated learnings
- Detects associated PR on current branch
- Posts completion summary to GitHub issue (includes PR link if exists)
- Smart PR-aware issue closing:
- PR merged: Notes issue auto-closed via PR (GitHub auto-closes)
- PR open: Keeps issue open (will auto-close when PR merges)
- PR closed (unmerged): Asks if you want to close manually
- No PR: Asks about closing issue
- Archives work file to
.claude/archive/ - Updates session state
- Recommends next work based on continuity + priority
Flags:
--close- Close the GitHub issue without asking--no-close- Leave issue open without asking--no-sync- Skip GitHub interaction--no-recommend- Skip next work suggestions
Create or update CLAUDE.md files for project context.
/keep:grow . # Analyze project root
/keep:grow src/auth # Analyze specific module
/keep:grow --update # Update existing CLAUDE.md
/keep:grow . --condense # Prune bloated CLAUDE.mdWhat it does:
- Analyzes directory for non-obvious patterns and gotchas
- Applies "6-month test" - would this matter later?
- Assesses if CLAUDE.md would be valuable
- Generates concise CLAUDE.md proposal (with line counts)
- Validates size: 200 line max (root), 150 line max (module)
- Requires pruning if >80% capacity before adding content
- Shows proposal for review/editing
- Creates file if approved and within size limits
When to use:
- Initial setup on existing project (create root CLAUDE.md)
- Document a module after non-obvious patterns emerge
- Update existing CLAUDE.md with new learnings
- Condense bloated CLAUDE.md files
- Manually trigger if automatic suggestion was missed
When NOT to use:
- Obvious file structure
- Standard framework patterns only
- No surprising gotchas
Flags:
--update- Update existing CLAUDE.md--condense- Prune bloated CLAUDE.md to fit size limits--force- Create even if patterns unclear
# Start work on issue
/keep:start 1234
# Work on implementation...
# Save progress periodically
/keep:save
# Continue working...
# Save again at natural breakpoints
/keep:save
# Complete and sync
/keep:done --closeKeep automatically:
- Captures decisions and learnings from your saves
- Suggests updating
src/auth/CLAUDE.mdwhen patterns emerge (3+ decisions in same area) - Posts comprehensive summary to GitHub issue #1234
- Recommends issue #1250 as next work (builds on #1234, same area)
Keep works best when used at natural checkpoints in your workflow:
Start of work:
- New session? Claude may suggest resuming recent work
- Starting new issue? Run
/keep:start [issue] - Not sure what to work on? Run
/keep:startfor recommendations
During work (every 30-45 min or at natural breakpoints):
- Made key decisions? Run
/keep:save - Implemented a feature? Run
/keep:save - Learning something non-obvious? Run
/keep:save - Use
--syncflag if you want to post update to GitHub
Completing work:
- Tests pass and PR up? Run
/keep:done - Keep will summarize, recommend next work, and archive
- Use
--closeto auto-close issue,--no-recommendto skip suggestions
Context gaps:
- Missing docs for a module? Run
/keep:grow [directory] - Keep will analyze and propose CLAUDE.md content
- Happens automatically after 3+ decisions in same area via
/keep:save
# Morning: Start fresh
/keep:start 1234
# Work for 45 min, implement auth middleware
/keep:save
# Lunch break - checkpoint progress
/keep:save --sync
# Afternoon: finish implementation
# ... more work ...
# Tests pass, PR created
/keep:done --close
# Keep recommends issue #1250 (builds on #1234)
/keep:start 1250- Don't overthink it: Save when it feels natural, not on a strict schedule
- Use flags:
--syncfor GitHub updates,--no-recommendto skip suggestions - Let patterns emerge: After 3+ saves in a directory, Keep suggests documentation
- Offline works: All commands work without GitHub, just skip sync features
When you run /keep:save, Keep captures from recent conversation:
- Decisions - Technical choices with rationale (filtered through "6-month test")
- Learnings - Non-obvious gotchas, surprises, framework quirks
- Patterns - Critical approaches that prevent mistakes
- Progress - What you accomplished
Quality filter:
- Only captures insights that pass "6-month test" - would this matter later?
- Skips obvious patterns, implementation details, standard framework usage
- Focuses on gotchas, security/performance implications, architectural "why"
When high-value patterns emerge (3+ decisions passing quality filter):
- Keep suggests creating/updating CLAUDE.md files
- Shows proposed changes as diffs with line counts
- Enforces strict size limits (200 lines root, 150 lines module)
- Requires pruning when >80% capacity before adding
- Gets your approval before updating
- Keeps context ruthlessly concise and high-value
After completing work, Keep recommends next issues based on:
- Continuity (30%) - Same area as recent work (hot cache)
- Priority (30%) - Labels like "urgent", "high-priority"
- Freshness (20%) - Recently updated issues
- Dependencies (20%) - Blockers cleared
Optional but powerful:
- Fetches issue details and dependencies
- Posts concise progress updates
- Generates professional completion summaries
- Gracefully degrades when offline
Keep uses a gatekeeper sub-agent architecture for minimal context consumption:
- Gatekeeper sub-agents centralize common operations (GitHub, state, CLAUDE.md, quality)
- ~180 lines of duplication eliminated across workflows
- 65-80% reduction in context per command vs traditional approaches
- Each workflow (start/save/done/grow) operates in its own context window
- References loaded on-demand only when needed
- Main skill reduced to 222 lines (from 341)
- No context pollution between workflows
Gatekeeper sub-agents handle:
github-gatekeeper- GitHub operations with offline supportstate-gatekeeper- State and work file managementclaudemd-gatekeeper- CLAUDE.md proposals and size validationquality-gatekeeper- Quality assessment and 6-month test
This means:
- Faster command execution
- More room for your actual work
- Reduced token usage
- Better performance on long sessions
- Consistent error handling and offline support
See ARCHITECTURE.md for technical implementation details.
Tracks a single issue with:
- Progress log (timestamped entries)
- Decisions made (with rationale)
- Learnings captured
- Files modified
- Tests status
- Next actions
Current session state:
- Active issue and progress
- Recent completed work (last 3)
- Open questions and blockers
- Context (hot areas)
Project-wide context (auto-loaded by Claude Code):
- Tech stack
- Architecture patterns
- Project structure
- Development setup
- Conventions
- Recent changes
Domain-specific context (auto-loaded when working in directory):
- Purpose of module
- Key patterns and abstractions
- API/interface
- Recent learnings and gotchas
- Common mistakes
- Dependencies and testing
See skills/keep/references/file-formats.md for complete specifications.
Keep works without GitHub:
/keep-start --offline
# Provide issue details manually
# Keep tracks locally, can sync laterKeep includes helper scripts:
github_sync.py - GitHub API operations with retry logic:
python ${CLAUDE_PLUGIN_ROOT}/skills/keep/scripts/github_sync.py fetch-issue 1234score_issues.py - Score open issues for recommendations:
gh issue list --json number,title,labels,body,updatedAt | \
python ${CLAUDE_PLUGIN_ROOT}/skills/keep/scripts/score_issues.py --recent-work .claude/state.mdManually trigger CLAUDE.md creation or updates:
# Analyze and create root CLAUDE.md
/keep:grow .
# Document a specific module
/keep:grow src/auth
# Update existing CLAUDE.md with new patterns
/keep:grow src/api --updateKeep also suggests CLAUDE.md updates automatically during /keep:save when patterns emerge (3+ decisions in same area).
Keep is designed to work with minimal configuration. All intelligence lives in skills/keep/SKILL.md.
To customize behavior, edit the skill file to adjust:
- Learning thresholds (default: 3 decisions)
- Scoring weights (default: 30% continuity, 30% priority, 20% freshness, 20% dependencies)
- Auto-save intervals (if enabled)
Intelligence over automation - Keep suggests and learns rather than enforcing rigid processes.
Minimal ceremony - No multi-stage pipelines, complex frontmatter, or file renaming ceremonies.
Progressive disclosure - Context grows naturally as patterns emerge, not created prematurely.
Fail gracefully - Works offline, without GitHub, with minimal files. Degrades features, never breaks workflows.
Solo-first - Optimized for individual developers, extensible for teams.
| Feature | Keep | Complex PM Tools |
|---|---|---|
| Commands | 4 core | 50+ |
| Files to manage | Minimal | Hundreds |
| Setup time | < 5 minutes | Hours |
| Context loaders | Native CLAUDE.md | Custom |
| Offline support | ✅ Full | ❌ Limited |
| Learning curve | Low | High |
| Ceremony | Minimal | High |
- Claude Code
ghCLI (optional, for GitHub integration)- Git repository (optional, for best experience)
MIT
This is a personal project but suggestions welcome! The skill is designed to be customized - edit skills/keep/SKILL.md to suit your workflow.
- Architecture: ARCHITECTURE.md - Context optimization and sub-agent design
- Skill documentation:
skills/keep/SKILL.md- Core philosophy and principles - File format specs:
skills/keep/references/file-formats.md - Workflow examples:
skills/keep/references/workflows.md - GitHub comment templates:
skills/keep/references/templates/ - Troubleshooting:
skills/keep/references/troubleshooting.md - Zero-issues workflow:
skills/keep/references/zero-issues.md - GitHub scripts:
skills/keep/scripts/