Commit graph

11213 commits

Author SHA1 Message Date
Max Beizer
dde46dc424
Add "Resource not accessible" to ProjectsV2IgnorableError
When a token (GitHub App, fine-grained PAT, or GITHUB_TOKEN) lacks the
project permission, querying projectItems on a PR or issue fails with
"Resource not accessible by integration" or "Resource not accessible by
personal access token". ProjectsV2IgnorableError did not match these
errors, causing commands like pr view, pr edit, and issue view to fail
entirely instead of gracefully omitting project data.

Add "Resource not accessible by" as an ignorable error prefix. This is
safe because ProjectsV2IgnorableError is only called in project-specific
code paths.

Closes #13280

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-24 17:16:00 -05:00
Babak K. Shandiz
ea7a2450cd
Merge pull request #13274 from cli/babakks/fix-zsh-completion-on-debian
chore: fix zsh completion on debian
2026-04-24 14:54:29 +01:00
Babak K. Shandiz
de6a9eb3e4
chore: fix zsh completion on debian
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-24 14:42:40 +01:00
Sam Morrow
2c1f5b2f72
Merge pull request #13264 from SamMorrowDrums/sammorrowdrums/skill-ghec-data-residency
feat(skills): support GHEC with data residency hosts
2026-04-24 11:45:28 +02:00
Sam Morrow
96b9af3443
Merge pull request #13266 from cli/sammorrowdrums/fix-skill-install-flat-path
Install skills flat by Name, not namespaced InstallName
2026-04-24 11:41:03 +02:00
Sam Morrow
5a121bf331
Merge pull request #13265 from SamMorrowDrums/sammorrowdrums/preview-allow-hidden-dirs-flag
feat(skills): add --allow-hidden-dirs flag to preview command
2026-04-24 11:39:24 +02:00
William Martin
352a00e83c
Merge pull request #13241 from cli/dependabot/go_modules/github.com/gdamore/tcell/v2-2.13.9
chore(deps): bump github.com/gdamore/tcell/v2 from 2.13.8 to 2.13.9
2026-04-23 19:26:25 +02:00
William Martin
d13a1858d7
Merge pull request #13273 from cassidyjames/patch-1
docs: correct typo in Linux Homebrew copy
2026-04-23 19:23:21 +02:00
Cassidy James Blaede
993d4bb630
install_linux: correct typo in Homebrew copy
Just a little typo I noticed when looking at the instructions. updated → updates
2026-04-23 10:35:16 -06:00
William Martin
db234016a1
Merge pull request #13206 from cli/dependabot/go_modules/charm.land/bubbletea/v2-2.0.6
chore(deps): bump charm.land/bubbletea/v2 from 2.0.2 to 2.0.6
2026-04-23 16:12:55 +02:00
dependabot[bot]
aba7c591f3
chore(deps): bump charm.land/bubbletea/v2 from 2.0.2 to 2.0.6
Bumps [charm.land/bubbletea/v2](https://github.com/charmbracelet/bubbletea) from 2.0.2 to 2.0.6.
- [Release notes](https://github.com/charmbracelet/bubbletea/releases)
- [Commits](https://github.com/charmbracelet/bubbletea/compare/v2.0.2...v2.0.6)

---
updated-dependencies:
- dependency-name: charm.land/bubbletea/v2
  dependency-version: 2.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 14:04:05 +00:00
dependabot[bot]
47f379cf0d
chore(deps): bump github.com/gdamore/tcell/v2 from 2.13.8 to 2.13.9
Bumps [github.com/gdamore/tcell/v2](https://github.com/gdamore/tcell) from 2.13.8 to 2.13.9.
- [Release notes](https://github.com/gdamore/tcell/releases)
- [Changelog](https://github.com/gdamore/tcell/blob/main/CHANGESv3.md)
- [Commits](https://github.com/gdamore/tcell/compare/v2.13.8...v2.13.9)

---
updated-dependencies:
- dependency-name: github.com/gdamore/tcell/v2
  dependency-version: 2.13.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 14:03:29 +00:00
William Martin
3a0d49525d
Merge pull request #13163 from cli/dependabot/go_modules/charm.land/lipgloss/v2-2.0.3
chore(deps): bump charm.land/lipgloss/v2 from 2.0.2 to 2.0.3
2026-04-23 16:02:34 +02:00
William Martin
7051e276fd
Merge pull request #13162 from cli/dependabot/go_modules/github.com/google/go-containerregistry-0.21.5
chore(deps): bump github.com/google/go-containerregistry from 0.21.4 to 0.21.5
2026-04-23 16:02:00 +02:00
William Martin
abc0dc6c23
Merge pull request #13161 from cli/dependabot/go_modules/github.com/mattn/go-isatty-0.0.21
chore(deps): bump github.com/mattn/go-isatty from 0.0.20 to 0.0.21
2026-04-23 16:01:31 +02:00
William Martin
a9d36fb9ef
Merge pull request #13272 from cli/wm/fix-log-terminal-injection
Fix log terminal injection
2026-04-23 15:40:29 +02:00
William Martin
c8e0139919
Update acceptance/testdata/workflow/run-view-log-escape-sequences.txtar
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-23 15:31:38 +02:00
William Martin
9a3dc9fce7 Fix log terminal injection 2026-04-23 13:56:33 +02:00
sammorrowdrums
d961de44d7 fix(skills): include --allow-hidden-dirs in preview hint from install
The review hint printed after `gh skill install --allow-hidden-dirs`
suggests `gh skill preview` commands. Those commands would fail for
hidden-dir skills because preview would filter them out. Pass the
flag through so the suggested commands work as-is.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-23 10:23:26 +02:00
Copilot
2e93afc272 Install skills flat by Name, not namespaced InstallName
Most agent clients (Claude Code, Copilot, etc.) only discover immediate
subdirectories of their skills folder. When a skill repository used
namespaced paths like skills/author/my-skill/, the installer created
nested directories (e.g. .claude/skills/author/my-skill/) that clients
could not find.

This separates the skill's identity (InstallName, used for lockfile keys,
search, filtering, display) from the filesystem path (Name, used for the
install directory). Skills are now always installed flat:

  .claude/skills/my-skill/SKILL.md  (not .claude/skills/author/my-skill/)

Changes:
- installer: use skill.Name for directory paths instead of InstallName
- install.go: use skill.Name for overwrite checks and prompts
- collisions: detect conflicts by Name since flat install means two
  skills with the same Name but different Namespace values will collide
- update: clean up old namespaced directories when migrating to flat

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-23 01:26:31 +02:00
Copilot
8498bdf435 feat(skills): add --allow-hidden-dirs flag to preview command
Add support for the --allow-hidden-dirs flag in `gh skill preview`,
matching the existing pattern in `gh skill install`. This allows users
to preview skills located in hidden directories (e.g. .claude/skills/,
.agents/skills/).

Changes:
- Add AllowHiddenDirs field to PreviewOptions
- Register --allow-hidden-dirs flag on the preview command
- Switch from DiscoverSkills to DiscoverSkillsWithOptions to get all
  skills including hidden-dir ones
- Add filterHiddenDirSkills to exclude hidden-dir skills by default,
  showing a hint when they are found but excluded
- Print a warning when --allow-hidden-dirs is used and hidden skills
  are present
- Return an error when only hidden-dir skills exist without the flag

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-22 23:41:25 +02:00
sammorrowdrums
63262dce8b feat(skills): support GHEC with data residency hosts
Widen ValidateSupportedHost to accept tenancy hosts (*.ghe.com) alongside
github.com. GHEC with data residency uses these domains, and all skill
subcommands (search, install, preview, publish, update) now allow them.

GitHub Enterprise Server remains unsupported and is explicitly rejected
with a clear error message.

Also fix the lockfile writer to use the actual host when constructing
SourceURL instead of hardcoding github.com.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-22 23:27:38 +02:00
Babak K. Shandiz
3ad29588b8
Merge pull request #13259 from cli/fix-sample-rate-dimension-sync
Fix SetSampleRate not updating sample_rate dimension
2026-04-22 13:13:58 +01:00
William Martin
7095e2a4fc
Fix SetSampleRate not updating sample_rate dimension
The sample_rate common dimension was set once at service creation
time and never updated when SetSampleRate was called later. This
caused commands like 'gh skill publish' that override the sample
rate via PersistentPreRunE to report the wrong sample_rate in
telemetry events (e.g. 1 instead of 100).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-22 13:04:57 +01:00
William Martin
6d986480b8
Merge pull request #13258 from orbisai0security/fix-shell-injection-deployment-workflow
fix: using variable interpolation `${{ in deployment.yml...
2026-04-22 12:55:43 +02:00
orbisai0security
f52acd51e9 fix: yaml.github-actions.security.run-shell-injection.run-shell-injection security vulnerability
Automated security fix generated by Orbis Security AI
2026-04-22 16:05:54 +05:30
William Martin
6fffc2e66a
Merge pull request #13254 from cli/wm/enable-telemetry
Enable telemetry without env var
2026-04-22 12:16:33 +02:00
Babak K. Shandiz
b5757eab2a
Merge pull request #13244 from cli/kw/agent-skills
docs(skills): add gh and gh-skill agent skills
2026-04-21 19:26:07 +01:00
William Martin
90ef03ea38
Enable telemetry without env var 2026-04-21 18:40:02 +01:00
William Martin
3a6d4de90a
Merge pull request #13255 from cli/wm/log-no-events
Log when there is no telemetry
2026-04-21 19:30:51 +02:00
Sam Morrow
92e812b749
Merge pull request #13236 from cli/sammorrowdrums/skill-install-upstream-provenance 2026-04-21 19:29:31 +02:00
Babak K. Shandiz
0467ed499a
test(telemetry): assert ANSI escape chars for color codes
Signed-off-by: Babak K. Shandiz <babakks@github.com>
2026-04-21 18:05:28 +01:00
Babak K. Shandiz
ec4a3ed6bd
fix(telemetry): lower bias in sample bucket calc
Signed-off-by: Babak K. Shandiz <babakks@github.com>
2026-04-21 17:49:28 +01:00
William Martin
fe90f9a503
Add telemetry command (#13253) 2026-04-21 18:45:23 +02:00
Sam Morrow
50f0f8fc68
feat(skills): detect re-published skills and offer upstream install
When installing a skill whose SKILL.md contains github-repo metadata
pointing to a different repository, the CLI detects it as a re-published
skill and offers to redirect the install to the upstream source.

In interactive mode, the user is prompted to choose between the
re-publisher (default) and the upstream. In non-interactive mode,
the install proceeds from the re-publisher with a notice.

The --upstream flag skips the prompt and redirects to upstream directly,
enabling non-interactive upstream installs in CI/scripts.

If the user chooses upstream, the install restarts from that repo,
resolving the latest version and discovering skills fresh. A
skill_upstream_redirect telemetry event is emitted to track redirects.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-21 18:39:35 +02:00
William Martin
571bb1c923 Log when there is no telemetry 2026-04-21 18:15:04 +02:00
William Martin
6b811db467 Add telemetry command 2026-04-21 17:13:27 +02:00
William Martin
e52070e07e
Merge pull request #13205 from cli/wm/record-official-extension-telemetry
Record official extension telemetry
2026-04-21 11:57:11 +02:00
William Martin
c50fb793ea Record official extension telemetry 2026-04-21 11:48:32 +02:00
Sam Morrow
1b236f23c5
Merge pull request #13249 from cli/sammorrowdrums/fix-skill-install-preview-sha
fix(skills): match skills by install name in preview command
2026-04-21 11:30:11 +02:00
Sam Morrow
6fcc9c24df
fix(skills): prioritize DisplayName/Name over InstallName match
Use a two-pass search so exact DisplayName and Name matches are
preferred over InstallName. This avoids incorrectly selecting a
plugins-convention skill via InstallName when a standard namespaced
skill with a matching DisplayName exists later in the sorted slice.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-21 10:09:20 +02:00
Sam Morrow
a67f4f7303
Merge pull request #13235 from cli/sammorrowdrums/fix-skill-install-discovery
Make skill discovery less strict: support nested `skills/` directories
2026-04-21 10:01:53 +02:00
Sam Morrow
1160943af3
fix(skills): match skills by install name in preview command
The preview command's selectSkill function only matched skills by
DisplayName() and Name. For plugins-convention skills, the install
hint outputs InstallName() (namespace/name), which matched neither -
DisplayName() includes a [plugins] prefix and Name is just the base
name. This caused 'skill not found' errors when users ran the
suggested preview command after install.

Add InstallName() as an additional match criterion so that namespaced
skill identifiers produced by the install hint are accepted.

Closes #13248

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-21 09:56:27 +02:00
Kynan Ware
74d377313a
use the right json field names for skills
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-04-20 14:22:08 -06:00
Kynan Ware
01e345082c
fix totalCount guidance
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-04-20 14:21:26 -06:00
Kynan Ware
65974f568f docs(skills): note --template collisions and single-string search
Addresses review feedback on PR #13244:

- Flag that --template/-T collides with body-template flags on
  pr create / issue create, so agents should check --help.
- Recommend the single quoted-string form for gh search (matching
  --search), since multi-arg invocations join oddly and can produce
  invalid queries.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-20 14:18:46 -06:00
Kynan Ware
72884d9e41
backtick skill filename
Co-authored-by: Babak K. Shandiz <babakks@github.com>
2026-04-20 14:14:07 -06:00
Kynan Ware
01ca82955b docs(skills): drop hand-copied naming rules from gh-skill
Avoids drift between this skill and the actual validation logic in
publish. Agents should run `gh skill publish --dry-run` to learn the
current rules from the source of truth.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-20 14:12:27 -06:00
Kynan Ware
991e37dc25
use hyphen instead 2026-04-20 14:07:56 -06:00
Kynan Ware
33789149b9 docs(skills): add gh and gh-skill agent skills
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-20 13:38:59 -06:00