← back to Cli Printing Press
fix(skills): recommend installing both capture tools in sniff gate (#52)
cd61dd8857d68d9200f8595a9be6bca9d2cd78bd · 2026-03-29 12:28:17 -0700 · Matt Van Horn
* fix(skills): don't call unauthenticated endpoints a "public API"
ESPN doesn't have a public API — it has undocumented internal endpoints.
The API key gate now says "No authentication required" instead of
"is a public API" and explicitly warns against mischaracterizing
unauthenticated endpoints as official public APIs.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(skills): recommend installing both capture tools in sniff gate
Instead of silently using whichever tool is found, the sniff gate now:
- Reports what IS and ISN'T installed
- Recommends installing the missing tool even if one is available
- Explains why each tool is useful (browser-use=autonomous, agent-browser=precise)
- Goal is both installed for best coverage
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Matt Van Horn <mvanhorn@MacBook-Pro.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Files touched
M skills/printing-press/SKILL.md
Diff
commit cd61dd8857d68d9200f8595a9be6bca9d2cd78bd
Author: Matt Van Horn <mvanhorn@users.noreply.github.com>
Date: Sun Mar 29 12:28:17 2026 -0700
fix(skills): recommend installing both capture tools in sniff gate (#52)
* fix(skills): don't call unauthenticated endpoints a "public API"
ESPN doesn't have a public API — it has undocumented internal endpoints.
The API key gate now says "No authentication required" instead of
"is a public API" and explicitly warns against mischaracterizing
unauthenticated endpoints as official public APIs.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(skills): recommend installing both capture tools in sniff gate
Instead of silently using whichever tool is found, the sniff gate now:
- Reports what IS and ISN'T installed
- Recommends installing the missing tool even if one is available
- Explains why each tool is useful (browser-use=autonomous, agent-browser=precise)
- Goal is both installed for best coverage
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Matt Van Horn <mvanhorn@MacBook-Pro.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---
skills/printing-press/SKILL.md | 28 +++++++++++++++++-----------
1 file changed, 17 insertions(+), 11 deletions(-)
diff --git a/skills/printing-press/SKILL.md b/skills/printing-press/SKILL.md
index 714947f9..325db73c 100644
--- a/skills/printing-press/SKILL.md
+++ b/skills/printing-press/SKILL.md
@@ -361,27 +361,33 @@ Present to the user via `AskUserQuestion`:
### If user approves sniff
-#### Step 1: Detect capture tool
+#### Step 1: Detect capture tools
-Check which browser automation tool is available, in preference order:
+Check which browser automation tools are available:
```bash
-# Prefer browser-use (autonomous agent, HAR includes response bodies)
+HAS_BROWSER_USE=false
+HAS_AGENT_BROWSER=false
if command -v browser-use >/dev/null 2>&1 || uvx browser-use --version >/dev/null 2>&1; then
- SNIFF_BACKEND="browser-use"
-# Fall back to agent-browser (precise control, Claude drives the loop)
-elif command -v agent-browser >/dev/null 2>&1; then
- SNIFF_BACKEND="agent-browser"
-else
- SNIFF_BACKEND="none"
+ HAS_BROWSER_USE=true
+fi
+if command -v agent-browser >/dev/null 2>&1; then
+ HAS_AGENT_BROWSER=true
fi
```
-If a tool is found, report: "Using **<tool>** for traffic capture." and proceed to Step 2.
+**Report what was found AND what's missing.** Always tell the user the full picture:
+
+- **Both installed**: "Found browser-use (preferred for autonomous exploration) and agent-browser. Using browser-use." → proceed to Step 2a.
+- **Only agent-browser**: "Found agent-browser but not browser-use. browser-use is preferred — it explores autonomously and captures response bodies in HAR. Want me to install it? (~2 min via `uv tool install browser-use`)" → offer to install browser-use, fall back to agent-browser if declined.
+- **Only browser-use**: "Found browser-use. Using it for traffic capture." → proceed to Step 2a.
+- **Neither**: proceed to Step 1b (install).
+
+**The goal is both tools installed.** browser-use is better for autonomous exploration (it drives itself). agent-browser is better for precise, Claude-directed interaction. Having both gives the best coverage. If one is missing, recommend installing it even if the other is available.
#### Step 1b: Install capture tool (if none found)
-If `SNIFF_BACKEND="none"`, neither capture tool is installed. Offer to install one via `AskUserQuestion`:
+If neither tool is installed, offer to install via `AskUserQuestion`:
> "No browser automation tool found. I need one to sniff the live site. Which would you like to install?"
>
← 0f765d10 fix(skills): don't call unauthenticated endpoints a "public
·
back to Cli Printing Press
·
fix(cli): reject external symlinks during copy (#53) 5ee774c8 →