Extract

educlopez/ui-craft/.agents/skills/extract

作者 educlopezceecc8e1fb0c2befda73da996435900d6dd0c1ac無授權條款375 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫5 週前更新

Refactoring pass — extracts repeated Tailwind class combos and markup into components, and lifts magic values into design tokens. Use when the codebase has obvious duplication, hardcoded hex values or pixel sizes, or when the user says "clean this up" / "extract components" / "tokenize styles". Invoke when the user asks for extract on their UI, or mentions 'extract' alongside design / UI / frontend work.

AI 產生的概覽

透過把重複的 Tailwind 類別組合與標記抽出為元件、把硬編碼值抽出為設計權杖,重構前端 UI 程式碼。

功能
此技能會對 UI 程式碼庫執行一次重構:掃描重複出現的 Tailwind 類別組合、重複標記,以及十六進位色碼、像素尺寸、陰影、字級與 z-index 等字面魔法值。它會建立新的元件檔案與權杖補充,沿用專案現有的命名、目錄位置與權杖慣例,並更新所有呼叫點。產出包含新元件檔案、呼叫點變更表格,以及一行摘要說明抽出的元件與權杖數量。
適用情境
當程式碼庫出現明顯重複、硬編碼十六進位值或像素尺寸時使用,也適合使用者要求清理程式碼、抽出元件或將樣式權杖化時。它面向設計、UI 或前端工作中需要合併重複模式的情境。
執行需求
僅有指令,未附指令碼。需要含 Tailwind 類別的 UI 程式碼庫,最好已安裝上層的 ui-craft 技能,並需要 references/layout.md、references/typography.md、references/color.md 等參考檔案。
<!-- HARNESS MIRROR — do not edit here. Canonical source: skills/ or commands/. After editing source, copy into cli/assets/<harness>/ and repo-root harness mirrors. -->

Context: this sub-skill is one lens of the broader ui-craft skill. If the ui-craft skill is also installed, read its SKILL.md first for Discovery + Anti-Slop + Craft Test, then apply the specific lens below.

Extract reusable pieces from $ARGUMENTS. Load the ui-craft skill.

Step 1 — Scan the target for extraction candidates:

  • Repeated Tailwind class combos — any class string that appears ≥3 times becomes a component (or a cva/tv variant if the project uses one — check first).
  • Magic values — hex colors, pixel sizes, shadow definitions, font sizes, z-index values appearing in literal form. Lift into CSS variables or theme.extend.
  • Repeated markup — blocks that differ only by text/props collapse into a single component with props.

Step 2 — Match the project's conventions, don't impose new ones:

  • Naming — look at neighboring components. PascalCase file? kebab-case file? Named export vs default export? Match exactly.
  • Location — check components/ui/, ui/, primitives/, src/components/ before creating a new directory. Reuse.
  • Tokens — respect existing CSS variable naming (--color-*, --space-*, --font-*, --radius-*). Don't introduce a parallel system.

Step 3 — Anti-Slop Test on every new component (from SKILL.md):

  • Component name must be domain-specific, not generic. MetricCard / PricingTier / InviteRow beats Card / Box / Item.
  • If the component is generic ("a card with a title and description"), ask yourself whether it should instead be an inline composition — premature abstraction is worse than repetition.

Step 4 — Update every call-site. No half-migrations.

Knob-agnostic — DRY is not tunable.

References to read: references/layout.md (composition patterns), references/typography.md and references/color.md (token naming), plus the project's existing component library (scan before writing).

Output:

  1. The new component file(s) + any token additions.
  2. A table showing every call-site update:
FileBeforeAfter
  1. A one-line delta: "Extracted N components, M tokens. Call-sites updated: X."

Next step: /tokens — lift the values you just centralized into the token spine (rung 2).

來源與署名

來源:educlopez/ui-craft位於.agents/skills/extract提交ceecc8e

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架