GitHub Release Analyzer

Analyze GitHub repository releases and summarize release notes. Use when the user asks to analyze, summarize, review, or track the latest release or recent releases for a GitHub re…

BOSS

@stoner-byte

Install

$ openclaw skills install @stoner-byte/github-release-analyzer

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

Before running any scripts/... command, set the command working directory to the directory containing the loaded SKILL.md (the Skill root). Do not run these commands from the OpenClaw workspace root. This does not require a shell SKILL_DIR environment variable: OpenClaw uses the loaded Skill's installed directory, and Hermes uses the skill_dir returned by skill_view.

  1. Read references/execution-modes.md and choose manual or cron.
  2. From the Skill root, run:
python3 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
  1. If status=has_updates, read references/summary-contract.md and produce one summary string per selected release. Keep the summary language aligned with the primary language of the invocation instruction.

  2. Render the final message:

python3 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.

  1. In cron mode, after successful delivery, commit state:
python3 scripts/run.py commit \
  --repo <repo> \
  --mode cron \
  --processed-tags <comma-separated-tags> \
  --latest-release-id <id> \
  --latest-published-at <iso8601>

Rules

  • Treat prepare output 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_update or status=no_release, reply with NO_REPLY
    • if status=has_updates, emit only the final rendered message
  • 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 commit in manual mode.
  • Do not call commit before 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_update or status=no_release, reply exactly NO_REPLY.
  • In cron mode, do not emit progress chatter, intermediate JSON, step labels, or workflow narration.

Files to read

  • references/execution-modes.md
  • references/summary-contract.md
  • references/templates.md
  • references/state-format.md

Top skills in this category