个人网站设计

SKILL前端设计
前端设计 未标注权限 许可证不明确
安装这个技能

一个个人网站的创作

一句话选型结论

按资料字段整理

个人网站设计是前端设计类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类前端设计 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_36eb3e61/personal-website-design
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

前端设计
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_36eb3e61仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791733050
正文体量12.5 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
出页面与组件

按描述生成页面结构和组件草稿。

调整样式与布局

改间距、配色与响应式布局。

生成设计说明

把设计稿整理成开发能接的说明。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在前端设计场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
个人网站设计当前 未标注权限 未标注 未标注 未标注 有
前端设计 只读 GitHub 仓库 882.3 万 Codex、Claude、Cursor 有
Vercel 组合模式 联网访问 GitHub 仓库 385.9 万 Codex、Claude、Cursor 有
Vercel React native skills 前端 只读 GitHub 仓库 246.9 万 Codex、Claude、Cursor 有
adapt 搜索 浏览器控制 GitHub 仓库 202.7 万 Codex、Claude、Cursor 有
使用我的浏览器 浏览器控制 GitHub 仓库 184.8 万 Codex、Claude、Cursor 有

SKILL.md 全文

12.5 KB
模型实际读到的说明书原文,来自技能仓库

Single-File HTML Builder

Overview

Turn a multi-file static site (a downloaded template from 模板王/mobanwang, ThemeForest, or similar) into one self-contained .html where every CSS, JS, font, and image is inlined as a data: URI. The result opens correctly from file:// on any machine with no network and no missing resources.

This skill also covers the harder second half of the job: repairing an HTML snapshot exported by a visual/WYSIWYG editor. Those exports look fine in the editor but break in a browser — carousels multiply, icons vanish, containers go empty, stylesheet links get corrupted. The repair workflow below is battle-tested against real exports.

When to Use

Trigger on any of these:

  • "把这个模板做成一个单文件 HTML" / "能不能离线打开" / "图片显示不出来(本地打开时)"
  • User downloaded a template (在线预览 - XXX - 模板王.html + _files/ directory) and wants it customized for a subject
  • The page must be openable by double-click with file://, on a machine without internet
  • User edited the page in a visual editor and now reports: 轮播图数量变多 / 图标空白 / 某一块内容没了 / 字体没生效
  • Need to embed images/fonts so the file survives being moved or emailed

Do Not Use

  • The site is meant to run on a server with separate asset files — inlining just bloats it
  • The task is only "port the design to React/Vue" — that is a rewrite, not an inlining job

Workflow

Step 0 — Reconnaissance (never skip)

Before writing any code, map the working directory. The layout determines everything downstream.

ls -la "<project_dir>"
ls -la "<project_dir>/<模板名>_files"     # template assets live here

Then read all of these, if present:

File Why it matters
build.py The inlining logic — asset names, placeholder tokens, output path
compress_images.py Image sizing/quality rules, EXIF handling
fix_site.py / fix_site2.py Post-processing repairs (icons, alignment, remote images)
pw_verify*.py How the page was verified; browser executable path
template.html The source skeleton with {{TOKEN}} placeholders — the real editable source
.workbuddy/memory/*.md Prior session notes; usually contains the hard-won pitfalls verbatim

Key insight: the generated X.html is a build artifact. Never hand-edit it as the source of truth — edit template.html and rebuild. If no template.html exists, extract one by replacing each inlined blob with a token.

Step 1 — Understand the asset extension trap

Templates saved by "Save page as" often have JS files renamed to *.js.下载 (the browser appended .下载 because the server sent Content-Disposition: attachment). Chrome refuses to execute scripts with unknown extensions under file://, so these never run.

Two fixes, in order of preference:

  1. Inline them into <script> blocks (what this skill does) — also removes the network dependency.
  2. Rename to .js and reference with a relative path — only if you are shipping a folder, not a single file.

The same trap applies to CSS and to css2 (a Google Fonts stylesheet saved with no extension).

Step 2 — Compress the images

Source photos are routinely 1–2 MB each. Run scripts/compress_images.py (adapt the nums list and paths).

Rules that matter:

  • Long edge ≤ 1600 px, JPEG quality=82, optimize=True, progressive=True. Roughly 10 MB → 1.9 MB.
  • Always call ImageOps.exif_transpose(im) first. Phone photos carry EXIF orientation; without this, a portrait photo stores as landscape and renders sideways once the EXIF tag is dropped by the resize.
  • .convert("RGB") before saving as JPEG, or palette/CMYK sources raise OSError.
  • Keep a higher quality for line art. Handwritten signatures, logos, and text screenshots compress badly at q82 — use q=90 for those specific files.
  • Crop/downscale only; never upscale.

Verify the mapping between numbered source files and subject matter before committing to an assignment. Generate a contact sheet — a grid montage with index numbers burned in — and read it as an image. This catches letterboxing, wrong rotation, and mismatched content in a single pass, far cheaper than inspecting files one by one.

Step 3 — Inline everything with the build script

Copy scripts/build_single_file.py into the project and run it. It performs four inlining jobs:

  1. CSS → <style> blocks (Bootstrap, animate.css, FontAwesome, meanmenu, magnific-popup, owl.carousel, style.css, responsive.css, Google Fonts)
  2. JS → <script> blocks (jQuery, Bootstrap, meanmenu, appear, waypoints, counterup, owl.carousel, magnific-popup, wow, main.js)
  3. Fonts → data URIs inside FontAwesome's @font-face (../fonts/fa-solid-900.woff2 etc.)
  4. Images → data URIs for both <img src> and CSS url(...) references

Critical details the script already handles — do not "simplify" them away:

  • Escape </script inside JS payloads. Write it as <\/script. A literal </script inside a string literal in main.js closes the tag early and destroys the page. This is the single most common cause of a "blank page after inlining".
  • Replace missing template images with a transparent GIF rather than leaving dead references. style.css commonly references ../img/banner-bg.jpg and ../img/dot.svg that were never saved. Give banner-bg a real photo and dot.svg a hand-written inline SVG; sweep the rest with a regex replacement to a 1×1 transparent GIF.
  • Assert zero leftover {{TOKEN}} placeholders after substitution. A silent miss produces a page with the literal text {{IMG_7}} on screen.
  • Inline every font format, then fail hard on leftovers. A FontAwesome @font-face declares .eot (with ?#iefix), .woff2, .woff, .ttf, and .svg#name, and filenames may carry a cache-buster (fa-solid-900d41d.eot). Map each to the best available file and treat any surviving url(...fonts/...) as a build failure, not a warning.
  • Strip remote webfonts AFTER token substitution. A CSS token payload can itself contain an @font-face pointing at fonts.googleapis.com, and a template <link> may hold an entire stylesheet in its href. Strip before substitution and the inlined CSS puts the remote reference straight back. Note a corrupted href spans newlines — use re.S with lazy matching.
  • Note the size blow-up. Reusing one image in five places inlines five copies of the base64. 1.9 MB of compressed images can become 7.8 MB of HTML. If size matters, define the image once as a CSS custom property or use a small JS snippet to assign src from a single base64 constant.

Step 4 — Repair a visual-editor export (if applicable)

If the user later round-trips the page through a visual editor, the exported HTML will contain serialized runtime DOM, not clean source. Run scripts/repair_editor_export.py, which fixes the four known classes of damage. See references/visual-editor-repairs.md for the full diagnosis and CSS for each.

Summary of the four:

  1. Owl Carousel clone pollution — the editor serializes owl-stage with its owl-item cloned duplicates and stale owl-dots. On reload, main.js re-initializes and treats clones as real content: 3 slides show 6 dots. Fix: rebuild each .owl-carousel down to its non-cloned originals, drop dots/nav, restore class="owl-carousel owl-theme", let JS re-init.
  2. Malformed <link href> — the editor dumps an entire Google Fonts CSS file into the href attribute. The browser requests it as a URL, gets 404, and the webfont silently never loads. Fix: extract the attribute, HTML-unescape, convert to an inline <style>.
  3. Emptied containers — media wrappers that the editor could not model get cleared. Fix: refill with a chosen image set and apply explicit sizing.
  4. Missing FontAwesome glyphs — FA5 ships no fa-tiktok/fa-bilibili; those <i> elements render as empty circles. Fix: swap the class for a masked-SVG pseudo-element using the FA6 path data.

Layout policy belongs here, not in the build script. build_single_file.py inlines what the template declares; equalising grid heights (.portfolio-single-item img { height: 300px; object-fit: cover }) and column alignment are content decisions. Put them in the template's custom <style> block or the repair config's inject_css. A build that skips this step renders a ragged gallery — measured column height spread of 811px — and it is the most common "the layout looks wrong" report.

Step 5 — Verify with a real browser

Screenshots from a headless shell are not reliable for this: compositing does not repaint after scroll/fragment navigation (a trivial page screenshots fully white), and long pages only capture the first viewport.

Use Playwright with an explicit executable_path pointing at an already-downloaded Chrome/Chromium (the system install works — C:/Program Files/Google/Chrome/Application/chrome.exe on Windows). Run scripts/verify_page.py, which asserts:

  • JS console errors = 0
  • Failed images = 0 (!img.complete || img.naturalWidth === 0)
  • Every carousel has a non-zero authored slide count, and any visible dots match it
  • Masked icons have non-zero rendered size (proves the mask rule resolved)
  • Intended column bottoms are equal (fragment alignment checks, e.g. gallery columns, side-by-side text/image blocks)

Two measurement traps that produce false failures — both handled in the script, both worth knowing:

  • Carousels. After Owl initialises, authored slides are wrapped in .owl-stage. Querying :scope > .owl-item returns 0 and a healthy carousel looks broken. Count .owl-stage > .owl-item:not(.cloned). Clones are normal runtime behaviour; only visible dots (offsetParent !== null) matter, since arrow-driven carousels leave a disabled dot container in the DOM.
  • Alignment. Assert against the column (.row > .col-lg-6:last-child), not an inner wrapper. A wrapper inset by the Bootstrap gutter reports a permanent phantom 15px offset even when the layout is pixel-perfect. diff = 0 on the column pair plus ~15px on the wrapper pair is the signature of a correct result.

Loop until all checks are clean. Then take a full-page screenshot and read it as an image for a final human-eye check.


Prerequisite checklist

Confirm before starting:

  • [ ] Python 3 with Pillow and beautifulsoup4 installed
  • [ ] Playwright installed, and a Chrome/Chromium binary path known. A system install is fine — no Playwright browser download needed if you pass executable_path explicitly (on Windows, C:/Program Files/Google/Chrome/Application/chrome.exe).
  • [ ] The template's _files directory is intact (CSS/JS/images all present)
  • [ ] FontAwesome woff2/woff files available — if absent from the template, fetch FA 5.15.4 from a reachable CDN. Sandboxed environments intermittently block jsdelivr, raw.githubusercontent, and unpkg; try them in turn and fall back to a local mirror rather than assuming the asset is unavailable.
  • [ ] The subject's factual content (bio, quotes, dates) has traceable sources — keep a 资料来源 line in the footer.

Resources

  • scripts/compress_images.py — EXIF-aware batch resize/compress to site_build/img/
  • scripts/build_single_file.py — the inliner: CSS/JS/fonts/images → one HTML
  • scripts/repair_editor_export.py — repairs the four visual-editor export defects
  • scripts/verify_page.py — Playwright assertions + full-page screenshot
  • references/template-anatomy.md — how 模板王-style templates are structured, plus the full asset inventory
  • references/visual-editor-repairs.md — detailed diagnosis and CSS for each export defect
  • references/pitfalls.md — the full list of traps and their symptoms, including why bs4 must not touch <script> bodies

常见问题

5 问
答案由本站依据条目字段整理
个人网站设计怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_36eb3e61/personal-website-design。安装方式为未标注。装完刷新技能列表或重开客户端。

个人网站设计支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

个人网站设计权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

个人网站设计收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

个人网站设计用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。