Skip to content

Adopt gh 2.95.0 skill changes; require gh ≥ 2.95.0#4

Merged
harder merged 2 commits into
mainfrom
harder/feat/gh-295-skill-adoption
Jun 18, 2026
Merged

Adopt gh 2.95.0 skill changes; require gh ≥ 2.95.0#4
harder merged 2 commits into
mainfrom
harder/feat/gh-295-skill-adoption

Conversation

@harder

@harder harder commented Jun 18, 2026

Copy link
Copy Markdown
Owner

GitHub CLI 2.95.0 shipped three gh skill changes. This PR adopts them. (Also carries a pre-existing remove-flow UI fix as its own commit — see below.)

What changed

Require gh ≥ 2.95.0 (cli/cli#13449)

2.95.0 makes gh skill update atomic and in-place, fixing a bug where it could relocate namespaced skills and delete the original install directory. SkillView's Changes tab drives gh skill update --all, so the minimum is raised 2.94.0 → 2.95.0. Updated GhBinaryLocator.MinimumVersion, the user-facing requirement strings (Doctor, Install, Env probe/report, CLI doctor, README, Gh service doc-comments) and tests. "Shipped in 2.94" provenance notes are intentionally left as-is.

Honor CLAUDE_CONFIG_DIR (cli/cli#13523)

gh now writes Claude user-scope skills to $CLAUDE_CONFIG_DIR/skills. The filesystem scanner hardcoded ~/.claude/skills and would miss them (degrading them to gh skill list-only records). ScanRootResolver now also scans $CLAUDE_CONFIG_DIR/skills when the env var is set, alongside the default location.

Per-repo discovery picker (cli/cli#13548)

gh skill install <repo> run non-interactively now lists the repo's skills instead of erroring. New capability:

  • GhSkillInstallService.ListRepoSkillsAsync + a tolerant TSV parser + BuildInstallPlan (all selected → --all, else per-name).
  • RepoSkillPickerModal — a checklist (Space toggles, A/N select all/none) reusing InstallConfirmModal's scope/agent pickers.
  • The A shortcut now discovers-then-picks via SkillViewWorkflowCoordinator.OpenRepoDiscoveryDialog, falling back to install-all if discovery fails or the repo lists nothing.

This also closes a latent pitfall: skillview install <repo> (no skill, no --all) now lists rather than errors — the picker is the intended consumer.

Commits

  • fix(ui) — pre-existing remove-flow fixes (RemoveScreen sizing/selection sync, r→refresh rebind, post-remove/cleanup tab reload). Bundled here as a separate commit.
  • feat(gh) — the gh 2.95.0 adoption above.

Testing

  • Full suite 513 passing (+10: listing args, TSV parse, install plan, CLAUDE_CONFIG_DIR scan roots, 2.95 minimum). Solution builds clean.
  • ⚠️ The Terminal.Gui picker modal could not be exercised interactively in the agent harness — its pure logic is unit-tested and it reuses proven layout code, but the dialog layout/scrolling should be smoke-tested by running the app (A on a Discover result).

🤖 Generated with Claude Code

harder and others added 2 commits June 18, 2026 11:28
- Reload the Installed tab after a modal remove so the removed row no
  longer lingers until re-activation.
- Bind `r` to refresh the active tab (was aliased to the log toggle);
  `l` alone now toggles logs. RefreshActiveTab invalidates the gh skill
  list cache and reloads Installed/Changes or re-runs the Discover query.
- Refresh the active tab after cleanup removes or ignores skills.
- Pin the RemoveScreen wizard to a percentage size so Dim.Fill content
  (radio list, Review/Confirm markdown) gets real space instead of
  collapsing to the lone fixed label.
- Re-sync the remove evaluation from the live radio selection on step
  change and focus change, so Review/Confirm always match what's shown.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
GitHub CLI 2.95.0 shipped three skill-related changes. Adopt them:

- Raise the minimum gh from 2.94.0 → 2.95.0. 2.95.0 makes `gh skill
  update` atomic and in-place (cli/cli#13449), fixing a bug where it
  could relocate namespaced skills and delete the original install dir;
  SkillView's Changes tab drives `gh skill update --all`. Update the
  constant, requirement strings (Doctor, Install, Env probe/report, CLI
  doctor, README, Gh service doc-comments) and tests. "Shipped in 2.94"
  provenance notes are left as-is.

- Honor CLAUDE_CONFIG_DIR in the filesystem scanner (cli/cli#13523).
  gh now writes Claude user-scope skills to $CLAUDE_CONFIG_DIR/skills;
  ScanRootResolver adds that root (alongside ~/.claude/skills) so the
  scan corroborates `gh skill list`.

- Add a per-repo discovery picker (cli/cli#13548). `gh skill install
  <repo>` run non-interactively now lists the repo's skills instead of
  erroring. GhSkillInstallService gains ListRepoSkillsAsync + a tolerant
  TSV parser + BuildInstallPlan (all skills → --all, else per-name).
  RepoSkillPickerModal presents a checklist (reusing InstallConfirmModal's
  scope/agent pickers); the `A` shortcut now discovers-then-picks via
  SkillViewWorkflowCoordinator.OpenRepoDiscoveryDialog, falling back to
  install-all if discovery fails.

Tests: +10 (listing args, TSV parse, install plan, CLAUDE_CONFIG_DIR
scan roots, 2.95 minimum). Full suite: 513 passing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@harder harder merged commit b65e2ee into main Jun 18, 2026
6 checks passed
@harder harder deleted the harder/feat/gh-295-skill-adoption branch June 18, 2026 17:42
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.

1 participant