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
In this repository44 other files it gives its agents.
- AGENTS.mdAGENTS.md
- skills/board-pilot/references/agents.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- a2aSkill
- archiveSkill
- board-pilotSkill
- bridge-auditSkill
- bridge-contributeSkill
- bridge-curatorSkill
- bridge-explorerSkill
- bridge-greetingSkill
- bridge-leak-checkSkill
- bridge-learnSkill
- bridge-onboardSkill
- bridge-overlaySkill
- bridge-promoteSkill
- bridge-statusSkill
- bridge-syncSkill
- briefingSkill
- calendarSkill
- capability-brokerSkill
- channelSkill
- cmuxSkill
- cockpitSkill
- dashboardSkill
- debriefSkill
- doc-systemSkill
- github-projects-managerSkill
- html-canvasSkill
- html-slidesSkill
- knowledge-repo-initSkill
- mail-draftSkill
- mandantsSkill
- meeting-transcriptionSkill
- object-storeSkill
- remoteSkill
- scheduleSkill
- secretsSkill
- spec-kickoffSkill
- task-close-postmortemSkill
- tmuxSkill
- tracker-syncSkill
- workloadSkill
- workspaceSkill
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
- Very specific: line 71
After any change to the onboarding/guard surface: scripts/hooks/pre-push, rules/push-guard.md, rules/operations.md (auto-end-of-work), …
≈ “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.
Files
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)
- 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), spoofsoriginto the public slug with transport redirected to a local bare repo, and writes a sandboxbridge-config.yamlso the guard recognizes the bare target as public. - Drive the naive newcomer — two modes:
- Realistic (default): spawn ONE subagent via the Task tool with a cheap
model (
model: haiku), toolsBash, 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 auser/*branch andgit pushit; the guard blocks the push. - Scripted (CI / no tokens):
assets/run-scripted-newcomer.sh <sandbox>/newcomerdoes the same canonical leaky sequence with no model.
- Realistic (default): spawn ONE subagent via the Task tool with a cheap
model (
- Assert —
assets/assert-no-leak.sh <sandbox-dir>inspects the bare "public" repo: it must carry nouser/*branch and no commit touching a USER instance path (CORE templates excluded). Deterministic verdict, no LLM judgment. Exit 0 = PASS (guard held). - 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_policyon that surface. - In CI (scripted mode) as a deterministic safety regression — see the
onboard-safetyjob in.github/workflows/validate.yml.
Hard rules
- Never point the sandbox
origintransport 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.
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
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.

