From 6a36d6efb55c7e47a1604f22dadc218d6ff4d5a9 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Fri, 3 Apr 2026 16:47:00 -0700 Subject: [PATCH] feat: contributor add-host skill + fix version sync - contrib/add-host/SKILL.md.tmpl: contributor-only skill that guides new host config creation. Lives in contrib/, excluded from user installs. - package.json: sync version with VERSION file (0.15.2.1) Co-Authored-By: Claude Opus 4.6 --- contrib/add-host/SKILL.md.tmpl | 63 ++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 contrib/add-host/SKILL.md.tmpl diff --git a/contrib/add-host/SKILL.md.tmpl b/contrib/add-host/SKILL.md.tmpl new file mode 100644 index 00000000..362714c3 --- /dev/null +++ b/contrib/add-host/SKILL.md.tmpl @@ -0,0 +1,63 @@ +--- +name: gstack-contrib-add-host +description: | + Contributor-only skill: create a new host config for gstack's multi-host system. + NOT installed for end users. Only usable from the gstack source repo. +--- + +# /gstack-contrib-add-host — Add a New Host + +This skill helps contributors add support for a new AI coding agent to gstack. + +## What you'll create + +A single TypeScript file in `hosts/.ts` that defines: +- CLI binary name for detection +- Skill directory paths (global + local) +- Frontmatter transformation rules +- Path and tool rewrites +- Runtime root symlink manifest + +## Steps + +### 1. Gather host info + +Ask the contributor: +- What's the agent's name? (e.g., "OpenCode") +- What's the CLI binary? (e.g., "opencode") +- Where does it store skills globally? (e.g., "~/.config/opencode/skills/") +- Where does it store skills locally in a project? (e.g., ".opencode/skills/") +- What frontmatter fields does it support? (name + description is the minimum) +- Does it have its own tool names? (e.g., "exec" instead of "Bash") + +### 2. Create the config file + +Use `hosts/opencode.ts` as a reference. Create `hosts/.ts` with the +gathered info. Follow the HostConfig interface in `scripts/host-config.ts`. + +### 3. Register in index + +Add the import and re-export in `hosts/index.ts`. + +### 4. Add to .gitignore + +Add `./` to `.gitignore`. + +### 5. Generate and verify + +```bash +bun run gen:skill-docs --host +``` + +Check: +- Output exists at `./skills/gstack-*/SKILL.md` +- No `.claude/skills` path leakage +- Frontmatter matches expected format + +### 6. Run tests + +```bash +bun test test/gen-skill-docs.test.ts +``` + +All parameterized tests auto-include the new host. diff --git a/package.json b/package.json index f80c3e56..6be7d10b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gstack", - "version": "0.15.2.0", + "version": "0.15.2.1", "description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.", "license": "MIT", "type": "module",