skills/release-dart-package-action/SKILL.md
Automates the Flutter package release process via git tags and GitHub Actions. Handles multi-package workspaces, SemVer versioning suggestions based on git history, updating pubspec.yaml and CHANGELOG.md, and dry-run validation. Use when the user wants to "release", "publish", or "version" a Flutter package.
npx skillsauth add hu-wentao/wyatt_skills release-dart-package-actionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill automates the Flutter package release workflow triggered by git tags.
Verify that the current working directory is the root of the Git repository (contains a .git folder and the main pubspec.yaml).
.github/workflows and workspace configurations can be correctly identified.Read the root pubspec.yaml file.
workspace: field.- packages/*) to find all nested packages.packages/my_package) for subsequent steps.Run scripts/pre_check.py to automatically verify the repository status.
git pull before continuing.Check if the project is using FVM (e.g., presence of .fvm/fvm_config.json).
flutter and dart commands with fvm (e.g., use fvm dart instead of dart) to ensure the correct SDK version is used and to avoid environment mismatches.Run scripts/inspect_workflows.py [package_name] to find and parse publishing workflows.
uses field, and their on.push.tags.uses points to dart-lang/setup-dart/.github/workflows/publish.yml.tags list (e.g., v*).scripts/prepare_release.py <current_version> [--tag-match <pattern>] [--package-path <path>] to analyze git history since the last tag.
package-name-*), pass it as --tag-match to ensure the correct last tag is identified.--package-path to filter the git history to only include changes affecting that package.CHANGELOG.md entry.Update the version field in the relevant package's pubspec.yaml with the chosen version.
Insert the confirmed CHANGELOG.md entry at the top of the file (after any initial headers).
Format requirement:
## <Version> <YYYY-MM-DD>
* feat/fix/... [**important**] <content>
Note: Ensure the format matches the user's project-specific conventions if they differ from the suggested draft.
Commit the modified pubspec.yaml and CHANGELOG.md files:
git add .
git commit -m "chore(release): <version>"
Run dart pub publish --dry-run (or fvm dart pub publish --dry-run if FVM is used) to verify the package contents and configuration.
Once validated, add a new git tag and push everything to trigger the automated release.
git tag.
v[0-9]+.[0-9]+.[0-9]+, the tag should be v<version>.uv run python scripts/push_tag_and_print_actions.py <tag_name> to push the current branch and the new tag to the remote repository.
git pushgit push origin <tag_name>https://github.com/<owner>/<repo>/actions after the tag push succeeds, so the user can jump directly to the workflow run pagepre_check.py: Automatically verifies uncommitted changes and remote branch synchronization status before starting the release process.
inspect_workflows.py: Automatically discovers and parses GitHub Action workflows to identify publishing configurations and tag formats.
[package_name]prepare_release.py: Analyze git history to suggest SemVer version and generate CHANGELOG.md entry.
<current_version>--tag-match <pattern> (e.g., my-pkg-* or v*) to find the correct previous tag.--package-path <path> (e.g., packages/my_pkg) to filter changes by package directory.push_tag_and_print_actions.py: Push the current branch and release tag, then print the GitHub Actions page URL for the repository.
<tag_name>github_action_template.md: A template for setting up the GitHub Action for publishing.development
Build, debug, and refactor Streamlit apps and widgets. Use when Codex works on Streamlit UI files, session_state behavior, rerun/callback bugs, st.data_editor or dataframe widgets, layout parameters, widget keys, Streamlit version compatibility, or deprecated/new parameters such as width="stretch" replacing older container-width patterns.
development
Create a Dart-based macOS background activity process managed by launchd. Use when Codex needs to scaffold or fix a LaunchAgent for a Dart program, generate the executable entrypoint, write the plist, or ensure App Background Activity shows the intended process name instead of a shell wrapper.
development
Merge a specified branch into the current branch with a merge commit. Use this when the user wants to merge one branch into the current branch, or when Codex should auto-detect the source branch that has commits after the current branch. The skill checks whether the source branch and target branch have uncommitted work in any active git worktree, and resolves merge conflicts autonomously by default.
development
Prepare, build, and publish a Flutter Web app to S3-compatible object storage. Use when Codex needs to bump or update pubspec.yaml version, create a Flutter Web release tag, configure S3 deployment, build build/web, upload or promote web assets, or inspect a Flutter Web S3 release workflow.