feat: install on a new machine in one step - #19
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Installing this on a fresh machine did not work. The README and the skill both told the reader to `npm install -g mft-config`, but the package had never been published, so that command and the `npx -y mft-config` fallback the skill depends on both 404'd. The documented install path described something that did not exist. The CLI is now published to npm, which makes those instructions true, and the remaining steps collapse into one: - A Claude Code plugin. `.claude-plugin/plugin.json` points `skills` at `./.claude/skills`, so the plugin serves the same skill directory the repository already discovers rather than a second copy to keep in sync. With the marketplace manifest alongside it, installing is `/plugin marketplace add oveddan/mft-api` and `/plugin install`. - A release workflow, triggered by hand from the Actions tab. Nothing reaches npm without someone choosing to send it. It refuses a version already on the registry so a forgotten bump fails immediately, `prepack` runs the full check before anything uploads, and the commit is tagged only after the publish succeeds. Authentication is npm trusted publishing, so no write-capable token is stored anywhere. Codex keeps its curl one-liner: there is no marketplace to target there, and a single documented command is more honest than pretending parity. Verified against real hardware from a clean directory, resolving from the registry rather than this checkout: `npx -y mft-config list` discovers the controller on firmware 2026-07-02, and `export` returns all four banks of sixteen encoders with no warnings. Closes #8 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
da2b8ae to
7b9068c
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: da2b8ae147
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| # fallback is `npm publish` from a logged-in machine. | ||
| on: | ||
| push: | ||
| tags: ['v*'] |
There was a problem hiding this comment.
Keep prerelease versions off npm's latest channel
When a tag such as v0.2.0-beta.1 is pushed, this broad trigger accepts it and the version check also passes, but the publish step supplies no --tag; npm publish --help identifies --tag as the channel option and npm config get tag defaults to latest. That would make a prerelease the default version installed by the documented npm install and npx commands. Restrict the trigger/version check to stable tags or publish prereleases under a non-latest dist-tag.
Useful? React with 👍 / 👎.
Installing this on a fresh machine did not work. The README and the skill both told the reader to
npm install -g mft-config, but the package had never been published — that command and thenpx -y mft-configfallback the skill depends on both 404'd. The documented install path described something that did not exist.mft-config@0.1.0is now published, which makes those instructions true. The remaining steps collapse into one.Claude Code: a plugin
.claude-plugin/plugin.jsonpointsskillsat./.claude/skills, so the plugin serves the same skill directory the repository already discovers rather than a second copy to keep in sync.Verified by adding the marketplace locally and installing:
claude plugin detailsreportsSkills (1) mft-configuratorat ~90 always-on tokens, andclaude plugin validate ./ --strictpasses.Codex: unchanged
There is no marketplace to target, so it keeps the curl one-liner. A single documented command is more honest than pretending parity exists.
Releasing
Manual, from the Actions tab — nothing reaches npm without someone choosing to send it. Bump the version in
package.json, merge, then run the Release workflow.It refuses a version already on the registry, so a forgotten bump fails immediately rather than part-way through a build.
prepackruns the full check before anything uploads, and the commit is taggedv<version>only after the publish succeeds.Authentication is npm trusted publishing (OIDC), so no write-capable token is stored anywhere. That needs enabling once on npmjs.com now that the package exists — Settings → Trusted publisher → GitHub Actions →
release.yml. Until then the publish step fails and the fallback is a manualnpm publish.Verification
Against real hardware, from a clean directory outside this checkout so it resolved from the registry rather than local files:
npx -y mft-config list→ discovers the controller on firmware2026-07-02npx -y mft-config export→ all four banks of sixteen encoders, 0 warningsnpm run checkpasses (30/30 tests).Closes #8
🤖 Generated with Claude Code