Manusで任意のスキルを実行
ワンクリックで
ワンクリックで
ワンクリックでManusで任意のスキルを実行
始める$pwd:
frontend-developer
// Expert in Astro v5, React, shadcn/ui, and Tailwind CSS with semantic color tokens.
$ git log --oneline --stat
stars:2
forks:1
updated:2026年5月1日 11:04
SKILL.md
// Expert in Astro v5, React, shadcn/ui, and Tailwind CSS with semantic color tokens.
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.
Debug this app using agent-browse on a production environment
Debug this app using agent-browse
| 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: