@monochange/skill 0.0.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +24 -0
- package/SKILL.md +271 -0
- package/changelog.md +887 -0
- package/examples/migration.md +21 -0
- package/examples/publishing.md +21 -0
- package/examples/quickstart.md +22 -0
- package/examples/readme.md +22 -0
- package/examples/release-pr.md +20 -0
- package/package.json +40 -13
- package/readme.md +63 -0
- package/skills/adoption.md +125 -0
- package/skills/artifact-types.md +529 -0
- package/skills/changeset-guide.md +231 -0
- package/skills/changesets.md +332 -0
- package/skills/commands.md +204 -0
- package/skills/configuration.md +258 -0
- package/skills/linting.md +539 -0
- package/skills/multi-package-publishing.md +237 -0
- package/skills/readme.md +18 -0
- package/skills/reference.md +667 -0
- package/skills/trusted-publishing.md +459 -0
- package/README.md +0 -3
package/changelog.md
ADDED
|
@@ -0,0 +1,887 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
This changelog is managed by [monochange](https://github.com/monochange/monochange).
|
|
6
|
+
|
|
7
|
+
## @monochange/skill [0.1.0](https://github.com/monochange/monochange/releases/tag/@monochange/skill/v0.1.0) (2026-04-13)
|
|
8
|
+
|
|
9
|
+
### Breaking changes
|
|
10
|
+
|
|
11
|
+
#### 🚀 Initial public release of monochange
|
|
12
|
+
|
|
13
|
+
**monochange** is a Rust-based release-planning toolkit for monorepos that span multiple package ecosystems. It is designed from the ground up to support the modern, AI-driven development landscape where agents and automation play a central role in software delivery.
|
|
14
|
+
|
|
15
|
+
##### What is monochange?
|
|
16
|
+
|
|
17
|
+
In today's agent-driven development environment, managing releases across diverse package ecosystems (Rust, JavaScript/TypeScript, Dart, Python, etc.) becomes increasingly complex. monochange provides a unified, programmatic interface for:
|
|
18
|
+
|
|
19
|
+
- **Change tracking**: Structured changesets that capture intent across multiple packages
|
|
20
|
+
- **Release planning**: Automated versioning and changelog generation
|
|
21
|
+
- **Multi-ecosystem support**: Native handling of Cargo, NPM, Dart, Deno, and more
|
|
22
|
+
- **CI/CD integration**: Seamless workflows for Gitea, GitHub, and GitLab
|
|
23
|
+
- **Graph-based dependency analysis**: Understanding package relationships across your monorepo
|
|
24
|
+
|
|
25
|
+
##### Why monochange matters for AI-driven workflows
|
|
26
|
+
|
|
27
|
+
As development teams increasingly rely on AI agents to generate code, manage dependencies, and orchestrate releases, monochange provides the structured foundation these agents need to operate effectively. It transforms release management from a manual, error-prone process into a deterministic, automatable workflow.
|
|
28
|
+
|
|
29
|
+
##### What's included in this release
|
|
30
|
+
|
|
31
|
+
This first release includes:
|
|
32
|
+
|
|
33
|
+
- Core changeset management engine
|
|
34
|
+
- Multi-ecosystem package detection and versioning
|
|
35
|
+
- Hosting provider integrations (Gitea, GitHub, GitLab)
|
|
36
|
+
- Semantic versioning utilities
|
|
37
|
+
- Configurable release workflows
|
|
38
|
+
- CLI tooling for validation and release orchestration
|
|
39
|
+
|
|
40
|
+
For complete feature details, architecture overview, and usage examples, see the [documentation](https://docs.rs/monochange).
|
|
41
|
+
|
|
42
|
+
> _Owner:_ Ifiok Jr. _Introduced in:_ [`4542b5a`](https://github.com/monochange/monochange/commit/4542b5aee8b63a86c7ffc0ea9436090162a18056)
|
|
43
|
+
|
|
44
|
+
## [0.4.2](https://github.com/monochange/monochange/releases/tag/v0.4.2) (2026-05-10)
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
|
|
48
|
+
#### Order publish plans by dependencies
|
|
49
|
+
|
|
50
|
+
Order publish plans by workspace dependencies before applying registry rate-limit windows, and run CI publishing as one dependency-ordered publish operation.
|
|
51
|
+
|
|
52
|
+
This keeps dependent packages from publishing before their internal dependencies are available and adds realistic fixture coverage for non-alphabetical cargo dependency graphs.
|
|
53
|
+
|
|
54
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #364](https://github.com/monochange/monochange/pull/364) _Introduced in:_ [`67eae95`](https://github.com/monochange/monochange/commit/67eae951e6a35a9b4c7c6489e89cd4779e44234e) _Last updated in:_ [`2392845`](https://github.com/monochange/monochange/commit/2392845ec29289e3f219aca20ac343cf79ee965e)
|
|
55
|
+
|
|
56
|
+
## [0.4.1](https://github.com/monochange/monochange/releases/tag/v0.4.1) (2026-05-10)
|
|
57
|
+
|
|
58
|
+
### Changed
|
|
59
|
+
|
|
60
|
+
- No package-specific changes were recorded; `@monochange/skill` was updated to 0.4.1 as part of group `main`.
|
|
61
|
+
|
|
62
|
+
## [0.4.0](https://github.com/monochange/monochange/releases/tag/v0.4.0) (2026-05-09)
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
#### Remove grouped release member summaries
|
|
67
|
+
|
|
68
|
+
Grouped release notes no longer include generated changed or synchronized member lists, keeping the release note summary focused on the group release itself.
|
|
69
|
+
|
|
70
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #395](https://github.com/monochange/monochange/pull/395) _Introduced in:_ [`2d012ff`](https://github.com/monochange/monochange/commit/2d012ff900a612f4aed6e4d7034c8c876f50aeae) _Last updated in:_ [`8c6a312`](https://github.com/monochange/monochange/commit/8c6a312f2d9e7477fd7901688d878c721ba41336)
|
|
71
|
+
|
|
72
|
+
## [0.3.4](https://github.com/monochange/monochange/releases/tag/v0.3.4) (2026-05-06)
|
|
73
|
+
|
|
74
|
+
### Fixed
|
|
75
|
+
|
|
76
|
+
#### Preserve publish batch dependency order
|
|
77
|
+
|
|
78
|
+
Carry prior packages into later publish-plan batches so dependency-ordered publish requests remain available when registry rate limits split a release into multiple jobs.
|
|
79
|
+
|
|
80
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #389](https://github.com/monochange/monochange/pull/389) _Introduced in:_ [`12d3582`](https://github.com/monochange/monochange/commit/12d35826c3b0a8768bbf05c82b1e999a0e9ca30a)
|
|
81
|
+
|
|
82
|
+
#### Use npm for trusted npm publishing
|
|
83
|
+
|
|
84
|
+
Route trusted npm publishes through the npm CLI even in pnpm-managed workspaces so npm's OIDC trusted publishing flow can exchange the GitHub Actions identity for a short-lived publish credential. The release workflow also relies on devenv environment cleaning directly instead of the removed `strip:env` wrapper.
|
|
85
|
+
|
|
86
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #388](https://github.com/monochange/monochange/pull/388) _Introduced in:_ [`72773bc`](https://github.com/monochange/monochange/commit/72773bc438167b55c26bb7c3f5dd9d7a21c99084)
|
|
87
|
+
|
|
88
|
+
## [0.3.3](https://github.com/monochange/monochange/releases/tag/v0.3.3) (2026-05-06)
|
|
89
|
+
|
|
90
|
+
### Fixed
|
|
91
|
+
|
|
92
|
+
#### preserve GitHub OIDC environment variables in devenv
|
|
93
|
+
|
|
94
|
+
The development environment's `devenv.yaml` now keeps the GitHub Actions and OIDC identity variables that monochange needs to detect trusted publishing when running inside `devenv shell`. Previously, `strip: env` removed these variables and caused built-in publishing to fail with "No supported CI provider identity was detected."
|
|
95
|
+
|
|
96
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #386](https://github.com/monochange/monochange/pull/386) _Introduced in:_ [`fd1a798`](https://github.com/monochange/monochange/commit/fd1a798e57234fc465c33537077ec6acf0a47db8)
|
|
97
|
+
|
|
98
|
+
## [0.3.2](https://github.com/monochange/monochange/releases/tag/v0.3.2) (2026-05-06)
|
|
99
|
+
|
|
100
|
+
### Changed
|
|
101
|
+
|
|
102
|
+
- No package-specific changes were recorded; `@monochange/skill` was updated to 0.3.2 as part of group `main`.
|
|
103
|
+
|
|
104
|
+
## [0.3.1](https://github.com/monochange/monochange/releases/tag/v0.3.1) (2026-05-05)
|
|
105
|
+
|
|
106
|
+
### Fixed
|
|
107
|
+
|
|
108
|
+
#### Preserve rendered changelog metadata in release records
|
|
109
|
+
|
|
110
|
+
Release records now store full changelog metadata so publish flows reconstructed from git history can use the rendered release notes instead of falling back to minimal release bodies.
|
|
111
|
+
|
|
112
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #356](https://github.com/monochange/monochange/pull/356) _Introduced in:_ [`6f38c00`](https://github.com/monochange/monochange/commit/6f38c003a77fcc4a95e33ae1c344340bbcce1017)
|
|
113
|
+
|
|
114
|
+
#### Preserve configured changelog sections for scalar change types
|
|
115
|
+
|
|
116
|
+
Configured changelog types now take precedence over scalar bump names so generated release notes retain their intended sections. Local telemetry JSONL writes now append complete event lines to avoid malformed records during concurrent command runs.
|
|
117
|
+
|
|
118
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #363](https://github.com/monochange/monochange/pull/363) _Introduced in:_ [`8c8c9dc`](https://github.com/monochange/monochange/commit/8c8c9dc98f6a95d2c8a2d55fb986a66c08f29312)
|
|
119
|
+
|
|
120
|
+
#### Filter placeholder publish reports to packages that need action
|
|
121
|
+
|
|
122
|
+
`mc placeholder-publish` now hides already-published and skipped packages from the default report so dry runs focus on packages that still need placeholder publishing, and real runs focus on packages that were published or failed.
|
|
123
|
+
|
|
124
|
+
Pass `--show-all` to include the full package report when auditing every selected package.
|
|
125
|
+
|
|
126
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #372](https://github.com/monochange/monochange/pull/372) _Introduced in:_ [`26f20e6`](https://github.com/monochange/monochange/commit/26f20e6347429e57bc94aea06a40eec81f85c54d)
|
|
127
|
+
|
|
128
|
+
#### Publish packages in dependency order without readiness artifacts
|
|
129
|
+
|
|
130
|
+
Package publishing now derives release work directly from prepared release or `HEAD` release state, orders internal publish-relevant dependencies before dependents, and rejects publish-relevant dependency cycles while allowing development-only cycles.
|
|
131
|
+
|
|
132
|
+
The publish order now works like this:
|
|
133
|
+
|
|
134
|
+
1. Build the selected publish requests from the prepared release or `HEAD` release state.
|
|
135
|
+
2. Materialize the workspace dependency graph.
|
|
136
|
+
3. Consider only dependencies where **both packages are part of the selected publish set**.
|
|
137
|
+
4. Ignore development dependency edges.
|
|
138
|
+
5. Topologically sort the publish requests so dependencies are emitted before dependents.
|
|
139
|
+
|
|
140
|
+
So for a tree like:
|
|
141
|
+
|
|
142
|
+
```text
|
|
143
|
+
core # no dependencies
|
|
144
|
+
utils # depends on core
|
|
145
|
+
api # depends on utils
|
|
146
|
+
app # depends on core, utils, api
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
the publish order becomes:
|
|
150
|
+
|
|
151
|
+
```text
|
|
152
|
+
core
|
|
153
|
+
utils
|
|
154
|
+
api
|
|
155
|
+
app
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
If multiple packages are independent at the same depth, their order is deterministic by package id, registry, and version.
|
|
159
|
+
|
|
160
|
+
A package with no selected dependencies is eligible first. A package is not published until all of its selected publish-relevant dependencies have been ordered before it. Dependencies outside the selected publish set do not block ordering. Development-only cycles are ignored. Runtime, build, peer, workspace, and unknown dependency cycles fail before publishing anything, with a cycle diagnostic.
|
|
161
|
+
|
|
162
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #364](https://github.com/monochange/monochange/pull/364) _Introduced in:_ [`67eae95`](https://github.com/monochange/monochange/commit/67eae951e6a35a9b4c7c6489e89cd4779e44234e)
|
|
163
|
+
|
|
164
|
+
#### Make release workspace publishing preserve Cargo verification
|
|
165
|
+
|
|
166
|
+
`monochange_test_helpers` is now publishable so crates that use the shared helpers in their dev-dependencies can still pass Cargo's normal publish verification. `monochange_core` no longer dev-depends on the helper crate: its integration-style discovery filter coverage now lives in the unpublished `monochange_integration_tests` crate, preventing a dependency cycle between the published core crate and the test helper crate.
|
|
167
|
+
|
|
168
|
+
Package publishing keeps Cargo verification enabled and still runs JavaScript registry tooling without inherited `LD_LIBRARY_PATH`, preserving PNPM support while avoiding Nix/devenv library-path leakage into system Node.js launchers.
|
|
169
|
+
|
|
170
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #368](https://github.com/monochange/monochange/pull/368) _Introduced in:_ [`b79eef1`](https://github.com/monochange/monochange/commit/b79eef170a01234b69b2b83c8ebd4ef946a079ac)
|
|
171
|
+
|
|
172
|
+
#### Use `GITHUB_TOKEN` for Git Data API to create verified commits
|
|
173
|
+
|
|
174
|
+
The `release-pr` workflow now passes `GITHUB_COMMIT_TOKEN` (set to `secrets.GITHUB_TOKEN`) specifically for Git Database API operations (blob, tree, commit creation, and ref updates). This allows GitHub to automatically sign commits with the `web-flow` GPG key, producing verified commits on release pull requests.
|
|
175
|
+
|
|
176
|
+
The `GH_TOKEN` (PAT) continues to be used for all other GitHub API operations like pull request creation and updates.
|
|
177
|
+
|
|
178
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #371](https://github.com/monochange/monochange/pull/371) _Introduced in:_ [`3770b48`](https://github.com/monochange/monochange/commit/3770b48bab6b41c80086a0d3e2e4e6a9a7540c39)
|
|
179
|
+
|
|
180
|
+
### Other
|
|
181
|
+
|
|
182
|
+
#### Resolve git identity from token for release PR commits
|
|
183
|
+
|
|
184
|
+
The `release-pr` workflow now queries the GitHub API for the authenticated user's `id`, `login`, and `name`, then constructs the standard GitHub noreply email (`{id}+{login}@users.noreply.github.com`) for `git config user.email`. This replaces the previous hardcoded `github-actions[bot]` identity, so release PR commits are properly attributed to the account that owns the `RELEASE_PR_MERGE_TOKEN`.
|
|
185
|
+
|
|
186
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #367](https://github.com/monochange/monochange/pull/367) _Introduced in:_ [`920bf04`](https://github.com/monochange/monochange/commit/920bf04ba34aa7050e0dc6a9be5c488c9431d085)
|
|
187
|
+
|
|
188
|
+
#### Use the current monochange CLI when publishing release tags
|
|
189
|
+
|
|
190
|
+
The publish workflow now builds the `mc` binary from the workflow commit before checking out the release tag. Publish jobs still operate on the requested release tag's files and release state, but they execute the current workflow version of `mc` so post-release publishing fixes apply when rerunning publication for an older tag.
|
|
191
|
+
|
|
192
|
+
The workflow keeps full branch and tag history available after switching to the release tag so publish-time release branch reachability checks still work. The release workflow also dispatches `publish.yml` at the current workflow commit, allowing a fixed publish workflow to publish an older release tag.
|
|
193
|
+
|
|
194
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #366](https://github.com/monochange/monochange/pull/366) _Introduced in:_ [`9bb5ca9`](https://github.com/monochange/monochange/commit/9bb5ca9ca5315f60a1079a55470f7b77ff8e3ea2) _Related issues:_ [#364](https://github.com/monochange/monochange/issues/364)
|
|
195
|
+
|
|
196
|
+
## [0.3.0](https://github.com/monochange/monochange/releases/tag/v0.3.0) (2026-04-30)
|
|
197
|
+
|
|
198
|
+
### Changed
|
|
199
|
+
|
|
200
|
+
#### Configure changeset lint rules
|
|
201
|
+
|
|
202
|
+
Add configurable changeset lint rules under `[lints.rules]` for summaries, section headings, bump-specific requirements, and changelog-type-specific requirements.
|
|
203
|
+
|
|
204
|
+
Rules can target built-in or custom changeset types with dynamic ids like `changesets/types/breaking` and `changesets/types/unicorns`, while unknown type ids are rejected during configuration loading.
|
|
205
|
+
|
|
206
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #326](https://github.com/monochange/monochange/pull/326) _Introduced in:_ [`285fd69`](https://github.com/monochange/monochange/commit/285fd697b99502e9d95716413c533251307f0010) _Last updated in:_ [`b33a82d`](https://github.com/monochange/monochange/commit/b33a82d8e26da20fb2dfbb94bc5f4040c27f2c67)
|
|
207
|
+
|
|
208
|
+
#### Document supported ecosystem capabilities
|
|
209
|
+
|
|
210
|
+
The documentation now includes a dedicated ecosystem guide that compares Cargo, npm-family, Deno, Dart / Flutter, and Python support across discovery, manifest updates, lockfile handling, and built-in registry publishing. Python is documented as a supported release-planning ecosystem with uv workspace discovery, Poetry and PEP 621 `pyproject.toml` parsing, Python dependency normalization, manifest version rewrites, internal dependency rewrites, and inferred `uv lock` / `poetry lock --no-update` lockfile commands.
|
|
211
|
+
|
|
212
|
+
The guide also clarifies ecosystem publishing boundaries, including canonical public registry support and the external-mode escape hatch for private registries or custom publication flows.
|
|
213
|
+
|
|
214
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #307](https://github.com/monochange/monochange/pull/307) _Introduced in:_ [`11c628c`](https://github.com/monochange/monochange/commit/11c628cd2afb7c9509c31a8cfc043be63a9f2a75) _Last updated in:_ [`b33a82d`](https://github.com/monochange/monochange/commit/b33a82d8e26da20fb2dfbb94bc5f4040c27f2c67)
|
|
215
|
+
|
|
216
|
+
#### Add Go ecosystem support
|
|
217
|
+
|
|
218
|
+
monochange now discovers and manages Go modules from `go.mod` files in single-module and multi-module repositories.
|
|
219
|
+
|
|
220
|
+
**Configuration:**
|
|
221
|
+
|
|
222
|
+
```toml
|
|
223
|
+
[defaults]
|
|
224
|
+
package_type = "go"
|
|
225
|
+
|
|
226
|
+
[package.api]
|
|
227
|
+
path = "api"
|
|
228
|
+
|
|
229
|
+
[package.shared]
|
|
230
|
+
path = "shared"
|
|
231
|
+
|
|
232
|
+
[ecosystems.go]
|
|
233
|
+
enabled = true
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**What it discovers:**
|
|
237
|
+
|
|
238
|
+
- Go modules by scanning for `go.mod` files
|
|
239
|
+
- Multi-module monorepos with separate modules in subdirectories
|
|
240
|
+
- Module paths, including major version suffixes (`/v2`, `/v3`)
|
|
241
|
+
- Cross-module `require` directives as dependency edges
|
|
242
|
+
- Indirect dependencies marked as development dependencies
|
|
243
|
+
|
|
244
|
+
**Version management:**
|
|
245
|
+
|
|
246
|
+
- Go versions come from git tags, not manifest files — the adapter reports `None` for `current_version` and stores the module path as metadata for tag resolution
|
|
247
|
+
- Updates `require` directives in `go.mod` when cross-module dependencies change
|
|
248
|
+
- Preserves `replace`, `exclude`, `retract` directives and comments
|
|
249
|
+
- Adds `v` prefix to version strings automatically when missing
|
|
250
|
+
|
|
251
|
+
**Lockfile commands:**
|
|
252
|
+
|
|
253
|
+
- Infers `go mod tidy` for all Go modules (updates both `go.mod` and `go.sum`)
|
|
254
|
+
- Configurable via `[ecosystems.go].lockfile_commands`
|
|
255
|
+
|
|
256
|
+
**Key design decisions:**
|
|
257
|
+
|
|
258
|
+
- Module names are derived from the last non-version segment of the module path (`github.com/org/repo/api/v2` → `api`)
|
|
259
|
+
- The full module path and relative directory path are stored as metadata for downstream tag resolution
|
|
260
|
+
- Parse errors during discovery are treated as warnings, not hard errors
|
|
261
|
+
|
|
262
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #156](https://github.com/monochange/monochange/pull/156) _Introduced in:_ [`519f841`](https://github.com/monochange/monochange/commit/519f841929c6a06d5b3a578b206982d2d6cc1548) _Last updated in:_ [`b33a82d`](https://github.com/monochange/monochange/commit/b33a82d8e26da20fb2dfbb94bc5f4040c27f2c67) _Closed issues:_ [#133](https://github.com/monochange/monochange/issues/133)
|
|
263
|
+
|
|
264
|
+
#### Update repository URLs
|
|
265
|
+
|
|
266
|
+
Update repository references from `ifiokjr/monochange` to `monochange/monochange`.
|
|
267
|
+
|
|
268
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #284](https://github.com/monochange/monochange/pull/284) _Introduced in:_ [`021a6cb`](https://github.com/monochange/monochange/commit/021a6cbc86f812a7879b211e83ced5074dccf740) _Last updated in:_ [`b33a82d`](https://github.com/monochange/monochange/commit/b33a82d8e26da20fb2dfbb94bc5f4040c27f2c67)
|
|
269
|
+
|
|
270
|
+
#### Add the publish bootstrap command
|
|
271
|
+
|
|
272
|
+
Add `mc publish-bootstrap --from <ref>` for release-record-scoped first-time package setup.
|
|
273
|
+
|
|
274
|
+
The command uses the release record to choose package ids, runs placeholder publishing for that release package set, supports `--dry-run`, and can write a JSON bootstrap result artifact with `--output <path>`. Documentation now recommends rerunning `mc publish-readiness` after bootstrap before planning or publishing packages.
|
|
275
|
+
|
|
276
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #318](https://github.com/monochange/monochange/pull/318) _Introduced in:_ [`cadb6fc`](https://github.com/monochange/monochange/commit/cadb6fccaac2ff9107db8b03bf6156762bc5a9b2) _Last updated in:_ [`b33a82d`](https://github.com/monochange/monochange/commit/b33a82d8e26da20fb2dfbb94bc5f4040c27f2c67)
|
|
277
|
+
|
|
278
|
+
#### Add readiness-backed publish planning
|
|
279
|
+
|
|
280
|
+
`mc publish-plan` now accepts `--readiness <path>` for normal package publish planning. The plan validates that the `mc publish-readiness` artifact matches the current release record and covers the selected package set, then limits rate-limit batches to package ids that are ready in both the artifact and a fresh local readiness check.
|
|
281
|
+
|
|
282
|
+
Placeholder publish planning continues to reject readiness artifacts and should be run with `mc publish-plan --mode placeholder`.
|
|
283
|
+
|
|
284
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #305](https://github.com/monochange/monochange/pull/305) _Introduced in:_ [`e80c2b8`](https://github.com/monochange/monochange/commit/e80c2b8f1fd1df155e4aa05df8977f245f89bbc5) _Last updated in:_ [`b33a82d`](https://github.com/monochange/monochange/commit/b33a82d8e26da20fb2dfbb94bc5f4040c27f2c67)
|
|
285
|
+
|
|
286
|
+
#### Add Cargo publish-readiness guards
|
|
287
|
+
|
|
288
|
+
Built-in crates.io publishing now fails readiness before registry mutation when the current `Cargo.toml` is not publishable: `publish = false`, `publish = [...]` without `crates-io`, missing `description`, or missing both `license` and `license-file`.
|
|
289
|
+
|
|
290
|
+
Workspace-inherited Cargo metadata is accepted, and already-published package versions remain non-blocking when the saved readiness artifact still matches current readiness.
|
|
291
|
+
|
|
292
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #303](https://github.com/monochange/monochange/pull/303) _Introduced in:_ [`0527e2c`](https://github.com/monochange/monochange/commit/0527e2c253d37ee283b9116e83db2a23b03b42b8) _Last updated in:_ [`b33a82d`](https://github.com/monochange/monochange/commit/b33a82d8e26da20fb2dfbb94bc5f4040c27f2c67)
|
|
293
|
+
|
|
294
|
+
#### Require publish readiness artifacts
|
|
295
|
+
|
|
296
|
+
Require real `mc publish` package-registry runs to pass a readiness artifact generated by `mc publish-readiness`.
|
|
297
|
+
|
|
298
|
+
`mc publish-readiness` JSON artifacts now include schema metadata, release-record commit metadata, and a deterministic package-set fingerprint. `PublishPackages` validates the artifact before registry mutation and rejects missing, blocked, stale, malformed, duplicate, or package-mismatched readiness artifacts while leaving `--dry-run` publish previews artifact-free.
|
|
299
|
+
|
|
300
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #301](https://github.com/monochange/monochange/pull/301) _Introduced in:_ [`97337aa`](https://github.com/monochange/monochange/commit/97337aad65e1f9dfc4d97fd381592b3bd57bc30a) _Last updated in:_ [`b33a82d`](https://github.com/monochange/monochange/commit/b33a82d8e26da20fb2dfbb94bc5f4040c27f2c67)
|
|
301
|
+
|
|
302
|
+
#### Harden publish readiness artifact freshness
|
|
303
|
+
|
|
304
|
+
Adds a publish input fingerprint to `mc publish-readiness` artifacts. `mc publish` and readiness-backed `mc publish-plan` now reject artifacts when workspace config, package manifests, lockfiles, or registry/tooling inputs changed after the artifact was written.
|
|
305
|
+
|
|
306
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #324](https://github.com/monochange/monochange/pull/324) _Introduced in:_ [`69f221d`](https://github.com/monochange/monochange/commit/69f221dc1f9b4823e8aa98ebdea6b84aaa57baeb) _Last updated in:_ [`b33a82d`](https://github.com/monochange/monochange/commit/b33a82d8e26da20fb2dfbb94bc5f4040c27f2c67)
|
|
307
|
+
|
|
308
|
+
#### Add publish resume support
|
|
309
|
+
|
|
310
|
+
Add package publish result artifacts plus `mc publish --resume <path>` for retrying incomplete registry publishing after partial failures.
|
|
311
|
+
|
|
312
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #323](https://github.com/monochange/monochange/pull/323) _Introduced in:_ [`8bca357`](https://github.com/monochange/monochange/commit/8bca35730a78f61c22dc71e473bc67a77210c4c6) _Last updated in:_ [`b33a82d`](https://github.com/monochange/monochange/commit/b33a82d8e26da20fb2dfbb94bc5f4040c27f2c67)
|
|
313
|
+
|
|
314
|
+
#### Consolidate affected-package configuration
|
|
315
|
+
|
|
316
|
+
> **Breaking change** — affected-package policy now lives in `[changesets.affected]`. Configurations using the previous `[changesets.verify]` section must rename it, and configurations using the hosted-source affected-package policy section (`[source.bot.changesets]` in older configs, or `[source.affected]` in prerelease configs) must move `enabled`, `required`, `skip_labels`, `comment_on_failure`, `changed_paths`, and `ignored_paths` into `[changesets.affected]`.
|
|
317
|
+
|
|
318
|
+
Move affected-package policy settings into the changesets configuration:
|
|
319
|
+
|
|
320
|
+
```toml
|
|
321
|
+
[changesets.affected]
|
|
322
|
+
enabled = true
|
|
323
|
+
required = true
|
|
324
|
+
skip_labels = ["no-changeset-required"]
|
|
325
|
+
comment_on_failure = true
|
|
326
|
+
changed_paths = ["Cargo.toml", "Cargo.lock"]
|
|
327
|
+
ignored_paths = ["**/tests/**"]
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
The Rust configuration model now exposes `ChangesetSettings::affected` with `ChangesetAffectedSettings`; the previous `ChangesetSettings::verify`, `SourceConfiguration::bot`, `SourceConfiguration::affected`, `ProviderChangesetBotSettings`, `ProviderAffectedSettings`, and `ProviderBotSettings` types or fields have been removed.
|
|
331
|
+
|
|
332
|
+
The `mc affected` policy command now reports `skipped` when it runs on a generated release pull request branch whose name starts with `source.pull_requests.branch_prefix`, allowing CI to ignore those branches.
|
|
333
|
+
|
|
334
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #340](https://github.com/monochange/monochange/pull/340) _Introduced in:_ [`d5d8856`](https://github.com/monochange/monochange/commit/d5d8856b1522cd4ad70eeb06abd4d33ad7f0c9b6)
|
|
335
|
+
|
|
336
|
+
#### Document the generated CLI process
|
|
337
|
+
|
|
338
|
+
Document the new CLI process where `mc init` generates editable workflow commands in `monochange.toml` and every built-in step is available directly through immutable `mc step:*` commands. The docs now clarify reserved command names such as `validate` and recommend `mc step:affected-packages --verify` for direct changeset-policy checks.
|
|
339
|
+
|
|
340
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #291](https://github.com/monochange/monochange/pull/291) _Introduced in:_ [`74ac16a`](https://github.com/monochange/monochange/commit/74ac16af949ab07644c9b583774a00da2d95a7be) _Last updated in:_ [`b33a82d`](https://github.com/monochange/monochange/commit/b33a82d8e26da20fb2dfbb94bc5f4040c27f2c67)
|
|
341
|
+
|
|
342
|
+
## [0.2.0](https://github.com/monochange/monochange/releases/tag/v0.2.0) (2026-04-21)
|
|
343
|
+
|
|
344
|
+
### Added
|
|
345
|
+
|
|
346
|
+
#### add lint include/exclude path filters with optional gitignore override
|
|
347
|
+
|
|
348
|
+
`[lints]` now supports workspace-level path filters for manifest linting.
|
|
349
|
+
|
|
350
|
+
**New options:**
|
|
351
|
+
|
|
352
|
+
- `include` — optional glob patterns that opt manifest paths into linting
|
|
353
|
+
- `exclude` — glob patterns that remove matching manifest paths from linting
|
|
354
|
+
- `disable_gitignore` — opt back into linting gitignored manifests when needed
|
|
355
|
+
|
|
356
|
+
By default, monochange now skips gitignored manifests during linting while still allowing repositories to explicitly opt them back in.
|
|
357
|
+
|
|
358
|
+
The repository config and bundled linting docs now show how to exclude `examples/**` when example manifests would otherwise trigger false positives.
|
|
359
|
+
|
|
360
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #248](https://github.com/monochange/monochange/pull/248) _Introduced in:_ [`b45cb78`](https://github.com/monochange/monochange/commit/b45cb787a75746a95799f957f01d92020d27f72f) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
361
|
+
|
|
362
|
+
### Changed
|
|
363
|
+
|
|
364
|
+
#### static npm packages in packages/ directory
|
|
365
|
+
|
|
366
|
+
All npm packages now live as static directories under `packages/` instead of being dynamically generated during the release workflow.
|
|
367
|
+
|
|
368
|
+
**Before:**
|
|
369
|
+
|
|
370
|
+
The `@monochange/cli` and platform packages were generated on-the-fly by `build-packages.mjs` into a temporary directory, then published from there. `@monochange/skill` lived in `npm/skill`.
|
|
371
|
+
|
|
372
|
+
**After:**
|
|
373
|
+
|
|
374
|
+
Package directories are permanently present under `packages/` using the `@scope__name` convention:
|
|
375
|
+
|
|
376
|
+
```
|
|
377
|
+
packages/monochange__cli/ # @monochange/cli
|
|
378
|
+
packages/monochange__cli-darwin-arm64/ # @monochange/cli-darwin-arm64
|
|
379
|
+
packages/monochange__skill/ # @monochange/skill
|
|
380
|
+
...
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
`build-packages.mjs` still runs during release to populate platform binaries into `packages/*/bin/`, but it no longer generates the package structure from scratch. `publish-packages.mjs` now validates that each package has the expected binaries before publishing, preventing accidental empty publishes.
|
|
384
|
+
|
|
385
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #204](https://github.com/monochange/monochange/pull/204) _Introduced in:_ [`a90638b`](https://github.com/monochange/monochange/commit/a90638b911d0aca00afcda8c5686da46ead14831) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
386
|
+
|
|
387
|
+
### Documentation
|
|
388
|
+
|
|
389
|
+
#### add `mc subagents` for repo-local agent generation
|
|
390
|
+
|
|
391
|
+
`monochange` now ships `mc subagents` so repositories can generate repo-local agent definitions for Claude, VS Code, Copilot, Pi, Codex, and Cursor.
|
|
392
|
+
|
|
393
|
+
Before:
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
mc assist pi
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
After:
|
|
400
|
+
|
|
401
|
+
```bash
|
|
402
|
+
mc help subagents
|
|
403
|
+
mc subagents pi
|
|
404
|
+
mc subagents --all
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
Generated agent instructions are now CLI-first and prefer `mc`, then `monochange`, then `npx -y @monochange/cli`, while still generating optional MCP configuration for supported hosts.
|
|
408
|
+
|
|
409
|
+
`monochange_config` now reserves the `subagents` command name so workspace-defined commands cannot shadow the built-in generator.
|
|
410
|
+
|
|
411
|
+
`@monochange/skill` now teaches host agents to use `mc help subagents` / `mc subagents` instead of the removed `mc assist` flow.
|
|
412
|
+
|
|
413
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #254](https://github.com/monochange/monochange/pull/254) _Introduced in:_ [`1b2b412`](https://github.com/monochange/monochange/commit/1b2b41237b194c608c3e521daefd3f15c2729f91) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
414
|
+
|
|
415
|
+
#### Add `mc skill` for project-local monochange skill installation through the upstream `skills add` workflow.
|
|
416
|
+
|
|
417
|
+
Before:
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
npm install -g @monochange/skill
|
|
421
|
+
monochange-skill --copy ~/.pi/agent/skills/monochange
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
After:
|
|
425
|
+
|
|
426
|
+
```bash
|
|
427
|
+
mc help skill
|
|
428
|
+
mc skill
|
|
429
|
+
mc skill -a pi -y
|
|
430
|
+
mc skill --list
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
`mc skill` auto-detects `npx`, `pnpm dlx`, or `bunx`, forwards the remaining native `skills add` flags, and installs the monochange skill source into the current project by default.
|
|
434
|
+
|
|
435
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #257](https://github.com/monochange/monochange/pull/257) _Introduced in:_ [`0a6937a`](https://github.com/monochange/monochange/commit/0a6937ac81dadbc6252e5eac60fd692335cee3a5) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
436
|
+
|
|
437
|
+
#### add changeset cleanup job guide with mc diagnostics workflow
|
|
438
|
+
|
|
439
|
+
Adds a comprehensive "Changeset cleanup job" section to `skills/changesets.md` that teaches agents how to audit, deduplicate, and clean up changesets before release using `mc diagnostics --format json`.
|
|
440
|
+
|
|
441
|
+
**New workflow includes:**
|
|
442
|
+
|
|
443
|
+
- Step-by-step guide using `mc diagnostics --format json` to export changeset data
|
|
444
|
+
- jq filter examples for finding duplicates, short summaries, missing git context
|
|
445
|
+
- Decision matrix for when to merge, remove, or update changesets
|
|
446
|
+
- Concrete bash examples for merging duplicate changesets
|
|
447
|
+
- Validation checklist for pre-release changeset hygiene
|
|
448
|
+
|
|
449
|
+
Updates the root `SKILL.md` reference to highlight "auditing, cleaning up" alongside creation.
|
|
450
|
+
|
|
451
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #242](https://github.com/monochange/monochange/pull/242) _Introduced in:_ [`7342723`](https://github.com/monochange/monochange/commit/7342723dc924b9fd4dd0cdf9ca34da9812e83b70) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
452
|
+
|
|
453
|
+
#### add artifact-type-aware changeset guides and skill package expansion
|
|
454
|
+
|
|
455
|
+
Introduces three new documents to the skill package and shared mdt template blocks for changeset generation rules:
|
|
456
|
+
|
|
457
|
+
- **CHANGESET-GUIDE.md** — lifecycle management guide covering create, update, replace, and remove workflows with decision matrix
|
|
458
|
+
- **ARTIFACT-TYPES.md** — per-type rules for libraries, applications, CLI tools, and LSP/MCP servers, including UX changelog section configuration and screenshot support
|
|
459
|
+
- **`.templates/changeset.t.md`** — shared mdt template blocks for changeset philosophy, artifact tables, lifecycle rules, granularity rules, templates, and MCP tool integration
|
|
460
|
+
|
|
461
|
+
Key additions:
|
|
462
|
+
|
|
463
|
+
- **UX changelog section** (`type: ux`) for applications and websites, with S3-compatible screenshot upload configuration
|
|
464
|
+
- **LSP/MCP artifact type** added to the artifact type table with protocol-focused changeset guidance
|
|
465
|
+
- **`caused_by` frontmatter field** documented for dependency propagation context (replaces automatic "dependency changed → patch" with human-readable explanation)
|
|
466
|
+
- **`bump: none` with `caused_by`** workflow for `mc affected` packages with no meaningful changes
|
|
467
|
+
- Shared blocks propagate to `SKILL.md`, `REFERENCE.md`, and `docs/agents/changeset-generation.md` via `mdt`
|
|
468
|
+
|
|
469
|
+
**Before:** Skill package had only `SKILL.md` and `REFERENCE.md` with no artifact-type differentiation or lifecycle management guidance.
|
|
470
|
+
|
|
471
|
+
**After:** Agents can follow per-type rules, manage changeset lifecycles, configure UX sections with screenshots, and provide dependency propagation context.
|
|
472
|
+
|
|
473
|
+
> _Owner:_ Ifiok Jr. _Introduced in:_ [`36bb233`](https://github.com/monochange/monochange/commit/36bb2338f182c271679bca1ad14bd3a48bbf5f71) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
474
|
+
|
|
475
|
+
#### add ecosystem-specific semantic analysis for MCP changeset workflows
|
|
476
|
+
|
|
477
|
+
`monochange_analyze_changes` and `monochange_validate_changeset` now return real semantic analysis for Cargo, npm, Deno, and Dart/Flutter packages instead of placeholder results.
|
|
478
|
+
|
|
479
|
+
**Before (`monochange_analyze_changes`):**
|
|
480
|
+
|
|
481
|
+
```json
|
|
482
|
+
{
|
|
483
|
+
"ok": true,
|
|
484
|
+
"summary": "Analysis complete - review suggested changesets for each package",
|
|
485
|
+
"analysis": {
|
|
486
|
+
"package_changes": {}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
**After (`monochange_analyze_changes`):**
|
|
492
|
+
|
|
493
|
+
```json
|
|
494
|
+
{
|
|
495
|
+
"ok": true,
|
|
496
|
+
"summary": "Analyzed 1 package(s) and found 6 semantic change(s)",
|
|
497
|
+
"analysis": {
|
|
498
|
+
"packageAnalyses": {
|
|
499
|
+
"core": {
|
|
500
|
+
"semanticChanges": [
|
|
501
|
+
{
|
|
502
|
+
"category": "public_api",
|
|
503
|
+
"kind": "modified",
|
|
504
|
+
"itemPath": "greet"
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
"category": "dependency",
|
|
508
|
+
"kind": "added",
|
|
509
|
+
"itemPath": "tracing"
|
|
510
|
+
}
|
|
511
|
+
]
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
`monochange_validate_changeset` now validates authored changesets against that semantic diff and can flag stale symbol references or underspecified summaries across all supported ecosystems.
|
|
519
|
+
|
|
520
|
+
Current analyzer coverage includes:
|
|
521
|
+
|
|
522
|
+
- Cargo public Rust API diffs plus `Cargo.toml` dependency and manifest metadata changes
|
|
523
|
+
- npm-family JS/TS exported symbol diffs plus `package.json` exports, commands, dependency, and script changes
|
|
524
|
+
- Deno JS/TS exported symbol diffs plus `deno.json` exports, import aliases, task, and compiler-option changes
|
|
525
|
+
- Dart and Flutter public `lib/` API diffs plus `pubspec.yaml` executables, dependency, environment, and plugin-platform changes
|
|
526
|
+
|
|
527
|
+
**Before (`monochange_validate_changeset`):**
|
|
528
|
+
|
|
529
|
+
```json
|
|
530
|
+
{
|
|
531
|
+
"ok": true,
|
|
532
|
+
"valid": true,
|
|
533
|
+
"issues": []
|
|
534
|
+
}
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
**After (`monochange_validate_changeset`):**
|
|
538
|
+
|
|
539
|
+
```json
|
|
540
|
+
{
|
|
541
|
+
"ok": false,
|
|
542
|
+
"valid": false,
|
|
543
|
+
"lifecycle_status": "stale",
|
|
544
|
+
"issues": [
|
|
545
|
+
{
|
|
546
|
+
"severity": "error",
|
|
547
|
+
"message": "changeset references `OldGreeter` but that item was not found in the current semantic diff"
|
|
548
|
+
}
|
|
549
|
+
]
|
|
550
|
+
}
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
`monochange_core` now exposes shared semantic-analysis contracts and diff record types so ecosystem crates can own their analyzers without moving parser logic into the CLI crate.
|
|
554
|
+
|
|
555
|
+
`@monochange/skill` now documents the semantic-analysis-backed MCP workflows and the expanded cross-ecosystem validation guidance for assistant consumers.
|
|
556
|
+
|
|
557
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #247](https://github.com/monochange/monochange/pull/247) _Introduced in:_ [`8c96c8f`](https://github.com/monochange/monochange/commit/8c96c8f0a3b9d44bf30148b5a83067d7ce3ab62b) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2) _Closed issues:_ [#243](https://github.com/monochange/monochange/issues/243) _Related issues:_ [#244](https://github.com/monochange/monochange/issues/244)
|
|
558
|
+
|
|
559
|
+
#### expand the agent-facing harness around diagnostics, lint metadata, and repo guidance
|
|
560
|
+
|
|
561
|
+
`monochange` now exposes more of its review and planning surface directly through the repo and MCP so assistants can work from structured data instead of shell-only conventions.
|
|
562
|
+
|
|
563
|
+
**Before:**
|
|
564
|
+
|
|
565
|
+
- assistants could call the MCP server for validation, discovery, change creation, release previews, and affected-package checks
|
|
566
|
+
- lint metadata and changeset diagnostics still depended on `mc lint ...` and `mc diagnostics --format json`
|
|
567
|
+
- the repo guidance lived mostly in `AGENTS.md` and scattered docs without a dedicated plans directory or top-level architecture map
|
|
568
|
+
|
|
569
|
+
**After:**
|
|
570
|
+
|
|
571
|
+
- MCP now includes `monochange_diagnostics`, `monochange_lint_catalog`, and `monochange_lint_explain`
|
|
572
|
+
- the packaged skill and assistant setup docs now list the full MCP surface, including semantic analysis tools
|
|
573
|
+
- the repository now keeps an explicit `ARCHITECTURE.md` map plus `docs/plans/` for active plans, completed plans, and tech-debt tracking
|
|
574
|
+
- `docs:check` now verifies that the agent-facing docs stay aligned with the live MCP tool surface, and `lint:architecture` checks that provider/ecosystem dispatch stays inside the documented allowlist
|
|
575
|
+
|
|
576
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #251](https://github.com/monochange/monochange/pull/251) _Introduced in:_ [`47847db`](https://github.com/monochange/monochange/commit/47847db5d8e98e9b8284e72e5f94c184473b4ffd) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
577
|
+
|
|
578
|
+
#### add lint rule documentation
|
|
579
|
+
|
|
580
|
+
Document the mc check command and all available lint rules for Cargo and NPM ecosystems in SKILL.md and REFERENCE.md.
|
|
581
|
+
|
|
582
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #207](https://github.com/monochange/monochange/pull/207) _Introduced in:_ [`a650862`](https://github.com/monochange/monochange/commit/a650862f2dc69b6538f6403bab5b66079f9c1304) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
583
|
+
|
|
584
|
+
#### reorganize bundled skill docs into lowercased skill paths
|
|
585
|
+
|
|
586
|
+
Moves the bundled deep-dive markdown files under `skills/` and lowercases the published markdown filenames so the installable skill has a more consistent layout.
|
|
587
|
+
|
|
588
|
+
**Updated structure includes:**
|
|
589
|
+
|
|
590
|
+
- top-level `SKILL.md` remains the entrypoint
|
|
591
|
+
- deep-dive guides such as `reference.md`, `changeset-guide.md`, `artifact-types.md`, `trusted-publishing.md`, and `multi-package-publishing.md` now live in `skills/`
|
|
592
|
+
- package and example readme files now use lowercase `readme.md`
|
|
593
|
+
- internal links and published package file paths were updated to match the new structure
|
|
594
|
+
|
|
595
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #248](https://github.com/monochange/monochange/pull/248) _Introduced in:_ [`b45cb78`](https://github.com/monochange/monochange/commit/b45cb787a75746a95799f957f01d92020d27f72f) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
596
|
+
|
|
597
|
+
#### document future automation boundaries for manual registries
|
|
598
|
+
|
|
599
|
+
Adds a short roadmap-style section to the trusted-publishing docs describing where monochange may add stronger automation or validation later for `crates.io`, `jsr`, and `pub.dev`.
|
|
600
|
+
|
|
601
|
+
It also makes the current boundary explicit:
|
|
602
|
+
|
|
603
|
+
- npm is still the only registry with built-in trusted-publishing enrollment
|
|
604
|
+
- manual registries remain guidance- and diagnostics-first today
|
|
605
|
+
- registry-side admin or browser-confirmed steps are still treated as manual unless the registry exposes a safer automation path later
|
|
606
|
+
|
|
607
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #223](https://github.com/monochange/monochange/pull/223) _Introduced in:_ [`ed2ae40`](https://github.com/monochange/monochange/commit/ed2ae4009e05a761d7abf24b22b65af7415912bc) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
608
|
+
|
|
609
|
+
#### improve npm and Deno semantic analysis with parser-backed JS/TS export extraction
|
|
610
|
+
|
|
611
|
+
`monochange_analyze_changes` and `monochange_validate_changeset` now use parser-backed JavaScript and TypeScript export extraction for npm and Deno packages instead of relying primarily on line-based export scanning.
|
|
612
|
+
|
|
613
|
+
This improves semantic diff accuracy for cases such as:
|
|
614
|
+
|
|
615
|
+
- multiline named export blocks
|
|
616
|
+
- namespace re-exports like `export * as toolkit from "./toolkit"`
|
|
617
|
+
- anonymous default exports
|
|
618
|
+
- more complex TypeScript and module export syntax
|
|
619
|
+
|
|
620
|
+
The MCP output shape stays the same, but the semantic evidence for npm and Deno packages is now more robust and closer to the actual module structure.
|
|
621
|
+
|
|
622
|
+
This work also extracts the shared JavaScript and TypeScript export-analysis logic into the new `monochange_ecmascript` crate, so npm and Deno keep their ecosystem-specific manifest analysis while reusing one parser-backed module analyzer.
|
|
623
|
+
|
|
624
|
+
The monochange skill documentation now also teaches the new-package rule: the first changeset for a newly introduced published package or crate should use a `major` bump for that new package entry.
|
|
625
|
+
|
|
626
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #250](https://github.com/monochange/monochange/pull/250) _Introduced in:_ [`0dd8460`](https://github.com/monochange/monochange/commit/0dd846060614b2de9d3b2dfb5c1337075774b167) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2) _Related issues:_ [#247](https://github.com/monochange/monochange/issues/247), [#249](https://github.com/monochange/monochange/issues/249)
|
|
627
|
+
|
|
628
|
+
#### prefer official trusted-publishing workflows in the packaged skill
|
|
629
|
+
|
|
630
|
+
The packaged skill now explicitly recommends the registry-maintained GitHub publishing workflows for manual trusted-publishing registries.
|
|
631
|
+
|
|
632
|
+
**Updated guidance:**
|
|
633
|
+
|
|
634
|
+
- prefers `rust-lang/crates-io-auth-action@v1` for `crates.io`
|
|
635
|
+
- prefers `dart-lang/setup-dart/.github/workflows/publish.yml@v1` for `pub.dev`
|
|
636
|
+
- clarifies that `mode = "external"` is often the clearest fit when those workflows should own the publish command directly
|
|
637
|
+
|
|
638
|
+
These recommendations were added to the main skill entrypoint, the configuration deep dive, and the packaged trusted-publishing guide.
|
|
639
|
+
|
|
640
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #214](https://github.com/monochange/monochange/pull/214) _Introduced in:_ [`8a8a13a`](https://github.com/monochange/monochange/commit/8a8a13a09520f7549ae15204f69bf1e9357d1662) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
641
|
+
|
|
642
|
+
#### add an adoption playbook and example indexes to the packaged skill
|
|
643
|
+
|
|
644
|
+
The packaged `@monochange/skill` now includes an interactive adoption guide plus bundled example indexes for choosing how deeply to set up monochange.
|
|
645
|
+
|
|
646
|
+
**Before:** The skill explained commands, configuration, linting, and publishing, but it did not give agents a clear question tree for quickstart vs standard vs full vs migration adoption. It also lacked a dedicated examples surface for pointing users at setup patterns.
|
|
647
|
+
|
|
648
|
+
**After:** The package adds `skills/adoption.md`, a bundled `examples/` folder with condensed scenario summaries, and references to a top-level repository `examples/` index for fuller repo-shaped setups.
|
|
649
|
+
|
|
650
|
+
This makes the skill better at plan-mode interrogation, migration guidance, and recommendation-driven setup conversations.
|
|
651
|
+
|
|
652
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #241](https://github.com/monochange/monochange/pull/241) _Introduced in:_ [`05c393c`](https://github.com/monochange/monochange/commit/05c393c72ce88b4c4e1eee99858e33ae72554559) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
653
|
+
|
|
654
|
+
#### add granular changeset generation guidance to the skill package
|
|
655
|
+
|
|
656
|
+
The packaged `@monochange/skill` guidance now teaches agents how to manage changesets as a lifecycle instead of only telling them to create one.
|
|
657
|
+
|
|
658
|
+
**Before:**
|
|
659
|
+
|
|
660
|
+
The skill told agents to use `mc change` and `mc diagnostics`, but it did not explain when to create a new changeset versus updating, replacing, or removing an existing one. It also did not make granular package-centric changesets a first-class rule.
|
|
661
|
+
|
|
662
|
+
**After:**
|
|
663
|
+
|
|
664
|
+
Agents are now instructed to:
|
|
665
|
+
|
|
666
|
+
- review existing `.changeset/*.md` files before writing a new one
|
|
667
|
+
- keep changesets package-centric and split unrelated features apart
|
|
668
|
+
- combine near-duplicate changesets when the outward change is the same across multiple related packages
|
|
669
|
+
- update an existing changeset only when the same feature expands in scope
|
|
670
|
+
- remove stale changesets when a feature is reverted before release
|
|
671
|
+
- dedicate separate changesets to breaking changes with migration guidance
|
|
672
|
+
|
|
673
|
+
**Skill guidance example:**
|
|
674
|
+
|
|
675
|
+
```markdown
|
|
676
|
+
# Separate unrelated features
|
|
677
|
+
|
|
678
|
+
---
|
|
679
|
+
|
|
680
|
+
## core: minor
|
|
681
|
+
|
|
682
|
+
#### add file diff preview
|
|
683
|
+
|
|
684
|
+
...
|
|
685
|
+
|
|
686
|
+
---
|
|
687
|
+
|
|
688
|
+
## core: minor
|
|
689
|
+
|
|
690
|
+
#### add changelog format detection
|
|
691
|
+
|
|
692
|
+
...
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
This makes the packaged skill better aligned with monochange's current agent rules for granular, user-facing release notes.
|
|
696
|
+
|
|
697
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #205](https://github.com/monochange/monochange/pull/205) _Introduced in:_ [`467fdff`](https://github.com/monochange/monochange/commit/467fdff63ea036ffc0f38f18a62d23723f007740) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
698
|
+
|
|
699
|
+
#### add modular skill docs and a full linting guide
|
|
700
|
+
|
|
701
|
+
The packaged `@monochange/skill` docs now split the agent guidance into focused deep dives while keeping `REFERENCE.md` at the top level as the high-context reference document.
|
|
702
|
+
|
|
703
|
+
**Before:**
|
|
704
|
+
|
|
705
|
+
The package centered on `SKILL.md` plus a few top-level docs, but it did not have a dedicated `skills/` folder for focused topics and it did not explain the current workspace lint policy rule by rule.
|
|
706
|
+
|
|
707
|
+
**After:**
|
|
708
|
+
|
|
709
|
+
The package now includes:
|
|
710
|
+
|
|
711
|
+
- `skills/changesets.md` for creating and managing `.changeset/*.md` files
|
|
712
|
+
- `skills/commands.md` for choosing the right `mc` command and command flow
|
|
713
|
+
- `skills/configuration.md` for creating and extending `monochange.toml`
|
|
714
|
+
- `skills/linting.md` for the current rust/clippy rules, why they exist, and what changes with and without them
|
|
715
|
+
- updated `SKILL.md` and `REFERENCE.md` links so agents can jump between the concise entrypoint and the deeper reference material
|
|
716
|
+
|
|
717
|
+
**Skill bundle example:**
|
|
718
|
+
|
|
719
|
+
```text
|
|
720
|
+
SKILL.md
|
|
721
|
+
REFERENCE.md
|
|
722
|
+
skills/
|
|
723
|
+
README.md
|
|
724
|
+
changesets.md
|
|
725
|
+
commands.md
|
|
726
|
+
configuration.md
|
|
727
|
+
linting.md
|
|
728
|
+
```
|
|
729
|
+
|
|
730
|
+
This makes the published skill package easier to load incrementally while giving agents a much denser reference surface for current monochange features.
|
|
731
|
+
|
|
732
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #210](https://github.com/monochange/monochange/pull/210) _Introduced in:_ [`63de80c`](https://github.com/monochange/monochange/commit/63de80c29e46e88271b5dfe91bbf074a6e4c6135) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2) _Related issues:_ [#209](https://github.com/monochange/monochange/issues/209)
|
|
733
|
+
|
|
734
|
+
#### add a multi-package publishing guide to the packaged skill
|
|
735
|
+
|
|
736
|
+
The packaged skill now includes a dedicated `MULTI-PACKAGE-PUBLISHING.md` guide for repositories that publish multiple public packages from one workspace.
|
|
737
|
+
|
|
738
|
+
It explains:
|
|
739
|
+
|
|
740
|
+
- when one shared post-merge `mc publish` job is a good fit
|
|
741
|
+
- when package-specific jobs or fully external workflows are clearer
|
|
742
|
+
- how to keep tags, workflows, environments, and working directories aligned per package
|
|
743
|
+
- when to use package-level publishing overrides in `monochange.toml`
|
|
744
|
+
|
|
745
|
+
The skill `README.md`, `SKILL.md`, `REFERENCE.md`, and `skills/configuration.md` now point agents to the new guide when publishing strategy depends on monorepo shape rather than only on per-registry trusted-publishing setup.
|
|
746
|
+
|
|
747
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #219](https://github.com/monochange/monochange/pull/219) _Introduced in:_ [`df07da7`](https://github.com/monochange/monochange/commit/df07da727967a2ef83f1995197c2159024fb46ad) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
748
|
+
|
|
749
|
+
#### add trusted publishing setup guidance for supported registries
|
|
750
|
+
|
|
751
|
+
The packaged skill now ships a dedicated `TRUSTED-PUBLISHING.md` guide for setting up GitHub-based trusted publishing / OIDC flows across the registries that monochange supports.
|
|
752
|
+
|
|
753
|
+
**Before:** The skill explained that `publish.trusted_publishing = true` existed, but it did not show the exact registry fields or commands needed to finish setup.
|
|
754
|
+
|
|
755
|
+
**After:** The package now includes step-by-step guidance for:
|
|
756
|
+
|
|
757
|
+
- `npm` trusted publishing, including the exact `npm trust github ...` and `pnpm exec npm trust ...` commands that monochange models
|
|
758
|
+
- `crates.io` trusted publishing fields and the `rust-lang/crates-io-auth-action@v1` workflow pattern
|
|
759
|
+
- `jsr` repository linking and GitHub Actions publishing
|
|
760
|
+
- `pub.dev` automated publishing with repository and tag-pattern requirements
|
|
761
|
+
|
|
762
|
+
The skill README, `SKILL.md`, and `REFERENCE.md` also point agents to the new guide when they need secure package-publishing setup details.
|
|
763
|
+
|
|
764
|
+
The mdBook user guide now mirrors that content in a dedicated trusted-publishing chapter so the same setup guidance is available in both the packaged skill and the docs site.
|
|
765
|
+
|
|
766
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #211](https://github.com/monochange/monochange/pull/211) _Introduced in:_ [`38fe09f`](https://github.com/monochange/monochange/commit/38fe09f69f31ab268d7adc37889dacb80bfba2b7) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
767
|
+
|
|
768
|
+
#### refresh crates.io and pub.dev trusted publishing guidance
|
|
769
|
+
|
|
770
|
+
The packaged trusted-publishing guide now includes more complete GitHub/OIDC setup details for `crates.io` and `pub.dev`.
|
|
771
|
+
|
|
772
|
+
**Updated guidance includes:**
|
|
773
|
+
|
|
774
|
+
- crates.io prerequisites, workflow filename handling, environment matching, and the `rust-lang/crates-io-auth-action@v1` release-job pattern
|
|
775
|
+
- crates.io notes about the short-lived publish token flow and first-publish bootstrap requirements
|
|
776
|
+
- pub.dev prerequisites, tag-push-only requirements, recommended reusable `dart-lang/setup-dart` workflow usage, optional GitHub environment hardening, and multi-package repository guidance
|
|
777
|
+
|
|
778
|
+
The mdBook trusted-publishing chapter was updated to mirror the same information.
|
|
779
|
+
|
|
780
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #212](https://github.com/monochange/monochange/pull/212) _Introduced in:_ [`c371be8`](https://github.com/monochange/monochange/commit/c371be8864bc87c7454da4471b2a31d53089bb3d) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|
|
781
|
+
|
|
782
|
+
### Changed
|
|
783
|
+
|
|
784
|
+
#### add `caused_by` changeset context for dependency propagation
|
|
785
|
+
|
|
786
|
+
You can now annotate dependency-only follow-up changesets with `caused_by`, use `mc change --caused-by ...` to author them, inspect the linkage in diagnostics output, and suppress matching automatic dependency propagation during release planning.
|
|
787
|
+
|
|
788
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #245](https://github.com/monochange/monochange/pull/245) _Introduced in:_ [`8ec612b`](https://github.com/monochange/monochange/commit/8ec612beb9a8b8100037435695826042bc7361c4) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2) _Closed issues:_ [#208](https://github.com/monochange/monochange/issues/208)
|
|
789
|
+
|
|
790
|
+
#### Add advanced Dart workspace and Flutter lint rules.
|
|
791
|
+
|
|
792
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #238](https://github.com/monochange/monochange/pull/238) _Introduced in:_ [`acb4faa`](https://github.com/monochange/monochange/commit/acb4faae2361ac75d01f20824ed85259ed5139a0) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2) _Closed issues:_ [#233](https://github.com/monochange/monochange/issues/233)
|
|
793
|
+
|
|
794
|
+
#### add the first Dart lint suite foundation
|
|
795
|
+
|
|
796
|
+
monochange now wires Dart manifests into the ecosystem-owned lint registry and supports scaffolding Dart lint files with `mc lint new dart/<rule-name>`.
|
|
797
|
+
|
|
798
|
+
This foundation change adds:
|
|
799
|
+
|
|
800
|
+
- a new `monochange_dart::lints` module with target collection for `pubspec.yaml`
|
|
801
|
+
- Dart lint suite registration in the `mc lint` and `mc check` command paths
|
|
802
|
+
- Dart lint scaffolding support in `mc lint new`
|
|
803
|
+
- tests covering managed Dart lint target collection and fixture filtering
|
|
804
|
+
|
|
805
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #235](https://github.com/monochange/monochange/pull/235) _Introduced in:_ [`5a7a4fe`](https://github.com/monochange/monochange/commit/5a7a4fed84603f51dd5d152d11e739f30dea2b64) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2) _Closed issues:_ [#230](https://github.com/monochange/monochange/issues/230)
|
|
806
|
+
|
|
807
|
+
#### Add Dart SDK constraint and dependency hygiene lint rules.
|
|
808
|
+
|
|
809
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #237](https://github.com/monochange/monochange/pull/237) _Introduced in:_ [`1192d15`](https://github.com/monochange/monochange/commit/1192d1576156c89804373f1ea6b69f94d887f255) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2) _Closed issues:_ [#232](https://github.com/monochange/monochange/issues/232)
|
|
810
|
+
|
|
811
|
+
#### centralize manifest lint configuration and split lint suites by ecosystem
|
|
812
|
+
|
|
813
|
+
monochange now configures manifest linting from a top-level `[lints]` section instead of per-ecosystem `[ecosystems.<name>.lints]` tables, and the runtime engine now loads lint suites from ecosystem crates instead of hard-coding Cargo and npm behavior in `monochange_lint`.
|
|
814
|
+
|
|
815
|
+
**Before (`monochange.toml`):**
|
|
816
|
+
|
|
817
|
+
```toml
|
|
818
|
+
[ecosystems.cargo.lints]
|
|
819
|
+
"cargo/internal-dependency-workspace" = "error"
|
|
820
|
+
|
|
821
|
+
[ecosystems.npm.lints]
|
|
822
|
+
"npm/workspace-protocol" = "error"
|
|
823
|
+
```
|
|
824
|
+
|
|
825
|
+
**After:**
|
|
826
|
+
|
|
827
|
+
```toml
|
|
828
|
+
[lints]
|
|
829
|
+
use = ["cargo/recommended", "npm/recommended"]
|
|
830
|
+
|
|
831
|
+
[lints.rules]
|
|
832
|
+
"cargo/internal-dependency-workspace" = "error"
|
|
833
|
+
"npm/workspace-protocol" = "error"
|
|
834
|
+
|
|
835
|
+
[[lints.scopes]]
|
|
836
|
+
name = "published cargo packages"
|
|
837
|
+
match = { ecosystems = ["cargo"], managed = true, publishable = true }
|
|
838
|
+
rules = { "cargo/required-package-fields" = "error" }
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
**New CLI surface:**
|
|
842
|
+
|
|
843
|
+
```bash
|
|
844
|
+
# before
|
|
845
|
+
mc check --ecosystem cargo --format json
|
|
846
|
+
|
|
847
|
+
# after
|
|
848
|
+
mc check --ecosystem cargo --only cargo/internal-dependency-workspace --format json
|
|
849
|
+
mc lint list
|
|
850
|
+
mc lint explain cargo/internal-dependency-workspace
|
|
851
|
+
mc lint new cargo/no-path-dependencies
|
|
852
|
+
```
|
|
853
|
+
|
|
854
|
+
**Library-facing changes:**
|
|
855
|
+
|
|
856
|
+
```rust
|
|
857
|
+
// before
|
|
858
|
+
let configuration = load_workspace_configuration(root)?;
|
|
859
|
+
let cargo_rules = configuration.cargo.lints.clone();
|
|
860
|
+
|
|
861
|
+
// after
|
|
862
|
+
let configuration = load_workspace_configuration(root)?;
|
|
863
|
+
let lint_settings = configuration.lints.clone();
|
|
864
|
+
```
|
|
865
|
+
|
|
866
|
+
```rust
|
|
867
|
+
// new shared contracts in monochange_core::lint
|
|
868
|
+
pub trait LintSuite: Send + Sync {
|
|
869
|
+
fn suite_id(&self) -> &'static str;
|
|
870
|
+
fn rules(&self) -> Vec<Box<dyn LintRuleRunner>>;
|
|
871
|
+
fn presets(&self) -> Vec<LintPreset>;
|
|
872
|
+
fn collect_targets(
|
|
873
|
+
&self,
|
|
874
|
+
workspace_root: &Path,
|
|
875
|
+
configuration: &WorkspaceConfiguration,
|
|
876
|
+
) -> MonochangeResult<Vec<LintTarget>>;
|
|
877
|
+
}
|
|
878
|
+
```
|
|
879
|
+
|
|
880
|
+
This release also adds two new support crates:
|
|
881
|
+
|
|
882
|
+
- `monochange_linting` — authoring helpers for lint-rule metadata and suite construction
|
|
883
|
+
- `monochange_lint_testing` — snapshot-friendly helpers for lint reports and autofix output
|
|
884
|
+
|
|
885
|
+
The Cargo and npm suites now live in `monochange_cargo::lints` and `monochange_npm::lints`, so ecosystem-specific parsing and rule behavior stay with their ecosystem adapters.
|
|
886
|
+
|
|
887
|
+
> _Owner:_ [@ifiokjr](https://github.com/ifiokjr) _Review:_ [PR #228](https://github.com/monochange/monochange/pull/228) _Introduced in:_ [`94f06a0`](https://github.com/monochange/monochange/commit/94f06a057150d26e5f330e2e49a08f71eb12fc92) _Last updated in:_ [`2bd10ab`](https://github.com/monochange/monochange/commit/2bd10abcd34e0eca9f75cebdfafdf6347dc84ca2)
|