[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C4METZ2H1R94DPVFBM6EEX":3,"skill-same:01M6C4METZ2H1R94DPVFBM6EEX":58},{"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":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":14,"repositoryHtmlUrl":40,"repositoryHomepageUrl":6,"ownerHtmlUrl":41,"ownerBlogUrl":42,"ownerDescription":6,"updatedAt":43,"install":44,"resources":57},"01M6C4METZ2H1R94DPVFBM6EEX","modern-astro-v6",null,"Build idiomatic Astro v6 applications with server-first rendering, islands, content collections, actions, and current v6-safe APIs. Use when creating, reviewing, or migrating Astro projects, pages, components, content layers, or integrations.","JonasThowsen\u002F.dotfiles","JonasThowsen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F116713750?v=4","01M6C4M1ZT6HTT1X5TH96Q48AQ","Jonas Thowsen","01M6C4M247M99A8EX3SS04F8RT",0,"MIT","https:\u002F\u002Fgithub.com\u002FJonasThowsen\u002F.dotfiles\u002Fblob\u002Fmain\u002Fopencode\u002F.config\u002Fopencode\u002Fskills\u002Fmodern-astro-v6\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31],"astro","modern astro v6","safe","components","content","server","actions","applications","first","projects","integrations","use","opencode","2026-11-10 10:12:30",false,"---\nname: modern-astro-v6\ndescription: Build idiomatic Astro v6 applications with server-first rendering, islands, content collections, actions, and current v6-safe APIs. Use when creating, reviewing, or migrating Astro projects, pages, components, content layers, or integrations.\ncompatibility: opencode\n---\n\nUse this skill to keep Astro work aligned with modern v6 practices and away from legacy patterns.\n\n## Core mindset\n\nAstro is server-first and HTML-first.\n\nDefault to:\n- static or server-rendered HTML\n- minimal client JavaScript\n- islands only where interactivity or personalization is needed\n- content and data APIs that preserve type safety\n\nDo not design Astro apps like full-SPA apps unless the product truly needs it.\n\n## Rendering defaults\n\n- Keep pages and Astro components server-rendered by default.\n- Add `client:*` directives only to components that need browser interactivity.\n- Choose hydration directives intentionally:\n  - `client:load` for immediately interactive UI\n  - `client:idle` for lower-priority interactions\n  - `client:visible` for below-the-fold or deferred UI\n- Use `server:defer` for expensive or personalized server islands that should not block the whole page.\n\nAvoid hydrating large layout regions when one small widget would do.\n\n## Modern v6 APIs and constraints\n\n- Use `astro\u002Fzod` for Zod imports.\n- Use content collections and loaders instead of legacy content APIs.\n- Do not use `Astro.glob()`; it is removed in v6.\n- Do not import `z` from `astro:content` or `astro:schema`; use `astro\u002Fzod`.\n- Use ESM config files; CommonJS config is removed.\n\nUpgrade-aware defaults:\n- Node `22.12.0` or higher\n- Vite 7-compatible assumptions\n- Zod 4-compatible schemas and validators\n\n## Page and component architecture\n\n- Put data fetching in frontmatter\u002Fserver code by default.\n- Keep Astro components mostly presentational and server-friendly.\n- Use framework components for interactive islands, not as the default for everything.\n- Pass plain serializable props across the Astro\u002Fframework boundary when possible.\n\nIf a page can be mostly static HTML, keep it that way.\n\n## Content strategy\n\n- Use `src\u002Fcontent.config.ts` to define collections.\n- Prefer build-time collections for content that is mostly static.\n- Use live collections only when runtime freshness is worth the performance tradeoff.\n- Define schemas for collections whenever possible.\n- Sort `getCollection()` results explicitly; order is not guaranteed.\n\nGood modern content setup usually means:\n- `defineCollection(...)`\n- a loader such as `glob()` or `file()`\n- `schema: z.object(...)`\n\n## Actions and forms\n\n- Prefer Astro Actions over bespoke API endpoints when the goal is typed server functions for UI interactions.\n- Define actions in `src\u002Factions\u002Findex.ts`.\n- Validate inputs with `astro\u002Fzod`.\n- Check authorization in the action handler or middleware as appropriate.\n- Use `Astro.getActionResult()` for no-JS form flows and server-side result handling.\n\nRemember that actions are public endpoints and need the same auth discipline as API routes.\n\n## Images, assets, and styling\n\n- Prefer Astro asset handling and image optimization when available.\n- Use CSS that supports a fast initial render; avoid requiring client JS for layout.\n- Build responsive layouts that work well without hydration.\n\n## Routing and data decisions\n\nChoose the simplest tool that fits:\n- page frontmatter for normal page data needs\n- content collections for structured content\n- actions for typed UI-to-server mutations\n- endpoints when you truly need a custom HTTP surface\n- server islands when only a fragment needs dynamic server rendering\n\n## Migration guardrails for v6\n\nWhen touching older code, look for and modernize these patterns:\n- `Astro.glob()` usage\n- `astro:schema` imports\n- `z` imported from `astro:content`\n- old content collection compatibility assumptions\n- CommonJS Astro config\n- `import.meta.env.ASSETS_PREFIX` usage where `astro:config\u002Fserver` is more appropriate\n\nAlso be aware that `getStaticPaths()` should not rely on the old `Astro` object; prefer `import.meta.env.SITE` when needed.\n\n## Output expectations\n\nWhen implementing or reviewing Astro code, optimize for:\n- less shipped JavaScript\n- clean server\u002Fclient boundaries\n- upgrade-safe v6 APIs\n- content and form flows with strong typing\n- simple, maintainable project structure\n","Use this skill to keep Astro work aligned with modern v6 practices and away from legacy patterns.\n\n## Core mindset\n\nAstro is server-first and HTML-first.\n\nDefault to:\n- static or server-rendered HTML\n- minimal client JavaScript\n- islands only where interactivity or personalization is needed\n- content and data APIs that preserve type safety\n\nDo not design Astro apps like full-SPA apps unless the product truly needs it.\n\n## Rendering defaults\n\n- Keep pages and Astro components server-rendered by default.\n- Add `client:*` directives only to components that need browser interactivity.\n- Choose hydration directives intentionally:\n  - `client:load` for immediately interactive UI\n  - `client:idle` for lower-priority interactions\n  - `client:visible` for below-the-fold or deferred UI\n- Use `server:defer` for expensive or personalized server islands that should not block the whole page.\n\nAvoid hydrating large layout regions when one small widget would do.\n\n## Modern v6 APIs and constraints\n\n- Use `astro\u002Fzod` for Zod imports.\n- Use content collections and loaders instead of legacy content APIs.\n- Do not use `Astro.glob()`; it is removed in v6.\n- Do not import `z` from `astro:content` or `astro:schema`; use `astro\u002Fzod`.\n- Use ESM config files; CommonJS config is removed.\n\nUpgrade-aware defaults:\n- Node `22.12.0` or higher\n- Vite 7-compatible assumptions\n- Zod 4-compatible schemas and validators\n\n## Page and component architecture\n\n- Put data fetching in frontmatter\u002Fserver code by default.\n- Keep Astro components mostly presentational and server-friendly.\n- Use framework components for interactive islands, not as the default for everything.\n- Pass plain serializable props across the Astro\u002Fframework boundary when possible.\n\nIf a page can be mostly static HTML, keep it that way.\n\n## Content strategy\n\n- Use `src\u002Fcontent.config.ts` to define collections.\n- Prefer build-time collections for content that is mostly static.\n- Use live collections only when runtime freshness is worth the performance tradeoff.\n- Define schemas for collections whenever possible.\n- Sort `getCollection()` results explicitly; order is not guaranteed.\n\nGood modern content setup usually means:\n- `defineCollection(...)`\n- a loader such as `glob()` or `file()`\n- `schema: z.object(...)`\n\n## Actions and forms\n\n- Prefer Astro Actions over bespoke API endpoints when the goal is typed server functions for UI interactions.\n- Define actions in `src\u002Factions\u002Findex.ts`.\n- Validate inputs with `astro\u002Fzod`.\n- Check authorization in the action handler or middleware as appropriate.\n- Use `Astro.getActionResult()` for no-JS form flows and server-side result handling.\n\nRemember that actions are public endpoints and need the same auth discipline as API routes.\n\n## Images, assets, and styling\n\n- Prefer Astro asset handling and image optimization when available.\n- Use CSS that supports a fast initial render; avoid requiring client JS for layout.\n- Build responsive layouts that work well without hydration.\n\n## Routing and data decisions\n\nChoose the simplest tool that fits:\n- page frontmatter for normal page data needs\n- content collections for structured content\n- actions for typed UI-to-server mutations\n- endpoints when you truly need a custom HTTP surface\n- server islands when only a fragment needs dynamic server rendering\n\n## Migration guardrails for v6\n\nWhen touching older code, look for and modernize these patterns:\n- `Astro.glob()` usage\n- `astro:schema` imports\n- `z` imported from `astro:content`\n- old content collection compatibility assumptions\n- CommonJS Astro config\n- `import.meta.env.ASSETS_PREFIX` usage where `astro:config\u002Fserver` is more appropriate\n\nAlso be aware that `getStaticPaths()` should not rely on the old `Astro` object; prefer `import.meta.env.SITE` when needed.\n\n## Output expectations\n\nWhen implementing or reviewing Astro code, optimize for:\n- less shipped JavaScript\n- clean server\u002Fclient boundaries\n- upgrade-safe v6 APIs\n- content and form flows with strong typing\n- simple, maintainable project structure\n",{"name":5,"description":7,"compatibility":31},"main","f5b4e1172fd18558c9071d150a1ffe797be04ca7","opencode\u002F.config\u002Fopencode\u002Fskills\u002Fmodern-astro-v6","https:\u002F\u002Fgithub.com\u002FJonasThowsen\u002F.dotfiles","https:\u002F\u002Fgithub.com\u002FJonasThowsen","invaron.no","2026-11-11 04:03:33",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add JonasThowsen\u002F.dotfiles --skill modern-astro-v6",{"tool":50,"command":51},"bunx","bunx skills add JonasThowsen\u002F.dotfiles --skill modern-astro-v6",{"tool":53,"command":54},"pnpm","pnpm dlx skills add JonasThowsen\u002F.dotfiles --skill modern-astro-v6","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJonasThowsen\u002F.dotfiles\u002Fblob\u002Fmain\u002Fopencode\u002F.config\u002Fopencode\u002Fskills\u002Fmodern-astro-v6\u002FSKILL.md",true,[],[59,82,116,130,144],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":70,"publishedAt":32},"01M6C4MHG9NKR5WM5PQ3Z1TE0C","skill-creator","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.","https:\u002F\u002Fgithub.com\u002FJonasThowsen\u002F.dotfiles\u002Fblob\u002Fmain\u002Fopencode\u002F.config\u002Fopencode\u002Fskills\u002Fskill-creator\u002FSKILL.md",[65],{"categoryNo":66,"categoryName":67,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[71,72,73,74,75,76,77,78,79,80,81,30],"skill creator","performance","run evals","test","variance analysis","create","run","benchmark","analysis","improve","edit",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":99,"publishedAt":32},"01M6C4MC12H795H32MWYRA9JQM","frontend-design","Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML\u002FCSS layouts, or when styling\u002Fbeautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.","https:\u002F\u002Fgithub.com\u002FJonasThowsen\u002F.dotfiles\u002Fblob\u002Fmain\u002Fopencode\u002F.config\u002Fopencode\u002Fskills\u002Ffrontend-design\u002FSKILL.md",[88,91,94],{"categoryNo":89,"categoryName":90,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":92,"categoryName":93,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[100,101,102,103,22,104,105,106,76,107,108,109,110,26,111,112,30,113,114,115],"frontend design","design","frontend","styling","react","react components","web components","code","artifacts","examples","Production","quality","landing","web","creative","css",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":32},"01M6C4M9AJTGEJN0Q68WXDV4DG","elixir-idioms","Write idiomatic Elixir and Phoenix code with pattern matching, small composable functions, OTP-friendly boundaries, and BEAM-aware error handling. Use when creating or reviewing Elixir code, APIs, GenServers, Phoenix apps, Ecto code, or tests.","https:\u002F\u002Fgithub.com\u002FJonasThowsen\u002F.dotfiles\u002Fblob\u002Fmain\u002Fopencode\u002F.config\u002Fopencode\u002Fskills\u002Felixir-idioms\u002FSKILL.md",[],[123,124,125,126,107,127,128,129,30,31],"elixir idioms","elixir","beam","composable","error handling","Phoenix","write",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":32},"01M6C4M6K4NVF6XDRCC1SPP2BX","effect-ts-idioms","Write idiomatic modern Effect TypeScript using Effect.gen or clear pipelines, typed error channels, Context and Layer services, and resource-safe runtime boundaries. Use when building or reviewing code with Effect, @effect\u002Fplatform, Schema, Layers, or Effect-based applications.","https:\u002F\u002Fgithub.com\u002FJonasThowsen\u002F.dotfiles\u002Fblob\u002Fmain\u002Fopencode\u002F.config\u002Fopencode\u002Fskills\u002Feffect-ts-idioms\u002FSKILL.md",[],[137,138,139,21,140,107,141,26,129,142,30,143,31],"effect ts idioms","effect ts","effect","typescript","services","context","schema",{"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":153,"publishedAt":32},"01M6C4M42EEAKE6VBVQKTN11MK","ash-framework-idioms","Write idiomatic Ash framework code using intentful actions, code interfaces, relationship management, DSL-first modeling, and framework-native changes\u002Fpreparations instead of ad hoc helper layers. Use when creating or reviewing Ash resources, domains, actions, queries, or Phoenix integrations.","https:\u002F\u002Fgithub.com\u002FJonasThowsen\u002F.dotfiles\u002Fblob\u002Fmain\u002Fopencode\u002F.config\u002Fopencode\u002Fskills\u002Fash-framework-idioms\u002FSKILL.md",[150],{"categoryNo":151,"categoryName":152,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000030","开发工程师",[154,155,107,31,30,156,129,29,27,128,25],"framework","ash framework idioms","management"]