install
source · Clone the upstream repo
git clone https://github.com/kevmoo/dash_skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/kevmoo/dash_skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.agent/skills/dart-package-maintenance" ~/.claude/skills/kevmoo-dash-skills-dart-package-maintenance && rm -rf "$T"
manifest:
.agent/skills/dart-package-maintenance/SKILL.mdsource content
Dart Package Maintenance
Guidelines for maintaining Dart packages in alignment with Dart team best practices.
Versioning
Semantic Versioning
- Major: Breaking changes.
- Minor: New features (non-breaking API changes).
- Patch: Bug fixes, documentation, or non-impacting changes.
- Unstable packages: Use
.0.major.minor+patch - Recommendation: Aim for
as soon as the package is stable.1.0.0
Pre-Edit Verification
-
Check Published Versions: Before modifying
orCHANGELOG.md
, ALWAYS check the currently released version (e.g., viapubspec.yaml
orgit tag
).pub.dev -
Do Not Amend Released Versions: Never add new entries to a version header that corresponds to a released tag.
-
Increment for New Changes: If the current version in
matches a released tag, increment the version (e.g., usually topubspec.yaml
) and create a new section in-wip
.CHANGELOG.md-
Consistency: The
header must match the newCHANGELOG.md
version.pubspec.yaml -
SemVer Guidelines:
- Breaking Changes: Bump Major, reset Minor/Patch
(e.g.,
,2.0.0-wip
).0.5.0-wip - New Features: Bump Minor, reset Patch
(e.g.,
,1.1.0-wip
).0.4.5-wip - Bug Fixes: Bump Patch (e.g.,
).1.0.1-wip
- Breaking Changes: Bump Major, reset Minor/Patch
(e.g.,
-
Changelog Content
- Focus on User Impact: Entries in
should focus on changes visible to or impacting the end-user (e.g., new features, bug fixes, breaking changes).CHANGELOG.md - Omit Internal Changes: Do not include internal refactorings, test changes, or other modifications that do not affect the package's behavior or API for the user.
Work-in-Progress (WIP) Versions
- Immediately after a publish, or on the first change after a publish, update
andpubspec.yaml
with aCHANGELOG.md
suffix (e.g.,-wip
).1.1.0-wip - This indicates the current state is not yet published.
Breaking Changes
- Evaluate the impact on dependent packages and internal projects.
- Consider running changes through internal presubmits if possible.
- Prefer incremental rollouts (e.g., new behavior as opt-in) to minimize downstream breakage.
Publishing Process
- Preparation: Remove the
suffix from-wip
andpubspec.yaml
in a dedicated pull request.CHANGELOG.md - Execution: Run
(ordart pub publish
) and resolve all warnings and errors.flutter pub publish - Tagging: Create and push a git tag for the published version:
- For single-package repos:
v1.2.3 - For monorepos:
package_name-v1.2.3 - Example:
git tag v1.2.3 && git push --tags
- For single-package repos:
Pull Request Management
- Commits: Each PR should generally correspond to a single squashed commit upon merging.
- Shared History: Once a PR is open, avoid force pushing to the branch.
- Conflict Resolution: Prefer merging
into the PR branch rather than rebasing to resolve conflicts. This preserves the review history and comments.main - Reviewing: Add comments from the "Files changed" view to batch them.
- Local Inspection: Use
to inspect changes locally in your IDE.gh pr checkout <number>