-
Notifications
You must be signed in to change notification settings - Fork 4.4k
feat(copilot): make cloud coding-agent files opt-in #1517
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
0d600d9
3f97128
c4d4332
b4113d5
fe54364
99aef0d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| --- | ||
| "@fission-ai/openspec": minor | ||
| --- | ||
|
|
||
| Make GitHub Copilot cloud coding-agent files opt-in. Selecting the `github-copilot` tool no longer silently writes a GitHub Actions workflow into `.github/`; `openspec init` now asks first (default No) and remembers the choice in `openspec/config.yaml` (`githubCopilot.cloudAgent`). Use `--copilot-cloud` / `--no-copilot-cloud` to decide non-interactively. | ||
|
|
||
| - `openspec update` never prompts — it only refreshes cloud files for projects that opted in (or that already have generated cloud files, so existing setups keep working). | ||
| - Opting out (`--no-copilot-cloud` or `cloudAgent: false`) removes OpenSpec-managed cloud files; a user-customized file is always preserved, never overwritten or deleted. | ||
| - `init` and `update` now report whether cloud files were written, skipped, or left untouched — and if you already have your own `copilot-setup-steps.yml`, they say it was preserved and that you need to add the OpenSpec install step by hand. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -102,6 +102,8 @@ openspec init [path] [options] | |
| | `--force` | Auto-cleanup legacy files without prompting | | ||
| | `--profile <profile>` | Override global profile for this init run (`core` or `custom`) | | ||
| | `--no-animation` | Show a static welcome screen instead of the animated one | | ||
| | `--copilot-cloud` | Set up GitHub Copilot [cloud coding-agent files](supported-tools.md#github-copilot-cloud-coding-agent) without prompting | | ||
| | `--no-copilot-cloud` | Skip GitHub Copilot cloud coding-agent files without prompting | | ||
|
Comment on lines
+105
to
+106
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win Document that the cloud flags require selecting The runtime ignores
📍 Affects 2 files
🤖 Prompt for AI Agents |
||
|
|
||
| `--profile custom` uses whatever workflows are currently selected in global config (`openspec config profile`). | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -18,6 +18,7 @@ The `openspec/config.yaml` file is the easiest way to customize OpenSpec for you | |
| - **Inject project context** - AI sees your tech stack, conventions, etc. | ||
| - **Add per-artifact rules** - Custom rules for specific artifacts | ||
| - **Add per-operation guidance** - Advisory preferences for apply and archive work | ||
| - **Remember integration choices** - e.g. the [GitHub Copilot cloud coding agent](supported-tools.md#github-copilot-cloud-coding-agent) opt-in | ||
|
|
||
| ### Quick Setup | ||
|
|
||
|
|
@@ -52,6 +53,11 @@ operations: | |
| archive: | ||
| guidance: | ||
| - Keep the completion summary concise | ||
|
|
||
| # Set by `openspec init` when you choose (or decline) the GitHub Copilot | ||
| # cloud coding agent; controls whether `init`/`update` generate its files. | ||
| githubCopilot: | ||
| cloudAgent: false | ||
|
Comment on lines
+56
to
+60
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win Clarify that This manual configuration example persists a decision. It prevents later prompting and causes updates to remove managed cloud-agent files. Tell users to omit the optional block when no decision is intended, or label this example as an explicit opt-out. 🤖 Prompt for AI Agents |
||
| ``` | ||
|
|
||
| ### How It Works | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -102,7 +102,7 @@ to read the hint. | |
| | ZCode (`zcode`) | `.zcode/skills/openspec-*/SKILL.md` | `.zcode/commands/opsx/<id>.md` | | ||
| | Shared `.agents` skills (`agents`) | `.agents/skills/openspec-*/SKILL.md` | Not generated (no command adapter; use skill-based `/openspec-*` invocations) | | ||
|
|
||
| \*\* GitHub Copilot prompt files are recognized as custom slash commands in IDE extensions (VS Code, JetBrains, Visual Studio). Copilot CLI does not currently consume `.github/prompts/*.prompt.md` directly. | ||
| \*\* GitHub Copilot prompt files are recognized as custom slash commands in IDE extensions (VS Code, JetBrains, Visual Studio). Copilot CLI does not currently consume `.github/prompts/*.prompt.md` directly. Selecting `github-copilot` can also set up the GitHub-hosted **cloud coding agent** — see [GitHub Copilot cloud coding agent](#github-copilot-cloud-coding-agent) below. | ||
|
|
||
| \*\*\* Hermes loads skills from `~/.hermes/skills/` by default. To use project-local OpenSpec skills, add the project `.hermes/skills/` directory to `skills.external_dirs` in `~/.hermes/config.yaml`; Hermes then exposes skills with user-facing slash invocations such as `/openspec-propose`. | ||
|
|
||
|
|
@@ -114,6 +114,24 @@ repo-local `.minimax` or `.mavis` directories. Commands-only delivery leaves | |
| existing global MiniMax Code skills untouched so one project's delivery setting | ||
| cannot remove skills used by another project. | ||
|
|
||
| ### GitHub Copilot cloud coding agent | ||
|
|
||
| GitHub's [Copilot coding agent](https://docs.github.com/en/copilot/using-github-copilot/coding-agent) runs on GitHub in a GitHub Actions environment — separate from Copilot in your editor. OpenSpec can set it up to use the OpenSpec CLI by generating two files: | ||
|
|
||
| - `.github/workflows/copilot-setup-steps.yml` — installs `@fission-ai/openspec` in the agent's environment | ||
| - `.github/agents/openspec.agent.md` — tells the agent how to drive OpenSpec | ||
|
|
||
| Because this writes a GitHub Actions workflow into your repository, it is **opt-in**: | ||
|
|
||
| | How | Behavior | | ||
| |-----|----------| | ||
| | `openspec init` (interactive) | Asks whether to set up cloud files. Default is **No**. | | ||
| | `openspec init --copilot-cloud` | Sets them up without prompting (for scripts/CI). | | ||
| | `openspec init --no-copilot-cloud` | Skips them without prompting, and removes any previously generated ones. | | ||
| | `openspec update` | Never prompts. Refreshes the files only if you opted in (or the project already has them). If you opted out, it removes OpenSpec-managed cloud files. | | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win Refer specifically to existing OpenSpec-managed files. “The project already has them” can include customized or user-owned files. Replace it with “existing OpenSpec-managed files” so this sentence matches the protection guarantee in lines 132-133. 🤖 Prompt for AI Agents |
||
|
|
||
| Your choice is saved in `openspec/config.yaml` as `githubCopilot.cloudAgent: true|false`, so non-interactive updates honor it. OpenSpec only ever writes or removes files whose content it generated — if you customize `copilot-setup-steps.yml` or `openspec.agent.md`, or already have your own, it is left untouched (and `init`/`update` tell you so). | ||
|
|
||
| ### When to pick the shared `.agents` target | ||
|
|
||
| `agents` is the vendor-neutral option: it writes skills to `.agents/skills/`, the | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Describe the non-interactive default.
openspec initdoes not always prompt. In non-interactive mode without either flag, it skips cloud files and does not persist a choice. State this behavior here to prevent incorrect automation assumptions.Based on PR objectives: “Non-interactive initialization without a flag skips cloud files without persisting a choice.”
🧰 Tools
🪛 LanguageTool
[uncategorized] ~5-~5: The official name of this software platform is spelled with a capital “H”.
Context: ...y writes a GitHub Actions workflow into
.github/;openspec initnow asks first (defa...(GITHUB)
🤖 Prompt for AI Agents