Skip to content

CLI: init

Terminal window
buddy-agent-harness init [--root <directory>] [--harness <names>] [--copy] [--force] [--format toon|json|text]

The CLI performs the linking step only. Consolidating existing configuration and writing the instruction bridges is the init skill’s job, because both need judgment about user-authored content. Run the CLI directly on a repository that is already consolidated.

OptionMeaning
--root <directory>Selects the directory to initialize. The product direction is repository-root-only configuration.
--harness <names>Comma-separated harnesses to enable in addition to Claude Code and Cursor, such as codex,gemini-cli.
--copyCopy the canonical skills directory when links are unavailable.
--forceReplace a conflicting target after the command has identified it.
--format toon|json|textChoose token-efficient TOON output (default), JSON, or a human-readable text report.

The result reports the selected root, the canonical skill count, whether copying was requested, and three harness lists:

FieldMeaning
harnessesEvery enabled harness
nativeHarnesses that read .agents/skills directly, so nothing was written for them
linkedHarnesses that received a projection

The native / linked split is the useful part: only linked is a real diff. A deprecated field reports any enabled deprecated harness name.

Nothing is written to record the run. The enabled set is derived from detection every time, so the result above is the only report. See Configuration Layout.

A projection is a single directory-level symlink from the harness path to .agents/skills, so a skill added later appears in every enabled harness without re-running the command. Only Claude Code needs one; see Harness Differences for the per-harness paths.

--copy is reserved for environments where links are unavailable. A copy is a snapshot rather than a live projection, so it needs a re-run after every skill change.

The command checks every target before changing any of them. Without --force, conflicts stop the command and leave all targets unchanged. A target that appears during a failed link attempt is preserved rather than overwritten.

A pre-existing harness skills directory containing real skills is a conflict by design. Move those skills into .agents/skills/ first (see Migrating Existing Configuration) rather than discarding them with --force.