chore: remove the npm-mirror leftovers after align 9.0.0 #2

Merged
jercik merged 4 commits from chore/remove-npm-mirror into main 2026-10-22 17:49:43 +00:00
Owner

Removes the npm-mirror leftovers after align 9.0.0. The package now publishes only as @j4k-oss/worktree-add to the Forge registry.

release.yml loses 455 lines (663 to 208): the npm-mirror job, its integrity step and the OIDC gating. The Forge-registry publish stays. The .npm-mirror marker and .github/workflows/release-npm.yml are deleted, and align's 9.0.0 render refreshed AGENTS.md and two check-dts messages.

The README install section now points at the scoped Forge package. Each command carries --@j4k-oss:registry=… or sits next to the ~/.npmrc line, because pnpm add -g rejects the inline flag. It also says the unscoped npm package is frozen.

🤖 Generated with Claude Code

Removes the npm-mirror leftovers after align 9.0.0. The package now publishes only as `@j4k-oss/worktree-add` to the Forge registry. `release.yml` loses 455 lines (663 to 208): the `npm-mirror` job, its integrity step and the OIDC gating. The Forge-registry publish stays. The `.npm-mirror` marker and `.github/workflows/release-npm.yml` are deleted, and align's 9.0.0 render refreshed `AGENTS.md` and two `check-dts` messages. The README install section now points at the scoped Forge package. Each command carries `--@j4k-oss:registry=…` or sits next to the `~/.npmrc` line, because `pnpm add -g` rejects the inline flag. It also says the unscoped npm package is frozen. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Delete the npm-mirror marker and the GitHub release-npm workflow, and
re-render the Forgejo workflows, agent instructions and check-dts
scripts from align 9.0.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs: point install instructions at the scoped Forge package
All checks were successful
Checks / pr-flow-canary (pull_request) Has been skipped
Checks / reuse (pull_request) Successful in 3s
commit-msg / commitlint (pull_request) Successful in 9s
Checks / quality-checks (24.15.0) (pull_request) Successful in 43s
Checks / quality-checks (26.5.0) (pull_request) Successful in 43s
Review / Review (pull_request_target) Successful in 5m21s
7c36b6a46a
The unscoped npm package is frozen. Install and run commands now use
`@j4k-oss/worktree-add` with the Forge registry mapping.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Review 01M5JB3YE38HHF85NEN5C5VGVS — head 4442f821c832ba842df2d7f6d0743f2a7723ea7b

Review — j4k-oss/worktree-add @ e7c74d1397

Scope: diff against base tree f0cf3699298b
Status: dispatched — coverage complete (6/6 slots terminal)
Facts: current review-wide projection

Computed under:

{
  "abandonment": "abandonment-v1",
  "anchor_recipe": 1,
  "batch_policy": "batch-v1",
  "coverage": "coverage-v3",
  "dispatch_policy": "dispatch-v2",
  "grounder_version": 1,
  "grounding_read_rule": "grounding-read-v1",
  "promotion_policy": "promotion-v1",
  "report": "report-v4",
  "tally": "tally-v1",
  "triage_settle": "triage-settle-v2"
}

Findings (1)

low — The profile instructions send fish users to a Bash function

  • claim: 01M5JBB5FKWNAYAPZRMWQ5EBAC
  • anchor: README.md (snippet)
Add it to your shell profile:

- zsh: `~/.zshrc` or `~/.zprofile`
- bash: `~/.bashrc` or `~/.bash_profile`
- fish: `~/.config/fish/config.fish`
  • lens: writing-quality · arm: default
  • verdicts: 1 valid / 0 invalid / 0 uncertain
    • pass 01M5JBBDM9YNYBE4R2F8VDWFJP · valid: The exact-grounded README excerpt explicitly directs Fish users to add the preceding example to ~/.config/fish/config.fish. The reviewer quotes that example as worktree-add() { WORKTREE_ADD_APP=ghostty,code command worktree-add "$@" }, supplying the incompatible brace function declaration and argument forwarding. That preceding example is reviewer-supplied evidence, not part of the grounded anchor. Fish requires function/end and $argv, so the reported syntax and grounded installation instruction coherently establish a setup failure: loading the profile cannot define the promised wrapper. This is a concrete documentation defect under the human-facing clarity standard, not a preference or a demand for extra coverage. Reassessing both historical claims reveals no substantive refutation and no active owner disposition. The earlier verdict's concrete objection to env ... command applies to that older remedy, not the current one: separate Fish lines using function worktree-add, set -lx WORKTREE_ADD_APP ghostty,code, command worktree-add $argv, and end avoid that executable-name error. Keep the Bash/Zsh example separately, preserve argument forwarding, and preserve the reported requirement that -o opts into launching. Alternatively, explicitly limit the existing example and profile destinations to Bash/Zsh. I would assign medium severity because an advertised setup path fails. This is a static assessment, not an executed reproduction.
  • disposition: none

A fish user following this instruction puts an incompatible function definition in their startup file. The default-app wrapper then fails to load, and sourcing the profile reports a syntax error.

The immediately preceding example defines worktree-add() { WORKTREE_ADD_APP=ghostty,code command worktree-add "$@" }. Its function declaration and argument expansion are Bash/zsh syntax, but the profile list explicitly directs fish users to install that same example in ~/.config/fish/config.fish.

Apply the human-facing guide's clarity and specificity requirements: label the existing function as Bash/zsh and give fish users the equivalent function worktree-add, set -lx WORKTREE_ADD_APP ghostty,code, command worktree-add $argv, end on separate lines. Keep the respective profile paths and the explanation that -o opts into launching the configured apps. This preserves the setup task for each advertised shell without adding an unrelated shell inventory.

I read the complete README App control section and traced WORKTREE_ADD_APP through runWorktreeAdd and resolveOpenTarget; the variable supplies defaults only when opening is requested. The finding is a static syntax comparison; I did not execute fish in this sandbox. A fish-compatible definition before the profile instruction, or an explicit limitation of the existing example to Bash/zsh with separate fish guidance, resolves the mismatch.

Other claims

  • grounding-pending (0)
  • ungrounded (0)
  • rejected (0)
  • duplicate-of (0)
  • unadjudicated (1)
    • 01M5JBA2J32GZ526KZGTJRY3BY medium — The repoq rule maintains an unnecessary count of write commands

Coverage

Coverage pass: 01M5JB4GD1Y54WCZ0934531MA5
Accounting: complete
Slot health: healthy

lens part arm unit status runs loss
restated-sets whole default no-claims 1 no
general-bug workflows default no-claims 1 no
general-bug scripts default no-claims 1 no
project-docs whole default no-claims 1 no
writing-quality docs default claims-emitted 1 no
unix-cli whole default no-claims 1 no
  • test-trimming — skipped-by-dispatch: no test files changed
  • use-effect — skipped-by-dispatch: no React code changed; only workflows, docs and build scripts
  • react — skipped-by-dispatch: no React components changed; only workflows, docs and build scripts
<!-- review:summary --> **Review** `01M5JB3YE38HHF85NEN5C5VGVS` — head `4442f821c832ba842df2d7f6d0743f2a7723ea7b` # Review — j4k-oss/worktree-add @ e7c74d1397c2 Scope: diff against base tree `f0cf3699298b` Status: dispatched — coverage complete (6/6 slots terminal) Facts: current review-wide projection Computed under: ```json { "abandonment": "abandonment-v1", "anchor_recipe": 1, "batch_policy": "batch-v1", "coverage": "coverage-v3", "dispatch_policy": "dispatch-v2", "grounder_version": 1, "grounding_read_rule": "grounding-read-v1", "promotion_policy": "promotion-v1", "report": "report-v4", "tally": "tally-v1", "triage_settle": "triage-settle-v2" } ``` ## Findings (1) ### low — The profile instructions send fish users to a Bash function - claim: `01M5JBB5FKWNAYAPZRMWQ5EBAC` - anchor: `README.md` (snippet) ``` Add it to your shell profile: - zsh: `~/.zshrc` or `~/.zprofile` - bash: `~/.bashrc` or `~/.bash_profile` - fish: `~/.config/fish/config.fish` ``` - lens: writing-quality · arm: default - verdicts: 1 valid / 0 invalid / 0 uncertain - pass `01M5JBBDM9YNYBE4R2F8VDWFJP` · valid: The exact-grounded README excerpt explicitly directs Fish users to add the preceding example to ~/.config/fish/config.fish. The reviewer quotes that example as worktree-add() { WORKTREE_ADD_APP=ghostty,code command worktree-add "$@" }, supplying the incompatible brace function declaration and argument forwarding. That preceding example is reviewer-supplied evidence, not part of the grounded anchor. Fish requires function/end and $argv, so the reported syntax and grounded installation instruction coherently establish a setup failure: loading the profile cannot define the promised wrapper. This is a concrete documentation defect under the human-facing clarity standard, not a preference or a demand for extra coverage. Reassessing both historical claims reveals no substantive refutation and no active owner disposition. The earlier verdict's concrete objection to env ... command applies to that older remedy, not the current one: separate Fish lines using function worktree-add, set -lx WORKTREE_ADD_APP ghostty,code, command worktree-add $argv, and end avoid that executable-name error. Keep the Bash/Zsh example separately, preserve argument forwarding, and preserve the reported requirement that -o opts into launching. Alternatively, explicitly limit the existing example and profile destinations to Bash/Zsh. I would assign medium severity because an advertised setup path fails. This is a static assessment, not an executed reproduction. - disposition: none > A fish user following this instruction puts an incompatible function definition in their startup file. The default-app wrapper then fails to load, and sourcing the profile reports a syntax error. > > The immediately preceding example defines `worktree-add() { WORKTREE_ADD_APP=ghostty,code command worktree-add "$@" }`. Its function declaration and argument expansion are Bash/zsh syntax, but the profile list explicitly directs fish users to install that same example in `~/.config/fish/config.fish`. > > Apply the human-facing guide's clarity and specificity requirements: label the existing function as Bash/zsh and give fish users the equivalent `function worktree-add`, `set -lx WORKTREE_ADD_APP ghostty,code`, `command worktree-add $argv`, `end` on separate lines. Keep the respective profile paths and the explanation that `-o` opts into launching the configured apps. This preserves the setup task for each advertised shell without adding an unrelated shell inventory. > > I read the complete README App control section and traced `WORKTREE_ADD_APP` through `runWorktreeAdd` and `resolveOpenTarget`; the variable supplies defaults only when opening is requested. The finding is a static syntax comparison; I did not execute fish in this sandbox. A fish-compatible definition before the profile instruction, or an explicit limitation of the existing example to Bash/zsh with separate fish guidance, resolves the mismatch. ## Other claims - grounding-pending (0) - ungrounded (0) - rejected (0) - duplicate-of (0) - unadjudicated (1) - `01M5JBA2J32GZ526KZGTJRY3BY` medium — The `repoq` rule maintains an unnecessary count of write commands ## Coverage Coverage pass: 01M5JB4GD1Y54WCZ0934531MA5 Accounting: complete Slot health: healthy | lens | part | arm | unit status | runs | loss | | --- | --- | --- | --- | --- | --- | | restated-sets | whole | default | no-claims | 1 | no | | general-bug | workflows | default | no-claims | 1 | no | | general-bug | scripts | default | no-claims | 1 | no | | project-docs | whole | default | no-claims | 1 | no | | writing-quality | docs | default | claims-emitted | 1 | no | | unix-cli | whole | default | no-claims | 1 | no | - test-trimming — skipped-by-dispatch: no test files changed - use-effect — skipped-by-dispatch: no React code changed; only workflows, docs and build scripts - react — skipped-by-dispatch: no React components changed; only workflows, docs and build scripts
README.md Outdated
@ -74,3 +85,1 @@
pnpm add -g worktree-add # or: npm i -g worktree-add
worktree-add feature/my-branch
```
The examples below run the installed `worktree-add` command.

medium — The local pnpm install needs a runnable invocation

A reader who follows the project-local installation path can immediately get ‘worktree-add: command not found’ when trying the usage examples. The transition says the examples run the installed command, but a local dev dependency does not normally put its binary on the interactive shell’s PATH. A globally installed older copy could also be selected instead.

The preceding instructions use pnpm add -D @j4k-oss/worktree-add; the Usage section then shows worktree-add <branch> [options], and the pipeline examples likewise execute the bare binary. package.json exposes the binary as "worktree-add": "bin/worktree-add"; it does not install a shell wrapper for consumers.

Replace the anchored sentence with: ‘After a project-local install, run the examples with pnpm exec worktree-add in place of worktree-add. Global installs expose worktree-add directly.’ This preserves the installation choices and gives each reader the execution step they need. It follows the human-facing standard’s requirement to describe effects as the reader experiences them and the agent-writing standard’s minimum sufficient presentation for an interface task. A source pointer alone would still leave a local-install reader without a working command.

I traced the Install / run, Usage, and Pipeline examples sections against the package’s bin declaration. This is a static assessment; I did not install the package or contact the registry. A clean consumer-shell check after the documented local install would establish it: the bare command should be unavailable unless a separate global installation or PATH customization exists, while pnpm exec worktree-add --help should resolve the local binary. Documentation of a prerequisite that automatically adds local dependency binaries to that reader’s shell PATH would refute the missing-step claim.

lens writing-quality · arm default · tally 1 valid / 0 invalid / 0 uncertain
claim 01M5JA9R8TP6K2XPZGG120X426 of review 01M5JA44BHHJK564DW72900HAT

<!-- review:claim:01M5JA9R8TP6K2XPZGG120X426 --> **medium** — The local pnpm install needs a runnable invocation > A reader who follows the project-local installation path can immediately get ‘worktree-add: command not found’ when trying the usage examples. The transition says the examples run the installed command, but a local dev dependency does not normally put its binary on the interactive shell’s PATH. A globally installed older copy could also be selected instead. > > The preceding instructions use `pnpm add -D @j4k-oss/worktree-add`; the Usage section then shows <code>worktree-add &lt;branch&gt; &#91;options&#93;</code>, and the pipeline examples likewise execute the bare binary. `package.json` exposes the binary as `"worktree-add": "bin/worktree-add"`; it does not install a shell wrapper for consumers. > > Replace the anchored sentence with: ‘After a project-local install, run the examples with `pnpm exec worktree-add` in place of `worktree-add`. Global installs expose `worktree-add` directly.’ This preserves the installation choices and gives each reader the execution step they need. It follows the human-facing standard’s requirement to describe effects as the reader experiences them and the agent-writing standard’s minimum sufficient presentation for an interface task. A source pointer alone would still leave a local-install reader without a working command. > > I traced the Install / run, Usage, and Pipeline examples sections against the package’s `bin` declaration. This is a static assessment; I did not install the package or contact the registry. A clean consumer-shell check after the documented local install would establish it: the bare command should be unavailable unless a separate global installation or PATH customization exists, while `pnpm exec worktree-add --help` should resolve the local binary. Documentation of a prerequisite that automatically adds local dependency binaries to that reader’s shell PATH would refute the missing-step claim. lens `writing-quality` · arm `default` · tally 1 valid / 0 invalid / 0 uncertain claim `01M5JA9R8TP6K2XPZGG120X426` of review `01M5JA44BHHJK564DW72900HAT`
Author
Owner

Fixed in 9511fce: the README now tells project-local installs to run pnpm exec worktree-add.

<!-- gh-feedback:reply-to:177981 --> Fixed in 9511fce: the README now tells project-local installs to run `pnpm exec worktree-add`.
jercik marked this conversation as resolved
docs: say how to run worktree-add after a project-local install
All checks were successful
Checks / pr-flow-canary (pull_request) Has been skipped
Checks / reuse (pull_request) Successful in 3s
commit-msg / commitlint (pull_request) Successful in 9s
Checks / quality-checks (24.15.0) (pull_request) Successful in 34s
Checks / quality-checks (26.5.0) (pull_request) Successful in 39s
Review / Review (pull_request_target) Successful in 4m9s
9511fce221
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

Replying to review 01M5JA44BHHJK564DW72900HAT (summary #177980, head 7c36b6a4)

  • Local pnpm install (claim 01M5JA9R8TP6K2XPZGG120X426, inline #177981): valid. The sentence "The examples below run the installed worktree-add command" was this PR's own and was false for a project-local install. Fixed in 9511fce, which tells local installs to run pnpm exec worktree-add.
  • Fish wrapper (claim 01M5JAAC74FJFYC8CJ4JNJH3CA): valid, and it predates this PR (the profile list is on main). Reproduced in fish 4.6.0: the Bash function fails with command substitutions not allowed in command position. Tracked in #3, which scopes the brace function to Bash and Zsh and documents a Fish version. It edits lines far from this PR's hunks.
  • Unadjudicated claim 01M5JAA4CE8ZDBZWY1AB7W54CW (the repoq guidance counts its write verbs): not a defect in this PR. The sentence "It also carries one write verb: pr create" is in the generated AGENTS.md/CLAUDE.md, which align regenerated here from the shared rule repoq/repoq-usage.md; generated files are not edited by hand. The count is accurate today: repoq registers pr create as its only write command (src/cli/register-pr-command.ts). If repoq gains another write verb, the shared rule in the align repository needs the update, which is outside these PRs.
> Replying to review `01M5JA44BHHJK564DW72900HAT` (summary #177980, head 7c36b6a4) - Local pnpm install (claim `01M5JA9R8TP6K2XPZGG120X426`, inline #177981): valid. The sentence "The examples below run the installed `worktree-add` command" was this PR's own and was false for a project-local install. Fixed in 9511fce, which tells local installs to run `pnpm exec worktree-add`. - Fish wrapper (claim `01M5JAAC74FJFYC8CJ4JNJH3CA`): valid, and it predates this PR (the profile list is on `main`). Reproduced in fish 4.6.0: the Bash function fails with `command substitutions not allowed in command position`. Tracked in https://code.j4k.dev/j4k-oss/worktree-add/pulls/3, which scopes the brace function to Bash and Zsh and documents a Fish version. It edits lines far from this PR's hunks. - Unadjudicated claim `01M5JAA4CE8ZDBZWY1AB7W54CW` (the repoq guidance counts its write verbs): not a defect in this PR. The sentence "It also carries one write verb: `pr create`" is in the generated `AGENTS.md`/`CLAUDE.md`, which align regenerated here from the shared rule `repoq/repoq-usage.md`; generated files are not edited by hand. The count is accurate today: repoq registers `pr create` as its only write command (`src/cli/register-pr-command.ts`). If repoq gains another write verb, the shared rule in the align repository needs the update, which is outside these PRs.
docs: tell existing global installs to uninstall first and keep the registry line
All checks were successful
Checks / pr-flow-canary (pull_request) Has been skipped
Checks / reuse (pull_request) Successful in 4s
commit-msg / commitlint (pull_request) Successful in 11s
Checks / quality-checks (24.15.0) (pull_request) Successful in 1m16s
Checks / quality-checks (26.5.0) (pull_request) Successful in 1m16s
Review / Review (pull_request_target) Successful in 5m26s
4442f821c8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

Replying to review 01M5JB3YE38HHF85NEN5C5VGVS (summary #177980, head 4442f821)

  • Fish wrapper (claim 01M5JBB5FKWNAYAPZRMWQ5EBAC): valid, predates this PR, and is already fixed on main in 8fd2b0e (#3), which scopes the brace function to Bash and Zsh and adds a Fish function. This review ran on a head that does not contain that commit.
  • Unadjudicated claim 01M5JBA2J32GZ526KZGTJRY3BY (the repoq guidance counts its write verbs): not a defect in this PR. The sentence "It also carries one write verb: pr create" is in the generated AGENTS.md/CLAUDE.md, which align regenerated here from the shared rule repoq/repoq-usage.md; generated files are not edited by hand. The count is accurate today: repoq registers pr create as its only write command (src/cli/register-pr-command.ts). If repoq gains another write verb, the shared rule in the align repository needs the update, which is outside these PRs.
> Replying to review `01M5JB3YE38HHF85NEN5C5VGVS` (summary #177980, head 4442f821) - Fish wrapper (claim `01M5JBB5FKWNAYAPZRMWQ5EBAC`): valid, predates this PR, and is already fixed on `main` in 8fd2b0e (https://code.j4k.dev/j4k-oss/worktree-add/pulls/3), which scopes the brace function to Bash and Zsh and adds a Fish function. This review ran on a head that does not contain that commit. - Unadjudicated claim `01M5JBA2J32GZ526KZGTJRY3BY` (the repoq guidance counts its write verbs): not a defect in this PR. The sentence "It also carries one write verb: `pr create`" is in the generated `AGENTS.md`/`CLAUDE.md`, which align regenerated here from the shared rule `repoq/repoq-usage.md`; generated files are not edited by hand. The count is accurate today: repoq registers `pr create` as its only write command (`src/cli/register-pr-command.ts`). If repoq gains another write verb, the shared rule in the align repository needs the update, which is outside these PRs.
jercik merged commit 9f4974901b into main 2026-10-22 17:49:43 +00:00
jercik deleted branch chore/remove-npm-mirror 2026-10-22 17:49:44 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
j4k-oss/worktree-add!2
No description provided.