happyskills 0.52.0 → 0.52.1
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/CHANGELOG.md +6 -0
- package/package.json +1 -1
- package/src/commands/release.js +6 -3
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.52.1] - 2026-05-25
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **`release` now validates kits against the kit contract (README.md) instead of the skill contract** (`cli/src/commands/release.js`). `run_validation()` was calling `validate_skill_md(dir, basename, null)` — hard-coding the third argument to `null` instead of reading the `type` from `skill.json`. For kit repos this meant the skill branch fired even though the kit had no `SKILL.md`, so `release` failed with `"SKILL.md not found"` immediately after CLI v0.52.0 moved kits to `README.md`. Discovered while migrating `nicolasdao/_kit-doc-essentials` from the old to the new format. Now reads `manifest.type` from `skill.json` first and passes it through to both `validate_skill_md` and `validate_cross`. The standalone `validate` command was unaffected — it was already wiring `skill_type` through correctly.
|
|
15
|
+
|
|
10
16
|
## [0.52.0] - 2026-05-25
|
|
11
17
|
|
|
12
18
|
### Added
|
package/package.json
CHANGED
package/src/commands/release.js
CHANGED
|
@@ -122,11 +122,14 @@ const compute_bump = (base_version, bump) => {
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
const run_validation = (dir, skill_name) => catch_errors('Validation failed', async () => {
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
// Read skill.json first so we know whether to validate against the skill
|
|
126
|
+
// (SKILL.md + frontmatter) or kit (README.md, no frontmatter) contract.
|
|
127
127
|
const [json_err, json_data] = await validate_skill_json(dir)
|
|
128
128
|
if (json_err) throw json_err
|
|
129
|
-
const
|
|
129
|
+
const skill_type = json_data.manifest?.type
|
|
130
|
+
const [md_err, md_data] = await validate_skill_md(dir, path.basename(dir), skill_type)
|
|
131
|
+
if (md_err) throw md_err
|
|
132
|
+
const [cross_err, cross_results] = await validate_cross(dir, md_data.frontmatter, json_data.manifest, md_data.content, skill_type)
|
|
130
133
|
if (cross_err) throw cross_err
|
|
131
134
|
const [marker_err, marker_results] = await validate_no_conflict_markers(dir)
|
|
132
135
|
if (marker_err) throw marker_err
|