GitHub Release Analyzer
Use this skill as a fixed pipeline:
prepare -> summarize -> render -> deliver -> commit
Only summarize is free-form. prepare, render, and commit are deterministic script steps.
Inputs
- Repo input:
https://github.com/<owner>/<repo>or<owner>/<repo> - Default
stateKey:{owner}__{repo} - Default template:
default - Default behavior:
- manual: latest formal release only, no state read/write
- cron: formal releases only, first run selects latest only, later runs select unprocessed only
Workflow
- Read
references/execution-modes.mdand choosemanualorcron. - Run:
python3 skills/github-release-analyzer/scripts/run.py prepare --repo <repo> --mode <manual|cron>
Useful flags:
--state-key <key>--limit <n>--include-prerelease--output-template default--initial-cron-behavior latest-only
-
If
status=has_updates, readreferences/summary-contract.mdand produce one summary string per selected release. Keep the summary language aligned with the primary language of the invocation instruction. -
Render the final message:
python3 skills/github-release-analyzer/scripts/run.py render --repo <repo> --mode <manual|cron> < payload.json
When building the render payload, preserve the release fields required by render, especially tag_name, published_at, and html_url.
- In cron mode, after successful delivery, commit state:
python3 skills/github-release-analyzer/scripts/run.py commit \
--repo <repo> \
--mode cron \
--processed-tags <comma-separated-tags> \
--latest-release-id <id> \
--latest-published-at <iso8601>
Rules
- Treat
prepareoutput as the source of truth for selection, ordering, first-run behavior, repo normalization, and state path. - The output language must follow the primary language of the invocation instruction.
- The final outgoing message must come from
render. - In cron mode:
- if
status=no_updateorstatus=no_release, reply withNO_REPLY - if
status=has_updates, emit only the final rendered message
- if
- Update processed state only after successful delivery.
Hard prohibitions
- Do not skip
prepare. - Do not bypass
render. - Do not reorder or silently drop releases selected by
prepare. - Do not call
commitin manual mode. - Do not call
commitbefore delivery succeeds in cron mode. - Do not replace the summary contract with ad hoc prose outside the required
summaries[]string-array shape. - In cron mode, when
status=no_updateorstatus=no_release, reply exactlyNO_REPLY. - In cron mode, do not emit progress chatter, intermediate JSON, step labels, or workflow narration.
Files to read
references/execution-modes.mdreferences/summary-contract.mdreferences/templates.mdreferences/state-format.md