[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P8M2VFAMCESZCMHD2QRVEJ":3,"skill-same:01M6P8M2VFAMCESZCMHD2QRVEJ":71},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M6P8M2VFAMCESZCMHD2QRVEJ","chatto-frontend-review",null,"Review Chatto frontend implementation quality, including Svelte reactivity and lifecycle, component boundaries, design-system reuse, and unnecessary complexity. Use for every review that includes apps\u002Ffrontend, including self-review, branch or PR review, and frontend architecture review.","chattocorp\u002Fchatto","chattocorp","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F261891647?v=4","01M6P8ECJF78VVQ1TJBW2JAWQ8","ChattoCorp GmbH","01M6P8ECPWHQVQBB8XNCRR70B9",2908,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fchatto-frontend-review\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,42,43],"chatto frontend review","review","frontend","system","for","reuse","apps","svelte","self","complexity","use","branch","lifecycle","frontend architecture","architecture review","pr","pr review","architecture","component","design","2026-11-10 10:12:30",false,"---\nname: chatto-frontend-review\ndescription: Review Chatto frontend implementation quality, including Svelte reactivity and lifecycle, component boundaries, design-system reuse, and unnecessary complexity. Use for every review that includes apps\u002Ffrontend, including self-review, branch or PR review, and frontend architecture review.\n---\n\n# Chatto Frontend Review\n\nReview the requested scope, including uncommitted changes when applicable.\nRead [frontend instructions](..\u002F..\u002F..\u002Fapps\u002Ffrontend\u002FAGENTS.md) and trace\nchanged behavior through its callers. Apply these rules before declaring the\nreview complete. Passing tests or the Svelte analyser do not replace this review.\n\nFocus on frontend implementation quality: Svelte patterns, component boundaries,\ndesign-system consistency, shared UI reuse, and simplicity. Check behavior where\nthese choices affect it. Leave broader application, API, and persistence\ncorrectness to the general code review. A change being in a Svelte file does not\nmake every correctness concern part of this review.\n\n## Rules\n\n1. **Use existing event handlers.** Before adding an effect or lifecycle hook,\n   check whether an existing handler can perform the action. For example, handle\n   a new notification in the notification-update handler, rather than watching\n   notification state with `$effect`.\n2. **Derive values; do not synchronize copies.** Use `$derived` for computed\n   state. Do not use `$effect` to copy state, calculate values, or initiate a\n   business operation that belongs in an event handler.\n3. **Avoid new `$effect` calls.** Require a concrete need to synchronize with\n   an external system and evidence that existing handlers cannot own the work.\n   Check dependencies, repeated execution, and cleanup.\n4. **Avoid `untrack`.** Do not use it to hide dependencies, stop a feedback\n   loop, or make an effect run only once. Fix the data flow. An intentional\n   snapshot must explain why later changes must not affect its consumer.\n   A hook or component that calls an owner's callback from its own effect can\n   call it inside `untrack`, with a comment. The callback's reads belong to\n   the owner, not to the effect. Prefer an effect that calls no callbacks.\n5. **Avoid mount and unmount hooks for business behavior.** `onMount`,\n   `onDestroy`, and effect cleanup are for resources whose lifetime belongs to\n   the component. Do not use them to mark data read, save changes, or trigger\n   requests merely because a component appears or disappears. Prefer existing\n   owners for subscriptions and timers; use Svelte window\u002Fdocument handlers\n   for browser events.\n6. **Do not move the same problem into a wrapper.** An attachment, headless\n   component, hook, reactive class, or keyed remount is not a valid fix merely\n   because it hides `$effect`, `untrack`, or `onMount`. The actual trigger and\n   owner must be correct. Genuine DOM\u002Flibrary setup and cleanup are valid\n   lifecycle work; explain why the chosen lifetime is required.\n7. **Keep component and state boundaries clear.** Keep reusable UI separate\n   from screen-specific behavior. Avoid copied server state and extra flags or\n   collections when existing state suffices. Keep rendering, derived expressions,\n   and template helpers free of mutations. Use\n   [chatto-client-placement](..\u002Fchatto-client-placement\u002FSKILL.md) when frontend\n   code appears to own client responsibilities.\n8. **Check component transitions and cleanup.** Check whether prop changes,\n   navigation, focus changes, or disposal cause stale closures, duplicate\n   subscriptions, repeated effects, or missing cleanup. A callback that a hook\n   calls from an effect adds its reads to the dependencies of that effect.\n   Tests should exercise these frontend integration points. Do not use this\n   rule to redefine the application's retry, pagination, or persistence policy.\n9. **Follow the design system.** User-facing changes must fit the existing\n   design system. Reuse shared Tailwind utilities and Svelte components where\n   possible. If the change needs a new utility, component, or design-system\n   rule, tell the user what is needed and why.\n10. **Look for nearby simplifications.** Review the changed code and the code\n    it works with for duplication, unnecessary state, and avoidable complexity.\n    Suggest concrete simplifications that help the current change. Keep broader\n    refactors as separate suggestions.\n11. **Check the layout at wide and small viewport sizes.** For page layout\n    changes, inspect the rendered page at a wide desktop size and a narrow,\n    short viewport. Use the user's reported size when available. Check alignment\n    against the intended container, text wrapping, and access to the first and\n    last controls when content overflows. Review screenshots for defects;\n    capturing them alone does not verify the layout.\n12. **Exercise browser navigation for screen and step changes.** Check Back,\n    Forward, reload, and direct entry to the relevant URL in the browser.\n    Confirm the expected screen, focus, and draft retention or clearing. A\n    component test that clicks forward does not establish history behavior.\n    Use the URL for navigable screens and steps; reserve component-local state\n    for interactions that do not need a history entry.\n\n## Findings\n\nFor each finding, give the file and line, the rule, the concrete consequence,\nand the simpler existing integration point when one exists. Review each new or\nchanged `$effect`, `untrack`, and lifecycle hook explicitly; report unjustified\nuses as findings. Do not demand changes to unrelated existing uses.\n\nCheck findings against the user's requirements and accepted design decisions.\nSeparate defects from optional simplifications. If you notice a broader\ncorrectness issue, report it separately as an incidental finding with evidence\nand any uncertainty; do not expand this review into a general correctness audit.\n\nReport findings in severity order, followed by checks run and remaining gaps.\nIf there are no findings, state the reviewed scope. For review-only requests,\ndo not edit files. This skill does not require or authorize subagents.\n","# Chatto Frontend Review\n\nReview the requested scope, including uncommitted changes when applicable.\nRead [frontend instructions](..\u002F..\u002F..\u002Fapps\u002Ffrontend\u002FAGENTS.md) and trace\nchanged behavior through its callers. Apply these rules before declaring the\nreview complete. Passing tests or the Svelte analyser do not replace this review.\n\nFocus on frontend implementation quality: Svelte patterns, component boundaries,\ndesign-system consistency, shared UI reuse, and simplicity. Check behavior where\nthese choices affect it. Leave broader application, API, and persistence\ncorrectness to the general code review. A change being in a Svelte file does not\nmake every correctness concern part of this review.\n\n## Rules\n\n1. **Use existing event handlers.** Before adding an effect or lifecycle hook,\n   check whether an existing handler can perform the action. For example, handle\n   a new notification in the notification-update handler, rather than watching\n   notification state with `$effect`.\n2. **Derive values; do not synchronize copies.** Use `$derived` for computed\n   state. Do not use `$effect` to copy state, calculate values, or initiate a\n   business operation that belongs in an event handler.\n3. **Avoid new `$effect` calls.** Require a concrete need to synchronize with\n   an external system and evidence that existing handlers cannot own the work.\n   Check dependencies, repeated execution, and cleanup.\n4. **Avoid `untrack`.** Do not use it to hide dependencies, stop a feedback\n   loop, or make an effect run only once. Fix the data flow. An intentional\n   snapshot must explain why later changes must not affect its consumer.\n   A hook or component that calls an owner's callback from its own effect can\n   call it inside `untrack`, with a comment. The callback's reads belong to\n   the owner, not to the effect. Prefer an effect that calls no callbacks.\n5. **Avoid mount and unmount hooks for business behavior.** `onMount`,\n   `onDestroy`, and effect cleanup are for resources whose lifetime belongs to\n   the component. Do not use them to mark data read, save changes, or trigger\n   requests merely because a component appears or disappears. Prefer existing\n   owners for subscriptions and timers; use Svelte window\u002Fdocument handlers\n   for browser events.\n6. **Do not move the same problem into a wrapper.** An attachment, headless\n   component, hook, reactive class, or keyed remount is not a valid fix merely\n   because it hides `$effect`, `untrack`, or `onMount`. The actual trigger and\n   owner must be correct. Genuine DOM\u002Flibrary setup and cleanup are valid\n   lifecycle work; explain why the chosen lifetime is required.\n7. **Keep component and state boundaries clear.** Keep reusable UI separate\n   from screen-specific behavior. Avoid copied server state and extra flags or\n   collections when existing state suffices. Keep rendering, derived expressions,\n   and template helpers free of mutations. Use\n   [chatto-client-placement](..\u002Fchatto-client-placement\u002FSKILL.md) when frontend\n   code appears to own client responsibilities.\n8. **Check component transitions and cleanup.** Check whether prop changes,\n   navigation, focus changes, or disposal cause stale closures, duplicate\n   subscriptions, repeated effects, or missing cleanup. A callback that a hook\n   calls from an effect adds its reads to the dependencies of that effect.\n   Tests should exercise these frontend integration points. Do not use this\n   rule to redefine the application's retry, pagination, or persistence policy.\n9. **Follow the design system.** User-facing changes must fit the existing\n   design system. Reuse shared Tailwind utilities and Svelte components where\n   possible. If the change needs a new utility, component, or design-system\n   rule, tell the user what is needed and why.\n10. **Look for nearby simplifications.** Review the changed code and the code\n    it works with for duplication, unnecessary state, and avoidable complexity.\n    Suggest concrete simplifications that help the current change. Keep broader\n    refactors as separate suggestions.\n11. **Check the layout at wide and small viewport sizes.** For page layout\n    changes, inspect the rendered page at a wide desktop size and a narrow,\n    short viewport. Use the user's reported size when available. Check alignment\n    against the intended container, text wrapping, and access to the first and\n    last controls when content overflows. Review screenshots for defects;\n    capturing them alone does not verify the layout.\n12. **Exercise browser navigation for screen and step changes.** Check Back,\n    Forward, reload, and direct entry to the relevant URL in the browser.\n    Confirm the expected screen, focus, and draft retention or clearing. A\n    component test that clicks forward does not establish history behavior.\n    Use the URL for navigable screens and steps; reserve component-local state\n    for interactions that do not need a history entry.\n\n## Findings\n\nFor each finding, give the file and line, the rule, the concrete consequence,\nand the simpler existing integration point when one exists. Review each new or\nchanged `$effect`, `untrack`, and lifecycle hook explicitly; report unjustified\nuses as findings. Do not demand changes to unrelated existing uses.\n\nCheck findings against the user's requirements and accepted design decisions.\nSeparate defects from optional simplifications. If you notice a broader\ncorrectness issue, report it separately as an incidental finding with evidence\nand any uncertainty; do not expand this review into a general correctness audit.\n\nReport findings in severity order, followed by checks run and remaining gaps.\nIf there are no findings, state the reviewed scope. For review-only requests,\ndo not edit files. This skill does not require or authorize subagents.\n",{"name":5,"description":7},"main","d3d21f4a4fb6c1315aa62df97a6cb6617680af95",".agents\u002Fskills\u002Fchatto-frontend-review",143,"https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto","https:\u002F\u002Fchatto.run","https:\u002F\u002Fgithub.com\u002Fchattocorp","2026-11-11 01:06:23",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add chattocorp\u002Fchatto --skill chatto-frontend-review",{"tool":63,"command":64},"bunx","bunx skills add chattocorp\u002Fchatto --skill chatto-frontend-review",{"tool":66,"command":67},"pnpm","pnpm dlx skills add chattocorp\u002Fchatto --skill chatto-frontend-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fchatto-frontend-review\u002FSKILL.md",true,[],[72,91,107,122,145,171],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":86,"publishedAt":44},"01M6P8S7F1NYMKD9PW2RGZ0B2P","writing-tests","Instructions and hints for writing tests.","https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-tests\u002FSKILL.md",[78,81],{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[87,88,89,90,28],"writing","writing tests","tests","instructions",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":98,"publishedAt":44},"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",[97],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[99,100,101,102,26,103,104,105,106,89],"dependencies","update","project","update project dependencies","go","run tests","run","version",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":44},"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",[],[31,114,115,116,117,118,119,120,121],"svelte docs","docs","look","cli","official","documentation","sveltekit","up",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":44},"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",[],[31,129,130,131,132,133,101,134,135,136,137,138,139,140,42,141,142,143,87,144],"svelte core bestpractices","core","with","event","module","guidance","styling","edit","write","analyze","more","load","integration","code","libraries","fast",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":157,"publishedAt":44},"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",[151,154],{"categoryNo":152,"categoryName":153,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":155,"categoryName":156,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000030","开发工程师",[142,158,31,159,42,160,117,119,161,28,162,133,163,164,165,166,167,168,169,170],"svelte code writer","writer","editor","svelte 5","code analysis","results","editing","js","documentation lookup","analysis","Tools","analyzing","file",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":177,"publishedAt":44},"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",[],[178,179,121,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,105,119,195,25],"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"]