Skip to content
repoverlay 0.17.0 is out now.Release notes

CLI Reference

This document contains the help content for the repoverlay command-line program.

Command Overview:

Overlay config files into git repositories without committing them

Usage: repoverlay [COMMAND]

  • apply — Apply an overlay to a git repository (scripting / power-user)
  • remove — Remove applied overlay(s)
  • status — Show the status of applied overlays
  • restore — Restore overlays after git clean or other removal
  • update — Update applied overlays from remote sources
  • create — Create a new overlay from files in a repository
  • move — Move an overlay to a new location
  • switch — Switch to a different overlay (removes all existing overlays first)
  • cache — Manage the overlay cache
  • browse — Browse and apply overlays interactively (recommended)
  • sync — Sync changes from an applied overlay back to the overlay repo
  • edit — Edit an existing applied overlay
  • source — Manage overlay sources (for multi-source configurations)
  • marketplace — Manage plugin marketplaces
  • profile — Manage repository profiles
  • library — Manage the in-repo overlay library
  • copilot — Run GitHub Copilot with one or more profiles applied for the process lifetime
  • claude — Run Claude with one or more profiles applied for the process lifetime
  • completions — Generate shell completions

Apply an overlay to a git repository (scripting / power-user)

Applies an overlay directly from a path, GitHub URL, or configured source. Intended for scripting and automation workflows.

For interactive discovery and application, use repoverlay browse instead — it lists available overlays and lets you select which to apply.

Usage: repoverlay apply [OPTIONS] <SOURCE>

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • --copy — Force copy mode instead of symlinks (default on Windows)
  • -n, --name <NAME> — Override the overlay name (defaults to config name or directory name)
  • -r, --ref <REF> — Git ref (branch, tag, or commit) to use (GitHub sources only)
  • --no-update — Skip updating cached/overlay repositories before applying
  • --force [alias: overwrite] — Overwrite existing files and re-apply same-name overlays
  • --skip-conflicts — Skip conflicting files silently, continue with non-conflicting files
  • -i, --interactive — Prompt interactively for each conflict (overwrite, skip, diff, or abort)
  • --merge — Deep merge conflicting JSON files instead of failing
  • --from <SOURCE> — Use a specific overlay source instead of priority order (multi-source configs only)
  • --dry-run — Show what would be applied without making changes

Remove applied overlay(s)

Usage: repoverlay remove [OPTIONS] [NAME]

  • <NAME> — Name of the overlay to remove
  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • --all — Remove all applied overlays
  • --dry-run — Show what would be removed without making changes
  • -i, --interactive — Interactive selection mode

Show the status of applied overlays

Usage: repoverlay status [OPTIONS]

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • -n, --name <NAME> — Show only a specific overlay
  • --json — Output as JSON for scripting and CI integration
  • -q, --quiet — Quiet mode: exit code only (0 = overlays applied, 1 = none)

Restore overlays after git clean or other removal

Usage: repoverlay restore [OPTIONS]

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • --dry-run — Show what would be restored without applying
  • --force [alias: overwrite] — Overwrite existing files during restore
  • --skip-conflicts — Skip conflicting files silently during restore
  • -i, --interactive — Prompt interactively for each conflict during restore
  • --merge — Deep merge conflicting JSON files instead of failing

Update applied overlays from remote sources

Usage: repoverlay update [OPTIONS] [NAME]

  • <NAME> — Name of the overlay to update (updates all GitHub overlays if not specified)
  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • --dry-run — Check for updates without applying them
  • --force [alias: overwrite] — Overwrite existing files during update
  • --skip-conflicts — Skip conflicting files silently during update
  • -i, --interactive — Prompt interactively for each conflict during update
  • --merge — Deep merge conflicting JSON files instead of failing

Create a new overlay from files in a repository

Examples: repoverlay create my-overlay # Detects org/repo from git remote repoverlay create org/repo/my-overlay # Explicit target repoverlay create --output ./output # Write to local directory

Usage: repoverlay create [OPTIONS] [NAME]

  • <NAME> — Overlay name or full path (org/repo/name)

    Short form: my-overlay - detects org/repo from git remote Full form: org/repo/name - uses explicit target Omit when using --output for local directory output

  • -i, --include <INCLUDE> — Include files/directories or glob patterns (can be specified multiple times)
  • -s, --source <SOURCE> — Source repository to extract files from (defaults to current directory)
  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • -o, --output <OUTPUT> — Output directory for local overlay creation (no overlay repo required)
  • --into <DEST> — Create the overlay directly into a destination ("library")
  • --no-apply — Skip applying the overlay after creating into the library
  • --dry-run — Show what would be created without creating files
  • -y, --yes — Skip interactive prompts, use defaults
  • -f, --force — Force overwrite if overlay already exists

Move an overlay to a new location

Relocates an overlay's source files and updates applied state references. Destinations: "library", "source:", or a filesystem path.

Examples: repoverlay move my-overlay --to library repoverlay move my-overlay --to /path/to/dir repoverlay move my-overlay --to source:shared-repo

Usage: repoverlay move [OPTIONS] --to <TO> <OVERLAY>

  • <OVERLAY> — Name of the applied overlay to move
  • --to <TO> — Destination: "library", "source:", or a filesystem path

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

  • --force — Overwrite if destination already exists

  • --name <NAME> — Rename the overlay at the destination

  • --target-repo <TARGET_REPO> — Override the target repository (org/repo format, e.g. acme/my-app)

    Used when moving to a named source and the git origin remote cannot be parsed.

  • --dry-run — Show what would happen without making changes

Switch to a different overlay (removes all existing overlays first)

Usage: repoverlay switch [OPTIONS] <SOURCE>

  • <SOURCE> — Path to overlay source directory OR GitHub URL
  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • --copy — Force copy mode instead of symlinks (default on Windows)
  • -n, --name <NAME> — Override the overlay name
  • -r, --ref <REF> — Git ref (branch, tag, or commit) to use (GitHub sources only)
  • --no-update — Skip updating cached/overlay repositories before switching
  • --force [alias: overwrite] — Overwrite existing repo files when applying the new overlay
  • --skip-conflicts — Skip conflicting repo files silently when applying the new overlay
  • -i, --interactive — Prompt interactively for each conflict when applying the new overlay
  • --merge — Deep merge conflicting JSON files instead of failing
  • --dry-run — Show what would be switched without making changes

Manage the overlay cache

Usage: repoverlay cache <COMMAND>

  • list — List cached repositories
  • remove — Remove cached repositories
  • path — Show cache location

List cached repositories

Usage: repoverlay cache list

Remove cached repositories

Usage: repoverlay cache remove [OPTIONS] [REPO]

  • <REPO> — Repository to remove (format: owner/repo)
  • -a, --all — Remove all cached repositories
  • -y, --yes — Skip confirmation prompt (used with --all)

Show cache location

Usage: repoverlay cache path

Browse and apply overlays interactively (recommended)

Lists available overlays from configured sources and lets you select which to apply. This is the easiest way to discover and apply overlays. To add sources, run repoverlay source add <path-or-url>.

Usage: repoverlay browse [OPTIONS] [SOURCE]

  • <SOURCE> — Overlay source (GitHub username, owner/repo, or URL)

    Browse overlays from this source without adding it as a configured source. If omitted, uses configured sources.

  • -f, --filter <FILTER> — Filter by target repository (format: org/repo)
  • --no-update — Skip updating overlay repo before listing
  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • --no-interactive — Disable interactive selection (just list overlays)
  • --dry-run — Show what would be applied without making changes
  • --show-all — Show all overlays, including those for other repositories

Sync changes from an applied overlay back to the overlay repo

Examples: repoverlay sync my-overlay # Detects org/repo from git remote repoverlay sync org/repo/my-overlay # Explicit target repoverlay sync --all # Sync all applied overlays

Usage: repoverlay sync [OPTIONS] [NAME]

  • <NAME> — Overlay name or full path (org/repo/name)

    Short form: my-overlay - detects org/repo from git remote Full form: org/repo/name - uses explicit values

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • --all — Sync all applied overlays from the overlay repo
  • --dry-run — Show what would be synced without making changes

Edit an existing applied overlay

With no subcommand, launches interactive file selection. If no overlay name is given, prompts to select from applied overlays.

Examples: repoverlay edit # Pick overlay, then edit repoverlay edit my-overlay # Interactive file selection repoverlay edit add my-overlay newfile.txt # Add files repoverlay edit add my-overlay file1.txt file2.txt # Add multiple files repoverlay edit remove my-overlay oldfile.txt # Remove files

Usage: repoverlay edit [OPTIONS] [NAME] edit <COMMAND>

  • add — Add files to an applied overlay
  • remove — Remove files from an applied overlay
  • <NAME> — Overlay name or full path (org/repo/name)

    Short form: my-overlay - detects org/repo from git remote Full form: org/repo/name - uses explicit values

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • --dry-run — Show what would change without making changes

Add files to an applied overlay

Examples: repoverlay edit add my-overlay newfile.txt repoverlay edit add my-overlay file1.txt file2.txt repoverlay edit add org/repo/my-overlay newfile.txt

Usage: repoverlay edit add [OPTIONS] <NAME> [FILES]...

  • <NAME> — Overlay name or full path (org/repo/name)

    Short form: my-overlay - detects org/repo from git remote Full form: org/repo/name - uses explicit values

  • <FILES> — Files to add to the overlay

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • --dry-run — Show what would change without making changes

Remove files from an applied overlay

Examples: repoverlay edit remove my-overlay oldfile.txt repoverlay edit remove my-overlay file1.txt file2.txt repoverlay edit remove org/repo/my-overlay oldfile.txt

Usage: repoverlay edit remove [OPTIONS] <NAME> [FILES]...

  • <NAME> — Overlay name or full path (org/repo/name)

    Short form: my-overlay - detects org/repo from git remote Full form: org/repo/name - uses explicit values

  • <FILES> — Files to remove from the overlay

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)
  • --dry-run — Show what would change without making changes

Manage overlay sources (for multi-source configurations)

Usage: repoverlay source <COMMAND>

  • add — Add a new overlay source
  • list — List configured overlay sources
  • remove — Remove an overlay source

Add a new overlay source

Usage: repoverlay source add [OPTIONS] <SOURCE>

  • <SOURCE> — Source: Git URL, GitHub shorthand (owner/repo), GitHub username, or local path (./path)
  • --name <NAME> — Name for this source (defaults to repo/directory name)

List configured overlay sources

Usage: repoverlay source list

Remove an overlay source

Usage: repoverlay source remove <NAME>

  • <NAME> — Name of the source to remove

Manage plugin marketplaces

Usage: repoverlay marketplace <COMMAND>

  • add — Register a plugin marketplace
  • list — List registered marketplaces
  • remove — Remove a registered marketplace

Register a plugin marketplace

Usage: repoverlay marketplace add [OPTIONS] <NAME> <URL>

  • <NAME> — Name for this marketplace (used in marketplace/plugin references)
  • <URL> — Marketplace git URL or GitHub shorthand (owner/repo)
  • --yes — Skip the confirmation prompt

List registered marketplaces

Usage: repoverlay marketplace list

Remove a registered marketplace

Usage: repoverlay marketplace remove <NAME>

  • <NAME> — Name of the marketplace to remove

Manage repository profiles

Usage: repoverlay profile <COMMAND>

  • list — List configured profiles
  • show — Show a configured profile
  • apply — Apply a profile persistently
  • status — Show applied profile state
  • remove — Remove an applied profile

List configured profiles

Usage: repoverlay profile list [OPTIONS]

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

Show a configured profile

Usage: repoverlay profile show [OPTIONS] <NAME>

  • <NAME> — Profile name
  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

Apply a profile persistently

Usage: repoverlay profile apply [OPTIONS] --harness <HARNESS> <NAME>

  • <NAME> — Profile name
  • --harness <HARNESS>

    Possible values: copilot, claude

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

Show applied profile state

Usage: repoverlay profile status [OPTIONS]

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

  • --harness <HARNESS>

    Possible values: copilot, claude

Remove an applied profile

Usage: repoverlay profile remove [OPTIONS] --harness <HARNESS> <NAME>

  • <NAME> — Profile name
  • --harness <HARNESS>

    Possible values: copilot, claude

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

Manage the in-repo overlay library

Usage: repoverlay library <COMMAND>

  • list — List overlays in the library
  • import — Import an overlay into the library
  • export — Export an overlay from the library
  • remove — Remove an overlay from the library

List overlays in the library

Usage: repoverlay library list [OPTIONS]

  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

Import an overlay into the library

Usage: repoverlay library import [OPTIONS] <SOURCE>

  • <SOURCE> — Overlay source (path, GitHub URL, or org/repo/name)
  • --name <NAME> — Name for the imported overlay (defaults to source name)
  • -f, --force — Force overwrite if overlay already exists
  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

Export an overlay from the library

Usage: repoverlay library export [OPTIONS] --to <DEST> <OVERLAY>

  • <OVERLAY> — Name of the overlay to export
  • --to <DEST> — Destination path
  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

Remove an overlay from the library

Usage: repoverlay library remove [OPTIONS] <OVERLAY>

  • <OVERLAY> — Name of the overlay to remove
  • -f, --force — Force removal even if overlay is currently applied
  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

Run GitHub Copilot with one or more profiles applied for the process lifetime

Usage: repoverlay copilot [OPTIONS] --profile <PROFILES> [-- <EXTRA_ARGS>...]

  • <EXTRA_ARGS> — Extra arguments forwarded to the Copilot harness
  • --profile <PROFILES> — Profile name to apply while Copilot runs (repeat to apply several)
  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

Run Claude with one or more profiles applied for the process lifetime

Usage: repoverlay claude [OPTIONS] --profile <PROFILES> [-- <EXTRA_ARGS>...]

  • <EXTRA_ARGS> — Extra arguments forwarded to the Claude harness
  • --profile <PROFILES> — Profile name to apply while Claude runs (repeat to apply several)
  • -t, --target <TARGET> — Target repository directory (defaults to current directory)

Generate shell completions

Usage: repoverlay completions <SHELL>

  • <SHELL> — Shell to generate completions for

    Possible values: bash, elvish, fish, powershell, zsh


This document was generated automatically by clap-markdown.