[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BVSZ46BVPNH3CWRVHY745C":3,"skill-same:01M6BVSZ46BVPNH3CWRVHY745C":96},{"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":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":47,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6BVSZ46BVPNH3CWRVHY745C","adding-a-new-app-route",null,"Fully wires up a new route with required boilerplate, following this repo's conventions for subapps. Use when user wants to add a new route or app or subapp or page or screen.","artsy\u002Fforce","artsy","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F546231?v=4","01M6BVSTECNPYTPBN8PTGZSAJY","Artsy","01M6BVSTJGAXMT1K56W2A2NSSM",638,"MIT","https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fadding-a-new-app-route\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"new","route","adding a new app route","app","conventions","when","for","with","add","boilerplate","screen","up","use","user","repo","page","beep","2026-11-10 10:12:30",false,"---\nname: adding-a-new-app-route\ndescription: Fully wires up a new route with required boilerplate, following this repo's conventions for subapps. Use when user wants to add a new route or app or subapp or page or screen.\nallowed-tools: Skill(beep)\n---\n\n# Adding a new route\n\nUse this checklist to track your work:\n\n- [ ] Determine name & route for the new app\n- [ ] Determine the kind of app to create\n- [ ] Create a folder for the new app\n- [ ] Mount the new app in the global routes listing\n- [ ] Consider next steps\n\n## Determine name & route for the new app\n\nIf the name of the new app and the desired route have not already been specified, `AskUserQuestion` to determine that information, e.g. `MyApp` at `\u002Fmy-app`.\n\n## Determine the kind of app to create\n\n- **Static**: The simplest possible app with static-only content\n- **Dynamic**: A typical app that fetches data based on route params\n\nUse the answer in the next step.\n\n## Create a folder for the new app\n\n- Choose the correct template directory based on the previous step:\n  - **Static**: `.\u002Ftemplates\u002Fstatic\u002FReplace\u002F`\n  - **Dynamic**: `.\u002Ftemplates\u002Fdynamic\u002FReplace\u002F`\n- Use that directory as the template for the new subapp\n- Recreate that folder structure under `\u002Fsrc\u002FApps\u002F\u003CNewApp>`\n- Replace all instances of `replace` and `Replace` with appropriate naming (case-sensitive)\n\n## Mount the new app in the global routes listing\n\nAdd the new route to the main route list at `src\u002Froutes.tsx`. Follow existing conventions re: alphabetization.\n\n## Consider next steps\n\nAdditional dev advice:\n\n- You may need to restart the server for the new route to take effect\n- Then visit http:\u002F\u002Flocalhost:4000\u002F{replace} to see your new app\n- Examine the generated code for additional follow-ups\n\n## Celebrate\n\nIndicate you are done with a \u002Fbeep\n","# Adding a new route\n\nUse this checklist to track your work:\n\n- [ ] Determine name & route for the new app\n- [ ] Determine the kind of app to create\n- [ ] Create a folder for the new app\n- [ ] Mount the new app in the global routes listing\n- [ ] Consider next steps\n\n## Determine name & route for the new app\n\nIf the name of the new app and the desired route have not already been specified, `AskUserQuestion` to determine that information, e.g. `MyApp` at `\u002Fmy-app`.\n\n## Determine the kind of app to create\n\n- **Static**: The simplest possible app with static-only content\n- **Dynamic**: A typical app that fetches data based on route params\n\nUse the answer in the next step.\n\n## Create a folder for the new app\n\n- Choose the correct template directory based on the previous step:\n  - **Static**: `.\u002Ftemplates\u002Fstatic\u002FReplace\u002F`\n  - **Dynamic**: `.\u002Ftemplates\u002Fdynamic\u002FReplace\u002F`\n- Use that directory as the template for the new subapp\n- Recreate that folder structure under `\u002Fsrc\u002FApps\u002F\u003CNewApp>`\n- Replace all instances of `replace` and `Replace` with appropriate naming (case-sensitive)\n\n## Mount the new app in the global routes listing\n\nAdd the new route to the main route list at `src\u002Froutes.tsx`. Follow existing conventions re: alphabetization.\n\n## Consider next steps\n\nAdditional dev advice:\n\n- You may need to restart the server for the new route to take effect\n- Then visit http:\u002F\u002Flocalhost:4000\u002F{replace} to see your new app\n- Examine the generated code for additional follow-ups\n\n## Celebrate\n\nIndicate you are done with a \u002Fbeep\n",{"name":5,"description":7,"allowed-tools":41},"Skill(beep)","main","aca22c69f8b9d4f0bf9396e78f248d720b3f234d",".claude\u002Fskills\u002Fadding-a-new-app-route",151,"https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce","https:\u002F\u002Fwww.artsy.net","https:\u002F\u002Fgithub.com\u002Fartsy","https:\u002F\u002Fartsy.github.io","Artsy.net Team","2026-11-14 01:23:50",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add artsy\u002Fforce --skill adding-a-new-app-route",{"tool":58,"command":59},"bunx","bunx skills add artsy\u002Fforce --skill adding-a-new-app-route",{"tool":61,"command":62},"pnpm","pnpm dlx skills add artsy\u002Fforce --skill adding-a-new-app-route","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fadding-a-new-app-route\u002FSKILL.md",true,[66,72,76,80,84,88,92],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"templates\u002Fdynamic\u002FReplace\u002F__tests__\u002FReplaceApp.jest.tsx","OTHER","其他",1066,"https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fadding-a-new-app-route\u002Ftemplates\u002Fdynamic\u002FReplace\u002F__tests__\u002FReplaceApp.jest.tsx",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"templates\u002Fdynamic\u002FReplace\u002FComponents\u002F__tests__\u002FReplaceMeta.jest.tsx",2816,"https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fadding-a-new-app-route\u002Ftemplates\u002Fdynamic\u002FReplace\u002FComponents\u002F__tests__\u002FReplaceMeta.jest.tsx",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"templates\u002Fdynamic\u002FReplace\u002FComponents\u002FReplaceMeta.tsx",1185,"https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fadding-a-new-app-route\u002Ftemplates\u002Fdynamic\u002FReplace\u002FComponents\u002FReplaceMeta.tsx",{"path":81,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":82,"sourceHtmlUrl":83},"templates\u002Fdynamic\u002FReplace\u002FReplaceApp.tsx",2160,"https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fadding-a-new-app-route\u002Ftemplates\u002Fdynamic\u002FReplace\u002FReplaceApp.tsx",{"path":85,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":86,"sourceHtmlUrl":87},"templates\u002Fdynamic\u002FReplace\u002FreplaceRoutes.tsx",2027,"https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fadding-a-new-app-route\u002Ftemplates\u002Fdynamic\u002FReplace\u002FreplaceRoutes.tsx",{"path":89,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":90,"sourceHtmlUrl":91},"templates\u002Fstatic\u002FReplace\u002FReplaceApp.tsx",1104,"https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fadding-a-new-app-route\u002Ftemplates\u002Fstatic\u002FReplace\u002FReplaceApp.tsx",{"path":93,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":94,"sourceHtmlUrl":95},"templates\u002Fstatic\u002FReplace\u002FreplaceRoutes.tsx",441,"https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fadding-a-new-app-route\u002Ftemplates\u002Fstatic\u002FReplace\u002FreplaceRoutes.tsx",[97,121],{"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":36},"01M6BVT2W5WRRB46R068646G5M","fix-sentry-issue","Investigates the most actionable open Sentry issue for force-production, locates the root cause in source code, and opens a fix PR. Use when asked to look at Sentry, fix a Sentry issue, or investigate production errors.","https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ffix-sentry-issue\u002FSKILL.md",[],[104,105,106,107,108,109,24,110,111,25,112,113,114,115,31,116,117,118,119,120],"fix sentry issue","fix sentry","issue","fix","sentry","look","root cause","source","at","fix pr","errors","actionable","open","investigate","Production","code","pr",{"skillNo":122,"name":35,"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":36},"01M6BVT18KJD870VWK6PKX928Z","Play a system beep. Use when asked to beep, play a beep, issue a system beep etc.","https:\u002F\u002Fgithub.com\u002Fartsy\u002Fforce\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbeep\u002FSKILL.md",[],[35,127,106,128,129,31,24],"Bash","system","play"]