publisher-release
Cut a Malloy Publisher release, and write the RELEASE_NOTES.md entries a release ships.
Skill by malloydata
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/malloydata-publisher-release
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops, writing, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/publisher-release
What's inside
- Skill name
publisher-release- Description
- Cut a Malloy Publisher release, and write the RELEASE_NOTES.md entries a release ships. Use when asked to release, cut a release, ship a version, or publish Publisher to npm/Docker — and when a change needs a release note, or you are deciding whether it does and what version to stamp on it.
- License
- MIT
- Instructions
- 526 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Agent Skills spec issues
- body: 526 lines (spec recommends under 500)
- files: referenced but missing: scripts/independent-version.mjs, scripts/publish-packages.sh
Files (1)
- SKILL.md
SKILL.md (first lines)
<!-- Copyright (c) Credible Data Inc. SPDX-License-Identifier: MIT --> # Releasing Publisher A release is one `workflow_dispatch` of `Release (NPM + Docker)` (`.github/workflows/release.yml`), followed by one pull request: the `release/v<version>` branch the release published from, merged back into `main`. That branch already carries the version bump and the stamped release notes, so **you never create a branch or stamp anything by hand**. You open the PR from the branch the workflow pushed. Read `.github/workflows/CONTEXT.md` (path from the repo root) before acting. It carries the publishing rules that are not guessable from the YAML, and it is the authority when this file and it disagree. ## Release notes: when to write one, and what number goes on it `RELEASE_NOTES.md` is not written at release time. **The PR that changes the behaviour writes the note**, in the same PR, as a `## [Unreleased]` section — which is the only way it gets written by someone who knows what changed. The release then carries it to users on its own: `prepare` stamps every `[Unreleased]` heading with the release's version on the release branch, and `gh-release` puts those sections on the release page. Writing the section is the whole job; merging the release branch back is the one thing the release cannot do for itself. ### Does this change need one? `gh-release` already attaches an auto-generated "What's Changed" list of merged PRs. **That list is sufficient for a routine patch**, so a note is not a per-PR chore. Write one when the PR list would leave a reader unable to act — when a user or operator has to *do* something, or would otherwise draw a wrong conclusion from an unchanged-looking system: - A **breaking change**, or anything needing a migration step. Mark the heading `(BREAKING)`. - A **new or removed API field, endpoint, or response shape** — anything that breaks a strict generated client, or that consumers should move onto. - A **deprecation**: what still works, for how long, and what to move to. - **Changed meaning of an existing signal** — a metric label, a counter, an error code. A value that keeps its name and changes its basis is the case most worth writing, because nothing else will surface it. - **A silent failure that is now visible**, or a bug whose symptom users have been living with. Say who was affected and how to tell. - A **new capability with a cost or a limit** worth knowing before adopting it. Skip it for refactors, tests, docs, CI, and internal changes with no observable effect. When unsure, ask whether a reader upgrading blind could be surprised. If not, the PR list covers it. Write it for the person upgrading: what changed, what breaks, what to do. The existing sections are the house style — prose, not bullets-only, and specific about the failure mode. ### What number goes on it Three states, in order: 1. **`## [Unreleased] — <what changed>`** while the change sits on `main` unreleased. This is what an authoring PR writes. Always. 2. **Amend that same section in place** if a follow-up PR lands before the release and changes the same behaviour. Do not add a second section — the two ship together as one story, and the reader has never seen the first version. #1024 (pre-aggregation off by default) and #1030 (on by default) are one section for exactly this reason. 3. **`## [<version>] — <what changed>`** once a release has shipped it. **CI writes this** — `prepare` stamps it on `release/v<version>`, and it reaches `main` when that branch's PR merges (step 6). You do not stamp by hand, and you do not guess the number in advance. Once a section is stamped, it is history and does not get rewritten. A follow-up that changes that behaviour opens a **new** `[Unreleased]` section referencing the shipped version by number, the way the build-failures section names 0.0.245 and 0.0.246 when describing what 0.0.247 changed. Never write a version number into a note yourself. Release numbers are assigned at dispatch time and a release can fail. A failed release's stamp is harmless only because its branch is never merged; the next dispatch cuts a new branch from `main`, which still reads `[Unreleased]`. ## The versioning policy **`0.MINOR.PATCH` for every published package, while pre-1.0.** It is the policy, not yet the state: `skills` follows it, `sdk`/`app`/`server` are still on `0.0.x` until `0.2.0` is cut, `create-malloy-package` versions on its own `0.0.x` line, computed at release time, and the Python client declares `0.1.0` — sharing `0.1.x` with `skills`. Nothing enforces the *shape* of the number for any of them — skills and create-malloy-package resolve their next version from npm `latest` at release time, and moving either onto a new minor line is a judgement call made with an explicit `-f version=`, not something CI demands. - **MINOR = a breaking change. PATCH = everything else.** A breaking change is one that turns a package which loaded or built yesterday into one that does not: a refused annotation, a refused `#@ persist` combination, a load-time failure on syntax that previously passed. It also covers a removed endpoint or response field, like 0.0.242's `/pages` → `/data-apps` rename. - **This is what makes a range usable.** `^0.0.250` resolves to `>=0.0.250 <0.0.251` — exactly one version — and `~0.0.250` to `>=0.0.250 <0.1.0`, a range whose upper half does not exist. So on `0.0.x` no consumer can say "patches yes, breaking no". `^0.2.0` resolves to `>=0.2.0 <0.3.0`, which they can. (On any `0.x` line `^` and `~` are identical — both stop at the next minor.) - **No `1.x`.** Publisher is preview, so a major is a deliberate decision made with an explicit `-f version=`; there is no `major` option on the dispatch. If it ever happens, note `@malloy-publisher/sdk@1.0.1` **is** published (an old off-line publish `latest` moved off long ago) while `1.0.0` is free, and `app` and `server` have no `1.x` at all — so a 1.x line has to start at `1.0.0` and skip `1.0.1`, or start at `1.0.2`. - **The `sdk`/`app`/`server` train has NOT moved yet.** Its `latest` is still `0.0.250` and the policy takes effect at its first minor release, intended to be **`0.2.0`** — not `0.1.0`, because `skills` already occupies `0.1.x` and two trains sharing a minor invites reading one for the other. Until that release is cut, a default dispatch derives `0.0.251`, `0.0.252`, … and that is correct. **Do not "correct" it with an explicit version.** `skills` is already on `0.1.x` and already follows the policy. Read a release note's own claims rather than its heading when deciding. A section can be titled `(BREAKING)` while its bullets say *"this cannot affect an existing
From malloydata/publisher, MIT.
More from malloydata/publisher
- 0.784score
fix-scan-finding
malloydata
Fix a CRITICAL Trivy finding that is failing CI in this repo (a vulnerability, misconfiguration, or secret from security-scan.yml or image-scan.yml), or add…
SkillAFreshness: A★ 118Claude Code +9 - 0.784score
eval-answer
malloydata
Score one analytical answer against a verified golden, and score which of the entities the golden depends on retrieval delivered to the answerer.
SkillAFreshness: A★ 118Claude Code +9 - 0.784score
malloy-powerbi-review
malloydata
Move a Power BI semantic model (TMDL, PBIP, or .pbix) onto Malloy - read their model, transpile its DAX, and prove the numbers match.
SkillAFreshness: A★ 118Claude Code +9 - 0.784score
eval-improve
malloydata
Make the smallest safe edit that closes a diagnosed gap the model repo owns: a Malloy model edit, or a package skill under skills/.
SkillAFreshness: A★ 118Claude Code +9 - 0.784score
eval-import
malloydata
Turn a list of questions into an eval set, whatever shape it arrived in: a JSONL a customer sent, a CSV, a spreadsheet export, a markdown doc, an email…
SkillAFreshness: A★ 118Claude Code +9 - 0.784score
eval-diagnose
malloydata
Diagnose why a scored answer failed and who owns the fix, then cluster the failures by shared root cause.
SkillAFreshness: A★ 118Claude Code +9 - 0.779score
malloy-document
malloydata
Add documentation with #(doc) tags to Malloy models so fields and sources are described in plain language.
SkillAFreshness: A★ 118Claude Code +9 - 0.779score
malloy-analysis-report
malloydata
Combine validated Malloy queries into a report (a linear report, read top to bottom).
SkillAFreshness: A★ 118Claude Code +9 - 0.779score
malloy-getting-started
malloydata
First steps for using a Malloy Publisher deployment through its MCP tools.
SkillAFreshness: A★ 118Claude Code +9 - 0.779score
eval-judge
malloydata
Decide whether ONE answer matches its golden, and say whether you believe the golden.
SkillAFreshness: A★ 118Claude Code +9 - 0.779score
malloy-review
malloydata
Malloy semantic-model code review.
SkillAFreshness: A★ 118Claude Code +9 - 0.779score
eval-report
malloydata
Write the summary a person reads after an evaluation run: what ran, what it scored, which failures were the MODEL and which were the EVAL itself (out of…
SkillAFreshness: A★ 118Claude Code +9
Signals
- Stars
- 118
- Forks
- 31
- Open issues
- 106
- Last commit (this folder)
- Oct 8, 2026 (20 days ago)
- Last release
- Oct 18, 2026 (10 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/malloydata/publisher
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from malloydata
- 0.784score
eval-import
malloydata
Turn a list of questions into an eval set, whatever shape it arrived in: a JSONL a customer sent, a CSV, a spreadsheet export, a markdown doc, an email…
SkillAFreshness: A★ 118Claude Code +9 - 0.784score
eval-answer
malloydata
Score one analytical answer against a verified golden, and score which of the entities the golden depends on retrieval delivered to the answerer.
SkillAFreshness: A★ 118Claude Code +9 - 0.784score
eval-diagnose
malloydata
Diagnose why a scored answer failed and who owns the fix, then cluster the failures by shared root cause.
SkillAFreshness: A★ 118Claude Code +9 - 0.784score
fix-scan-finding
malloydata
Fix a CRITICAL Trivy finding that is failing CI in this repo (a vulnerability, misconfiguration, or secret from security-scan.yml or image-scan.yml), or add…
SkillAFreshness: A★ 118Claude Code +9 - 0.784score
eval-improve
malloydata
Make the smallest safe edit that closes a diagnosed gap the model repo owns: a Malloy model edit, or a package skill under skills/.
SkillAFreshness: A★ 118Claude Code +9 - 0.784score
malloy-powerbi-review
malloydata
Move a Power BI semantic model (TMDL, PBIP, or .pbix) onto Malloy - read their model, transpile its DAX, and prove the numbers match.
SkillAFreshness: A★ 118Claude Code +9
Cite this page
publisher-release skill. Agent Mart. https://agentmart.dev/skills/malloydata-publisher-release (last updated 2026-10-24)