Token导航 LogoToken导航

Agent Skill · 研究检索

ui-cloner-forensic-audit(ui 克隆器取证审计)

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

ui-cloner-forensic-audit 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为权限未标注;许可证信息还不明确,第三方扫描有未通过项,按安装量在研究检索类的 73,675 个 Skill 里排第 59,000。

总安装 396周安装 16GitHub Stars 91下载 124核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

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

请帮我安装这个 Agent Skill:ui-cloner-forensic-audit(ui 克隆器取证审计)
来源仓库:https://github.com/ragnar-pwninskjold/tech-snacks
仓库路径:skills/ui-cloner-forensic-audit
安装命令:
npx skills add https://github.com/ragnar-pwninskjold/tech-snacks --skill ui-cloner-forensic-audit
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/ragnar-pwninskjold/tech-snacks --skill ui-cloner-forensic-audit

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

用于辅助界面设计、视觉规范、排版、配色、布局和交互体验优化。适合根据产品场景整理页面结构、生成 UI 方案或检查视觉一致性。使用时需结合品牌和设计系统,避免堆砌装饰元素;涉及页面改动应通过截图或浏览器预览检查表现。安装方式:通过 npx skills add 命令从指定 GitHub 仓库添加。

注意:需确认宿主环境支持 Codex、Claude、Cursor 或 Gemini CLI。

来源仓库内路径:skills/ui-cloner-forensic-audit

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/ragnar-pwninskjold/tech-snacks --skill ui-clon…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    权限没有明确标注,第一次使用时只给一个无关紧要的任务,观察它到底读了哪些文件和网络。

常见问题

6 条

ui-cloner-forensic-audit 怎么安装?

在终端执行 npx skills add https://github.com/ragnar-pwninskjold/tech-snacks --skill ui-cloner-forensi…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

ui-cloner-forensic-audit 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

ui-cloner-forensic-audit 需要什么权限?

权限级别没有明确标注。第一次使用时建议只给无关紧要的任务,观察它实际读写了哪些内容。

ui-cloner-forensic-audit 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

ui-cloner-forensic-audit 用的人多吗?

公开数据是累计安装 396 次,近一周安装 16 次,下载 124 次,GitHub 91 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

ui-cloner-forensic-audit 安全吗?

第三方扫描有未通过项,风险较高。除非你确认过源码,否则不建议直接安装到常用环境。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
ui-cloner-forensic-audit

ui 克隆器取证审计 · 本页

39691权限未标注未明确未通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

UI Cloner — Phase 1: Forensic Site Audit

Overview

Analyze the target URL with clinical precision across 9 audit steps. The output is a structured Site DNA document that captures every design token, motion pattern, and interaction behavior.

Announce: "Running Phase 1 — Forensic Site Audit on [URL] in [Standard / High-Fidelity] Mode."

Read the AUDIT_MODE flag from plans/01-site-dna.md (set by the entry skill). If AUDIT_MODE: high-fidelity, use the High-Fidelity output formats below for every step. If AUDIT_MODE: standard, use the Standard output formats.


Anti-Flattening Doctrine (Applies to EVERY step)

Flattening is the #1 fidelity killer. Flattening means reducing a rich visual, typographic, layout, or motion detail into a vague summary. Every time you write a description, ask: "Could a developer build this from ONLY what I wrote?" If the answer is no, you have flattened.

Examples of flattening (BANNED):

  • "Large Lottie animation showing phone mockup" → LOST: the 4-5 blurred cards fanned behind the phone
  • "Warm color palette" → LOST: the exact hex codes, where each is used, the hierarchy
  • "Cards stack on scroll" → LOST: sticky top values, shadow treatment, z-index behavior
  • "Text animates in" → LOST: per-word vs per-line, stagger timing, easing curve, delay
  • "Shows app interface" → LOST: what screens, what layout, what content is visible

The correct approach: describe EVERY visual element, EVERY value, EVERY relationship. If a composition has 5 elements, describe all 5. If a color appears in 3 roles, list all 3. If an animation has 4 stages, document all 4. More detail is ALWAYS better than less. The synthesis phase can trim — but it cannot recover what you never captured.


Step 1.1 — Macro Page Architecture

⚠ SECTION IDENTIFICATION (RUN FIRST): Not all sites use <section> tags. Before documenting architecture, determine the site's structural pattern by running:

// Detect top-level page structure
const sections = document.querySelectorAll('body > section, main > section, [role="main"] > section');
const topDivs = document.querySelectorAll('body > div, main > div, [role="main"] > div, #__next > div > div, #app > div > div');
console.log('Section tags found:', sections.length);
console.log('Top-level divs found:', topDivs.length);

// Identify visual sections by finding distinct content blocks
// (elements with significant height that represent page "sections" regardless of tag)
const candidates = sections.length >= 3 ? sections : topDivs;
Array.from(candidates).forEach((el, i) => {
  if (el.offsetHeight > 100) {
    const bg = getComputedStyle(el).backgroundColor;
    console.log(i, el.tagName + '.' + el.className.substring(0,50), el.offsetHeight + 'px', 'bg:' + bg);
  }
});

Use <section> tags as section boundaries if the site has 3+ of them. Otherwise, treat top-level <div> children of <main>, <body>, or the framework root (#__next > div, #app > div, etc.) as the section boundaries. Document which strategy you used at the top of the architecture block. In all subsequent steps, "section" refers to whichever structural unit you identified here — not necessarily a <section> HTML tag.

Standard: Document total section count, grid philosophy (full-bleed? constrained? asymmetric?), whitespace rhythm, section stacking logic, and approximate aspect ratios.

High-Fidelity: Produce a vertical ASCII wireframe of the ENTIRE page:

PAGE ARCHITECTURE: [Site Name] — [URL]
Total viewport sections: [N]
╔══════════════════════════════════════════════════════╗
║  SECTION 1: [Name]                    HEIGHT: [100vh/auto/Xpx]  ║
║  BG: [solid #hex / gradient / image+overlay]         ║
║  LAYOUT: [full-bleed / max-w-Xpx centered / asymmetric] ║
╠══════════════════════════════════════════════════════╣
║  SECTION 2: [Name]                    HEIGHT: [...]  ║
║  BG: [...]                                           ║
║  LAYOUT: [...]                                       ║
╠══════════════════════════════════════════════════════╣
[... repeat for all sections ...]
╚══════════════════════════════════════════════════════╝

Note any OVERLAPPING sections (negative margins, absolute positioning bleeding between sections).

⚠ TALL SECTION SCROLL MANDATE: For any section with height > 2000px, you MUST:

  1. Count ALL direct children of the deepest content container (not just the first few)
  2. Scroll through the section in ~500px increments, taking a screenshot at each stop
  3. Document every distinct component found — components at the END of a tall section are the most likely to be missed
  4. Never assume a section contains only one type of component based on the first few children

Step 1.2 — Design Token Extraction

Standard: Extract hex/rgba for body background, primary headings, buttons, links, accent elements. Name semantically. Extract font-family, font-weight, font-size, letter-spacing, line-height for h1–h3, body, labels. Document spacing grid, border-radius, shadow system.

High-Fidelity: Use DevTools Computed Styles panel. Run in console:

// Color sweep:
const allElements = document.querySelectorAll('*');
const colors = new Set();
allElements.forEach(el => {
  const s = getComputedStyle(el);
  ['color','backgroundColor','borderColor','fill','stroke'].forEach(p => {
    const v = s[p]; if (v && v !== 'rgba(0, 0, 0, 0)' && v !== 'transparent') colors.add(v);
  });
});
console.log([...colors].join('\n'));
// Font detection:
const fonts = new Set();
allElements.forEach(el => fonts.add(getComputedStyle(el).fontFamily));
console.log([...fonts].join('\n'));

Produce this structured token document:

DESIGN TOKENS
─────────────────────────────────────────────────────
PALETTE:
  [Semantic Name] "[Word Name]":  #XXXXXX / rgb(X,X,X)   → [where used: e.g., "section backgrounds, card fills"]
  [... all colors ...]

TYPOGRAPHY SCALE:
  [Role]     | Font Family              | Weight | Size          | Tracking    | Line-Height | Style
  ──────────────────────────────────────────────────────────────────────────────────────────
  Display    | [font name]              | [wt]   | clamp(X,Xvw,X)| [em/px]    | [ratio]     | [italic?]
  Heading 1  | [font name]              | [wt]   | [rem]         | [em]        | [ratio]     | normal
  Heading 2  | [font name]              | [wt]   | [rem]         | [em]        | [ratio]     | normal
  Body       | [font name]              | [wt]   | [rem]         | [em]        | [ratio]     | normal
  Label      | [font name]              | [wt]   | [rem]         | [em]        | [ratio]     | uppercase
  Mono/Data  | [font name]              | [wt]   | [rem]         | [em]        | [ratio]     | normal
  ⚑ DRAMA NOTES: [Describe the KEY typographic contrast that creates visual impact. e.g., "The juxtaposition of 800-weight sans at 3rem with 300-weight serif italic at 9rem IS the hero's drama. Do not lose this ratio."]

SPACING GRID: Base unit = [Xpx]. Scale: [list: 4, 8, 16, 24, 32, 48, 64, 96...]
BORDER RADIUS: [size]: [Xpx/rem] — used on [element type]
               [size]: [Xpx/rem] — used on [element type]
SHADOW SYSTEM: [level]: [full box-shadow value]
TEXTURE: [noise overlay / grain / none — method + opacity]
─────────────────────────────────────────────────────

Step 1.3 — Section Blueprints (Repeat for EVERY section)

Standard: For each section document: background treatment, image/filter effects, gradient directions and stop values, glass/frosted effects.

⚠ SUB-SECTION DISCOVERY (MANDATORY — DO NOT SKIP): After identifying the primary layout pattern of each section, you MUST enumerate ALL direct children at EVERY nesting level down to the first content container. The goal is to catch mixed component types sharing a parent — e.g., 3 cards with class .card plus a 4th sibling with class .map_stats that has a completely different layout. These mismatched siblings are the #1 source of missed components.

Why this matters: Sites frequently nest visually distinct content blocks (maps, stats panels, secondary CTAs, media embeds, spacers) as siblings alongside repeating components. They won't share the repeating component's class name, so querying by a specific class (e.g., .card) will miss them. You MUST query by parent children, not by component class.

Procedure for EVERY section:

  1. Find the section's deepest content-holding container (the element whose direct children ARE the visual components)
  2. Enumerate ALL children of that container — not just the ones matching an expected pattern
  3. For EACH child, log: index, tagName, className, offsetHeight, position, top, and first 80 chars of textContent
  4. If any child has a different class name from the majority, a different height (>30% deviation), or different position value — flag it as a potential sub-section and investigate fully
  5. If the section height is >2x viewport (>2000px), you MUST scroll through its FULL height taking screenshots at intervals to catch components only visible mid-scroll

Run this console snippet per section (replace SECTION_SELECTOR):

// EXHAUSTIVE child enumeration — catches mixed component types
const sec = document.querySelector('SECTION_SELECTOR');
// Drill down to the content container: try multiple nesting depths
let wrapper = sec;
for (let d = 0; d < 5; d++) {
  const children = Array.from(wrapper.children).filter(c => c.offsetHeight > 50);
  if (children.length >= 2) break; // Found the level with multiple content children
  if (children.length === 1) { wrapper = children[0]; continue; }
  break;
}
// Now enumerate ALL children — DO NOT filter by class name
const classCount = {};
Array.from(wrapper.children).forEach((child, i) => {
  const cls = child.className.split(' ')[0] || 'no-class';
  classCount[cls] = (classCount[cls] || 0) + 1;
  const s = getComputedStyle(child);
  console.log(
    'CHILD[' + i + ']',
    child.tagName + '.' + child.className.substring(0,50),
    'H:' + child.offsetHeight + 'px',
    'pos:' + s.position,
    'top:' + s.top,
    'bg:' + s.backgroundColor,
    '"' + child.textContent.trim().substring(0,60) + '"'
  );
});
// Flag orphans — children whose class appears only once (likely different component type)
Object.entries(classCount).forEach(([cls, count]) => {
  if (count === 1) console.log('⚠ ORPHAN CLASS (appears once): ' + cls + ' — investigate as potential sub-section');
});

If ANY orphan classes are found, or if any child has height >30% different from siblings, you MUST create a full wireframe and content map for that child as a named SUB-SECTION using the format SECTION [N].[letter]: [NAME].

High-Fidelity: For each section (and each discovered sub-section) produce TWO outputs:

A) INTERNAL ASCII WIREFRAME:

SECTION [N]: [NAME]
Height: [value] | BG: [treatment] | Padding: [top Xpx / sides Xpx]
Content max-width: [Xpx or full-bleed]
┌─────────────────────────────────────────────────────┐
│                                                     │
│  ┌──────────────────┐  ┌────────────────────────┐  │
│  │  LEFT COLUMN     │  │  RIGHT COLUMN          │  │
│  │  [~X% width]     │  │  [~X% width]           │  │
│  │                  │  │                        │  │
│  │  [element type]  │  │  [element type]        │  │
│  │  [element type]  │  │                        │  │
│  └──────────────────┘  └────────────────────────┘  │
│                                                     │
└─────────────────────────────────────────────────────┘
Layout system: [CSS Grid: Xfr Xfr / Flexbox row / Flexbox col / Absolute]
Gap: [Xpx/rem]

B) TYPOGRAPHY + CONTENT MAP:

CONTENT MAP: Section [N]
  [element] → "[exact text or placeholder description]" | Style: [Display/H1/Body/Label] | Color: [token name]
  [element] → "[...]" | Style: [...] | Color: [...]
  [CTA/button] → "[label]" | Style: [...] | BG: [...] | Type: [primary/secondary/ghost]

Step 1.3b — Visual Composition Inventory (MANDATORY for Hero + Key Visual Sections)

Why this exists: Hero sections and visual centerpieces often contain their most distinctive design elements inside opaque media — Lottie animations, inline SVGs, canvas elements, or background images. These elements are INVISIBLE to DOM queries. A Lottie is one <svg> node in the DOM, but it may render a complex composition of 10+ visual elements. If you describe a Lottie as "shows phone mockup with app UI," you have destroyed the design.

Trigger: Run this step for:

  • The hero section (always)
  • Any section with a Lottie, canvas, or large inline SVG as its visual centerpiece
  • Any section where a single DOM element renders a complex visual scene

Procedure:

  1. Take a full-viewport screenshot of the section at its most visually complete state
  2. Identify EVERY distinct visual element in the composition — count them
  3. Produce a COMPOSITION MAP using this format:
COMPOSITION MAP: [Section Name]
Element count: [N] distinct visual objects

CENTER:    [primary element — device, illustration, etc.]
           Size: [dimensions], Position: [centered/offset], Z-index: [front]

BEHIND:    [background elements that create depth/spread]
           Count: [N], Arrangement: [fanned/grid/scattered/radial]
           Per-element: size, rotation, blur, opacity, position relative to center
           Example: "4 app screenshot cards, 240x380px each, fanned in radial arc
                     at -8deg/-4deg/+4deg/+8deg, blur(2px), opacity 0.25-0.3,
                     positioned 60-120px from center"

FLANKING:  [side elements at the same visual plane as center]
ABOVE:     [overlapping elements in front of center]
AMBIENT:   [atmospheric effects — gradients, glows, particles, halos]
           Gradient specs: type, direction, color stops with exact values
  1. For Lottie/SVG/canvas elements specifically:

- You CANNOT inspect internals via DOM queries — rely on the screenshot - Describe the INITIAL rendered frame AND the animated state (if different) - Count every distinct visual object: devices, cards, shapes, icons, text blocks - Note spatial relationships: what overlaps what, what's in front/behind - Note visual treatments per element: blur amount, opacity, rotation angle, scale

  1. NEVER reduce a multi-element composition to a single-line description. If you see a phone with cards behind it, you must describe the phone AND every card.

Anti-Flattening Check: Before moving to the next step, re-read your composition map and ask: "If I handed this to an illustrator who has never seen the site, could they recreate this composition?" If not, add more detail.


Step 1.4 — Scroll & Entrance Animation Audit

Standard: Scroll slowly top to bottom. For each animation record: trigger type, target element, animation type (fade-up/scale-in/clip-reveal/etc.), duration estimate, easing feel, stagger offset.

High-Fidelity: Use this exact timeline format for EVERY animated element:

ANIMATION: [Descriptive Name]
Section: [which section]
Trigger: [page-load / scroll-enter(top Xvh) / hover / click / auto-interval(Xms)]
Library: [GSAP / CSS / Framer / unknown]
TIMELINE:
  t=0ms     [element name]   FROM: opacity:0, transform:translateY(30px)   → no change yet
  t=200ms   [element name]   TO:   opacity:1, transform:translateY(0)      DURATION:600ms  EASING:ease-out
  t=350ms   [element name]   TO:   opacity:1, transform:translateY(0)      DURATION:700ms  EASING:cubic-bezier(0.34,1.56,0.64,1)
PROPERTIES ANIMATED: [opacity / transform / filter / clip-path / color / etc.]
LOOP: [yes/no — if yes, describe loop behavior]
RESET: [does it reset on scroll-out?]

To find exact easing values: Elements panel → select animated element → Animations tab. Or console: getComputedStyle(document.querySelector('[selector]')).transition

OPAQUE MEDIA DECOMPOSITION (Lottie / SVG / Canvas): When an animation is rendered by Lottie, complex SVG, or canvas — you cannot read its internals from the DOM. Do NOT describe it as a single unit. Instead:

  1. Take a screenshot of its rendered state
  2. Cross-reference with your Step 1.3b Composition Map
  3. Document what the animation DOES to each element in the composition (not just "Lottie plays")
  4. If the Lottie animates elements into position (e.g., cards fan out, phone scales up), describe the before and after states of EACH element

Step 1.5 — Micro-Interaction Catalog

Standard: Hover every interactive element. Document: nav hover states, button hover, card hover, custom cursor behavior, form focus states.

High-Fidelity: For each interactive element, produce a property diff table:

INTERACTION: [Element Name / Type]
Selector hint: [.class-name or describe location]
STATE         | background              | color      | transform       | box-shadow                    | other
──────────────────────────────────────────────────────────────────────────────────────────────────────────
DEFAULT       | #XXXXXX                 | #XXXXXX    | scale(1)        | none                          | border: 1px solid #XXX
HOVER         | #XXXXXX (slide from L)  | #XXXXXX    | scale(1.02)     | 0 8px 24px rgba(0,0,0,0.15)   | –
ACTIVE/CLICK  | #XXXXXX                 | #XXXXXX    | scale(0.97)     | none                          | –
FOCUS         | –                       | –          | –               | 0 0 0 3px rgba(X,X,X,0.3)    | –
MECHANISM: [CSS transition / GSAP / pseudo-element slide / etc.]
DURATION: [Xms]  EASING: [value or description]
⚑ SPECIAL BEHAVIOR: [e.g., "overflow:hidden with ::before pseudo-element translating from -100% to 0 creates the background slide effect — NOT a color transition"]

Step 1.6 — Component Behavior Deep-Dive

Standard: Document stateful/interactive components: carousels, accordions, tab systems, sticky elements, nav morphing, typewriter effects, number animations, cursor-following effects.

High-Fidelity: For any component that cycles, toggles, or has internal state:

STATE MACHINE: [Component Name]
Location: Section [N]
Type: [Cycler / Toggle / Sequence / Morphing / Typewriter]
STATES:
  State A: [describe visual state — what's visible, what positions]
  State B: [describe visual state]
  State C: [if applicable]
INITIAL STATE: [A/B/C]
TRANSITION A→B:
  Trigger: [user action / timer(Xms) / scroll position]
  Element 1: [property] animates [from → to] over [Xms] with [easing]
  Element 2: [property] animates [from → to] over [Xms] with [easing / delay: Xms]
  Data logic: [e.g., "array.push(array.shift()) rotates items", "currentIndex = (currentIndex + 1) % items.length"]
TRANSITION B→C: [same format]
LOOP: [infinite / user-controlled / N times]
INTERNAL LAYOUT:
  Container: [dimensions, position, overflow]
  Each state element: [dimensions, default position, z-index logic]

Step 1.7 — Scroll Choreography Map

Standard: Note parallax elements and their approximate scroll speed, sticky element thresholds, and nav state change trigger point.

High-Fidelity: After scrolling the entire page, produce this scroll position → event map:

SCROLL CHOREOGRAPHY MAP
─────────────────────────────────────────────────────────────────────
Scroll %  │ Viewport Position    │ Event / Animation Trigger
─────────────────────────────────────────────────────────────────────
0%        │ Page load            │ [Hero animations begin]
~X%       │ [element] enters vh  │ [what triggers]
~X%       │ [element] enters vh  │ [what triggers]
[...]
─────────────────────────────────────────────────────────────────────
SCROLL BEHAVIORS:
  Parallax elements: [list elements and their scroll speed multiplier]
  Sticky elements: [which elements, at what scroll position, when they unstick]
  Nav state change: [exact scroll threshold where nav changes appearance]

Step 1.8 — Technical Stack Detection

Standard: Run basic stack detection in browser console. Check <script> tags for CDN links. Note Tailwind class patterns or CSS Modules naming.

High-Fidelity: Run in DevTools console:

const stack = {
  gsap: typeof gsap !== 'undefined' ? gsap.version : false,
  framerMotion: !!document.querySelector('[data-framer-component-type]'),
  threeJS: typeof THREE !== 'undefined',
  react: !!(document.querySelector('[data-reactroot]') || window.__REACT_DEVTOOLS_GLOBAL_HOOK__),
  vue: !!document.querySelector('[data-v-app]'),
  alpine: typeof Alpine !== 'undefined',
  lenis: typeof Lenis !== 'undefined' || typeof lenis !== 'undefined',
  locomotive: !!document.querySelector('[data-scroll-container]'),
  tailwind: !!document.querySelector('[class*="flex-"]') || !!document.querySelector('[class*="text-"]'),
};
console.table(stack);
document.querySelectorAll('script[src]').forEach(s => {
  if (s.src.match(/gsap|framer|lottie|three|swiper|aos|scrollmagic|anime/i))
    console.log('Library detected:', s.src);
});

Document findings:

TECHNICAL STACK
  Framework: [React/Vue/Svelte/Vanilla — confidence: high/medium/inferred]
  Animation: [GSAP X.X / Framer Motion / CSS only / Anime.js / etc.]
  Scroll:    [GSAP ScrollTrigger / Lenis / Locomotive / native]
  UI Lib:    [Tailwind / CSS Modules / Styled Components / etc.]
  Other:     [any other detected libraries]

Step 1.9 — Motion Philosophy + Copy Voice

Standard: Write 3–5 sentences describing the gestalt motion philosophy. Note copy tone, sentence length pattern, rhetorical devices, key structural patterns.

High-Fidelity:

MOTION PHILOSOPHY:
[3–5 sentence gestalt description. Address: Is the motion physics-based (springy/weighted)?
Cinematic (slow/deliberate)? Functional (fast/subtle)? What emotional state does the motion
PRODUCE in the viewer? What would be lost if all animations were removed?]

COPY VOICE PATTERN:
  Tone:          [clinical / warm / bold / philosophical / conversational / provocative]
  Sentence form: [fragments / full sentences / mix — with example]
  Key device:    [contrast/paradox / direct address / aspirational / question-answer / etc.]
  Example pattern: "[quote an actual structural pattern used, e.g., 'Modern X asks: Y. We ask: Z.']"

Output: Site DNA Document

Compile all findings into a structured block titled ## SITE DNA before proceeding.

Standard mode: Format clearly with all extracted values — hex codes, timing estimates, named components, verbatim copy samples.

High-Fidelity mode: Every section must include: ASCII wireframe (1.1, 1.3), design token table (1.2), animation timelines with t=Xms notation (1.4), property diff tables (1.5), state machines (1.6), scroll choreography map (1.7), stack table (1.8), motion + copy voice blocks (1.9). No section may use prose where a structured artifact format is specified. Every time you abstract or summarize instead of documenting precisely, fidelity is permanently lost.

Save output: Write the full Site DNA (with AUDIT_MODE flag at top) to plans/01-site-dna.md in the current project directory. Create the plans/ directory if it doesn't exist.

When complete: Invoke ui-cloner-brand-interview to begin Phase 2.

平台分布

Claude

32.38%
按下载量换算40

Codex

31.46%
按下载量换算39

Cursor

19.06%
按下载量换算24

Gemini CLI

9.32%
按下载量换算12

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

未通过

权限和风险

权限未标注

当前来源未能明确判断权限范围,默认进入异常复核队列。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills