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.
- package/README.md +14 -6
- package/bin/cli.js +31 -1
- 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
|
|
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
|
-
|
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.",
|