set-prompt 0.6.0 → 0.7.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/CHANGELOG.md CHANGED
@@ -4,6 +4,30 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ---
6
6
 
7
+ ## [0.7.0] - 2026-04-20
8
+
9
+ ### Added
10
+ - **OpenCode integration** (`link opencode`) — dir symlinks into `~/.config/opencode/` (OpenCode's default config directory). Links `skills/`, `commands/`, `agents/`.
11
+ - **Gemini CLI integration** (`link geminicli`) — dir symlinks into `~/.gemini/` (coexists with Antigravity's `~/.gemini/antigravity/` subtree). Links `skills/`, `commands/`, `agents/`.
12
+ - `OpencodeConfigSchema` / `GeminicliConfigSchema` + types + `configManager.opencode` / `configManager.geminicli` getter/setter + `isOpencodeEnabled()` / `isGeminicliEnabled()`
13
+ - `SET_PROMPT_GUIDE` template: OpenCode frontmatter reference — skills (`name`, `description`, `license`, `compatibility`, `metadata`), commands (`template` required + `agent`/`model`/`subtask`), agents (`mode`, `temperature`, `top_p`, `steps`, `tools`, `permission`, `prompt` with `{file:...}` reference, etc.)
14
+ - `SET_PROMPT_GUIDE` template: Gemini CLI frontmatter reference — skills (`name` + `description` — minimal), agents (`kind`, `tools` as array, `model`, `temperature` 0–2.0, `max_turns`, `timeout_mins`, `mcpServers` as nested YAML map), and a dedicated TOML sample for Gemini CLI commands (`prompt` required + `description`) with `{{args}}`/`!{cmd}`/`@{path}` placeholders and namespaced subdirectory support (`/git:commit`)
15
+ - Tests: `tests/commands/link-opencode.test.ts`, `tests/commands/link-geminicli.test.ts`
16
+ - README hero rewrite with `One repo. Every AI coding tool. Always in sync.` tagline, npm/GitHub/Sponsor badges, Quick Start section
17
+ - `engines.node >=18` declared in `package.json`
18
+
19
+ ### Changed
20
+ - `link-command.ts`: `LINK_MAP` / `UNLINK_MAP` / `prevLinked` extended with OpenCode and Gemini CLI entries
21
+ - `checkbox` prompt UX: added `loop: false` and `pageSize: ALL_AGENTS.length` so the agent list no longer wraps around and shows all options without scrolling
22
+ - Removed Contributing section from README (not accepting external PRs yet)
23
+
24
+ ### Notes / Caveats
25
+ - **Gemini CLI commands use `.toml`** (not `.md`) — repo's `commands/` needs TOML files for Gemini to recognize them
26
+ - **Gemini CLI agents have strict frontmatter validation** — rejects unknown keys (e.g. `color`, `allowed-tools`, `mode` from other platforms). Allowed keys only: `name`, `description`, `kind`, `tools`, `mcpServers`, `model`, `temperature`, `max_turns`, `timeout_mins`. Warning printed on link completion.
27
+ - **RooCode skill directories must use hyphens, not underscores** — `my_skill` silently fails to register, `my-skill` works. Document-only gotcha (no code change); noted in `SET_PROMPT_GUIDE` skill `name` row.
28
+
29
+ ---
30
+
7
31
  ## [0.6.0] - 2026-04-14
8
32
 
9
33
  ### Added
package/README.md CHANGED
@@ -1,12 +1,16 @@
1
1
  # Set Prompt
2
2
 
3
- As you work with AI agents, you build up your own prompt set — skills, commands, and workflows tailored to how you work.
4
-
5
- But every time you try a new AI agent, you have to set it all up again from scratch. And as your prompts evolve, keeping them in sync across multiple tools becomes a maintenance burden that the tools themselves don't help with.
3
+ [![npm version](https://img.shields.io/npm/v/set-prompt?color=cb3837&logo=npm)](https://www.npmjs.com/package/set-prompt)
4
+ [![npm downloads](https://img.shields.io/npm/dm/set-prompt?color=informational)](https://www.npmjs.com/package/set-prompt)
5
+ [![GitHub stars](https://img.shields.io/github/stars/juncha9/set-prompt?color=f5d90a&logo=github)](https://github.com/juncha9/set-prompt/stargazers)
6
+ [![last commit](https://img.shields.io/github/last-commit/juncha9/set-prompt?color=blueviolet&logo=github)](https://github.com/juncha9/set-prompt/commits/main)
7
+ [![license](https://img.shields.io/npm/l/set-prompt?color=green)](./LICENSE.md)
8
+ [![node](https://img.shields.io/node/v/set-prompt?color=success&logo=node.js)](https://nodejs.org)
9
+ [![Sponsor](https://img.shields.io/badge/Sponsor-%E2%9D%A4-ea4aaa?logo=github-sponsors)](https://github.com/sponsors/juncha9)
6
10
 
7
- `set-prompt` was built to solve this. It maintains a single git repository of prompts and links them into each tool's expected location — so your prompt set stays in one place, stays versioned, and stays consistent across every AI agent you use.
11
+ ### One repo. Every AI coding tool. Always in sync.
8
12
 
9
- One repo. Every agent. Always in sync.
13
+ Your skills, commands, and agents live in git. One command syncs them into every AI coding tool you use — so the prompts you built stay with you no matter which tool you're in.
10
14
 
11
15
  ```
12
16
  repo/ (git)
@@ -23,21 +27,34 @@ One repo. Every agent. Always in sync.
23
27
  ┌──────────────────┼──────────────────────┐
24
28
  ▼ ▼ ▼
25
29
  Claude Code Codex RooCode, OpenClaw,
26
- (marketplace + (marketplace + Antigravity, Cursor
27
- repo symlink) cache symlink) (dir symlinks)
30
+ (marketplace + (marketplace + Antigravity, Cursor,
31
+ repo symlink) cache symlink) OpenCode, Gemini CLI
32
+ (dir symlinks)
28
33
  ```
29
34
 
35
+ ## Quick Start
36
+
37
+ From zero to linked in under a minute:
38
+
39
+ ```bash
40
+ npm install -g set-prompt
41
+ sppt install https://github.com/you/my-prompts # or: sppt scaffold .
42
+ sppt link # interactive checkbox — pick your tools
43
+ ```
44
+
45
+ That's it. Your prompts are now live in every AI tool you selected.
46
+
30
47
  ## Installation
31
48
 
32
49
  ```bash
50
+ # global install (recommended)
33
51
  npm install -g set-prompt
34
- # or use without installing
52
+
53
+ # one-off run without installing
35
54
  npx set-prompt <command>
36
55
  ```
37
56
 
38
- ## CLI Alias
39
-
40
- `sppt` is a built-in short alias for `set-prompt` — all commands work with either name:
57
+ Both `set-prompt` and the short alias `sppt` are registered — use whichever you prefer:
41
58
 
42
59
  ```bash
43
60
  sppt install <url> # connect an existing repo
@@ -93,6 +110,8 @@ set-prompt link openclaw # link OpenClaw only
93
110
  set-prompt link codex # link Codex only
94
111
  set-prompt link antigravity # link Antigravity only
95
112
  set-prompt link cursor # link Cursor only
113
+ set-prompt link opencode # link OpenCode only
114
+ set-prompt link geminicli # link Gemini CLI only
96
115
  ```
97
116
 
98
117
  The interactive mode shows all agents with their current state. **Check to link, uncheck to unlink** — existing directories are backed up before being replaced.
@@ -105,13 +124,21 @@ The interactive mode shows all agents with their current state. **Check to link,
105
124
  | OpenClaw | dir symlinks into `~/.openclaw/workspace/` | `skills/` |
106
125
  | Antigravity | dir symlinks into `~/.gemini/antigravity/` | `skills/` |
107
126
  | Cursor | dir symlinks into `~/.cursor/` | `skills/`, `agents/`, `commands/`, `hooks/`, `mcp.json` (hardlink) |
127
+ | OpenCode | dir symlinks into `~/.config/opencode/` | `skills/`, `commands/`, `agents/` |
128
+ | Gemini CLI | dir symlinks into `~/.gemini/` | `skills/`, `commands/`, `agents/` |
108
129
 
109
130
  > **Note on Claude Code**: Operates as a plugin. Restart Claude Code after linking for the plugin to be recognized.
110
131
 
111
132
  > **Note on Codex**: Operates as a plugin. Restart Codex after linking — you may need to restart **twice** before the plugin is fully recognized.
112
133
 
134
+ > **Note on RooCode**: Skill directory names must use hyphens only — `my_skill` (underscore) silently fails to be recognized, while `my-skill` works. Hyphens work on every platform, so default to them.
135
+
113
136
  > **Note on Cursor**: Does not load `rules/` from symlinked directories. Use `.cursor/rules/` within each project instead, or manage rules via Cursor Settings.
114
137
 
138
+ > **Note on OpenCode**: Linked at `~/.config/opencode/` — OpenCode's default config directory, so no env var setup required.
139
+
140
+ > **Note on Gemini CLI**: Skills follow the standard `skills/<name>/SKILL.md` pattern. Commands use `.toml` format (not `.md`) and agents use `.md` with YAML frontmatter. Files in your repo's `commands/` must be TOML for Gemini CLI to recognize them. **Agents have strict frontmatter validation** — unknown keys (e.g. `allowed-tools`, `color`, `mode` from other platforms) cause Gemini CLI to reject the agent. See `SET_PROMPT_GUIDE.md` for the allowed keys.
141
+
115
142
  ---
116
143
 
117
144
  ### Step 3 — Keep in sync
@@ -134,7 +161,7 @@ set-prompt repo path # print repo location (e.g. cd "$(sppt rep
134
161
  set-prompt repo open # open repo in OS file manager (--code VSCode, --stree Sourcetree)
135
162
  ```
136
163
 
137
- Symlink-based agents (Claude Code, Codex, RooCode, OpenClaw, Antigravity) reflect changes immediately after pull. Cursor's `mcp.json` is a hardlink to repo's `.mcp.json`, so edits to either side are reflected automatically.
164
+ Symlink-based agents (Claude Code, Codex, RooCode, OpenClaw, Antigravity, OpenCode, Gemini CLI) reflect changes immediately after pull. Cursor's `mcp.json` is a hardlink to repo's `.mcp.json`, so edits to either side are reflected automatically.
138
165
 
139
166
  ---
140
167
 
@@ -209,6 +236,19 @@ set-prompt uninstall
209
236
  ├── commands/ → repo/commands
210
237
  ├── hooks/ → repo/hooks
211
238
  └── mcp.json ⇔ repo/.mcp.json (hardlink)
239
+
240
+ ~/.config/opencode/ # OpenCode (dir symlinks)
241
+ ├── SET_PROMPT_BACKUP/
242
+ ├── skills/ → repo/skills
243
+ ├── commands/ → repo/commands
244
+ └── agents/ → repo/agents
245
+
246
+ ~/.gemini/ # Gemini CLI (dir symlinks)
247
+ ├── SET_PROMPT_BACKUP/
248
+ ├── skills/ → repo/skills (Gemini reads SKILL.md)
249
+ ├── commands/ → repo/commands (Gemini reads *.toml)
250
+ ├── agents/ → repo/agents (Gemini reads *.md)
251
+ └── antigravity/ (Antigravity's own subtree, unrelated)
212
252
  ```
213
253
 
214
254
  ## Warning
@@ -221,6 +261,8 @@ set-prompt uninstall
221
261
  - **OpenClaw** — replaces directories in `~/.openclaw/workspace/`
222
262
  - **Antigravity** — replaces directories in `~/.gemini/antigravity/`
223
263
  - **Cursor** — replaces directories and `mcp.json` in `~/.cursor/`
264
+ - **OpenCode** — replaces directories in `~/.config/opencode/`
265
+ - **Gemini CLI** — replaces directories in `~/.gemini/` (`antigravity/` subtree untouched)
224
266
 
225
267
  Before making any changes, `set-prompt` creates a backup and rolls back automatically on failure. However, you should be aware that:
226
268
 
@@ -242,9 +284,7 @@ Use `set-prompt uninstall` to cleanly revert all changes.
242
284
  - Star this repo
243
285
  - Report bugs — open an [issue](https://github.com/juncha9/set-prompt/issues) with steps to reproduce
244
286
  - Request features — share ideas via [issues](https://github.com/juncha9/set-prompt/issues)
245
- - Submit a PR new agent integrations are welcome
246
-
247
- [![Sponsor](https://img.shields.io/badge/Sponsor-%E2%9D%A4-ea4aaa?logo=github-sponsors)](https://github.com/sponsors/juncha9)
287
+ - [Sponsor on GitHub](https://github.com/sponsors/juncha9) if the project saves you time
248
288
 
249
289
  ## Dev Commands
250
290
 
@@ -256,13 +296,6 @@ npm unlink -g set-prompt # Remove global CLI
256
296
  npm test # Run tests with vitest
257
297
  ```
258
298
 
259
- ## Contributing
260
-
261
- > Contribution guidelines are still being figured out. For now, feel free to open an issue to discuss ideas or report bugs.
262
-
263
- - Bug reports and feature requests → [GitHub Issues](https://github.com/juncha9/set-prompt/issues)
264
- - PRs for new agent integrations are especially appreciated
265
-
266
299
  ## License
267
300
 
268
301
  This project is licensed under the [MIT License](./LICENSE.md).