Token导航 LogoToken导航TokenDH.com
前端设计操作浏览器github未标认证来源可访问许可证需确认审计通过

agile-proto敏捷原型

Agent Skill

agile-proto 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

264

周安装

11

GitHub Stars

公开资料未说明

下载量

88
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:agile-proto(敏捷原型)
来源仓库:https://github.com/djalmajr/essential-skills
仓库路径:skills/agile-proto
安装命令:
npx skills add https://github.com/djalmajr/essential-skills --skill agile-proto
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/djalmajr/essential-skills --skill agile-proto

简介

agile-proto 构建零配置的交互式 UI 原型,用于验证界面流程后再投入开发。

  • 基于 CDN 运行,无需构建工具,支持响应式布局和 Figma 导出功能。
  • 使用 Tailwind CSS v4 和 shadcn 组件库,1:1 还原设计规范。
  • 通过原生 HTML 实现组件行为,降低技术门槛并提升保真度。
  • 适合在开发前快速验证交互逻辑和视觉呈现效果。

SKILL.md

Interactive UI Prototyping

Build standalone interactive prototypes to validate UI flows before implementation. Zero build tools — everything runs from CDN. Visual and API mirror the org's shadcn experience 1:1 (live reference: apps/messaging/client-proto/).

Stack

  • z-proto — web component shell (responsive presets, zoom, resize handles, Figma export button)
  • Tailwind CSS v4@tailwindcss/browser + @theme inline mapping shadcn CSS variables
  • shadcn components (55) — one file per component in components/ui/, class strings copied verbatim from the original shadcn. Behavior delegated to native HTML5 (<dialog>, <details>, popover API, scroll-snap)
  • Preact + htm — rendering via importmap + esm.sh
  • iconify-icon — web component, wrapped by <Icon> in components/ui/icon.js
No daisyUI, no Radix. The 55 components in components/ui/ cover the shadcn catalog — always import from there, never recreate.

Structure

{app}/client-proto/
├── index.html             # CDN imports, importmap, @theme inline, z-proto shell
├── index.js               # SCENES + hash routing
├── index.css              # z-proto overrides + shadcn variables (light)
├── components/
│   ├── app-shell.js       # shadcn sidebar + topbar (breadcrumbs/actions)
│   └── ui/                # one file per shadcn component (55 components)
│       ├── utils.js                # cn() helper
│       ├── icon.js                 # <iconify-icon> wrapper
│       │
│       ├── # Layout / containers
│       ├── aspect-ratio.js · button-group.js · card.js · empty.js
│       ├── field.js · input-group.js · item.js · resizable.js · scroll-area.js
│       │
│       ├── # Behavioral (native HTML5)
│       ├── accordion.js            # <details>/<summary>
│       ├── alert-dialog.js         # <dialog role=alertdialog>
│       ├── collapsible.js          # <details>
│       ├── command.js              # static (real filtering needs JS)
│       ├── context-menu.js         # oncontextmenu + fixed positioning
│       ├── dialog.js               # <dialog> + .showModal()
│       ├── drawer.js · sheet.js    # <dialog> with slide
│       ├── dropdown-menu.js        # <details> styled as a menu
│       ├── hover-card.js           # CSS :hover/:focus-within
│       ├── menubar.js              # horizontal <details>
│       ├── navigation-menu.js      # nav + group-hover
│       ├── popover.js              # native popover API
│       ├── tooltip.js              # CSS-only
│       │
│       ├── # Forms
│       ├── checkbox.js · combobox.js   # <input list> + <datalist>
│       ├── input.js · input-otp.js · mask-input.js
│       ├── label.js · native-select.js · radio-group.js
│       ├── select.js · slider.js   # <input type=range>
│       ├── progress.js             # <progress>
│       ├── switch.js · textarea.js · toggle.js · toggle-group.js
│       │
│       ├── # Data display / navigation
│       ├── alert.js · avatar.js · badge.js · breadcrumb.js · button.js
│       ├── calendar.js             # static 7×6 grid
│       ├── carousel.js             # CSS scroll-snap
│       ├── chart.js                # placeholders (BarChart/LineChart)
│       ├── kbd.js · pagination.js · separator.js · sidebar.js
│       ├── skeleton.js · sonner.js # static toast
│       ├── spinner.js · table.js · tabs.js
└── routes/                # one scene per file (shadcn demos)
    ├── home.js
    ├── dashboard.js
    ├── tasks.js           # data table + dialog + dropdown
    ├── music.js           # rich layout + tooltip
    ├── settings.js
    └── components.js      # live reference

To add a new component: create components/ui/<name>.js with the class string copied from the original shadcn, importing cn from ./utils.js. Same convention as shadcn (@/components/ui/button).

Philosophy: behavior via native DOM/CSS

Inspired by the spectre.css philosophy: "interactive" components don't use Radix nor JS positioning. They delegate to HTML5/CSS:

shadcn componentImplementation here
Dialog / AlertDialog<dialog> + .showModal() / .close() (openDialog(id) / closeDialog(id))
Drawer / Sheet<dialog> positioned with slide classes
Accordion / Collapsible<details> + <summary>
DropdownMenu / Menubar<details> styled as an absolute menu + onBlur to close
ContextMenuoncontextmenu + <div> positioned with position: fixed
Popovernative popover API (popover attr + popovertarget) — Chrome 114+, Safari 17+, Firefox 125+
HoverCard / Tooltip / NavigationMenu:hover / :focus-within in CSS, no JS
Combobox<input list> + <datalist>
Slider<input type="range">
Progress<progress>
Calendar7×6 grid (static) — for a real input, prefer <input type="date">
CarouselCSS scroll-snap
Switch<label> with <input type="checkbox"> + peer-checked:translate-x-*

When complex interactivity is unavoidable (Command with real filtering, Toast with timing, Form with validation), the pattern is to render the visual state that the prototype needs; real behavior only when the scenario truly requires it.

Bootstrapping

cp -r ~/.claude/skills/agile-proto/templates/ my-app/client-proto/
cd my-app/client-proto
bunx serve -s .

Templates ship with the shadcn theme applied, a working sidebar, hash routing across scenes, and routes/components.js as a live reference.

Testing the skill template

To iterate on the templates without polluting any project:

# run directly from the skill
cd ~/.claude/skills/agile-proto/templates
bunx serve -s .
# opens http://localhost:3000 — navigate via #dashboard, #tasks, #music, etc.

# or in a sandbox
cp -r ~/.claude/skills/agile-proto/templates /tmp/proto-test
cd /tmp/proto-test && bunx serve -s .

The -s flag (SPA mode) ensures / resolves to index.html; routing between scenes uses the hash. To test Figma export, you must use localhost (the clipboard API requires a secure context).

Important patterns

Hash routing (not wouter)

index.js keeps a SCENES array and a useHashScene() hook reacting to window.location.hash. To add a scene: create a file under routes/, import it, and add an entry to SCENES with id, Component, activeUrl, optionally pageLabel/breadcrumbs/actions.

Scene with AppShell

By default, every scene renders inside <AppShell> (sidebar + topbar). For a fullscreen scene with no chrome, mark the entry with noShell: true.

shadcn components — catalog

Before creating any component, check whether it already exists in components/ui/. The 55 below cover the original shadcn (except direction — RTL provider — and form — needs react-hook-form). Always import from the corresponding file.

Legend: ⚠️ = visual-only (no runtime interactivity — purely for showing state in a prototype).

ComponentImport
Accordion, AccordionItem~/components/ui/accordion.js
Alert, AlertTitle, AlertDescription~/components/ui/alert.js
AlertDialog, AlertDialogContent,... + openAlertDialog/closeAlertDialog~/components/ui/alert-dialog.js
AspectRatio~/components/ui/aspect-ratio.js
Avatar, AvatarFallback~/components/ui/avatar.js
Badge~/components/ui/badge.js
Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator~/components/ui/breadcrumb.js
Button~/components/ui/button.js
ButtonGroup, ButtonGroupText, ButtonGroupSeparator~/components/ui/button-group.js
Calendar ⚠️~/components/ui/calendar.js
Card, CardHeader, CardTitle, CardDescription, CardAction, CardContent, CardFooter~/components/ui/card.js
Carousel, CarouselContent, CarouselItem, CarouselPrevious ⚠️, CarouselNext ⚠️~/components/ui/carousel.js
ChartContainer, BarChartPlaceholder ⚠️, LineChartPlaceholder ⚠️~/components/ui/chart.js
Checkbox~/components/ui/checkbox.js
Collapsible, CollapsibleTrigger, CollapsibleContent~/components/ui/collapsible.js
Combobox~/components/ui/combobox.js
Command ⚠️ (no live filtering), CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator, CommandShortcut~/components/ui/command.js
ContextMenuTrigger, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuSeparator + useContextMenu()~/components/ui/context-menu.js
Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter + openDialog/closeDialog~/components/ui/dialog.js
Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerDescription, DrawerFooter + openDrawer/closeDrawer~/components/ui/drawer.js
DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator~/components/ui/dropdown-menu.js
Empty, EmptyHeader, EmptyMedia, EmptyTitle, EmptyDescription, EmptyContent~/components/ui/empty.js
FieldSet, FieldLegend, FieldGroup, Field, FieldContent, FieldLabel, FieldDescription, FieldError, FieldSeparator~/components/ui/field.js
HoverCard, HoverCardTrigger, HoverCardContent~/components/ui/hover-card.js
Icon~/components/ui/icon.js
Input~/components/ui/input.js
InputGroup, InputGroupAddon, InputGroupInput, InputGroupText~/components/ui/input-group.js
InputOTP, InputOTPSeparator~/components/ui/input-otp.js
ItemGroup, Item, ItemMedia, ItemContent, ItemTitle, ItemDescription, ItemActions, ItemHeader, ItemFooter, ItemSeparator~/components/ui/item.js
Kbd~/components/ui/kbd.js
Label~/components/ui/label.js
MaskInput (alias for Input — no real mask; use pattern on Input directly)~/components/ui/mask-input.js
Menubar, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem, MenubarSeparator, MenubarShortcut~/components/ui/menubar.js
NativeSelect, NativeSelectGroup, NativeSelectItem (aliases for Select — same impl)~/components/ui/native-select.js
NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink~/components/ui/navigation-menu.js
Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis~/components/ui/pagination.js
PopoverTrigger, PopoverContent~/components/ui/popover.js
Progress~/components/ui/progress.js
RadioGroup, RadioGroupItem~/components/ui/radio-group.js
ResizablePanelGroup, ResizablePanel, ResizableHandle~/components/ui/resizable.js
ScrollArea~/components/ui/scroll-area.js
Select, SelectGroup, SelectItem~/components/ui/select.js
Separator~/components/ui/separator.js
Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription, SheetFooter + openSheet/closeSheet~/components/ui/sheet.js
Sidebar, SidebarHeader, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarGroupContent, SidebarMenu, SidebarMenuItem, SidebarMenuButton, SidebarTrigger ⚠️ (does not collapse — visual only), SidebarInset~/components/ui/sidebar.js
Skeleton~/components/ui/skeleton.js
Slider~/components/ui/slider.js
Toaster, Toast~/components/ui/sonner.js
Spinner~/components/ui/spinner.js
Switch~/components/ui/switch.js
Table, TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, TableCaption~/components/ui/table.js
TabsList, TabsTrigger~/components/ui/tabs.js
Textarea~/components/ui/textarea.js
Toggle~/components/ui/toggle.js
ToggleGroup, ToggleGroupItem~/components/ui/toggle-group.js
Tooltip~/components/ui/tooltip.js

Variants follow shadcn naming: default, secondary, destructive, outline, ghost, link. Sizes: default, sm, lg, icon, icon-sm, icon-lg.

Live reference: the #components route in the template renders all 55 with demos navigable from the sidebar. Use it as a smoke check when wiring up a new scene.

When to create a new component

Only add a new file under components/ui/ if:

  1. You verified — via the table above or by listing components/ui/ — that no equivalent exists.
  2. The component is genuinely reusable (not a scene).

Recipe: copy the original shadcn .tsx (packages/ui/src/components/ui/<name>.tsx in the org), port it to htm/preact keeping the class strings literal, import cn from ./utils.js, delegate behavior to HTML5 when possible (see "Philosophy" above).

Theme

Colors are defined as CSS variables in index.css (light mode: neutral palette with violet --primary). Tailwind v4 maps these variables to utilities via @theme inline in index.html — so bg-primary, text-muted-foreground, border-sidebar-border, etc. work out of the box.

To rebrand: edit --primary and --ring in index.css. For dark mode: duplicate the :root block as [data-theme="dark"] and set data-theme on <html>.

Scroll containment

index.css already contains the z-proto override that pins the stage to the viewport and only allows scroll inside each scene. Every scene root must use flex-1 w-full h-full overflow-y-auto.

Figma export

z-proto integrates with Figma's official capture.js. No third-party plugin required — Figma desktop natively recognizes the pasted payload.

How it works

  1. Set figma-key="YOUR_KEY" on <z-proto> in index.html. The key is generated the first time you use "Paste from Web" in Figma desktop.
  2. Click the "Figma" button in the z-proto header.
  3. z-proto adds #figmacapture={key}&figmaselector=body to the URL and reloads.
  4. Figma's capture.js (loaded at runtime) detects the hash, serializes the DOM with styles/assets/fonts, wraps it in a text/html payload with (figh2d) markers, and writes to the clipboard.
  5. In Figma desktop: Cmd+V → pastes as editable frames.

Prerequisites

  • HTTPS or localhost (clipboard API requires a secure context).
  • Clipboard permission granted to the browser.
  • Up-to-date Figma desktop (native (figh2d) payload reading).

Known limitation

Figma's capture.js is an IIFE that only fires via #figmacapture in the URL — so the page reloads before each capture. This is a property of the official script, not of z-proto. Iterating with capture in a loop means accepting one reload per export.

Selector

Default is body (covers the entire rendered scene, including z-proto chrome if visible). To capture only the scene content, change figmaselector in the hash to #app or another CSS selector.

Rules

  1. Zero build tools. Everything via CDN. No package.json, no bundler, no install step.
  2. Always import components from ~/components/ui/<name>.js. The shadcn catalog (55 components) is already implemented — see the "shadcn components — catalog" table. Never recreate Button, Dialog, Card, etc. locally. Never import from lucide-react, @radix-ui, daisyUI. For icons: <${Icon} icon="lucide:..." />. To add a component that demonstrably does not exist in the catalog, follow the recipe.
  3. Preact + htm. html tagged templates, not JSX. .js files, not .tsx.
  4. Hash routing. Scenes registered in SCENES in index.js. Each scene lives in routes/*.js.
  5. AppShell by default. Every scene renders inside <AppShell> (sidebar + topbar) — except when noShell: true.
  6. Inline mock data. Forms pre-filled, lists hardcoded. No fetching.
  7. One scene per file. Feature-based: routes/inbox/list.js, etc.
  8. Scroll containment. Every scene root needs flex-1 w-full h-full overflow-y-auto.
  9. Colors via shadcn variables. Use bg-primary, text-muted-foreground, border-sidebar-border. Don't use raw colors (bg-violet-500).
  10. For Figma export. Set figma-key on <z-proto>. The reload is part of the official flow.

Discovery

Before creating a proto:

  1. Check whether client-proto/ already exists in the project.
  2. If it does, read client-proto/index.html, index.js, and components/app-shell.js for context.
  3. Read .agents/rules/ for project-specific conventions.
  4. If it doesn't exist, copy templates from the skill.

Before implementing a scene:

  1. Consult the "shadcn components — catalog" table above — the entire shadcn is ready in components/ui/.
  2. For each UI element of the scene (button, modal, sidebar, table, etc.), find the corresponding component.
  3. Only write custom markup for elements that aren't standard shadcn (scene-specific layout/structure).

Checklist

  • client-proto/ is self-contained (no deps beyond CDN)
  • index.html loads Tailwind v4 and iconify-icon from CDN, with @theme inline mapping all shadcn variables
  • index.css contains the z-proto scroll override and the :root block with shadcn variables
  • components/ui/ covers 55 shadcn components (one file each) with literal class strings and cn helper in utils.js. Behavior via native HTML5/CSS (<dialog>, <details>, popover API, scroll-snap, etc.)
  • routes/components.js lists every component in a navigable sidebar with short demos
  • No scene recreates a component that already exists in components/ui/ (Button, Dialog, Card, Table, etc. are imported, not copy-pasted)
  • components/app-shell.js provides sidebar + topbar
  • Hash routing works and the scene picker appears in <z-proto-header>
  • Every scene root has flex-1 w-full h-full overflow-y-auto
  • Icons via <Icon icon="lucide:..." /> (not lucide-react)
  • Forms pre-filled with mock data
  • (Optional) figma-key set on <z-proto> when Figma export is desired; Cmd+V in Figma desktop pastes as editable frames

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

38.83%
按下载量换算34

Claude

29.17%
按下载量换算26

Cursor

17.92%
按下载量换算16

Gemini CLI

8.92%
按下载量换算8

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills