Awesome-omni-skill membase

Git-native project memory system for storing and retrieving project decisions, implementation details, and documentation across coding sessions. Use when starting work on a topic, making design decisions, implementing features, or debugging issues that might have prior context. Claude should proactively query memories before implementing features or making architectural decisions to maintain consistency.

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/membase" ~/.claude/skills/diegosouzapw-awesome-omni-skill-membase && rm -rf "$T"
manifest: skills/development/membase/SKILL.md
source content

Membase: Git-Native Project Memory

TL;DR: Store project decisions with

scripts/mb add
, retrieve with
scripts/mb query
, maintain consistency across sessions.

Membase is a git-native project memory system that stores project knowledge in simple text files (

.membase/
). It uses multi-dimensional tagging (topic + phase) to organize information and enables efficient context retrieval across sessions.

Core principle: Store decisions and context so they're never lost between sessions. Query before implementing to avoid contradicting earlier decisions.

Quick Start

# Initialize membase
scripts/mb init

# Add a topic for your project
scripts/mb dims add topic authentication

# Store a decision
scripts/mb add \
  -s "JWT auth with 24h expiry" \
  -c "Using JWT for stateless authentication. Tokens expire in 24h. Refresh tokens valid 7 days." \
  topic=authentication phase=decision

# Query before implementing
scripts/mb query --topic authentication --phase decision

When to Use Membase

Store memories when:

  • Design decisions are made (architecture, technology choices, patterns)
  • Implementation approaches are chosen (algorithms, data structures)
  • Gotchas are discovered (edge cases, framework quirks, workarounds)
  • User states preferences (requirements, coding style)
  • Key patterns are established (file locations, naming conventions)

Retrieve memories when:

  • Starting work on a topic (check existing decisions first)
  • User asks about previous decisions ("What did we decide about X?")
  • Implementing with potential context (maintain consistency)
  • Debugging or troubleshooting (check for known issues)

Multi-Dimensional Tagging

Organize memories with two dimensions:

topic - Project-specific areas you define:

scripts/mb dims add topic authentication
scripts/mb dims add topic database
scripts/mb dims add topic api

phase - Workflow stage (pre-populated):

  • decision
    - Architectural/design decisions ⭐ Most important
  • backend-implementation
    - Backend code details
  • frontend-implementation
    - Frontend code details
  • troubleshooting
    - Known issues and solutions
  • planning
    ,
    requirements
    ,
    testing
    ,
    documentation
    ,
    deployment

Common Patterns

Record a decision:

scripts/mb add \
  -s "PostgreSQL for main database" \
  -c "Chose PostgreSQL over MySQL for JSON support. Using SQLAlchemy ORM." \
  topic=database phase=decision

Query before implementing:

scripts/mb query --topic database --phase decision
scripts/mb query --search "PostgreSQL"

Document implementation:

scripts/mb add \
  -s "User model in src/models/user.py" \
  -c "Fields: username, email, password_hash. Email is unique. Bcrypt with 12 rounds." \
  topic=authentication phase=backend-implementation

Capture gotchas:

scripts/mb add \
  -s "Redis rate limiting memory leak fix" \
  -c "IMPORTANT: Must call redis.expire() after incrementing counter to prevent leak." \
  topic=api phase=troubleshooting

Best Practices

Writing summaries (≤100 chars):

  • ✓ Specific: "JWT auth with 24h expiry and refresh tokens"
  • ✗ Vague: "Authentication stuff"

Writing content:

  • Include the "why" behind decisions
  • Mention file paths and locations
  • Note alternatives considered
  • Add specific configuration values

Tagging consistently:

topic=authentication phase=decision         # Design decision
topic=authentication phase=backend-implementation  # Implementation
topic=authentication phase=troubleshooting  # Problem/solution

Claude Code Integration

For Claude: Proactively use membase by:

  1. Query before implementing - Check
    scripts/mb query --topic <area> --phase decision
  2. Store after deciding - Suggest storing significant decisions
  3. Maintain consistency - Reference stored decisions (mention memory ID)
  4. Update when needed - Suggest edits if decisions change

Example workflow:

User: "Let's add user authentication"
Claude: "Let me check existing decisions..."
[Runs: scripts/mb query --topic authentication --phase decision]
Claude: "Found JWT auth decision (memory abc12345). I'll follow that pattern..."

Essential Commands

# Initialize
scripts/mb init

# Add memory
scripts/mb add -s "summary" -c "content" topic=X phase=Y

# Query
scripts/mb query --topic X --phase Y
scripts/mb query --search "keyword"
scripts/mb query --id abc123
scripts/mb query --all

# Manage dimensions
scripts/mb dims                    # List all
scripts/mb dims add topic <name>   # Add topic value

# Stats
scripts/mb stats

Advanced Usage

For detailed examples, advanced commands, workflow integration, and tips, see REFERENCE.md.


Remember: Query before implementing, store after deciding. Membase keeps context alive across sessions.