Skip to main content

persistia-claude-code-memory

Install and manage Persistia to give Claude Code persistent, self-updating memory across sessions

インストールへ移動

ソース情報

リポジトリ
reason-machines/claude-code-skills
ソースの最終更新活動
2026年6月4日 20:16
検出された SKILL.md の言語
英語
スター
4
フォーク
1

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
persistia-claude-code-memory
description
Install and manage Persistia to give Claude Code persistent, self-updating memory across sessions
triggers
["set up persistent memory for Claude Code","install Persistia","give Claude Code memory","configure operational memory","create a self-updating agent brain","set up automatic project indexing","schedule autonomous tasks","make Claude Code remember my project"]
# Persistia for Claude Code > Skill by [ara.so](https://ara.so) — Claude Code Skills collection. Persistia gives Claude Code persistent, self-updating memory. It scans your project once, stores structured knowledge in `_brain/`, then monitors changes via `git diff` to stay current. Enables autonomous tasks, permanent skills, and cross-session context. ## Installation Must be run from **project root** with git initialized: ```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 private brain repository backup The installer: 1. Creates `_brain/` directory structure 2. Scans project files, reads `.env` files 3. Asks only what it can't auto-detect 4. Sets up automatic daily updates (launchd/systemd) 5. Optionally creates private GitHub repo for brain backup ## Directory Structure ``` _brain/ ├── .git/ # Isolated brain repository ├── index.md # Master navigation, read first every session ├── dashboard.html # Live command center (auto-refresh) ├── core/ │ ├── product.md # What you're building │ ├── brand.md # Voice, values, positioning │ └── icp.md # Ideal customer profile ├── operations/ │ ├── metrics.md # KPIs, auto-updated daily │ └── customers.md # Account data, behaviors ├── skills/ │ └── *.md # Permanent rules and behaviors └── tasks/ ├── queue.json # Scheduled autonomous tasks └── completed/ # Execution logs ``` ## Initial Setup Flow After installation, Claude will ask clarifying questions: ```bash # Example questions Claude might ask: # - "What's your product in one sentence?" # - "What's your primary tech stack?" # - "Which tools do you use? (Stripe, Postgres, etc.)" # - "What's your ICP?" ``` Claude reads existing files (`.env`, `package.json`, README, etc.) and only asks what it can't find. ## Core Concepts ### 1. Index-First Navigation `_brain/index.md` is the entry point. Claude reads this first every session: ```markdown # Project Brain Index ## Quick Reference - Product: [core/product.md] - Stack: Node.js, Postgres, Stripe - Last updated: 2026-06-04 ## Priority Files 1. operations/metrics.md — current numbers 2. core/icp.md — who we serve 3. skills/code-style.md — how we write code ## Active Tasks - Weekly report (runs Mondays) - Churn detection (runs daily) ``` ### 2. Skills (Permanent Memory) Skills are rules that persist across sessions. Created automatically when you teach Claude something: **Example:** "Always use functional components in React" Claude creates `_brain/skills/react-patterns.md`: ```markdown --- created: 2026-06-04 category: code-style --- # React Patterns ## Component Style - Always use functional components - Prefer hooks over class methods - Use TypeScript for props ## Example ```javascript // ✅ Correct const Button: React.FC<ButtonProps> = ({ label, onClick }) => { return <button onClick={onClick}>{label}</button>; }; // ❌ Avoid class Button extends React.Component { ... } ``` ``` Skills are loaded at every session start. ### 3. Autonomous Tasks Tasks run automatically with full project context: **Edit `_brain/tasks/queue.json`:** ```json { "tasks": [ { "id": "weekly-metrics", "name": "Weekly Metrics Report", "description": "Pull revenue, churn, new signups from Stripe. Flag anomalies.", "schedule": "weekly", "day": "monday", "time": "09:00", "timeout_minutes": 10, "enabled": true }, { "id": "churn-detection", "name": "At-Risk Customer Detection", "description": "Find customers with 30%+ usage drop. Check support history. Draft re-engagement.", "schedule": "daily", "time": "08:00", "batch_size": 20, "timeout_minutes": 5, "enabled": true }, { "id": "onboarding-follow-up", "name": "New User Follow-up", "description": "Find signups from last 30 days with no activity. Visit company website. Write personalized email.", "schedule": "daily", "time": "10:00", "batch_size": 10, "enabled": true } ] } ``` **Task Properties:** - `schedule`: `"daily"`, `"weekly"`, `"monthly"` - `batch_size`: Max items per run (prevents timeouts) - `timeout_minutes`: Max execution time (default: 5) - `day`: For weekly tasks (`"monday"`, `"tuesday"`, etc.) - `time`: 24-hour format Completed tasks log to `_brain/tasks/completed/YYYY-MM-DD_task-id.md` ### 4. Git Diff-Based Updates Daily scheduler runs: ```bash cd _brain && git diff HEAD~1..HEAD --name-only ``` Only changed files get re-indexed. Example: ``` # 1,000 files in project # 3 changed today # Claude only reads those 3 ``` ### 5. Credentials Management Persistia reads existing credentials from: - `.env` files - Environment variables - Git config - Tool CLIs (Stripe, AWS, etc.) No re-entry required. Uses what you already have. ## Common Usage Patterns ### Teaching New Skills **User:** "Always format prices with 2 decimals and currency symbol" Claude creates `_brain/skills/formatting.md`: ```markdown # Formatting Rules ## Prices Always display: `$X,XXX.XX` ```javascript const formatPrice = (cents) => { return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', }).format(cents / 100); }; ``` ``` ### Scheduling Cross-Tool Tasks **User:** "Every Monday, pull Stripe revenue and compare to Postgres usage metrics. Flag discrepancies." Claude adds to `queue.json` and writes execution logic in `_brain/tasks/scripts/revenue-check.js`: ```javascript const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); const { Pool } = require('pg'); const pool = new Pool({ connectionString: process.env.DATABASE_URL, }); async function checkRevenueMatch() { const startDate = new Date(); startDate.setDate(startDate.getDate() - 7); // Stripe revenue const charges = await stripe.charges.list({ created: { gte: Math.floor(startDate / 1000) }, limit: 100, }); const stripeTotal = charges.data .filter(c => c.status === 'succeeded') .reduce((sum, c) => sum + c.amount, 0); // Postgres usage const result = await pool.query(` SELECT customer_id, SUM(usage_amount) as total FROM usage_events WHERE created_at >= $1 GROUP BY customer_id `, [startDate]); // Compare and flag const discrepancies = []; // ... comparison logic return discrepancies; } module.exports = { checkRevenueMatch }; ``` ### Updating Core Knowledge **User:** "We pivoted — now targeting dev tools, not marketing SaaS" Claude updates `_brain/core/icp.md` and `_brain/core/product.md`, commits changes: ```bash cd _brain git add core/icp.md core/product.md git commit -m "Update: pivot to dev tools market" git push origin main # If gh CLI configured ``` ### Querying Operational Data **User:** "Which customers churned last month?" Claude reads `_brain/operations/customers.md` (auto-updated daily from Stripe/DB), answers immediately without API calls. ## Dashboard Open in browser: ```bash open _brain/dashboard.html ``` Auto-refreshes every 5 minutes. Shows: - Recent metrics - Active tasks status - Last brain update - Quick actions ## Troubleshooting ### Brain not updating Check scheduler status: **macOS:** ```bash launchctl list | grep persistia launchctl start com.persistia.update ``` **Linux:** ```bash systemctl status persistia-update.timer systemctl start persistia-update.service ``` ### Task timing out Increase `timeout_minutes` or reduce `batch_size`: ```json { "id": "large-task", "timeout_minutes": 15, "batch_size": 5 } ``` ### Memory getting stale Force re-index: ```bash cd _brain rm -rf operations/ # Restart Claude Code session ``` ### Git conflicts in brain repo ```bash cd _brain git fetch origin git reset --hard origin/main ``` ## Advanced Configuration ### Custom Update Frequency Edit scheduler config: **macOS** (`~/Library/LaunchAgents/com.persistia.update.plist`): ```xml <key>StartInterval</key> <integer>3600</integer> <!-- seconds, 3600 = hourly --> ``` **Linux** (`~/.config/systemd/user/persistia-update.timer`): ```ini [Timer] OnCalendar=hourly ``` ### Excluding Files from Indexing Add to `.gitignore` in project root: ``` _brain/ node_modules/ .env *.log ``` Persistia respects `.gitignore`. ### Multi-Agent Teams Share brain repo with team: ```bash cd _brain git remote add origin git@github.com:yourteam/project-brain.git git push -u origin main ``` Team members clone after installing Persistia: ```bash rm -rf _brain git clone git@github.com:yourteam/project-brain.git _brain ``` ## Best Practices 1. **Teach once, benefit forever** — when you explain something, ask Claude to save it as a skill 2. **Let git diff do the work** — don't manually update `_brain/`, let the scheduler handle it 3. **Batch large operations** — use `batch_size` to prevent timeouts 4. **Review task logs** — check `_brain/tasks/completed/` weekly 5. **Commit brain changes** — treat `_brain/` like code, commit meaningful updates ## Integration Examples ### Stripe + Postgres Sync ```javascript // _brain/tasks/scripts/sync-revenue.js const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); const { Pool } = require('pg'); async function syncRevenue() { const pool = new Pool({ connectionString: process.env.DATABASE_URL }); const subscriptions = await stripe.subscriptions.list({ limit: 100 }); for (const sub of subscriptions.data) { await pool.query(` INSERT INTO revenue (customer_id, amount, period_start) VALUES ($1, $2, $3) ON CONFLICT (customer_id, period_start) DO UPDATE SET amount = $2 `, [sub.customer, sub.plan.amount, new Date(sub.current_period_start * 1000)]); } } ``` ### Slack Alert on Anomaly ```javascript // _brain/tasks/scripts/alert-churn.js const axios = require('axios'); async function alertIfChurnSpike(churnRate) { if (churnRate > 0.05) { await axios.post(process.env.SLACK_WEBHOOK_URL, { text: `⚠️ Churn spike detected: ${(churnRate * 100).toFixed(1)}%`, }); } } ``` ## File Formats All brain files are Markdown with optional YAML frontmatter: ```markdown --- updated: 2026-06-04 category: operations auto_update: true --- # Metrics ## MRR $12,450 (+8.2% MoM) ## Active Users 342 (-2 from last week) ``` Claude updates these automatically. Manual edits are respected.
GitHubで見る