From chronicle
Use this skill when the user wants their OWN GitHub repository connected to a Chronicle experiment as a live two-way sync — phrases like "bind my repo", "attach my repo to the experiment", "use my own GitHub repo", "keep my repo in sync with Chronicle", "I want the agent's work in my repository". Binding means: their repo seeds the experiment, their pushes flow IN continuously, and agent work flows BACK as chronicle/* branches they can review/merge under their own policies. Bind-at-create only — an existing experiment cannot be bound later. Do NOT invoke for a plain one-time copy-in of a local checkout (that's `chronicle-import-repo`, the default on-ramp — importing never binds), and never bind unless the user explicitly asked for the connection.
How this skill is triggered — by the user, by Claude, or both
Slash command
/chronicle:chronicle-bind-repoThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create an experiment **bound** to the user's own GitHub repository
Create an experiment bound to the user's own GitHub repository
(runes/chronicle/designs/external-repos.md). The internal managed repo
remains the system of record — pins, locks, and provenance are unchanged —
while the user's repo is a synced view: inbound fast-forward imports of their
branches, outbound chronicle/<slug>/v<n> branches carrying agent work.
Sync is never load-bearing: a broken link degrades visibility, never the
experiment.
This is an explicit verb. The default create path (and every import flow)
uses the zero-setup managed repo; chronicle-import-repo copies content in
without binding. Reach for this skill only on the user's clear ask to stay
connected to their repository.
Everything here is bundled MCP: chronicle.list_github_installations,
chronicle.create_experiment (its external_repo parameter is the bind),
chronicle.get_external_repo, chronicle.sync_external_repo. No SDK leg.
Private repos (and any outbound sync) need the Methodic Research GitHub App installed on the user's account/org and claimed for their Chronicle scope. That handshake is browser-only (Chronicle-initiated; agents cannot install or claim):
chronicle.list_github_installations — if an active installation covers
the repo's owner, use its installation_id.Public read-only tier: a public repo can be bound with no
installation — omit installation_id. Inbound only; nothing is ever
pushed back. Use it when the user just wants their public code streaming in.
owner/name, base branch (default: the
repo's default branch), monorepo code_subdir if the training code isn't
at the root, and the outbound sync_mode:
live (default) — agent work lands in their repo as it happenson_commit — one push per variation commitmanual — only on sync-nowoff — inbound onlyaccount_login to the repo
owner.chronicle.create_experiment with the usual fields
(title / hypothesis_summary / config_yaml / slug — same discipline as
chronicle-propose-experiment) plus:
"external_repo": {
"installation_id": 12345678,
"repo": "owner/name",
"base_ref": "main",
"code_subdir": "ml/experiments",
"sync_mode": "live"
}
A rejected spec fails the create cleanly (nothing orphaned). Common
rejections and their remediations: installation not connected → the
Connect flow above; private repos require the App installed → install or
make it public; a size-cap error → the repo is over the mirror cap.chronicle.get_external_repo(experiment_id) until
link_state is active (public tier: readonly); broken with a
state_reason means the seed failed — surface the reason.chronicle/<slug>/v<n> branches in their repo —
merging any of it into their mainline is entirely their call and their
CI's;chronicle.sync_external_repo triggers an immediate two-way pass any
time.chronicle/* name —
the link goes degraded and names it).Guides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Dispatches multiple subagents concurrently for independent tasks without shared state. Use when facing 2+ unrelated failures or subsystems that can be investigated in parallel.
npx claudepluginhub methodic-research/skills --plugin chronicle