Skip to content

docs: add automated release steps to contributing guide#598

Open
ttypic wants to merge 1 commit intomainfrom
release-skill
Open

docs: add automated release steps to contributing guide#598
ttypic wants to merge 1 commit intomainfrom
release-skill

Conversation

@ttypic
Copy link
Copy Markdown
Contributor

@ttypic ttypic commented Apr 8, 2026

  • Expanded release instructions in CONTRIBUTING.md to include automated release steps using Claude Code.
  • Clarified the manual release process as a fallback.
  • Added .claude/skills/release/SKILL.md to define the automated process and usage details.

Summary by CodeRabbit

  • Documentation
    • Added a release automation workflow describing semantic version bumping, release-branch creation, dependency lockfile updates, changelog generation from merged PRs, and a user-facing run summary with follow-up manual steps.
    • Updated CONTRIBUTING to add an "Automated Release" checklist and retain the original instructions under a "Manual Release" section.

@ttypic ttypic requested a review from maratal April 8, 2026 18:19
@github-actions github-actions bot temporarily deployed to staging/pull/598/features April 8, 2026 18:19 Inactive
@github-actions github-actions bot temporarily deployed to staging/pull/598/dartdoc April 8, 2026 18:20 Inactive
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 8, 2026

Walkthrough

Added a new release automation skill document .claude/skills/release/SKILL.md describing a scripted workflow for bumping versions, regenerating Flutter/Dart lockfiles and iOS CocoaPods, and auto-generating changelog entries; updated CONTRIBUTING.md to add a "Release Process (Claude Code)" section and preserve the manual release instructions.

Changes

Cohort / File(s) Summary
Release Automation Skill
​.claude/skills/release/SKILL.md
New release automation doc describing a script that reads pubspec.yaml version, computes new semantic version from `patch
Contributing Guide Update
CONTRIBUTING.md
Replaced single "Release Process" with "Release Process (Claude Code)" containing an 8-step checklist that uses `/release patch

Sequence Diagram(s)

sequenceDiagram
    autonumber
    participant Dev as Developer
    participant Script as Release Script
    participant Git as Git
    participant Files as Filesystem
    participant Flutter as Flutter/Dart
    participant CocoaPods as CocoaPods
    participant GH as GitHub CLI

    Dev->>Script: invoke /release (patch|minor|major)
    Script->>Files: read `pubspec.yaml` (old version)
    Script->>Script: compute NEW_VERSION
    Script->>Git: create & switch to `release/NEW_VERSION`
    Script->>Files: update `pubspec.yaml`, `README.md` references
    Script->>Flutter: run `flutter pub get` in `example/` and `test_integration/` (skip/report missing)
    Script->>CocoaPods: run `pod install` in iOS dirs (skip/report missing/unavailable)
    Script->>Files: detect changed files
    Script->>Git: commit changes `chore: bump version to NEW_VERSION`
    Script->>GH: query `gh pr list` / Git log for PRs since `vOLD_VERSION`
    GH-->>Script: return merged PR list (or none)
    Script->>Files: insert NEW_VERSION section into `CHANGELOG.md` with bullets
    Script->>Git: commit `docs: update CHANGELOG for NEW_VERSION`
    Script->>Dev: output run summary and next manual steps (push, PR, tag, release)
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰
I hopped through files with nimble feet,
Bumped versions tidy, neat;
Lockfiles fetched, changelog spun,
A release path now bright as sun —
Thump! Push, PR, and the job's complete.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding automated release steps documentation to the contributing guide.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release-skill

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
.claude/skills/release/SKILL.md (1)

44-45: Avoid fixed PR cap to prevent incomplete changelogs.

Line 44’s --limit 200 can silently omit merged PRs for longer release windows. Prefer pagination or date-filtered querying so changelog generation is complete.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/release/SKILL.md around lines 44 - 45, The changelog
generation uses a fixed cap (--limit 200) in the gh pr list invocation which can
omit merged PRs; replace the fixed --limit 200 usage in the command string with
either a paginated query or a date-filtered query (e.g., use gh's pagination or
add --search/--merged & date bounds) so the code that builds the gh pr list call
(the string containing "--limit 200") fetches all merged PRs for the release
window instead of silently truncating results.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/skills/release/SKILL.md:
- Around line 26-29: The markdown uses unlabeled fenced code blocks (e.g.,
blocks containing "cd example && flutter pub get && cd ..", "pod install
--project-directory=example/ios", "gh pr list --state merged --base main --json
number,title,mergedAt --limit 200", "git log vOLD_VERSION --format=\"%aI\" -1",
and the changelog bullet lists) which triggers MD040; update each fenced block
in SKILL.md so the shell/CLI blocks use a language identifier like ```bash and
the changelog/bullet blocks use ```md to satisfy markdownlint.

In `@CONTRIBUTING.md`:
- Line 184: Update the incorrect Release Workflow link in CONTRIBUTING.md:
replace the href that points to
"https://github.com/ably/ably-python/actions/workflows/release.yml" (the
"Release Workflow" link text) with the correct workflow URL for this
repository’s release workflow so maintainers are directed to this repo’s
actions/workflows/release.yml; ensure the visible link text ("Release Workflow")
remains the same.

---

Nitpick comments:
In @.claude/skills/release/SKILL.md:
- Around line 44-45: The changelog generation uses a fixed cap (--limit 200) in
the gh pr list invocation which can omit merged PRs; replace the fixed --limit
200 usage in the command string with either a paginated query or a date-filtered
query (e.g., use gh's pagination or add --search/--merged & date bounds) so the
code that builds the gh pr list call (the string containing "--limit 200")
fetches all merged PRs for the release window instead of silently truncating
results.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 6f6f6aae-fe6d-4bdf-ac9b-303b72c3430b

📥 Commits

Reviewing files that changed from the base of the PR and between 8be5c93 and 838f351.

📒 Files selected for processing (2)
  • .claude/skills/release/SKILL.md
  • CONTRIBUTING.md

…Claude Code process

- Expanded release instructions in `CONTRIBUTING.md` to include automated release steps using Claude Code.
- Clarified the manual release process as a fallback.
- Added `.claude/skills/release/SKILL.md` to define the automated process and usage details.
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
.claude/skills/release/SKILL.md (1)

26-29: ⚠️ Potential issue | 🟡 Minor

Add language identifiers to fenced blocks to satisfy markdownlint (MD040).

Unlabeled fenced blocks remain in multiple places; add bash for CLI commands and md for markdown templates.

Proposed fix
-      ```
+      ```bash
       cd example && flutter pub get && cd ..
       cd test_integration && flutter pub get && cd ..
       ```

-      ```
+      ```bash
       pod install --project-directory=example/ios
       pod install --project-directory=test_integration/ios
       ```

-   ```
+   ```bash
    gh pr list --state merged --base main --json number,title,mergedAt --limit 200
    ```

-   ```
+   ```bash
    git log vOLD_VERSION --format="%aI" -1
    ```

-   ```
+   ```md
    - Short, one sentence summary from PR title [`#NUMBER`](https://github.com/ably/ably-flutter/pull/NUMBER)
    ```

-```
+```md
 ## [NEW_VERSION](https://github.com/ably/ably-flutter/tree/vNEW_VERSION)

 [Full Changelog](https://github.com/ably/ably-flutter/compare/vOLD_VERSION...vNEW_VERSION)

 BULLETS_FROM_STEP_5
</details>


Also applies to: 33-36, 43-45, 47-49, 51-53, 58-65

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @.claude/skills/release/SKILL.md around lines 26 - 29, Several fenced code
blocks in SKILL.md lack language identifiers; update each unlabeled
triple-backtick block (including the blocks containing the CLI snippets "cd
example && flutter pub get...", "pod install --project-directory=example/ios",
"gh pr list --state merged --base main --json ...", and "git log vOLD_VERSION
--format="%aI" -1") to use bash, and update the template blocks that contain "- Short, one sentence summary..." and the "## [NEW_VERSION]..." changelog template to use md so markdownlint MD040 is satisfied.


</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In @.claude/skills/release/SKILL.md:

  • Around line 26-29: Several fenced code blocks in SKILL.md lack language
    identifiers; update each unlabeled triple-backtick block (including the blocks
    containing the CLI snippets "cd example && flutter pub get...", "pod install
    --project-directory=example/ios", "gh pr list --state merged --base main --json
    ...", and "git log vOLD_VERSION --format="%aI" -1") to use bash, and update the template blocks that contain "- Short, one sentence summary..." and the "## [NEW_VERSION]..." changelog template to use md so markdownlint MD040 is
    satisfied.

</details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Organization UI

**Review profile**: CHILL

**Plan**: Pro

**Run ID**: `ca594753-31fd-40d5-9882-225db87dee39`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 838f3514916f37e385b935327e3cc6fec78b9435 and 82238f3f85446fdd786f6d18ab37966931153fa2.

</details>

<details>
<summary>📒 Files selected for processing (2)</summary>

* `.claude/skills/release/SKILL.md`
* `CONTRIBUTING.md`

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Copy link
Copy Markdown
Collaborator

@maratal maratal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants