You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Doctor skill: track schema_version 3, quote the gh issue title, list ~/.grok (#262)
doctor still described `schema_version` 1 and 2 + bailed above 2, but
CLI emitted 3 since 0.22.0 and skill pins `@tiny-fish/cli@latest`. as
shipped it degraded to `--pretty` on every run. The feedback skill also
passed an unquoted, user-derived title to `gh issue create`. three fixes
landed in tinyfish-web-agent-integrations#29; this keeps the two copies
of the plugin textually identical
- `doctor`: schema 3 — `cli_version`, `ok_harnesses`/`ok_cli`,
`checks[].scope`, `repairs[].action`, and the exit code coming from the
harness scope alone, so `ok_cli: false` beside exit `0` is a real state.
Drops the `registered, API key present but unverified` string the CLI no
longer emits; `--fix` examples run through `npx` like step 1.
- `feedback`: `--title "$title" --body-file "$body_file"`, injection
warning widened to the title, and `eval` / constructed command strings
prohibited.
- `plugins/tinyfish/README.md`: adds `~/.grok` to the config dirs doctor
reads, per the CLI's `CONFIG_DIRS`. The rest of that list matches.
- 1.2.3 → 1.2.4 in `plugin.json` and the marketplace entry —
`validate-skills.mjs` fails if they diverge
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .claude-plugin/marketplace.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@
14
14
"name": "tinyfish",
15
15
"source": "./plugins/tinyfish",
16
16
"description": "The complete web toolkit for your agent. Search the web, fetch clean content from URLs, automate browsers with natural language, and spin up headless browsers for full programmatic control.",
Copy file name to clipboardExpand all lines: plugins/tinyfish/.claude-plugin/plugin.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "tinyfish",
3
-
"version": "1.2.3",
3
+
"version": "1.2.4",
4
4
"description": "The complete web toolkit for your agent. Search the web and get answers in milliseconds. Fetch any URL and get clean markdown content back. Send a browser agent to navigate sites, fill forms, and extract structured data. Spin up a headless browser for full programmatic control when you need it.",
Copy file name to clipboardExpand all lines: plugins/tinyfish/CHANGELOG.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,17 @@
1
1
# Changelog
2
2
3
+
## 1.2.4 (2026-08-18)
4
+
5
+
### Fixed
6
+
- Skill: `/tinyfish:doctor` describes `schema_version``3` (CLI 0.22+). It still said `1` and `2` and bailed above `2`, so with `@latest` pinned it degraded every run to `--pretty`. Adds the two verdicts (`ok_harnesses`, `ok_cli`), `checks[].scope`, `repairs[].action`, and the exit code coming from the harness scope alone — `ok_cli: false` beside exit `0` is a real state. Drops the `registered, API key present but unverified` string the CLI no longer emits, and runs the `--fix` examples through `npx` like step 1.
7
+
- Skill: `/tinyfish:feedback` quotes the title as well as the body: `--title "$title" --body-file "$body_file"`. The summary is derived from the user's free-form text too, so backticks or `$(…)` in it were evaluated by the filing shell. Also prohibits `eval` and constructed command strings.
8
+
- Plugin README lists `~/.grok` among the config directories doctor reads; the CLI added a grok harness.
9
+
- Skill: `/tinyfish:doctor` scopes the Cursor `unattended_safe` caveat to `2` and `3`; the CLI still gates `connect cursor` on its own authenticated call.
10
+
- Skill: `/tinyfish:doctor` reads reach off `proves_harness_reach` rather than off `auth_mode`. A harness whose own client reports a live connection is wire evidence — Claude Code on OAuth included — and the skill was telling the agent to report it as unverified presence.
11
+
- Skill: `/tinyfish:doctor` says to prefix `repairs[].command`; the CLI emits bare `tinyfish …`, which is not on PATH on the npx-only installs the skill is written for.
12
+
- Skill: `/tinyfish:feedback` writes the title to a file like the body. A `title=…` assignment evaluates backticks and `$(…)` exactly as the command line does, so quoting the expansion alone moved the injection upstream rather than closing it.
13
+
- Plugin README: `doctor` reports every run to TinyFish, not only when a repair runs, and diagnosis makes authenticated calls rather than only reading config.
-**`/tinyfish:doctor`** runs the TinyFish CLI, which reads your agent config directories (`~/.claude`, `~/.codex`, `~/.cursor`, `~/.hermes`, `~/.openclaw`, `~/.config/opencode`) and the CLI credential store (`~/.tinyfish/config.json`) to find where TinyFish is registered. Diagnosis only reads; the repair step rewrites those registrations, and only commands the CLI itself proposes. `doctor`sends no analytics, though a repair re-runs `tinyfish connect`, which does — set `TINYFISH_NO_TELEMETRY` to suppress it.
32
+
-**`/tinyfish:doctor`** runs the TinyFish CLI, which reads your agent config directories (`~/.claude`, `~/.codex`, `~/.cursor`, `~/.grok`, `~/.hermes`, `~/.openclaw`, `~/.config/opencode`) and the CLI credential store (`~/.tinyfish/config.json`) to find where TinyFish is registered. Diagnosis reads those files and makes authenticated calls to TinyFish to test what it found; the repair step rewrites the registrations, and only commands the CLI itself proposes. `doctor`reports its own run to TinyFish — set `TINYFISH_NO_TELEMETRY` to suppress that and the `tinyfish connect` a repair re-runs.
33
33
-**`/tinyfish:feedback`** shells out to `gh issue create` against a public repo, after showing you the exact issue text and waiting for your approval.
Copy file name to clipboardExpand all lines: scripts/generate-harness-skills.mjs
+2-1Lines changed: 2 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -17,6 +17,7 @@ const GENERIC_REAUTH = `re-authenticate in the harness itself.
17
17
| Codex, Hermes | no login command — auth runs on first tool use; trigger a TinyFish tool and finish the browser sign-in |
18
18
| OpenCode | \`opencode mcp auth tinyfish\` |
19
19
| Claude Code | \`/mcp\` in-app, or \`claude mcp login tinyfish\` |
20
+
| Grok | no login command — in Grok Build, \`/mcps\`, select \`tinyfish\`, press \`i\`. A keyed registration instead reads \`TINYFISH_API_KEY\` from Grok's environment and has no OAuth fallback: re-run \`tinyfish connect grok --api-key <key>\` and start Grok from a new terminal |
20
21
| OpenClaw, Cursor | key-based — \`tinyfish auth login\`, then \`tinyfish connect <harness>\` to rewrite the header |`;
21
22
22
23
constTARGETS={
@@ -34,7 +35,7 @@ const TARGETS = {
34
35
vars: {
35
36
HARNESS_FLAG: "",
36
37
HARNESS_ENTRY:
37
-
"Run without `--harness`, so `harnesses[]` carries one entry per harness doctor knows — installed or not. Read the entry whose `harness` matches the agent you are running in, never the first one, and check its `detected` first: an absent harness reports `detected: false`, `registered: \"no\"`, `auth_mode: \"unknown\"`, which is not a fault to repair. doctor only knows `claude-code`, `codex`, `cursor`, `hermes`, `openclaw`, `opencode`; if you are none of those, no entry describes you and step 2 is your only evidence.",
38
+
"Run without `--harness`, so `harnesses[]` carries one entry per harness doctor knows — installed or not. Read the entry whose `harness` matches the agent you are running in, never the first one, and check its `detected` first: an absent harness reports `detected: false`, `registered: \"no\"`, `auth_mode: \"unknown\"`, which is not a fault to repair. doctor only knows `claude-code`, `codex`, `cursor`, `grok`, `hermes`, `openclaw`, `opencode`; if you are none of those, no entry describes you and step 2 is your only evidence.",
38
39
REAUTH: GENERIC_REAUTH,
39
40
FEEDBACK: "file it at https://github.com/tinyfish-io/tinyfish-cookbook/issues",
0 commit comments