Agent Skills › dartsim/dart › dart-changelog

dart-changelog

GitHub

管理DART项目的Changelog工作流,支持判断是否需要记录、起草条目、添加PR链接、审计遗漏或重复内容,以及汇总版本片段。

.agents/skills/dart-changelog/SKILL.md dartsim/dart

Trigger Scenarios

需要决定变更是否需写入Changelog 起草或修订Changelog条目 为已发布的PR添加链接到Changelog 审计Changelog片段的完整性与规范性 在里程碑或发布前汇总Changelog条目

Install

npx skills add dartsim/dart --skill dart-changelog -g -y
More Options

Non-standard path

npx skills add https://github.com/dartsim/dart/tree/main/.agents/skills/dart-changelog -g -y

Use without installing

npx skills use dartsim/dart@dart-changelog

指定 Agent (Claude Code)

npx skills add dartsim/dart --skill dart-changelog -a claude-code -g -y

安装 repo 全部 skill

npx skills add dartsim/dart --all -g -y

预览 repo 内 skill

npx skills add dartsim/dart --list

SKILL.md

Frontmatter
{
    "name": "dart-changelog",
    "description": "DART Changelog: decide, draft, finalize, audit, or assemble DART changelog entries"
}

dart-changelog

Use this skill to run the DART dart-changelog workflow. The editable workflow source lives in .claude/commands/; this generated skill is its entrypoint for Codex and Muse.

Invocation

  • Claude Code: /dart-changelog <arguments>
  • Codex: $dart-changelog <arguments>
  • Muse: /dart-changelog <arguments>

Treat the text after the skill name, or the user's request when the skill is loaded on demand, as $ARGUMENTS. When the workflow references $1, $2, etc., map those to the positional values supplied by the user.

Command Body

Maintain DART changelog entries: $ARGUMENTS

Purpose

dart-changelog is the reusable changelog decision and writing routine. It is usually invoked by other DART workflows when they reach a changelog decision, not directly by users.

Use it to:

  • decide whether a change needs a changelog entry;
  • draft an entry at the right level of detail;
  • add a PR link after publication;
  • audit pending fragments or a release section for missing or over-detailed entries; or
  • assemble main's fragments at a checkpoint.

On main, an entry is a changelog.d/ fragment and only checkpoint assembly adds entries to CHANGELOG.md; release-* branches edit CHANGELOG.md directly. Keep style, placement, evidence, and release-note density aligned with docs/onboarding/changelog.md.

Required Reading

@AGENTS.md @docs/onboarding/changelog.md @docs/onboarding/release-management.md @changelog.d/README.md

Modes

Interpret $ARGUMENTS as one of these modes when present:

  • decide: determine whether the current change needs a changelog entry and record the reason in author/task notes when no entry is needed.
  • draft: write or revise the entry before a PR number exists: a changelog.d/<topic>.md fragment on main, a CHANGELOG.md entry on a release-* branch.
  • finalize: add the PR link line to the fragment (or release-branch entry) or adjust the entry after a PR exists, keeping the follow-up local until explicit maintainer/user approval permits a push.
  • audit: scan pending changelog.d/ fragments, a CHANGELOG.md release section, or a PR set for missing, duplicate, over-detailed, misplaced, or stale entries.
  • release-audit: alias for audit when the caller is finalizing a release section as part of release packaging (see docs/onboarding/release-management.md).
  • assemble: at a checkpoint (each milestone exit, before a release candidate, tag, or release-branch cut from main, or when the maintainer asks), run pixi run changelog-assemble on a topic branch from fresh origin/main, then release-audit the assembled section. Its PR still needs explicit maintainer/user approval before it is opened.

If no mode is given, infer the smallest mode that satisfies the caller's need.

Output Contract

Every run must leave the caller with a concise, pasteable decision note. Use this shape in the response or handoff text; PR descriptions follow the contributor owner rather than copying this decision log:

Changelog decision:

- Mode: decide | draft | finalize | audit | release-audit | assemble
- Base evidence: <base ref or PR/release inspected>
- Scope evidence: <diff, PR, issue, or release section inspected>
- Decision: entry required | no entry required | entry deferred | audit only
- Target section: <fragment path and category, release/category, or N/A>
- Entry text: <final or draft bullet, or N/A>
- Decision reason: <evidence-backed reason or required follow-up>
- Follow-up: <PR link, maintainer approval, release audit, or none>

For no entry required, the decision note must name the evidence-backed reason rather than just saying "not needed." For entry deferred, say exactly what is missing, usually the PR number or release target. For finalize, confirm the entry still matches nearby CHANGELOG.md style after adding the PR link. For assemble, list where each fragment moved.

Workflow

  1. Inspect the change and target:
    git status --short --branch
    git diff --stat
    git diff --cached --stat
    BASE_REF="$(gh pr view --json baseRefName --jq .baseRefName 2>/dev/null || true)"
    # If the caller or arguments name a target branch before PR creation, set
    # BASE_REF to that branch before falling back to automatic inference.
    if [ -z "$BASE_REF" ]; then
      CURRENT_BRANCH="$(git branch --show-current)"
      UPSTREAM_REF="$(git rev-parse --abbrev-ref --symbolic-full-name @{upstream} 2>/dev/null || true)"
      for REF in "$CURRENT_BRANCH" "${UPSTREAM_REF#origin/}"; do
        case "$REF" in
          main|release-*) BASE_REF="$REF"; break ;;
        esac
      done
    fi
    BASE_REF="${BASE_REF:-main}"
    git fetch origin "$BASE_REF"
    git diff --stat "origin/$BASE_REF...HEAD"
    gh pr diff --name-only 2>/dev/null || true
    gh pr list --head "$(git branch --show-current)"
    
    Use the base comparison or PR diff even when the worktree is clean. If a PR, issue, release, or target branch is named, inspect that live object before writing and prefer its base over the main fallback.
  2. Read docs/onboarding/changelog.md, the relevant CHANGELOG.md release section and, on main, the pending changelog.d/ fragments. Compare nearby bullets before drafting so wording, section choice, and level of detail match the current file.
  3. Decide whether an entry is required using the guide. CHANGELOG.md is written for users of the released library and packages:
    • public API, behavior, packaging, dependency, platform, simulation correctness, release, or migration impact needs an entry;
    • CI, tooling, AI-harness, docs-workflow, and other internal changes do not, unless they change a command or workflow that users of the release run; typo-only, formatting-only, generated-only, and tiny internal refactors never do.
  4. Record the decision with the Output Contract before writing a fragment, modifying CHANGELOG.md, or telling a caller to skip it. The decision must cite the diff, PR, issue, release section, or target branch that was inspected.
  5. When writing, start with the reader-visible outcome, not the implementation chore. Use one concise bullet, combine closely related changes, avoid author credits, and avoid one-bullet-per-PR diary style. Keep the entry to what the reader must know or do (what changed for them, any rebuild or migration step); the mechanism belongs in the PR body or a design doc. Describe DART behavior or API conditions for any downstream, without naming a specific downstream project in entry descriptions; keep bug-report issue links as references. PR descriptions may still cite downstream evidence.
  6. On main, write the entry as changelog.d/<topic>.md in the changelog.d/README.md format, naming the nearest existing category under the unreleased release heading; on a release-* branch, place it under that branch's release section in CHANGELOG.md and delete any cherry-picked changelog.d/ fragment. Do not add a category for a single entry unless the release shape genuinely needs it.
  7. Add the best evidence link, matching this branch's established style (* bullets; the bare [#1234](https://github.com/dartsim/dart/pull/1234) link on its own line at the end of the entry):
    • if no PR number exists yet, draft without the link and leave the follow-up local until explicit approval permits another push or PR update.
  8. For release audits, consolidate noisy implementation ledgers, confirm breaking/removal/deprecation bullets name a migration or support lane, and preserve human-readable release notes over exhaustive history. For assemble, every fragment needs its PR link first; review the assembled section with these release-audit rules and commit CHANGELOG.md together with the deleted fragments.
  9. Validate with the gate appropriate to the caller. After writing or finalizing a fragment, run pixi run check-changelog-fragments. For changelog-only edits, run the docs-only checks from docs/ai/verification.md; before any commit, run pixi run lint.

Caller Contract

Other workflows should call this routine whenever they touch behavior or docs that may need release notes. The caller keeps ownership of the overall task, validation, PR body, and approval boundary; dart-changelog owns the changelog decision, wording, placement, evidence-link hygiene, and the pasteable decision note that lets Claude, Codex, Muse, and manual contributors record the same outcome.

Output

Report:

  • the changelog decision note in the Output Contract shape above;
  • the drafted or finalized entry text and its fragment path or CHANGELOG.md placement;
  • gates run (pixi run check-changelog-fragments, pixi run lint, docs-only checks) and their results;
  • any follow-up left local pending explicit maintainer/user approval.

Version History

  • aa707ae Current 2026-11-02 12:52

    新增assemble模式用于在检查点自动汇编changelog.d片段并执行release-audit;更新Purpose说明以区分main分支与release-*分支的不同处理方式。

  • f630c91 2026-10-18 20:24

    新增 Muse 客户端支持;更新所需阅读文档,移除 release-roadmap.md,保留 release-management.md;扩展 Modes 以支持 release-audit 场景。

  • deb9869 2026-09-08 21:44

    将AI工具支持范围缩小至Claude Code和Codex。

  • b9fbefc 2026-07-19 11:29

Same Skill Collection

.agents/skills/dart-analyze/SKILL.md
.agents/skills/dart-architecture/SKILL.md
.agents/skills/dart-audit-agent-compliance/SKILL.md
.agents/skills/dart-backport-pr/SKILL.md
.agents/skills/dart-benchmark-packet/SKILL.md
.agents/skills/dart-branch-cleanup/SKILL.md
.agents/skills/dart-build/SKILL.md
.agents/skills/dart-ci/SKILL.md
.agents/skills/dart-close-issue/SKILL.md
.agents/skills/dart-contribute/SKILL.md
.agents/skills/dart-deps/SKILL.md
.agents/skills/dart-docs-update/SKILL.md
.agents/skills/dart-downstream-fix/SKILL.md
.agents/skills/dart-execute-packet/SKILL.md
.agents/skills/dart-fix-issue/SKILL.md
.agents/skills/dart-io/SKILL.md
.agents/skills/dart-manage-pr/SKILL.md
.agents/skills/dart-mechanical-refactor/SKILL.md
.agents/skills/dart-model-upgrade/SKILL.md
.agents/skills/dart-new-task/SKILL.md
.agents/skills/dart-next/SKILL.md
.agents/skills/dart-perf/SKILL.md
.agents/skills/dart-plan-update/SKILL.md
.agents/skills/dart-pr/SKILL.md
.agents/skills/dart-python/SKILL.md
.agents/skills/dart-references/SKILL.md
.agents/skills/dart-release-ci-fix/SKILL.md
.agents/skills/dart-release-merge-main/SKILL.md
.agents/skills/dart-release-packaging/SKILL.md
.agents/skills/dart-resume/SKILL.md
.agents/skills/dart-retro/SKILL.md
.agents/skills/dart-review-pr/SKILL.md
.agents/skills/dart-test/SKILL.md
.agents/skills/dart-triage-issue/SKILL.md
.agents/skills/dart-ultrawork/SKILL.md
.agents/skills/dart-verify-sim/SKILL.md
.claude/skills/dart-architecture/SKILL.md
.claude/skills/dart-build/SKILL.md
.claude/skills/dart-ci/SKILL.md
.claude/skills/dart-contribute/SKILL.md
.claude/skills/dart-io/SKILL.md
.claude/skills/dart-perf/SKILL.md
.claude/skills/dart-python/SKILL.md
.claude/skills/dart-references/SKILL.md
.claude/skills/dart-test/SKILL.md
.claude/skills/dart-verify-sim/SKILL.md
.codex/skills/dart-analyze/SKILL.md
.codex/skills/dart-architecture/SKILL.md
.codex/skills/dart-audit-agent-compliance/SKILL.md

Metadata

Files
0
Version
aa707ae
Hash
e0a73f2b
Indexed
2026-07-19 11:29

trang chủ - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-11-03 00:41
浙ICP备14020137号-1