[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P8MNTJ73NMGS2VGJZPG8SY":3,"skill-same:01M6P8MNTJ73NMGS2VGJZPG8SY":69},{"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":23,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":52,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6P8MNTJ73NMGS2VGJZPG8SY","chatto-i18n-hygiene",null,"Audit and clean up Chatto frontend internationalisation, including catalog integrity, untranslated UI text, regional overrides, locale formatting, and RTL behavior. Use for an i18n hygiene pass or a focused translation audit.","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\u002Fchatto-i18n-hygiene\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"chatto i18n hygiene","hygiene","i18n","clean","overrides","for","locale","formatting","translation","frontend","up","use","catalog","behavior","text","integrity","ui","audit","2026-11-10 10:12:30",false,"---\nname: chatto-i18n-hygiene\ndescription: Audit and clean up Chatto frontend internationalisation, including catalog integrity, untranslated UI text, regional overrides, locale formatting, and RTL behavior. Use for an i18n hygiene pass or a focused translation audit.\n---\n\n# Chatto i18n Hygiene\n\nKeep Chatto messages complete, consistent, and correct at their call sites.\nScope this workflow to `apps\u002Ffrontend\u002F`. Authling and Runling are independent\nproducts. Inspect `packages\u002Ftranslatto\u002F` only when a finding concerns the shared\nruntime; keep Chatto policy out of that package.\n\n## Establish scope\n\nRead `apps\u002Ffrontend\u002FAGENTS.md`, especially **Internationalization**, and\n`docs\u002Fadr\u002FADR-065-runtime-json-client-internationalization.md`. Use\n`docs\u002FGLOSSARY.md` for product terms. Follow the frontend-review and Svelte\nskills when reviewing components.\n\nUse the user's requested scope. With no narrower scope, check all catalogs\nand scan production frontend source. State which surfaces received manual\nreview. An audit request is read-only. A cleanup request permits focused fixes\nto confirmed defects; do not rewrite translations merely for style.\n\n## Run existing checks\n\nFrom the repository root:\n\n```sh\nmise x -- pnpm --filter chatto-frontend exec vitest run --project server src\u002Flib\u002Fi18n\n```\n\nRead the tests before interpreting their results. `catalogs.spec.ts` checks\nliteral message keys, complete catalog structure, placeholders, regional\noverlays, copied multi-word English, and functional examples. Other tests in\nthis directory cover locale selection, direction, loading, and message output.\nPassing checks do not prove translation quality or complete call-site coverage.\n\n## Inspect catalogs\n\n- Derive the base locale, selectable locales, and sparse overlays from\n  `src\u002Flib\u002Fi18n\u002Flocales.ts`; do not infer completeness from a regional tag.\n- Check every JSON file under `apps\u002Ffrontend\u002Fmessages\u002F` for empty values and\n  duplicate object keys. Ordinary JSON parsing silently discards duplicate\n  keys. Preserve catalog structure and placeholder names and multiplicity.\n- Compare sparse overrides with their configured fallback. Report redundant\n  overrides, and check missing regional spelling differences. Do not fill a\n  sparse overlay with a copy of its fallback.\n- Inspect copied one-word English and all plural branches as well as messages\n  covered by tests. Brand names, protocol tokens, and valid shared terms can\n  be identical. Add an `identicalTranslations.ts` exception only when the text\n  is correct for that key and locale; never use exceptions to hide missing work.\n- Follow the form of address in the frontend instructions. Check German\n  `du`\u002F`dein`, Swiss spelling, British source spelling, and US overrides.\n  Keep functional tokens such as `DELETE` and syntax examples valid.\n- Check plural categories against the target language, not English's branch\n  set. Preserve `other` and numeric `count` arguments. Use complete messages\n  with placeholders instead of concatenating translated fragments.\n\n## Inspect production call sites\n\nUse `rg` to find candidates, then read their context. Exclude fixture text,\nstories, test harnesses, documentation examples, logs, user content, and\ndeliberately literal identifiers before reporting untranslated copy.\n\nCheck visible text, accessibility names, tooltips, placeholders, validation,\ntoasts, empty states, errors, and confirmation dialogs. Trace dynamic keys and\naliases: the literal-key test cannot prove that each runtime key exists.\nDo not delete apparently unused keys until dynamic callers are ruled out.\n\nCheck that locale changes update rendered labels, dates, numbers, and lists.\nLook for fixed locales, early translation snapshots, and locale-independent\nformatting of user-visible values. Preserve deliberate technical formats.\nCheck logical layout edges, directional icons, gestures, and bidi isolation.\nReview HTML messages only through the existing sanitizing boundary.\n\nInspect `catalogSections.js` and catalog loaders when a key crosses surfaces.\nChat messages must not depend on management-only catalogs. Do not make all\ncatalogs eager to fix a missing translation.\n\n## Fix and verify\n\nFor authorized fixes, update the British source and all complete locales when\nthe message contract changes. Add regional overrides only where needed. Keep\nuncertain linguistic findings separate from confirmed defects.\n\nRun the focused i18n suite again after fixes. Run type checks and relevant\ncomponent tests for changed call sites. For catalog-loading or chunk changes,\nrun the frontend build, which includes `check:i18n`; the chunk check needs a\ncurrent production build. Use `e2e\u002Ftranslation-loading.test.ts` for relevant\nnavigation and loading regressions.\n\nFor visible behavior changes, use the user's browser tool preference to verify\nthe affected surface in the source locale, the affected locale, and an RTL\nlocale when direction matters. Check locale switching and narrow-screen text\nwrapping. Use `mise dev` when a server is needed and stop it afterward.\nIf browser verification is unavailable, state the gap.\n\nReport confirmed findings with paths, message keys, affected locales, and user\nimpact. Separate fixes, remaining findings, and optional improvements. Include\nthe commands run and the limits of automated and manual coverage. Do not claim\nthat every translation is linguistically correct from structural tests alone.\n","# Chatto i18n Hygiene\n\nKeep Chatto messages complete, consistent, and correct at their call sites.\nScope this workflow to `apps\u002Ffrontend\u002F`. Authling and Runling are independent\nproducts. Inspect `packages\u002Ftranslatto\u002F` only when a finding concerns the shared\nruntime; keep Chatto policy out of that package.\n\n## Establish scope\n\nRead `apps\u002Ffrontend\u002FAGENTS.md`, especially **Internationalization**, and\n`docs\u002Fadr\u002FADR-065-runtime-json-client-internationalization.md`. Use\n`docs\u002FGLOSSARY.md` for product terms. Follow the frontend-review and Svelte\nskills when reviewing components.\n\nUse the user's requested scope. With no narrower scope, check all catalogs\nand scan production frontend source. State which surfaces received manual\nreview. An audit request is read-only. A cleanup request permits focused fixes\nto confirmed defects; do not rewrite translations merely for style.\n\n## Run existing checks\n\nFrom the repository root:\n\n```sh\nmise x -- pnpm --filter chatto-frontend exec vitest run --project server src\u002Flib\u002Fi18n\n```\n\nRead the tests before interpreting their results. `catalogs.spec.ts` checks\nliteral message keys, complete catalog structure, placeholders, regional\noverlays, copied multi-word English, and functional examples. Other tests in\nthis directory cover locale selection, direction, loading, and message output.\nPassing checks do not prove translation quality or complete call-site coverage.\n\n## Inspect catalogs\n\n- Derive the base locale, selectable locales, and sparse overlays from\n  `src\u002Flib\u002Fi18n\u002Flocales.ts`; do not infer completeness from a regional tag.\n- Check every JSON file under `apps\u002Ffrontend\u002Fmessages\u002F` for empty values and\n  duplicate object keys. Ordinary JSON parsing silently discards duplicate\n  keys. Preserve catalog structure and placeholder names and multiplicity.\n- Compare sparse overrides with their configured fallback. Report redundant\n  overrides, and check missing regional spelling differences. Do not fill a\n  sparse overlay with a copy of its fallback.\n- Inspect copied one-word English and all plural branches as well as messages\n  covered by tests. Brand names, protocol tokens, and valid shared terms can\n  be identical. Add an `identicalTranslations.ts` exception only when the text\n  is correct for that key and locale; never use exceptions to hide missing work.\n- Follow the form of address in the frontend instructions. Check German\n  `du`\u002F`dein`, Swiss spelling, British source spelling, and US overrides.\n  Keep functional tokens such as `DELETE` and syntax examples valid.\n- Check plural categories against the target language, not English's branch\n  set. Preserve `other` and numeric `count` arguments. Use complete messages\n  with placeholders instead of concatenating translated fragments.\n\n## Inspect production call sites\n\nUse `rg` to find candidates, then read their context. Exclude fixture text,\nstories, test harnesses, documentation examples, logs, user content, and\ndeliberately literal identifiers before reporting untranslated copy.\n\nCheck visible text, accessibility names, tooltips, placeholders, validation,\ntoasts, empty states, errors, and confirmation dialogs. Trace dynamic keys and\naliases: the literal-key test cannot prove that each runtime key exists.\nDo not delete apparently unused keys until dynamic callers are ruled out.\n\nCheck that locale changes update rendered labels, dates, numbers, and lists.\nLook for fixed locales, early translation snapshots, and locale-independent\nformatting of user-visible values. Preserve deliberate technical formats.\nCheck logical layout edges, directional icons, gestures, and bidi isolation.\nReview HTML messages only through the existing sanitizing boundary.\n\nInspect `catalogSections.js` and catalog loaders when a key crosses surfaces.\nChat messages must not depend on management-only catalogs. Do not make all\ncatalogs eager to fix a missing translation.\n\n## Fix and verify\n\nFor authorized fixes, update the British source and all complete locales when\nthe message contract changes. Add regional overrides only where needed. Keep\nuncertain linguistic findings separate from confirmed defects.\n\nRun the focused i18n suite again after fixes. Run type checks and relevant\ncomponent tests for changed call sites. For catalog-loading or chunk changes,\nrun the frontend build, which includes `check:i18n`; the chunk check needs a\ncurrent production build. Use `e2e\u002Ftranslation-loading.test.ts` for relevant\nnavigation and loading regressions.\n\nFor visible behavior changes, use the user's browser tool preference to verify\nthe affected surface in the source locale, the affected locale, and an RTL\nlocale when direction matters. Check locale switching and narrow-screen text\nwrapping. Use `mise dev` when a server is needed and stop it afterward.\nIf browser verification is unavailable, state the gap.\n\nReport confirmed findings with paths, message keys, affected locales, and user\nimpact. Separate fixes, remaining findings, and optional improvements. Include\nthe commands run and the limits of automated and manual coverage. Do not claim\nthat every translation is linguistically correct from structural tests alone.\n",{"name":5,"description":7},"main","d3d21f4a4fb6c1315aa62df97a6cb6617680af95",".agents\u002Fskills\u002Fchatto-i18n-hygiene",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":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add chattocorp\u002Fchatto --skill chatto-i18n-hygiene",{"tool":61,"command":62},"bunx","bunx skills add chattocorp\u002Fchatto --skill chatto-i18n-hygiene",{"tool":64,"command":65},"pnpm","pnpm dlx skills add chattocorp\u002Fchatto --skill chatto-i18n-hygiene","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fchatto-i18n-hygiene\u002FSKILL.md",true,[],[70,89,105,120,144,170],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":84,"publishedAt":42},"01M6P8S7F1NYMKD9PW2RGZ0B2P","writing-tests","Instructions and hints for writing tests.","https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-tests\u002FSKILL.md",[76,79],{"categoryNo":77,"categoryName":78,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[85,86,87,88,29],"writing","writing tests","tests","instructions",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":96,"publishedAt":42},"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",[95],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[97,98,99,100,33,101,102,103,104,87],"dependencies","update","project","update project dependencies","go","run tests","run","version",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":42},"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",[],[112,113,114,115,116,117,118,119,34],"svelte","svelte docs","docs","look","cli","official","documentation","sveltekit",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":42},"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",[],[112,127,128,129,130,131,99,132,133,134,135,136,137,138,139,140,141,142,85,143],"svelte core bestpractices","core","with","event","module","guidance","styling","edit","write","analyze","more","load","component","integration","code","libraries","fast",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":156,"publishedAt":42},"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",[150,153],{"categoryNo":151,"categoryName":152,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":154,"categoryName":155,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000030","开发工程师",[141,157,112,158,139,159,116,118,160,29,161,131,162,163,164,165,166,167,168,169],"svelte code writer","writer","editor","svelte 5","code analysis","results","editing","js","documentation lookup","analysis","Tools","analyzing","file",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":42},"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",[],[177,178,34,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,103,118,194,195],"wrap","session wrap","session","session wrap up","wrap up","Coding-Agent","agent session","when","recommend","near","follow-up","learned","only","work","improve","repository","issues","workflows","review"]