plugins/dev/skills/add-changelog-media/SKILL.md
Add screenshots, screencasts (GIFs), or other media to changelog entries. Supports both local files and externally-hosted assets on R2/CDN. Inserts markdown image references into CHANGELOG.md files so they render on the website.
npx skillsauth add coalesce-labs/catalyst add-changelog-mediaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Add screenshots, GIFs, or other visual media to changelog entries for the Catalyst website.
The website renders changelogs from plugins/*/CHANGELOG.md using the starlight-changelogs Astro
plugin. Images can be either:
website/public/ (for small PNGs if needed)Large assets (GIFs, screencasts) are hosted on Cloudflare R2 behind image optimization. The user uploads files to the R2 bucket and provides the URL.
Base URL: https://assets.coalescelabs.ai/changelog/
With Cloudflare image transforms (automatic format conversion + resizing):

The cdn-cgi/image/ path triggers Cloudflare's image optimization:
format=auto — serves WebP/AVIF to browsers that support itwidth=800 — constrains width for page layout (originals can be larger)quality=85 — optional, defaults to 85Without transforms (raw file, for GIFs where you want the animation preserved):

Naming convention: {plugin}-v{version}-{description}.{ext}
For small PNGs/screenshots under ~200KB:
website/public/changelog/
Reference with an absolute path from site root:

Do NOT use relative paths — they will not resolve correctly because starlight-changelogs
processes the markdown as an in-memory string with no filesystem anchor.
Edit the CHANGELOG.md to add the image reference after the AI-generated summary paragraph and
before the ### Features / ### Bug Fixes sections:
## [6.29.0](https://github.com/coalesce-labs/catalyst/compare/...) (2026-04-15)
<!-- ai-enhanced -->
### Worker Detail Drawer & Session Tracking
Click any worker row to open a detail panel with live metrics and activity feed.

### Features
...
To also update the GitHub release with the image:
# Get current release body
gh release view catalyst-dev-v6.29.0 --json body --jq .body > /tmp/release-body.md
# Add image reference (use the same R2 URL)
echo '' >> /tmp/release-body.md
# Update the release
gh release edit catalyst-dev-v6.29.0 --notes-file /tmp/release-body.md
# User provides an R2 URL for a GIF
/catalyst-dev:add-changelog-media dev v6.29.0 https://assets.coalescelabs.ai/changelog/dev-v6.29.0-worker-drawer.gif
# User provides a local screenshot
/catalyst-dev:add-changelog-media dev v6.34.0 ~/Desktop/session-filters.png
testing
Phase-agent that fixes a failing verify verdict so the pipeline self-heals instead of stalling to needs-human (CTL-653). Reads `${ORCH_DIR}/workers/<ticket>/verify.json`, fixes the `findings[]` (every severity:"high" plus the regression_risk drivers) directly via Edit/Write, commits the remediation, and emits `phase.remediate.complete.<ticket>`. The scheduler's router then re-dispatches `verify` to re-check (the verify⇄remediate cycle, cap 3). Dispatched as a `claude --bg` job by `phase-agent-dispatch`, which invokes it via slash command — hence `user-invocable: true`.
tools
--- name: phase-triage description: Phase agent that triages a Linear ticket — expands acronyms, classifies (feature/bug/docs/refactor/chore), identifies genuine blockers (a semantic second-pass over the backlog — NOT a prose scrape; CTL-838), estimates scope, writes triage.json, and posts a triage analysis comment to Linear. Triage completion is signaled by that comment plus the local triage.json — there is no `triaged` label. Emits phase.triage.complete.<TICKET> on success and phase.triage.fai
tools
Phase agent for the research step of the 9-phase orchestrator pipeline (CTL-450). Wraps /catalyst-dev:research-codebase and produces thoughts/shared/research/<date>-<ticket>.md, then emits phase.research.complete.<ticket>. Reads triage.json from the worker dir as its prior-phase artifact. Spawned via plugins/dev/scripts/phase-agent-dispatch, which invokes it via slash command — hence `user-invocable: true`.
development
Phase-agent wrapper that opens the pull request after implementation completes (CTL-449 Initiative 1 Phase 3). Delegates to `/catalyst-dev:create-pr` (which already auto-runs `describe-pr` and transitions Linear to `inReview`), then writes the PR number + URL into the phase signal file so the downstream `phase-monitor-merge` agent can read it without re-querying GitHub. Dispatched as a `claude --bg` job by `phase-agent-dispatch`, which invokes it via slash command — hence `user-invocable: true`.