feat(cli): OpenSkills fallback when no Tier-1 client detected#116
Merged
Conversation
…kill `openhop init` covers Claude Code / Cursor / Windsurf / Cline / Continue. For everything else (Codex, Gemini, Junie, Copilot, OpenCode, Goose, Antigravity, ...) the launch plan delegates to OpenSkills, but a user running `init` against a setup that has none of the Tier-1 clients was left with no signal that OpenSkills exists. Print a stderr fallback when no Tier-1 client placed (or would-place) the skill — this also catches advisory-only detections like Continue.dev that don't actually have a skills surface. Suppressed under --json so machine consumers keep clean stdout; exit-code policy is unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
WalkthroughThe init command now emits a stderr message when ChangesCLI User Messaging for Uninstalled Skills
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
4 tasks
naorsabag
added a commit
that referenced
this pull request
May 10, 2026
…ill (#118) The fallback hint introduced in #116 fired whenever no install happened in this run, including the re-run case where a Tier-1 client was detected and already had the skill. That produced a self-contradicting output: "claude-code skipped already installed" followed by "No Tier-1 client received the skill." Extract the gate into a pure `shouldPrintOpenSkillsFallback(results)` predicate that returns true only when no Tier-1 client has the skill — i.e., every non-advisory result is `skipped: not detected`. Treat `skipped: already installed`, fresh installs, and would-install (`--dry-run`) as "Tier-1 received the skill" so the hint stays quiet on re-runs. Test the predicate directly against InstallResult vectors. Cover: no detection, advisory-only, already-installed re-run, fresh install, dry-run. Closes the CodeRabbit feedback on #116. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
naorsabag
added a commit
that referenced
this pull request
May 10, 2026
…test - @openhop/server: 0.1.0-beta.2 → 0.1.0 - @openhop/web: 0.1.0-beta.4 → 0.1.0 - openhop CLI: 0.1.0-beta.6 → 0.1.0 + bump pinned @openhop/server, @openhop/web deps + hardcoded --version publish.yml: drop `--tag beta` from all three publish steps. With no --tag, `npm publish` sets the `latest` dist-tag — so npmjs.com pages and `npm install <pkg>` (no @beta suffix) automatically reflect the new version on every successful publish. No more manual `npm dist-tag add latest` step. Bundles 13 PRs since v0.1.0-beta.6: Web (heavy): - #106 sprite URLs use Vite BASE_URL (Pages 404 fix) - #107 example flow cards on empty state - #108 sidebar + carrot-click highlight for string-data steps - #109 all 5 examples grouped under examples/ + first-visit autoload - #112 per-step auto-zoom + playback speed button - #113 collapse FLOWS / INSPECT by default on mobile - #114 lazy editor + vendor-split chunks + meta description - #115 filter codemirror from <modulepreload> - #117 memo FlowNode + GPU-layer sprites for smoother pan/zoom CLI: - #116 OpenSkills fallback hint when no Tier-1 client gets the skill - #118 suppress the hint when Tier-1 already has the skill Server: untouched code; bumped to keep the 0.1.0 set consistent. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
naorsabag
added a commit
that referenced
this pull request
May 11, 2026
…test (#119) - @openhop/server: 0.1.0-beta.2 → 0.1.0 - @openhop/web: 0.1.0-beta.4 → 0.1.0 - openhop CLI: 0.1.0-beta.6 → 0.1.0 + bump pinned @openhop/server, @openhop/web deps + hardcoded --version publish.yml: drop `--tag beta` from all three publish steps. With no --tag, `npm publish` sets the `latest` dist-tag — so npmjs.com pages and `npm install <pkg>` (no @beta suffix) automatically reflect the new version on every successful publish. No more manual `npm dist-tag add latest` step. Bundles 13 PRs since v0.1.0-beta.6: Web (heavy): - #106 sprite URLs use Vite BASE_URL (Pages 404 fix) - #107 example flow cards on empty state - #108 sidebar + carrot-click highlight for string-data steps - #109 all 5 examples grouped under examples/ + first-visit autoload - #112 per-step auto-zoom + playback speed button - #113 collapse FLOWS / INSPECT by default on mobile - #114 lazy editor + vendor-split chunks + meta description - #115 filter codemirror from <modulepreload> - #117 memo FlowNode + GPU-layer sprites for smoother pan/zoom CLI: - #116 OpenSkills fallback hint when no Tier-1 client gets the skill - #118 suppress the hint when Tier-1 already has the skill Server: untouched code; bumped to keep the 0.1.0 set consistent. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
openhop initnow prints a stderr line pointing the user atnpx openskills install naorsabag/openhopwhen no Tier-1 client received the skill.READINESS-AUDIT.md.--jsonso machine consumers keep clean stdout; exit-code policy unchanged.Why
initcovers Claude Code / Cursor / Windsurf / Cline / Continue. Everything else (Codex CLI, Gemini CLI, Junie, Copilot, OpenCode, Goose, Antigravity, …) routes through OpenSkills per the launch plan — but a user runninginiton a machine without any Tier-1 client got no signal that OpenSkills was the next step. Same trigger fires when only an advisory client like Continue.dev was detected (no real skill placement).Test plan
npm testinpackages/cli— 83/83 pass (init suite is 20/20).HOME=$(mktemp -d) node packages/cli/dist/index.js init→ fallback line on stderr, exit 4 (EXIT_NOT_FOUND).HOME=$(mktemp -d) node packages/cli/dist/index.js init --json→ clean JSON on stdout, no stderr line.🤖 Generated with Claude Code
Summary by CodeRabbit
openhop initcommand to provide clearer feedback when a skill is not installed to any client, including a suggested command for installation.