[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P8S7F1NYMKD9PW2RGZ0B2P":3,"skill-same:01M6P8S7F1NYMKD9PW2RGZ0B2P":61},{"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":28,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":44,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M6P8S7F1NYMKD9PW2RGZ0B2P","writing-tests",null,"Instructions and hints for writing tests.","chattocorp\u002Fchatto","chattocorp","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F261891647?v=4","01M6P8ECJF78VVQ1TJBW2JAWQ8","ChattoCorp GmbH","01M6P8ECPWHQVQBB8XNCRR70B9",2928,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-tests\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[29,30,31,32,33],"writing","writing tests","tests","instructions","for","2026-11-10 10:12:30",false,"---\nname: \"writing-tests\"\ndescription: \"Instructions and hints for writing tests.\"\n---\n\n## Testing Judgment\n\n- Pick the lowest test layer that exercises the change, but do not stop below\n  the layer where the bug could occur.\n- When testing an early rejection, use input that would fail a later check. The\n  test should still return the early error.\n- Choose additional integration or end-to-end coverage when the regression can\n  occur only across component or process boundaries.\n\n## Projection Refactors\n\nA change to projection memory layout or storage must keep behavior equal to\nthe target branch. Use these checks in addition to unit tests:\n\n- Replay a copied EVT store (`CHATTO_BENCH_EVT_STORE_DIR`) into the target\n  branch and the changed branch. Compare the snapshot bytes of each changed\n  projection.\n- Restore the snapshot of the target branch in the changed branch. Snapshot\n  the restored projection again and compare the bytes.\n- Compare one digest of all read results over the real data, both live and\n  after the restore. Put only values into the digest. Do not format pointers\n  or protobuf messages with `%v`; marshal protobuf messages deterministically.\n- Run the digest twice on the target branch before you compare. A different\n  result shows a harness defect, not a regression.\n- Call `CompleteStartupReplay` before you measure retained heap. Replay guards\n  keep event IDs until replay completes.\n- Compare timings in interleaved runs of the two branches. Another load, such\n  as a test run, can change a single measurement.\n- Keep the copied store in `.context\u002F` and delete it after use. It contains\n  real user data.\n","## Testing Judgment\n\n- Pick the lowest test layer that exercises the change, but do not stop below\n  the layer where the bug could occur.\n- When testing an early rejection, use input that would fail a later check. The\n  test should still return the early error.\n- Choose additional integration or end-to-end coverage when the regression can\n  occur only across component or process boundaries.\n\n## Projection Refactors\n\nA change to projection memory layout or storage must keep behavior equal to\nthe target branch. Use these checks in addition to unit tests:\n\n- Replay a copied EVT store (`CHATTO_BENCH_EVT_STORE_DIR`) into the target\n  branch and the changed branch. Compare the snapshot bytes of each changed\n  projection.\n- Restore the snapshot of the target branch in the changed branch. Snapshot\n  the restored projection again and compare the bytes.\n- Compare one digest of all read results over the real data, both live and\n  after the restore. Put only values into the digest. Do not format pointers\n  or protobuf messages with `%v`; marshal protobuf messages deterministically.\n- Run the digest twice on the target branch before you compare. A different\n  result shows a harness defect, not a regression.\n- Call `CompleteStartupReplay` before you measure retained heap. Replay guards\n  keep event IDs until replay completes.\n- Compare timings in interleaved runs of the two branches. Another load, such\n  as a test run, can change a single measurement.\n- Keep the copied store in `.context\u002F` and delete it after use. It contains\n  real user data.\n",{"name":5,"description":7},"main","d3d21f4a4fb6c1315aa62df97a6cb6617680af95",".agents\u002Fskills\u002Fwriting-tests",150,"https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto","https:\u002F\u002Fchatto.run","https:\u002F\u002Fgithub.com\u002Fchattocorp","2026-11-12 04:28:06",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add chattocorp\u002Fchatto --skill writing-tests",{"tool":53,"command":54},"bunx","bunx skills add chattocorp\u002Fchatto --skill writing-tests",{"tool":56,"command":57},"pnpm","pnpm dlx skills add chattocorp\u002Fchatto --skill writing-tests","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-tests\u002FSKILL.md",true,[],[62,81,97,121,147,173],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":71,"publishedAt":34},"01M6P8S131Q068WC04FS0YW3RR","update-project-dependencies","Update Chatto Go and frontend dependencies within their compatible version ranges, then run tests.","https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fupdate-project-dependencies\u002FSKILL.md",[68],{"categoryNo":69,"categoryName":70,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[72,73,74,75,76,31,77,78,79,80],"update","dependencies","project","update project dependencies","go","version","run","run tests","frontend",{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":34},"01M6P8RERB7E3KYD4PW98D94SR","svelte-docs","Look up official Svelte, SvelteKit, and Svelte CLI documentation.","https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsvelte-docs\u002FSKILL.md",[],[88,89,90,91,92,93,94,95,96],"docs","svelte","svelte docs","cli","official","look","up","sveltekit","documentation",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":34},"01M6P8RA0PS8DFAR8GXMB1CBFN","svelte-core-bestpractices","Guidance on writing fast, robust, modern Svelte code. Load this skill whenever in a Svelte project and asked to write\u002Fedit or analyze a Svelte component or module. Covers reactivity, event handling, styling, integration with libraries and more.","https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsvelte-core-bestpractices\u002FSKILL.md",[],[89,104,105,74,106,107,108,109,110,111,112,113,114,115,116,117,118,119,29,120],"core","svelte core bestpractices","load","more","with","event","module","guidance","styling","edit","write","analyze","fast","integration","libraries","component","code",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":133,"publishedAt":34},"01M6P8R685PAMMR1DD530NGY40","svelte-code-writer","CLI tools for Svelte 5 documentation lookup and code analysis. MUST be used whenever creating, editing or analyzing any Svelte component (.svelte) or Svelte module (.svelte.ts\u002F.svelte.js). If possible, this skill should be executed within the svelte-file-editor agent for optimal results.","https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsvelte-code-writer\u002FSKILL.md",[127,130],{"categoryNo":128,"categoryName":129,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":131,"categoryName":132,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师",[120,89,134,135,136,96,119,137,91,138,33,139,110,140,141,142,143,144,145,146],"svelte code writer","writer","file","editor","analyzing","code analysis","svelte 5","results","editing","js","documentation lookup","analysis","Tools",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":34},"01M6P8QN03VSSHF538WV0E701T","session-wrap-up","Review a completed, paused, or blocked coding-agent session to identify friction, mistakes, near misses, missing context, and opportunities to improve future work. Use when the user asks to wrap up, run a retrospective, explain what issues the agent faced, capture lessons learned, or recommend improvements to repository instructions, documentation, skills, tooling, tests, or workflows. Produce an evidence-based, propose-only report; do not apply follow-up changes unless the user asks.","https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsession-wrap-up\u002FSKILL.md",[],[154,94,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,96,78],"session","session wrap","wrap","session wrap up","wrap up","review","workflows","recommend","repository","agent session","when","near","follow-up","learned","improve","Coding-Agent","work","only","issues",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":180,"publishedAt":34},"01M6P8QHHWYSRZM2H4CEGND1GB","pr-tour","A skill that provides a guided tour of a pull request, highlighting key changes, walking the developer through the code, and explaining the purpose of each modification.","https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpr-tour\u002FSKILL.md",[179],{"categoryNo":131,"categoryName":132,"taxonomyType":26,"taxonomyTypeDesc":27},[181,182,183,184,120,185,186,187,188],"pr","pr tour","tour","pull request","pull","developer","request","changes"]