Install Agent Skills into all 3 AI CLIs, and use Bun instead of npm
Adds scripts/install-skills.sh: pulls this repo's extensions/ skill bundles (SKILL.md-format) at workspace startup and installs them into Claude Code (~/.claude/skills), GitHub Copilot CLI (~/.copilot/skills), and Antigravity CLI (~/.gemini/config/skills). Every env gets the common awesome-skills-plugin bundle; COBOL/3D/TTRPG additionally get their matching skill(s) from custom-specialty-plugin via a per-template SPECIALTY_SKILLS value. Each template also installs Bun via a coder_script and hooks ~/.bun/bin onto PATH in .bashrc (the bun.sh installer doesn't reliably do this in a scripted shell). The CLI setup wizard now uses `bun install -g` instead of `npm install -g` for GitHub Copilot CLI and Claude Code CLI. All six templates re-validated with terraform init/validate against the real coder-server container on octo-winsrv. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -17,8 +17,9 @@ templates/
|
||||
web/main.tf # Web Applications
|
||||
scripts/
|
||||
cli-setup-wizard.sh # shared first-run wizard, see below
|
||||
install-skills.sh # shared Agent Skills installer, see below
|
||||
profile-templates/ # VS Code .code-profile exports, one per env
|
||||
extensions/ # Claude Code plugin/skill bundles (see note below)
|
||||
extensions/ # Agent Skills bundles, installed per env (see below)
|
||||
```
|
||||
|
||||
Each `templates/<env>/main.tf` is a complete, independent Coder template
|
||||
@@ -57,30 +58,56 @@ the actual `.code-profile` file extension, so settings never applied. That
|
||||
bug (plus the single shared container) is why "one container, many envs"
|
||||
never really worked.
|
||||
|
||||
### Bun
|
||||
|
||||
Every template installs [Bun](https://bun.sh) via a `coder_script`
|
||||
(`curl -fsSL https://bun.sh/install | bash`) and hooks `~/.bun/bin` onto
|
||||
`PATH` in `~/.bashrc` (the installer doesn't reliably do this itself in a
|
||||
non-interactive/scripted shell). The CLI setup wizard below uses
|
||||
`bun install -g <pkg>` instead of `npm install -g <pkg>` for everything it
|
||||
installs.
|
||||
|
||||
### CLI setup wizard
|
||||
|
||||
`scripts/cli-setup-wizard.sh` is dropped onto every workspace and hooked
|
||||
into `~/.bashrc`. It runs in every new interactive terminal - until the user
|
||||
finishes it - and offers to install + log into:
|
||||
|
||||
- **GitHub Copilot CLI** (`npm install -g @github/copilot`, then `copilot login`)
|
||||
- **GitHub Copilot CLI** (`bun install -g @github/copilot`, then `copilot login`)
|
||||
- **Google Antigravity CLI** (`curl -fsSL https://antigravity.google/cli/install.sh | bash`, binary `agy`)
|
||||
- **Claude Code CLI** (`npm install -g @anthropic-ai/claude-code`, then `claude`)
|
||||
- **Claude Code CLI** (`bun install -g @anthropic-ai/claude-code`, then `claude`)
|
||||
|
||||
It does **not** ask about VS Code extensions, since those are handled by
|
||||
Terraform (see above). Once the user confirms completion it writes a
|
||||
sentinel file (`~/.cache/coder-cli-wizard/done`) and stops prompting. It can
|
||||
always be re-run manually: `bash /opt/coder/cli-setup-wizard.sh --force`.
|
||||
|
||||
### `extensions/` directory
|
||||
### `extensions/` directory -> Agent Skills
|
||||
|
||||
Heads up: `extensions/awesome-skills-plugin` and `extensions/custom-specialty-plugin`
|
||||
are **Claude Code plugin/skill bundles** (`plugin.json` + `SKILL.md` files),
|
||||
not actual VS Code extension packages. The old root `main.tf` copied this
|
||||
folder straight into code-server's extensions directory, which would never
|
||||
have worked as VS Code extensions regardless of the container bug above.
|
||||
This rewrite doesn't wire `extensions/` into anything - it's left as-is
|
||||
pending a decision on whether/how to install these as Claude Code plugins
|
||||
inside each workspace (e.g. `custom-specialty-plugin/skills/cobol-teacher`
|
||||
for the COBOL env, `openscad-parametric` for 3D, `ttrpg-lore-weaver` /
|
||||
`foundryvtt-modding` for TTRPG).
|
||||
`extensions/awesome-skills-plugin` and `extensions/custom-specialty-plugin`
|
||||
are **Agent Skills bundles** (`plugin.json` + `SKILL.md` files) - the old
|
||||
root `main.tf` copied this folder straight into code-server's VS Code
|
||||
extensions directory, which never worked since these aren't VS Code
|
||||
extension packages.
|
||||
|
||||
Each template now runs `scripts/install-skills.sh` (via a `coder_script`,
|
||||
pulling a fresh zip of this repo from Gitea rather than embedding ~2.5MB
|
||||
into Terraform state) to install skills into all three AI CLIs' personal
|
||||
skills directories:
|
||||
|
||||
| CLI | Skills directory |
|
||||
| --- | --- |
|
||||
| Claude Code | `~/.claude/skills/<name>/` |
|
||||
| GitHub Copilot CLI | `~/.copilot/skills/<name>/` |
|
||||
| Antigravity CLI | `~/.gemini/config/skills/<name>/` (per antigravity.google/docs/skills - some third-party docs disagree on this path, worth a spot-check on a live workspace) |
|
||||
|
||||
Every environment gets the full `extensions/awesome-skills-plugin/skills/*`
|
||||
bundle. On top of that, whichever env has a matching entry in
|
||||
`extensions/custom-specialty-plugin/skills/` gets it installed too, set via
|
||||
the `SPECIALTY_SKILLS` env var passed to the script from each template's
|
||||
`install_skills` `coder_script`:
|
||||
|
||||
- COBOL -> `cobol-teacher`
|
||||
- 3D Printing -> `openscad-parametric`
|
||||
- TTRPG -> `foundryvtt-modding` and `ttrpg-lore-weaver`
|
||||
- Default / Python / Web -> none (no matching specialty skill exists yet)
|
||||
|
||||
Reference in New Issue
Block a user