Skip to content

Commit 78f5545

Browse files
committed
Publish the GitHub Action to the Marketplace and list it
Model the GitHub Actions channel as a push channel so it surfaces in the "Available on" strip on mdsmith.dev (the strip filters to mechanism: push) alongside the install picker and table: - Switch the channel to mechanism: push with registry github.com/marketplace, credential GITHUB_TOKEN, job release, and a Marketplace channel URL; drop unlisted and the install-table glob exclusion. The release job drafts a release that carries action.yml; publishing it adds/updates the Marketplace listing (one-time Developer Agreement acceptance required). - Name the action "mdsmith" for a clean Marketplace slug. - Add a marketplace-major-tag workflow that, on release publish, moves the major-version tag (v0) onto the release so uses: jeduden/mdsmith@v0 tracks the latest 0.x build. It pushes via a masked http.extraheader with persist-credentials: false, matching the benchmark-publish pattern. Regenerate channels.yaml and the catalogs; tighten one line of release.md prose so its push-channels table stays within the file-length budget. https://claude.ai/code/session_01TKgJTS4UcFPqtdwkxYzTUC
1 parent 7b77fb5 commit 78f5545

9 files changed

Lines changed: 96 additions & 31 deletions

File tree

.github/copilot-instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ row: "- [{summary}](../{filename})"
5454
- [Rebase, CI monitoring, and review comment resolution.](../docs/development/pr-fixup-workflow.md)
5555
- [The `jeduden/asdf-mdsmith` plugin installs the checksum-verified prebuilt binary; the short form awaits the asdf-plugins registry entry.](../docs/development/release-channels/asdf.md)
5656
- [A single-file `.flatpak` bundle built in CI from the x86_64 Linux release binary and attached to each GitHub release, installed by file with host filesystem access for the linter.](../docs/development/release-channels/flatpak.md)
57-
- [A composite action at the repository root downloads the checksum-verified release binary for the runner's OS and architecture, puts `mdsmith` on `PATH`, and runs the command in its `args` input; referenced as `uses: jeduden/mdsmith@<commit-sha>`.](../docs/development/release-channels/github-actions.md)
57+
- [A composite action at the repository root downloads the checksum-verified release binary for the runner's OS and architecture and puts `mdsmith` on `PATH`; published to the GitHub Marketplace and referenced as `uses: jeduden/mdsmith@v0`.](../docs/development/release-channels/github-actions.md)
5858
- [Per-platform mdsmith binaries plus the .vsix, the checksum file, and a Sigstore signature, attached to a tag-named release.](../docs/development/release-channels/github-releases.md)
5959
- [`go install` compiles mdsmith from the tagged module source with the host Go 1.25+ toolchain; no prebuilt binary is downloaded.](../docs/development/release-channels/go.md)
6060
- [The `jeduden/homebrew-mdsmith` tap installs the checksum-verified prebuilt binary for macOS or Linux on Intel or arm64.](../docs/development/release-channels/homebrew.md)
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Marketplace major tag
2+
3+
# When a release is published, move the major-version tag (e.g. v0) onto it,
4+
# so `uses: jeduden/mdsmith@v0` tracks the latest published release — the
5+
# convenience ref the GitHub Marketplace listing advertises. Pinning to a
6+
# commit SHA or a full release tag stays the hardened option; see
7+
# docs/development/release-channels/github-actions.md.
8+
#
9+
# The release workflow drafts the release; a maintainer publishes it, and that
10+
# manual publish (not a GITHUB_TOKEN action) is what fires this event.
11+
on:
12+
release:
13+
types: [published]
14+
15+
permissions:
16+
contents: read
17+
18+
jobs:
19+
major-tag:
20+
runs-on: ubuntu-latest
21+
permissions:
22+
contents: write
23+
steps:
24+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
25+
with:
26+
# Never persist the token in git config; the push below
27+
# authenticates via a masked http.extraheader instead.
28+
persist-credentials: false
29+
30+
- name: Move the major-version tag onto the published release
31+
shell: bash
32+
env:
33+
GH_TOKEN: ${{ github.token }}
34+
TAG: ${{ github.event.release.tag_name }}
35+
run: |
36+
set -euo pipefail
37+
# v0.41.0 -> v0; the major tag floats across the 0.x series.
38+
major="${TAG%%.*}"
39+
git config user.name "github-actions[bot]"
40+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
41+
git tag -f "$major"
42+
43+
# The push authenticates via a masked http.extraheader (checkout
44+
# ran with persist-credentials: false).
45+
auth_header=$(printf 'x-access-token:%s' "$GH_TOKEN" | base64 -w0)
46+
echo "::add-mask::$auth_header"
47+
git -c http.extraheader="AUTHORIZATION: basic $auth_header" \
48+
push -f origin "refs/tags/$major"

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ row: "- [{summary}]({filename})"
6060
- [Rebase, CI monitoring, and review comment resolution.](docs/development/pr-fixup-workflow.md)
6161
- [The `jeduden/asdf-mdsmith` plugin installs the checksum-verified prebuilt binary; the short form awaits the asdf-plugins registry entry.](docs/development/release-channels/asdf.md)
6262
- [A single-file `.flatpak` bundle built in CI from the x86_64 Linux release binary and attached to each GitHub release, installed by file with host filesystem access for the linter.](docs/development/release-channels/flatpak.md)
63-
- [A composite action at the repository root downloads the checksum-verified release binary for the runner's OS and architecture, puts `mdsmith` on `PATH`, and runs the command in its `args` input; referenced as `uses: jeduden/mdsmith@<commit-sha>`.](docs/development/release-channels/github-actions.md)
63+
- [A composite action at the repository root downloads the checksum-verified release binary for the runner's OS and architecture and puts `mdsmith` on `PATH`; published to the GitHub Marketplace and referenced as `uses: jeduden/mdsmith@v0`.](docs/development/release-channels/github-actions.md)
6464
- [Per-platform mdsmith binaries plus the .vsix, the checksum file, and a Sigstore signature, attached to a tag-named release.](docs/development/release-channels/github-releases.md)
6565
- [`go install` compiles mdsmith from the tagged module source with the host Go 1.25+ toolchain; no prebuilt binary is downloaded.](docs/development/release-channels/go.md)
6666
- [The `jeduden/homebrew-mdsmith` tap installs the checksum-verified prebuilt binary for macOS or Linux on Intel or arm64.](docs/development/release-channels/homebrew.md)

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ row: "- [{summary}]({filename})"
4646
- [Rebase, CI monitoring, and review comment resolution.](docs/development/pr-fixup-workflow.md)
4747
- [The `jeduden/asdf-mdsmith` plugin installs the checksum-verified prebuilt binary; the short form awaits the asdf-plugins registry entry.](docs/development/release-channels/asdf.md)
4848
- [A single-file `.flatpak` bundle built in CI from the x86_64 Linux release binary and attached to each GitHub release, installed by file with host filesystem access for the linter.](docs/development/release-channels/flatpak.md)
49-
- [A composite action at the repository root downloads the checksum-verified release binary for the runner's OS and architecture, puts `mdsmith` on `PATH`, and runs the command in its `args` input; referenced as `uses: jeduden/mdsmith@<commit-sha>`.](docs/development/release-channels/github-actions.md)
49+
- [A composite action at the repository root downloads the checksum-verified release binary for the runner's OS and architecture and puts `mdsmith` on `PATH`; published to the GitHub Marketplace and referenced as `uses: jeduden/mdsmith@v0`.](docs/development/release-channels/github-actions.md)
5050
- [Per-platform mdsmith binaries plus the .vsix, the checksum file, and a Sigstore signature, attached to a tag-named release.](docs/development/release-channels/github-releases.md)
5151
- [`go install` compiles mdsmith from the tagged module source with the host Go 1.25+ toolchain; no prebuilt binary is downloaded.](docs/development/release-channels/go.md)
5252
- [The `jeduden/homebrew-mdsmith` tap installs the checksum-verified prebuilt binary for macOS or Linux on Intel or arm64.](docs/development/release-channels/homebrew.md)

action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: mdsmith Markdown linter
1+
name: mdsmith
22
description: >-
33
Install the mdsmith Markdown linter from a checksum-verified GitHub release
44
binary for the runner's OS and architecture, put it on PATH, and optionally

docs/development/release-channels/github-actions.md

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,23 @@ title: GitHub Actions
33
summary: >-
44
A composite action at the repository root downloads the
55
checksum-verified release binary for the runner's OS and
6-
architecture, puts `mdsmith` on `PATH`, and runs the
7-
command in its `args` input; referenced as
8-
`uses: jeduden/mdsmith@<commit-sha>`.
9-
mechanism: pull
6+
architecture and puts `mdsmith` on `PATH`; published to
7+
the GitHub Marketplace and referenced as
8+
`uses: jeduden/mdsmith@v0`.
9+
mechanism: push
1010
artifact: cli
1111
command: "uses: jeduden/mdsmith@v0"
1212
audience: Linting Markdown inside GitHub Actions CI
1313
platforms: [linux, macos, windows]
14-
channelurl: https://github.com/jeduden/mdsmith
14+
registry: github.com/marketplace
15+
credential: GITHUB_TOKEN
16+
job: release
17+
channelurl: https://github.com/marketplace/actions/mdsmith
1518
weight: 15
16-
unlisted: true
1719
---
1820
# GitHub Actions
1921

20-
Release page: <https://github.com/jeduden/mdsmith>
22+
Release page: <https://github.com/marketplace/actions/mdsmith>
2123

2224
The repository root carries an `action.yml`, so a workflow
2325
step runs mdsmith with:
@@ -64,20 +66,23 @@ against the release `checksums.txt`. So the action and the
6466
binary it fetches are both pinned by digest, not by a
6567
movable name.
6668

67-
No released commit carries the action yet. Pin to a commit
68-
SHA from this branch, or from `main` once it merges, to use
69-
it today. After the next release, pin to that release's
70-
commit. The convenience tag `@v0` comes later: it must be
71-
created and moved onto a release that ships `action.yml`.
69+
The action publishes to the GitHub Marketplace through a
70+
release. The `release` job drafts a release at the tagged
71+
commit, which carries this `action.yml`. Publishing that
72+
draft adds or updates the Marketplace listing.
73+
74+
The first listing is a manual, one-time step. The
75+
maintainer accepts the Marketplace Developer Agreement and
76+
enables it on a release. A unique action `name` and
77+
`branding` are required; `action.yml` sets both.
78+
79+
A `marketplace-major-tag` workflow runs on each published
80+
release. It moves the `@v0` major tag onto that release, so
81+
`uses: jeduden/mdsmith@v0` tracks the latest 0.x build. The
82+
first release that ships this `action.yml` makes the listing
83+
and `@v0` resolve. Until then, pin to a commit SHA on
84+
`main`.
7285

7386
You can also skip the action entirely. Run the release
7487
binary in a `run:` step. That repeats by hand the download
7588
and verify steps the action automates.
76-
77-
Because no published tag installs the action yet, this
78-
channel sets `unlisted: true` in its frontmatter, so
79-
`sync-channels` keeps it out of the website install picker
80-
and the install-guide table excludes it by glob. The
81-
`action.yml` and this doc stay; only the user-facing
82-
listings wait for a release to carry the action. Drop both
83-
once `uses: jeduden/mdsmith@v0` resolves.

docs/development/release.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,11 @@ summary: >-
1212
---
1313
# Release Pipeline
1414

15-
`.github/workflows/release.yml` publishes mdsmith to
16-
every channel below. Release-time secrets travel as
17-
short-lived OIDC tokens. The remaining long-lived
18-
PATs are gated by the `release` GitHub environment.
19-
Each channel has its own file under
20-
`release-channels/`; the catalog re-renders on
15+
`.github/workflows/release.yml` publishes mdsmith to every
16+
channel below. Release-time secrets travel as short-lived
17+
OIDC tokens. The remaining long-lived PATs are gated by the
18+
`release` GitHub environment. Each channel has its own file
19+
under `release-channels/`; the catalog re-renders on
2120
`mdsmith fix`.
2221

2322
<?catalog
@@ -32,6 +31,7 @@ row: "| [{title}]({filename}) | <{channelurl}> | {credential} |"
3231
| Channel | Release page | Credential |
3332
| -------------------------------------------------------------------------- | --------------------------------------------------------------------- | ----------------------- |
3433
| [Flatpak](release-channels/flatpak.md) | <https://github.com/jeduden/mdsmith/releases> | GITHUB_TOKEN + OIDC |
34+
| [GitHub Actions](release-channels/github-actions.md) | <https://github.com/marketplace/actions/mdsmith> | GITHUB_TOKEN |
3535
| [GitHub Releases](release-channels/github-releases.md) | <https://github.com/jeduden/mdsmith/releases> | GITHUB_TOKEN + OIDC |
3636
| [npm](release-channels/npm.md) | <https://www.npmjs.com/package/@mdsmith/cli> | OIDC Trusted Publishing |
3737
| [Obsidian](release-channels/obsidian.md) | <https://github.com/jeduden/mdsmith/releases> | GITHUB_TOKEN + OIDC |

docs/guides/install.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ glob:
4343
- "../development/release-channels/*.md"
4444
- "!../development/release-channels/proto.md"
4545
- "!../development/release-channels/winget.md"
46-
- "!../development/release-channels/github-actions.md"
4746
where: 'artifact: "cli"'
4847
sort: numeric:weight
4948
header: |
@@ -65,6 +64,7 @@ row: "| {title} | `{command}` | {audience} |"
6564
| GitHub Releases | `curl -LO https://github.com/jeduden/mdsmith/releases/latest/download/mdsmith-<os>-<arch>` | Air-gapped hosts and direct binary control |
6665
| Scoop | `scoop install mdsmith` | Windows users with Scoop installed |
6766
| Flatpak | `curl -LO https://github.com/jeduden/mdsmith/releases/latest/download/mdsmith-x86_64.flatpak && flatpak install ./mdsmith-x86_64.flatpak` | Sandboxed Linux x86_64 desktops via Flatpak |
67+
| GitHub Actions | `uses: jeduden/mdsmith@v0` | Linting Markdown inside GitHub Actions CI |
6868
<?/catalog?>
6969

7070
A bare `mise use mdsmith@latest` needs a registry entry —

website/data/channels.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,3 +174,15 @@
174174
- editor
175175
url: https://github.com/jeduden/mdsmith/releases
176176
weight: 14
177+
- title: GitHub Actions
178+
summary: 'A composite action at the repository root downloads the checksum-verified release binary for the runner''s OS and architecture and puts `mdsmith` on `PATH`; published to the GitHub Marketplace and referenced as `uses: jeduden/mdsmith@v0`.'
179+
mechanism: push
180+
artifact: cli
181+
command: 'uses: jeduden/mdsmith@v0'
182+
audience: Linting Markdown inside GitHub Actions CI
183+
platforms:
184+
- linux
185+
- macos
186+
- windows
187+
url: https://github.com/marketplace/actions/mdsmith
188+
weight: 15

0 commit comments

Comments
 (0)