agentsclimarketplace

Bridge overlay

Skill bks-lab/open-bridge/skills/bridge-overlay

Your AI coding agent starts every session knowing your repos, your clients, and how you work — a plain git repo of markdown + YAML it reads at session start, independent of model or frontend. Context compounds instead of restarting. MIT.

Install
npx -y skills add bks-lab/open-bridge --skill bridge-overlay

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Subscribe a Bridge to an ORG OVERLAY — a git repo an organisation publishes that ships its shared config (contexts, projects, mandants, accounts, org skills/agents/standing-orders, an ecosystem fragment) as a flat mirror tree. /overlay add <git-url> sparse-clones the overlay, validates its manifest, previews a per-file plan with risk flags, and materializes COPIES into your repo under a lockfile — never block-merging your config, never clobbering your edits (3-way merge), never touching CORE. sync/apply/status/diff/remove/list manage the subscription over time. The overlay is the LOWER layer; your user files always win. Trigger: "/overlay", "org overlay", "subscribe to overlay", "materialize org config", "pull org overlay", "unsubscribe overlay", "add org config by git url", "list overlays", "overlay status", "overlay diff".

SKILL.md

13.5 KB, as published. Nobody here has run it

Bridge Overlay — subscribe to an org's config bundle

An org overlay is a git repo an organisation publishes so its members' Bridges can share config without each person hand-copying files. It mirrors a flat tree of files (tree/<path><path>), every file scope: org, declared by a root overlay.manifest.yaml. /overlay is the consumer side: it subscribes, materializes COPIES under a lockfile, and keeps them in sync.

It is the mirror-image of the push skills:

SkillDirectionUnit
/promote · /bridge-syncpush your scope:org/core commits up to an upstreamcommits
/overlaypull an org's published config down into your repomanifest-declared files

Read the referenced file ONLY when triggered.

When to use

  • An org gives you a git URL: "subscribe your Bridge to our overlay"
  • You want the org's shared contexts / projects / mandants / accounts / org skills materialized locally and kept current
  • You already subscribed and want to pull updates (sync), preview them (diff), re-materialize offline (apply), check freshness (status), or end the subscription (remove)

NOT for:

  • Publishing an overlay (that's the org's job — see references/authoring.md)
  • Pushing YOUR changes upstream (/promote, /bridge-sync)
  • One-off file copies with no ongoing subscription (just copy the file)

What an overlay carries

An overlay ships an org's scope: org building blocks as a flat tree/ mirror — config AND tools, so one git-URL is a complete org bridge, not just config:

GroupPathKindGate
Contexts / projects / mandants / accountsworkflow/ · identity/configbatch-confirm
Remotes / shared infrainfra/configbatch-confirm
Org rulesrules/org/**rulebatch-confirm
Org skills (complete)skills/<name>/**skillper-file [y]
Org sub-agents.claude/agents/<name>.mdagentper-file [y]
Ecosystem fragmentecosystem.<org>.yamlecosystem-fragment@import

Skills ship COMPLETE. A skill is a directory: SKILL.md declares the tier in its metadata.scope; the sibling scripts/, references/, assets/ carry no inline scope and inherit the tier of their SKILL.md (resolved from the overlay SOURCE, so a fresh add ships the scripts too — they are NOT refused as CORE). A markdown-only skill and a script-bearing skill both transfer whole. Exception: this only covers scripts living inside the skill's own directory (skills/<name>/scripts/). Several scope: core skills (e.g. bridge-dashboard, tracker-sync, workspace, this skill) instead call a shared repo-root engine (scripts/<name>.py) that ships with the Bridge repo itself, outside any skill folder — that script is not part of the skill directory and is not materialized by an org-overlay add.

Don't ship framework as org. A skill/agent that already exists in the consumer's CORE (e.g. a generic bridge-* tool, or a scope:core sub-agent like archivist) must NOT be in the overlay — it collides (user-owned) and would clobber the canonical core copy. Carry only what is genuinely org-specific; leave framework to the framework. The CORE-refusal gate stops anything that classifies core, but a core tool mis-tagged scope: org in the source slips that gate — so exclude it at authoring time (the publish guard + a user-owned count in status are the backstops).

The 7 commands (/overlay <cmd>)

CommandWhat it does
add <git-url> [--ref main] [--name N] [--select GLOB…] [--precedence N] [--dry-run]Subscribe: write a role: org-overlay upstreams[] entry + materialize: sub-block in bridge-config.yaml, sparse-clone into .bridge/overlays/<name>/, validate the manifest, preview the plan with per-kind risk flags + explicit per-file [y] for behavioural files, first materialize, write overlays.lock.yaml.
sync [name] [--dry-run] [--yes]Pull the cache, recompute the sparse set + hashes, 3-way vs the lock, re-materialize clean / upstream-ahead files, prompt on conflict + on PII prompt-fields, prune upstream-deleted files, bump resolved_sha. No name ⇒ all overlays.
apply [name]OFFLINE re-materialize from cache + lock (no network). Idempotent — a clean tree reports all-clean and writes nothing.
status [name]resolved_sha vs cache HEAD; days-since-sync vs pull_interval_days; git -C <cache> log/blame provenance; counts {clean·locally-modified·upstream-ahead·conflict·orphan·CORE-refused}.
diff [name]Preview the next sync/apply (plan + per-file before/after). No writes.
remove <name> [--keep-files]Unsubscribe: hash-verify each lock-recorded file, delete only clean managed files (prompt on locally-modified), drop the cache + materialize: block + lock entry + the ecosystem @import. --keep-files ends the subscription but leaves the files in place.
listSubscribed overlays from upstreams[] (role: org-overlay): name, url, ref, resolved_sha, precedence, file-count, last_synced.

Engine: scripts/overlay.py — a shared repo-root utility shipped with the Bridge repo itself, not a file inside this skill's own directory (the deterministic implementation). The full 17-step sync algorithm, conflict/precedence model, and 3-way base recovery live in references/workflow.md.

HARD GATES (non-negotiable)

  1. Refuse off user/*. CORE branches (main / development) never materialize. An overlay writes USER-tier files onto a user branch only.
  2. CORE-refusal (path-authoritative). Never materialize a dest that classifies core, is _-prefixed, is a cluster-wrapper README.md, is a _template/_schema, or path-escapes the tree. Path classification wins: an inline scope: org line can only re-tier a dest on a frontmatter-bearing path (skills/, .claude/agents/, identity/agent/{IDENTITY,SOUL}) — it can never smuggle a CORE file (rules/, docs/, scripts/, CLAUDE.md, …) past the gate. An overlay ships scope: org content only — it can never overwrite CORE.
  3. Behavioural per-file [y]. A skill / agent / standing-order requires an explicit per-file [y] at first materialize (shown in the preview). config / rule files batch-confirm. --yes is valid non-interactively for non-behavioural files only.
  4. Leak gate BEFORE write. Every staged file passes a raw-secret regex (accounts = azure-keyvault:// / keychain:// / 1password:// URI refs only) on the staged temp file; the no-scrub-leak.py CORE-boundary scan runs only when the materialize target is itself core (never for an org overlay — its org names/emails are not a leak). A hit refuses that file, surfaces it, and continues the rest.
  5. Never clobber a user edit. A locally-modified dest goes through 3-way merge (overlay = lower layer, user = upper). Markers / a GC'd base escalate to a prompt — the engine never silently overwrites your edit.
  6. Never push. /overlay reads from the overlay and writes into your working tree. It never pushes your branch anywhere and never opens a PR.
  7. Never auto-merge config. The ecosystem fragment is wired as an idempotent @ecosystem.<org>.yaml @import line — never block-merged into ecosystem.yaml. No config file is structurally merged.
  8. Exclude the managed dests from git. At materialize, the engine writes a marked, idempotent # >>> overlay:<name> block into the local, untracked .git/info/exclude (never the tracked .gitignore) listing every managed dest — because skills/agents land in tracked paths (skills/, .claude/agents/) that config patterns don't cover, and a fork of a public repo is itself public: without this a git add -A would publish org-internal content. Using .git/info/exclude keeps the dests ignored without touching any tracked file, so neither the content nor the org filenames can be published. The block is dropped on remove. Org content is consumed, never re-committed.

Authoring note — org facts mirror VERBATIM, not as prompt-fields

A prompt_field in the manifest marks a value a consumer may override (it is prompted interactively; under --yes the source value is kept). Do not mark a shared org fact — a GitHub board number, an org recipient email — as a prompt-field: it is the same for every consumer, so it must mirror verbatim. Mis-modelling an org fact as a prompt-field is a real footgun (an automated/--yes run, or a fat-fingered y at the value prompt, silently overwrites the org fact — and it is valid YAML, so parse checks sail past it). Reserve prompt-fields for genuinely per-consumer values; ship org facts plain. A consumer that must diverge edits the file locally — the 3-way merge protects that edit on re-sync.

Testing (required) — the engine is test-locked

The engine scripts/overlay.py is covered by scripts/tests/test-overlay.sh (deterministic, model-free — it drives the REAL engine against a throwaway copy of the tree). Any engine change MUST keep the suite green AND add a case for the new behaviour. Run before every commit:

bash scripts/tests/test-overlay.sh        # must end "N passed, 0 failed"

The suite's 21 sections assert, among others:

  • subscribe + materialize (every dest exists · inline scope: org · lock hashes); idempotent re-apply; dry-run writes nothing; remove restores a clean tree
  • 3-way merge (clean + conflict) · precedence · CORE-refusal · path-traversal
  • §16 prompt-field override survives a re-sync — scalar restore, no silent clobber; §18 a wildcard [*] override never cross-wires to the wrong element
  • §17 leak gate — real secrets (base32/hex, AccountKey=, totp_secret) refused; URI / ${} / comment / prose pass; code files skip the assignment heuristic but still get the format scan (api_key = get() passes, an AKIA… literal in a .py is caught)
  • §19 a scope:org skill ships COMPLETE — its scripts materialize (inherit the SKILL.md tier), never CORE-refused
  • §21 CORE-refusal is path-authoritative — an inline scope: org on a core path (rules/, CLAUDE.md, scripts/) is still refused; a real org SKILL.md/agent still ships (the carve-out doesn't over-refuse)
  • §22 ecosystem_fragment name is enforced in-engine (flat ecosystem.<org>.yaml) even on a consumer without check-jsonschema

When carrying skills/agents in a real overlay, also smoke-test a full materialize before you publish — add --dry-run then status — and confirm zero user-owned (no framework skill rode along), zero leak-refused, and every skill's scripts/ present on disk. A user-owned count > 0 means a CORE tool is mis-tagged in the overlay; pull it out.

Decision Tree

User wants to...
├── Subscribe to an org overlay (git URL)   → references/workflow.md § add (Steps 1–17)
├── Pull updates / re-sync                   → references/workflow.md § sync
├── Re-materialize offline                   → references/workflow.md § apply
├── See freshness / drift counts             → references/workflow.md § status
├── Preview the next sync/apply              → references/workflow.md § diff
├── Unsubscribe (keep or drop files)         → references/workflow.md § remove
├── List subscriptions                       → references/workflow.md § list
├── PACKAGE an overlay for an org to ship    → references/authoring.md
└── Schemas (manifest / lock)                → docs/schemas/overlay-manifest.schema.yaml
                                                docs/schemas/overlays-lock.schema.yaml

Reference Files

FilePurpose
references/workflow.mdOperator runbook — the full 17-step sync algorithm, conflict/precedence model, 3-way base recovery, dry-run semantics, status counts, remove/--keep-files, multi-overlay separation, fleet-record update
references/authoring.mdFor an ORG packaging its overlay — the repo contract, manifest authoring with examples, the publish-guard CI gate, build-artifact discipline

Related Files

  • docs/org-overlays.md — narrative + architecture for org overlays
  • docs/schemas/overlay-manifest.schema.yamloverlay.manifest.yaml schema
  • docs/schemas/overlays-lock.schema.yaml — generated overlays.lock.yaml schema
  • scripts/overlay.py — the engine /overlay drives
  • infra/instances/_template.yaml — fleet record; the engine updates subscribes_overlays on the active instance

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.