複数のアプリやMCPホストからブランド画像・動画を生成、調整、書き出し、挿入する作業を支援します。ライブラリ選択や修正依頼も扱います。
- スライド用のブランド画像を作りたいとき
- 既存素材をフィードバックに合わせて直したいとき
- 動画素材を生成して書き出したいとき
画面の目的や使う人に合った見た目と情報配置を決め、既存のデザインシステムやアクセシビリティに配慮したUI実装を導きます。
Sets the visual direction for UI work, avoiding generic AI aesthetics. Use for any user-facing UI change: new surfaces, screenshot-driven feedback, copy/density cleanup, settings, control placement, or a "make this look good" pass. Do not load it only for purely mechanical wiring or formatting.
実行スコア 未検証
インストール方法を見るユーザー向け画面を作る前に、利用者や作業の流れに合う見た目の方向性を定め、実際に動くUIとして実装するための指針を提供します。情報の優先順位、文字や余白の使い方、色、動き、画面幅への対応を検討し、既存のブランドやデザインシステムがあればそれに沿います。操作への即時フィードバック、読み込み中・空・エラー時の表示、フォーカス状態、アクセシビリティも扱います。新しい画面だけでなく、スクリーンショットを見ながらの調整、説明文の整理、設定項目や操作部品の配置見直しにも使えます。
画面やコンポーネントを新設するとき、既存UIを使いやすく整えたいとき、見た目が一般的なテンプレートに寄っていると感じるときに向いています。画面の情報量を保ちながら説明や装飾を整理したい場合や、狭い画面と通常画面の両方で操作性を確認したい場合にも役立ちます。機械的な配線や書式調整だけの作業には、主な対象ではありません。
ライセンス条件は付属のLICENSE.txtに記載されています。ReactとViteを使うAgent-Nativeアプリ向けの規則を含み、UI変更の内容に応じて既存チェックや画面確認を行います。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
This skill guides creation of distinctive, production-grade frontend interfaces. Implement real working code with strong product judgment, excellent accessibility, and a clear visual point of view.
The user may ask for a component, page, full app, dashboard, marketing surface, or restyle. Before coding, understand the audience and pick a direction that fits the product instead of defaulting to generic SaaS polish.
Before coding, decide:
Then implement working code that is cohesive, accessible, responsive, and polished in small details: typography, spacing, motion, empty states, loading states, focus states, and error states. Polish means removing copy, not writing more of it.
Before styling a new app or workspace surface, define its product mode,
audience, visual world, palette family, type treatment, composition, shape
language, and anti-references in DESIGN.md. Read
references/visual-direction.md for the direction families and review
vocabulary. This is the Impeccable-inspired design contract for Agent-Native
apps: understand the product, name the mode, deal a few coherent directions,
commit to one, and audit the result instead of averaging back to a starter.
Preserve an existing brand system and component library. When no brand exists, choose a deliberate direction based on the domain and compare sibling apps before selecting its accent family. Shared behavior and semantic token names should stay consistent; palette, density, composition, type contrast, and shape language should not be identical by default.
Use the Nielsen response-time limits, Google RAIL, and the Doherty threshold as product defaults:
This is the most repeated correction in this repo, tracked as text-heavy-ui in
node scripts/agent-friction-report.mjs. Every item below has been asked for by
name more than once, usually right after a previous surface was corrected for the
same thing. So treat the list as the default shape you apply, not a tradeoff you
weigh per surface. If the user wants one of these, they will ask.
Density comes from data, not from prose. Linear, Vercel, and ChatGPT/Codex are dense — with rows, values, and state, and almost no explanatory sentences. That is the target: a surface full of information and nearly empty of narration. So "make it minimal" is never satisfied by removing data or by burying it behind extra clicks, and never blocked by deleting a sentence.
Keep on-screen text and badging minimal: show the shortest label needed for the next action, remove decorative or duplicate status chips, and put context in a tooltip or progressive disclosure when it is not needed to decide.
Do not add, unless asked:
The explanation goes in a tooltip, a Manage popover, a menu, or nowhere.
Settings use one shape: a compact row with the label and its current state, one
action on the right, and Manage revealing the form once something is
configured. Do not spell every input out on the default surface.
Chrome is not content. These rules govern strings you write into JSX. A
description the user typed and the app stored is data — render it, and render
nothing when it is empty. Never add a || "No description yet." fallback; an
empty field is empty, not an opening to explain the feature.
A multi-step connect flow the user accepted on 2026-08-12, after rejecting a dense dialog of the same content as "HORRIBLE ... overwhelming":
Use that same treatment for sibling flows. When the user points at another
surface — "like forms", "like the integrations grid" — copy that surface's
structure instead of inventing a second language for the same job.
templates/forms/ is the reference implementation: no page title, no
breadcrumbs, no eyebrows, no card descriptions, and row subtext only where it
renders a user-authored field.
Before shipping, verify collapsed, expanded, loading, empty, error, and
narrow-width states. The default state fails review when its first viewport
carries explanatory paragraphs, several unrelated forms, or controls for another
task. guard:no-default-chrome checks the structural half of this on lines your
branch adds; it cannot see a sentence you wrote, so the list above is still
yours to apply.
transition-all — list the properties that actually change (e.g. transition-[opacity,transform]). Use the shared easing tokens defined in packages/core/src/styles/agent-native.css instead of hand-typing curves: var(--ease-drawer) (260ms, drawers/app chrome), var(--ease-collapse) (200ms, expand/collapse), var(--ease-out-strong) (snappy entrances) — in Tailwind, ease-[var(--ease-collapse)]. Enter/exit with ease-out, never ease-in. Overlays that zoom in must set the Radix origin var (e.g. origin-[--radix-popover-content-transform-origin]). Animate transform/opacity, not width/height/padding/box-shadow. Gate looping or large-movement animations with motion-reduce:. Command palettes and keyboard-triggered actions get no animation.Beat convergence, not just defaults. You sample toward the "on-distribution" center, so naming what to avoid is not enough: every "don't" needs a "do", or you converge on the next safe option. Commit to one named direction, pair any reference with the reason it fits, and match implementation effort to the vision. If the brief is open, consider two or three coherent visual worlds, then commit to one instead of averaging them. When building on an existing app, inspect its tokens/type/components first and treat any drift back to a default as a missing token to pin, not something to re-prompt.
@tabler/icons-react, but an app may register a different
company design system in app/design-system.ts.app/design-system.ts, ToolkitProvider, and the local UI adapter directory
before choosing a primitive. Use shadcn primitives when they are the active
adapter; use the registered company components when they are not.shadcn-ui if it exists. That skill covers components.json, CLI docs, component composition, theming, and registry workflows.app/components/ui/ before importing a shadcn component. If a primitive is missing, add it from the app root with pnpm dlx shadcn@latest add <component>, then review the generated file.@/components/ui/*. Never import
@agent-native/toolkit/ui/* directly in app product code.@agent-native/toolkit/design-system. Their props express intent, emphasis,
size, controlled values, and behavior; they do not require Tailwind, CVA, or
className.window.alert, window.confirm, window.prompt). Use AlertDialog, Dialog, or app-specific confirmation UI.IconPartyPopper or IconConfettiCannon feel
plausible but don't exist and crash Vite with a "Named export not found" error. Before importing
an icon you haven't used elsewhere in this app, confirm it exists by grepping
node_modules/@tabler/icons-react/dist/tabler-icons-react.d.ts (or the package's icon list)
for the exact name, and pick the closest real match if your first guess isn't there.size-3 (12px) or smaller than the adjacent text. Preserve a larger hit area on the trigger, not the glyph. Use guard:allow-large-help-icon only for deliberate heading documentation or menu action exceptions.useActionQuery and useActionMutation from @agent-native/core/client for action-backed UI. Standard CRUD should go through actions, not custom /api/ routes./automations, /block, or
/workflow. Preserve the starter's full-page chat route (/ or /chat/*)
when it exists; do not replace it with a domain form while leaving the shell
configured as if it were chat.AgentSidebar for contextual AI. A button that
sends work to sendToAgentChat must open or focus that sidebar and leave the
user on the current domain surface. Use full-page chat for chat-first work,
not as a hidden transport for a domain button.sendToAgentChat with bounded context, openSidebar: true, and the intended
submit mode. A deterministic local action is useful, but label it local,
preview, or analyze rather than implying it invoked an agent.Before shipping a new app or a substantial redesign, review the surface as an operator would use it repeatedly:
variant, size) before overriding classes.bg-background, text-muted-foreground, border-border, bg-primary) instead of raw Tailwind colors for app chrome and reusable components.gap-* in flex/grid layouts instead of space-x-* or space-y-*.size-* when width and height are equal, and truncate instead of spelling out overflow/ellipsis/nowrap.cn() from the local utils alias for conditional classes.sr-only only when the visible design already communicates the title.SelectGroup, DropdownMenuGroup, CommandGroup, and equivalents.CardHeader, CardTitle, CardContent, and CardFooter. Do not add CardDescription, and do not hand-roll a muted <p> under a CardTitle — a card gets a title or a description, never both.ToggleGroup for small option sets, Switch for binary settings, Checkbox for multi-select, RadioGroup for one-of-many, and Slider/inputs for numeric values.Field, FieldGroup, or InputGroup primitives are installed or appropriate to add, use them instead of raw layout divs.Skeleton geometry. Do
not show generic "Loading..." text for content loads; reserve Spinner for
brief mutations, uploads, and progress actions. Use the app's existing
loading primitive when it is a genuine design-system adapter. Empty states
should communicate the state and offer the appropriate next step or small set
of choices.Avoid patterns that add visual noise, obscure state, or compete with the user's task without a clear product reason:
Match verification effort to the size of the change. For one component, one
form, one page, or a restyle, run the app's existing checks — formatter,
pnpm typecheck, existing tests — and stop there.
Escalate to browser verification only when the user asks for it, or when the change is a multi-step user-visible flow that cannot be confirmed any other way. Never author a new Playwright/Puppeteer script, add a browser-automation dependency, or stand up an e2e harness to check work the user did not ask you to test that way; use an available browser tool, or say what you could not verify.
For substantial frontend work:
@agent-native/toolkit/conformance, including mixed-overlay focus,
portalContainer, and z-index stacking checks.DESIGN.md against the rendered
surface and run the anti-slop audit in references/visual-direction.md.useActionQuery/useActionMutation hooks for frontend data fetchingまだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
複数のアプリやMCPホストからブランド画像・動画を生成、調整、書き出し、挿入する作業を支援します。ライブラリ選択や修正依頼も扱います。
特定の顧客企業について、契約と製品利用の数値を照らし合わせ、根拠や不足情報を明記した健全性レポートをまとめます。
アプリの操作をエージェントと画面の両方から呼び出せるアクションとして実装し、API連携や画面のデータ取得を一貫した形で追加するスキルです。
新機能をUI・エージェント用アクション・説明資料・画面状態の4領域でそろえ、利用者とエージェントのどちらからも一貫して使えるようにするチェックリストです。
複数のデータソースを照合して、傾向や指標、根拠をまとめた分析結果を作成します。必要に応じて、再実行できるダッシュボードとして保存できます。
Analyticsの管理画面で、機能フラグの状態確認と切り替え、ダッシュボード利用状況の調査、接続先アプリのデータベース管理を行います。