[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GVCZXNTV2NGE04A16BRBMQ":3,"skill-same:01M6GVCZXNTV2NGE04A16BRBMQ":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":53,"install":54,"resources":67},"01M6GVCZXNTV2NGE04A16BRBMQ","plur-session-end",null,"Extract durable learnings at the end of a session. Saves corrections, preferences, and codebase patterns as engrams — nothing ephemeral, nothing sensitive.","plur-ai\u002Fplur","plur-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F269585694?v=4","01M6GVC90NFRW2T6QVB5PTDD20","01M6GVC95NND4PFJE616S26BM2",315,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fplur-ai\u002Fplur\u002Fblob\u002Fmain\u002Fskills\u002Fplur-session-end\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"session","session end","end","plur session end","memory","productivity","learning","preferences","extract","wrap-up","up","wrap","patterns","learnings","as","at","2026-11-10 10:12:30",false,"---\nname: plur-session-end\ndescription: Extract durable learnings at the end of a session. Saves corrections, preferences, and codebase patterns as engrams — nothing ephemeral, nothing sensitive.\nversion: 1.0.0\nmetadata:\n  hermes:\n    tags: [memory, learning, session-end, engrams, wrap-up]\n    category: productivity\n    requires_toolsets: []\n---\n\n# PLUR Session End\n\nRun this at the end of a conversation to extract what is worth remembering.\n\nPLUR stores durable knowledge — corrections, conventions, preferences, decisions. It does not store session logs, one-off status, or anything that will be irrelevant next week. This skill enforces that discipline.\n\n## When to Use\n\n- The user says \"wrap up\", \"end session\", \"we're done\", or similar\n- The conversation is winding down after completing a task\n- You want to record what you learned before the context window closes\n\n## Procedure\n\n### Step 1 — Identify learning candidates\n\nScan the conversation for:\n\n| Category | Examples |\n|----------|---------|\n| **Corrections** | \"No, the API returns snake_case\" \u002F \"Don't use X, use Y\" |\n| **Preferences** | \"Always run lint before committing\" \u002F \"User prefers concise explanations\" |\n| **Codebase conventions** | \"This project uses repository pattern\" \u002F \"Tests live in `__tests__\u002F`\" |\n| **Decisions** | \"We chose PostgreSQL for ACID compliance\" |\n| **Gotchas** | \"The staging env needs `NODE_ENV=staging`, not `production`\" |\n| **Terminology** | \"They call it a 'slot' not a 'channel'\" |\n\n### Step 2 — Filter ruthlessly\n\nSkip:\n\n- Anything already obvious from reading the codebase\n- Session-specific state (\"we're working on the login page right now\")\n- One-off status (\"the build was red this morning\")\n- Anything you are not confident about\n- Secrets, credentials, API keys — never\n\n### Step 3 — Write each learning as a durable assertion\n\nFormat: a single clear statement that will make sense to a future agent with no session context.\n\nGood: `\"The publish script requires npm 2FA — always run 'npm publish' interactively, never from CI.\"`\n\nBad: `\"We talked about the publish issue.\"`\n\n### Step 4 — Assign metadata\n\nFor each learning, determine:\n\n- `type`: `behavioral` | `terminological` | `procedural` | `architectural` — choose the MCP schema category; correction\u002Fpreference\u002Fgotcha can be tags\n- `domain`: the project, library, or topic area (e.g., `\"plur\"`, `\"typescript\"`, `\"project:acme\"`)\n- `scope`: the scope of applicability (e.g., `\"global\"`, `\"project:acme\"`)\n- `tags`: 2–5 descriptive tags\n\n### Step 5 — Save\n\n`plur_learn` and `plur_session_end` are direct tools in both lean and full MCP profiles. For less-common operations, use `plur_admin` with `{ \"action\": \"help\" }` to discover the current actions and schemas.\n\nSave with `plur_learn`:\n\n```\nplur_learn({ statement, type, domain, scope, tags })\n```\n\nCall once per learning. Do not batch into one call — separate engrams decay and strengthen independently.\n\nAlternatively, pass unsaved learnings as `engram_suggestions` to `plur_session_end`, following its live schema. Do not submit the same learnings through both paths.\n\n## Quality bar\n\nFewer, stronger engrams beat many weak ones.\n\n- Prefer **no engram** over a vague one\n- One sentence per engram — if you need two sentences, split it into two engrams\n- If you're unsure whether something is reusable, skip it\n\n## What a good wrap-up looks like\n\n```\nSession learnings saved (3 engrams):\n\n1. [correction] The API returns timestamps in Unix seconds, not milliseconds.\n   domain: project:acme | tags: api, timestamps\n\n2. [preference] User prefers TypeScript strict mode — always enable in tsconfig.\n   domain: typescript | tags: tsconfig, preferences\n\n3. [gotcha] The staging deploy requires a manual cache bust at \u002Fadmin\u002Fcache.\n   domain: project:acme | tags: deploy, staging, ops\n```\n\nKeep the user-facing summary short. Show what you saved; do not narrate your reasoning.\n\n## Integration with plur-memory\n\nThis skill pairs with `plur-memory`:\n\n- `plur-memory` guides recall and learning; automatic injection depends on the installed editor adapter\n- `plur-session-end` runs once — it extracts and saves what the session produced\n\nTogether they close the memory loop: inject at start, learn at end.\n","# PLUR Session End\n\nRun this at the end of a conversation to extract what is worth remembering.\n\nPLUR stores durable knowledge — corrections, conventions, preferences, decisions. It does not store session logs, one-off status, or anything that will be irrelevant next week. This skill enforces that discipline.\n\n## When to Use\n\n- The user says \"wrap up\", \"end session\", \"we're done\", or similar\n- The conversation is winding down after completing a task\n- You want to record what you learned before the context window closes\n\n## Procedure\n\n### Step 1 — Identify learning candidates\n\nScan the conversation for:\n\n| Category | Examples |\n|----------|---------|\n| **Corrections** | \"No, the API returns snake_case\" \u002F \"Don't use X, use Y\" |\n| **Preferences** | \"Always run lint before committing\" \u002F \"User prefers concise explanations\" |\n| **Codebase conventions** | \"This project uses repository pattern\" \u002F \"Tests live in `__tests__\u002F`\" |\n| **Decisions** | \"We chose PostgreSQL for ACID compliance\" |\n| **Gotchas** | \"The staging env needs `NODE_ENV=staging`, not `production`\" |\n| **Terminology** | \"They call it a 'slot' not a 'channel'\" |\n\n### Step 2 — Filter ruthlessly\n\nSkip:\n\n- Anything already obvious from reading the codebase\n- Session-specific state (\"we're working on the login page right now\")\n- One-off status (\"the build was red this morning\")\n- Anything you are not confident about\n- Secrets, credentials, API keys — never\n\n### Step 3 — Write each learning as a durable assertion\n\nFormat: a single clear statement that will make sense to a future agent with no session context.\n\nGood: `\"The publish script requires npm 2FA — always run 'npm publish' interactively, never from CI.\"`\n\nBad: `\"We talked about the publish issue.\"`\n\n### Step 4 — Assign metadata\n\nFor each learning, determine:\n\n- `type`: `behavioral` | `terminological` | `procedural` | `architectural` — choose the MCP schema category; correction\u002Fpreference\u002Fgotcha can be tags\n- `domain`: the project, library, or topic area (e.g., `\"plur\"`, `\"typescript\"`, `\"project:acme\"`)\n- `scope`: the scope of applicability (e.g., `\"global\"`, `\"project:acme\"`)\n- `tags`: 2–5 descriptive tags\n\n### Step 5 — Save\n\n`plur_learn` and `plur_session_end` are direct tools in both lean and full MCP profiles. For less-common operations, use `plur_admin` with `{ \"action\": \"help\" }` to discover the current actions and schemas.\n\nSave with `plur_learn`:\n\n```\nplur_learn({ statement, type, domain, scope, tags })\n```\n\nCall once per learning. Do not batch into one call — separate engrams decay and strengthen independently.\n\nAlternatively, pass unsaved learnings as `engram_suggestions` to `plur_session_end`, following its live schema. Do not submit the same learnings through both paths.\n\n## Quality bar\n\nFewer, stronger engrams beat many weak ones.\n\n- Prefer **no engram** over a vague one\n- One sentence per engram — if you need two sentences, split it into two engrams\n- If you're unsure whether something is reusable, skip it\n\n## What a good wrap-up looks like\n\n```\nSession learnings saved (3 engrams):\n\n1. [correction] The API returns timestamps in Unix seconds, not milliseconds.\n   domain: project:acme | tags: api, timestamps\n\n2. [preference] User prefers TypeScript strict mode — always enable in tsconfig.\n   domain: typescript | tags: tsconfig, preferences\n\n3. [gotcha] The staging deploy requires a manual cache bust at \u002Fadmin\u002Fcache.\n   domain: project:acme | tags: deploy, staging, ops\n```\n\nKeep the user-facing summary short. Show what you saved; do not narrate your reasoning.\n\n## Integration with plur-memory\n\nThis skill pairs with `plur-memory`:\n\n- `plur-memory` guides recall and learning; automatic injection depends on the installed editor adapter\n- `plur-session-end` runs once — it extracts and saves what the session produced\n\nTogether they close the memory loop: inject at start, learn at end.\n",{"name":5,"version":39,"metadata":40,"description":7},"1.0.0",{"hermes":41},{"tags":42,"category":23,"requires_toolsets":45},[22,24,43,44,27],"session-end","engrams",[],"main","a5db3818a300216143be45fcf6412b2cb0277f2a","skills\u002Fplur-session-end",40,"https:\u002F\u002Fgithub.com\u002Fplur-ai\u002Fplur","https:\u002F\u002Fplur.ai","https:\u002F\u002Fgithub.com\u002Fplur-ai","2026-11-12 21:28:56",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add plur-ai\u002Fplur --skill plur-session-end",{"tool":60,"command":61},"bunx","bunx skills add plur-ai\u002Fplur --skill plur-session-end",{"tool":63,"command":64},"pnpm","pnpm dlx skills add plur-ai\u002Fplur --skill plur-session-end","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fplur-ai\u002Fplur\u002Fblob\u002Fmain\u002Fskills\u002Fplur-session-end\u002FSKILL.md",true,[],[69,89,97,104,113,121],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":34},"01M6GVF0ZED4JCJTZJETTW9V3Q","with-provenance","A conformance vector.","CC-BY-4.0","https:\u002F\u002Fgithub.com\u002Fplur-ai\u002Fplur\u002Fblob\u002Fmain\u002Fspec\u002Fvectors\u002Fpacks\u002Fwith-provenance\u002FSKILL.md",[],[77,78,79,80,81,82,83,84,85,86,87,88],"provenance","with provenance","with","conformance","pool","true","match","migration","local","spec","deploy","vector",{"skillNo":90,"name":91,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":34},"01M6GVEXWE52C4340F3BMS9H6Z","with-integrity","https:\u002F\u002Fgithub.com\u002Fplur-ai\u002Fplur\u002Fblob\u002Fmain\u002Fspec\u002Fvectors\u002Fpacks\u002Fwith-integrity\u002FSKILL.md",[],[95,79,96,84,86,87,88,85,83,81,80],"integrity","with integrity",{"skillNo":98,"name":99,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":34},"01M6GVETQ4HWBC5J0907G5V45N","with-integrity-v2","https:\u002F\u002Fgithub.com\u002Fplur-ai\u002Fplur\u002Fblob\u002Fmain\u002Fspec\u002Fvectors\u002Fpacks\u002Fwith-integrity-v2\u002FSKILL.md",[],[79,95,103,83,81,80,88,85,86,87,84],"with integrity v2",{"skillNo":105,"name":106,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":34},"01M6GVEQ67HMX6RN7XMBHWJ18W","unknown-root-field","https:\u002F\u002Fgithub.com\u002Fplur-ai\u002Fplur\u002Fblob\u002Fmain\u002Fspec\u002Fvectors\u002Fpacks\u002Funknown-root-field\u002FSKILL.md",[],[110,111,86,87,88,84,112,85,83,81,80],"unknown root field","root","do",{"skillNo":114,"name":115,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":34},"01M6GVEM247VAGH21Z5VME0XZS","unknown-metadata-field","https:\u002F\u002Fgithub.com\u002Fplur-ai\u002Fplur\u002Fblob\u002Fmain\u002Fspec\u002Fvectors\u002Fpacks\u002Funknown-metadata-field\u002FSKILL.md",[],[119,120,80,86,87,88,112,85,83],"unknown metadata field","metadata",{"skillNo":122,"name":123,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":73,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":34},"01M6GVEH04JDN3DDRZZDQD1D6W","private-engram-shipped","https:\u002F\u002Fgithub.com\u002Fplur-ai\u002Fplur\u002Fblob\u002Fmain\u002Fspec\u002Fvectors\u002Fpacks\u002Fprivate-engram-shipped\u002FSKILL.md",[],[127,128,87,88,84,85,83,81,80,86],"private engram shipped","engram"]