agentleFS
bks-labbks-lab/open-bridge/skills/onboard-sim/SKILL.md

onboard-sim

Skill13 starsChanged 13 days agoMITView on GitHub

Adversarial onboarding-safety simulation: builds a leak-safe sandbox reproducing a fresh public-origin clone with the push guard armed, drives a naive first-user session, then asserts no USER data reached the upstream (rules/push-guard.md). Trigger: "/onboard-sim", "simulate onboarding", "leak sim", "test the push guard", "does my bridge leak".

  • Deletes or force-pushes
  • Commits and pushes

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    After any change to the onboarding/guard surface: scripts/hooks/pre-push, rules/push-guard.md, rules/operations.md (auto-end-of-work), …

    line 71

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

onboard-sim — adversarial onboarding-safety simulation

Proves an invariant the unit test can't: a realistic naive first-time-user session, walking the real onboarding → commit → push path, cannot leak private data to a public upstream. The block is a deterministic git hook (scripts/hooks/pre-push), so it fires below the model — which is why the correct driver is the cheapest, dumbest model available: if even that, behaving like a real first-timer, can't leak, no agent can. Cost and speed are the bonus; the model-independence is the actual claim.

Why a simulation (not just the unit test)

scripts/tests/test-push-guard.sh checks the hook's block/allow/bypass contract in isolation. This skill checks the thing that matters operationally: that the guard fires on the real path a first-timer (or the auto-end-of-work autopilot) takes, end to end — clone → onboard → commit USER data to user/* → push.

Leak-safe by construction

The sandbox's "public upstream" is a local bare repo. The newcomer clone's origin is set to the public URL (so the guard's slug detection sees a public target) but all transport is redirected to that bare repo via git insteadOf. So if the guard ever fails, the simulated leaky push lands in the local bare repo — caught by the assert, never on the real internet. Testing for a leak cannot cause one.

How it runs (4 phases)

  1. Build — assets/build-sandbox.sh <open-bridge-checkout> [sandbox-dir] prints the sandbox dir. It copies the live CORE (tracked + new-untracked) into a fresh repo, arms the guard (core.hooksPath=scripts/hooks), spoofs origin to the public slug with transport redirected to a local bare repo, and writes a sandbox bridge-config.yaml so the guard recognizes the bare target as public.
  2. Drive the naive newcomer — two modes:
    • Realistic (default): spawn ONE subagent via the Task tool with a cheap model (model: haiku), tools Bash, Read, Write, pointed at <sandbox>/newcomer, told to set up their identity + work and back it up to the remote — with an explicit "do not work around or disable any safety check" instruction (a naive user wouldn't). It will commit USER data to a user/* branch and git push it; the guard blocks the push.
    • Scripted (CI / no tokens): assets/run-scripted-newcomer.sh <sandbox>/newcomer does the same canonical leaky sequence with no model.
  3. Assert — assets/assert-no-leak.sh <sandbox-dir> inspects the bare "public" repo: it must carry no user/* branch and no commit touching a USER instance path (CORE templates excluded). Deterministic verdict, no LLM judgment. Exit 0 = PASS (guard held).
  4. Teardown — rm -rf <sandbox-dir> (the sandbox is a throwaway temp tree).

When to run

  • After any change to the onboarding/guard surface: scripts/hooks/pre-push, rules/push-guard.md, rules/operations.md (auto-end-of-work), rules/session-start.md, skills/bridge-onboard/, bin/setup, .bridge-origin, bridge-config.yaml.template.
  • As the verify gate for the dev-board's verify_policy on that surface.
  • In CI (scripted mode) as a deterministic safety regression — see the onboard-safety job in .github/workflows/validate.yml.

Hard rules

  • Never point the sandbox origin transport at a real remote. The bare-repo redirect is the safety property; do not "simplify" it away.
  • The driver must not be told the guard exists, and must be instructed NOT to bypass (BRIDGE_PUSH_GUARD=off / --no-verify). The point is naive-path realism.
  • The verdict is the deterministic assert, never the driver's self-report.
  • A PASS means the guard held; a FAIL means a leak reached the (local, safe) upstream — fix the guard, never the assert.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.