Files
beardrive/plugin/commands/install.md
T
Snow LeeandClaude Fable 5 626a9c0a07 feat(cli): bdrive hooks — agent-agnostic sync hook registration
`bdrive hooks install` detects the agent platforms in use — Claude Code
(.claude/), Codex (.codex/), Gemini CLI (.gemini/), Hermes (~/.hermes/) —
and idempotently merges beardrive's turn-boundary sync hooks into each
platform's own hook config (JSON for claude/codex/gemini, YAML for
hermes), preserving existing hooks. All four pipe hook JSON with a
session_id, so one POSIX-sh hook command serves every platform: pull at
turn start, push after edits, changes stamped "<agent> session <id>".
Bare `bdrive hooks` prints the detection/registration table.

The beardrive skill now runs it automatically after `bdrive init`, and
/beardrive:install's hand-maintained settings.json block is replaced by
the command, so the hook content has one source of truth in the binary.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P5cxPQdSGJnjXCYY9GeWXt
2026-07-11 10:57:07 -07:00

4.4 KiB

description, argument-hint
description argument-hint
Set up BearDrive for this project — install the CLI, sign in, create/connect a project, optionally document the shared folder in CLAUDE.md, and register project-level sync hooks so every teammate's files stay fresh during Claude sessions [project-name] [--shared <dir>]

Set up BearDrive for the current project, end to end. Work through these steps in order, telling the user what you're doing at each one.

1. Ensure the bdrive binary exists

Run command -v bdrive. If missing, install it:

  • macOS/Linuxbrew: brew install runbear-io/tap/beardrive
  • otherwise: go install github.com/runbear-io/beardrive/cmd/bdrive@latest If neither works, stop and tell the user how to install manually.

2. Sign in if needed

Run bdrive login --status. If there is no server or the token is invalid, run bdrive login — it opens the user's browser to sign in (or sign up) and completes by itself. Default server is beardrive.ai; if the user mentioned a self-hosted server, pass its URL: bdrive login https://their-server. Tell the user a browser window is coming before you run it.

3. Initialize the project

If $ARGUMENTS gives a project name and/or --shared <dir>, use them. Otherwise ask the user two questions (or infer from their request):

  • Create a new project or connect an existing one? (bdrive share --list isn't needed here — bdrive init --name <name> creates-or-joins by name; bdrive init --project <p-id> connects by id.)
  • Sync the whole folder, or only a shared subfolder (e.g. ./wiki or ./shared)? A shared subfolder is right when only part of the repo — a company wiki, a deliverables folder — should be shared across the team.

Then run it non-interactively, e.g.:

bdrive init --name <project-name> --yes            # whole folder
bdrive init --name <project-name> --shared wiki    # only ./wiki syncs

Re-running bdrive init --yes later is always safe: it resumes syncing (including after the folder was renamed or moved).

4. Offer to update CLAUDE.md (ask first — never do this silently)

Ask: "Want me to add a section to CLAUDE.md so agents know about the shared folder?" If yes, append a section shaped like this (adapt folder name and wording to the project; create CLAUDE.md if missing):

## Shared folder (BearDrive)

`wiki/` is the company wiki, synced across all team members and agents via
BearDrive. Anything saved there propagates to everyone within seconds, and
every change is tracked (who, when, from which device).

- Put shareable artifacts — generated HTML/PDF/markdown reports, notes,
  plans — in `wiki/` so the team can see them.
- To hand someone a public link to a file: `bdrive share wiki/<file>` —
  prints a URL anyone can open (rendered, no account needed).
- Do not put secrets in `wiki/`; share links are public to whoever has
  the URL.

5. Register agent sync hooks

Run bdrive hooks install in the project. It detects the agent platforms in use — Claude Code (.claude/), Codex (.codex/), Gemini CLI (.gemini/), Hermes (~/.hermes/) — and idempotently merges beardrive's sync hooks into each platform's own hook config, preserving any hooks already there. Project-level files (.claude/settings.json, .codex/hooks.json, .gemini/settings.json) ride the repo, so every teammate gets them — plugin or not, whatever agent they use; Hermes hooks are per-user (~/.hermes/config.yaml).

The registered hooks pull before every turn (the agent always reads the team's latest files), push right after edits (artifacts land on the server seconds after they're created — daemon or no daemon), and stamp every change with the agent session that made it (bdrive sync --note "<agent> session <id>" — visible in bdrive log and the hub's history views). They are fast no-ops in folders without .bdrive/.

Tell the user which platforms got hooks (bdrive hooks shows the status table). If Codex is among them, mention they must run /hooks inside Codex once to trust the project's .codex layer. To register a platform that wasn't detected: bdrive hooks install --agent claude,codex,gemini,hermes.

6. Verify and summarize

Run bdrive status and confirm the daemon is running and pending is 0. Then tell the user what was set up, and demonstrate the payoff: if they have (or you just generated) an HTML/PDF/markdown artifact in the synced folder, run bdrive share <file> and hand them the URL.