prepare-release
Skill1.5k starsChanged 9 days agoApache-2.0View on GitHub
Plan, prepare and publish releases of the Patrol packages (patrol, patrol_cli, patrol_finders, patrol_log, patrol_mcp, adb). Use when asked what is unreleased or ready to release, which PRs are close to merging before a release, to prepare a release ("prepare patrol 4.11.0", "release patrol_log"), or to tag and publish a merged release PR. Status is read-only; preparing ends at open release PRs, one per package; a tag is pushed only after its PR merges and the user says so.
- Commits and pushes
47 other projects use a version of this.
Adopted by
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
Most recently taken up by
- CherryHQ/cherry-studiotheir own version, first seen Nov 8, 2026
- Azure/azure-sdk-for-rusttheir own version, first seen Nov 8, 2026
- Krzysztof318/MailFathomtheir own version, first seen Nov 7, 2026
- epam/ketchertheir own version, first seen Nov 1, 2026
- netbox-community/netboxtheir own version, first seen Nov 1, 2026
- microsoft/vscode-languageserver-nodetheir own version, first seen Nov 1, 2026
Who's talking about leancodepl/patrol
- flutter/flutter“Integration Testing docs are very basic and don't cover common real-world scenarios”GitHub · Jan 23, 2024 · 11 reactions
- flutter/flutter“`WidgetTester`'s "end of test verifications" cause integration tests to always fail when Android …”GitHub · Jun 21, 2023 · 10 reactions
- flutter/flutter“Improve `Finder` APIs”GitHub · Nov 22, 2022 · 6 reactions
- VeryGoodOpenSource/very_good_cli“fix: Google Analytics (UA) will stop working on July 1st, 2023”GitHub · Mar 29, 2023 · 2 reactions
- team-telnyx/flutter-voice-sdk“chore(deps): bump patrol from 3.20.0 to 4.1.1”GitHub · Feb 10, 2026 · 1 reactions
The biggest 5 of 53 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 53
Talked about on GitHub and Stack Overflow (53 times).
On GitHub · 50
- Jan 23, 2024Integration Testing docs are very basic and don't cover common real-world scenarios — flutter/fluttersays it tested it11 reactions · 1 comment
- Jun 21, 2023`WidgetTester`'s "end of test verifications" cause integration tests to always fail when Android `UiAutomation` is used — flutter/flutter10 reactions · 10 comments
- Nov 22, 2022Improve `Finder` APIs — flutter/flutter6 reactions · 6 comments
- Mar 29, 2023fix: Google Analytics (UA) will stop working on July 1st, 2023 — VeryGoodOpenSource/very_good_cli2 reactions · 1 comment
- Feb 10, 2026chore(deps): bump patrol from 3.20.0 to 4.1.1 — team-telnyx/flutter-voice-sdk1 reaction · 2 comments
45 more on GitHub
- Nov 3, 2026agent-skills.github.leancodepl.patrol: 4.10.0 → 4.11.0 — sudosubin/agents.nix0 reactions
- Nov 3, 2026claude-code-plugins.github.leancodepl.patrol: 4.10.0 → 4.11.0 — sudosubin/agents.nix0 reactions
- Nov 1, 2026build(deps): bump the mobile-non-major group across 1 directory with 9 updates — sujayamindev/reclaima0 reactions
- Oct 30, 2026chore(deps): bump the all group across 1 directory with 6 updates — stuart-bradley/watch-nook0 reactions · 1 comment
- Oct 25, 2026build(deps): bump the mobile-non-major group across 1 directory with 6 updates — sujayamindev/reclaima0 reactions · 1 comment
- Oct 23, 2026chore(deps): bump the all group across 1 directory with 5 updates — stuart-bradley/watch-nook0 reactions · 1 comment
- Oct 16, 2026build(deps): bump the pub-dependencies group across 1 directory with 16 updates — thiagomiranda3/Getman0 reactions
- Oct 16, 2026chore(deps): bump the all group across 1 directory with 4 updates — stuart-bradley/watch-nook0 reactions · 1 comment
- Oct 15, 2026chore(deps): bump the example-flutter-dependencies group across 1 directory with 5 updates — Ali-Mitchell/googl-nav-sdk-example0 reactions · 1 comment
- Oct 13, 2026chore(deps): bump the example-flutter-dependencies group across 1 directory with 4 updates — googlemaps/flutter-navigation-sdk0 reactions · 1 comment
- Oct 13, 2026Bump patrol from 4.1.1 to 4.10.0 — VictorAlexMM/backup-converter-manga0 reactions
- Oct 8, 2026chore(deps): bump the example-flutter-dependencies group across 1 directory with 4 updates — Ali-Mitchell/googl-nav-sdk-example0 reactions · 1 comment
- Oct 6, 2026chore(deps): bump the example-flutter-dependencies group across 1 directory with 3 updates — googlemaps/flutter-navigation-sdk0 reactions · 1 comment
- Oct 4, 2026claude-code-plugins.github.leancodepl.patrol: init at 4.10.0 — sudosubin/agents.nix0 reactions
- Sep 30, 2026chore(deps): bump patrol from 4.9.0 to 4.10.0 in /mobile/flutter — cuesoftinc/apparule0 reactions · 1 comment
- Sep 24, 2026chore(deps): bump the example-flutter-dependencies group across 1 directory with 4 updates — Ali-Mitchell/googl-nav-sdk-example0 reactions · 1 comment
- Sep 22, 2026chore(deps): bump the example-flutter-dependencies group across 1 directory with 3 updates — googlemaps/flutter-navigation-sdk0 reactions · 1 comment
- Sep 21, 2026build(deps): bump patrol from 4.6.1 to 4.10.0 — naipaka/onepage0 reactions · 1 comment
- Sep 21, 2026chore(deps): bump patrol_mcp from 0.2.0 to 0.2.1 in /tool/patrol_mcp in the patrol-mcp-dependencies group — zhangheng2022/meet_trace0 reactions
- Sep 8, 2026chore(deps): bump patrol from 3.20.0 to 4.9.0 in /apps/mobile — mfurkanturan/CultureBox0 reactions
- Aug 20, 2026spike: evaluate agent-assisted Flutter testing and visual evidence — studyu-health/studyusays it tested it0 reactions
- Aug 18, 2026chore(deps): bump the flutter-dependencies group across 1 directory with 3 updates — Algieba-dean/modern-flutter-template0 reactions
- Aug 17, 2026build(deps): bump the pub-minor-patch group across 1 directory with 9 updates — mdarif/Al-Tawheed0 reactions · 1 comment
- Aug 1, 2026Bump patrol from 3.20.0 to 4.8.0 — SharezoneApp/sharezone-app0 reactions · 1 comment
- Jul 13, 2026chore(deps): bump the example-flutter-dependencies group across 1 directory with 3 updates — googlemaps/flutter-driver-sdk0 reactions
- Jul 13, 2026chore(deps): bump patrol_finders from 3.5.0 to 3.6.0 — Yubico/yubioath-flutter0 reactions
- Jun 4, 2026Draft: leancodepl/patrol — Patrol + GitHub Actions + iOS: Unable to shutdown device in current state: Shutdown — gistrec/community-assistant0 reactions · 1 comment
- Jun 1, 2026chore(deps)(deps): bump patrol and patrol_finders — upendraprasad19/AVYA0 reactions · 3 comments
- May 27, 2026Bump patrol from 4.1.1 to 4.6.1 — ecolab-neil/my_flavored_app0 reactions
- Apr 13, 2026chore(deps): bump patrol from 3.15.2 to 4.5.0 in /app — navrattan/bharattesting-utilities0 reactions · 1 comment
- Apr 11, 2026chore(deps): bump patrol from 3.20.0 to 4.5.0 — lucssilva/message-suggester-app0 reactions
- Mar 25, 2026chore(deps): bump patrol from 4.1.1 to 4.5.0 — xhermesxenl/vgv0 reactions
- Mar 25, 2026chore(deps): bump patrol_finders from 3.1.0 to 3.2.0 — xhermesxenl/vgv0 reactions
- Feb 21, 2026Bump patrol from 4.1.0 to 4.1.1 in /frontend — titabash/gemini-hackathon-game0 reactions
- Feb 9, 2026chore(deps): bump patrol_finders from 2.9.0 to 3.1.0 — GangemiLorenzo/aura_box0 reactions
- Jan 26, 2026Bump the production-major group across 1 directory with 3 updates — AlphaHasher/ChurchLink0 reactions · 1 comment
- Jan 26, 2026chore(deps): bump patrol from 3.17.0 to 3.20.0 — anirac-tech/memverse_project0 reactions · 2 comments
- Dec 29, 2025chore(deps): bump patrol from 3.20.0 to 4.1.0 in /example — Bb-03/Safe-Yatra0 reactions
- Dec 29, 2025chore(deps): Bump patrol from 3.19.0 to 4.1.0 in /mobile — BiscuitNick/rapid-photo0 reactions · 1 comment
- Dec 16, 2025bs_android: Patrol 4.0.1 tests return "0 tests" on BrowserStack (test discovery fails) — leancodepl/mobile-tools0 reactions · 1 comment
- Dec 9, 2025build(deps): bump patrol from 3.19.0 to 4.0.0 — juancjr99/gym_tracker0 reactions
- Dec 8, 2025Use Patrol for Flutter Web Tests — SharezoneApp/sharezone-app0 reactions
- Jul 23, 2025chore(deps): bump patrol_finders from 2.8.2 to 2.9.0 — anirac-tech/memverse_project0 reactions · 2 comments
- Mar 31, 2025chore(deps): bump patrol from 3.11.2 to 3.15.1 in /example — ATHARVAKPICT/safeyatraapp0 reactions
- Mar 31, 2025chore(deps): bump patrol from 3.11.2 to 3.15.1 in /example — ATHARVAKPICT/Safe_Yatra_test0 reactions
On Stack Overflow · 3
- Oct 17, 2023Starting Patrol tests brings "Serializer for class 'ConfigureRequest' is not found" error1 vote
- Aug 23, 2024App Tracking Transparency Dialog does not appear on iOS0 votes
- Apr 23, 2024Execution failed for task ':app:mergeLibDexDebug'. error white dexing0 votes
Used with
Projects with it also use publish-release, sync-docs and 6 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
Model Context ProtocolSkillpublish-release
Publish a GitHub release for the C# MCP SDK after a prepare-release PR has been merged. Refreshes release notes to include any PRs merged since preparation, warns about version or breaking change impacts from late-arriving PRs, and creates a draft GitHub release. Use when asked to publish a release, finalize a release, create release notes, or complete a release after the prepare-release PR has been merged.
Also in 3 projects that use this
Eipi-TongSkillsync-docs
Update SPEC.md and docs/DECISIONS.md to reflect recent code changes. Use after completing a feature, or when the user says "sync docs", "update the spec", or "log this decision".
Also in 4 projects that use this
thlaureSkillreview-change
Use this skill when the user asks for a code review, a correctness pass, a check before PR, or asks whether a Signalist change follows project conventions.
Also in 3 projects that use this
kiminmonacoSkillimplement-feature
Guide for implementing features in ClaudeBar following architecture-first design, TDD, rich domain models, and Swift 6.2 patterns. Use this skill when: (1) Adding new functionality to the app (2) Creating domain models that follow user's mental model (3) Building SwiftUI views that consume domain models directly (4) User asks "how do I implement X" or "add feature Y" (5) Implementing any feature that spans Domain, Infrastructure, and App layers
Also in 3 projects that use this
SentrySkillwrite-docs
Create or update documentation pages for the Abacus docs site. Use when adding new documentation, updating existing pages, or ensuring docs stay in sync with code changes. Ensures pages follow Starlight patterns and build correctly.
Also in 3 projects that use this
MicrosoftSkillrun-tests
Guide for running pytest tests locally. Use this when running tests to verify code changes.
Also in 3 projects that use this
Other versions47 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 47
- CherryHQ/cherry-studio★ 53ksame name
- redis/go-redis★ 22ksame name
- netbox-community/netbox★ 22ksame name
- joke2k/faker★ 19ksame name
- pybind/pybind11★ 18ksame name
- telepresenceio/telepresence★ 7.3ksame name
- modelcontextprotocol/csharp-sdk★ 4.6ksame name
- tmoroney/auto-subs★ 4.5ksame name
- CLIUtils/CLI11★ 4.5ksame name
- ethereum/consensus-specs★ 4ksame name
37 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- .cursor/rules/android-kotlin.mdcCursor rule
- .cursor/rules/github-workflows.mdcCursor rule
- fix-issueSkill
- issue-triageSkill
- patrol-migrate-from-maestroSkill
- patrol-setupSkill
- patrol-test-architectureSkill
- patrol-write-testSkill
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 5 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 46 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 27
Work from
origin/master: after git fetch origin --tags. - Very specific: line 87
Run scripts/pr-status.sh. It buckets every open PR:
- Distinctive: line 108
Ask the user which PRs must land.
- Distinctive: line 114
Before editing, confirm in one message: packages and versions, PRs to wait for, and whether anything raises the minimum Flutter or Dart …
- Very specific: line 137
every entry ends with the PR number, (#1234).
- Distinctive: line 138
add the missing entries Status found.
- Distinctive: line 204
Only after a release PR is merged and the user says go.
- Very specific: line 230
If a publish fails, don't delete or move the tag.
- Distinctive: line 236
Keep it scannable: tables and one line per PR, no restating of changelogs.
- Very specific: line 262
When a new failing check turns out to be noise, add it to ci-noise.md and to the noise function in scripts/pr-status.sh.
“Common” is measured: kept by at least 6 in 10 of the 46 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Releasing Patrol packages
This skill is orchestration + the release knowledge that isn't written down anywhere else. It has three modes, each ending at a hard stop. Run only the mode you were asked for: "what's unreleased?" or "which PRs are close?" is Status, even when a release is obviously next.
| Mode | Asked as | Ends with |
| 1. Status | "what's unreleased", "what can we release", "which PRs are close to merging" | a report; nothing changed |
| 2. Prepare | "prepare the release", "release patrol X.Y.Z" | open release PRs, one per package |
| 3. Publish | "tag it", "publish", once a release PR is merged | tags pushed, versions on pub.dev |
Read every run:
references/packages.md— version files, dependency graph and release order, tags, workflows.references/ci-noise.md— failing checks that don't mean anything, and how to tell when they do.
Hard rules
- Work from
origin/masteraftergit fetch origin --tags; the localmasteris often behind. Edit in a new worktree on a new branch and leave the user's current checkout and branch alone. - Don't act on other people's PRs — no merging, approving, commenting, labelling or re-running CI without the user's go-ahead. Draft the text instead.
- Never push a tag before its release PR is merged, and never without an explicit "yes" for that push. Print the commands first.
- English for commits, PR titles and bodies, even when the conversation isn't.
- Verify on the Flutter version CI pins (
flutter-version:in.github/workflows/patrol-prepare.yaml, via fvm:~/fvm/versions/<ver>/bin). A newer local Flutter prints different pub warnings and rewrites lockfiles. - Go easy on the GitHub API. The scripts cost under ~100 GraphQL points;
don't loop
gh pr checksover dozens of PRs. On a rate-limit error, checkgh api rate_limitand wait for the reset.
1. Status
What's unreleased
git fetch origin --tags, then runscripts/unreleased.sh(all publishable packages, or name some). Per package it prints the versions (pubspec, last stable tag, pub.dev), stray prerelease tags, opt-in compatibility rows that still sayUnreleased, workspace dependencies with pending changes,## Unreleasedentries without a PR number, and PRs merged since the last tag that the section doesn't cite.- Read it:
- Nothing to release — no Unreleased entries and only CI/test/docs PRs
since the tag (those are exempt from
tool/check_changelog.sh). - Missing or wrong entries — a merged PR that changed package source but
isn't cited: check
gh pr view <n> --json title,files. User-facing → it needs an entry. An entry citing the issue instead of the PR (e.g.(#3296)for PR #3298) or no number at all → fix it in that package's release PR. - Next version — breaking → major (minor while 0.x); new API, option or
behaviour (
Add …) → minor; only fixes or a widened dependency constraint → patch. For patrol, patrol_finders and patrol_log, cross-check with dart-apitool — locally, since its CI check only runs on PRs (command inpackages.md). - Cascade — when a dependency has unreleased changes its dependents need,
it is released first, and each dependent's constraint is bumped in that
dependent's own release PR once the dependency is on pub.dev. Two ways this
happens: a
dependent uses the new API (grep it for the new symbols), or a third-party
constraint was widened in both and is useless until the dependency ships.
Example: patrol allowed
equatable3.x, but patrol_log 0.10.1 on pub.dev still pinnedequatable: ^2.1.0, so patrol_log 0.10.2 had to go out first and patrol, patrol_finders and patrol_cli neededpatrol_log: ^0.10.2. - Paired features — patrol + patrol_cli changes that only work together
are released back to back (two PRs, merged and tagged together), and an
opt-in one gets a row in the compatibility table's opt-in section (see
Prepare, step 4). A row whose minimum still says
Unreleasedgets the real version in this round's release PR; list it under "Fix in the release PRs". - Stray prerelease tags (e.g.
patrol-v4.11.0-dev.1from a web branch that never reached master) — not a blocker, but pub.dev shows them as the newest upload and the stable version must be above them. Mention them.
- Nothing to release — no Unreleased entries and only CI/test/docs PRs
since the tag (those are exempt from
- Report with the template.
PRs close to merging
Run
scripts/pr-status.sh. It buckets every open PR:- ready — approved, no open threads, no real CI failures;
- near — approved with open threads, or ≤ 400 changed lines with no review yet and no real failures;
- work — conflicts, changes requested, waiting on the author (a reviewer commented after the last push), or real failures;
- far — drafts and large unreviewed PRs.
Failing checks listed in
ci-noise.mdare split out asnoise.- Refine before reporting — the buckets are a first pass:
- For ready/near PRs, read the open threads
(
gh api repos/leancodepl/patrol/pulls/<n>/comments). Bot threads (Copilot) are sometimes real bugs — say which. - A "real" failure can still be a known flake that only shows at step level
(e.g. Linux
patrol developdying inmelos bootstrap). For a PR that is otherwise ready, check the failed step:gh run view <run-id> --log-failed | tail -50. - An approval older than the last push, or followed by new threads from the
same reviewer, is stale even though GitHub still says
APPROVED. - Conflicts are mostly
CHANGELOG.mdand trivial; name the file when you can.
- For ready/near PRs, read the open threads
(
- Tie it to the release: flag PRs touching a package that's about to be
released (the
packagescolumn) — they land first or wait for the next one. Ask the user which PRs must land; don't guess. Flag PRs that raise the minimum Dart or Flutter version: they change the compatibility table. - Report with the template.
2. Prepare
Before editing, confirm in one message: packages and versions, PRs to wait for, and whether anything raises the minimum Flutter or Dart version.
One release PR per package, in the release order from packages.md. A
package that needs a sibling's new version (see "When to bump a sibling
constraint" in packages.md) gets its PR only once that sibling is on pub.dev:
branch it from origin/master after the sibling's PR is merged and tagged. That
way every PR resolves against published versions, and CI's pub.dev jobs pass.
Packages that don't need a new sibling version can have their PRs open at the
same time. Prepare what can be opened now, list the ones that wait (and on
what), and stop; preparing those is a later run, after Publish.
For each PR:
- Branch from
origin/masterin a new worktree:release/<pkg>-X.Y.Z(precedentrelease/patrol_mcp-0.2.1). Therelease/prefix makes the semver check fail when a pubspec version is below dart-apitool's recommendation. - Versions — bump every version file of the package (
packages.mdlists the extra ones:constants.dartfor patrol_cli,bin/patrol_mcp.dartfor patrol_mcp). - Changelogs — rename
## Unreleasedto## X.Y.Z(don't add a new empty## Unreleased). Then edit the entries:- every entry ends with the PR number,
(#1234); - add the missing entries Status found;
- trim long entries to what a user needs; link docs instead of explaining;
- order: additions and widened constraints first, fixes after.
- every entry ends with the PR number,
- Constraints and compatibility:
- In this package's PR, bump its constraint on a sibling (
patrol_log: ^0.10.2) when it needs the sibling's new version, which must already be on pub.dev. "When to bump a sibling constraint" inpackages.mdlists the cases; don't bump it otherwise. The pubspec change needs a changelog entry (tool/check_changelog.sh), e.g. "Require patrol_log ^0.10.2, which allows equatable 3.x". - The compatibility table lives in patrol_cli, so its changes go in patrol_cli's PR. If only patrol is released and the table must change, patrol_cli needs a release too.
- Stable patrol / patrol_cli releases only (skip for
-dev.N): reviewversionCompatibilityListinpackages/patrol_cli/lib/src/compatibility_checker/version_compatibility.dart. Normally the openX+row already covers the new pair. Split it — close the open row at the last released versions and open a new<cli>+/<patrol>+row — when patrol_log gets a 0.x minor bump (^0.10.0and^0.9.0don't overlap; precedents 731e1d4a0, b00954520), when the patrol ↔ patrol_cli contract changes incompatibly, or when the minimum Flutter rises. - A new paired opt-in feature gets a row in
_optInFeaturesSectioningenerate_compatibility_table.dart(edited by hand). - Feature PRs often write
Unreleasedas a minimum version in those rows (unreleased.shflags them). Replace it with the version being released, in patrol_cli's PR with the rest of the table, and the patrol column too when patrol goes out in the same round (#3357 wrote patrol 4.11.0 before patrol was tagged). If patrol is released without patrol_cli, do it in patrol's PR and label that PRskip changelog: only patrol_cli's docs generator changes. - Regenerate the docs page and test:
cd packages/patrol_cli && dart run lib/src/compatibility_checker/generate_compatibility_table.dart && dart test test/compatibility_checker/(writesdocs/documentation/compatibility-table.mdx).
- In this package's PR, bump its constraint on a sibling (
- Commit — on CI's Flutter (prepend
~/fvm/versions/<ver>/bintoPATH), runmelos bootstrapfrom the repo root. Commit the edits above together with the lockfile changes it makes (e.g.dev/e2e_app/pubspec.lock), and only those:Prepare patrol_log 0.10.2 release. The checks in the next step read the commit, not the working tree. Release PRs open at the same time can conflict in the lockfiles; after one merges, mergeorigin/masterinto the others and re-runmelos bootstrap. - Verify the commit, still on CI's Flutter; amend it with any fixes:
- the publish dry-run the package's prepare workflow uses
(
flutter pub publish --dry-runordart pub publish --dry-run, seepackages.md). For patrol, the file list must includeskills/patrol-*/SKILL.md. The dry-run resolves through melos' path overrides, so it can't catch a too-low sibling floor; tool/check_dependency_floors.sh <pkg>, which analyzes the package against its sibling floors from pub.dev. A "not on pub.dev yet" line means a sibling this PR needs isn't published, so the PR is early. It rewrites the package's overrides, lockfile andanalysis_options.yaml; undo withgit checkout -- packages/<pkg>/analysis_options.yamlandmelos bootstrapbefore amending anything;tool/check_changelog.sh, thenscripts/unreleased.sh <pkg>again withBASE=HEAD: the package shows its new version and no Unreleased section.
- the publish dry-run the package's prepare workflow uses
(
- Open the PR against
master. Body: the version, two or three highlights, the tag to push after merging, the other release PRs of this round (links, and which wait for this one), and what you verified. - Expect on CI — the semver check is enforced on this branch, so a red one
is real;
panais noise as usual. IfResolve against published dependenciesorSmoke (… patrol_cli)fails in pub get with "doesn't match any versions", a sibling this PR needs isn't on pub.dev yet. Stop here. Tagging is a separate run.
3. Publish
Only after a release PR is merged and the user says go.
git fetch origin --tags. Each tag goes on its own release PR's merge commit on master:gh pr view <n> --json mergeCommit --jq .mergeCommit.oid. Tags are lightweight.- Print the plan — one tag per merged release PR, in dependency order from
packages.md— and ask for a yes. - For each tag:
A publish takes about 3 minutes. Push a dependent's tag only once pub.dev serves its dependencies' new versions — its publish resolves them from pub.dev and fails otherwise. Unrelated packages can go in parallel.git tag <pkg>-vX.Y.Z <merge-sha> git push origin <pkg>-vX.Y.Z gh run list --repo leancodepl/patrol --workflow <pkg>-publish.yaml --limit 1 # then: gh run watch <id> curl -s https://pub.dev/api/packages/<pkg> | jq -r .latest.version - Afterwards: each publish workflow creates a GitHub release
(
gh release list --repo leancodepl/patrol --limit 8) and posts to Slack for non-prereleases. The Latest/Pre-release flags have been odd before (patrol_cli-v4.9.0-dev.2marked Latest,patrol_mcp-v0.2.1Pre-release) — report them, don't change them unasked. Compare the pub.dev score with the previous version a while later:curl -s https://pub.dev/api/packages/<pkg>/score | jq '{grantedPoints, maxPoints}'. Then say which waiting release PRs can now be prepared; preparing them is a new Prepare run. - If a publish fails, don't delete or move the tag. Read the log
(
gh run view <id> --log-failed), report it, and re-run only with the user's OK (gh run rerun <id> --failed).
Report template
Keep it scannable: tables and one line per PR, no restating of changelogs.
**To release** (origin/master <short-sha>)
| Package | pub.dev | Next | Why | Blocked by |
|---|---|---|---|---|
| patrol_log | 0.10.1 | 0.10.2 | equatable 3.x, @override fix | — |
| patrol | 4.10.0 | 4.11.0 | macOS automation, skills, BS coverage | patrol_log 0.10.2 |
| adb | 0.6.1 | — | nothing new | |
Order (one PR each): patrol_log → patrol_finders → patrol, with patrol_cli alongside (independent)
Open now: patrol_log; patrol waits for patrol_log 0.10.2 on pub.dev
Fix in the release PRs: entries without PR numbers (#3251, #3242), #3298 cites the issue, opt-in row "Screenshots on web" says Unreleased
Stray prerelease tags: patrol-v4.11.0-dev.1 (web branch)
**PRs**
Ready: #3298 patrol_mcp shell fix — approved, green
Near: #3333 hot-restart guard — no review; Copilot's `_testState` thread looks real
Needs work: #3287 — 9 threads, waiting on author since 10-27
Touches a released package: #3326 (patrol_log) — land before 0.10.2 or wait
Far: #3280, #3282, draftsKeeping this skill current
When a new failing check turns out to be noise, add it to ci-noise.md and to
the noise function in scripts/pr-status.sh. When a package, a version file,
or a path that ships in another package's archive is added, update packages.md
and extra_version_file or extra_paths in scripts/unreleased.sh.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

