# Lzheng Fitness Workbench Builder

> 将训练计划 JSON、执行基准、训练复盘、可选 Notion 导出和内置界面素材组装为可离线打开的个人健身工作台，并完成数据刷新、壁纸替换、内置文档阅读、可选 Obsidian 编辑、响应式页面、发布副本与自动校验。用于用户要求从零构建、迁移、重建、替换背景、打包、同步、修复或发布健身工作台，或希望在新电脑上复刻同款个人训练系统时；不用于制定个性化训练处方、单次训练复盘或医疗建议。

- **Type:** Skill
- **Install:** `agentstack add skill-lzheng0411-lzheng-fitness-lzheng-fitness-workbench-builder`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [LZheng0411](https://agentstack.voostack.com/s/lzheng0411)
- **Installs:** 0
- **Category:** [Productivity](https://agentstack.voostack.com/c/productivity)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [LZheng0411](https://github.com/LZheng0411)
- **Source:** https://github.com/LZheng0411/Lzheng-fitness/tree/main/skills/lzheng-fitness-workbench-builder

## Install

```sh
agentstack add skill-lzheng0411-lzheng-fitness-lzheng-fitness-workbench-builder
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Lzheng 健身工作台构建器

把工作台视为“唯一固定界面模板 + 用户事实文件 + 可重复构建脚本”。唯一视图资产是 `assets/workbench-template.html`；AI 只能刷新 `workbench-data`，不得手写另一套工作台。不把训练重量写死在页面视图，不复制其他人的个人记录。工作台必须适配增肌、减脂、力量和综合健身，四个力量主项只属于力量模式，不能作为其他目标的前提。

读取 `../lzheng-training-system/references/system-contract.md`；如果存在交接记录，读取 `../lzheng-training-system/references/handoff-schema.md`，只消费其中已确认产物。系统根目录优先使用本次用户指定路径，其次使用套件配置；视图代码不得包含固定磁盘路径。

## 先判断任务

- **从零构建 / 新电脑迁移**：读取 [输入契约](references/input-contract.md)，使用初始化脚本创建完整目录和可运行页面。
- **刷新数据**：保留正式 HTML 视图，只运行数据生成器更新唯一 `workbench-data` 数据块；schema 6 必须包含建档、系统、知识包、状态和来源核验信息。
- **接入完整计划**：完整计划使用 `plan_contract` 时，先运行 `Adapt-PlanContract.py` 适配为工作台主源；不得要求用户手工重写第二份计划 JSON。
- **链接打不开 / 跨电脑迁移异常**：完整读取 [路径可迁移修复协议](references/path-portability-repair.md)，先盘点全部入口、配置和发布目标，再修复并执行整体移动回归；不得只修改截图中的单个按钮。
- **替换已有工作台壁纸**：完整读取 [壁纸替换](references/background-replacement.md)，调用替换脚本完成备份、静态/动态模式、取景更新和检查；不得让用户手工改 HTML。
- **修改项目默认界面或默认背景**：读取 [视觉契约](references/visual-contract.md)，修改源模板后用模板刷新脚本生成脱敏模板。
- **制作发布副本**：读取 [迁移与发布](references/migration-and-release.md)，先校验，再复制 HTML 和全部本地素材。
- **制定计划或训练复盘**：转交对应训练 Skill；本 Skill 只消费结果，不凭空生成个人处方。

## 从零构建

1. 确认目标目录、品牌短名、使用者称呼和周期开始日期。
2. 优先使用用户自己的版本化计划 JSON。没有时可以用内置示例启动界面，但必须明确标注“示例数据”，不得把示例重量当成处方。
3. 运行：

```powershell
python "/scripts/Initialize-FitnessWorkbench.py" --target "" --brand "TRAIN" --athlete "使用者" --start-date "YYYY-MM-DD" [--plan ""] [--notion ""]
```

4. 初始化脚本必须创建正式 HTML、五个固定目录、背景素材、当前计划、执行基准和复盘索引，并自动运行构建与检查。
5. 把页面中显示的示例计划替换为用户已确认的计划后，再交付为正式系统。

目标目录已有文件时，初始化脚本默认拒绝覆盖。不要用强制参数覆盖用户独有内容；改用新的空目录或先人工审计。

## 刷新已有工作台

运行：

```powershell
python "/scripts/Build-FitnessWorkbenchData.py" --project "" [--notion ""] --check-only
python "/scripts/Build-FitnessWorkbenchData.py" --project "" [--notion ""] --apply --backup-dir ""
python "/scripts/Check-FitnessWorkbench.py" --project "" [--notion ""]
```

完整计划自动接入时使用：

```powershell
python "/scripts/Adapt-PlanContract.py" "" ""
```

若一次 schema 或视图升级误将已有 Notion 动态数据降级为空态，可使用已知本地备份执行 `--restore-notion-from-html `；此动作只恢复 `notion` 数据，再由当前计划、执行基准和复盘重新生成 schema 6，不能直接把旧 HTML 整页覆盖回来。

正式计划、训练复盘或接回完成后不手工猜测刷新时机：创建 `LZHENG_HANDOFF` 后运行 `lzheng-training-system/scripts/Process-LzhengHandoffs.py --project ""`。它只刷新通过契约验证的事实；需要合并的专项周期会保持待合并，不能越权成为当前计划。

### 周切换同步契约（强制）

跨周时必须把“复盘结论、下一周处方、当前计划 `schedule`、工作台数据”作为一次原子更新：先把 `schedule` 改成覆盖今天的真实七日日期，所有训练日使用同一个 Wn，训练日数量与 `plan.frequency` 一致，再创建交接并刷新工作台。不得只改复盘、只改周次或让旧周训练卡继续显示。

构建器必须拒绝：排程不覆盖今天、训练日混合多个 Wn、训练日数量与频率不符、今天是训练日但没有今日处方、以及计划写明“自重”却被历史负重覆盖。每次发布前运行：

```powershell
python "/scripts/Test-FitnessWorkbenchWeekTransition.py"
```

必须保持：

- 当前周期只保留同一计划的一个有效版本；
- 当前周来自复盘索引或用户确认，不按日历擅自推算；
- 今日训练按计划中的真实日期精确匹配；
- 未知重量显示待确认，不沿用旧值冒充事实；
- 完整计划 HTML 使用工作台相对链接直接交给浏览器；不得依赖固定盘符或要求项目必须是 Obsidian 仓库；
- 复盘与状态内容默认可在工作台内阅读；Obsidian 只作为根据当前位置即时生成的可选编辑入口；
- 图表已执行部分为实线，后续计划为虚线，重合时只显示实线。

## 更新界面模板

源工作台视觉稳定后运行：

```powershell
python "/scripts/Refresh-FitnessWorkbenchTemplate.py" --source "" --out "/assets/workbench-template.html"
python "/scripts/Validate-FitnessWorkbenchSkill.py" --skill ""
```

模板刷新脚本会移除个人 `workbench-data`，把品牌改为占位符，并检查模板中没有残留本地绝对路径或 Obsidian 个人深链。背景图放在 `assets/backgrounds/`，不得嵌入个人训练数据。

## 交付闸门

以下全部通过才能声明完成：

1. `Validate-FitnessWorkbenchSkill.py` 返回 `FITNESS_WORKBENCH_SKILL: PASS`；
2. `Test-FitnessWorkbenchWeekTransition.py` 返回 `FITNESS_WORKBENCH_WEEK_TRANSITION: PASS`；
3. `Test-FitnessWorkbenchPortability.py` 返回 `FITNESS_WORKBENCH_PORTABILITY: PASS`；
4. `quick_validate.py ` 返回通过；
5. 在一个全新的隔离目录运行初始化脚本成功，页面显示“待建档”且不把匿名示例重量当处方；
6. 新目录的 `Check-FitnessWorkbench.py` 检查为 `FITNESS_WORKBENCH_CHECK: PASS`；
7. 正式页面所引用的每张图片和完整计划 HTML 在项目、移动后目录和发布目录中都存在；
8. Skill 文本和模板不含原作者训练记录、用户名或固定磁盘路径。

## 资源

- `scripts/Initialize-FitnessWorkbench.py`：从模板和输入文件创建新工作台。
- `scripts/Build-FitnessWorkbenchData.py`：从计划、复盘、执行基准和 Notion JSON 生成数据块。
- `scripts/Adapt-PlanContract.py`：将完整计划 Skill 的统一 `plan_contract` 适配为工作台主源。
- `scripts/Check-FitnessWorkbench.py`：检查结构、事实一致性、资源和发布副本。
- `scripts/Prepare-FitnessWorkbenchRelease.py`：生成移除本机路径与 Obsidian 深链的分享版并复制素材。
- `scripts/Replace-FitnessWorkbenchBackground.py`：安全替换已生成工作台的图片/MP4 背景，自动备份、检查并在失败时回滚。
- `scripts/Refresh-FitnessWorkbenchTemplate.py`：从正式页面刷新脱敏模板。
- `scripts/Validate-FitnessWorkbenchSkill.py`：检查 Skill 包完整性与可迁移性。
- `scripts/Test-FitnessWorkbenchWeekTransition.py`：回归验证跨周同步、频率、今日处方与自重语义。
- `scripts/Test-FitnessWorkbenchPortability.py`：把完整健身系统移动到新目录，验证计划、内置文档、全部页面资源和无 Obsidian 发布副本仍可用。
- `scripts/Test-FitnessWorkbenchBackgroundReplacement.py`：验证静态、动态、初始化接入、目录移动、发布复制和损坏素材拒绝。
- `scripts/Migrate-FitnessWorkbenchSchema.py`：将保留的 schema 5 数据块安全迁移为 schema 6；正式页面仍应由数据生成器重新构建。
- `references/path-portability-repair.md`：AI 处理链接失效、旧绝对路径、系统迁移和发布假通过时的强制修复协议。
- `references/background-replacement.md`：AI 和用户执行壁纸替换时的命令、备份、取景与验收说明。
- `assets/workbench-template.html`：不含个人事实的界面模板。
- `assets/backgrounds/`：工作台内置视频、静态兜底和兼容图片。
- `assets/examples/`：匿名计划与 Notion 输入示例。

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [LZheng0411](https://github.com/LZheng0411)
- **Source:** [LZheng0411/Lzheng-fitness](https://github.com/LZheng0411/Lzheng-fitness)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-lzheng0411-lzheng-fitness-lzheng-fitness-workbench-builder
- Seller: https://agentstack.voostack.com/s/lzheng0411
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
