release-skill 0.1.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.
Files changed (125) hide show
  1. package/.agents/plugins/marketplace.json +23 -0
  2. package/.claude-plugin/marketplace.json +16 -0
  3. package/.claude-plugin/plugin.json +10 -0
  4. package/.codex-plugin/plugin.json +26 -0
  5. package/CHANGELOG.md +68 -0
  6. package/CODE_OF_CONDUCT.md +76 -0
  7. package/CONTRIBUTING.md +49 -0
  8. package/INSTALL.md +182 -0
  9. package/LICENSE +21 -0
  10. package/NOTICE +25 -0
  11. package/README.md +501 -0
  12. package/README.zh-CN.md +463 -0
  13. package/SECURITY.md +48 -0
  14. package/adapters/claude/.claude-plugin/marketplace.json +16 -0
  15. package/adapters/claude/.claude-plugin/plugin.json +10 -0
  16. package/adapters/claude/skills/release-assess/SKILL.md +52 -0
  17. package/adapters/claude/skills/release-help/SKILL.md +60 -0
  18. package/adapters/claude/skills/release-prepare/SKILL.md +71 -0
  19. package/adapters/claude/skills/release-publish/SKILL.md +55 -0
  20. package/adapters/claude/skills/release-reconcile/SKILL.md +73 -0
  21. package/adapters/claude/skills/release-verify/SKILL.md +70 -0
  22. package/adapters/codex/.codex-plugin/plugin.json +26 -0
  23. package/adapters/codex/skills/release-assess/SKILL.md +52 -0
  24. package/adapters/codex/skills/release-help/SKILL.md +60 -0
  25. package/adapters/codex/skills/release-prepare/SKILL.md +71 -0
  26. package/adapters/codex/skills/release-publish/SKILL.md +55 -0
  27. package/adapters/codex/skills/release-reconcile/SKILL.md +73 -0
  28. package/adapters/codex/skills/release-verify/SKILL.md +70 -0
  29. package/bin/release-skill.mjs +743 -0
  30. package/native/safe-write/binding.gyp +40 -0
  31. package/native/safe-write/prebuilds.json +4 -0
  32. package/native/safe-write/src/safe_write.cc +2023 -0
  33. package/package.json +75 -0
  34. package/references/.render-manifest.json +33 -0
  35. package/references/00-target-state.md +124 -0
  36. package/references/01-state-machine.md +155 -0
  37. package/references/02-project-config.md +217 -0
  38. package/references/03-readme-quality.md +136 -0
  39. package/references/04-supply-chain.md +147 -0
  40. package/references/05-evidence-and-errors.md +164 -0
  41. package/references/06-adapter-contract.md +178 -0
  42. package/schemas/.render-manifest.json +37 -0
  43. package/schemas/approval-record.schema.json +115 -0
  44. package/schemas/artifact-lock.schema.json +111 -0
  45. package/schemas/artifact-plan.schema.json +52 -0
  46. package/schemas/artifact-policy.schema.json +76 -0
  47. package/schemas/evidence-event.schema.json +89 -0
  48. package/schemas/release-plan.schema.json +369 -0
  49. package/schemas/release-project.schema.json +359 -0
  50. package/schemas/release-run.schema.json +195 -0
  51. package/skills/release-assess/SKILL.md +52 -0
  52. package/skills/release-help/SKILL.md +60 -0
  53. package/skills/release-prepare/SKILL.md +71 -0
  54. package/skills/release-publish/SKILL.md +55 -0
  55. package/skills/release-reconcile/SKILL.md +73 -0
  56. package/skills/release-verify/SKILL.md +70 -0
  57. package/skills-src/release-assess/SKILL.md +52 -0
  58. package/skills-src/release-help/SKILL.md +60 -0
  59. package/skills-src/release-prepare/SKILL.md +71 -0
  60. package/skills-src/release-publish/SKILL.md +55 -0
  61. package/skills-src/release-reconcile/SKILL.md +73 -0
  62. package/skills-src/release-verify/SKILL.md +70 -0
  63. package/src/adapters/contract.mjs +214 -0
  64. package/src/adapters/git-github.mjs +214 -0
  65. package/src/adapters/npm.mjs +947 -0
  66. package/src/adapters/plugin-marketplace.mjs +1365 -0
  67. package/src/adapters/push-snapshot.mjs +216 -0
  68. package/src/artifacts/adoption.mjs +743 -0
  69. package/src/artifacts/artifact-plan.mjs +162 -0
  70. package/src/artifacts/entry.mjs +240 -0
  71. package/src/artifacts/git-authority.mjs +637 -0
  72. package/src/artifacts/graph.mjs +189 -0
  73. package/src/artifacts/inspect.mjs +520 -0
  74. package/src/artifacts/inventory.mjs +192 -0
  75. package/src/artifacts/merge/binary.mjs +77 -0
  76. package/src/artifacts/merge/entry-merge.mjs +228 -0
  77. package/src/artifacts/merge/json.mjs +641 -0
  78. package/src/artifacts/merge/markdown.mjs +246 -0
  79. package/src/artifacts/merge/regions.mjs +156 -0
  80. package/src/artifacts/merge/text.mjs +432 -0
  81. package/src/artifacts/merge/tree.mjs +202 -0
  82. package/src/artifacts/merge/yaml.mjs +669 -0
  83. package/src/artifacts/path-key.mjs +94 -0
  84. package/src/artifacts/policy.mjs +319 -0
  85. package/src/artifacts/producer-registry.mjs +439 -0
  86. package/src/artifacts/project-lock.mjs +732 -0
  87. package/src/artifacts/resolution.mjs +658 -0
  88. package/src/artifacts/safe-fs-backend-internal.mjs +680 -0
  89. package/src/artifacts/safe-fs.mjs +72 -0
  90. package/src/artifacts/state.mjs +495 -0
  91. package/src/artifacts/transaction-journal.mjs +983 -0
  92. package/src/artifacts/transaction.mjs +1361 -0
  93. package/src/commands/approve.mjs +280 -0
  94. package/src/commands/artifacts.mjs +627 -0
  95. package/src/commands/assess.mjs +838 -0
  96. package/src/commands/prepare.mjs +1377 -0
  97. package/src/commands/publish.mjs +883 -0
  98. package/src/commands/reconcile.mjs +1255 -0
  99. package/src/commands/verify.mjs +915 -0
  100. package/src/core/approval.mjs +332 -0
  101. package/src/core/baseline.mjs +272 -0
  102. package/src/core/blackbox-hard-gates.mjs +142 -0
  103. package/src/core/config.mjs +448 -0
  104. package/src/core/digest.mjs +90 -0
  105. package/src/core/errors.mjs +113 -0
  106. package/src/core/evidence.mjs +167 -0
  107. package/src/core/hooks.mjs +241 -0
  108. package/src/core/node-version.mjs +64 -0
  109. package/src/core/plan.mjs +735 -0
  110. package/src/core/previous-public-baseline.mjs +204 -0
  111. package/src/core/run.mjs +681 -0
  112. package/src/core/state-machine.mjs +76 -0
  113. package/src/core/version-consistency.mjs +111 -0
  114. package/src/producers/build-adapters.mjs +231 -0
  115. package/src/producers/render-public-assets.mjs +152 -0
  116. package/src/producers/sync-skills.mjs +96 -0
  117. package/src/readme/contract.mjs +297 -0
  118. package/src/readme/examples.mjs +288 -0
  119. package/src/readme/parity.mjs +122 -0
  120. package/src/snapshot/export.mjs +99 -0
  121. package/src/snapshot/frozen.mjs +401 -0
  122. package/src/snapshot/manifest.mjs +207 -0
  123. package/src/snapshot/public-map.mjs +1459 -0
  124. package/src/snapshot/public-path.mjs +110 -0
  125. package/src/snapshot/scan.mjs +419 -0
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "release-skill",
3
+ "interface": {
4
+ "displayName": "Release Skill",
5
+ "shortDescription": "Safe preparation and frozen GitHub/npm production publishing",
6
+ "category": "DevOps"
7
+ },
8
+ "plugins": [
9
+ {
10
+ "name": "release-skill",
11
+ "source": {
12
+ "source": "local",
13
+ "path": "./"
14
+ },
15
+ "policy": {
16
+ "installation": "AVAILABLE",
17
+ "authentication": "ON_INSTALL"
18
+ },
19
+ "category": "DevOps",
20
+ "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification"
21
+ }
22
+ ]
23
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "release-skill",
3
+ "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
4
+ "owner": {
5
+ "name": "mzdbxqh",
6
+ "url": "https://github.com/mzdbxqh"
7
+ },
8
+ "plugins": [
9
+ {
10
+ "name": "release-skill",
11
+ "source": "./",
12
+ "version": "0.1.1",
13
+ "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification"
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "release-skill",
3
+ "version": "0.1.1",
4
+ "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
+ "author": {
6
+ "name": "release-skill contributors"
7
+ },
8
+ "license": "MIT",
9
+ "skills": "./skills/"
10
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "release-skill",
3
+ "version": "0.1.1",
4
+ "description": "Safe preparation and frozen GitHub/npm production publishing with full happy end verification",
5
+ "author": {
6
+ "name": "release-skill contributors"
7
+ },
8
+ "license": "MIT",
9
+ "skills": "./skills/",
10
+ "interface": {
11
+ "displayName": "Release Skill",
12
+ "shortDescription": "Safe preparation and frozen GitHub/npm publishing",
13
+ "longDescription": "Prepares byte-faithful public snapshots without rewriting project source files and publishes approved frozen GitHub/npm artifacts. Full happy end verification confirms consumer installation from frozen Git ref.",
14
+ "developerName": "release-skill",
15
+ "category": "DevOps",
16
+ "capabilities": [
17
+ "Write",
18
+ "Interactive"
19
+ ],
20
+ "defaultPrompt": [
21
+ "Assess this project for release readiness.",
22
+ "Prepare a release plan for version 0.1.1.",
23
+ "Help me understand the release workflow."
24
+ ]
25
+ }
26
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,68 @@
1
+ # Changelog
2
+
3
+ All notable changes to the `release-skill` plugin will be documented in this
4
+ file. The format is based on [Keep a Changelog](https://keepachangelog.com/).
5
+
6
+ ## [0.1.1] - 2026-07-18
7
+
8
+ ### Fixed
9
+
10
+ - **Stable npm byte handoff on macOS and Linux**: production publishing no
11
+ longer passes `/dev/fd/*` or a mutable named path to npm. The adapter opens
12
+ the frozen tarball with `O_NOFOLLOW`, verifies file identity, SHA-256,
13
+ SHA-512 SRI, and embedded package name/version, then gives the same in-memory
14
+ `Buffer` to `libnpmpublish`.
15
+ - **Registry and publisher authority**: plans freeze an explicit HTTPS npm
16
+ registry and publisher. Preflight, token-specific `whoami`, publish,
17
+ observation, and consumer install all use that registry; bearer credentials
18
+ are sent with `forceAuth` and never fall back to ambient identity.
19
+ - **Pre-write tarball identity gate**: prepare and publish global preflight
20
+ reject a tarball whose manifest name/version or independently computed
21
+ integrity differs from the frozen unit and distribution, before any Git or
22
+ npm external action executes.
23
+ - **Digest-addressed plan and approval history**: production commands consume
24
+ `plans/<planDigest>.json` and
25
+ `approvals/<planDigest>/<approvalDigest>.json`. Renewing an expired approval
26
+ preserves prior approval bytes, so a long-lived PARTIAL recovery remains
27
+ auditable without reusing expired authority.
28
+ - **Reconcile succeeded checkpoint fail-closed**: when re-observing a
29
+ succeeded checkpoint, if the remote returns empty/error/uncertain state,
30
+ reconcile now fails closed with REMOTE_CONFLICT instead of adding to the
31
+ retry list. This prevents blind re-execution of already-succeeded actions.
32
+ - **Production README blocking findings**: missing required markers and
33
+ readability requirements (install command, minimal example, failure
34
+ diagnosis) in production prepare are now blocking findings (GATE_FAILED),
35
+ not warnings.
36
+
37
+ ## [0.1.0] - 2026-07-15
38
+
39
+ ### Added
40
+
41
+ - **release-help** skill: discoverable entry point with environment checks,
42
+ capability overview, minimal examples, read-only diagnosis, dry-run
43
+ guidance, and failure triage.
44
+ - **release-assess** skill: read-only project topology identification and
45
+ gap evaluation for documentation, configuration, supply chain, and
46
+ release workflow.
47
+ - **release-prepare** skill: gate execution and release plan freezing
48
+ without any external writes.
49
+ - **release-publish** skill: external release checkpoint execution from
50
+ an approved, non-expired release plan.
51
+ - **release-reconcile** skill: remote state querying, partial success
52
+ handling, safe retries, and post-publish verification.
53
+ - Deterministic release state machine:
54
+ DISCOVERED -> ASSESSED -> PREPARED -> APPROVED -> PUBLISHING -> PUBLISHED -> VERIFIED.
55
+ - Exception states: NEEDS_INPUT, BLOCKED, PARTIAL.
56
+ - Adapter layer for Git/GitHub, npm, Claude Code marketplace, and Codex
57
+ marketplace.
58
+ - Project declaration via `.release-skill/project.yaml` configuration.
59
+ - Hook execution model with executable/argument arrays, relative cwd,
60
+ timeout, and environment allowlist.
61
+ - Structured evidence output in JSON/JSONL format with per-step
62
+ checkpointing.
63
+ - Read-only assess and prepare phases; publish requires explicit approval
64
+ bound to a frozen release plan digest.
65
+ - 24-hour approval expiry with automatic invalidation on plan, tree hash,
66
+ target version, or remote conflict changes.
67
+ - Reconcile with idempotent skip of already-consistent steps and safe
68
+ retry of incomplete actions.
@@ -0,0 +1,76 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in
6
+ our community a harassment-free experience for everyone, regardless of age,
7
+ body size, visible or invisible disability, ethnicity, sex characteristics,
8
+ gender identity and expression, level of experience, education,
9
+ socio-economic status, nationality, personal appearance, race, caste, color,
10
+ religion, or sexual identity and orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Our Standards
16
+
17
+ Examples of behavior that contributes to a positive environment:
18
+
19
+ - Using welcoming and inclusive language
20
+ - Being respectful of differing viewpoints and experiences
21
+ - Giving and gracefully accepting constructive feedback
22
+ - Accepting responsibility and apologizing to those affected by our
23
+ mistakes, and learning from the experience
24
+ - Focusing on what is best not just for us as individuals, but for the
25
+ overall community
26
+
27
+ Examples of unacceptable behavior:
28
+
29
+ - The use of sexualized language or imagery, and sexual attention or
30
+ advances of any kind
31
+ - Trolling, insulting or derogatory comments, and personal or political
32
+ attacks
33
+ - Public or private harassment
34
+ - Publishing others' private information, such as a physical or email
35
+ address, without their explicit permission
36
+ - Other conduct which could reasonably be considered inappropriate in a
37
+ professional setting
38
+
39
+ ## Enforcement Responsibilities
40
+
41
+ Community leaders are responsible for clarifying and enforcing our standards
42
+ of acceptable behavior and will take appropriate and fair corrective action
43
+ in response to any behavior that they deem inappropriate, threatening,
44
+ offensive, or harmful.
45
+
46
+ Community leaders have the right and responsibility to remove, edit, or
47
+ reject comments, commits, code, wiki edits, issues, and other contributions
48
+ that are not aligned to this Code of Conduct, and will communicate reasons
49
+ for moderation decisions when appropriate.
50
+
51
+ ## Scope
52
+
53
+ This Code of Conduct applies within all community spaces, and also applies
54
+ when an individual is officially representing the community in public
55
+ spaces.
56
+
57
+ ## Enforcement
58
+
59
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
60
+ reported to the community leaders responsible for enforcement at the
61
+ project's GitHub repository.
62
+
63
+ All complaints will be reviewed and investigated promptly and fairly.
64
+
65
+ ## Attribution
66
+
67
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
68
+ version 2.1, available at
69
+ [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
70
+
71
+ Community Impact Guidelines were inspired by
72
+ [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
73
+
74
+ [homepage]: https://www.contributor-covenant.org
75
+ [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
76
+ [Mozilla CoC]: https://github.com/mozilla/diversity
@@ -0,0 +1,49 @@
1
+ # Contributing to release-skill
2
+
3
+ Thank you for your interest in contributing to release-skill.
4
+
5
+ ## Getting Started
6
+
7
+ 1. Fork and clone the repository.
8
+ 2. Install dependencies: `pnpm install`.
9
+ 3. Run tests: `pnpm test`.
10
+ 4. Run syntax validation: `pnpm build`.
11
+
12
+ ## Project Structure
13
+
14
+ - `skills-src/` - Skill definition source files (SKILL.md for each skill).
15
+ - `src/core/` - Deterministic release kernel (baseline, errors, evidence, hooks).
16
+ - `src/adapters/` - Registry adapters (Git/GitHub, npm, plugin marketplace).
17
+ - `bin/` - CLI entry point.
18
+ - `schemas/` - JSON Schema definitions for configuration and plans.
19
+ - `references/` - Rendered reference documentation.
20
+ - `test/` - Test suite.
21
+
22
+ ## Development Guidelines
23
+
24
+ - All code uses ESM (`.mjs` extension) on Node.js 22+.
25
+ - All `.mjs` files must pass `node --check` (syntax validation).
26
+ - Hooks must use executable/argument arrays, not shell strings.
27
+ - Never include absolute paths like `/Users/...` in code or documentation.
28
+ - Test your changes before submitting a pull request.
29
+
30
+ ## Pull Request Process
31
+
32
+ 1. Create a feature branch from `main`.
33
+ 2. Make your changes and ensure all tests pass.
34
+ 3. Write clear commit messages describing what changed and why.
35
+ 4. Open a pull request with a description of the change and any related
36
+ issue numbers.
37
+
38
+ ## Code of Conduct
39
+
40
+ Please read and follow our [Code of Conduct](CODE_OF_CONDUCT.md).
41
+
42
+ ## Reporting Issues
43
+
44
+ For non-security issues, please open a GitHub issue with:
45
+
46
+ - A clear description of the problem.
47
+ - Steps to reproduce.
48
+ - Expected vs. actual behavior.
49
+ - Your environment (Node.js version, OS).
package/INSTALL.md ADDED
@@ -0,0 +1,182 @@
1
+ # Installation Guide
2
+
3
+ ## Prerequisites
4
+
5
+ - Node.js 22.0.0 or later
6
+ - Git 2.30+
7
+
8
+ ## Install from npm (recommended)
9
+
10
+ This repository is currently preparing the v0.1.1 release. Use the npm path
11
+ only after `npm view release-skill version` returns `0.1.1` (or newer). Before
12
+ that publication is verified, use the source checkout instructions below.
13
+
14
+ ```bash
15
+ npm install -g release-skill
16
+ CLI=(release-skill)
17
+ ```
18
+
19
+ Or run directly without installing:
20
+
21
+ ```bash
22
+ npx release-skill help
23
+ ```
24
+
25
+ Verify:
26
+
27
+ ```bash
28
+ release-skill --version
29
+ release-skill help
30
+ ```
31
+
32
+ You should see the version number and the list of available commands.
33
+
34
+ ## Development Install (Local Checkout)
35
+
36
+ For development or when working from source:
37
+
38
+ ```bash
39
+ export RELEASE_SKILL_HOME=/absolute/path/to/release-skill
40
+ cd "$RELEASE_SKILL_HOME"
41
+ npm exec --yes pnpm@10.17.1 -- install --frozen-lockfile
42
+ ```
43
+
44
+ Then use the CLI via:
45
+
46
+ ```bash
47
+ CLI=(node "$RELEASE_SKILL_HOME/packages/release-skill/bin/release-skill.mjs")
48
+ "${CLI[@]}" help
49
+ ```
50
+
51
+ After `npm view release-skill version` confirms the supported version is
52
+ published and installed, the equivalent npm entry is `CLI=(release-skill)`.
53
+
54
+ ## First Run
55
+
56
+ The safest first command is always `help`. It runs entirely locally and
57
+ performs no writes. Use the `CLI` array selected by the npm or source-checkout
58
+ instructions above; do not mix the two entry paths in one run.
59
+
60
+ ```bash
61
+ "${CLI[@]}" help
62
+ ```
63
+
64
+ To check if your project is ready for release governance:
65
+
66
+ ```bash
67
+ "${CLI[@]}" assess --root /path/to/your/project --offline --json
68
+ ```
69
+
70
+ This command is read-only. It examines your project structure, configuration,
71
+ documentation, and supply chain, then outputs a gap report. Without an explicit
72
+ `--output`, `assess` writes no report file and never runs project hooks.
73
+
74
+ `prepare` is different: it writes release artifacts under the target project's
75
+ `.release-skill/` directory and may run configured hooks. Hooks are unsandboxed
76
+ arbitrary processes. They may write outside the project, access credentials,
77
+ use the network, or perform remote writes. Review the displayed executable,
78
+ arguments, and working directory before granting
79
+ `--acknowledge-hook-side-effects`.
80
+
81
+ For a Git repository, keep the human-owned project configuration while ignoring
82
+ generated authority and evidence:
83
+
84
+ ```gitignore
85
+ .release-skill/*
86
+ !.release-skill/project.yaml
87
+ ```
88
+
89
+ ## Project Configuration
90
+
91
+ Create `.release-skill/project.yaml` in your project root. Here is a minimal
92
+ example for a single-package project:
93
+
94
+ ```yaml
95
+ apiVersion: release-skill/v1
96
+ kind: ReleaseProject
97
+
98
+ project:
99
+ name: my-project
100
+ defaultBranch: main
101
+
102
+ releaseUnits:
103
+ - id: my-project
104
+ source: .
105
+ publicRepo: owner/my-project
106
+ version:
107
+ source: package.json
108
+ tagTemplate: v{version}
109
+ distributions:
110
+ - type: npm
111
+ package: my-project
112
+ access: public
113
+ provenance: false
114
+ tag: latest
115
+ registry: https://registry.npmjs.org
116
+ publisher: my-npm-username
117
+ publicFiles:
118
+ - from: README.md
119
+ to: README.md
120
+ mode: preserve
121
+ - from: package.json
122
+ to: package.json
123
+ mode: preserve
124
+ - from: LICENSE
125
+ to: LICENSE
126
+ mode: preserve
127
+ requiredPublicFiles: [README.md, package.json, LICENSE]
128
+ previousPublicBaseline:
129
+ mode: none # only after confirming that no previous public version exists
130
+ ```
131
+
132
+ ### Advanced: hooks (optional)
133
+
134
+ Hooks are optional and run arbitrary local processes. They require explicit
135
+ `--acknowledge-hook-side-effects` authorization when used with `prepare`.
136
+
137
+ ```yaml
138
+ hooks:
139
+ build:
140
+ command: [npm, run, build]
141
+ test:
142
+ command: [npm, test]
143
+ ```
144
+
145
+ See the [full README](README.md) for hook parameter constraints and safety
146
+ requirements.
147
+
148
+ ## Protect Human-Owned Content
149
+
150
+ README text, slogans, examples, layout, and other manually curated source files
151
+ remain authoritative. release-skill snapshots them according to each
152
+ `publicFiles` mapping; it does not regenerate or overwrite the source README.
153
+ After any manual edit, run `prepare` again and approve the new immutable plan.
154
+ Never edit a frozen snapshot or reuse an old approval to make later steps pass.
155
+
156
+ When an existing public copy has drifted, choose explicitly:
157
+
158
+ - **merge** — compare the actual remote content, merge accepted changes back
159
+ into the human-owned source, then bind `previousPublicBaseline` to that exact
160
+ immutable `repo`/`ref`/`commit` and prepare again;
161
+ - **adopt** — accept the remote copy as the new source of truth, first bring it
162
+ into the human-owned source, then update the same immutable baseline binding
163
+ and prepare again;
164
+ - **reject** — stop and investigate. Do not switch to `mode: none` to bypass a
165
+ drift or uniqueness check.
166
+
167
+ ## Next Steps
168
+
169
+ - Read the [full README](README.md) for the complete workflow guide.
170
+ - Run `"${CLI[@]}" assess --root <your-project> --offline` to evaluate your project's release readiness.
171
+ - Run `"${CLI[@]}" prepare --root <your-project> --offline` (release-skill pipeline writes
172
+ locally only; user-configured hooks may perform remote operations) to generate
173
+ a release plan.
174
+ - Before production, configure every unit's `previousPublicBaseline`. Use
175
+ `mode: bound` with the exact `repo`, `ref`, and `commit` for an existing
176
+ public version, then run `"${CLI[@]}" prepare --root <your-project> --online --production`.
177
+ The default observer proves only the ref-to-commit mapping; remote content is
178
+ not downloaded. Target branch/tag/Release/npm uniqueness is checked by the
179
+ publish global preflight before any execute.
180
+ - For production commands, use only the immutable `planPath` returned by
181
+ `prepare --json` and immutable `approvalPath` returned by `approve --json`.
182
+ Mutable latest aliases are for convenience and are not production authority.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 release-skill contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/NOTICE ADDED
@@ -0,0 +1,25 @@
1
+ # Notice
2
+
3
+ release-skill is an open-source project released under the MIT License.
4
+
5
+ ## Third-Party Dependencies
6
+
7
+ This project is built on Node.js and the npm ecosystem. See `package.json`
8
+ for the full list of dependencies.
9
+
10
+ ## Acknowledgments
11
+
12
+ The release governance patterns in this project draw on ideas from the
13
+ following open-source projects:
14
+
15
+ - [changesets/changesets](https://github.com/changesets/changesets) -
16
+ Change intent records and prepare/publish separation
17
+ - [googleapis/release-please](https://github.com/googleapis/release-please) -
18
+ Reviewable release plans
19
+ - [semantic-release/semantic-release](https://github.com/semantic-release/semantic-release) -
20
+ Idempotent publishing concepts
21
+ - [vercel-labs/skills](https://github.com/vercel-labs/skills) -
22
+ Explicit triggers, provenance, and post-publish releases
23
+
24
+ No code from these projects is copied or redistributed. Only design
25
+ inspiration is acknowledged.