Open
Conversation
Add 'copilot' as a recognized host type alongside 'claude' and 'codex'. Copilot uses the same .agents/skills/ output directory and dynamic GSTACK_ROOT preamble pattern as codex, with ~/.copilot/skills/gstack as the default global path. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add copilot as a recognized host alongside claude, codex, and kiro. Auto-detection checks for 'gh copilot --version'. Global install goes to ~/.copilot/skills/gstack following the same pattern as kiro. Copies .agents/skills/ output and rewrites paths for copilot. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add 'copilot' as a tool type alongside claude_code, codex, and gemini. Scans ~/.config/gh-copilot/ for conversation logs. Includes copilot in all session counts, repo aggregations, and summary output. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a Copilot freshness section alongside the existing Codex check. Runs gen-skill-docs with --host copilot --dry-run to verify generated files are up to date. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Build script now generates skill docs for copilot host alongside claude and codex. Package description mentions Copilot CLI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Verify that gen-skill-docs --host copilot succeeds alongside the existing claude and codex checks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add copilot alongside codex in the multi-agent install section. Document --host copilot flag and ~/.copilot/skills/ install path. Add Copilot to the retro global tool list and AGENTS.md gen command. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Create copilot-session-runner.ts paralleling codex-session-runner.ts - Create copilot-e2e.test.ts paralleling codex-e2e.test.ts - Update gen-skill-docs tests to expect --host copilot support - Update global-discover tests to expect copilot session property - Add test:copilot and test:copilot:all npm scripts - Include copilot-e2e.test.ts in eval/e2e test suites Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename 'Dual-host' section to 'Multi-host', add copilot generation commands, update comparison table, and add copilot to new skill instructions and freshness check commands. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add note about gh CLI + copilot extension requirement for the copilot-e2e.test.ts E2E tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The GitHub Copilot CLI went GA in February 2026 as a standalone binary (\copilot\) installed via \ pm install -g @github/copilot\. Update all references from the old gh extension (\gh copilot\) to the new standalone: - setup: auto-detect via \command -v copilot\ (not gh copilot --version) - gstack-global-discover: scan ~/.copilot/session-state/ (not ~/.config/gh-copilot/) - copilot-e2e.test.ts: check for \copilot\ binary, update skip messages - copilot-session-runner.ts: spawn \copilot -p\ (not gh copilot suggest) - gen-skill-docs.test.ts: update auto-detect assertion - CLAUDE.md: update prereqs note Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add Copilot CLI support changelog entry following the project's user-facing style: what you can now do, not implementation details. VERSION: 0.11.7.0 → 0.11.9.0. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Expand the host comparison table in CONTRIBUTING.md from 3 columns (Claude | Codex / Copilot) to 4 columns (Claude | Codex | Copilot) so each host has its own column. Replace 'Codex/Copilot' shorthand with explicit enumeration in README.md, CONTRIBUTING.md, setup, and gen-skill-docs.ts comments. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fix three issues found in code review:
1. P1: Remove --host copilot from build pipeline, CI, and skill:check.
Copilot and Codex share .agents/skills/ — running both overwrites
codex output with copilot-flavored preambles. Copilot-specific paths
are rewritten at setup time via sed (same pattern as Kiro).
2. P1: Rewrite scanCopilot() to walk session subdirectories.
Copilot CLI stores sessions as ~/.copilot/session-state/{id}/ dirs
containing events.jsonl and workspace.yaml, not top-level files.
3. P2: Copy auth config from real ~/.copilot/ to temp HOME in E2E runner.
Without this, copilot -p in temp HOME loses login state and fails
instead of running the test.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…codex exclusion reason - Remove '(same pattern as Kiro)' — Kiro isn't documented in CONTRIBUTING.md, so referencing it introduces an unexplained concept. Replaced with 'via sed'. - Change Copilot /codex skill exclusion from 'self-referential' to 'shares Codex output' — Copilot ≠ Codex, so 'self-referential' is technically wrong. The real reason is Copilot shares Codex's generated .agents/skills/ directory. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Ha I was just about to spin up a similar PR but you beat me to it; thank you! |
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
Add first-class GitHub Copilot CLI support to gstack. All 28 skills now work with the standalone Copilot CLI (
copilotbinary, GA February 2026) alongside the existing Claude Code and Codex support.This is a purely additive change — no existing Claude Code or Codex functionality is altered.
Related: #289 (host integration contract RFC). This PR follows the existing Codex pattern for pragmatic incremental support. If the adapter abstraction from #289 lands, Copilot support can be migrated onto it — the changes here are scoped and self-contained.
Motivation
The GitHub Copilot CLI went GA in February 2026 as a standalone binary, separate from the old
gh copilotextension. It has its own config directory (~/.copilot/), session storage (~/.copilot/session-state/{id}/), and skill discovery. gstack should support it as a first-class host so users on Copilot CLI get the same experience as Claude Code and Codex users.Architecture decisions
.agents/skills/with Codex. Both are non-Claude hosts using the same skill discovery path. Only--host codexis run during generation; Copilot-specific paths (~/.copilot/skills/gstack) are rewritten atsetup --host copilottime via sed.--host codex, not--host copilot. Running both would overwrite the same.agents/skills/directory. This avoids the conflict entirely.~/.copilot/session-state/{session-id}/directories containingevents.jsonlandworkspace.yaml, not flat files.scanCopilot()walks these subdirs.copilot -pwith a temp HOME loses login state. The runner copiesconfig.jsonandhosts.jsonfrom the real~/.copilot/to the temp HOME, andGH_TOKENpasses through via env.Copilot CLI facts
copilot(standalone, notgh copilot)npm install -g @github/copilot(also: brew, winget, install script)~/.copilot/(overridable viaCOPILOT_HOME)~/.copilot/session-state/{session-id}/copilotcopilot -p "prompt"Files changed (14)
Core runtime (3 files)
scripts/gen-skill-docs.ts'copilot'to Host type, HOST_PATHS, preamble bash. Broadenedhost === 'codex'gates to include copilot.setup--host copilotwith auto-detection viacommand -v copilot. Full install section copies.agents/skills/output and rewrites paths via sed.bin/gstack-global-discover.tsscanCopilot()— walks~/.copilot/session-state/{id}/subdirectories forevents.jsonlandworkspace.yaml.Build & CI (2 files)
package.jsontest:copilotscripts. Build does NOT include--host copilot(Codex output covers both)..github/workflows/skill-docs.yml--host copilotCI check (Codex check covers shared.agents/skills/).Documentation (5 files)
README.mdAGENTS.mdCONTRIBUTING.mdCLAUDE.mdCHANGELOG.mdTests (4 files)
test/copilot-e2e.test.tscopilot --versionavailability and spawning with skill context.test/helpers/copilot-session-runner.tscopilot -p. Copies auth config from real~/.copilot/to temp HOME.test/gen-skill-docs.test.tscommand -v copilotin auto-detect output.test/global-discover.test.tsVersioning (1 file)
VERSIONTesting
Copilot E2E tests (
test/copilot-e2e.test.ts) require thecopilotbinary installed and authenticated. They skip gracefully when unavailable.How to verify