Token导航 LogoToken导航TokenDH.com
前端设计执行命令github未标认证来源可访问许可证需确认审计通过

phoenix-duskmoon-designPhoenix duskmoon 设计

Agent Skill

用于辅助界面设计、视觉规范、排版、配色、布局和交互体验优化。它适合让 Agent 根据产品场景整理页面结构、生成 UI 方案、检查视觉一致性或改进组件层级。使用时需要结合现有品牌、设计系统和用户任务,不应只堆装饰元素;涉及真实页面改动时,应通过截图或浏览器预览检查文本溢出、对齐和响应式表现。

总安装

353

周安装

15

GitHub Stars

公开资料未说明

下载量

124
CodexClaudeCursorGemini CLI

安装说明

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

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

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

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

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/gsmlg-dev/code-agent --skill phoenix-duskmoon-design

简介

用于辅助界面设计、视觉规范和交互体验优化。

  • 适合生成 UI 方案、检查视觉一致性或改进组件层级。
  • 使用时需结合品牌、设计系统和用户任务,避免堆砌装饰元素。
  • 涉及页面改动时应通过截图或浏览器预览检查文本溢出和对齐。
  • phoenix-duskmoon-design 属于前端设计类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Phoenix DuskMoon Design Conventions

Design Thinking

Before building any page or view, commit to an intentional aesthetic direction within the DuskMoon design system:

  • Purpose: What does this page do? Dashboard, form, marketing, admin, content?
  • Density: Dense data UI vs generous editorial spacing — pick one per view
  • Emphasis: Identify the single most important action or content block — that gets primary color; everything else recedes
  • Depth: How many surface layers does this view need? Flat (1-2 levels) vs layered (3-4 levels)

DuskMoon provides the tokens — your job is to use them with intention, not uniformly.


Theme Setup

CSS Entry (Required)

@import "tailwindcss";
@plugin "@duskmoon-dev/core/plugin";
@import "phoenix_duskmoon/components";

HTML Root (Required)

<html lang="en" data-theme="sunshine">

Themes: sunshine (light), moonlight (dark).

Body Base

<body class="bg-surface text-on-surface">

Every page starts on surface with on-surface text. No exceptions.

Theme Switcher

Always include <.dm_theme_switcher /> in the appbar. Requires ThemeSwitcher hook.


Component Default Colors

Page Shell

ComponentColorClass / Pattern
Appbarprimaryappbar appbar-primary appbar-sticky
Page backgroundsurfacebg-surface on <body>
Sidebarsecondarybg-secondary text-secondary-content
Footersurface-container-highbg-surface-container-high
Bottom navprimarycolor="primary"
Drawersecondarybg-secondary text-secondary-content

The appbar is the brand anchor — always primary. The sidebar and drawer use secondary to create a strong navigation identity distinct from the content area. The page body is always surface. Footer uses higher surface elevation for subtle separation.

<.dm_appbar title={@page_title} sticky>
  <:logo>...</:logo>
  <:menu to={~p"/dashboard"} active={@active == :dashboard}>Dashboard</:menu>
  <:user_profile><.dm_theme_switcher /></:user_profile>
</.dm_appbar>

<div class="flex">
  <aside class="bg-secondary text-secondary-content w-64 min-h-screen p-4">
    <.dm_left_menu active={@current_path}>
      <:menu>...</:menu>
    </.dm_left_menu>
  </aside>
  <main class="flex-1 p-6">
    <%= @inner_content %>
  </main>
</div>

<.dm_page_footer label="© 2026 MyApp" />

Actions

ComponentDefaultWhen to Change
Primary buttonvariant="primary"Main page action — one per view
Secondary buttonvariant="secondary"Alternative actions
Tertiary buttonvariant="tertiary"Accent features, special highlights
Destructive buttonvariant="error"Delete, remove, irreversible
Ghost buttonvariant="ghost"Toolbar, low-emphasis, cancel
Link buttonvariant="link"Inline text actions
Outline buttonvariant="outline"Medium emphasis, toggleable
<div class="flex gap-2">
  <.dm_btn variant="ghost">Cancel</.dm_btn>
  <.dm_btn variant="primary">Save Changes</.dm_btn>
</div>

Content

ComponentColorNotes
Cardsurface-containerDefault CSS — no class needed
Card (elevated)surface-container-highAdd shadow="md"
Modal / Dialogsurface-container-highestHighest elevation
Tooltipprimarycolor="primary" default
Popoversurface-container-high
Accordionsurface-container
Bottom sheetsurface-container-high
Snackbarinverse-surface or type-basedUse type for semantic

Data Display

ComponentColorNotes
Badgevariant="primary"Use secondary/tertiary for category differentiation
Chipcolor="primary"Semantic colors for status: success, error
Progresscolor="primary"success for completion, error for limits
Avatarcolor="primary"Initials placeholder color
Statno colorcolor="primary" for key metrics only
Timelinesemantic per itemcompleted = green, active = primary
Tableno colorzebra + hover for readability

Forms

ComponentColorNotes
Inputno colorUses outline border. Set color only for emphasis
Checkboxcolor="primary"
Radiocolor="primary"
Switchcolor="primary"
Selectno color
Slidercolor="primary"
Ratingcolor="primary"warning for star ratings

Feedback

ComponentColorNotes
Alerttype-basedvariant="info", "success", "warning", "error"
Flashkind-based:info, :error
Toasttype-basedAlways set type
Loading spinnervariant="primary"

Navigation

ComponentColorNotes
AppbarprimaryAlways
Navbarsurface-container-highnavbar-surface-container-high
Tabsno colorActive = primary underline
Breadcrumbon-surface-variantMuted text
Stepscolor="primary"Completed = filled, upcoming = outline
Left menusecondaryActive item = primary-content highlight

Color Rules

Rule 1: No Hardcoded Colors

Never use hex, rgb, hsl, named colors, or Tailwind palette classes (bg-blue-500, text-slate-600). All colors from design tokens only.

<%# FORBIDDEN %>
<div style="background: #3b82f6;">
<div class="bg-blue-500 text-white">

<%# CORRECT %>
<div class="bg-primary text-primary-content">

Rule 2: Pair Background + Text

Every background token has a text counterpart. Always use them together.

BackgroundText
bg-primarytext-primary-content
bg-secondarytext-secondary-content
bg-tertiarytext-tertiary-content
bg-surfacetext-on-surface
bg-surface-container-*text-on-surface
bg-primary-containertext-on-primary-container
bg-errortext-error-content
bg-error-containertext-on-error-container
bg-inverse-surfacetext-inverse-on-surface

Rule 3: Surface Elevation — Low to High

Nest surfaces from low to high. Never place lower elevation inside higher.

surface (page)
  ├─ secondary (sidebar, drawer)
  └─ surface-container (card)
       └─ surface-container-high (navbar, popover, elevated card)
            └─ surface-container-highest (dialog, tooltip)

Rule 4: Semantic Colors for States Only

success, warning, error, info communicate state — never for decoration or branding.

<%# CORRECT %>
<.dm_alert variant="error">Validation failed</.dm_alert>
<.dm_badge variant="success">Active</.dm_badge>

<%# WRONG %>
<.dm_btn variant="success">Submit</.dm_btn>   <%# Use primary %>

Rule 5: Primary = Brand, Secondary = Support, Tertiary = Accent

RolePurposeExamples
PrimaryBrand identity, main actions, key focusAppbar, main CTA, active nav
SecondarySupporting actions, alternative emphasisSecondary CTA, toggles
TertiarySpecial highlights, decorative accentsFeature badges, accent cards

Rule 6: One Primary Action Per View

One variant="primary" button per visible section. Supporting actions use secondary, ghost, or outline.

Rule 7: Icons Inherit Color

dm_mdi and dm_bsi default to currentcolor. Do not set explicit color= unless the icon must differ from surrounding text.

Rule 8: Container Colors for Soft Emphasis

Use primary-container / on-primary-container for tinted backgrounds with lower contrast. Good for featured sections, highlight cards, selected states.

<div class="bg-primary-container text-on-primary-container p-4 rounded-lg">
  Featured content with softer emphasis
</div>

Typography

Font Strategy

DuskMoon does not prescribe a typeface — projects choose their own. Rules:

  • Pick a distinctive display font for headings — avoid Inter, Roboto, Arial, system-ui. Load from Google Fonts or self-host.
  • Pair with a clean body font that complements the display choice.
  • Use a monospace font for code blocks — JetBrains Mono, Fira Code, or similar.
  • Define fonts as CSS variables, not inline.
/* Project CSS — after DuskMoon imports */
:root {
  --font-display: 'Instrument Serif', serif;
  --font-body: 'DM Sans', sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
}

body { font-family: var(--font-body); }
h1, h2, h3 { font-family: var(--font-display); }
code, pre { font-family: var(--font-mono); }

Type Scale

ElementClassUsage
Page titletext-3xl font-boldOne per page
Section headingtext-2xl font-semibold
Card titletext-lg font-semibold
Body texttext-baseDefault
Secondary texttext-sm text-on-surface-variantMuted supporting info
Captiontext-xs text-on-surface-variantTimestamps, metadata

Text Color Hierarchy

PriorityTokenUsage
Primary texttext-on-surfaceHeadings, body text, labels
Secondary texttext-on-surface-variantDescriptions, hints, timestamps
Disabled texttext-on-surface-variant with opacity-50Disabled states
Link texttext-primaryClickable inline text

Layout Composition

Spatial Principles

  • Content pages: Generous whitespace — p-6 or p-8 on main, gap-6 between cards
  • Data views: Dense spacing — p-4 on main, gap-3 between items
  • Consistent gaps: Pick one scale per view (gap-4 or gap-6, not mixed)
  • Max width: Content areas should constrain width — max-w-7xl mx-auto for wide, max-w-3xl for text-heavy

Card Grid

<div class="grid grid-cols-auto-fit-80 gap-6">
  <.dm_card :for={item <- @items}>
    <:title><%= item.name %></:title>
    <%= item.description %>
  </.dm_card>
</div>

Sidebar + Content

<div class="flex min-h-screen">
  <aside class="bg-secondary text-secondary-content w-64 border-r border-outline-variant p-4 shrink-0">
    <.dm_left_menu active={@current_path} />
  </aside>
  <main class="flex-1 bg-surface p-6 overflow-auto">
    <%= @inner_content %>
  </main>
</div>

Stacked Sections with Depth

<section class="bg-surface-container-low p-8 rounded-2xl">
  <h2 class="text-2xl font-semibold mb-6">Featured</h2>
  <div class="grid grid-cols-3 gap-4">
    <.dm_card shadow="md">...</.dm_card>
    <.dm_card shadow="md">...</.dm_card>
    <.dm_card shadow="md">...</.dm_card>
  </div>
</section>

Backgrounds & Depth

Surface Layering

Don't use flat pages. Build depth with surface tokens:

<body class="bg-surface text-on-surface">
  <header class="bg-primary text-primary-content">...</header>
  <div class="bg-surface-container-low -mt-8 pt-12 pb-8 rounded-t-3xl">
    <div class="max-w-6xl mx-auto px-6">
      <.dm_card shadow="lg" class="bg-surface-container">
        ...
      </.dm_card>
    </div>
  </div>
</body>

Hero Sections

Use container color gradients for hero areas:

.hero {
  background: linear-gradient(
    135deg,
    var(--color-primary-container) 0%,
    var(--color-tertiary-container) 100%
  );
}

Scrim & Overlays

.overlay {
  background-color: hsl(var(--color-scrim) / 0.5);
  backdrop-filter: blur(4px);
}

Borders & Dividers

  • outline-variant → subtle dividers, decorative borders
  • outline → interactive borders (inputs, focused states)
<hr class="border-outline-variant" />
<div class="border border-outline rounded-lg">Interactive element</div>

Motion & Transitions

Theme Transition

* {
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

Card Hover

.interactive-card {
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.interactive-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

Reduced Motion

Always respect user preference:

@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; }
}

Motion Principles

  • One transition property per interaction — don't animate everything
  • Page-level animations on route change (LiveView transitions)
  • Subtle hover states on cards and buttons — translateY(-2px) max
  • Loading states use dm_loading_spinner or skeleton components — no custom spinners

Anti-Patterns

  1. Tailwind color scale — No bg-blue-500, text-gray-600. Breaks theme switching.
  2. Hardcoded colors — No hex, rgb, hsl, or named colors.
  3. Opacity faking surfaces — No bg-white/80. Use surface-container-* tokens.
  4. Inline color styles — No style="color:...".
  5. Raw HTML over components — Use dm_* components when available.
  6. Uniform primary everywhere — One primary action per view. Supporting actions recede.
  7. Semantic colors as decorationsuccess/error/warning/info are for states only.
  8. Generic fonts — No Inter, Roboto, Arial as conscious choices. Pick distinctive typefaces.
  9. Missing text pairing — Every bg-* needs its text-*-content or text-on-*.
  10. Flat layouts — Use surface elevation for depth. Pages should never feel like a single flat plane.
  11. Timid color usage — A dominant primary with sharp accents outperforms evenly-distributed, wishy-washy palettes. Commit to the hierarchy.
  12. Cookie-cutter pages — Each view type (dashboard, form, content, marketing) should have a distinct spatial composition. Don't copy-paste the same layout everywhere.

适合场景

01

用户想查找某类 Agent Skill 时

02

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

03

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

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

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

能力 4

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

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

平台分布

Codex

35.27%
按下载量换算44

Claude

31.71%
按下载量换算39

Cursor

18.87%
按下载量换算23

Gemini CLI

10.45%
按下载量换算13

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

执行命令

安装流程涉及命令执行,可能通过 npx skills add https://github.com/gsmlg-dev/code-agent --skill phoenix-duskmoon-design 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

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

来源信息

继续浏览同类 Skills