OmniNode-ai

/onex:changelog_audit

Fetch, parse, and classify changelog entries for Claude Code and key dependencies since the last audit date

OmniNode-ai 4 3 Actualitzat fa 6 mesos

Recursos

1
GitHub

Instal·la

npx skillscat add omninode-ai/omniclaude/plugins-onex-skills-changelog-audit

Instal·la des del registre de SkillsCat.

SKILL.md

/onex:changelog_audit

Fetch, parse, and classify changelog entries for a target dependency since the last audit date. For each ADOPT_NOW or BREAKING_CHANGE entry, create a Linear ticket automatically. Generate / refresh the unadopted features dashboard.

Usage

/onex:changelog_audit --target claude-code
/onex:changelog_audit --target anthropic-sdk-python --since-date 2026-03-01
/onex:changelog_audit --target github-cli --dry-run

Targets and Changelog URLs

Target URL
claude-code https://code.claude.com/docs/en/changelog
anthropic-sdk-python https://github.com/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md
github-cli https://github.com/cli/cli/releases
uv https://github.com/astral-sh/uv/blob/main/CHANGELOG.md
kafka-python https://github.com/dpkp/kafka-python/blob/master/CHANGES.md
custom-url Provide via --url arg

Classification Rules

Label Meaning Action
BREAKING_CHANGE Removes, renames, or incompatibly changes a feature Create Linear ticket; grep workspace for usage
ADOPT_NOW New feature / flag / hook we should adopt immediately Create Linear ticket
ADOPT_SOON Useful improvement worth scheduling Log to report only
EVALUATE Potentially useful, needs review Log to report only
SKIP Irrelevant (infra-only, other-platform) Omit from report

Keywords that trigger BREAKING_CHANGE: removed, deprecated, renamed, breaking, incompatible, migration required
Keywords that trigger ADOPT_NOW: new flag, new hook, new command, new env var, new tool, new permission

State Files

  • Last-audit timestamp: .onex_state/changelog_audit/<target>.last_audit.json
  • Audit report: .onex_state/changelog_audit/<target>-<date>.md
  • Dashboard: .onex_state/changelog_audit/DASHBOARD.md

Implementation

Step 1 — Resolve target URL and last-audit-date

import sys, os
plugin_root = os.environ.get("CLAUDE_PLUGIN_ROOT", "")
lib_path = f"{plugin_root}/skills/changelog_audit/_lib"
if lib_path not in sys.path:
    sys.path.insert(0, lib_path)

from dispatch import dispatch, AuditTarget

result = dispatch(
    target="{{--target}}",
    since_date="{{--since-date}}" or None,
    dry_run="{{--dry-run}}" == "true",
)

Step 2 — Display result

import json
print(json.dumps(result, indent=2, default=str))
if not result["success"]:
    raise SystemExit(1)

Print the audit summary:

  • Target + date range audited
  • Count per classification label
  • Linear tickets created (IDs + titles)
  • Workspace usages found for BREAKING_CHANGE entries (file:line list)
  • Dashboard location