Open Horizons workspace kit
Publish repository-scoped assets that plugin installation does not activate automatically, or create
explicit project copies for teams that require checked-in primitives. Planning is the default and
uninstall archives unchanged managed files while preserving files changed after installation.
When to invoke
- "Install the Open Horizons AEG feature in this repository."
- "Preview the Open Horizons instructions and VS Code prompts."
- "Publish the Open Horizons workflow and issue-template automation."
- "Uninstall only files managed by the Open Horizons workspace kit."
Profiles
| Profile |
Published assets |
aeg |
Four AEG agents, the AEG feature skill, one instruction, five VS Code prompts, and the safety hook. |
core |
AGENTS.md, repository instructions, all agents, skills, instructions, prompts, safety hook, and workspace MCP configuration. |
automation |
Self-contained GitHub Actions workflows and issue templates. |
full |
The union of core and automation. |
The AEG profile does not fabricate an AEG endpoint. Its agents return blocked until an authenticated
open-horizons-aeg MCP server exposes the contract documented by the AEG feature skill.
The target-specific agent validation workflow is not published because it requires an
application-owned routing contract and service source tree that are not bundled here.
Procedure
Resolve this installed skill directory and select an existing target repository.
Preview one explicit profile:
python3 scripts/install_workspace_kit.py \
--target <repository> \
--profile aeg
Review every create, update, unchanged, unmanaged-identical, and conflict result.
Apply only after approval:
python3 scripts/install_workspace_kit.py \
--target <repository> \
--profile aeg \
--apply
Repeat the dry run and require every managed destination to be unchanged.
Preview uninstall with the same profile, then add --apply only after review:
python3 scripts/install_workspace_kit.py \
--target <repository> \
--profile aeg \
--uninstall
Safety
- No file changes occur without
--apply.
- Any conflict blocks the complete apply before the first write.
- Source content and state are staged before commit; a commit failure restores prior files and state.
- Existing identical files are not silently adopted as managed files.
- Upgrades archive unchanged retired destinations and preserve modified retired destinations as managed.
- Paths that escape the target or traverse symlinks are rejected.
- State is written atomically to
.github/.open-horizons-workspace-kit.json.
- Uninstall archives only managed files whose hash still matches the installed hash.
- The installer does not install dependencies, call networks, stage, commit, push, deploy, or prune
unrelated files.
Progressive disclosure and bundled resources
scripts/install_workspace_kit.py: repeatable plan, apply, and archive implementation.
scripts/test_install_workspace_kit.py: focused transaction and safety tests.
templates/mcp.json: workspace MCP syntax corresponding to the plugin's portable MCP manifest.
Limits
- Do not use this skill to install or update the plugin itself.
- Do not switch profiles over managed state; preview and uninstall the current profile first.
- Do not claim VS Code prompts run in GitHub Copilot CLI or Agent Host.
- Do not treat project copies as a second canonical source; update the plugin package and republish.
Output template
## Open Horizons workspace kit
**Mode:** install-plan | installed | uninstall-plan | uninstalled | blocked
**Profile:** aeg | core | automation | full
**Target:** <repository>
### Summary
| Status | Count |
| --- | ---: |
### Changed or blocked destinations
- <status>: <target-relative path>
### Validation
- Idempotence: <pass, fail, or not run>
- Target checks: <command and result, or not run>
Quality gate
References
1---2name: open-horizons-workspace-kit3description: Plans, applies, inspects, or uninstalls Open Horizons repository customizations with conflict detection and managed-file state. Use when publishing the AEG feature, the full toolkit, instructions, VS Code prompts, safety hooks, MCP configuration, workflows, or issue templates to a target repository.4---56<!-- Generated from harness/github-copilot/plugins/open-horizons-platform/skills/open-horizons-workspace-kit/SKILL.md by harness/claude-code/scripts/convert_from_copilot.py. Edit the source, not this file. -->78# Open Horizons workspace kit910Publish repository-scoped assets that plugin installation does not activate automatically, or create11explicit project copies for teams that require checked-in primitives. Planning is the default and12uninstall archives unchanged managed files while preserving files changed after installation.1314## When to invoke1516- "Install the Open Horizons AEG feature in this repository."17- "Preview the Open Horizons instructions and VS Code prompts."18- "Publish the Open Horizons workflow and issue-template automation."19- "Uninstall only files managed by the Open Horizons workspace kit."2021## Profiles2223| Profile | Published assets |24| --- | --- |25| `aeg` | Four AEG agents, the AEG feature skill, one instruction, five VS Code prompts, and the safety hook. |26| `core` | `AGENTS.md`, repository instructions, all agents, skills, instructions, prompts, safety hook, and workspace MCP configuration. |27| `automation` | Self-contained GitHub Actions workflows and issue templates. |28| `full` | The union of `core` and `automation`. |2930The AEG profile does not fabricate an AEG endpoint. Its agents return `blocked` until an authenticated31`open-horizons-aeg` MCP server exposes the contract documented by the AEG feature skill.32The target-specific agent validation workflow is not published because it requires an33application-owned routing contract and service source tree that are not bundled here.3435## Procedure36371. Resolve this installed skill directory and select an existing target repository.382. Preview one explicit profile:3940 ```bash41 python3 scripts/install_workspace_kit.py \42 --target <repository> \43 --profile aeg44 ```45463. Review every create, update, unchanged, unmanaged-identical, and conflict result.474. Apply only after approval:4849 ```bash50 python3 scripts/install_workspace_kit.py \51 --target <repository> \52 --profile aeg \53 --apply54 ```55565. Repeat the dry run and require every managed destination to be `unchanged`.576. Preview uninstall with the same profile, then add `--apply` only after review:5859 ```bash60 python3 scripts/install_workspace_kit.py \61 --target <repository> \62 --profile aeg \63 --uninstall64 ```6566## Safety6768- No file changes occur without `--apply`.69- Any conflict blocks the complete apply before the first write.70- Source content and state are staged before commit; a commit failure restores prior files and state.71- Existing identical files are not silently adopted as managed files.72- Upgrades archive unchanged retired destinations and preserve modified retired destinations as managed.73- Paths that escape the target or traverse symlinks are rejected.74- State is written atomically to `.github/.open-horizons-workspace-kit.json`.75- Uninstall archives only managed files whose hash still matches the installed hash.76- The installer does not install dependencies, call networks, stage, commit, push, deploy, or prune77 unrelated files.7879## Progressive disclosure and bundled resources8081- `scripts/install_workspace_kit.py`: repeatable plan, apply, and archive implementation.82- `scripts/test_install_workspace_kit.py`: focused transaction and safety tests.83- `templates/mcp.json`: workspace MCP syntax corresponding to the plugin's portable MCP manifest.8485## Limits8687- Do not use this skill to install or update the plugin itself.88- Do not switch profiles over managed state; preview and uninstall the current profile first.89- Do not claim VS Code prompts run in GitHub Copilot CLI or Agent Host.90- Do not treat project copies as a second canonical source; update the plugin package and republish.9192## Output template9394```markdown95## Open Horizons workspace kit9697**Mode:** install-plan | installed | uninstall-plan | uninstalled | blocked98**Profile:** aeg | core | automation | full99**Target:** <repository>100101### Summary102| Status | Count |103| --- | ---: |104105### Changed or blocked destinations106- <status>: <target-relative path>107108### Validation109- Idempotence: <pass, fail, or not run>110- Target checks: <command and result, or not run>111```112113## Quality gate114115- [ ] Target and profile are explicit.116- [ ] A dry run was reviewed before apply or uninstall.117- [ ] No conflict or modified managed file was overwritten or archived.118- [ ] Fault-injection coverage proves failed commits restore files and managed state.119- [ ] Retired managed destinations are archived or explicitly preserved when modified.120- [ ] Managed state was written atomically and remains inside the target.121- [ ] Apply is idempotent for every managed destination.122- [ ] AEG runtime availability is reported separately from static publication.123- [ ] VS Code-only prompts are identified as such.124- [ ] Target validation and Git status are reported without invented results.125126## References127128- [GitHub Copilot custom instructions](https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/add-repository-instructions/add-repository-instructions)129- [VS Code prompt files](https://code.visualstudio.com/docs/copilot/customization/prompt-files)