원클릭으로
update-docs
Update all OTGW-firmware documentation in one sequential, backlog-tracked workflow
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Update all OTGW-firmware documentation in one sequential, backlog-tracked workflow
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | update-docs |
| description | Update all OTGW-firmware documentation in one sequential, backlog-tracked workflow |
| disable-model-invocation | true |
Update all project documentation in one well-tracked sequential pass. Can be invoked standalone or as part of a release.
This workflow used to spawn one subagent per affected manual chapter in parallel. Fast in theory, but on releases that touched four or more chapters it tripped Claude API concurrency limits and the run failed mid-flight. The new model has two properties:
mcp__backlog__task_view while the workflow runs in the background; partial failures leave a clear breadcrumb trail./update-docs # Standalone: scope from git changes
/update-docs --release 2.0.1 # Release mode: also generate release documents
/update-docs --scope full # Force-update all docs regardless of git diff
Determine what changed since the last release and which documentation is affected.
PREV_TAG=$(gh release view --json tagName --jq '.tagName' 2>/dev/null || git describe --tags --abbrev=0)
git diff --name-only $PREV_TAG..HEAD
Categorize using this mapping:
| Changed files match | Subsystem | Docs affected |
|---|---|---|
networkStuff.ino, EthernetESP32.ino | Network | ch06/h06, c4-code-network.md |
MQTTstuff.ino, mqttha.cfg | MQTT | ch04/h04, docs/api/MQTT.md, OpenAPI |
restAPI.ino | REST API | ch09/h09, docs/api/openapi.yaml, docs/api/README.md |
OTGW-Core.ino, OTDirect.ino | OpenTherm core | ch08/h08, c4-code-otgw-core.md |
SAT.ino | SAT thermostat | ch05/h05, c4-component-smart-thermostat.md |
sensorStuff.ino | Sensors | docs/api/DALLAS_SENSOR_LABELS_API.md |
settingStuff.ino, OTGW-firmware.h | Settings/State | ch08/h08, c4-code-settings.md |
data/index*.html, data/*.js, data/*.css | Web UI | ch03/h03, c4-code-web-assets.md |
platformio.ini, build.py, flash_esp.py | Build system | ch08/h08 (developer guide) |
OTGW-firmware.ino | Main/boot | ch01/h01 if feature-level |
If --scope full or six or more subsystems changed, treat all docs as affected.
Output of Phase 1: an ordered list of affected doc areas, the PREV_TAG hash, and a categorized commit summary. Pass this to Phase 2 verbatim. Do NOT wait for user confirmation in standalone mode.
Before any documentation is written, capture the run as one backlog task.
Create the task via mcp__backlog__task_create:
title: docs: update for changes since <PREV_TAG> (in --release mode add the version: docs: update for v<version> (changes since <PREV_TAG>))status: In Progressassignee: ["@claude"]labels: ["docs", "update-docs"] (add "release" in --release mode)description: paste the Phase 1 output verbatim (PREV_TAG, categorized commits, list of affected areas)acceptanceCriteria: one entry per affected doc area, in execution order:
Manual chapter <N> (<EN file>, <NL file>) updated (one AC per affected chapter)API documentation (openapi.yaml, README.md, MQTT.md, ...) updated (only if API changed)C4 architecture docs (<files>) updated (only if structural change)Cleanup phase complete (archive old releases, move misplaced files, reorg reviews)Release documents generated (RELEASE_NOTES, RELEASE_GITHUB, BREAKING_CHANGES, README What's New)Record the assigned TASK-NNN ID returned by task_create. Phase 5's commit message uses it; the commit-msg hook will block the commit if the task file is not staged.
Exactly one subagent runs at a time. When it finishes, update the backlog task and start the next.
For each AC in order:
run_in_background=true) with the relevant prompt template (3A / 3B / 3C / 3D below).mcp__backlog__task_edit --append-notes with the failure detail and either retry once with a corrected prompt or escalate to the user.mcp__backlog__task_edit --check-ac <N> to tick the AC, and --append-notes with a one-line summary of what was changed.Used for each affected manual chapter. One subagent per chapter, sequential.
Chapter mapping:
| Chapter | EN file | NL file |
|---|---|---|
| 1 (Introduction/features) | docs/manuals/en/ch01-introduction.md | docs/manuals/nl/h01-introductie.md |
| 2 (Hardware/install) | docs/manuals/en/ch02-hardware-setup.md | docs/manuals/nl/h02-hardware-installatie.md |
| 3 (Web interface) | docs/manuals/en/ch03-web-interface.md | docs/manuals/nl/h03-webinterface.md |
| 4 (Home Assistant/MQTT) | docs/manuals/en/ch04-home-assistant.md | docs/manuals/nl/h04-home-assistant.md |
| 5 (SAT thermostat) | docs/manuals/en/ch05-sat-thermostat.md | docs/manuals/nl/h05-sat-thermostaat.md |
| 6 (Network) | docs/manuals/en/ch06-network.md | docs/manuals/nl/h06-netwerk.md |
| 7 (Troubleshooting) | docs/manuals/en/ch07-troubleshooting.md | docs/manuals/nl/h07-probleemoplossing.md |
| 8 (Developer guide) | docs/manuals/en/ch08-developer-guide.md | docs/manuals/nl/h08-ontwikkelaarsgids.md |
| 9 (API reference) | docs/manuals/en/ch09-api-reference.md | docs/manuals/nl/h09-api-referentie.md |
| 10 (Appendix) | docs/manuals/en/ch10-appendix.md | docs/manuals/nl/h10-bijlagen.md |
Prompt template:
Read the current
[EN file]and[NL file]. Read the git diff for the relevant source files:git diff [PREV_TAG]..HEAD -- [source files]. Update both files to reflect the changes accurately. Preserve all existing content that is still correct. The EN file must be in English, the NL file must be in Dutch. Technical terms stay in English in both. Keep the same## Chapter N:/## Hoofdstuk N:heading format. Write the updated files back. Report which sections you changed and why; flag any change that needed an architectural decision rather than a doc edit.
Single subagent, only if REST or MQTT changed.
Files in scope: docs/api/openapi.yaml, docs/api/README.md, docs/api/MQTT.md, docs/api/WEBSOCKET_FLOW.md (only if WebSocket changed), docs/api/DALLAS_SENSOR_LABELS_API.md (only if Dallas API changed).
Prompt template:
Read the current docs in
docs/api/. Read the git diff:git diff [PREV_TAG]..HEAD -- restAPI.ino MQTTstuff.ino. Update the affected API docs to match the current implementation. For openapi.yaml: ensure every endpoint present inkV2Routes[]inrestAPI.inohas a spec entry. Add new endpoints, remove removed ones, update changed response schemas. For MQTT.md: verify topic paths and payload formats match the currentMQTTstuff.inopublish calls. Report endpoints added, removed, and changed.
Single subagent, only if a new .ino file was added or three or more .ino files changed.
Prompt template:
Read the current
docs/c4/c4-code-*.mdanddocs/c4/c4-component-*.mdfiles affected by the changes ingit diff [PREV_TAG]..HEAD -- src/OTGW-firmware/*.ino. Targeted updates only, no rewrites from scratch. Preserve the existing C4 structure (Code level documents per source area, Component level per logical group). Report which sections were touched.
--release mode only)Five sub-ACs, executed sequentially in order.
3D-1: Gather changes and contributors. Single subagent.
git log $PREV_TAG..HEAD --oneline | grep -v "CI: update version.h"
Categorize each commit into: new feature, bug fix, internal improvement, breaking change. Scan
docs/adr/for ADRs added or modified since[PREV_TAG]. Pull contributors from three sources sequentially: (1)gh pr list --state merged --search "merged:>[PREV_DATE]" --json author,title --jq '.[] | "\(.author.login): \(.title)"'. (2) Discord#beta-testing(channel914498730001072149) since[PREV_DATE]. (3) Discord#devs-esp-firmware(channel924989767966425158). Strip trailing digits from Discord usernames. Exclude bot IDs and maintainer384411356616720384. Output a structured commit-classification table and contributor list.
3D-2: Generate RELEASE_NOTES_<version>.md at repo root. Single subagent.
Read the template in
docs/process/RELEASE_PROCESS.md. WriteRELEASE_NOTES_<version>.mdwith sections: release summary (2-3 sentences), what's new (features grouped by subsystem), bug fixes, breaking changes (always explicit, either "none" or list), upgrade notes, known issues, contributors. Use the categorized commit list from 3D-1. English. No em dashes. No emojis.
3D-3: Generate RELEASE_GITHUB_<version>.md at repo root. Single subagent.
Concise GitHub release body. Sections: short intro (one sentence), highlights (bullet list, max eight items), bug fixes (bullet list), upgrade notes (only if needed), thank you (shoutout to most active contributor, bullet list of others, Discord invite link). English. No em dashes.
3D-4: Update docs/BREAKING_CHANGES.md. Single subagent.
Prepend a new version section to
docs/BREAKING_CHANGES.md. Explicitly state whether there are breaking changes for this version: either "None" or a list. Read the existing file first to match its format.
3D-5: Update README.md What's New section. Single subagent.
In
README.md: demote the current "What's New in v" section to "What was new in v". Add a new "What's New in v" section with four to six bullet highlights drawn fromRELEASE_NOTES_<version>.md.
Inline shell operations, no subagents. Always runs, regardless of mode. Idempotent.
If docs/releases/ has more than ten release-note files, move the oldest into docs/releases/archive/, keeping the four newest in place.
ls docs/releases/RELEASE_NOTES_*.md | sort | head -n -4
ls docs/releases/RELEASE_GITHUB_*.md | sort | head -n -4
Identify and move release documents from the repo root to docs/releases/:
ls RELEASE_NOTES_*.md RELEASE_GITHUB_*.md GITHUB_RELEASE_*.md 2>/dev/null
Exception: the CURRENT release's documents stay at root during the release phase, then move after publication.
If docs/reviews/ has more than fifteen subdirectories, group those older than ninety days under docs/reviews/archive/<YYYY-Q<N>>/. Preserve the ten most recent as-is.
Check docs/*.md for clearly outdated files (version-specific or superseded) and move them to docs/archive/. BREAKING_CHANGES.md and upgrade-from-*.md always stay at root.
After all ACs are checked and cleanup is done:
git diff --name-only to see what changed.mcp__backlog__task_edit --final-summary "<one paragraph: areas updated, contributors counted, anything notable>".Done: mcp__backlog__task_complete (preferred) or mcp__backlog__task_edit -s Done.git add docs/ README.md CHANGELOG.md backlog/tasks/task-<NNN>-*.md
docs: update documentation for changes since <PREV_TAG> (TASK-<NNN>)
git push./release skill commits and pushes everything together.If git diff --name-only returns empty after Phase 3, skip the commit and report "no documentation changes detected." Still flip the backlog task to Done with the final-summary noting "no changes required."
The /release skill calls this workflow in its Phase 4. When called from /release:
--release <version> so Phase 3D runs.--release mode: Phase 3D is itself five sequential subagents, not a parallel fan-out./update-docs invocation creates a NEW backlog task; do not reuse a previous task.kV2Routes[] in restAPI.ino./update-docs when invoked from the release skill.Publish an OTGW-firmware beta prerelease — bump _VERSION_PRERELEASE, push to otgw-1.x.x, tag, and let CI build + publish the GitHub prerelease
Drive the autonomous 2.0.0 ESP32-S3-only async + FreeRTOS migration (epic TASK-865). Runs a continuous workflow that audits stuck/finishable backlog tasks, then drains every actionable async-esp32s3 task back-to-back (implement -> build/eval -> adversarial review -> commit/push -> Discord) without waiting between tasks, then runs ONE end-of-loop ADR-evaluation pass that drafts Proposed ADRs for the run's architectural decisions, and can fan out to parallel worktree lanes. Use for one drain run of the migration loop (cron or manual).
Prepare and execute a full OTGW-firmware release following the documented release process
Generate a complete, self-contained design-system package for an embedded device's on-device web UI — one tokens file, one component library, a /design.html reference page, page-templates with sentinel-marked patch blocks, a Windows installer script (PS1 + .bat wrapper), and a handoff.md aimed at Claude Code for the markup edits and per-patch commits.
Generate a complete, self-contained design-system package for an embedded device's on-device web UI — one tokens file, one component library, a /design.html reference page, page-templates with sentinel-marked patch blocks, a Windows installer script (PS1 + .bat wrapper), and a handoff.md aimed at Claude Code for the markup edits and per-patch commits.
Guided rewrite of legacy-shaped ADRs into the canonical-seven-section template enforced by /adr-kit:lint. Promotes inline status / date lines to a