CLI reference

All commands return zero on success and a nonzero status on validation, policy, or transport failure. Run vibey-gh COMMAND --help for argparse's generated reference.

Command Arguments and options Behavior
check --apply, --commits RANGE, --quiet, --ci Verify assets, fingerprints, documentation, provenance, that every scan_workflows entry present in .github/workflows/ can fire for a pull request, and optionally a commit range. --apply adds missing headers and collapses a header duplicated within a file; --ci skips the local hooks-path check.
install none Render configured workflows, install/chains hooks, and install release-site assets.
version --since REF (default origin/main), --dev BUILD, --apply, --explain Derive, explain, or write the semantic version.
trailer / trailer-key none Print the configured provenance trailer or only its key.
conventional-message --file COMMIT_EDITMSG or stdin Normalize the first line without changing the remaining bytes. This git-hook helper is intentionally CLI-only because it edits a local file or stdin.
conventional-check required --commits BASE..HEAD Audit every subject in an explicit revision range. This local/CI git helper is intentionally CLI-only, not a remote automation capability.
merge-train --method squash\|rebase\|merge, --pr N, --dry-run, --label LABEL, --summary FILE Revalidate and merge one or all policy-ready exact heads.
pr-automation evaluate required --pr N --head-sha SHA Classify one exact PR head and emit stable JSON.
pr-automation ready-draft required --pr N --head-sha SHA Convert a stable exact draft head to ready-for-review.
pr-automation record-review required --pr N --input JSON\|FILE\|- Persist a structured exact-head review. Use - for large stdin payloads.
pr-automation record-repair required --pr N --input JSON\|FILE\|- Persist a structured repair attempt.
pr-automation mirror-fork required --pr N Create a linked repository-owned replacement when a fork needs edits.
pr-automation ensure-labels none Create or reconcile all managed labels idempotently.
issue-automation evaluate required --issue N Classify one issue and emit stable JSON, including the derived solution branch and a Conventional Commit pr_title.
issue-automation context required --issue N; optional --output FILE, --max-bytes N Render one issue as a bounded, explicitly untrusted briefing. Writes to stdout when --output is omitted; parent directories are created.
issue-automation record-solution required --issue N --input JSON\|FILE\|- Persist a structured solution attempt against the issue's content lineage.
issue-automation list-eligible none Emit the JSON array of open issues a recovery sweep should dispatch.
issue-automation ensure-labels none Create or reconcile the issue automation labels idempotently.
github-release required --target SHA; optional --version VERSION Create or reuse an immutable tag and GitHub Release.
promote --method rebase\|squash\|merge, --dry-run, --wait or --no-wait, --summary FILE Open/reuse the integration-to-release PR. Event-driven --no-wait is the default.
realign none Bring the integration branch forward after release without rewriting it.
pr-automation self-heal --pr N optional Refill a spent repair budget, itself bounded by branch_sync.max_self_heals. Omit --pr to sweep every exhausted pull request.
conversation evaluate required --subject N; optional --comment-id ID Decide whether one comment gets a response, and how far it may reach.
conversation context required --subject N; optional --comment-id ID, --output FILE, --max-bytes N Render the thread as a bounded, explicitly untrusted briefing.
conversation reply required --subject N --body TEXT\|FILE\|- Post an answer. A trusted step calls this; the model never gets the tool.
conversation record-response required --subject N --input JSON\|FILE\|- Persist one interaction against the thread's budget.
reconcile-branches --dry-run Rebase, close, or leave each open pull-request branch stranded by a realign rewrite. --dry-run decides without mutating anything. Realign calls this itself; the command exists for recovery and inspection.
rulesets --dry-run Reconcile the integration and release branch rulesets declared by [rulesets]. --dry-run reports drift without creating or updating anything. repository-profile.yml calls this itself; the command exists for recovery and inspection.
api, mcp, sdk CAPABILITY, --arguments JSON_ARRAY Invoke a canonical capability through that adapter.
webhook CAPABILITY, --arguments JSON_ARRAY, required --delivery ID Sign and dispatch locally using VIBEY_GH_WEBHOOK_SECRET; claims persist by default.

VIBEY_GH_WEBHOOK_STATE_DIR overrides the default .vibey-gh/webhook-deliveries store. The CLI atomically creates a mode-0600 SHA-256 marker for every accepted delivery ID in a mode-0700 directory, so rejection survives restarts and concurrent invocations. Put it on durable storage when the CLI receives webhooks.

Library and server adapters

SDK, API, MCP, and webhook implementations are dependency-free application callables, not bundled network daemons. Adopters own TLS, authentication, process management, rate limits, and request-size limits in their chosen server framework.

from vibey_gh.surfaces import api_dispatch, mcp_dispatch

status, response = api_dispatch(
    "POST", "/v1/capabilities/check", b'{"arguments":["--ci"]}'
)
tools = mcp_dispatch({"jsonrpc": "2.0", "id": 1, "method": "tools/list"})

Map HTTP POST /v1/capabilities/{name} to api_dispatch and MCP JSON-RPC objects to mcp_dispatch. For an inbound webhook, retain the sender's raw bytes and signature:

from pathlib import Path
from vibey_gh.surfaces import WebhookDispatcher

webhooks = WebhookDispatcher(secret, delivery_dir=Path("/var/lib/vibey-gh/deliveries"))
status, response = webhooks.dispatch(delivery_id, signature_header, raw_body)

Never put the secret in arguments or logs. The convenience CLI computes its signature for integration and smoke testing; an HTTP adapter must forward and verify the sender's HMAC.