Skip to content

chore: adopt Very Good CLI release and repo conventions - #100

Merged
marcossevilla merged 6 commits into
mainfrom
chore/release-please-and-repo-files
Oct 28, 2026
Merged

marcossevilla merged 6 commits into
mainfrom
chore/release-please-and-repo-files

Conversation

@ryzizub

@ryzizub ryzizub commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Description

Stack 3 of 5 for #68. Base: fix/update-check-and-manifest-guidance (#99).

release-please takes over versions and changelogs for both packages. Because it writes the bump straight into pubspec.yaml, the workflow regenerates the build_version output on the release branch, otherwise verify-version fails on the release PR. It needs the RELEASE_PLEASE_TOKEN secret.

Also adds CODEOWNERS and a lychee link check, fixes the LICENSE copyright holder in both packages, gives each a repository and issue tracker, and renames .github/ISSUE_TEMPLATE/ config.yml — the leading space in the filename meant GitHub never read it, so blank_issues_enabled: false had no effect.

Type of Change

  • ✨ New feature (non-breaking change which adds functionality)
  • 🛠️ Bug fix (non-breaking change which fixes an issue)
  • ❌ Breaking change (fix or feature that would cause existing functionality to change)
  • 🧹 Code refactor
  • ✅ Build configuration change
  • 📝 Documentation
  • 🗑️ Chore
  • 🧪 Test

🤖 Generated with Claude Code

@ryzizub
ryzizub added this pull request to stack #103 October 21, 2026 12:19
@ryzizub
ryzizub marked this pull request as ready for review October 21, 2026 12:20

@marcossevilla marcossevilla left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks for doing this. The issue template rename is a nice catch, and pushing with the PAT so CI runs on the release PR is the right call.

I'm requesting changes for two release-please correctness problems (manifest bootstrap and exclude-paths) and a simplification that would delete most of release_please.yaml. Details are inline.

Two things I can't comment on inline because they're outside the diff:

  • Pin bumps never trigger a release. bot_bump_plugin_pins.yaml commits chore: bump pinned plugins, and chore doesn't count toward a release. Pin bumps are how users get new skills and agents, so consider fix(deps): bump pinned plugins. This only reaches the CLI once the linked-versions comment on the config is addressed.
  • Repo settings. Merge commits and rebase merges are both enabled. release-please parses most reliably with squash-only, so there's one Conventional Commit per PR, which matters more with a 5-PR stack. Please also confirm RELEASE_PLEASE_TOKEN exists before merge, or the first push to main fails.

FYI: the README still says dart pub global activate vgv_ai_cli, and update and the update check rely on pub.dev. I assume a later PR in the stack covers that.

Comment thread .release-please-manifest.json Resolved
Comment thread .release-please-config.json Resolved
Comment thread .release-please-config.json Resolved
Comment thread .github/workflows/release_please.yaml Resolved
Comment thread .github/workflows/release_please.yaml Resolved
Comment thread .github/workflows/release_please.yaml Resolved
Comment thread .github/workflows/check_links.yaml Resolved
Comment thread .github/CODEOWNERS Resolved
Comment thread packages/vgv_ai_cli/pubspec.yaml Resolved
@ryzizub

ryzizub commented Oct 26, 2026

Copy link
Copy Markdown
Contributor Author

Updated — all inline points are answered.

Two still on you: squash-only merges, and RELEASE_PLEASE_TOKEN before this merges. The pin-bump bot needs fix(deps): instead of chore: to cut a release, but that's outside this diff.

@ryzizub

ryzizub commented Oct 26, 2026

Copy link
Copy Markdown
Contributor Author

Follow-up: the config moved twice after my replies above, so threads about the manifest, linked-versions and build_version describe intermediate shapes. Where it landed:

  • Two package entries with the linked-versions plugin, not one unit at ".". include-component-in-tag is per package, so the CLI tags vX.Y.Z and plugin_source tags plugin_source-vX.Y.Z. The workspace root carries no version.
  • Both packages publish to pub.dev, so publish_to: none is gone and topics is back.
  • build_version is still gone. The only x-release-please-version markers left are lib/src/version.dart and the plugin_source constraint in the CLI's pubspec — a path dependency can't be published, so that constraint has to exist, but nobody writes it by hand.

@marcossevilla
marcossevilla force-pushed the chore/release-please-and-repo-files branch from 887de4f to de40926 Compare October 28, 2026 11:54
@marcossevilla
marcossevilla force-pushed the chore/release-please-and-repo-files branch from de40926 to d8bb73d Compare October 28, 2026 11:55
marcossevilla
marcossevilla previously approved these changes Oct 28, 2026
Base automatically changed from fix/update-check-and-manifest-guidance to main October 28, 2026 12:13
release-please now owns versions and changelogs for both packages, and the
release workflow regenerates the build_version output on the release branch so
verify-version does not fail on the release PR.

Also adds CODEOWNERS and a lychee link check, fixes the LICENSE copyright
holder in both packages, gives each a repository and issue tracker, and renames
".github/ISSUE_TEMPLATE/ config.yml" — the leading space meant GitHub never
read it, so blank_issues_enabled had no effect.
- `bootstrap-sha` pins where changelog collection starts. The repo has no tags,
  so without it the first release PR would replay every commit the
  hand-written 0.1.0 entries already describe.
- `linked-versions` groups the two packages, so a fix in plugin_source bumps
  the CLI the user actually runs instead of only itself.
- The root `exclude-paths` filtered nothing: release-please only attributes
  commits that touch a package path, and every entry was outside both.
- `permissions: contents: read`, since the PAT does all the writing.
- The link check reads markdown only. Scanning Dart needed ten ignore
  patterns for test fixtures; two remain, and a new fixture URL can no longer
  break the weekly run.
- Dropped `topics` and `example/README.md`, which only affect pub.dev.
The two package entries meant a fix in plugin_source bumped only plugin_source,
so the weekly pin bump — how users get new skills and agents — never reached
the CLI. A single release unit at "." releases on any change in the repository,
and tags it `vX.Y.Z` instead of one tag per component.

The root pubspec.yaml now carries that version, and release-please writes it
into the CLI's pubspec.yaml and lib/src/version.dart through the
x-release-please-version markers on their version lines. That is how Very Good
CLI does it, and it replaces build_version: gone with it are three dev
dependencies, ensure_build_test.dart, the version-verify tag, the
verify-version job, and the four workflow steps that regenerated the file on
the release branch.
The two packages ship as one CLI at one version, so both go to pub.dev and
both follow the release: release-please writes the version into the root
pubspec, the CLI's pubspec and version.dart, plugin_source's pubspec, and the
`plugin_source` constraint the CLI depends on, through the
x-release-please-version markers on those lines.

pub_publish.yaml publishes on the `v*` tag, plugin_source first — the CLI
resolves it from pub.dev, so publishing the CLI against a version that is not
there yet fails.
Releasing from "." meant the workspace root had to carry a version, and the
root is not a package. Each package now releases itself, and the
linked-versions plugin holds them at the same version, so a fix in
plugin_source still releases the CLI — which is how a pin bump reaches users.

include-component-in-tag is false for the CLI and true for plugin_source, so
the product tag stays `vX.Y.Z` and pub_publish.yaml keeps firing on it.

The dart strategy writes each package's own version, so the only lines left
with an x-release-please-version marker are the two the generic updater has to
reach: lib/src/version.dart and the plugin_source constraint in the CLI's
pubspec. mergeUpdates composes that with the strategy's own pubspec update.
@marcossevilla
marcossevilla force-pushed the chore/release-please-and-repo-files branch from d8bb73d to 7e6f003 Compare October 28, 2026 12:13
@marcossevilla
marcossevilla merged commit 832d3d9 into main Oct 28, 2026
9 checks passed
@marcossevilla
marcossevilla deleted the chore/release-please-and-repo-files branch October 28, 2026 12:28
@vgvbot vgvbot mentioned this pull request Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants