Skip to content

Add one-command install and activation script for yoke and its dependencies #4

Description

@prineycom

Goal

Provide a one-command install and activation flow for the yoke plugin and its external dependencies (notably revdiff, once #1 lands), covering macOS, Linux, and Windows.

Why

  • The current README install path asks the user to run claude marketplace add github:yokeloop/yoke by hand and leaves external dependencies to the user.
  • Once revdiff is part of the interactive-review flow (Replace plannotator with revdiff for interactive review of yoke artifacts #1), the install surface grows — new users shouldn't have to resolve several unrelated package managers before yoke works.
  • A scripted install lowers onboarding friction and gives the README a single consistent entry point.

Preconditions

  • claude CLI is installed and on the user's PATH. The installer assumes this — it doesn't install or manage the CLI. As a courtesy, the installer checks for claude up front and aborts with a clear message pointing to the Claude Code install docs if it isn't found.

What the installer must do

  1. Detect the operating system and package manager.
  2. Install external dependencies when missing:
  3. Register the yoke marketplace with Claude Code:
    claude marketplace add github:yokeloop/yoke
    
  4. Run a verification pass:
    • revdiff --version returns a version.
    • claude marketplace list shows yoke.
    • Exit 0 on success; non-zero with a clear error otherwise.
  5. Be idempotent — safe to re-run without reinstalling or duplicating registrations.

Cross-platform strategy — open decision

Implementer picks one and notes trade-offs in the PR:

  • A. Single shell script with platform detection — one install.sh that covers macOS + Linux, rejects Windows with a clear message.
  • B. Split: install.sh (macOS/Linux) + install.ps1 (Windows) — two entry points, same logic in each shell language.
  • C. Universal installers via Homebrew tap / Scoop / winget — no custom script; publish yoke through each ecosystem.

Option B is the pragmatic default: simple, discoverable, covers all three platforms, and aligns with how revdiff itself ships.

Scope — what needs to be done

  1. Pick the cross-platform strategy (A / B / C).
  2. Implement the installer(s):
    • OS and distro detection.
    • Per-platform dependency install (brew, apt, dnf, pacman, winget).
    • Claude marketplace registration.
    • Verification pass.
  3. Make the installer idempotent — a second run reports "already installed" and exits 0.
  4. Add an uninstall path: remove the marketplace entry; leave external binaries (revdiff, gh) alone.
  5. Update the README install section:
    • Replace the manual claude marketplace add ... block with a single copy-paste command per platform.
    • Keep the manual path as a documented fallback.
  6. Document what the installer does not do (Telegram env vars, worktrunk setup — out of scope).

Acceptance criteria

  • One copy-paste command installs revdiff and registers yoke on macOS.
  • The same (or its platform twin) works on Debian/Ubuntu, Fedora/RHEL, Arch, and Windows.
  • Re-running the installer on an already-installed machine reports "already installed" and exits 0.
  • Verification step confirms revdiff and the yoke marketplace entry are present.
  • README shows the single-command install per platform and keeps the manual fallback.
  • Installer aborts early with a message pointing to Claude Code install docs when the claude CLI isn't on PATH.

Out of scope

  • Installing the claude CLI itself.
  • Telegram notification setup (env vars, bot token) — user-configured.
  • Worktrunk installation and project-hook configuration.

Dependencies

References

Activity

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

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationenhancementNew feature or request

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions