Home / All Skills / Design & Motion / wireframe-sketch
Design & Motion · nexu-io/html-anything

wireframe-sketch

Grid background + marker brushstrokes + multi-tabs + sticky notes + scribble charts

L1 Basic · Source registration onlyV1 Commit-PinnedDual-pass Audit
Author nexu-ioGitHub nexu-io/html-anything ↗Stars 8827License Apache-2.0(仓库根 LICENSE 文件;GitHub API license.spdx_id = Apache-2.0)Commit 553ed98c28
Control levels describe skill capabilities and suggested control measures; they do not represent quality or safety certifications, nor do they dictate usability. Usage decisions rest entirely with users and administrators. Different agent hosts apply varying constraints; do not assume hosts provide automatic protection. Third-party skill copyrights belong to their original authors. Use at your own risk.

1How It Works & Mechanism

This skill is not an executable program, but rather a "template" for html-anything: a directory (SKILL.md + example.html[/example.md]) scanned and read from disk at runtime by loader.ts—adding a new template simply means adding a directory, requiring no changes to TypeScript.

next/src/lib/templates/loader.ts
Adding a template = adding a folder. No TS code change required; the API
SKILLS_DIR is fixed at src/lib/templates/skills relative to the app's cwd; listSkills() iterates through first-level subdirectories and filters them via isValidBundledId, reading SKILL.md per directory to parse frontmatter, meaning the "selector metadata" and "generation prompt body" originate from the exact same file.

The frontmatter provides metadata for the selector/API (zh_name/en_name/emoji/description/category/scenario/aspect_hint/featured/recommended/tags) mapped to SkillMeta via fmToMeta(); the body following the frontmatter constitutes the actual specifications for the model.

next/src/lib/templates/loader.ts
zhName: fm.zh_name ?? fm.name ?? id,
The id is derived from the directory name; example metadata (example_id/name/format/tagline/desc/source_url) is only generated as SkillExampleMeta when the directory contains example.md/html, and the body is deliberately excluded from the list API (comment: "Body is excluded so we can return the entire registry in one cheap fetch").

During generation, this template body serves as the prompt body: /api/convert uses assemblePrompt() to concatenate "global design directives + this template's body + user content" into a prompt, passing it to the host's local agent CLI, with HTML streamed and captured via stdout.

next/src/app/api/convert/route.ts
prompt = assemblePrompt({ body: skill.body, content, format });
The same route also contains editFromHtml/editFromContent "minimal diff editing" branches; along this pipeline, the template body remains purely a string without evaluation or execution.

A layer of global directives (SHARED_DESIGN_DIRECTIVES) is prepended above the template body, standardizing technical and content rules before each template—the CDN and external font links commonly found in the example HTML originate here (injected by the host shell, not demanded by the template itself).

next/src/lib/templates/shared.ts
通过 CDN 引入 Tailwind v3 Play (https://cdn.tailwindcss.com) 与所需的 Google Fonts。
The template body only handles style, layout, and components without repeating these hard constraints; rating assessment only evaluates the template's own directory, and this endpoint is host shell behavior recorded in security.reason for self-attestation.

Outputs are returned as stdout text: global directives explicitly forbid the agent from touching the file system, leaving disk writing to the frontend—thus, the template directory contains neither scripts nor disk-writing capabilities.

next/src/lib/templates/shared.ts
**禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。
A subsequent sentence in the original text states: "Do not write HTML to any .html files... The frontend directly captures your stdout text, and disk writing is handled by the frontend"; the artifact is ultimately written to task records and exported by the frontend.

example.html is a pre-rendered example bundled with the package: /api/templates/<id>/preview returns it verbatim as text/html to an iframe (for inline preview in the selector), while /api/templates/<id>/example returns both example.md and example.html together.

next/src/app/api/templates/[id]/preview/route.ts
return new Response(skill.exampleHtml, {
The example is used solely for previewing/documentation and does not participate in prompt generation (generation uses only the SKILL.md body); therefore, its external links do not affect the template's own capability boundaries.

The body defines "hand-drawn wireframe" via four components: a graph-paper background, multi-tab variant labels, scribbled chart placeholders with hatched fills, and slightly rotated yellow sticky notes.

next/src/lib/templates/skills/wireframe-sketch/SKILL.md
- Graph-paper 背景
Supporting elements include: "- multi-tab labels (variants labels)", "- scribbled chart placeholders + hatched fills", and "- Sticky-note annotations (yellow, rotated slightly)".

The graph-paper background is achieved by superimposing two sets of repeating-linear-gradient layers (24px grid) rather than using image textures.

next/src/lib/templates/skills/wireframe-sketch/example.html
repeating-linear-gradient(0deg, var(--grid) 0 1px, transparent 1px 24px),
This is key to the "low-fidelity" feel: the grid serves as structural guidelines rather than decoration, aligning with the body's positioning of "whiteboard/pre-draft phase".

The instruction "do not align rigidly" is quantified through numerous micro-rotations: tags at rotate(-2.2deg), tabs at rotate(-0.4deg), sticky notes at rotate(2.4deg)/(-3.2deg), and individual tilts on KPI cards.

next/src/lib/templates/skills/wireframe-sketch/example.html
.sticky.sn1 { top: 20px; right: 30px; background: var(--note-yellow); transform: rotate(2.4deg); }
The corresponding line in the body states: "- Fonts: Caveat / Architects Daughter; do not align rigidly"—the example operationalizes "irregularity" into a systematic spectrum of 0.2–3.2 degree rotations.

Handwritten fonts are implemented in the example via a Caveat + Patrick Hand combination (plus DM Serif Display / IBM Plex Mono), without using the Architects Daughter specified in the body.

next/src/lib/templates/skills/wireframe-sketch/example.html
--hand-bold: 'Caveat', 'Patrick Hand', cursive;
The body specifies "Caveat / Architects Daughter", while the example actually loads Caveat + Patrick Hand; this is an equivalent category substitution (both are handwriting fonts) and has been logged in the validation sheet.

Chart placeholders utilize inline SVG "doodles" (.panel svg.scribble), complying with the global directive to "prioritize inline CSS / SVG rendering".

next/src/lib/templates/skills/wireframe-sketch/example.html
.panel svg.scribble { width: 100%; height: 160px; display: block; }
The example also features slight tilts via .kpi.tilt-1..4 and dashed .pin tags, consistently constructing an overall "work-in-progress feel".

The CLI side contains another direct keyword matching path: skills-matcher.ts maps keywords in user content directly to the template id, assigning confidence = match_count × 2 + 3 upon hit; if it reaches threshold 3, it follows local rules without having the model select a template.

cli/src/skills-matcher.ts
[["原型", "prototype", "线框", "wireframe", "mockup", "低保真", "sketch", "手绘"], "prototype-web"],
Note: In STRONG_SIGNALS, wireframe / 线框 / sketch / 手绘 map to prototype-web instead of this template—this template is unreachable via the strong signal channel and can only be matched via fallbackMatch (+3 points per hit for tags wireframe/lo-fi/sketch/草稿/手绘) or manual selection in the picker. This is a substantial difference from the other 8 templates and has been logged in the validation sheet.

Threshold constants used in CLI fallback matching: content length must exceed 60 characters before enabling AI summary matching; the strong signal threshold is 3.

cli/src/skills-matcher.ts
const MIN_CONTENT_LENGTH_FOR_AI = 60;
Additionally, SCENARIO_SIGNALS weights keywords according to the template scenario, while fallbackMatch scores using tags/zhName/description; only when both layers fail is the agent called for summary matching.

The host shell uses an iframe with sandbox="allow-scripts allow-same-origin" to render examples/artifacts (allowing scripts and same-origin)—this is a product shell tradeoff, documented under risks, and does not affect the rating of this skill.

next/src/components/template-picker.tsx
sandbox="allow-scripts allow-same-origin"
Identical pattern in preview-pane.tsx / deck-viewer.tsx; inline JS in example HTML executes only during browser preview, and the skill itself executes no scripts.

2Core Capabilities

01Graph-paper background (CSS grid lines, no texture images)
02Multi-tab variant labels (active highlight + skew)
03Scribble chart placeholders (inline SVG)
04Sticky note annotations (yellow/pink, rotated)
05Handwritten fonts and "imperfect" alignment guidelines
06Low-fidelity KPI cards (each with a slight tilt)

3External Dependencies

KindDependency / Endpoint
networkGoogle Fonts(Caveat / Patrick Hand / DM Serif Display / IBM Plex Mono)
networkGoogle Fonts 静态资源域(preconnect)

4Recommended Governance & Evidence

Suggested Controls for Safe Operation
For Agent Runtime
Can be auto-loaded
For Administrators
Register source and version
Evidence & Triggers (File Paths & Excerpts)
  • SKILL.md: Pure prompt directives and rule text, without script execution or external side effects
Audit Notes: Evaluation target = this skill directory (next/src/lib/templates/skills/wireframe-sketch/), verified file by file: zero scripts, zero credential access, zero disk writes; endpoints present in the directory are strictly limited to Google Fonts (Caveat / Patrick Hand / DM Serif Display / IBM Plex Mono) and the Google Fonts static asset origin (preconnect), all residing within the "artifact example" example.html; the SKILL.md body specifies only layout, style, and font family names without designating any runtime external interfaces, qualifying it as a pure directive template = green. Host-side note (excluded from rating): the html-anything product shell concatenates the body into the prompt via assemblePrompt(), spawns the local agent CLI, and injects cdn.tailwindcss.com + Google Fonts requirements (next/src/lib/templates/shared.ts), while the preview iframe uses sandbox="allow-scripts allow-same-origin" (next/src/components/template-picker.tsx).

5Second-Pass Verification

  • [ok] skill 目录文件清单 — find 得 SKILL.md + example.html,无 scripts/references。
  • [ok] 无脚本执行 — grep -c "<script" example.html = 0;SKILL.md 无脚本指令。
  • [ok] 外部端点仅字体 — example.html 仅 fonts.googleapis.com css2 与 fonts.gstatic.com preconnect;SKILL.md 正文无 URL。
  • [discrepancy] 正文字体 vs 示例字体 — SKILL.md 写「字体: Caveat / Architects Daughter」,example.html 实际加载 Caveat + Patrick Hand(--hand: 'Patrick Hand', 'Caveat' / --hand-bold 反之),未出现 Architects Daughter。
  • [discrepancy] CLI 强信号是否覆盖本模板 — cli/src/skills-matcher.ts 中 wireframe/线框/sketch/手绘 的关键词行映射到 "prototype-web"(第 35 行),全套 STRONG_SIGNALS 无 wireframe-sketch 行;本模板仅能通过 fallbackMatch(tags 命中 +3/条)或手选命中。
  • [ok] graph-paper 与 sticky note 是否落地 — 两处 repeating-linear-gradient(…1px 24px) 构成网格;.sticky.sn1/sn2 用 --note-yellow/--note-pink 并带 rotate(2.4deg)/(-3.2deg)。
  • [ok] 判级 green 自证 — 目录零脚本文件、零凭证、零写盘;正文无运行时接口,端点仅见示例 → green。
  • [ok] official_desc 逐字 — meta.official_desc 取自 frontmatter description 原文「网格背景 + marker 笔触 + 多 tab + sticky note + scribble 图表」。

6Verdict & Scenarios

  • Actionable low fidelity: Grid lines + dashed pins + doodles + rotation spectrum jointly produce a "work-in-progress feel" instead of relying solely on grayscale
  • Variant-exploration friendly: Multi-tab labels allow juxtaposing multiple proposals on a single page, matching "pre-draft phase" needs
  • Pure static without scripts: Can be opened offline, enables batch screenshot comparison, and ensures low rendering overhead
  • Consistent with toolchain standards: Doodle charts use inline SVG without introducing third-party chart libraries
  • Best for: Ideal for multi-proposal wireframe exploration during whiteboard/pre-draft stages, aligning questions before design reviews, and scenarios requiring a "focus on structure before pixels"; manual selection in the picker is recommended rather than relying on automatic keyword routing.
    Not for: Not suitable for direct public release (low fidelity is an intentional design attribute); not suitable for deliverables requiring pixel perfection or design system tokens; not suitable for automated pipelines expecting automatic routing to hit this template (strong signals are allocated to prototype-web).
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload wireframe-sketch.tar.gz
    sha256: 40e72150a36c51da…
    Option B · Copy Guide for Agent
    install.json
    Agents automatically download and verify mirrors from this JSON guide.
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 553ed98c28.