opencode-gemiterm-skills 0.5.1 → 0.6.1
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/AGENTS.md +8 -7
- package/CHANGELOG.md +21 -0
- package/package.json +2 -2
- package/{assets/skills → skills}/debate-with-gemini/REFERENCE.md +10 -4
- package/{assets/skills → skills}/debate-with-gemini/SKILL.md +17 -3
- package/{assets/skills → skills}/gemiterm/REFERENCE.md +2 -0
- package/{assets/skills → skills}/gemiterm/SKILL.md +33 -4
- package/src/installer.ts +1 -1
package/AGENTS.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# AGENTS.md - opencode-gemiterm-skills
|
|
2
2
|
|
|
3
3
|
<critical_rules priority="highest">
|
|
4
|
-
1. The bundled `debate-with-gemini` skill depends on the `gemiterm`
|
|
4
|
+
1. The bundled `debate-with-gemini` skill depends on the `gemiterm` Bun-native CLI being installed (or available via `bunx gemiterm`) and authenticated on the host.
|
|
5
5
|
2. This package ships a real installer (`src/installer.ts`) that copies skill assets to the consumer's `.opencode/skills/` and registers them in `opencode.json`. The `src/cli.ts` is the CLI entry point (install/uninstall/status subcommands), resolved by `package.json#bin`. Only add code under `src/` that supports the install/uninstall/status commands.
|
|
6
|
-
3. Skill frontmatter is the source of truth. Do not edit `
|
|
7
|
-
4. The `metadata.requires: gemiterm` link on `debate-with-gemini` must remain so consumers know to install the
|
|
6
|
+
3. Skill frontmatter is the source of truth. Do not edit `skills/*/SKILL.md` frontmatter in ways that break the `name` / `description` contract.
|
|
7
|
+
4. The `metadata.requires: gemiterm` link on `debate-with-gemini` must remain so consumers know to install the CLI first.
|
|
8
|
+
5. GemiTerm is a Bun-native CLI — all skill documents assume Bun as the runtime. Do not reference Python, `pipx`, or `pip` install paths.
|
|
8
9
|
</critical_rules>
|
|
9
10
|
|
|
10
11
|
<context_hierarchy>
|
|
@@ -21,13 +22,13 @@
|
|
|
21
22
|
</role>
|
|
22
23
|
|
|
23
24
|
<bundled_skills>
|
|
24
|
-
<skill name="gemiterm" path="
|
|
25
|
-
<skill name="debate-with-gemini" path="
|
|
25
|
+
<skill name="gemiterm" path="skills/gemiterm/SKILL.md" requires="Bun-native CLI gemiterm" />
|
|
26
|
+
<skill name="debate-with-gemini" path="skills/debate-with-gemini/SKILL.md" requires="gemiterm skill + Bun-native CLI gemiterm" />
|
|
26
27
|
</bundled_skills>
|
|
27
28
|
|
|
28
29
|
<self_config>
|
|
29
30
|
<location>.opencode/opencode.json</location>
|
|
30
|
-
<purpose>Register
|
|
31
|
+
<purpose>Register skills/ as a skill path and pre-allow both skills</purpose>
|
|
31
32
|
<pointer_in_package_json>opencode.plugin → .opencode/opencode.json</pointer_in_package_json>
|
|
32
33
|
</self_config>
|
|
33
34
|
|
|
@@ -53,7 +54,7 @@
|
|
|
53
54
|
<use_case>Local development against a checkout of this repo</use_case>
|
|
54
55
|
</file_fallback>
|
|
55
56
|
<prerequisites>
|
|
56
|
-
-
|
|
57
|
+
- bun install gemiterm -g
|
|
57
58
|
- gemiterm install-browser
|
|
58
59
|
- gemiterm auth
|
|
59
60
|
</prerequisites>
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,27 @@ All notable changes to `opencode-gemiterm-skills` will be documented in this fil
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.6.1] - 2026-06-12
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- Fixed frontmatter for `debate-with-gemini` skill.
|
|
11
|
+
|
|
12
|
+
## [0.6.0] - 2026-06-10
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- **GemiTerm is now a Bun-native CLI** — the underlying `gemiterm` CLI has been rewritten to run on Bun instead of Python. All skill documents updated to reflect the new runtime: skills first check for a global `gemiterm` install, fall back to `bunx gemiterm` for transparent npx-style invocation, and if Bun itself is missing emit platform-aware install instructions (`curl -fsSL https://bun.sh/install | bash` on macOS/Linux, `powershell -c "irm bun.sh/install.ps1 | iex"` on Windows) before erroring out.
|
|
16
|
+
- Added `metadata.runtime: bun` to both skill frontmatter entries.
|
|
17
|
+
- Updated `debate-with-gemini` REFERENCE.md subagent template to mention `bunx gemiterm` fallback for every command and added `bunx gemiterm *` to the permissions block.
|
|
18
|
+
- **Rewrote both skill documents** — `gemiterm` and `debate-with-gemini` SKILL.md and REFERENCE.md now contain richer, more structured content: the `debate-with-gemini` skill includes tactical patterns (Concede-and-Counter, Force Concrete Example, Decision Matrix, Reframe the Question, Line-in-the-Sand), explicit stopping criteria, and a structured debate-report format; the `gemiterm` skill has an expanded command reference with detailed flags and common automation patterns.
|
|
19
|
+
- **Directory restructure** — moved `assets/skills/{gemiterm,debate-with-gemini}` → `skills/{gemiterm,debate-with-gemini}` so both skills sit at the standard `skills/<name>/SKILL.md` path recognized by Vercel's `skills` CLI (and the broader skills ecosystem).
|
|
20
|
+
- `.claude-plugin/plugin.json` and `.opencode/opencode.json` updated to reference the new `./skills` path; `package.json#files` now whitelists `skills` instead of `assets`.
|
|
21
|
+
- `src/installer.ts` and `tests/skills.test.ts` source-path constants updated accordingly.
|
|
22
|
+
- Docs (`AGENTS.md`, `CONTRIBUTING.md`) updated to reflect the new layout.
|
|
23
|
+
|
|
24
|
+
### Removed
|
|
25
|
+
- `assets/` directory (no longer needed; skills moved to repo root).
|
|
26
|
+
- All references to `pipx install gemiterm` and Python-based install paths.
|
|
27
|
+
|
|
7
28
|
## [0.5.1] - 2026-06-07
|
|
8
29
|
|
|
9
30
|
### Added
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-gemiterm-skills",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"module": "index.ts",
|
|
6
6
|
"description": "AI agent skills for Google Gemini — list, search, export Gemini chats and run structured debates with Gemini. Works with OpenCode, Claude Code, and any skill-compatible AI agent.",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"index.ts",
|
|
27
27
|
"plugin.ts",
|
|
28
28
|
"src",
|
|
29
|
-
"
|
|
29
|
+
"skills",
|
|
30
30
|
"README.md",
|
|
31
31
|
"AGENTS.md",
|
|
32
32
|
"CHANGELOG.md",
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Subagent prompt template, tactical patterns, and report format for the `debate-with-gemini` skill.
|
|
4
4
|
|
|
5
|
+
> **Runtime note:** GemiTerm is a Bun-native CLI. Replace every `gemiterm` invocation with `bunx gemiterm` if the tool is not globally installed. See execution-loop details below.
|
|
6
|
+
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
## Subagent Prompt Template
|
|
@@ -30,14 +32,17 @@ For each turn:
|
|
|
30
32
|
1. Send your message:
|
|
31
33
|
gemiterm continue "{{GEMINI_CHAT_ID}}" "your message here"
|
|
32
34
|
|
|
35
|
+
If gemiterm is not globally installed, use:
|
|
36
|
+
bunx gemiterm continue "{{GEMINI_CHAT_ID}}" "your message here"
|
|
37
|
+
|
|
33
38
|
Wait for Gemini's response written to the console.
|
|
34
39
|
2. Analyze the response — concessions? New arguments? Weaknesses?
|
|
35
40
|
3. Craft next response using Tactical Patterns below
|
|
36
41
|
4. Repeat until turn limit or stop condition
|
|
37
42
|
|
|
38
|
-
Prefer `gemiterm continue` because it returns Gemini's last response inline and avoids an extra round-trip.
|
|
43
|
+
Prefer `gemiterm continue` (or `bunx gemiterm continue`) because it returns Gemini's last response inline and avoids an extra round-trip.
|
|
39
44
|
|
|
40
|
-
Use `gemiterm fetch "{{GEMINI_CHAT_ID}}" --format json` ONLY if console output has parsing issues or times out.
|
|
45
|
+
Use `gemiterm fetch "{{GEMINI_CHAT_ID}}" --format json` (or `bunx gemiterm fetch ...`) ONLY if console output has parsing issues or times out.
|
|
41
46
|
|
|
42
47
|
## Stopping Criteria
|
|
43
48
|
- {{TURN_LIMIT}} turns completed
|
|
@@ -108,12 +113,13 @@ If the opencode config lacks bash permissions for `gemiterm`, add:
|
|
|
108
113
|
{
|
|
109
114
|
"permission": {
|
|
110
115
|
"bash": {
|
|
111
|
-
"gemiterm *": "allow"
|
|
116
|
+
"gemiterm *": "allow",
|
|
117
|
+
"bunx gemiterm *": "allow"
|
|
112
118
|
}
|
|
113
119
|
}
|
|
114
120
|
}
|
|
115
121
|
```
|
|
116
122
|
|
|
117
|
-
This allows the subagent to run `gemiterm new`, `gemiterm continue`, `gemiterm fetch`,
|
|
123
|
+
This allows the subagent to run `gemiterm new`, `gemiterm continue`, `gemiterm fetch`, `gemiterm list`, and their `bunx gemiterm` equivalents without prompting.
|
|
118
124
|
|
|
119
125
|
Drop this into the top-level `permission` object in `opencode.json`. For per-agent override, nest it under `agent.<name>.permission`.
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: debate-with-gemini
|
|
3
|
-
description: Conduct structured multi-turn technical debates with Gemini AI via gemiterm CLI. Delegates a subagent to argue a position (for
|
|
3
|
+
description: 'Conduct structured multi-turn technical debates with Gemini AI via the gemiterm CLI. Delegates a subagent to argue a position (for or against) autonomously for up to N turns. Use when the user says - debate gemini, argue with gemini, have gemini defend or attack X, continue debate, or wants a technical position stress-tested against Gemini. Requires the gemiterm CLI to be installed and authenticated.'
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: opencode, claude-code, and any skill-compatible agent
|
|
6
6
|
metadata:
|
|
7
7
|
tool: gemiterm
|
|
8
8
|
workflow: debate
|
|
9
|
+
runtime: bun
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# Debate with Gemini
|
|
@@ -16,7 +17,7 @@ metadata:
|
|
|
16
17
|
User: "Debate gemini on for/against using X. Context: docs/arch.md. 5 turns."
|
|
17
18
|
|
|
18
19
|
1. skill("gemiterm") — load CLI commands
|
|
19
|
-
2. gemiterm status — verify auth
|
|
20
|
+
2. gemiterm status — verify auth (or bunx gemiterm status)
|
|
20
21
|
3. Read docs/arch.md, build seeding prompt
|
|
21
22
|
4. gemiterm new "You argue AGAINST X. [context]" — seed Gemini, capture chat_id
|
|
22
23
|
5. Build opening argument for the FOR position
|
|
@@ -26,11 +27,24 @@ User: "Debate gemini on for/against using X. Context: docs/arch.md. 5 turns."
|
|
|
26
27
|
|
|
27
28
|
## Prerequisites
|
|
28
29
|
|
|
30
|
+
GemiTerm is a **Bun-native** CLI. Before running any commands, resolve the executable:
|
|
31
|
+
|
|
32
|
+
1. `gemiterm --version` — if this succeeds, use `gemiterm` directly.
|
|
33
|
+
2. If not found, use `bunx gemiterm` as a transparent fallback for all commands.
|
|
34
|
+
3. If `bun` is not installed, print the platform-appropriate install command and stop:
|
|
35
|
+
|
|
36
|
+
| Platform | Command |
|
|
37
|
+
|----------|---------|
|
|
38
|
+
| macOS / Linux | `curl -fsSL https://bun.sh/install \| bash` |
|
|
39
|
+
| Windows | `powershell -c "irm bun.sh/install.ps1 \| iex"` |
|
|
40
|
+
|
|
41
|
+
Then:
|
|
42
|
+
|
|
29
43
|
```bash
|
|
30
44
|
gemiterm status
|
|
31
45
|
```
|
|
32
46
|
|
|
33
|
-
If not connected: `
|
|
47
|
+
If not connected: install gemiterm globally (`bun install gemiterm -g`), then `gemiterm install-browser && gemiterm auth`.
|
|
34
48
|
|
|
35
49
|
## Inputs
|
|
36
50
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Complete command reference for GemiTerm CLI. Loaded on demand by [SKILL.md](SKILL.md).
|
|
4
4
|
|
|
5
|
+
> **Runtime note:** GemiTerm is a Bun-native application. All commands below assume `gemiterm` is available. If not globally installed, prefix every command with `bunx` (e.g. `bunx gemiterm list --format json`). See [SKILL.md](SKILL.md) > "Install & invocation" for the full resolution flow.
|
|
6
|
+
|
|
5
7
|
## Contents
|
|
6
8
|
|
|
7
9
|
- [Commands](#commands)
|
|
@@ -1,26 +1,55 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gemiterm
|
|
3
|
-
description: Google Gemini Terminal CLI wrapper for listing chats, fetching transcripts, exporting conversations, and managing profiles via the gemiterm
|
|
3
|
+
description: Google Gemini Terminal CLI wrapper for listing chats, fetching transcripts, exporting conversations, and managing profiles via the gemiterm Bun-native CLI. Use when the user asks to read, list, export, or interact with Gemini chat history from a terminal, or invokes "gemiterm" commands.
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: opencode, claude-code, and any skill-compatible agent
|
|
6
6
|
metadata:
|
|
7
7
|
tool: gemiterm
|
|
8
|
+
runtime: bun
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# GemiTerm — Google Gemini Terminal CLI
|
|
11
12
|
|
|
12
13
|
GemiTerm provides terminal access to Google Gemini chat history: list, fetch, export, delete, and manage profiles. Commands that emit `--format json` are automation-friendly; `auth` and `continue` require interactive flows.
|
|
13
14
|
|
|
14
|
-
## Install
|
|
15
|
+
## Install & invocation
|
|
16
|
+
|
|
17
|
+
GemiTerm is a **Bun-native** CLI. All `gemiterm` commands below assume the tool is available. The agent must resolve the executable at runtime:
|
|
18
|
+
|
|
19
|
+
### 1. Check if globally installed
|
|
15
20
|
|
|
16
21
|
```bash
|
|
17
22
|
gemiterm --version
|
|
18
23
|
```
|
|
19
24
|
|
|
20
|
-
If
|
|
25
|
+
If this succeeds, use `gemiterm` directly for all commands.
|
|
26
|
+
|
|
27
|
+
### 2. Fallback: `bunx gemiterm`
|
|
28
|
+
|
|
29
|
+
If not globally installed, use `bunx gemiterm` as a transparent fallback. This downloads and runs the latest version on first use:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
bunx gemiterm --version
|
|
33
|
+
bunx gemiterm list --format json
|
|
34
|
+
bunx gemiterm auth
|
|
35
|
+
# … etc — prefix every command with "bunx"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 3. Bun not installed
|
|
39
|
+
|
|
40
|
+
If `bun` is not available either, print the appropriate install command for the user's platform and stop:
|
|
41
|
+
|
|
42
|
+
| Platform | Command |
|
|
43
|
+
|----------|---------|
|
|
44
|
+
| macOS / Linux | `curl -fsSL https://bun.sh/install \| bash` |
|
|
45
|
+
| Windows | `powershell -c "irm bun.sh/install.ps1 \| iex"` |
|
|
46
|
+
|
|
47
|
+
After the user installs Bun, re-run from step 1. Auto-detect the platform from `$OSTYPE`, `uname`, or `process.platform`.
|
|
48
|
+
|
|
49
|
+
**To install gemiterm globally (optional):**
|
|
21
50
|
|
|
22
51
|
```bash
|
|
23
|
-
|
|
52
|
+
bun install gemiterm -g
|
|
24
53
|
gemiterm install-browser
|
|
25
54
|
gemiterm auth
|
|
26
55
|
```
|
package/src/installer.ts
CHANGED
|
@@ -169,7 +169,7 @@ export async function install(
|
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
for (const name of SKILL_NAMES) {
|
|
172
|
-
const srcSkillDir = join(pkgDir, "
|
|
172
|
+
const srcSkillDir = join(pkgDir, "skills", name);
|
|
173
173
|
const destSkillDir = join(configBase, "skills", name);
|
|
174
174
|
await copyDir(srcSkillDir, destSkillDir);
|
|
175
175
|
skillPaths.push(destSkillDir);
|