tuncss-plan-kit 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +14 -6
  2. package/bin/cli.js +31 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # tuncss-plan-kit
2
2
 
3
- Four skills for spec-driven development, installable into Claude Code, Codex CLI, and OpenCode:
3
+ Four skills for spec-driven development, installable into Claude Code, Codex CLI, OpenCode, and Antigravity:
4
4
 
5
5
  - **`/brainstorm`** — turn an idea into an approved spec (`docs/specs/`)
6
6
  - **`/plan-universal`** — turn a spec into an executable plan (`docs/plans/`)
@@ -24,7 +24,8 @@ The installer auto-detects which platform(s) the project uses and writes the rig
24
24
  | `.claude/` or `CLAUDE.md` | Claude Code |
25
25
  | `.codex/` | Codex CLI |
26
26
  | `.opencode/` | OpenCode |
27
- | `AGENTS.md` (alone) | Both Codex and OpenCode (they share `AGENTS.md`) |
27
+ | `.agents/` | Antigravity |
28
+ | `AGENTS.md` (alone) | Codex, OpenCode, and Antigravity (they share `AGENTS.md`) |
28
29
 
29
30
  If nothing is detected, pass an explicit target:
30
31
 
@@ -45,14 +46,21 @@ Restart your coding agent after install so it picks up the new skills and slash
45
46
  | Claude Code | `.claude/skills/<n>/SKILL.md` | *(none — skills auto-expose as slash)* | `CLAUDE.md` |
46
47
  | Codex CLI | `.agents/skills/<n>/SKILL.md` | `.codex/prompts/<n>.md` | `AGENTS.md` |
47
48
  | OpenCode | `.opencode/skills/<n>/SKILL.md` | `.opencode/commands/<n>.md` | `AGENTS.md` |
49
+ | Antigravity | `.agents/skills/<n>/SKILL.md` | *(none — skills auto-expose as slash)* | `AGENTS.md` |
48
50
 
49
- Claude Code automatically exposes any skill named `foo` as `/foo`, so the kit doesn't write wrapper command files for it. Codex and OpenCode don't auto-expose, so wrappers are written there to give you the same `/brainstorm`, `/plan-universal`, `/handoff-plan` UX everywhere.
51
+ Claude Code and Antigravity automatically expose any skill named `foo` as `/foo`, so the kit doesn't write wrapper command files for them. Codex and OpenCode don't auto-expose, so wrappers are written there to give you the same `/brainstorm`, `/plan-universal`, `/handoff-plan`, `/changelog` UX everywhere.
50
52
 
51
- With `--global` the same files go to user-wide locations (`~/.claude/`, `~/.agents/`, `~/.codex/`).
53
+ Antigravity and Codex share `.agents/skills/`, so installing both writes those files once — the second platform reports them as already written.
54
+
55
+ Note: `agy changelog` is Antigravity's own built-in subcommand for release notes. The kit's `/changelog` is a slash command inside the agent session — same word, different place.
56
+
57
+ With `--global` the same files go to user-wide locations (`~/.claude/`, `~/.agents/`, `~/.codex/`, `~/.gemini/config/`).
52
58
 
53
59
  **OpenCode `--global` is supported via an npm-plugin route**: the kit installs itself into `~/.config/opencode/node_modules/`, registers itself in `~/.config/opencode/opencode.json`'s `plugin` array, and drops command wrappers into `~/.config/opencode/commands/`. After install, restart OpenCode — skills appear in every project. (For Claude and Codex, `--global` is a plain file copy.)
54
60
 
55
- Project-local is still the default for all three — recommended unless you specifically want the kit available everywhere.
61
+ **Antigravity `--global` is a plain file copy to `~/.gemini/config/`** — a single location the desktop app, the `agy` CLI, and the IDE all read, so one install covers them all.
62
+
63
+ Project-local is still the default for all four — recommended unless you specifically want the kit available everywhere.
56
64
 
57
65
  ## Workflow
58
66
 
@@ -102,7 +110,7 @@ npx tuncss-plan-kit init [--target=<list>] [--global] [--force]
102
110
 
103
111
  | Flag | Effect |
104
112
  |------|--------|
105
- | `--target=<list>` | Comma-separated. Values: `claude`, `codex`, `opencode`, `all`. Auto-detected if omitted. |
113
+ | `--target=<list>` | Comma-separated. Values: `claude`, `codex`, `opencode`, `antigravity`, `all`. Auto-detected if omitted. |
106
114
  | `--global` | Install to user-wide locations instead of the current project. |
107
115
  | `--force` | Overwrite existing skill/command files without warning. |
108
116
 
package/bin/cli.js CHANGED
@@ -57,6 +57,25 @@ const PLATFORMS = {
57
57
  global: null,
58
58
  commandsSrc: "opencode",
59
59
  },
60
+ // Antigravity reads .agents/ in a workspace and ~/.gemini/config/ globally.
61
+ // One global location serves all three variants (desktop app, agy CLI, IDE).
62
+ // Like Claude Code, it expands skills into slash commands on its own, so no
63
+ // wrapper files are written.
64
+ antigravity: {
65
+ label: "antigravity",
66
+ project: {
67
+ skillsDir: ".agents/skills",
68
+ commandsDir: null,
69
+ instructionsFile: "AGENTS.md",
70
+ },
71
+ global: (home) => ({
72
+ skillsDir: path.join(home, ".gemini", "config", "skills"),
73
+ commandsDir: null,
74
+ instructionsFile: path.join(home, ".gemini", "config", "AGENTS.md"),
75
+ }),
76
+ commandsSrc: null,
77
+ skipCommands: true,
78
+ },
60
79
  };
61
80
 
62
81
  const SUPPORTED = Object.keys(PLATFORMS);
@@ -95,7 +114,7 @@ Commands:
95
114
 
96
115
  Options:
97
116
  --target Comma-separated platforms to install for. Supported:
98
- claude, codex, opencode, all
117
+ claude, codex, opencode, antigravity, all
99
118
  If omitted, auto-detects from the current directory.
100
119
  --global Install to user-wide locations.
101
120
  For OpenCode this uses the npm-plugin route (installs the package
@@ -128,7 +147,11 @@ function detectTargets(cwd) {
128
147
  }
129
148
  if (exists(path.join(cwd, ".codex"))) found.add("codex");
130
149
  if (exists(path.join(cwd, ".opencode"))) found.add("opencode");
150
+ // Antigravity discovers .agents/ and reads AGENTS.md as rules. Its project
151
+ // paths are a subset of Codex's, so adding it here costs no extra files.
152
+ if (exists(path.join(cwd, ".agents"))) found.add("antigravity");
131
153
  if (exists(path.join(cwd, "AGENTS.md"))) {
154
+ found.add("antigravity");
132
155
  if (!found.has("codex") && !found.has("opencode")) {
133
156
  found.add("codex");
134
157
  found.add("opencode");
@@ -233,7 +256,13 @@ function installPlatform({ platform, isGlobal, force, baseRoot, sharedState }) {
233
256
  for (const skill of SKILLS) {
234
257
  const src = path.join(PKG_ROOT, "skills", skill, "SKILL.md");
235
258
  const dest = path.join(paths.skillsDir, skill, "SKILL.md");
259
+ // Codex and Antigravity share .agents/skills; don't copy the same file twice.
260
+ if (sharedState.writtenSkillFiles.has(dest)) {
261
+ lines.push(` · ${relPath(dest, displayBase)} (already written this run)`);
262
+ continue;
263
+ }
236
264
  const r = copyFile(src, dest, force);
265
+ sharedState.writtenSkillFiles.add(dest);
237
266
  lines.push(` ${statusTag(r.status)} ${relPath(r.dest, displayBase)}`);
238
267
  }
239
268
 
@@ -405,6 +434,7 @@ function init(args) {
405
434
  const sharedState = {
406
435
  instructionsBlock: loadInstructionsBlock(),
407
436
  writtenInstructionFiles: new Set(),
437
+ writtenSkillFiles: new Set(),
408
438
  };
409
439
 
410
440
  for (const platform of targets) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tuncss-plan-kit",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "main": ".opencode/plugins/tuncss-plan-kit.js",
6
6
  "description": "Four-skill kit for spec-driven development: brainstorm an idea into a spec, turn the spec into an executable plan, hand the plan off to another LLM agent, and record what changed.",