用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/pablopunk/doce.dev --skill frontend-developer命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Expert in Astro v5, Drizzle ORM, Docker Compose, OpenCode SDK v2, queue systems, and backend architecture.
Expert in SQLite with WAL mode, Drizzle ORM, and better-sqlite3 driver.
Use this agent for the Opencode integration. Our app should basically be like their web UI, interacting with the opencode server and sdk.
基于 SOC 职业分类
正在显示 SKILL.md
| name | frontend-developer |
| description | Expert in Astro v5, React, shadcn/ui, and Tailwind CSS with semantic color tokens. |
# Resolve library IDs, then fetch docs
ctx7 library shadcn/ui "form button dialog composition"
ctx7 docs /websites/ui_shadcn "form button dialog composition"
ctx7 library "Tailwind CSS"
ctx7 library Astro
dark: prefixes)Always use shadcn components instead of building from scratch.
pnpm dlx shadcn@latest add <component-name>
# NEVER use npx shadcn - always use pnpm dlx
Available Components:
Client Directives:
client:load - Load immediately on page loadclient:visible - Load when enters viewportclient:idle - Load when browser is idleclient:only="react" - Skip SSR entirelyNEVER use hardcoded colors or dark: prefixes. Theme switching is automatic via CSS custom properties.
// ✅ GOOD - uses semantic tokens
<div className="text-status-error">Error message</div>
<div className="bg-status-success-light p-4">Success</div>
<div className="border-status-error rounded">Error boundary</div>
// ❌ BAD - uses dark: prefix or hardcoded colors
<div className="dark:text-red-500">Error</div>
<div className="bg-red-500">Success</div>
<div className="text-red-500">Warning</div>
import { Form, FormField, FormItem, FormLabel, FormControl } from "@/components/ui/form"
<Form>
<FormField name="email">
<FormItem>
<FormLabel>Email</FormLabel>
<FormControl>
<Input type="email" />
</FormControl>
</FormItem>
</FormField>
</Form>
import { toast } from "sonner"
toast.error("Error message", { description: "Details" })
toast.info("Info message")
toast.success("Success message")
const statusStyles = {
active: { bg: "bg-primary", text: "text-primary-foreground" },
inactive: { bg: "bg-muted", text: "text-muted-foreground" },
error: { bg: "bg-destructive", text: "text-destructive-foreground" }
};
const style = statusStyles[status];
<span className={`${style.bg} ${style.text}`}>{status}</span>
pnpm dlx shadcn@latest adddark: