--- name: portfolio-detail description: Generate a single-file Chinese atelier-style portfolio website (horizontal-row list + hover-reveal thumb interaction, art lishu typography "Alimama DaoLiTi" via CDN, light/dark theme, hash-routed detail pages). Takes a natural-language description of the studio (name, director, discipline, works) and outputs ONE working .html file. Runs in BOTH Claude Code (writes to ~/Desktop) and GLM / online chat (outputs HTML inline). Trigger phrases include "做个中式工作室作品集", "做个隶书作品集", "lishu-portfolio-gen ...", "做个白屋风格的作品集", or when user drags this skill folder into chat asking for an atelier-style site. visibility: public mode: template carrier: web-page scenario: portfolio pattern_source: reference.html source_priority: skill-first triggers: - "做个中式工作室作品集" - "做个隶书作品集" - "做个白屋风格的作品集" - "横排作品集" - "刀隶体作品集" related_patterns: vr-canvas, digital-eguide legacy_gen: true --- # portfolio-detail — 中式工作室 / 隶书作品集(带二级详情页) ## 一句话特征 横排文字行 + hover 浮现右侧大图 + 阿里妈妈刀隶体艺术大字 + 黑白纯色 + light/dark + hash 路由详情页 + 列表/画册双视图。 ## 与其他作品集 skill 的差别 | skill | 核心模式 | 适合谁 | |---|---|---| | `portfolio-gen` | 无限拖拽画布 + tile 平铺 | 摄影师 / 平面设计师挂样品 | | `portfolio-museum-gen` | 英雄轮播 + 大卡 + 瀑布流 + 详情页(影像策展感) | 视频/影像/装置艺术家 | | `industrial-archive-gen` | 黑框翻页封面 + 侧栏档案 + 北欧工业 | 实物产品 / 器物 / 硬件 | | **`lishu-portfolio-gen`** | **横排文字行 + hover 显示右侧缩略图 + 隶书大字 + 中式克制** | **装帧 / 字体 / 工艺 / 中式工作室** | 如果用户的项目是「书 / 字体 / 展览 / 静物 / 中草药 / 茶 / 陶 / 木 / 纸 / 香」这一类需要克制典雅气质的——用这一份。 ## 何时触发 用户说: - "做个中式 / 东方 / 古典风格的作品集" - "做个隶书风格的网站 / 工作室主页" - "做个白屋风格的作品集" / "做个像 Gurgel D'Alfonso 那样的横排列表网站" - "lishu-portfolio-gen ..." 并提供: - **工作室描述**(必需):名字、主理人、城市、学科、几件作品的标题与故事 - **作品图片**(可选):URL / 上传 / 路径。没有也能跑(用 picsum 占位) 如果用户**完全没给作品标题** → 必须问一次至少有哪几件作品要展示。 如果用户**只给了标题**没给详情 → 自己写:每件作品都生成 1 句 lead + 3 段 prose + 6-8 行 specs + 3-6 张 picsum 图 + 几条 credits。语气与作品类型匹配(书 → 装帧 / 字 → 字体 / 物 → 静物 / 展 → 展览视觉)。 ## 两种运行模式 ### 模式 A · Claude Code / 本地(有文件系统) - 用 `Bash` 列文件夹、`sips` 探每张图宽高 - 输出位置:`~/Desktop/{slug}-portfolio.html`(**单文件**,所有图片走 URL) - 如果用户给了本地图片:拷到 `~/Desktop/{slug}-portfolio-images/` 并改 src 为相对路径 ### 模式 B · GLM / 在线对话(无文件系统) - 用户拖入 zip 解压后能看到 4 份文件 - **只输出一份完整 HTML 字符串**,包在 ` ```html ` 代码块里 - 用户上传图片但没给 URL → 全用 `https://picsum.photos/id/{id}/{w}/{h}` 占位(用已知存在的 ID) - 不要尝试访问本地文件、不要建议命令行操作 判断:如果你**无法 Read 看到本地图片** → 默认走 B。 ## 文件分工 | 文件 | 角色 | 怎么用 | |---|---|---| | `reference.html` | **完整成品参考** — 白屋 BAIWU 6 件作品 | 看:list 项的措辞、prose 语气、specs 词汇、JSON 字段密度 | | `template.html` | **空骨架** — 同样的 CSS/JS/路由系统,2 件示例 + 20 个 SWAP 标记 | 在它的基础上改,输出最终 HTML | | `README.md` | 用户视角的使用说明 | 模型不用看 | | `SKILL.md` | 给模型看的工作流(本文件) | **必读** | **核心规则**:所有改动基于 `template.html`;从 `reference.html` 学**怎么写**(语气、字数、tag 用词),但不要复制具体内容。 ## 工作步骤 ### 1. 读两份 HTML - 先读 `reference.html` 体会"完整后长什么样"(特别是 `works-data` JSON 的字段密度和 prose 语气) - 再读 `template.html` 找 20 个 SWAP 位置 **不要改 JS / 不要改 CSS / 不要改详情页路由系统 / 不要改字体引入**。 SWAP 都在 HTML 文本和 JSON 数据里。 ### 2. 解析用户输入抽信息 抽取: - **ATELIER_NAME_ZH** — 工作室中文名(2-4 字最佳,例如「白屋」「素园」「墨记」「青庐」「拙轩」) - **PINYIN** — 拼音(5-6 个英文字母,全大写:BAIWU / SUYUAN / MOJI) - **CHAR** — Logo 用的单字(通常是工作室名首字:白 / 素 / 墨 / 青 / 拙) - **CITY** — 城市 - **DIRECTOR_ZH / DIRECTOR_EN** — 主理人姓名 + 拼音 - **DISCIPLINE** — 3 个学科词("装帧 · 字体 · 静物") - **TAGLINE** — 一句话定位(20-40 字,楷体气质) - **YEAR_FOUNDED** — 成立年份(可用干支:乙未冬 / 甲辰春) 每件作品抽: - **slug** — URL ID,小写英文连字符(`kong-shan-ji` / `wu-ming-shu`) - **title_zh** — 中文标题(2-5 字最佳,越精炼越有调性) - **title_en** — 英文副题(书名号风格:`An Anthology of Empty Mountains`) - **year** — 年份或干支年(`甲辰 / 2024` / `2025` / `乙巳 / 2025`) - **tag** — 顶部分类,方括号包,如 `[ 诗集 · 装帧设计 ]` / `[ 字体设计 · 中草药图谱 ]` - **cover** — 详情页大图 URL - **list 行 location** — `城市,年份 · 工艺/规格`(hover 时浮现) - **meta** — 4 个键值对(详情页 4 列摘要) - **lead** — 30-70 字开篇大字,可用 `关键词` 强调一处 - **prose** — 3-4 段散文,每段 80-150 字 - **specs** — 6-10 行规格表(开本/纸张/装订/字体/印量/印刷/工艺/定价等) - **gallery** — 3-6 张图,layout 三选一:`g-wide` / `g-half` / `g-third` - **credits** — 4-7 对职位/名字 如果用户只给一句话/没给故事 → **自己编**:根据作品标题和类型,写出符合作品调性的 lead 和 prose。语气参考 reference.html — 不要 marketing 语言,要有「博物馆 wall-text + 工作室札记」的感觉(克制、具体、缓慢、有手工痕迹)。 ### 3. 列作品 + 探尺寸(仅模式 A) ```bash ls -la "{works_path}" sips -g pixelWidth -g pixelHeight "{works_path}/{file}" 2>/dev/null ``` 得到每张图的 (filename, w, h, aspect)。优先选竖图作 list 缩略图(4:3 容器,竖图更上相)。 ### 4. 替换 20 个 SWAP | SWAP | 位置 | 内容 | |---|---|---| | 1 | `