No. Start with just the basics:
| System | Required? | When to add |
|---|---|---|
.claude/ + CLAUDE.md |
Yes | Always needed |
.serena/memories/ |
Yes | Core memory system |
.elimination/ |
No | When you have complex, multi-cause bugs |
.specify/ |
No | When you want spec-driven development |
You can always add .elimination/ and .specify/ later.
cp -r template/.claude your-project/
cp -r template/.serena your-project/
cp template/CLAUDE.md your-project/Then edit CLAUDE.md with your project name and language.
Yes. The template is language-agnostic. It works with:
- Any programming language
- Any framework
- Monorepos and single-project repos
- Frontend, backend, CLI tools, libraries
Customize CLAUDE.md to document your specific patterns.
Yes, with reduced functionality:
| Feature | Without MCP | With Serena MCP |
|---|---|---|
| Slash commands | Works | Works |
| Memory storage | Works (file-based) | Works (enhanced) |
| Symbol lookup | Manual file reads | Targeted lookups |
| Learning loop | Works | Works |
The core value works without MCPs. Serena MCP adds precise code navigation.
| Aspect | /claude-learns.debug |
/claude-learns.eliminate |
|---|---|---|
| Best for | Single likely cause | Multiple possible causes |
| Approach | Linear investigation | Parallel hypothesis testing |
| Tracking | Ad-hoc | Structured YAML files |
| When stuck | Switch to /claude-learns.eliminate |
Keep gathering evidence |
Use /claude-learns.debug for straightforward bugs.
Use /claude-learns.eliminate when you've been stuck, the bug is intermittent, or multiple subsystems could be responsible.
Use /claude-learns.spec-create when:
- Starting a new feature with clear requirements
- You want to define "done" before starting
- Multiple people need to agree on expected behavior
- You'll need to validate the implementation later
Skip it for:
- Quick fixes
- Exploratory work
- Refactoring (existing behavior is the spec)
Claude Code doesn't have built-in undo, but:
- Git: If you committed before,
git checkout -- <file>orgit reset - Editor: Use your IDE's local history
- Memories: Delete unwanted memories with
delete_memory("name")
For updates specifically, use /claude-learns.update --rollback.
/claude-learns.learn triggers Claude to:
- Review insights from the current session
- Propose updates to memories or CLAUDE.md
- Wait for your approval before writing anything
It's a checkpoint to capture knowledge before it's lost.
your-project/
├── .serena/memories/ # Persistent knowledge
│ ├── debugging-lessons.md # Past bugs and fixes
│ ├── decision-log.md # Architectural decisions
│ └── ...
├── .elimination/ # Debugging sessions
│ ├── active/ # Current investigation
│ └── archive/ # Past investigations
└── .specify/ # Specifications
├── specs/ # Feature specs
└── memory/ # Spec-specific knowledge
All data stays in your project directory.
Memories are plain text files. Back them up with git:
git add .serena/memories/
git commit -m "Backup memories"Or copy the folder anywhere you store backups.
Yes. Memories are Markdown files. Edit them in any text editor.
However, if Serena MCP is connected, prefer using:
edit_memory("name", needle, repl, mode)for small changeswrite_memory("name", content)to overwrite
This ensures Claude stays in sync.
# With Serena MCP
list_memories()
# Without MCP
ls .serena/memories/
Yes. /clear only clears the conversation context. Memories are stored in files and survive across sessions.
This is why you should run /claude-learns.learn before /clear to save important insights.
- Check file location:
.claude/commands/must be in your project root - Verify file names: Commands must match the pattern
<command>.md - Restart Claude Code: Sometimes a restart is needed after adding commands
Run /mcp in Claude Code to see status.
If Serena isn't connected:
# Add Serena to Claude Code
claude mcp add serena -- uvx --from git+https://github.com/oraios/serena serena start-mcp-server --context claude-code --project $(pwd)This usually means memories aren't being used effectively:
- Run
/claude-learns.learnto save context that's being re-discovered - Check that
CLAUDE.mdhas accurate entry points documented - Verify Serena MCP is connected for symbol-based navigation
# Remove all claude-learns files
rm -rf .claude .serena .elimination .specify CLAUDE.md
# If you committed changes
git checkout -- CLAUDE.md
git clean -fd .claude .serena .elimination .specifyYes. You have two options:
- Single setup at root: One
CLAUDE.mdcovering all packages - Per-package setup: Copy the template into each package that needs it
For monorepos, document package-specific patterns in memories.
- After discovering something non-obvious about the codebase
- Before
/clearto preserve important context - After completing a complex task that taught you something
- At the end of a session as a general checkpoint
Recommended yes for:
- Team projects (shared knowledge)
- Projects you'll return to later
- Anything you don't want to lose
Optional for:
- Solo experiments
- Temporary projects
Add to .gitignore if you prefer not to commit:
.serena/memories/
.elimination/archive/
Run /claude-learns.audit periodically. It checks:
- CLAUDE.md accuracy
- Memory relevance
- Outdated information
Review and update memories when your project evolves significantly.
Minimal impact. The systems add:
- ~100ms for memory lookups (cached after first read)
- ~50ms for command loading
- Negligible overhead for file operations
Benefits outweigh costs for projects worked on for more than a week.
Typical usage:
.serena/memories/: 50KB - 500KB (plain text).elimination/: 10KB - 100KB per active investigation.specify/: 20KB - 200KB for specs and deviations
All stored as readable Markdown/YAML files.
Yes, add to .gitignore:
.serena/memories/auto-generated/
.elimination/archive/
Keep important memories committed for team sharing.
Yes. Edit .claude/commands/*.md files:
- Change command behavior by editing the Markdown
- Add new commands by creating new
.mdfiles - Remove unwanted commands by deleting files
Restart Claude Code after changes.
- Edit CLAUDE.md with team-specific patterns
- Create team memories for shared knowledge
- Customize commands for your processes
- Set up project constitution in
.specify/memory/constitution.md
Partially. Some workflows can be scripted:
# Validate specs exist for features
ls .specify/specs/
# Check for unresolved elimination sessions
ls .elimination/active/Full automation requires Claude Code CLI integration, which is evolving.
Claude Code specific, but concepts apply to:
- VS Code + Claude extension
- Cursor (similar MCP architecture)
- Other AI-assisted editors
The template structure could be adapted for other tools.
- Check EXAMPLES.md for concrete usage scenarios
- Read the full README.md for detailed documentation
- Open an issue at github.com/danielcbright/claude-learns