Release
ankit/stylebot
Cut a Stylebot release — CHANGELOG entry, version bump, release PR, tag, and store zips.
Generate PNG screenshots for release notes using the repository's HtmlRenderer and ScreenshotGenerator tools.
$ npx skills add oocx/tfplan2md --skill generate-release-screenshots -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install oocx/tfplan2md generate-release-screenshots --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/oocx/tfplan2md.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/generate-release-screenshots .claude/skills/generate-release-screenshots && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "generate-release-screenshots" agent skill from https://github.com/oocx/tfplan2md/tree/main/.agents/skills/generate-release-screenshots into .claude/skills/generate-release-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-release-screenshots", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/oocx/tfplan2md/tree/main/.agents/skills/generate-release-screenshotsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add oocx/tfplan2md --skill generate-release-screenshots -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install oocx/tfplan2md generate-release-screenshots --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oocx/tfplan2md.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/generate-release-screenshots .agents/skills/generate-release-screenshots && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "generate-release-screenshots" agent skill from https://github.com/oocx/tfplan2md/tree/main/.agents/skills/generate-release-screenshots into .agents/skills/generate-release-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-release-screenshots", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oocx/tfplan2md --skill generate-release-screenshots -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install oocx/tfplan2md generate-release-screenshots --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oocx/tfplan2md.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/generate-release-screenshots .cursor/skills/generate-release-screenshots && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "generate-release-screenshots" agent skill from https://github.com/oocx/tfplan2md/tree/main/.agents/skills/generate-release-screenshots into .cursor/skills/generate-release-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-release-screenshots", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/oocx/tfplan2md.git --path .agents/skills/generate-release-screenshots--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add oocx/tfplan2md --skill generate-release-screenshots -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install oocx/tfplan2md generate-release-screenshots --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oocx/tfplan2md.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/generate-release-screenshots .gemini/skills/generate-release-screenshots && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "generate-release-screenshots" agent skill from https://github.com/oocx/tfplan2md/tree/main/.agents/skills/generate-release-screenshots into .gemini/skills/generate-release-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-release-screenshots", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install oocx/tfplan2md generate-release-screenshotsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add oocx/tfplan2md --skill generate-release-screenshots -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/oocx/tfplan2md.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/generate-release-screenshots .github/skills/generate-release-screenshots && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "generate-release-screenshots" agent skill from https://github.com/oocx/tfplan2md/tree/main/.agents/skills/generate-release-screenshots into .github/skills/generate-release-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-release-screenshots", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oocx/tfplan2md --skill generate-release-screenshots -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install oocx/tfplan2md generate-release-screenshots --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oocx/tfplan2md.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/generate-release-screenshots .opencode/skills/generate-release-screenshots && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "generate-release-screenshots" agent skill from https://github.com/oocx/tfplan2md/tree/main/.agents/skills/generate-release-screenshots into .opencode/skills/generate-release-screenshots/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-release-screenshots", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
generate-release-screenshotsGenerate PNG screenshots for release notes using the repository's HtmlRenderer and ScreenshotGenerator tools.
Generate Release Screenshots is an agent skill from oocx/tfplan2md. Generate PNG screenshots for release notes using the repository's HtmlRenderer and ScreenshotGenerator tools. Use when asked to add screenshots to release notes or documentation.
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Changelog and release notes. It works with Playwright. The repository describes itself as: Convert terraform plans (json) into human readable markdown for easier review of changes in pull requests. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 88d5240. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
dotnetpwshnpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Generate Release Screenshots loads about 3.7k tokens when it runs. Until then it costs about 52 tokens; SKILL.md has 1,146 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from oocx/tfplan2md at commit 88d5240, republished under its MIT licence (© oocx). 1,146 words, ~3,696 tokens.
.claude/skills/generate-release-screenshots/SKILL.md (or your agent's skills folder).Provide clear, actionable guidance for generating actual PNG screenshot files for release notes and documentation, preventing common mistakes like creating markdown links to source files or referencing non-existent images.
dotnet build src/tools/Oocx.TfPlan2Md.ScreenshotGenerator/), then install the browser via pwsh src/tools/Oocx.TfPlan2Md.ScreenshotGenerator/bin/Debug/net10.0/playwright.ps1 install chromium --with-deps. Do NOT use npx playwright install — the npm version differs from the .NET package version.scripts/generate-release-screenshots.sh for release note screenshots (includes retry logic and error reporting).scripts/generate-screenshot.sh for individual screenshots with full control (light/dark themes, DPI, crops).*-crop*.png files in release notes, or generate single screenshots using the release wrapper.raw.githubusercontent.com URLs in release notes — relative paths like ./image.png do NOT work in GitHub Release pages. Use format: https://raw.githubusercontent.com/oocx/tfplan2md/v{VERSION}/docs/{path}/image.png where {VERSION} is the release tag.--details open so resource details blocks are expanded in screenshots — unless you specifically want to capture a collapsed resource.<!-- release-screenshot: selector="..." ; focus="..." --> or target-resource-id="..." so PR validation can confirm the capture intent. syntax to markdown before verifying the PNG file exists.[View in file.md (lines X-Y)])../image.png) in release notes — they break in GitHub Release pages.# Generate focused screenshots for release notes
scripts/generate-release-screenshots.sh \
--plan examples/comprehensive-demo/plan.json \
--output-prefix feature-name \
--output-dir docs/features/NNN-feature-slug/ \
--selector "details:has(summary:has-text('resource_name'))"
# This script:
# - Includes retry logic (3 attempts with 5-second delays)
# - Provides detailed error reporting and troubleshooting guidance
# - Generates focused crop screenshots suitable for release notesscripts/generate-release-screenshots.sh \
--markdown-file artifacts/comprehensive-demo.md \
--output-prefix demo-screenshot \
--output-dir docs/features/NNN-feature-slug/ \
--target-resource-id "azurerm_firewall_network_rule_collection"# Generate with light/dark themes, DPI options, and custom crops
scripts/generate-screenshot.sh \
--plan examples/comprehensive-demo/plan.json \
--output-prefix feature-name \
--selector "details:has(summary:has-text('resource_name'))" \
--thumbnail-width 580 --thumbnail-height 400 \
--lightbox-width 1200 --lightbox-height 900 \
--render-target azdo \
--open-details-selector "details"
# This generates 12 variants:
# - Thumbnail and lightbox crops
# - Light and dark themes
# - 1x and 2x DPI versionsBefore any screenshot generation, ensure the correct Chromium browser is installed for the .NET Playwright package:
# 1. Build the ScreenshotGenerator project first
dotnet build src/tools/Oocx.TfPlan2Md.ScreenshotGenerator/
# 2. Install Chromium using the .NET project's Playwright script
pwsh src/tools/Oocx.TfPlan2Md.ScreenshotGenerator/bin/Debug/net10.0/playwright.ps1 install chromium --with-deps⚠️ Do NOT use npx playwright install — the npm Playwright version differs from the .NET Microsoft.Playwright NuGet package version, causing browser version mismatches (e.g., the .NET package expects chromium_headless_shell-1200 but npm installs chromium_headless_shell-1208). Always use the .NET project's playwright.ps1 script to ensure version compatibility.
Clarify with the user:
For release notes: Use scripts/generate-release-screenshots.sh
For full control: Use scripts/generate-screenshot.sh
Run the chosen script with appropriate parameters:
--plan or --markdown-file)--details open so resource attribute tables are visible in the screenshot — unless you specifically want to capture a collapsed resourceBefore proceeding:
Only after verification, use absolute URLs for release notes:
<!-- release-screenshot: selector="summary:has-text('resource_type.resource_name')"; focus="Shows the changed summary line" -->
Never use relative paths in release notes — they break in GitHub Release pages.
If screenshot generation fails:
The selector determines which part of the rendered HTML page is captured. Choosing the wrong selector is a common mistake that results in screenshots showing irrelevant content.
--selector captures the bounding box of all matching elements--target-terraform-resource-id finds the <details> block for a specific Terraform resource and captures its full content (attribute tables, body changes, etc.)| What changed | What to show | Recommended selector |
|---|---|---|
| Summary line (emoji, spacing, icons in collapsed view) | The <summary> element showing the change | --selector "summary:has-text('resource_type.resource_name')" |
| Resource details (attribute rendering, body layout) | The expanded <details> block | --target-terraform-resource-id "resource_type.resource_name" |
| Section header (module icons, heading format) | The heading element | --selector "h3:has-text('Module:')" or --selector "h4:has-text('Section Name')" |
| Tags rendering | The tags section within a resource | --selector "p:has-text('Tags:')" |
| Table formatting | A specific table | --selector "table:near(summary:has-text('resource'))" |
| Multiple elements (before/after, several fixes) | Wider section containing all changes | --selector "article" or use a parent container |
--target-terraform-resource-id for summary-line changesIf a fix only changes the collapsed <summary> line (e.g., emoji spacing like 2 🔧), do NOT use --target-terraform-resource-id — this captures the entire expanded resource details block, which shows attribute tables instead of the summary where the fix is visible.
# To capture wrench icon spacing fix in summary:
--selector "summary:has-text('azurerm_network_security_group')"
# To capture tags emoji addition:
--selector "p:has-text('🏷️ Tags:')"
# To capture module icon fix:
--selector "h3:has-text('📦 Module:')"
Relative paths work when browsing the file in the GitHub repository, but GitHub Release pages render the markdown body without a file context, so relative paths produce broken images.
Use the release tag (e.g., v1.20.0) in the URL. Since the release notes are committed before the tag exists, use the tag that will be created by the release pipeline. The format is:
https://raw.githubusercontent.com/oocx/tfplan2md/v{VERSION}/docs/{work-item-folder}/{filename}.pngImportant: The release notes file is committed to main before the tag is created. The release workflow copies release-notes.md as the GitHub Release body. Since the tag is created by Versionize on the same commit, the file will be accessible at the tag URL.
# Release notes created first

# Then trying to generate the screenshot
# Result: Broken link if generation fails# 1. Generate the screenshot
scripts/generate-release-screenshots.sh --plan ... --output-prefix feature-name
# 2. Verify it exists
ls -lh docs/features/NNN/feature-name-crop-light-1x.png
# 3. Then add the metadata + markdown reference
cat >> release-notes.md <<'EOF'
<!-- release-screenshot: selector="summary:has-text('resource_type.resource_name')"; focus="Shows the updated summary line" -->

EOFSee the changes in [comprehensive-demo.md (lines 45-67)](comprehensive-demo.md#L45-L67)<!-- release-screenshot: target-resource-id="azurerm_network_security_group.example"; focus="Shows the rendered resource details that changed" -->

# But the actual file is named "nsg-rules.png", not "before-screenshot.png"# 1. Generate screenshots
scripts/generate-release-screenshots.sh --plan ... --output-prefix nsg-rules --output-dir docs/features/072/
# 2. List actual generated files
ls docs/features/072/*.png
# 3. Use the exact filename in markdown with targeting metadata
# Output: docs/features/072/nsg-rules.png# Wrong: Skipping installation entirely
scripts/generate-release-screenshots.sh --plan ... --output-prefix feature ...
# Result: "Browser not found" error
# Wrong: Using npx (version mismatch with .NET Playwright package)
npx playwright install chromium --with-deps
scripts/generate-release-screenshots.sh --plan ... --output-prefix feature ...
# Result: "Executable doesn't exist at chromium_headless_shell-1200" (npm installed -1208)dotnet build src/tools/Oocx.TfPlan2Md.ScreenshotGenerator/
pwsh src/tools/Oocx.TfPlan2Md.ScreenshotGenerator/bin/Debug/net10.0/playwright.ps1 install chromium --with-deps
scripts/generate-release-screenshots.sh --plan ... --output-prefix feature ...src/tools/Oocx.TfPlan2Md.HtmlRenderer renders markdown to HTMLsrc/tools/Oocx.TfPlan2Md.ScreenshotGenerator (Playwright) captures PNG screenshotsUse the website-visual-assets skill (.agents/skills/website-visual-assets/SKILL.md) for:
website/_memory/screenshots.md)website/assets/screenshots/)scripts/generate-release-screenshots.sh, scripts/generate-screenshot.shsrc/tools/Oocx.TfPlan2Md.HtmlRenderer, src/tools/Oocx.TfPlan2Md.ScreenshotGenerator.agents/skills/website-visual-assets/SKILL.md (for website screenshots)© oocx, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/generate-release-screenshots of oocx/tfplan2md.
Open the folder on GitHubat commit 88d5240
Generate Release Screenshots next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Generate Release Screenshots this skilloocx/tfplan2md | 174 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Releaseankit/stylebot | 1.6k | — | ~897 | Automated safety check: Pass | MIT | |
| Project Docs Maintainerswimmwatch/cloakbrowser-mcp | 164 | — | ~569 | Automated safety check: Pass | MIT | |
| Project Releaseswimmwatch/cloakbrowser-mcp | 164 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Michel UI Demo RecorderPackmindHub/packmind | 317 | — | ~6.4k | Automated safety check: Pass | Apache-2.0 | |
| Release Processpadamson/playwright-rust | 154 | — | ~4.1k | Automated safety check: Pass | Apache-2.0 |
ankit/stylebot
Cut a Stylebot release — CHANGELOG entry, version bump, release PR, tag, and store zips.
swimmwatch/cloakbrowser-mcp
Maintain, organize, consolidate, or audit the cloakbrowser-mcp documentation set only when the user explicitly requests project documentation maintenance or an authorized public change requires it.
swimmwatch/cloakbrowser-mcp
Prepare, publish, verify, or recover a cloakbrowser-mcp release only when the user explicitly requests release work.
PackmindHub/packmind
Record polished UI demo videos and screenshots of a running web app using Playwright MCP — for client deliverables, release notes, feature walkthroughs, or bug repros.
padamson/playwright-rust
End-to-end release runbook for playwright-rust — version bump, supply-chain refresh, per-crate CHANGELOGs, tag-prefix routing for the three workspace crates, the safer push-then-tag workflow that…
nexu-io/open-design
Generate marketing screenshots with Playwright. An agent skill from nexu-io/open-design.
oocx/tfplan2md
Create a new Agent Skill following project standards and templates.
oocx/tfplan2md
Detect and analyze edge crossings and overlaps in SVG workflow diagrams using geometric intersection algorithms and visual analysis.
oocx/tfplan2md
Safely rebase the current feature branch on top of the latest origin/main.
oocx/tfplan2md
Determine the next available issue number across all change types (feature, fix, workflow, website) by checking both local docs and remote branches, then reserve it by pushing an empty branch.
oocx/tfplan2md
Run User Acceptance Testing by creating a PR with rendered markdown on GitHub or Azure DevOps.
oocx/tfplan2md
Convert the mermaid diagram in docs/workflow.md to a blueprint-styled SVG for the website.
Works with
Categories
Generate PNG screenshots for release notes using the repository's HtmlRenderer and ScreenshotGenerator tools. Generate Release Screenshots is an agent skill from oocx/tfplan2md. Generate PNG screenshots for release notes using the repository's HtmlRenderer and ScreenshotGenerator tools.
Generate Release Screenshots fits situations like: asked to add screenshots to release notes; tasks that involve Changelog and release notes.
Run `npx skills add oocx/tfplan2md --skill generate-release-screenshots -a claude-code`. Or copy the skill folder (.agents/skills/generate-release-screenshots in oocx/tfplan2md) into .claude/skills/generate-release-screenshots in your project. Claude Code loads it when a task matches its description.
Run `npx skills add oocx/tfplan2md --skill generate-release-screenshots -a codex`. Or copy the skill folder (.agents/skills/generate-release-screenshots in oocx/tfplan2md) into .agents/skills/generate-release-screenshots in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add oocx/tfplan2md --skill generate-release-screenshots -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generate-release-screenshots, .gemini/skills/generate-release-screenshots, .github/skills/generate-release-screenshots and .opencode/skills/generate-release-screenshots in your project.
Going by SKILL.md and its folder, Generate Release Screenshots needs the command-line tools its instructions call (dotnet, pwsh and npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Generate Release Screenshots is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Generate Release Screenshots: Release (ankit/stylebot, 1.6k stars), Project Docs Maintainer (swimmwatch/cloakbrowser-mcp, 164 stars), Project Release (swimmwatch/cloakbrowser-mcp, 164 stars) and Michel UI Demo Recorder (PackmindHub/packmind, 317 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
oocx (a GitHub user) maintains it in oocx/tfplan2md, which has 174 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 7, 2026.
Source: oocx/tfplan2md on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.