[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7CXWSF6REG8ST1X0M7HN563":3,"skill-same:01M7CXWSF6REG8ST1X0M7HN563":49},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":30,"ownerHtmlUrl":31,"ownerBlogUrl":32,"ownerDescription":33,"updatedAt":34,"install":35,"resources":48},"01M7CXWSF6REG8ST1X0M7HN563","memory-discipline",null,"When and how to persist durable memory — save genuine user preferences, facts, and corrections; NEVER persist transient environment failures (a failed command, a flaky network call, a one-off tool error) as lessons; recall before re-asking.","Sidiora-Labs\u002Fcentra-gideon-agent","Sidiora-Labs","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F315858149?v=4","01M7CXSE0SZN9PME7BZ77KK2N7","Sidiora Labs","01M7CXSE1TJT3GJDJC6A9B7YD2",212,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FSidiora-Labs\u002Fcentra-gideon-agent\u002Fblob\u002Fmain\u002Fruntime\u002Fgideon\u002Fextensions\u002Fskills\u002Fbundled\u002Fmemory-discipline\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: memory-discipline\ndescription: When and how to persist durable memory — save genuine user preferences, facts, and corrections; NEVER persist transient environment failures (a failed command, a flaky network call, a one-off tool error) as lessons; recall before re-asking.\nalways: false\ntriggers: remember, memory, lesson, preference, note this, persist, save this for later, recall, forget, learned, you should know\n---\n\n# Memory Discipline\n\nGideon is **persistent and self-learning** — across sessions it remembers\nwhat the user prefers, durable facts about them and their work, and corrections\nthey've made. That value collapses if memory fills with noise. The discipline is\nsimple: **persist what's durable, recall before re-asking, and never store\ntransient failures as lessons.**\n\nTools: `memory_remember` (save), `memory_recall` \u002F `memory_list` (retrieve),\n`memory_forget` (remove).\n\n## What IS worth remembering\n\nPersist something only when it will still be true and useful **next week, in a\ndifferent session**. Three durable kinds:\n\n- **Preference** — a standing choice about how the user wants things done.\n  *\"Prefers pytest over unittest.\" \"Wants concise answers, no preamble.\" \"Uses\n  tabs, not spaces, in this repo.\"*\n- **Fact** — durable truth about the user, their environment, or their projects.\n  *\"The prod database is `orders-prod` in us-east-1.\" \"Their team's CI is\n  GitHub Actions.\" \"Deploys go out Tuesdays.\"*\n- **Correction** — the user fixed something you got wrong; capture the corrected\n  rule so you don't repeat the mistake.\n  *\"Don't call it 'the API' — it's specifically the Billing API.\" \"I said X was\n  fine; the user corrected that X is forbidden here.\"*\n\n## What is NOT a lesson (the key guardrail)\n\n**Never persist environment or transient failures as memory.** A failure that\nbelongs to *this moment* — not to the user's durable preferences or world — is\nnot a lesson:\n\n- A bash command that failed (wrong flag, missing file, exit 1) — fix it and move\n  on; don't remember \"the command failed\".\n- A flaky or timed-out network call, a transient API 500, a rate-limit — retry or\n  route around; it's not a fact about the user.\n- A one-off tool error (bad argument, malformed path, a file that didn't exist\n  yet) — correct the call; the error is not knowledge.\n- A momentary state (\"the server was down\", \"the test was red just now\") — state\n  changes; don't freeze a snapshot of it into permanent memory.\n\nLitmus test before `memory_remember`: *\"Will this still be true and actionable\nin a fresh session next week?\"* If it's about something that just broke or a\npassing condition of the current run, the answer is no — **don't save it.** (If a\nfailure reveals a *durable* rule — e.g. \"this build always needs Node ≥20\" — save\nthe **rule**, not the incident.)\n\n## Recall before re-asking\n\nBefore asking the user something they may have already told you — a preference, a\ndefault, a name, an environment detail — **check memory first** with\n`memory_recall` (semantic lookup) or `memory_list` (browse). If it's there, act\non it (or confirm — *\"Last time you preferred X; still the case?\"*) instead of\nre-asking. Re-asking something already on record is exactly the friction\npersistent memory exists to remove.\n\n## How to write a good memory\n\n- **One durable rule per entry**, phrased as a standing instruction or fact, not\n  a narration of an event. ✅ *\"Prefers TypeScript strict mode.\"* ❌ *\"Today we\n  turned on strict mode.\"*\n- **Categorize** by kind (preference \u002F fact \u002F correction) and **scope** it\n  appropriately — workspace\u002Fproject-specific facts scoped to that project, global\n  preferences scoped broadly — so recall surfaces the right thing in context.\n- **Supersede, don't duplicate.** If a new preference contradicts an old one,\n  update\u002Fforget the stale entry rather than leaving both — contradictory memory\n  is worse than none.\n\n## Don't\n\n- Don't save secrets or credential contents, ever.\n- Don't save throwaway working state (current branch, today's failing test, a\n  transient error) — see the guardrail above.\n- Don't save something the user didn't actually express as durable just because\n  it came up once; ephemeral context stays in the conversation, not in memory.\n","# Memory Discipline\n\nGideon is **persistent and self-learning** — across sessions it remembers\nwhat the user prefers, durable facts about them and their work, and corrections\nthey've made. That value collapses if memory fills with noise. The discipline is\nsimple: **persist what's durable, recall before re-asking, and never store\ntransient failures as lessons.**\n\nTools: `memory_remember` (save), `memory_recall` \u002F `memory_list` (retrieve),\n`memory_forget` (remove).\n\n## What IS worth remembering\n\nPersist something only when it will still be true and useful **next week, in a\ndifferent session**. Three durable kinds:\n\n- **Preference** — a standing choice about how the user wants things done.\n  *\"Prefers pytest over unittest.\" \"Wants concise answers, no preamble.\" \"Uses\n  tabs, not spaces, in this repo.\"*\n- **Fact** — durable truth about the user, their environment, or their projects.\n  *\"The prod database is `orders-prod` in us-east-1.\" \"Their team's CI is\n  GitHub Actions.\" \"Deploys go out Tuesdays.\"*\n- **Correction** — the user fixed something you got wrong; capture the corrected\n  rule so you don't repeat the mistake.\n  *\"Don't call it 'the API' — it's specifically the Billing API.\" \"I said X was\n  fine; the user corrected that X is forbidden here.\"*\n\n## What is NOT a lesson (the key guardrail)\n\n**Never persist environment or transient failures as memory.** A failure that\nbelongs to *this moment* — not to the user's durable preferences or world — is\nnot a lesson:\n\n- A bash command that failed (wrong flag, missing file, exit 1) — fix it and move\n  on; don't remember \"the command failed\".\n- A flaky or timed-out network call, a transient API 500, a rate-limit — retry or\n  route around; it's not a fact about the user.\n- A one-off tool error (bad argument, malformed path, a file that didn't exist\n  yet) — correct the call; the error is not knowledge.\n- A momentary state (\"the server was down\", \"the test was red just now\") — state\n  changes; don't freeze a snapshot of it into permanent memory.\n\nLitmus test before `memory_remember`: *\"Will this still be true and actionable\nin a fresh session next week?\"* If it's about something that just broke or a\npassing condition of the current run, the answer is no — **don't save it.** (If a\nfailure reveals a *durable* rule — e.g. \"this build always needs Node ≥20\" — save\nthe **rule**, not the incident.)\n\n## Recall before re-asking\n\nBefore asking the user something they may have already told you — a preference, a\ndefault, a name, an environment detail — **check memory first** with\n`memory_recall` (semantic lookup) or `memory_list` (browse). If it's there, act\non it (or confirm — *\"Last time you preferred X; still the case?\"*) instead of\nre-asking. Re-asking something already on record is exactly the friction\npersistent memory exists to remove.\n\n## How to write a good memory\n\n- **One durable rule per entry**, phrased as a standing instruction or fact, not\n  a narration of an event. ✅ *\"Prefers TypeScript strict mode.\"* ❌ *\"Today we\n  turned on strict mode.\"*\n- **Categorize** by kind (preference \u002F fact \u002F correction) and **scope** it\n  appropriately — workspace\u002Fproject-specific facts scoped to that project, global\n  preferences scoped broadly — so recall surfaces the right thing in context.\n- **Supersede, don't duplicate.** If a new preference contradicts an old one,\n  update\u002Fforget the stale entry rather than leaving both — contradictory memory\n  is worse than none.\n\n## Don't\n\n- Don't save secrets or credential contents, ever.\n- Don't save throwaway working state (current branch, today's failing test, a\n  transient error) — see the guardrail above.\n- Don't save something the user didn't actually express as durable just because\n  it came up once; ephemeral context stays in the conversation, not in memory.\n",{"name":5,"always":20,"triggers":24,"description":7},"remember, memory, lesson, preference, note this, persist, save this for later, recall, forget, learned, you should know","main","d2af2361d07479c31299731cd2aab81a99a1b0ae","runtime\u002Fgideon\u002Fextensions\u002Fskills\u002Fbundled\u002Fmemory-discipline",33,"https:\u002F\u002Fgithub.com\u002FSidiora-Labs\u002Fcentra-gideon-agent","https:\u002F\u002Fcentra.ag","https:\u002F\u002Fgithub.com\u002FSidiora-Labs","sidioralabs.com","An Applied Lab for Systems That Connect Ideas to Action.","2026-11-05 23:31:58",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add Sidiora-Labs\u002Fcentra-gideon-agent --skill memory-discipline",{"tool":41,"command":42},"bunx","bunx skills add Sidiora-Labs\u002Fcentra-gideon-agent --skill memory-discipline",{"tool":44,"command":45},"pnpm","pnpm dlx skills add Sidiora-Labs\u002Fcentra-gideon-agent --skill memory-discipline","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSidiora-Labs\u002Fcentra-gideon-agent\u002Fblob\u002Fmain\u002Fruntime\u002Fgideon\u002Fextensions\u002Fskills\u002Fbundled\u002Fmemory-discipline\u002FSKILL.md",true,[],[50,57,64,71,78,85],{"skillNo":51,"name":52,"nameZh":6,"description":53,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":56,"publishedAt":19},"01M7CXXG9ZW9SRRET92XBGS5W3","web-verify","Verify a built web page or app actually renders and works — drive it in a real browser, check the console and network, confirm the thing you changed is the thing being served, and capture evidence. Use before claiming a frontend change works.","https:\u002F\u002Fgithub.com\u002FSidiora-Labs\u002Fcentra-gideon-agent\u002Fblob\u002Fmain\u002Fruntime\u002Fgideon\u002Fextensions\u002Fskills\u002Fbundled\u002Fweb-verify\u002FSKILL.md",[],[],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":19},"01M7CXX9RXMRB1ZHTRETSDVB8B","visual-output","Emit rich visual output in chat via \u003Cwidget> tags — styled HTML cards, charts, tables, interactive tools, and drawn SVG\u002Fcanvas diagrams, illustrations, and animations — theme-aware, centered, and responsive instead of clashing or cramped.","https:\u002F\u002Fgithub.com\u002FSidiora-Labs\u002Fcentra-gideon-agent\u002Fblob\u002Fmain\u002Fruntime\u002Fgideon\u002Fextensions\u002Fskills\u002Fbundled\u002Fvisual-output\u002FSKILL.md",[],[],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":19},"01M7CXX48DZZ7JTV0RRS4406Y7","task-and-project","Track work as Tasks (the \u002Fapi\u002Ftasks CRUD + native task provider), and decompose larger projects into independent, verifiable units — fanning parallel investigation out to subagents while keeping one coherent plan; hand open-ended goal-driven work to a goal loop.","https:\u002F\u002Fgithub.com\u002FSidiora-Labs\u002Fcentra-gideon-agent\u002Fblob\u002Fmain\u002Fruntime\u002Fgideon\u002Fextensions\u002Fskills\u002Fbundled\u002Ftask-and-project\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":19},"01M7CXWYSRFM4BX63CY3TD0PA6","research-campaign","Run a multi-cycle research campaign — grill the question, decompose it into answerable sub-questions, investigate each against sources, then synthesize with confidence and gaps stated. Use for open questions that need real investigation rather than one lookup.","https:\u002F\u002Fgithub.com\u002FSidiora-Labs\u002Fcentra-gideon-agent\u002Fblob\u002Fmain\u002Fruntime\u002Fgideon\u002Fextensions\u002Fskills\u002Fbundled\u002Fresearch-campaign\u002FSKILL.md",[],[],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":19},"01M7CXWJDSGB37A4E74EFK748F","loop-worker","Per-cycle protocol for an autonomous goal loop worker — the unified autonomous goal engine that runs one self-directed cycle per turn until its goal is met, then self-retires. Drives one cycle against a loop's file interface (status.json gate, brief.md goal, guidance.txt nudges, findings\u002Fcycle_NNN.json, FINDINGS.md, the type-appropriate deliverable, STOP sentinel). The worker produces work and reports evidence; a deterministic check or a separate judge — never the worker — decides done-ness.","https:\u002F\u002Fgithub.com\u002FSidiora-Labs\u002Fcentra-gideon-agent\u002Fblob\u002Fmain\u002Fruntime\u002Fgideon\u002Fextensions\u002Fskills\u002Fbundled\u002Floop-worker\u002FSKILL.md",[],[],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":19},"01M7CXWE033T8VRGJSC78E51C3","knowledge-grounding","Search the knowledge pool before answering, ground claims in retrieved sources and cite them, recognize ingest-worthy content and capture it with knowledge_create — don't fabricate when the answer is on record.","https:\u002F\u002Fgithub.com\u002FSidiora-Labs\u002Fcentra-gideon-agent\u002Fblob\u002Fmain\u002Fruntime\u002Fgideon\u002Fextensions\u002Fskills\u002Fbundled\u002Fknowledge-grounding\u002FSKILL.md",[],[]]