[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P8KBJVWQAFPB23NRC2BAJ1":3,"skill-same:01M6P8KBJVWQAFPB23NRC2BAJ1":76},{"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":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M6P8KBJVWQAFPB23NRC2BAJ1","chatto-client-placement",null,"Decide whether Chatto client code goes into `@chatto\u002Fclient` (packages\u002Fchatto-client) or the bundled frontend (apps\u002Ffrontend). Use before you add a request, store, state, helper, or protocol rule to either, or when you move code between them.","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-client-placement\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"chatto client placement","client","add","when","request","goes","you","move","helper","store","rule","frontend","apps","either","use","decide","protocol","state","code","packages","2026-11-10 10:12:30",false,"---\nname: \"chatto-client-placement\"\ndescription: \"Decide whether Chatto client code goes into `@chatto\u002Fclient` (packages\u002Fchatto-client) or the bundled frontend (apps\u002Ffrontend). Use before you add a request, store, state, helper, or protocol rule to either, or when you move code between them.\"\n---\n\n# Placement of Chatto Client Code\n\n`@chatto\u002Fclient` is the one Chatto client (ADR-111). The bundled frontend,\nChattoBot, and third-party bots and frontends use it. The frontend uses the\nclient. The client never calls into the frontend.\n\n## Decision Procedure\n\nAsk these questions in sequence. Stop at the first \"yes\".\n\n1. **Does it show something to a person?** Translated text, toasts, sounds,\n   routes, components, layout, or Svelte context: put it in the frontend.\n2. **Does it talk to a server or keep server data?** Requests, sessions and\n   tokens, realtime delivery, server and room data, the operations on this\n   data, or a privacy or authorization boundary: put it in the client.\n   Exception: the requests on the\n   [Allowed Frontend API Modules](#allowed-frontend-api-modules) list stay in\n   the frontend.\n3. **Does it encode a protocol fact?** A token format in a message body,\n   mention rules, the permission structure, or validation that mirrors the\n   server: put it in the client, also when only the frontend uses it now. The\n   frontend keeps only the display part, such as labels and formatting.\n4. **Does only one screen or flow need the state?** Search sessions,\n   highlights, editor drafts, call media, scroll positions, sidebar shape, or\n   device UI preferences: put it in the frontend, in `serverUi` or\n   `$lib\u002Fstate`.\n5. **Not sure?** Ask: \"Does a bot or a different frontend need this to use\n   Chatto correctly?\" If yes, put it in the client.\n\n## Placement Table\n\n| Concern                        | `@chatto\u002Fclient`                                                         | Frontend                                                          |\n| ------------------------------ | ------------------------------------------------------------------------ | ----------------------------------------------------------------- |\n| A new RPC                      | Facade in `src\u002Fapi\u002F`                                                     | Only the allowed modules below                                    |\n| Server and room data           | Stores in `src\u002Fserver\u002F` and `src\u002Froom\u002F`                                  | Derive from the store in components                               |\n| A copy of server data          | Emit a boundary event (`src\u002Fserver\u002FstoreEvents.ts`) for new boundaries   | Keep the copy and clear it at the boundary events                 |\n| Per-server UI state            | None                                                                     | `serverUi(store)` in `$lib\u002Fstate\u002Fserver\u002FserverUi.ts`              |\n| Snapshot query caches          | None                                                                     | `$lib\u002Fquery`; `cacheRegistry.ts` connects them to boundary events |\n| Errors                         | Keep the error object                                                    | `errorMessage()` or `toastError()` from `$lib\u002Futils\u002FerrorMessage` |\n| Render data from client stores | `src\u002Ftimeline\u002F`                                                          | Other render data in `$lib\u002Frender`                                |\n| Text in client data            | Take labels from the host (`DirectMessageLabels` in `timeline\u002Fusers.ts`) | Supply translated labels (`$lib\u002Frender\u002FdirectMessageLabels.ts`)   |\n| Server catalogue policy        | Registry API only (ADR-112)                                              | `$lib\u002FserverCatalogue`                                            |\n\n## Features With Parts In Both\n\nMost features have three parts:\n\n1. A facade in the client's `src\u002Fapi\u002F`.\n2. State in a client server or room store, when hosts read the data.\n3. Frontend UI state in `serverUi`. It derives from the store. When it keeps\n   a copy of server data, it clears the copy at the store's boundary events:\n   `onReset`, `onRoomAccessLost`, `onRoomAccessRestored`, `onUserDeleted`,\n   `onAuthorityChanged`, `onPermissionsChanged`, `onSessionEnded`, and\n   `onDispose`.\n\nUse these features as examples:\n\n- **Message search.** Facade: `packages\u002Fchatto-client\u002Fsrc\u002Fapi\u002FmessageSearch.ts`.\n  The client keeps no search state. The frontend keeps the search sessions in\n  `$lib\u002Fstate\u002Fserver\u002FmessageSearch.ts`. `serverUi.ts` clears them at\n  `onReset`, `onRoomAccessLost`, `onUserDeleted`, and `onPermissionsChanged`.\n- **Voice calls.** Facade: `src\u002Fapi\u002FvoiceCalls.ts`. Store state:\n  `projection.activeCalls`. The frontend keeps the LiveKit media, sounds, and\n  toasts in `$lib\u002Fstate\u002Fserver\u002FvoiceCall.svelte.ts`.\n- **Notifications.** Facade: `src\u002Fapi\u002Fnotifications.ts`. Store:\n  `src\u002Fserver\u002Fnotifications.ts`, with `notificationTarget`. The frontend\n  keeps attention and read views (`notificationAttention.ts`, `readViews.ts`)\n  and turns targets into routes (`$lib\u002FnotificationPath.ts`).\n\n## Allowed Frontend API Modules\n\nThe frontend calls ConnectRPC services directly only for its own screens:\n\n- Admin tools, first-run setup, and Web Push (`$lib\u002Fapi`).\n- Browser sign-in and account-linking flows, such as external identities\n  (`$lib\u002Fapi\u002FexternalIdentities.ts`). The sign-in flow uses page redirects\n  and the origin's cookie session. Account linking starts a browser redirect.\n  Only the frontend's sign-in and account settings screens use these flows.\n  Bots do not use them, and a different frontend makes its own flows.\n- The cross-tab session channel (`$lib\u002Fauth\u002FsessionChannel.ts`).\n\nDo not add other requests there.\n\n## Protocol Facts With Display Parts\n\nSome features have a protocol part in the client and a display part in the\nfrontend. Use them as patterns:\n\n- Message timestamp tokens: the client's `messaging\u002FtimestampTokens.ts` has\n  the `\u003Ct:EPOCH:F>` format. `$lib\u002FmessageTimestamps.ts` renders tokens.\n- Custom status templates: the client's `util\u002FcustomStatusTemplates.ts` has\n  the `chatto:status:\u003Cid>` tokens. `$lib\u002FcustomStatusTemplates.ts` adds the\n  translated labels.\n- Permissions: the client's `util\u002FpermissionCatalog.ts` mirrors\n  `cli\u002Finternal\u002Fcore\u002Fpermission.go`. `$lib\u002Fpermissions.ts` adds the\n  translated descriptions and help.\n- Presence: the client's `server\u002FpresenceTracking.ts` loads the choice and\n  sends heartbeats. `$lib\u002Fstate\u002Fserver\u002FpresenceTracking.ts` connects one\n  tracker to the chat root.\n\n## Frontend Modules That Look Like Client Code\n\nThese modules stay in the frontend. Do not move them without a new reason:\n\n- `$lib\u002Fmentions.ts`: mention detection uses the frontend's Markdown\n  renderer. The server resolves mentions and tells bots why a message\n  addresses them.\n- `$lib\u002Fstate\u002Fserver\u002FroomUnread.ts` and `roomDirectory.ts`: optimistic\n  read-state and membership changes, so the UI responds before the server\n  confirms. Store events confirm them. Each host decides about its own\n  optimistic UI.\n\n## Common Mistakes\n\n- A request helper in `$lib` because \"only the frontend uses it\".\n- A client store that imports host state or calls back into the UI.\n- Display text, translated text, or toasts in the client.\n- A frontend copy of server data that does not clear at boundary events.\n- Svelte runes, `svelte\u002Freactivity`, or `$lib` imports in the client outside\n  `src\u002Fsvelte\u002F`.\n\n## Related Rules\n\n- [`packages\u002Fchatto-client\u002FAGENTS.md`](..\u002F..\u002F..\u002Fpackages\u002Fchatto-client\u002FAGENTS.md):\n  how to write client code.\n- [`apps\u002Ffrontend\u002FAGENTS.md`](..\u002F..\u002F..\u002Fapps\u002Ffrontend\u002FAGENTS.md): how to write\n  frontend code.\n- [ADR-111](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002FADR-111-move-client-state-into-chatto-client.md)\n  and [ADR-112](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002FADR-112-keep-the-server-catalogue-in-the-frontend.md):\n  the decisions.\n","# Placement of Chatto Client Code\n\n`@chatto\u002Fclient` is the one Chatto client (ADR-111). The bundled frontend,\nChattoBot, and third-party bots and frontends use it. The frontend uses the\nclient. The client never calls into the frontend.\n\n## Decision Procedure\n\nAsk these questions in sequence. Stop at the first \"yes\".\n\n1. **Does it show something to a person?** Translated text, toasts, sounds,\n   routes, components, layout, or Svelte context: put it in the frontend.\n2. **Does it talk to a server or keep server data?** Requests, sessions and\n   tokens, realtime delivery, server and room data, the operations on this\n   data, or a privacy or authorization boundary: put it in the client.\n   Exception: the requests on the\n   [Allowed Frontend API Modules](#allowed-frontend-api-modules) list stay in\n   the frontend.\n3. **Does it encode a protocol fact?** A token format in a message body,\n   mention rules, the permission structure, or validation that mirrors the\n   server: put it in the client, also when only the frontend uses it now. The\n   frontend keeps only the display part, such as labels and formatting.\n4. **Does only one screen or flow need the state?** Search sessions,\n   highlights, editor drafts, call media, scroll positions, sidebar shape, or\n   device UI preferences: put it in the frontend, in `serverUi` or\n   `$lib\u002Fstate`.\n5. **Not sure?** Ask: \"Does a bot or a different frontend need this to use\n   Chatto correctly?\" If yes, put it in the client.\n\n## Placement Table\n\n| Concern                        | `@chatto\u002Fclient`                                                         | Frontend                                                          |\n| ------------------------------ | ------------------------------------------------------------------------ | ----------------------------------------------------------------- |\n| A new RPC                      | Facade in `src\u002Fapi\u002F`                                                     | Only the allowed modules below                                    |\n| Server and room data           | Stores in `src\u002Fserver\u002F` and `src\u002Froom\u002F`                                  | Derive from the store in components                               |\n| A copy of server data          | Emit a boundary event (`src\u002Fserver\u002FstoreEvents.ts`) for new boundaries   | Keep the copy and clear it at the boundary events                 |\n| Per-server UI state            | None                                                                     | `serverUi(store)` in `$lib\u002Fstate\u002Fserver\u002FserverUi.ts`              |\n| Snapshot query caches          | None                                                                     | `$lib\u002Fquery`; `cacheRegistry.ts` connects them to boundary events |\n| Errors                         | Keep the error object                                                    | `errorMessage()` or `toastError()` from `$lib\u002Futils\u002FerrorMessage` |\n| Render data from client stores | `src\u002Ftimeline\u002F`                                                          | Other render data in `$lib\u002Frender`                                |\n| Text in client data            | Take labels from the host (`DirectMessageLabels` in `timeline\u002Fusers.ts`) | Supply translated labels (`$lib\u002Frender\u002FdirectMessageLabels.ts`)   |\n| Server catalogue policy        | Registry API only (ADR-112)                                              | `$lib\u002FserverCatalogue`                                            |\n\n## Features With Parts In Both\n\nMost features have three parts:\n\n1. A facade in the client's `src\u002Fapi\u002F`.\n2. State in a client server or room store, when hosts read the data.\n3. Frontend UI state in `serverUi`. It derives from the store. When it keeps\n   a copy of server data, it clears the copy at the store's boundary events:\n   `onReset`, `onRoomAccessLost`, `onRoomAccessRestored`, `onUserDeleted`,\n   `onAuthorityChanged`, `onPermissionsChanged`, `onSessionEnded`, and\n   `onDispose`.\n\nUse these features as examples:\n\n- **Message search.** Facade: `packages\u002Fchatto-client\u002Fsrc\u002Fapi\u002FmessageSearch.ts`.\n  The client keeps no search state. The frontend keeps the search sessions in\n  `$lib\u002Fstate\u002Fserver\u002FmessageSearch.ts`. `serverUi.ts` clears them at\n  `onReset`, `onRoomAccessLost`, `onUserDeleted`, and `onPermissionsChanged`.\n- **Voice calls.** Facade: `src\u002Fapi\u002FvoiceCalls.ts`. Store state:\n  `projection.activeCalls`. The frontend keeps the LiveKit media, sounds, and\n  toasts in `$lib\u002Fstate\u002Fserver\u002FvoiceCall.svelte.ts`.\n- **Notifications.** Facade: `src\u002Fapi\u002Fnotifications.ts`. Store:\n  `src\u002Fserver\u002Fnotifications.ts`, with `notificationTarget`. The frontend\n  keeps attention and read views (`notificationAttention.ts`, `readViews.ts`)\n  and turns targets into routes (`$lib\u002FnotificationPath.ts`).\n\n## Allowed Frontend API Modules\n\nThe frontend calls ConnectRPC services directly only for its own screens:\n\n- Admin tools, first-run setup, and Web Push (`$lib\u002Fapi`).\n- Browser sign-in and account-linking flows, such as external identities\n  (`$lib\u002Fapi\u002FexternalIdentities.ts`). The sign-in flow uses page redirects\n  and the origin's cookie session. Account linking starts a browser redirect.\n  Only the frontend's sign-in and account settings screens use these flows.\n  Bots do not use them, and a different frontend makes its own flows.\n- The cross-tab session channel (`$lib\u002Fauth\u002FsessionChannel.ts`).\n\nDo not add other requests there.\n\n## Protocol Facts With Display Parts\n\nSome features have a protocol part in the client and a display part in the\nfrontend. Use them as patterns:\n\n- Message timestamp tokens: the client's `messaging\u002FtimestampTokens.ts` has\n  the `\u003Ct:EPOCH:F>` format. `$lib\u002FmessageTimestamps.ts` renders tokens.\n- Custom status templates: the client's `util\u002FcustomStatusTemplates.ts` has\n  the `chatto:status:\u003Cid>` tokens. `$lib\u002FcustomStatusTemplates.ts` adds the\n  translated labels.\n- Permissions: the client's `util\u002FpermissionCatalog.ts` mirrors\n  `cli\u002Finternal\u002Fcore\u002Fpermission.go`. `$lib\u002Fpermissions.ts` adds the\n  translated descriptions and help.\n- Presence: the client's `server\u002FpresenceTracking.ts` loads the choice and\n  sends heartbeats. `$lib\u002Fstate\u002Fserver\u002FpresenceTracking.ts` connects one\n  tracker to the chat root.\n\n## Frontend Modules That Look Like Client Code\n\nThese modules stay in the frontend. Do not move them without a new reason:\n\n- `$lib\u002Fmentions.ts`: mention detection uses the frontend's Markdown\n  renderer. The server resolves mentions and tells bots why a message\n  addresses them.\n- `$lib\u002Fstate\u002Fserver\u002FroomUnread.ts` and `roomDirectory.ts`: optimistic\n  read-state and membership changes, so the UI responds before the server\n  confirms. Store events confirm them. Each host decides about its own\n  optimistic UI.\n\n## Common Mistakes\n\n- A request helper in `$lib` because \"only the frontend uses it\".\n- A client store that imports host state or calls back into the UI.\n- Display text, translated text, or toasts in the client.\n- A frontend copy of server data that does not clear at boundary events.\n- Svelte runes, `svelte\u002Freactivity`, or `$lib` imports in the client outside\n  `src\u002Fsvelte\u002F`.\n\n## Related Rules\n\n- [`packages\u002Fchatto-client\u002FAGENTS.md`](..\u002F..\u002F..\u002Fpackages\u002Fchatto-client\u002FAGENTS.md):\n  how to write client code.\n- [`apps\u002Ffrontend\u002FAGENTS.md`](..\u002F..\u002F..\u002Fapps\u002Ffrontend\u002FAGENTS.md): how to write\n  frontend code.\n- [ADR-111](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002FADR-111-move-client-state-into-chatto-client.md)\n  and [ADR-112](..\u002F..\u002F..\u002Fdocs\u002Fadr\u002FADR-112-keep-the-server-catalogue-in-the-frontend.md):\n  the decisions.\n",{"name":5,"description":7},"main","d3d21f4a4fb6c1315aa62df97a6cb6617680af95",".agents\u002Fskills\u002Fchatto-client-placement",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":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add chattocorp\u002Fchatto --skill chatto-client-placement",{"tool":68,"command":69},"bunx","bunx skills add chattocorp\u002Fchatto --skill chatto-client-placement",{"tool":71,"command":72},"pnpm","pnpm dlx skills add chattocorp\u002Fchatto --skill chatto-client-placement","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fchatto-client-placement\u002FSKILL.md",true,[],[77,95,111,127,150,174],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":89,"publishedAt":49},"01M6P8S7F1NYMKD9PW2RGZ0B2P","writing-tests","Instructions and hints for writing tests.","https:\u002F\u002Fgithub.com\u002Fchattocorp\u002Fchatto\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-tests\u002FSKILL.md",[83,86],{"categoryNo":84,"categoryName":85,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":87,"categoryName":88,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者",[90,91,92,93,94],"writing","writing tests","tests","instructions","for",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":102,"publishedAt":49},"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",[101],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[103,104,105,106,40,107,108,109,110,92],"dependencies","update","project","update project dependencies","go","run tests","run","version",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":49},"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",[],[118,119,120,121,122,123,124,125,126],"svelte","svelte docs","docs","look","cli","official","documentation","sveltekit","up",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":49},"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",[],[118,134,135,136,137,138,105,139,140,141,142,143,144,145,146,147,47,148,90,149],"svelte core bestpractices","core","with","event","module","guidance","styling","edit","write","analyze","more","load","component","integration","libraries","fast",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":160,"publishedAt":49},"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",[156,159],{"categoryNo":157,"categoryName":158,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[47,161,118,162,146,163,122,124,164,94,165,138,166,167,168,169,170,171,172,173],"svelte code writer","writer","editor","svelte 5","code analysis","results","editing","js","documentation lookup","analysis","Tools","analyzing","file",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":49},"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",[],[181,182,126,183,184,185,186,187,32,188,189,190,191,192,193,194,195,196,109,124,197,198],"wrap","session wrap","session","session wrap up","wrap up","Coding-Agent","agent session","recommend","near","follow-up","learned","only","work","improve","repository","issues","workflows","review"]