Skip to main content

persistia-memory-system

Install and use Persistia to give Claude Code persistent, self-updating project memory and operational capabilities

Ir a la instalación

Datos de origen

Repositorio
reason-machines/claude-code-skills
Última actividad en el origen
4 de junio de 2026 a las 21:07
Idioma detectado de SKILL.md
inglés
Estrellas
4
Forks
1

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
persistia-memory-system
description
Install and use Persistia to give Claude Code persistent, self-updating project memory and operational capabilities
triggers
["set up persistent memory for this project","install Persistia","give Claude Code memory of this codebase","schedule an automated task","add a permanent skill","update the brain repository","create a proactive scan","configure operational memory"]
# Persistia Memory System > Skill by [ara.so](https://ara.so) — Claude Code Skills collection. Persistia gives Claude Code persistent, self-updating memory of your entire project. It scans your codebase, architecture, docs, and configs on first run, then monitors changes via `git diff` to stay current. Memory is stored in `_brain/` as plain text files with git versioning, optionally backed up to a private GitHub repository. ## Installation Run from your project root: ```bash curl -fsSL https://raw.githubusercontent.com/bernardohcrocha/persistia-for-claude-code/main/setup.sh | bash ``` **Requirements:** - git - Node.js 18+ - Optional: GitHub CLI (`gh`) for automatic cloud backup The setup process will: 1. Scan your project structure 2. Create `_brain/` directory with indexed memory 3. Ask only for information it can't find automatically 4. Install schedulers (launchd on macOS, systemd on Linux) 5. Create a private git repository for the brain 6. Set up automatic daily updates ## Directory Structure ``` _brain/ ├── .git/ # Isolated brain repository ├── index.md # Main navigation file (read first every session) ├── dashboard.html # Live dashboard (auto-refreshes every 5 min) ├── core/ # Product, brand, ICP definitions │ ├── product.md │ ├── brand.md │ └── icp.md ├── operations/ # Metrics and customer data (auto-updated daily) │ ├── metrics.md │ └── customers.md ├── skills/ # Permanent rules and capabilities │ └── [skill-name].md └── tasks/ # Scheduled task management ├── queue.json ├── completed/ └── failed/ ``` ## Core Concepts ### Memory Index The `_brain/index.md` file is always read first. It contains: - Project overview and architecture - Links to all memory files - Recent changes summary - Navigation structure ### Self-Updating Memory Persistia runs `git diff` daily to detect changes: - Only modified files are re-indexed - Token-efficient: 1,000 files with 3 changes = reads 3 files - Automatic commit and push to brain repository ### Skills Skills are permanent capabilities stored in `_brain/skills/`. Once written, they're loaded in every session. **Creating a skill:** ```markdown --- name: deployment-checklist created: 2026-06-04 --- # Deployment Checklist Before every deployment: 1. Run full test suite 2. Check environment variables match production 3. Verify database migrations are reversible 4. Update CHANGELOG.md 5. Tag release in git ``` Skills are created automatically when you say things like: - "Remember to always run tests before deploying" - "Add a skill for handling customer data exports" - "Create a permanent rule about error handling" ### Scheduled Tasks Tasks are defined in `_brain/tasks/queue.json`: ```json { "tasks": [ { "id": "weekly-metrics", "name": "Weekly Metrics Report", "schedule": "every Monday at 9am", "description": "Pull last week's metrics from Stripe, flag anomalies, queue follow-ups for accounts below quota", "batch_size": 50, "timeout_minutes": 10, "enabled": true }, { "id": "inactive-users", "name": "Inactive User Outreach", "schedule": "every Tuesday", "description": "Find signups from last 30 days with no activity. Research each company and draft personalized re-engagement emails", "batch_size": 20, "timeout_minutes": 15, "enabled": true } ] } ``` **Task properties:** - `batch_size`: Maximum items per run (prevents timeouts) - `timeout_minutes`: Default is 5, increase for complex tasks - `enabled`: Set to false to pause without deleting ### Proactive Scans Every 3 days when idle, Persistia automatically scans: - Metrics trends - Customer behavior patterns - Support channels - Code changes It flags observations and suggests actions but never acts unilaterally. ## Common Usage Patterns ### Initial Setup Flow After installation, provide context through conversation: ``` You: "This is a SaaS analytics platform built with Next.js and PostgreSQL" Claude: *Updates _brain/core/product.md with architecture details* You: "We target B2B marketing teams at companies with 50-500 employees" Claude: *Updates _brain/core/icp.md with target customer profile* ``` ### Reading Environment Variables Persistia scans `.env` files automatically. Reference credentials: ```javascript // Good - uses existing environment variables const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); const db = new Database({ host: process.env.DB_HOST, password: process.env.DB_PASSWORD }); ``` ### Adding Operational Skills ``` You: "Always check Sentry for errors before marking a task complete" Claude: *Creates _brain/skills/pre-completion-checklist.md* You: "When analyzing churn, segment by signup cohort and usage tier" Claude: *Creates _brain/skills/churn-analysis-methodology.md* ``` ### Scheduling Recurring Tasks ``` You: "Every Friday afternoon, summarize this week's closed issues and PRs into a changelog draft" Claude: *Adds task to _brain/tasks/queue.json* You: "Daily at 8am: check for new Stripe subscriptions and add them to the customer database" Claude: *Adds task with appropriate batch_size and timeout* ``` ### Cross-Tool Queries ``` You: "Which customers dropped usage 30%+ this month? Cross-check their support tickets and draft personalized follow-ups" Claude: *Queries metrics, support system, generates drafts* You: "Find all users who signed up from our latest blog post and haven't activated yet" Claude: *Checks analytics, CRM, prepares outreach list* ``` ## Dashboard Open `_brain/dashboard.html` in your browser for a live view: - Recent memory updates - Scheduled task status - Proactive scan results - Quick navigation to all brain files Auto-refreshes every 5 minutes. ## Manual Operations ### Force Memory Update ```bash cd _brain git add . git commit -m "Manual memory update" git push ``` ### View Memory History ```bash cd _brain git log --oneline git diff HEAD~1 # See what changed in last update ``` ### Share Memory with Team ```bash # On first machine cd _brain git remote -v # Get repository URL # On second machine (in project root) git clone <brain-repo-url> _brain ``` ### Disable Automatic Updates ```bash # macOS launchctl unload ~/Library/LaunchAgents/persistia.brain.plist # Linux systemctl --user disable persistia-brain.timer ``` ### Re-enable Automatic Updates ```bash # macOS launchctl load ~/Library/LaunchAgents/persistia.brain.plist # Linux systemctl --user enable persistia-brain.timer systemctl --user start persistia-brain.timer ``` ## Troubleshooting ### Brain repository not pushing to GitHub Check if GitHub CLI is authenticated: ```bash gh auth status ``` If not authenticated: ```bash gh auth login ``` ### Memory updates not running automatically Check scheduler status: ```bash # macOS launchctl list | grep persistia # Linux systemctl --user status persistia-brain.timer ``` View logs: ```bash # macOS tail -f ~/Library/Logs/persistia-brain.log # Linux journalctl --user -u persistia-brain.service -f ``` ### Task timeouts Increase `timeout_minutes` in `_brain/tasks/queue.json`: ```json { "id": "complex-analysis", "timeout_minutes": 20, "batch_size": 10 } ``` ### Memory files growing too large Split large files by topic. Update `_brain/index.md` to link to all sections: ```markdown ## Architecture - [Backend Services](core/architecture-backend.md) - [Frontend Components](core/architecture-frontend.md) - [Database Schema](core/architecture-database.md) ``` ### Resetting memory completely ```bash rm -rf _brain curl -fsSL https://raw.githubusercontent.com/bernardohcrocha/persistia-for-claude-code/main/setup.sh | bash ``` This will re-scan your project and rebuild all memory files. ## Best Practices 1. **Be conversational during setup** - Persistia learns from natural conversation, not forms 2. **Review proactive scans** - Check suggestions before acting on them 3. **Keep skills focused** - One skill per workflow or rule 4. **Use batch_size for large datasets** - Prevents timeouts and token limits 5. **Commit brain changes** - Treat `_brain/` like important code 6. **Back up to GitHub** - Install `gh` CLI for automatic cloud backup 7. **Share with team** - Clone brain repository across machines for consistent context ## Integration Examples ### Stripe Metrics ```javascript // _brain/skills/stripe-metrics.md references this pattern const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); async function getMonthlyMetrics() { const subscriptions = await stripe.subscriptions.list({ status: 'active', limit: 100 }); const revenue = subscriptions.data.reduce((sum, sub) => { return sum + (sub.items.data[0].price.unit_amount / 100); }, 0); return { active_subscriptions: subscriptions.data.length, revenue }; } ``` ### GitHub Issue Analysis ```javascript // Uses existing gh CLI authentication const { execSync } = require('child_process'); function getRecentIssues(days = 7) { const since = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString(); const cmd = `gh issue list --state closed --json title,closedAt,labels --search "closed:>=${since}"`; const output = execSync(cmd, { encoding: 'utf-8' }); return JSON.parse(output); } ``` ### Customer Database Updates ```javascript // Credentials from environment const { Pool } = require('pg'); const pool = new Pool({ host: process.env.DB_HOST, database: process.env.DB_NAME, user: process.env.DB_USER, password: process.env.DB_PASSWORD }); async function updateCustomerMetrics() { const result = await pool.query(` SELECT customer_id, last_active, usage_count FROM customers WHERE last_active < NOW() - INTERVAL '30 days' `); return result.rows; } ``` ## Architecture Persistia uses an isolated git repository for `_brain/`: - Separate from main project repository - Pushes to private GitHub remote (if `gh` CLI available) - Contains only memory files, no code - Can be cloned independently across machines - Full version history of memory evolution See the project's ARCHITECTURE.md for detailed git workflow.
Ver en GitHub