[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6K3CDRYRFBWAZJZKEFYDMV0":3,"skill-same:01M6K3CDRYRFBWAZJZKEFYDMV0":70},{"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":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":63},"01M6K3CDRYRFBWAZJZKEFYDMV0","memory",null,"Use when the operator requests project recall, when the harness dispatches its memory step, or when an active harness workflow requires a memory checkpoint. Recall-before-act protocol with categorized persistence and staleness detection.","jstoup111\u002Fai-conductor","jstoup111","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1585332?v=4","01M6K374Y0VEFPVCT2KPBAN4HC","James Stoup","01M6K3751X0GFKNBD0198F50XN",7,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjstoup111\u002Fai-conductor\u002Fblob\u002Fmain\u002Fskills\u002Fmemory\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"use","when","true","requests","with","understand","act","project","advisory","active","recall","checkpoint","detection","persistence","operator","harness","protocol","workflow","2026-11-10 10:12:30",false,"---\nname: memory\ndisable-model-invocation: true\ndescription: \"Use when the operator requests project recall, when the harness dispatches its memory step, or when an active harness workflow requires a memory checkpoint. Recall-before-act protocol with categorized persistence and staleness detection.\"\nenforcement: advisory\nphase: understand\nstandalone: true\nrequires: []\n---\n\n## Purpose\n\nProvides persistent, categorized memory across harness-managed sessions. Ensures an explicit memory\ninvocation starts by recalling relevant context and persists significant learnings at declared\nworkflow checkpoints. Prevents repeated questions, lost decisions, and rediscovered gotchas without\nallowing the memory skill to self-activate in unrelated host chats. Provider session hooks may still\nsurface bounded memory context without invoking this skill.\n\nThis skill is the retrieval and persistence guidance for the `local` memory provider (adr-2026-06-29-memory-provider-plugin-and-agent-queried-integration\u002Fadr-2026-06-29-per-provider-retrieval-guidance-location). Recall is always performed by the agent reading `.memory\u002F` files and judging relevance — the harness contains no search, ranking, or embedding logic (FR-3 invariant).\n\n## Practices\n\n### Recall Protocol (Invocation Start)\n\n**This is a hard gate: every memory invocation MUST start with recall before any other memory work.**\n\n1. Check if `.memory\u002Findex.md` exists\n   - If not: this is a fresh project — skip recall, note \"no prior memory\"\n   - If yes: continue\n\n2. Read `.memory\u002Findex.md` to get the summary of all memory entries\n\n3. Identify entries relevant to the current task:\n   - Match by file paths mentioned in the user's request\n   - Match by feature area or domain concept\n   - Match by category (always check `gotchas\u002F` — these prevent repeat mistakes)\n\n4. Read relevant entries in full\n\n5. **Staleness check:** For each recalled entry:\n   - If `created` date is >30 days ago, flag as potentially stale\n   - If entry references specific files, check if those files still exist and match\n   - If stale: surface to the user — \"Memory entry X may be outdated, please verify\"\n\n6. Surface relevant memories to the user concisely:\n   - \"Recalled: [summary of relevant memories]\"\n   - \"Stale: [entries that may need review]\"\n\n### Persist Protocol (During Work)\n\n**Gate: significant decisions MUST be persisted. Don't batch — write immediately.**\n\nAfter each of these events, create or update a memory entry:\n\n| Event | Category | Example |\n|-------|----------|---------|\n| Architectural decision made | `decisions\u002F` | \"Chose JWT over session cookies for auth\" |\n| Pattern discovered | `patterns\u002F` | \"All API endpoints use service objects, not inline logic\" |\n| Unexpected issue hit | `gotchas\u002F` | \"PostgreSQL JSONB columns need explicit casting for array queries\" |\n| Domain knowledge learned | `context\u002F` | \"Premium users have different rate limits than free tier\" |\n\n### Memory Entry Format\n\nWrite each entry as a Markdown file in the appropriate `.memory\u002F` subdirectory:\n\n```markdown\n---\ncreated: YYYY-MM-DD\ncategory: decisions | patterns | gotchas | context\nrelated: [file paths, story names, or feature areas]\n---\n\n## [Descriptive Title]\n\n[What was learned, decided, or discovered. Be specific and concrete.]\n\n### Why\n\n[Rationale, root cause, or circumstances that led to this knowledge.]\n\n### Applies When\n\n[Conditions under which this memory is relevant. Help future sessions know\nwhen to surface this entry.]\n```\n\n**File naming:** Use kebab-case descriptive names: `chose-jwt-for-auth.md`, `jsonb-array-casting-gotcha.md`\n\n### Index Maintenance\n\nAfter creating or updating any memory entry, update `.memory\u002Findex.md`:\n\n```markdown\n# Memory Index\n\n## Decisions\n- [chose-jwt-for-auth](decisions\u002Fchose-jwt-for-auth.md) — JWT chosen over sessions for stateless API auth\n- [postgres-primary-db](decisions\u002Fpostgres-primary-db.md) — PostgreSQL selected as primary database\n\n## Patterns\n- [service-object-pattern](patterns\u002Fservice-object-pattern.md) — All API logic flows through service objects\n\n## Gotchas\n- [jsonb-array-casting](gotchas\u002Fjsonb-array-casting.md) — JSONB arrays need explicit casting in WHERE clauses\n\n## Context\n- [premium-rate-limits](context\u002Fpremium-rate-limits.md) — Premium users: 1000 req\u002Fmin vs free: 100 req\u002Fmin\n```\n\nEach line: `- [filename](relative-path) — one-line summary`\n\n### Staleness Management\n\nWhen a memory entry is confirmed stale:\n1. Update the entry with current information, OR\n2. Delete it if no longer relevant\n3. Update `.memory\u002Findex.md` accordingly\n\nWhen a memory entry is confirmed still valid:\n- Update the `created` date to today (resets the staleness clock)\n\n### What NOT to Remember\n\nDo not create memory entries for:\n- Things derivable from code (`git log`, `git blame`, reading files)\n- Temporary task state (use tasks instead)\n- Implementation details that live in the code itself\n- Standard framework conventions documented elsewhere\n\nMemory is for **non-obvious, cross-session knowledge** that would be lost between conversations.\n\n## Verification\n\n- [ ] This memory invocation started with recall (or noted \"no prior memory\" for fresh projects)\n- [ ] Relevant memories surfaced to user with concise summaries\n- [ ] Stale entries flagged (>30 days or referenced files changed)\n- [ ] Significant decisions encountered during this invocation persisted immediately (not batched)\n- [ ] `.memory\u002Findex.md` updated after every write\n- [ ] Memory entries use the correct format with all required fields\n- [ ] No entries created for information derivable from code\n","## Purpose\n\nProvides persistent, categorized memory across harness-managed sessions. Ensures an explicit memory\ninvocation starts by recalling relevant context and persists significant learnings at declared\nworkflow checkpoints. Prevents repeated questions, lost decisions, and rediscovered gotchas without\nallowing the memory skill to self-activate in unrelated host chats. Provider session hooks may still\nsurface bounded memory context without invoking this skill.\n\nThis skill is the retrieval and persistence guidance for the `local` memory provider (adr-2026-06-29-memory-provider-plugin-and-agent-queried-integration\u002Fadr-2026-06-29-per-provider-retrieval-guidance-location). Recall is always performed by the agent reading `.memory\u002F` files and judging relevance — the harness contains no search, ranking, or embedding logic (FR-3 invariant).\n\n## Practices\n\n### Recall Protocol (Invocation Start)\n\n**This is a hard gate: every memory invocation MUST start with recall before any other memory work.**\n\n1. Check if `.memory\u002Findex.md` exists\n   - If not: this is a fresh project — skip recall, note \"no prior memory\"\n   - If yes: continue\n\n2. Read `.memory\u002Findex.md` to get the summary of all memory entries\n\n3. Identify entries relevant to the current task:\n   - Match by file paths mentioned in the user's request\n   - Match by feature area or domain concept\n   - Match by category (always check `gotchas\u002F` — these prevent repeat mistakes)\n\n4. Read relevant entries in full\n\n5. **Staleness check:** For each recalled entry:\n   - If `created` date is >30 days ago, flag as potentially stale\n   - If entry references specific files, check if those files still exist and match\n   - If stale: surface to the user — \"Memory entry X may be outdated, please verify\"\n\n6. Surface relevant memories to the user concisely:\n   - \"Recalled: [summary of relevant memories]\"\n   - \"Stale: [entries that may need review]\"\n\n### Persist Protocol (During Work)\n\n**Gate: significant decisions MUST be persisted. Don't batch — write immediately.**\n\nAfter each of these events, create or update a memory entry:\n\n| Event | Category | Example |\n|-------|----------|---------|\n| Architectural decision made | `decisions\u002F` | \"Chose JWT over session cookies for auth\" |\n| Pattern discovered | `patterns\u002F` | \"All API endpoints use service objects, not inline logic\" |\n| Unexpected issue hit | `gotchas\u002F` | \"PostgreSQL JSONB columns need explicit casting for array queries\" |\n| Domain knowledge learned | `context\u002F` | \"Premium users have different rate limits than free tier\" |\n\n### Memory Entry Format\n\nWrite each entry as a Markdown file in the appropriate `.memory\u002F` subdirectory:\n\n```markdown\n---\ncreated: YYYY-MM-DD\ncategory: decisions | patterns | gotchas | context\nrelated: [file paths, story names, or feature areas]\n---\n\n## [Descriptive Title]\n\n[What was learned, decided, or discovered. Be specific and concrete.]\n\n### Why\n\n[Rationale, root cause, or circumstances that led to this knowledge.]\n\n### Applies When\n\n[Conditions under which this memory is relevant. Help future sessions know\nwhen to surface this entry.]\n```\n\n**File naming:** Use kebab-case descriptive names: `chose-jwt-for-auth.md`, `jsonb-array-casting-gotcha.md`\n\n### Index Maintenance\n\nAfter creating or updating any memory entry, update `.memory\u002Findex.md`:\n\n```markdown\n# Memory Index\n\n## Decisions\n- [chose-jwt-for-auth](decisions\u002Fchose-jwt-for-auth.md) — JWT chosen over sessions for stateless API auth\n- [postgres-primary-db](decisions\u002Fpostgres-primary-db.md) — PostgreSQL selected as primary database\n\n## Patterns\n- [service-object-pattern](patterns\u002Fservice-object-pattern.md) — All API logic flows through service objects\n\n## Gotchas\n- [jsonb-array-casting](gotchas\u002Fjsonb-array-casting.md) — JSONB arrays need explicit casting in WHERE clauses\n\n## Context\n- [premium-rate-limits](context\u002Fpremium-rate-limits.md) — Premium users: 1000 req\u002Fmin vs free: 100 req\u002Fmin\n```\n\nEach line: `- [filename](relative-path) — one-line summary`\n\n### Staleness Management\n\nWhen a memory entry is confirmed stale:\n1. Update the entry with current information, OR\n2. Delete it if no longer relevant\n3. Update `.memory\u002Findex.md` accordingly\n\nWhen a memory entry is confirmed still valid:\n- Update the `created` date to today (resets the staleness clock)\n\n### What NOT to Remember\n\nDo not create memory entries for:\n- Things derivable from code (`git log`, `git blame`, reading files)\n- Temporary task state (use tasks instead)\n- Implementation details that live in the code itself\n- Standard framework conventions documented elsewhere\n\nMemory is for **non-obvious, cross-session knowledge** that would be lost between conversations.\n\n## Verification\n\n- [ ] This memory invocation started with recall (or noted \"no prior memory\" for fresh projects)\n- [ ] Relevant memories surfaced to user with concise summaries\n- [ ] Stale entries flagged (>30 days or referenced files changed)\n- [ ] Significant decisions encountered during this invocation persisted immediately (not batched)\n- [ ] `.memory\u002Findex.md` updated after every write\n- [ ] Memory entries use the correct format with all required fields\n- [ ] No entries created for information derivable from code\n",{"name":5,"phase":24,"requires":42,"standalone":43,"description":7,"enforcement":27,"disable-model-invocation":43},[],true,"main","136b34ec6792f53d0beba330dfa2dffad6c93484","skills\u002Fmemory",2,"https:\u002F\u002Fgithub.com\u002Fjstoup111\u002Fai-conductor","https:\u002F\u002Fgithub.com\u002Fjstoup111","2026-11-11 22:26:29",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":43},[53,56,59],{"tool":54,"command":55},"npx","npx skills add jstoup111\u002Fai-conductor --skill memory",{"tool":57,"command":58},"bunx","bunx skills add jstoup111\u002Fai-conductor --skill memory",{"tool":60,"command":61},"pnpm","pnpm dlx skills add jstoup111\u002Fai-conductor --skill memory","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjstoup111\u002Fai-conductor\u002Fblob\u002Fmain\u002Fskills\u002Fmemory\u002FSKILL.md",[64],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"agents\u002Fopenai.yaml","REFERENCE","参考文档",43,"https:\u002F\u002Fgithub.com\u002Fjstoup111\u002Fai-conductor\u002Fblob\u002Fmain\u002Fskills\u002Fmemory\u002Fagents\u002Fopenai.yaml",[71,90,128,151,169,185],{"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":37},"01M70YKSA2H7Q9WSRD1ECEGY20","build-review-dependency-hygiene","Judge whether a feature diff adds unnecessary, insufficiently pinned, or license-incompatible dependencies.","https:\u002F\u002Fgithub.com\u002Fjstoup111\u002Fai-conductor\u002Fblob\u002Fmain\u002Fskills\u002Fbuild-review-dependency-hygiene\u002FSKILL.md",[],[78,79,80,81,82,83,84,85,86,87,21,88,89],"build","dependency hygiene","dependency","hygiene","build review dependency hygiene","review","feature","diff","dependencies","license","judge","gating",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":109,"publishedAt":37},"01M6K3EQQ6ADH3G2RMYK6XE26E","writing-system-tests","Use BEFORE implementing any feature that has stories in .docs\u002Fstories\u002F — generates failing acceptance specs from acceptance criteria as the RED phase of TDD. Generates HTTP\u002Frequest-level acceptance tests for headless\u002FAPI projects, end-to-end UI tests for projects with a frontend, using the project's own test framework and directory conventions.","https:\u002F\u002Fgithub.com\u002Fjstoup111\u002Fai-conductor\u002Fblob\u002Fmain\u002Fskills\u002Fwriting-system-tests\u002FSKILL.md",[96,101,104],{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":102,"categoryName":103,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[110,111,112,113,114,115,26,116,117,118,119,120,121,122,123,124,125,89,126,127],"writing","system","tests","writing system tests","projects","headless","end","implementing","frontend","acceptance","api","claims","directory","ui","framework","failing","phase","request",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":37},"01M6K3EHR0QQ1QY1S9RC6D1WTD","verify-claims","Use only when an active workflow is about to rely on a nontrivial factual claim or assumption for a spec, plan, ADR, finding, or code decision. Do not invoke for casual questions, status reports, restatements, or trivially verifiable mechanics.","https:\u002F\u002Fgithub.com\u002Fjstoup111\u002Fai-conductor\u002Fblob\u002Fmain\u002Fskills\u002Fverify-claims\u002FSKILL.md",[],[135,121,136,137,138,139,140,141,21,142,143,19,36,144,145,146,28,147,148,149,150,89,20],"verify claims","verify","do","adr","for","decision","claim","mechanics","only","code","reports","plan","questions","about","spec","invoke",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":37},"01M6K3ED4NF5DJA2Y35MH2JCRC","tdd","Use when implementing any feature or bugfix. Five-step cycle: RED → DOMAIN → GREEN → DOMAIN → COMMIT. Enforces test-first development with domain integrity review at every phase boundary.","https:\u002F\u002Fgithub.com\u002Fjstoup111\u002Fai-conductor\u002Fblob\u002Fmain\u002Fskills\u002Ftdd\u002FSKILL.md",[],[153,158,159,160,117,161,83,162,163,164,165,84,166,21,19,23,167,168,20,126],"green","cycle","structural","commit","at","bugfix","integrity","domain","development","test","test-first",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":37},"01M6K3E6PEXBXYY2K8TSRTN1JT","stories","Use only within active engineer\u002Fconduct DECIDE after architecture approval, when a committed `.docs\u002Fstories` acceptance artifact is required. Do not invoke for general user-story examples, requirements discussion, or direct implementation requests.","https:\u002F\u002Fgithub.com\u002Fjstoup111\u002Fai-conductor\u002Fblob\u002Fmain\u002Fskills\u002Fstories\u002FSKILL.md",[],[171,176,137,139,177,178,179,21,143,19,119,180,181,182,121,183,136,22,28,184,150,89,20],"conduct","decide","engineer","general","requirements","architecture","examples","artifact","implementation",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":191,"publishedAt":37},"01M6K3E1HE7267YKFJQ3YFCGW5","stack-land","Use when an operator needs to land reviewed manual changes on the correct closed child of a stacked feature. Operator-invoked only: inspect ownership, propose the safe child with evidence, and require confirmation before opening the landing.","https:\u002F\u002Fgithub.com\u002Fjstoup111\u002Fai-conductor\u002Fblob\u002Fmain\u002Fskills\u002Fstack-land\u002FSKILL.md",[],[192,193,194,23,121,195,196,197,136,84,198,199,200,201,202,21,33,143,19,203,20,27],"stack","land","stack land","evidence","child","changes","inspect","manual","correct","landing","safe","confirmation"]