rabbit.ci is the repository integration layer for Rabbit CI.
Run one command in a repository:
rabbit.ciIt writes .rabbit/repo.yaml and reports the read-only integration context:
repository identity, current default branch, GitHub visibility and permissions
available to the current gh token, repo-owned signals, and the next missing
pieces worth improving.
The generated file is intentionally small and committed with the code. Dynamic state stays in command output, so it remains current without leaking secrets or turning GitHub state into permanent repository truth.
This is the focused successor to the repository integration work that first
lived in dev.kit. dev.kit remains responsible for broad generated context;
Rabbit CI execution remains in its integrations and backends.
Generate, inspect in JSON, or validate the current contract:
bin/rabbit.ci
bin/rabbit.ci --json
bin/rabbit.ci --check--json is the dynamic integration interface. It contains no token or secret
values. A GitHub repository is queried only when an origin points to GitHub;
the output distinguishes unavailable tooling, an unauthenticated token,
insufficient access, and a repository that is not visible to the token.
The v1 contract is intentionally small:
repository.nameidentifies the codebase.repository.owneris included when a GitHub origin supplies one.repository.default_branchis the best locally or remotely observed default.discovery.read_only: trueguarantees discovery never reads secret values or mutates GitHub, workflow, environment, or cloud state.
Read the repository contract, repository discovery and initialization, and dev.kit migration boundary before extending it.
make testRabbit CI helps teams own how software moves—and proves the work as it moves. Its delivery route is repository-centric, policy-governed, and evidence-producing: move fast, protect the path, craft proofs.