mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-06-06 09:30:42 +08:00
feat: add guizang-ppt market skill (vendored from op7418, AGPL-3.0) (#20)
## 概述 / Summary 新增市场技能 **`guizang-ppt`**(归藏网页 PPT),vendored 自上游开源项目 [op7418/guizang-ppt-skill](https://github.com/op7418/guizang-ppt-skill)。 Add a new **market skill** `guizang-ppt` — generates single-file HTML horizontal-swipe slide decks (web PPT) in two visual systems (editorial "magazine × e-ink" / "Swiss International"). Vendored from the upstream open-source project. ## 变更内容 / Changes - `skills/guizang-ppt/`:SKILL.md(DesireCore frontmatter 覆盖层 + 上游正文)、`references/`(10)、`assets/`(2 模板 + motion.min.js + 9 张 webp)、`scripts/validate-swiss-deck.mjs`、`LICENSE`(AGPL-3.0)、`NOTICE.md`(署名与合规) - `skills/guizang-ppt/_desirecore/`:DesireCore 维护态(不随上游覆盖) - `frontmatter.yaml`:市场 frontmatter 覆盖层(i18n: zh-CN 源 + en-US 显示串,body 暂回退中文,留给 CI 翻译) - `upstream.json`:上游溯源(commit `014c572`、AGPL-3.0、作者 歸藏/op7418) - `scripts/vendor/guizang-ppt.mjs`:可复用的 vendor 更新脚本(`--src <本地路径>` 或 `--ref <tag>`) - `manifest.json`:`version` → `1.2.3`,`stats.totalSkills` → 25 ## 定位 / Positioning - **仅市场可选安装**:未加入 `builtin-skills.json`,不随客户端开机自动安装;用户在市场按需安装。 - 分类 `creative`;与已有 `pptx`(生成 .pptx 文件)区分:本技能生成 **HTML deck**。 ## 许可与署名 / License & Attribution 上游为 **AGPL-3.0**。本技能保留原 `LICENSE` 与作者署名(`NOTICE.md` + `metadata.author` + `market.maintainer`),作为聚合内容分发。 ## 校验 / Validation - `python3 scripts/i18n/validate-i18n.py skills/guizang-ppt` → `OK: no i18n issues found.` ## 手动更新流程 / Manual update 上游发版时:`node scripts/vendor/guizang-ppt.mjs --ref <tag>` → 核对 diff → 必要时 bump `_desirecore/frontmatter.yaml#version` 与 `manifest.json` → 提交。 --- 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This commit is contained in:
86
skills/guizang-ppt/references/swiss-layout-lock.md
Normal file
86
skills/guizang-ppt/references/swiss-layout-lock.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# Swiss Layout Lock
|
||||
|
||||
本文件是瑞士主题的硬约束。它的目的不是增加灵感,而是防止生成时“看起来像 Swiss,但已经脱离原始模板”。
|
||||
|
||||
## Golden Source
|
||||
|
||||
原始参考文件:
|
||||
|
||||
`/Users/guohao/Documents/op7418的仓库/项目/Thin-Harness-Fat-Skills/ppt/index.html`
|
||||
|
||||
瑞士主题生成时,除用户明确要求实验版式外,只能从下面登记的 22 个版式中选择。新增首页/尾页可以使用 Skill 里的 IKB ASCII 版本,但正文页必须来自这 22 个版式。
|
||||
|
||||
## 生成前硬规则
|
||||
|
||||
1. 每个正文页都必须先选一个登记版式,并在 `<section>` 上写 `data-layout="Sxx"`。
|
||||
2. 不允许临时发明 `P23/P24` 这类未出现在原始 22P 的正文结构。需要图片时,优先使用 `S22 Image Hero`;多图时使用 `S15/S16` 的原始网格骨架做图片格改造,不要发明新的证据墙。唯一登记的交互扩展是 `S08 + Swiss Map Component`,详见 `references/swiss-map-component.md`。
|
||||
3. 顶部中文标题默认左对齐并贴近左上内容轴。除原始 `S03/S09/S10` 这种 statement/split 版式外,不要把大标题放到页面水平中心。
|
||||
4. SVG 只能负责几何线条、圆、箭头、路径。不要在 SVG 里写可见文字;所有文字标签用 HTML 放在网格、卡片或 caption 里。
|
||||
5. 图片槽位和图片生成比例必须绑定。先确定版式和槽位,再生成图片。
|
||||
|
||||
## 登记版式
|
||||
|
||||
| ID | 原始页 | 名称 | 必须保留的骨架 | 图片规则 |
|
||||
|---|---:|---|---|---|
|
||||
| S01 | 01 | Index Cover | 三行 `cover-row`,左大编号,右大标题 | 无 |
|
||||
| S02 | 02 | Vertical Timeline + KPI | 顶部左对齐标题,中部 `.timeline-v`,底部 `.kpi-row-4` | 无 |
|
||||
| S03 | 03 | Split Statement | `.slide.split` 双半屏,左巨字,右灰底解释 | 无 |
|
||||
| S04 | 04 | Six Cells | 顶部左对齐标题,下方 `.sub-grid-3-2` 六卡 | 可把卡片内部换成小图标,不放大图 |
|
||||
| S05 | 05 | Three Layers | 顶部左对齐标题,下方 `.stack-row` 三大块 | 无 |
|
||||
| S06 | 06 | KPI Tower | 左标题+右说明,下方不等高 KPI 塔 | 无 |
|
||||
| S07 | 07 | Horizontal Bar | 左对齐标题,横向条形图 | 无 |
|
||||
| S08 | 08 | Duo Compare | `.duo-compare` 两列 + 中线 | 无;地点/路线内容可使用 `S08 + Swiss Map Component` 替换右侧插槽 |
|
||||
| S09 | 09 | Dot Matrix Statement | 大号 statement + 点阵装饰 | 无 |
|
||||
| S10 | 10 | Split Closing | `.slide.split` 左巨字右列表 | 无 |
|
||||
| S11 | 11 | Horizontal Timeline | 原始 `grid-template-columns:auto 1fr` 头部 + `.timeline-h` | 无 |
|
||||
| S12 | 12 | Manifesto + Ink Banner | 大字 statement + 底部通栏 ink 条 | 无 |
|
||||
| S13 | 13 | Three Forces | 左 ink hero 块 + 右 3 张卡 | 无 |
|
||||
| S14 | 14 | Loop Form | 左 4 步列表 + 右几何 loop | SVG 禁止文字,标签改 HTML |
|
||||
| S15 | 15 | Matrix + Hero Stat | 顶部左对齐标题,中段 6×2 矩阵,底部巨数 | 多图可改造矩阵格,同组统一 `21:9` |
|
||||
| S16 | 16 | Multi-card Brief | 顶部左对齐标题,下方 3×2 微卡 | 多图可改造卡片内容,同组统一 `21:9` |
|
||||
| S17 | 17 | System Diagram | 顶部左小标题+右段落,中部几何系统图,底部三列解释 | SVG 禁止文字,标签改 HTML |
|
||||
| S18 | 18 | Why Now | 三列递进 + 底部巨数 | 无 |
|
||||
| S19 | 19 | Four Cards | 顶部蓝线 + 四列均分 | 无 |
|
||||
| S20 | 20 | Stacked KPI Ledger | 纵向账单式巨数 | 无 |
|
||||
| S21 | 21 | Tech Spec Sheet | 大标题 + 三 KPI + 右下竖线矩阵 | 无 |
|
||||
| S22 | 22 | Image Hero | 顶部全宽图 + 左上白块标题 + 下方三列 KPI | 主图按 `21:9` 生成,关键主体放中央安全区 |
|
||||
|
||||
## 登记扩展组件
|
||||
|
||||
### S08 + Swiss Map Component
|
||||
|
||||
- 使用场景:地理、历史、城市路线、门店/校区/事件点位、人物住所关系。
|
||||
- 版式身份:仍是 `data-layout="S08"`,不是新正文页。
|
||||
- 页面结构:顶部左对齐标题 + 左侧关系/说明卡片 + 右侧 MapLibre 地图卡片。
|
||||
- 标记结构:点 + 连线 + HTML 卡片;SVG 只画 fallback 关系线,不写文字。
|
||||
- 交互控制:右上角必须有 `+` / `-` / `DRAG`;默认禁用滚轮缩放和拖动,避免触发 PPT 翻页。
|
||||
- 详细代码和数据契约见 `references/swiss-map-component.md`。
|
||||
|
||||
## 图片槽位规则
|
||||
|
||||
### S22 · Hero Strip
|
||||
|
||||
- 生成比例: `21:9`
|
||||
- 图片用途:实拍场景、产品场景、UI 情景图。
|
||||
- 生成提示词必须包含: `21:9 ultra-wide strip`, `subject centered in the safe middle area`, `no title, no footer, no page chrome, no logo, no border`.
|
||||
- HTML 容器必须使用原始 S22 的顶部全宽图骨架;不要改成普通居中大图。
|
||||
- 照片用 `object-fit:cover;object-position:center 35%`。如果是人像/会议场景,不要用 `top center`。
|
||||
- 信息图/UI 截图如果放 S22,必须重新生成接近 `21:9`,并用 `object-fit:contain` 或保证核心内容在中央 70% 安全区。
|
||||
|
||||
### S15/S16 · Multi Image Grid
|
||||
|
||||
- 生成比例:统一 `21:9` 或统一 `16:10`,不要混用。
|
||||
- 同一组图片必须同高、同宽、同一容器背景。
|
||||
- 图片格必须吸附原始卡片网格,不要让图片自己决定宽高。
|
||||
- 如果图片是按槽位重新生成的 `s15-grid-21x9` / `s16-brief-21x9`,容器必须用 `.frame-img.r-21x9` 铺满槽位,不要再加 `.fit-contain`,也不要用固定 `height:18vh` 这类短槽把长图缩小。
|
||||
- `.fit-contain` 只用于必须保留原始比例的用户截图或文字密集图片;一旦决定重生成图片,就应该按槽位比例重生成并铺满。
|
||||
- 如果原始截图比例不可控,先按 `references/screenshot-framing.md` 做程序化比例适配;只有长截图、极窄截图或信息需要重构时,才用 GPT-M 2.0 重生成“截图再设计”。
|
||||
|
||||
## 禁止清单
|
||||
|
||||
- 禁止 `text-align:center` 用在顶部中文大标题。
|
||||
- 禁止将顶部标题写进右侧 7.8fr 栏,造成视觉居中。
|
||||
- 禁止未登记正文页:例如临时 `Swiss Image Split`、`Evidence Grid`、三圆图自绘页。
|
||||
- 禁止图片容器灰底包白底信息图。
|
||||
- 禁止 SVG 中出现 `<text>` 作为可见标签。
|
||||
- 禁止图片默认 `object-position:top center` 用于照片。
|
||||
Reference in New Issue
Block a user