Skip to content

fix(doctor): accept fabric-ai, the binary name Homebrew installs - #2153

Open
NAmorim wants to merge 1 commit into
danielmiessler:mainfrom
NAmorim:fix/doctor-fabric-ai-binary-name
Open

NAmorim wants to merge 1 commit into
danielmiessler:mainfrom
NAmorim:fix/doctor-fabric-ai-binary-name

Conversation

@NAmorim

@NAmorim NAmorim commented Sep 18, 2026

Copy link
Copy Markdown

Closes #2152.

What

Doctor.ts's fabric probe calls which('fabric'). Homebrew installs
danielmiessler/fabric as fabric-ai — the fabric formula is the
unrelated Python SSH tool (fabfile.org). So a
correct brew install fabric-ai reports the capability broken.

The fixCmd compounded it: "see the fabric project for install" steers a
user to brew install fabric, which installs the SSH tool. Doctor then reports
the capability live while every -y call fails — a false positive that is
strictly worse than the false negative it replaced.

This is the inverse of #2066: same which() call, opposite direction.

Changes

  • Probe accepts either binary name. Covers Homebrew (fabric-ai), source installs, and users who alias fabric themselves, so it doesn't trade one narrow assumption for another.
  • fixCmd names the right formula and warns off the collision explicitly.
  • powers and detail corrected. Both claimed the binary provides "the Fabric skill's pattern library". It doesn't: skills/Fabric/SKILL.md:37 states patterns run natively with no CLI round-trip, and all 237 ship in skills/Fabric/Patterns/. The binary is needed only for -y (YouTube transcripts) and -u (URL fallback). The old wording overstated the breakage and hid the one thing actually lost.

One line of logic, three strings. No behavioural change beyond the probe result.

Verification

macOS arm64, fabric-ai 1.4.478:

$ which fabric-ai && which fabric
/opt/homebrew/bin/fabric-ai
(nothing)

Before: ❌ Prompt patterns (fabric) — broken.
After: ✅ Prompt patterns (fabric) — live · fabric-ai on PATH.

The gated feature works:

$ fabric -y "https://www.youtube.com/watch?v=aircAruvnKk" --transcript | wc -c
   18536

Patched file builds clean under bun build --target=bun.

Follow-up, not in this PR

The binary exits 0 and prints nothing until ~/.config/fabric/.env exists. An
empty file is enough for -y; no vendor key is needed for transcripts. That
belongs in the Fabric skill's setup notes rather than in Doctor.

The fabric capability probed which("fabric"), but Homebrew ships
danielmiessler/fabric as `fabric-ai` — the `fabric` formula is the unrelated
Python SSH tool (fabfile.org). A correct `brew install fabric-ai` therefore
reported as broken.

The fix hint made it worse: "see the fabric project for install" steers a user
toward `brew install fabric`, which installs the SSH tool. Doctor then reports
the capability live while every -y call fails — strictly worse than the
original broken state.

- probe accepts either binary name, so source installs and user aliases work too
- fixCmd names the right formula and warns off the collision
- powers/detail strings corrected: all 237 patterns run natively from
  skills/Fabric/Patterns per skills/Fabric/SKILL.md:37, so a missing binary
  costs only -y and -u, not the pattern library

Inverse of danielmiessler#2066: same which() call, false negative instead of false positive.

Closes danielmiessler#2152
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant