garrytan / garrytan/gstack

Add GitHub Copilot CLI as a supported host

Open
#393 10 comments 33 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
133k
Forks
19.9k
Avg merge
18h 46m
Merged PRs (30d)
26

Description

## Summary

The GitHub Copilot CLI went GA in February 2026 as a standalone binary (`copilot`), separate from the old `gh copilot` extension. It supports skill discovery via `~/.copilot/skills/` and has its own session storage at `~/.copilot/session-state/{id}/`.

gstack already supports Claude Code, Codex, Gemini CLI, and Cursor. Copilot CLI fits the same pattern — it uses `.agents/skills/` for repo-local discovery and has a global install path at `~/.copilot/skills/gstack`.

## What would Copilot support look like?

Based on the existing Codex pattern:

- **gen-skill-docs.ts**: Add `'copilot'` host type. Copilot shares `.agents/skills/` output with Codex — only the global fallback path differs (`~/.copilot/skills/gstack` vs `~/.codex/skills/gstack`).
- **setup**: Add `--host copilot` with auto-detection via `command -v copilot`. Rewrite Codex output paths at install time via sed (same pattern as Kiro).
- **gstack-global-discover.ts**: Add `scanCopilot()` for session discovery at `~/.copilot/session-state/`.
- **Tests**: Copilot E2E runner paralleling the Codex session runner, updated assertions in existing tests.
- **Docs**: README, CONTRIBUTING, AGENTS.md updated to mention Copilot as a peer host.

No build pipeline changes needed — Copilot derives from Codex output at setup time. No architectural changes.

## Copilot CLI facts

| Aspect | Value |
|--------|-------|
| Binary | `copilot` (standalone, not `gh copilot`) |
| Install | `npm install -g @github/copilot` (also: brew, winget, install script) |
| Config dir | `~/.copilot/` |
| Session data | `~/.copilot/session-state/{session-id}/` |
| Docs | https://docs.github.com/copilot/how-tos/set-up/install-copilot-cli |

## Reference implementation

I've put together a working implementation in [PR #396](https://github.com/garrytan/gstack/pull/396). 501 lines added across 14 files, follows the existing Codex/Kiro pattern exactly. Happy to close it if you'd prefer to implement this differently.

Related: [#289](https://github.com/garrytan/gstack/issues/289) (host integration contract RFC) — this would be another concrete data point for that discussion.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.