Individual skill
generate-illustrated-article
Produce a COMPLETE illustrated help-centre article in one pass — draft the prose, deliberately choose which steps benefit from a screenshot, render source-grounded mockups, and optionally generate missing raster content or separately-ledgered external surfaces with OpenAI. Use when the user asks for a how-to guide, user-facing documentation, or help-centre article. Triggers on "write an article", "generate a guide", "document how to…", "write an illustrated article", "article with screenshots".
engine/generate-illustrated-article/SKILL.md
Source commit e6c0b52f53793d2a45e6268a449e67c7d976d755
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Network or broad shell
- Last checked
- Nov 7, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 121
- Repository last updated
- Nov 5, 2026
- License
- Apache-2.0
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- ai-agents Repository topic
- claude-code Repository topic
- cli Repository topic
- codex Repository topic
- documentation Repository topic
- help-center Repository topic
- markdown Repository topic
- mcp Repository topic
- screenshots Repository topic
- technical-writing Repository topic
- writing Derived category
- docs Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytesSKILL.mdcore · 82,046 bytescontracts/desktop.mddoc · 15,021 bytescontracts/game.mddoc · 6,702 bytescontracts/label-evidence.mddoc · 3,251 bytescontracts/macos.mddoc · 10,424 bytescontracts/mobile.mddoc · 8,001 bytescontracts/terminal.mddoc · 5,934 bytescontracts/win32.mddoc · 7,677 bytespackage-lock.jsonasset · 12,837 bytespackage.jsonruns · 789 bytesscripts/article_blocks.jsruns · 1,630 bytesscripts/check_article_json.jsruns · 4,326 bytesscripts/content_locale.jsruns · 4,009 bytesscripts/emit_walkthrough_signals.jsruns · 4,126 bytesscripts/extract_images.jsruns · 7,009 bytesscripts/find_locale_files.jsruns · 7,133 bytesscripts/generate_content_images.jsruns · 16,130 bytesscripts/include_census.jsruns · 27,174 bytesscripts/inject_assets.jsruns · 82,481 bytesscripts/jit_mockup_css.jsruns · 10,707 bytesscripts/label_evidence.jsruns · 7,012 bytesscripts/lint_article_copy.jsruns · 16,663 bytesscripts/lint_mockup_fidelity.jsruns · 134,894 bytesscripts/polish_tickets.jsruns · 69,686 bytesscripts/related_repos.shruns · 2,005 bytesscripts/render_all.jsruns · 8,647 bytesscripts/render_mockup.jsruns · 35,534 bytesscripts/render_ready.jsruns · 7,550 bytesscripts/resolve_workspace.shruns · 2,217 bytesscripts/runtime_region_geometry.jsruns · 3,139 bytesscripts/source_paths.jsruns · 2,440 bytesscripts/test_control_visibility.jsruns · 2,583 bytesscripts/test_emit_walkthrough_signals.jsruns · 6,801 bytesscripts/test_find_locale_files.jsruns · 5,823 bytesscripts/test_generate_content_images.jsruns · 9,370 bytesscripts/test_include_census.jsruns · 6,608 bytesscripts/test_label_evidence.jsruns · 4,806 bytesscripts/test_lint_article_copy.jsruns · 12,124 bytesscripts/test_lint_mockup_fidelity.jsruns · 39,268 bytesscripts/test_node_ports.jsruns · 9,291 bytesscripts/test_polish_tickets.jsruns · 34,087 bytesscripts/test_related_repos.jsruns · 2,962 bytesscripts/test_render_ready.jsruns · 5,035 bytesscripts/test_source_paths.jsruns · 3,924 bytesscripts/trace_hook.jsruns · 3,007 bytesscripts/trace_hook.shruns · 237 bytesscripts/validate_html.jsruns · 3,774 bytesscripts/watermark.jsruns · 3,324 bytes
Read excerpt
You are producing a **complete illustrated help-centre article** for "$topic" — prose plus rendered PNG screenshots — in **this single session**. Doing both phases in one session lets you reuse the project map, branding, and resolved view sources instead of re-loading them cold.
The crucial difference from illustrating everything: **you deliberately cover the user-performed UI actions on the main path, then choose whether any non-action steps also earn a screenshot.** `$max_images` is a **hard limit** — the `max_images` argument, else `RTFM_MAX_IMAGES` (echoed in STEP 0), else 3 — and the lint fails an article with more screenshots. Reuse one action-ready screenshot across same-surface actions; when the actions still do not fit, cover the main path first and leave conditional branches and secondary tasks as text. Rendering each mockup is the slowest part of the job, so fewer, well-chosen screenshots are the goal.
Publish the article progressively: write `article.json` as soon as the prose is complete, then publish each `block_<id>.png` immediately after that section mockup is ready. Do not hold completed screenshots until every mockup has been authored. **The reader is waiting from the first second and sees nothing until `article.json` exists, so the prose is written from a minimal grounding (Phase 1's reading budget) and the deep source resolution the mockups need happens in Phase 3, after the article is on disk — the same reading, later.** Final output remains `./output/articles/<slug>/` with `article.json`, `view_sources.json`, `block_<id>.html`, `block_<id>.png`, `lint_report.json`, and `branding.css`, plus generated-asset files only when needed.
## Phase 1 — Draft the article prose
Resolve the topic's source files and author the prose:
- STEP 0 bootstrap. Derive the slug and **write the run-trace marker** (so the trace hook logs this run for later analysis), then build the image manifest:
```bash
echo "rtfm-skills v$(cat ${RTFM_SKILLS_DIR:-$HOME/.rtfm-skills}/VERSION 2>/dev/null || echo '?') — generate-illustrated-article"