opencode-gemiterm-skills 0.5.0 → 0.6.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/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` Python CLI being installed and authenticated on the host.
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 `assets/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 Python CLI first.
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="assets/skills/gemiterm/SKILL.md" requires="Python CLI gemiterm" />
25
- <skill name="debate-with-gemini" path="assets/skills/debate-with-gemini/SKILL.md" requires="gemiterm skill + Python CLI gemiterm" />
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 assets/skills/ as a skill path and pre-allow both skills</purpose>
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
- - pip install gemiterm
57
+ - bun install gemiterm -g
57
58
  - gemiterm install-browser
58
59
  - gemiterm auth
59
60
  </prerequisites>
package/CHANGELOG.md CHANGED
@@ -4,6 +4,36 @@ 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.0] - 2026-06-10
8
+
9
+ ### Changed
10
+ - **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.
11
+ - Added `metadata.runtime: bun` to both skill frontmatter entries.
12
+ - Updated `debate-with-gemini` REFERENCE.md subagent template to mention `bunx gemiterm` fallback for every command and added `bunx gemiterm *` to the permissions block.
13
+ - **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.
14
+ - **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).
15
+ - `.claude-plugin/plugin.json` and `.opencode/opencode.json` updated to reference the new `./skills` path; `package.json#files` now whitelists `skills` instead of `assets`.
16
+ - `src/installer.ts` and `tests/skills.test.ts` source-path constants updated accordingly.
17
+ - Docs (`AGENTS.md`, `CONTRIBUTING.md`) updated to reflect the new layout.
18
+
19
+ ### Removed
20
+ - `assets/` directory (no longer needed; skills moved to repo root).
21
+ - All references to `pipx install gemiterm` and Python-based install paths.
22
+
23
+ ## [0.5.1] - 2026-06-07
24
+
25
+ ### Added
26
+ - `CONTRIBUTING.md` — developer-facing docs with architecture, file layout, coding rules, and troubleshooting (extracted from README)
27
+
28
+ ### Changed
29
+ - **README rewrite** — refocused for end-users and SEO: HTML meta comment with keywords, centered hero header, streamlined examples with emoji headers, "Why this plugin?" value-proposition section, call-to-action footer
30
+ - README generalized to be agent-agnostic: describes "any AI agent" instead of only OpenCode-specific framing; shows both `bunx` and `npx` install commands; "CLI install (any agent)" as the primary install method
31
+ - `debate-with-gemini` skill frontmatter: removed `metadata.requires` field; added `compatibility` and `license` fields
32
+ - `gemiterm` skill frontmatter: added `compatibility` and `license` fields
33
+
34
+ ### Removed
35
+ - Test for `metadata.requires: gemiterm` on `debate-with-gemini` (field no longer exists)
36
+
7
37
  ## [0.5.0] - 2026-06-07
8
38
 
9
39
  _Initial public release._
package/README.md CHANGED
@@ -1,217 +1,144 @@
1
+ <!--
2
+ SEO description: AI agent skills for Google Gemini — list, search, export Gemini chats and run
3
+ structured debates with Gemini. Works with OpenCode, Claude Code, and any skill-compatible AI agent.
4
+ Keywords: Gemini CLI, gemiterm, AI agent skills, Google Gemini terminal, Gemini chat export,
5
+ AI debate, multi-turn debate, terminal AI, agent skills, Gemini terminal
6
+ -->
7
+
8
+ <div align="center">
9
+
1
10
  # opencode-gemiterm-skills
2
11
 
12
+ **Gemini terminal skills for AI agents — chat export, search & AI-powered debates**
13
+
3
14
  [![OpenCode Plugin](https://img.shields.io/badge/OpenCode-Plugin-blue?link=https://opencode.ai)](https://opencode.ai)
4
15
  [![npm version](https://img.shields.io/npm/v/opencode-gemiterm-skills?label=npm)](https://www.npmjs.com/package/opencode-gemiterm-skills)
5
16
  [![MIT License](https://img.shields.io/badge/License-MIT-green?link=LICENSE)](LICENSE)
6
17
 
7
- Local OpenCode plugin package that bundles the `gemiterm` and `debate-with-gemini` skills for OpenCode agents. Install once and the skills are available to every OpenCode session on the machine.
18
+ [Quick Start](#quick-start) · [Skills](#bundled-skills) · [Examples](#examples) · [Requirements](#requirements) · [Contributing](CONTRIBUTING.md)
19
+
20
+ </div>
8
21
 
9
- [`gemiterm`](https://github.com/Expert-Vision-Software/gemiterm) is a CLI for interacting with Google Gemini from the terminal — listing, fetching, exporting, and managing Gemini chat history. This plugin wraps it into OpenCode skills so agents can use Gemini conversational data directly in workflows.
22
+ ---
23
+
24
+ Bring the power of [Google Gemini](https://gemini.google.com) directly into your AI agent sessions. This package bundles two skills — **gemiterm** and **debate-with-gemini** — so any compatible agent can search your Gemini chats, export conversation history, and run structured multi-turn debates with Gemini to validate ideas before you commit to code.
25
+
26
+ Works with [OpenCode](https://opencode.ai), and any agent that supports the `skill` tool or can invoke CLI-installed skills via `bunx`/`npx`.
10
27
 
11
28
  ## Bundled skills
12
29
 
13
- | Skill | Purpose |
14
- |-------|---------|
15
- | `gemiterm` | Google Gemini Terminal CLI wrapper for listing, fetching, exporting, and managing Gemini chat history. |
16
- | `debate-with-gemini` | Conducts structured multi-turn technical debates with Gemini AI via the `gemiterm` CLI, delegating the back-and-forth to a subagent. |
30
+ | Skill | What it does |
31
+ |-------|-------------|
32
+ | **gemiterm** | Search, list, export, and manage your Google Gemini chat history from the terminal. |
33
+ | **debate-with-gemini** | Run structured multi-turn technical debates with Gemini AI perfect for validating architecture decisions, trade-offs, and design choices. |
17
34
 
18
- Both skills are loaded on demand via the native `skill` tool. The metadata of each skill (name + description) is pre-loaded at session start; the full `SKILL.md` body is loaded only when the agent decides the skill is relevant.
35
+ Both skills are loaded on demand. Metadata (name + description) is pre-loaded at session start; the full skill body loads only when the agent decides it's relevant zero overhead when not in use.
19
36
 
20
37
  ## Quick start
21
38
 
22
39
  ```bash
23
- # Install skills and register them with OpenCode
24
- bunx opencode-gemiterm-skills install
40
+ # Install skills via bunx
41
+ bunx opencode-gemiterm-skills install [--scope global]
25
42
 
26
- # Or globally (for all projects on this machine)
27
- bunx opencode-gemiterm-skills install --scope global
28
- ```
43
+ # Or with npx
44
+ npx opencode-gemiterm-skills install [--scope global]
29
45
 
30
- That's it. After install, both `gemiterm` and `debate-with-gemini` appear in the `skill` tool's `<available_skills>` list. No restart needed — OpenCode loads skills on demand.
46
+ # Or skills.sh
47
+ npx skills add expert-vision-software/opencode-gemiterm-skills --skill [gemiterm/debate-with-gemini]
48
+ ```
31
49
 
32
- For global install, skills are placed in `~/.config/opencode/skills/`. For local install (default), they are placed in `{project}/.opencode/skills/`.
50
+ That's it skills are available immediately.
33
51
 
34
- ## Example use cases
52
+ ## Examples
35
53
 
36
- ### List and search Gemini chats (`gemiterm` skill)
54
+ ### 🔍 Search and export Gemini chats
37
55
 
38
56
  > **You:** "Find my Gemini chats about React Server Components and export them."
39
57
 
40
- Agent loads the `gemiterm` skill, then:
58
+ Agent loads the `gemiterm` skill, searches your Gemini history, and exports matches:
41
59
 
42
- ```bash
43
- gemiterm list --all-profiles --format json
44
- # → filters chats by title/keyword "React Server Components"
45
- gemiterm export <chat_id> --output ./exports/rsc-chat.md
60
+ ```
61
+ Found 3 matching chats. Exported all to ./exports/ — here's a summary of each…
46
62
  ```
47
63
 
48
- **Agent:** "Found 3 matching chats. Exported all to `./exports/` — here's a summary of each…"
49
-
50
- ---
51
-
52
- ### Bulk export for analysis (`gemiterm` skill)
64
+ ### 📦 Bulk export for offline analysis
53
65
 
54
66
  > **You:** "Export all my recent Gemini chats so I can grep through them."
55
67
 
56
- Agent loads the `gemiterm` skill, then:
68
+ Agent lists and exports chats in parallel:
57
69
 
58
- ```bash
59
- gemiterm list --limit 20 --sort recent --format json
60
- gemiterm export-all --output ./gemini-exports --format md --parallel 4
70
+ ```
71
+ Exported 18 chats to ./gemini-exports/ in Markdown. Search with: grep -r "topic" ./gemini-exports/
61
72
  ```
62
73
 
63
- **Agent:** "Exported 18 chats to `./gemini-exports/` in Markdown. You can search them with `grep -r "topic" ./gemini-exports/`."
64
-
65
- ---
66
-
67
- ### Structured debate with Gemini (`debate-with-gemini` skill)
74
+ ### 🗣️ Structured debate with Gemini
68
75
 
69
76
  > **You:** "Debate Gemini for/against using SQLite as the primary database for a SaaS app. Context: docs/arch.md. 5 turns."
70
77
 
71
- Agent loads both skills, verifies auth, reads context, seeds a new Gemini chat with the opposing stance, and spawns a subagent that runs 5 rounds of back-and-forth autonomously.
72
-
73
- **Agent:** "Debate complete (5 turns). Gemini argued **for** SQLite (simplicity, zero-config, adequate for early-stage). I argued **against** (concurrency limits, no network access, scaling ceiling). Key agreements: fine for prototyping, migrate to Postgres before 100+ concurrent users. Full transcript saved via `gemiterm export`."
78
+ Agent reads your context, seeds a new Gemini chat with the opposing stance, and runs 5 rounds of autonomous back-and-forth:
74
79
 
75
- ---
80
+ ```
81
+ Debate complete (5 turns). Gemini argued FOR SQLite (simplicity, zero-config).
82
+ I argued AGAINST (concurrency limits, no network access, scaling ceiling).
83
+ Key agreements: fine for prototyping, migrate to Postgres before 100+ concurrent users.
84
+ ```
76
85
 
77
- ### Continue a previous debate (`debate-with-gemini` skill)
86
+ ### 🔄 Continue a previous debate
78
87
 
79
88
  > **You:** "Continue that SQLite debate for 3 more turns. Here's the chat_id: c_abc123."
80
89
 
81
- Agent loads the `debate-with-gemini` skill, fetches the existing chat to resume context, and picks up where the last round left off.
82
-
83
- **Agent:** "Resumed debate on chat `c_abc123`. Ran 3 additional turns. Gemini conceded on the replication point but raised WAL-mode mitigations. Updated debate report ready."
84
-
85
- ## Requirements
86
-
87
- | | Component | Notes |
88
- | --- | --- | --- |
89
- | **Runtime** | [`gemiterm`](https://github.com/Expert-Vision-Software/gemiterm) CLI | Must be installed and authenticated. Both bundled skills depend on it. |
90
- | **Optional** | Bun `>=1.0.0` | Required only for the CLI installer (`bunx opencode-gemiterm-skills install`) and the test suite (`bun test`). |
91
-
92
- ## Troubleshooting
90
+ Agent picks up exactly where the last round left off:
93
91
 
94
- | Symptom | Likely cause | Fix |
95
- | --- | --- | --- |
96
- | Skill not in `<available_skills>` list | Not installed yet | Run `bunx opencode-gemiterm-skills install` (or `--scope global`) |
97
- | Skill not in `<available_skills>` list after install | `gemiterm` auth expired or incomplete | Run `gemiterm status` and re-authenticate if needed |
98
- | `bunx opencode-gemiterm-skills` not found | Bun `<1.0.0` or package not in PATH | Ensure Bun `>=1.0.0` is installed; try `npx opencode-gemiterm-skills` as fallback |
99
-
100
- ## Install (file:// reference)
101
-
102
- For local development against a checkout of this repo, reference the package directory directly from the consumer's `opencode.json`:
103
-
104
- ```json
105
- {
106
- "$schema": "https://opencode.ai/config.json",
107
- "plugins": [
108
- "file:///absolute/path/to/opencode-gemiterm-skills"
109
- ]
110
- }
111
92
  ```
112
-
113
- This skips the npm install. OpenCode will auto-install skills from the local checkout on first load.
114
-
115
- ## File layout
116
-
117
- ```
118
- opencode-gemiterm-skills/
119
- ├── .opencode/
120
- │ └── opencode.json # self-config: skills.paths + permission.skill
121
- ├── assets/
122
- │ └── skills/
123
- │ ├── gemiterm/
124
- │ │ ├── SKILL.md
125
- │ │ └── REFERENCE.md
126
- │ └── debate-with-gemini/
127
- │ ├── SKILL.md
128
- │ └── REFERENCE.md
129
- ├── src/
130
- │ ├── cli.ts # CLI entry: install / uninstall / status
131
- │ ├── commands/
132
- │ │ ├── install.ts
133
- │ │ ├── uninstall.ts
134
- │ │ └── status.ts
135
- │ └── installer.ts # core install logic
136
- ├── tests/
137
- │ └── skills.test.ts # smoke test
138
- ├── .gitignore
139
- ├── AGENTS.md
140
- ├── CHANGELOG.md
141
- ├── LICENSE
142
- ├── README.md
143
- ├── index.ts # module entry: re-exports plugin.ts
144
- ├── package.json
145
- ├── plugin.ts # plugin entry with config hook (auto-install on load)
146
- └── tsconfig.json
93
+ Resumed debate on chat c_abc123. Ran 3 additional turns.
94
+ Gemini conceded on the replication point but raised WAL-mode mitigations.
147
95
  ```
148
96
 
149
- ## How it works
150
-
151
- ### Install command
152
-
153
- `bunx opencode-gemiterm-skills install` copies skill files to the target `skills/` directory and registers the package in `opencode.json`:
154
-
155
- - **Local** (default): copies to `{project}/.opencode/skills/{gemiterm,debate-with-gemini}/` and updates `{project}/.opencode/opencode.json`
156
- - **Global**: copies to `~/.config/opencode/skills/{gemiterm,debate-with-gemini}/` and updates `~/.config/opencode/opencode.json`
157
-
158
- It also pre-grants `permission.skill: "allow"` for both skills and writes a `.version` marker to skip re-install on subsequent loads.
97
+ ## Requirements
159
98
 
160
- ### Plugin auto-install
99
+ | Component | Notes |
100
+ |-----------|-------|
101
+ | **[gemiterm](https://github.com/Expert-Vision-Software/gemiterm) CLI** | Must be installed and authenticated. Both skills depend on it. |
102
+ | **Google Account** | Required for gemini web. Expiring cookie is stored locally only. |
161
103
 
162
- When OpenCode loads the package via `opencode.json` plugins array, `plugin.ts` runs the same (local) install logic with a version-marker check — so the package auto-installs skills on first use if not already installed.
104
+ ## Installation
163
105
 
164
- ### CLI commands
106
+ ### CLI install (any agent)
165
107
 
166
- | Command | Description |
167
- | --- | --- |
168
- | `bunx opencode-gemiterm-skills install` | Install skills locally (or `--scope global`) |
169
- | `bunx opencode-gemiterm-skills uninstall` | Remove installed skills |
170
- | `bunx opencode-gemiterm-skills status` | Check install status and version |
108
+ ```bash
109
+ # Via bunx
110
+ bunx opencode-gemiterm-skills install
171
111
 
172
- `index.ts` is the module entry, a one-line re-export of `plugin.ts`.
112
+ # Via npx
113
+ npx opencode-gemiterm-skills install
114
+ ```
173
115
 
174
- ## Development
116
+ ### OpenCode plugin
175
117
 
176
- Run the test suite:
118
+ Add to your `opencode.json`:
177
119
 
178
- ```bash
179
- bun test
120
+ ```json
121
+ {
122
+ "plugins": ["opencode-gemiterm-skills"]
123
+ }
180
124
  ```
181
125
 
182
- The smoke test verifies:
126
+ ## Why this plugin?
183
127
 
184
- - Both `assets/skills/*/SKILL.md` files exist and parse as valid YAML frontmatter.
185
- - `name` matches the directory name.
186
- - `description` is non-empty and within the 1024-character limit.
187
- - The `metadata.requires: gemiterm` link on `debate-with-gemini` is preserved.
188
- - The `metadata.tool: gemiterm` link on `gemiterm` is preserved.
189
- - `.opencode/opencode.json` exists and registers at least one skill path.
190
- - `package.json` points `opencode.plugin` at `.opencode/opencode.json`.
191
-
192
- ## Notes for consumers
193
-
194
- - The `metadata.requires: gemiterm` field is preserved verbatim on `debate-with-gemini`. OpenCode does not enforce skill-to-skill dependencies — the agent must check `metadata.requires` and the prerequisites above before invoking `debate-with-gemini`.
195
- - The `metadata.tool`, `metadata.requires`, and `metadata.workflow` fields are stored under the `metadata` map (which OpenCode recognises). Sub-keys beyond `metadata` itself are not formally specified in the OpenCode skill schema, so they may be ignored by some agents — this package treats them as documentation only.
196
- - The CLI is exposed as `opencode-gemiterm-skills` via the `bin` field, implemented in `src/cli.ts`. Run it with `bunx opencode-gemiterm-skills` or `npx opencode-gemiterm-skills`.
128
+ - **No context switching** access your Gemini conversations without leaving your agent.
129
+ - **Zero-config debates** let your agent argue both sides of a technical decision with real Gemini responses.
130
+ - **Portable chat data** export Gemini history to Markdown for grep, archival, or feeding into other tools.
131
+ - **Lightweight** pure skill bundle, no runtime dependencies, loads on demand.
197
132
 
198
133
  ## Acknowledgments
199
134
 
200
135
  - [OpenCode](https://opencode.ai) — plugin architecture and skill loader
201
- - [Bun](https://bun.sh) — fast JS runtime used as the package's CLI host
202
- - [DeepWiki](https://deepwiki.com) — research and context tool for codebase exploration
203
-
204
- ## Publishing
205
-
206
- This package is published to npm as `opencode-gemiterm-skills`. To cut a new release:
136
+ - [gemiterm](https://github.com/Expert-Vision-Software/gemiterm) — underlying Gemini CLI
207
137
 
208
- ```bash
209
- npm version patch # or minor / major
210
- npm publish --access public
211
- ```
138
+ ---
212
139
 
213
- The `prepublishOnly` script runs `tsc --noEmit` and `bun test` before publishing.
140
+ <div align="center">
214
141
 
215
- ## License
142
+ **[📦 Install from npm](https://www.npmjs.com/package/opencode-gemiterm-skills)** · **[🤝 Contribute](CONTRIBUTING.md)** · **[📄 License](LICENSE)**
216
143
 
217
- MIT. See [LICENSE](LICENSE).
144
+ </div>
package/package.json CHANGED
@@ -1,21 +1,22 @@
1
1
  {
2
2
  "name": "opencode-gemiterm-skills",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "type": "module",
5
5
  "module": "index.ts",
6
- "description": "OpenCode plugin bundling the gemiterm and debate-with-gemini skills.",
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.",
7
7
  "license": "MIT",
8
8
  "publisher": "Expert Vision Software",
9
9
  "keywords": [
10
10
  "opencode",
11
11
  "opencode-plugin",
12
12
  "opencode-skills",
13
+ "agent-skills",
13
14
  "gemiterm",
14
15
  "gemini",
15
16
  "debate"
16
17
  ],
17
18
  "bin": {
18
- "opencode-gemiterm-skills": "./src/cli.ts"
19
+ "opencode-gemiterm-skills": "src/cli.ts"
19
20
  },
20
21
  "engines": {
21
22
  "bun": ">=1.0.0"
@@ -25,7 +26,7 @@
25
26
  "index.ts",
26
27
  "plugin.ts",
27
28
  "src",
28
- "assets",
29
+ "skills",
29
30
  "README.md",
30
31
  "AGENTS.md",
31
32
  "CHANGELOG.md",
@@ -46,7 +47,7 @@
46
47
  },
47
48
  "repository": {
48
49
  "type": "git",
49
- "url": "https://github.com/Expert-Vision-Software/opencode-gemiterm-skills.git"
50
+ "url": "git+https://github.com/Expert-Vision-Software/opencode-gemiterm-skills.git"
50
51
  },
51
52
  "homepage": "https://github.com/Expert-Vision-Software/opencode-gemiterm-skills#readme",
52
53
  "bugs": {
@@ -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`, and `gemiterm list` without prompting.
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`.
@@ -2,10 +2,11 @@
2
2
  name: debate-with-gemini
3
3
  description: Conduct structured multi-turn technical debates with Gemini AI via gemiterm CLI. Delegates a subagent to argue a position (for/against) autonomously for up to N turns. Use when user says "debate gemini", "argue with gemini", "have gemini defend/attack X", "continue debate", or wants a technical position stress-tested against Gemini. Triggers on: debate, argue, gemini, position, for/against, stress-test, counter-argument. Requires gemiterm CLI installed and authenticated.
4
4
  license: MIT
5
- compatibility: opencode
5
+ compatibility: opencode, claude-code, and any skill-compatible agent
6
6
  metadata:
7
- requires: gemiterm
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: `pipx install gemiterm && gemiterm install-browser && gemiterm auth`
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 Python CLI. Use when the user asks to read, list, export, or interact with Gemini chat history from a terminal, or invokes "gemiterm" commands.
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
- compatibility: opencode
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 check
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 missing:
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
- pipx install gemiterm
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, "assets", "skills", name);
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);