Skip to content

fix: resolve CLI as altimate or altimate-code (1.1.0) - #5

Open
hkaltai wants to merge 4 commits into
AltimateAI:mainfrom
hkaltai:fix/altimate-code-altimate-cli-conflict
Open

hkaltai wants to merge 4 commits into
AltimateAI:mainfrom
hkaltai:fix/altimate-code-altimate-cli-conflict

Conversation

@hkaltai

@hkaltai hkaltai commented Oct 19, 2026 •

Copy link
Copy Markdown

What / How

Since v0.7.1 the CLI also ships as altimate. npm (npm install -g altimate-code) and Homebrew installs expose both altimate and altimate-code, but curl and PowerShell installs made before the installers add an altimate-code alias (AltimateAI/altimate-code#1562, open) expose only altimate. This plugin only ever ran altimate-code, so on those installs it reported the CLI as missing and every delegated run failed.

Same fix as AltimateAI/altimate-claude-plugin#8, ported to the Codex plugin.

  • CLI resolution: every shell command in both skills (altimate-code, review) and both slash commands (/altimate-code:altimate, /altimate-code:review) resolves the binary as altimate-code, a name no other tool uses, and falls back to altimate for standalone installs that expose only that name. The lookup:

    • ignores aliases and shell functions (it removes them only inside a subshell), so alias altimate-code=altimate can't be captured as the binary path;
    • accepts only an executable file, so a broken match on PATH falls through to the other name;
    • exits 127 with altimate-code CLI not found (tried altimate-code, altimate) before mktemp when neither is installed. This replaces the separate command -v pre-check.

    It sits in the same shell command as the run, because each shell command starts fresh.

  • PR reviews: gh pr checkout <n> && "$ALTIMATE_BIN" review runs after the resolver in the same shell command, so a missing CLI stops before the user's branch is switched.

  • Install and recovery guidance: not-installed messages, troubleshooting rows and both READMEs list the npm and the curl install. Recovery messages say to run altimate-code, or altimate on installs without altimate-code.

  • Test: tests/resolve-cli.sh checks every resolver copy and its behaviour in bash and zsh (see Test plan). CONTRIBUTING.md says to run it when touching the resolver.

  • Version: 1.0.0 → 1.1.0 in plugin.json, with a 1.1.0 CHANGELOG entry (same version as the Claude plugin release).

Before / After

Situation Before (main, 1.0.0) After (this PR, 1.1.0)
Older curl or PowerShell install (only altimate) Reports "altimate-code is not installed" and every run fails, even though the CLI is there Finds altimate and runs it
Installed with npm or Homebrew (both names) Runs altimate-code Runs altimate-code, no change
Old npm install from before v0.7.1 (only altimate-code) Runs altimate-code Runs altimate-code, no change
Not installed Shows only the npm install command Stops with altimate-code CLI not found and shows the npm and curl install commands
PR review requested, CLI not installed Pre-check stops the run Resolver stops the run before gh pr checkout, so the branch is not switched
User has an alias or function named altimate-code or altimate Can pick up the alias text instead of the real program, and the run fails Ignores aliases and shell functions and runs the real program
An unrelated program named altimate is earlier on PATH than altimate-code Runs altimate-code Runs altimate-code; the unrelated altimate never receives the task
A non-executable file named altimate-code or altimate is earlier on PATH Fails to run Skipped; falls back to the other name, or reports not installed
Both names installed, from installs of different versions Uses altimate-code, even if it is the older copy Same; which copy comes first on PATH is up to the install layout (AltimateAI/altimate-code#824)

Test plan

  • tests/resolve-cli.sh passes in bash 3.2 and zsh 5.9 on macOS. It runs each shell without startup files and with only stub directories on PATH, and checks:
    • every resolver block is identical, and each file has the expected number of blocks;
    • only altimate → runs altimate; both → altimate-code; an unrelated altimate ahead of altimate-code on PATH → altimate-code; only altimate-code → altimate-code; neither → exit 127 with the not-found message;
    • aliases and functions named altimate or altimate-code are ignored, including with only the legacy binary installed and with nothing installed;
    • a non-executable altimate-code falls back to altimate, a non-executable altimate is skipped, and exits 127 when there is no fallback;
    • relative PATH entries, including one with a space, resolve.
  • The test fails when the old resolver or the executable check is put back.
  • plugin.json and .agents/plugins/marketplace.json parse as JSON.
  • Fresh Codex session with only the curl-installed altimate on PATH: install the plugin, send a warehouse prompt, confirm the skill delegates and the run completes.

Limits

  • If an unrelated tool named altimate is on PATH and altimate-code is not installed, the plugin runs that tool. altimate-code is tried first, so this only affects standalone installs that lack the altimate-code alias.
  • When two installs of different versions are on PATH, the first altimate-code on PATH wins, even if older. That is an upstream install-layout issue (ux: warn at startup if multiple altimate binaries are on $PATH altimate-code#824), not handled here.

Spec

Criteria:

  • block · With only altimate (no altimate-code) on PATH, both skills and both slash commands detect the CLI as installed and invoke altimate run / altimate review instead of reporting it as missing.
  • block · With both altimate and altimate-code on PATH, the plugin invokes altimate-code, including when an unrelated altimate comes first on PATH; with only altimate-code on PATH, it invokes altimate-code.
  • block · With neither binary on PATH, the plugin reports the CLI as not installed, shows both the npm and the curl install commands, and does not run gh pr checkout for a PR review.
  • warn · plugin.json declares version 1.1.0 and the CHANGELOG has an entry for it.

Catalog: none

🤖 Generated with Claude Code

hkaltai and others added 2 commits October 19, 2026 13:37
`altimate` is the CLI's canonical name since v0.7.1. The npm package
exposes both `altimate` and `altimate-code`, but the curl, Homebrew and
PowerShell installers expose only `altimate`, so the plugin reported the
CLI as missing on standalone installs.

Every CLI invocation in the skills and slash commands now resolves the
binary in the same shell call, trying `altimate` first and falling back
to `altimate-code`, ignoring aliases and shell functions. It exits 127
with a clear message before mktemp when neither is installed, which
replaces the separate `command -v` pre-check. Install guidance lists
both the npm and curl installs.

Adds tests/resolve-cli.sh, which checks every resolver copy is identical
and resolves correctly in bash and zsh. Bumps the plugin to 1.1.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The review flow ran `gh pr checkout` before resolving the CLI, so a
machine without it had its branch switched before "not found" was
reported. The PR-scope command now runs after the resolver in the same
shell command.

bash's `command -v` returns a non-executable file when no executable
match exists, so a broken `altimate` on PATH beat a working
`altimate-code`. The resolver now only accepts an executable path.

Recovery messages name `altimate-code` for npm installs older than
v0.7.1, which the resolver still supports. Instructions say "shell
command" rather than "Bash call", since Codex runs a generic shell.

The resolver test checks its temp dir, runs with only the stub dirs on
PATH, and covers legacy-only installs with an alias or function, aliases
and functions with nothing installed, and a non-executable `altimate`
with and without a legacy fallback.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@hkaltai
hkaltai marked this pull request as ready for review October 19, 2026 08:24
@kilo-code-bot

kilo-code-bot Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (10 files)
  • CONTRIBUTING.md
  • README.md
  • plugins/altimate-code/.codex-plugin/plugin.json
  • plugins/altimate-code/CHANGELOG.md
  • plugins/altimate-code/README.md
  • plugins/altimate-code/commands/altimate.md
  • plugins/altimate-code/commands/review.md
  • plugins/altimate-code/skills/altimate-code/SKILL.md
  • plugins/altimate-code/skills/review/SKILL.md
  • tests/resolve-cli.sh
Previous Review Summaries (2 snapshots, latest commit 54196eb)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 54196eb)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (10 files)
  • CONTRIBUTING.md
  • README.md
  • plugins/altimate-code/.codex-plugin/plugin.json
  • plugins/altimate-code/CHANGELOG.md
  • plugins/altimate-code/README.md
  • plugins/altimate-code/commands/altimate.md
  • plugins/altimate-code/commands/review.md
  • plugins/altimate-code/skills/altimate-code/SKILL.md
  • plugins/altimate-code/skills/review/SKILL.md
  • tests/resolve-cli.sh

Previous review (commit c941ad4)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (10 files)
  • CONTRIBUTING.md
  • README.md
  • plugins/altimate-code/.codex-plugin/plugin.json
  • plugins/altimate-code/CHANGELOG.md
  • plugins/altimate-code/README.md
  • plugins/altimate-code/commands/altimate.md
  • plugins/altimate-code/commands/review.md
  • plugins/altimate-code/skills/altimate-code/SKILL.md
  • plugins/altimate-code/skills/review/SKILL.md
  • tests/resolve-cli.sh

Reviewed by gemini-4-argon · Input: 74.8K · Output: 1.1K · Cached: 152.9K

@sahrizvi sahrizvi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consensus review (5 models: Claude, GPT 5.3 Codex, DeepSeek V4 Pro, Grok 4.3, Qwen 3.6 Plus; converged 5/5 after 2 rounds). Two MAJOR findings are inline below. Minor issues, nits and cross-repo notes are in a separate PR comment.

Cross-plugin check: all six resolver blocks here are byte-identical to altimate-claude-plugin#8 (same candidates and order, the same [ -x ] check, exit 127, message, and resolve-before-gh pr checkout), so at runtime the two plugins resolve the CLI identically. Both majors below apply to both plugins.

<user's task, verbatim>
ALTIMATE_TASK
)"
for ALTIMATE_NAME in altimate altimate-code; do

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MAJOR (Design/Security): try altimate-code first, then fall back to altimate.

altimate is a generic name, and the PR's own Limits section says an unrelated altimate on PATH gets run even when altimate-code is installed. With altimate-code#1562, every install method exposes altimate-code:

  • npm bin
  • the Homebrew formula (bin.install_symlink "altimate" => "altimate-code" in packages/opencode/script/publish.ts)
  • the curl link_alias symlink
  • the PowerShell .cmd and sh shims

So the unambiguous name is always available. Trying altimate first hands the user's task text (with --yolo --output --dir) to whichever altimate comes first on PATH, whether that's a foreign tool or an older standalone build (altimate-code#824).

Reordering doesn't strand standalone installs from v0.7.1 up to the #1562 release, which only have altimate: the loop still falls back to it. The installer probes altimate first only to read --version, so that order doesn't decide which binary should receive task text.

for ALTIMATE_NAME in altimate-code altimate; do
  ALTIMATE_BIN="$(unalias "$ALTIMATE_NAME" 2>/dev/null; unset -f "$ALTIMATE_NAME" 2>/dev/null; command -v "$ALTIMATE_NAME")"
  [ -x "$ALTIMATE_BIN" ] && break || ALTIMATE_BIN=
done
[ -n "$ALTIMATE_BIN" ] || { echo "altimate-code CLI not found (tried altimate-code, altimate)" >&2; exit 127; }

This applies to all 6 blocks (commands/altimate.md:34,55, commands/review.md:24, skills/altimate-code/SKILL.md:58,94, skills/review/SKILL.md:35) and the same blocks in altimate-claude-plugin#8.

In tests/resolve-cli.sh:

  • the both case should expect ran altimate-code
  • add a case with a foreign executable altimate earlier on PATH next to a real altimate-code

The README/CHANGELOG/PR-body wording needs the same update. Note that the claude-plugin#8 title ("altimate-code or altimate") still describes the order from before 2c0f11f flipped it.

Flagged by: Claude, DeepSeek V4 Pro, GPT 5.3 Codex

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in dc86f54. All six resolver blocks now try altimate-code first and fall back to altimate, and the not-found message reads (tried altimate-code, altimate). In tests/resolve-cli.sh the both case now expects ran altimate-code. I added a case with a foreign executable altimate ahead of a real altimate-code on PATH (expects altimate-code) and a case with a non-executable altimate-code ahead of altimate (expects altimate). The README, CHANGELOG, PR body and Spec criteria now describe the new order. The test passes in bash and zsh.

## You MUST follow this workflow

1. **Verify altimate-code is on PATH** with `command -v altimate-code`. If it returns nothing, jump to "Not installed" below and stop.
1. **Verify altimate-code is on PATH.** There is no separate check: the invocation below resolves the CLI first, ignoring aliases and shell functions, and exits 127 with `altimate-code CLI not found` before doing anything else. The CLI ships under two names: the npm package exposes both `altimate-code` and `altimate`, while the standalone curl/Homebrew/PowerShell installers expose only `altimate`. Either name is the same CLI. If the invocation exits with `altimate-code CLI not found`, jump to "Failure modes" below and stop.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MAJOR (Documentation): "standalone curl/Homebrew/PowerShell installers expose only altimate" is already false for Homebrew, and #1562 makes it false for curl and PowerShell.

  • Homebrew: the formula already symlinks altimate-code.
  • curl / PowerShell: altimate-code#1562 adds altimate-code, and rewrites the CLI README to say "plus an altimate-code alias — the same two names the npm install exposes".

These lines are model-facing instructions, and they're also the stated rationale for the change. After the change set ships, the plugins will contradict the CLI's own docs.

"Only altimate" was also never true for pre-v0.7.1 standalone installs, which had ~/.altimate-code/bin/altimate-code. The recovery text "altimate-code on npm installs older than v0.7.1" leaves those installs out.

Suggested wording:

npm, Homebrew and current standalone installers expose both altimate and altimate-code. Standalone installs from v0.7.1 up to the #1562 release expose only altimate; re-running the installer adds altimate-code.

The same claim appears in:

  • commands/altimate.md:10
  • commands/review.md:21
  • skills/review/SKILL.md:32
  • README.md:72
  • plugins/altimate-code/README.md:25,28
  • CHANGELOG.md:10
  • the matching files in altimate-claude-plugin#8

Flagged by: Claude, DeepSeek V4 Pro, GPT 5.3 Codex (GPT and Qwen noted MAJOR vs MINOR is debatable, because runtime behaviour is unaffected)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in dc86f54. altimate-code#1562 is still open, so I didn't describe current curl/PowerShell installers as exposing both names. The model-facing note in all four skill and command files now reads: "npm and Homebrew installs expose both altimate and altimate-code; curl and PowerShell installs from v0.7.1 on may expose only altimate, and installs older than v0.7.1 expose only altimate-code." That covers pre-v0.7.1 standalone installs too. Recovery text now says "Run altimate-code (altimate on installs without altimate-code)" and no longer singles out npm. The plugin README and CHANGELOG were updated to match.

@sahrizvi

Copy link
Copy Markdown
Collaborator

Consensus review: minor issues, nits and cross-repo notes

Panel: Claude, GPT 5.3 Codex, DeepSeek V4 Pro, Grok 4.3, Qwen 3.6 Plus. Converged 5/5 after 2 rounds. The two MAJOR findings (resolver order, and the stale "standalone exposes only altimate" docs) are posted inline. bash tests/resolve-cli.sh passes locally.

Verdict: REQUEST CHANGES. The two majors block. The minors below can land here or as fast follow-ups.

Minor

  1. Cross-plugin drift outside the resolver. The resolver blocks match altimate-claude-plugin#8 byte for byte, but these don't:

    • claude-plugin tests/resolve-cli.sh lacks the broken-altimate-only → 127 case (this repo, line 74).
    • The README and failure-table row labels differ. Here it's "altimate-code CLI not found (neither altimate nor altimate-code …)". In claude-plugin it's "Neither altimate-code nor altimate on PATH", without the literal error text.
    • The 1.1.0 CHANGELOG entries differ: 3 bullets here, 2 in claude-plugin, and the second bullet's wording differs.

    ("shell command" vs "Bash call" is a legitimate difference between hosts.) Consider sharing one test file and identical user-facing text. (Claude, DeepSeek V4 Pro, Qwen 3.6 Plus)

  2. tests/resolve-cli.sh isn't enforced (CONTRIBUTING.md:76). The repo has no CI workflow, so the "every copy identical" guard depends on contributors remembering it. The test also only checks the four listed files: a new skill or command calling bare altimate-code run or command -v altimate-code would pass. Add a minimal Actions job, and add a grep that fails on direct altimate(-code)? (run|review) calls outside the resolver. This can be a follow-up. (Claude)

  3. Running the resolver and the run in separate calls fails silently. If the agent resolves in one shell call and runs in another, "$ALTIMATE_BIN" is empty. The shell fails with : command not found and exit 127, the same code as "not installed". That message matches no row in the failure table. The prose warning helps but nothing enforces it. Hardening option: "${ALTIMATE_BIN:?resolve the CLI in this same command}" run …, or add that symptom to the failure tables. (DeepSeek V4 Pro; Qwen agreed)

  4. Root README.md:7 still says "One skill". The plugin ships two skills (altimate-code, review) and two commands. This PR edits the bullet right below it, so update the line and the Layout tree. (DeepSeek V4 Pro)

Nits

  1. skills/altimate-code/SKILL.md:130: "altimate-code session list (or altimate session list)" should lead with the name the resolver prefers, or use "$ALTIMATE_BIN" session list. (Claude)
  2. When Codex uses PowerShell on Windows, the POSIX resolver can't run. The old command -v couldn't either, so this predates the PR. Now that #1562 adds altimate-code.cmd, a one-line note that Windows needs Git Bash or WSL would help. (Claude, DeepSeek V4 Pro, Qwen 3.6 Plus, Grok 4.3)

Missing tests

  • A foreign executable altimate ahead of a real altimate-code, asserting the chosen precedence.
  • Git Bash/MSYS with the #1562 extensionless altimate-code shim and altimate.exe.
  • The unchecked end-to-end item: a fresh Codex session with only the standalone CLI on PATH.

What's done well

  • There is one resolver block, enforced identical across all six call sites (and matching the Claude plugin), with a bash + zsh test on an isolated PATH and no startup files.
  • The resolver runs before gh pr checkout, so a missing CLI no longer switches the user's branch.
  • The subshell unalias/unset -f correctly ignores aliases and functions (command substitution does inherit them, and the tests prove it). The [ -x ] guard and exit 127 are sensible.
  • The Limits section is honest about the foreign-altimate and version-skew (#824) cases.

🤖 Generated with Claude Code

hkaltai and others added 2 commits October 20, 2026 07:40
npm and Homebrew installs expose both `altimate` and `altimate-code`;
only older curl and PowerShell installs lack `altimate-code`. The review
template no longer ends in a complete command. The resolver test fails
on bare CLI command lines and runs under zsh.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`altimate` is a generic name another tool may own, while `altimate-code`
is unambiguous. The resolver now tries `altimate-code` first and falls
back to `altimate` for standalone installs that expose only that name.
Install-name notes, recovery messages and the README now describe the
current installers accurately, and the test covers a foreign `altimate`
ahead of a real `altimate-code`.

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

hkaltai commented Oct 20, 2026

Copy link
Copy Markdown
Author

Thanks for the consensus review. Both MAJORs are fixed in dc86f54 (replies inline). On the minors and nits:

  1. Cross-plugin drift: this PR now reflects the new resolver order. I'll bring altimate-claude-plugin#8 in line separately: the same reorder, the same doc wording, the broken-altimate and foreign-altimate test cases, the failure-table label and the CHANGELOG text. A shared test file across repos is a follow-up.
  2. Test not enforced / no CI: follow-up. This PR doesn't add a CI workflow. The test already fails on bare altimate(-code)? (run|review|…) command lines in the four listed files. Widening it to every skill and command is part of that follow-up.
  3. Resolver and run split across shell calls: follow-up. Both skills and both commands already say the resolver must run in the same shell command. The ${ALTIMATE_BIN:?…} guard would touch every run line, so it'll ship with the CI follow-up.
  4. Root README "One skill": fixed. It now describes both skills and both slash commands, and the Layout tree lists commands/ and skills/review/.
  5. session list order: resolved by the reorder. The line already leads with altimate-code, which is now the resolver's preferred name.
  6. Windows/PowerShell note: this predates the PR (the old command -v check had the same limitation). Recording it as a follow-up and not changing it here.

Missing tests: added the foreign altimate ahead of altimate-code case. Git Bash/MSYS shim coverage depends on altimate-code#1562 landing. The fresh-session end-to-end item is still unchecked in the Test plan.

@hkaltai

hkaltai commented Oct 20, 2026

Copy link
Copy Markdown
Author

@kilo-code-bot Thanks, nothing to act on from this summary. Since then, dc86f54 has changed the resolver order to try altimate-code first, following the consensus review.

@sahrizvi sahrizvi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consensus re-review at dc86f54 (5 models: Claude, GPT 5.3 Codex, DeepSeek V4 Pro, Grok 4.3, Qwen 3.6 Plus; converged 5/5 in 1 round). Verdict: approve. Both earlier majors are fixed in this repo. The cross-repo order mismatch with altimate-claude-plugin#8 is inline and non-blocking. bash tests/resolve-cli.sh passes in bash and zsh in both plugins.

Status of earlier findings, minors and nits

Earlier findings at dc86f54

# Finding Status
1 altimate tried before altimate-code Fixed here; still open in claude-plugin#8 (inline, non-blocking)
2 "standalone exposes only altimate" Fixed. The model-facing wording is accurate and hedged with "may"
3 Cross-plugin drift Partly fixed. #8 gained the broken-altimate case and the bare-call grep, but the order, wording and tests now differ (inline)
4 Test not enforced Partly fixed (grep added). CI is deferred, which is fine
5 Empty $ALTIMATE_BIN when split Deferred, fine
6 Root README "One skill" Fixed
7 session list order Fixed by the reorder
8 Windows/PowerShell note Deferred, fine (see Minor 1)
Missing test Foreign altimate first Added (tests/resolve-cli.sh:73), plus the broken-altimate-code-first case

Minor

  1. Preferring altimate-code can now pick a stale or inert binary on Windows-adjacent setups. Git Bash: the pre-#1562 installer removes a pre-v0.7.1 altimate-code only when os != windows, so an upgraded install can still have ~/.altimate/bin/altimate-code.exe next to altimate.exe, and MSYS command -v altimate-code picks the stale build. WSL: #1562's extensionless altimate-code shim in the Windows install dir is on WSL's PATH by default and passes [ -x ]. Under Linux it prints "this is the Windows build" and exits 127, which matches no failure-table row. Re-running the #1562 installer fixes both. The resolver behaves as designed; this is install layout. Suggest a Limits bullet and a failure-table row saying to re-run the installer. (This is inferred from the installer code and was not reproduced.) (Claude; DeepSeek V4 Pro and Qwen 3.6 Plus agreed)
  2. README curl comments (README.md:78, plugins/altimate-code/README.md:25: "standalone binary; exposes altimate") are true today but will undersell #1562 once it ships. Either word them as "and altimate-code from ", or track a follow-up tied to that release. Same in claude-plugin. (GPT 5.3 Codex, Grok 4.3, DeepSeek V4 Pro, Claude)

Nits

  1. commands/review.md:29, skills/review/SKILL.md:40: the <the scope command chosen below, run through "$ALTIMATE_BIN"> placeholder sits inside a bash fence. The old "$ALTIMATE_BIN" review # plus any scope/flags from below was a runnable default. Consider "$ALTIMATE_BIN" review # replace with the scope command from the table below.
  2. The preferred name is mixed: install messages say "run altimate once", while recovery rows lead with altimate-code. The failure-table label reads "neither altimate nor altimate-code", the reverse of the try order. CHANGELOG.md:12 "Recovery messages name altimate for installs without altimate-code" undersells that they now lead with altimate-code.
  3. Add expect "$sh" "$STUBS/broken-altimate-code" '' 127 'altimate-code CLI not found (tried altimate-code, altimate)' to mirror the broken-altimate case.
  4. The PR title still reads "resolve CLI as altimate or altimate-code", the old order. The body's "same version as the Claude plugin release" is stale: #8 is now 1.1.1.
  5. The bare-call guard (tests/resolve-cli.sh:38) is anchored at line start and limited to 4 files, so it misses gh pr checkout 1 && altimate-code review, command -v altimate-code and new files. This fits the CI follow-up.

What's done well

  • The reorder is applied uniformly across all 6 blocks, the message, the tests, the docs, the CHANGELOG and the Spec.
  • The install-name note is precise (Homebrew, v0.7.1, pre-v0.7.1) and hedged while #1562 is open.
  • The new tests cover the exact adversarial case behind the reorder.

🤖 Generated with Claude Code

<user's task, verbatim>
ALTIMATE_TASK
)"
for ALTIMATE_NAME in altimate-code altimate; do

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-blocking (cross-repo): this order is right, but altimate-claude-plugin#8 still has the old one, so the change set currently resolves the CLI in opposite orders.

At 2c8423c, claude-plugin#8 still has for ALTIMATE_NAME in altimate altimate-code and (tried altimate, altimate-code) in all 7 blocks (commands/altimate.md:27,49, commands/review.md:25, skills/altimate-code/SKILL.md:52,90,117, skills/review/SKILL.md:35). On a machine with both names, or with a foreign altimate earlier on PATH, this plugin runs altimate-code and the Claude plugin runs altimate. The issue this commit fixes is still live there.

Still to port to #8:

  • the order and message in all 7 blocks;
  • tests: both → ran altimate-code, plus the foreign-altimate-first and broken-altimate-code-first cases;
  • the 3-clause install-name sentence ("…installs older than v0.7.1 expose only altimate-code") and the "tries altimate-code first, because no other tool uses that name" sentence;
  • recovery and session list text (altimate-code (altimate on installs without altimate-code));
  • the 1.1.1 CHANGELOG bullet, which still says "resolve the CLI as altimate, its canonical name";
  • the PR title.

After that, the two tests/resolve-cli.sh files should differ only in the SKILL.md:2/:3 block count. Not blocking this approval, but ideally the two land together once #8 matches.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants