init
Skill1 starsChanged 3 months agoMITView on GitHub
Adopter scaffolder (/foundry:init). Stands up a new adopting project's Foundry wiring — operator registry, per-project gh identity isolation (multi-account machines), the app-exercise binding (the live-seam driver map, the generic analog of `make dev`), env/identity mapping — then fail-closes via /foundry:doctor. Branch-protection-as-CODE is retired pending a Rulesets-API rebuild; Tier A itself is NOT retired — it is applied by hand and is live on this framework's own main. An adopter who has not applied it is on Tier B advisory (ci.yml + btb-gates) + the git-discipline gh clause. Trigger when onboarding a new repo to Foundry, or extracting Foundry to a standalone plugin repo.
- Commits and pushes
137 other projects use a version of this.
Adopted by
Most recently taken up by
- naderelewa/Product-to-Prodtheir own version, first seen Nov 8, 2026
- ShahriarBijoy/show-me-howtheir own version, first seen Nov 8, 2026
- MMACABRE/SKILLStheir own version, first seen Nov 8, 2026
- BSSE23047/nauraiz-devtheir own version, first seen Nov 8, 2026
- edwinidrus/dragonhoardtheir own version, first seen Nov 8, 2026
- NilsHellwig/acl-paper-skillstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use daily-arxiv, exp-eval and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
LambenthanSkilldaily-arxiv
每日从 arXiv 拉取新论文,过滤相关性,auto-ingest 高优先级论文,检测 SOTA 更新
Also in 5 projects that use this
LambenthanSkillexp-eval
实验判决门:Review LLM 独立评判实验结果 → 4 种判决路径 → 自动更新 claims confidence、ideas status、graph edges
Also in 5 projects that use this
skyllwtSkillexp-pilot-eval
Pilot result evaluation — read pilot results, apply success criteria, update idea page (pilot_result, failure_reason if failed), generate PILOT_VERDICT_REPORT. Called by /ideate Phase 5 after /exp-pilot-run.
Also in 4 projects that use this
skyllwtSkillexp-pilot-run
Pilot experiment execution — read Pilot Spec YAML, write pilot code, run experiment(Confirm with the user before operation and require the applicant to conduct manual inspection), return results. Called by /ideate Phase 5. Does NOT modify wiki pages or judge pass/fail.
Also in 4 projects that use this
gaebalaiSkillcodex-system
PROACTIVELY consult Codex CLI, your highly capable supporter with exceptional reasoning and task completion abilities. Codex is a trusted expert you should ALWAYS consult BEFORE making decisions on: design choices, implementation approaches, debugging strategies, refactoring plans, or any non-trivial problem. When uncertain, consult Codex. Don't hesitate - Codex provides better analysis. Explicit triggers: "think deeper", "analyze", "second opinion", "consult codex".
Also in 3 projects that use this
- +6 more from Lambenthan
- +1 more from skyllwt
Other versions137 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 137
- microsoft/vscode★ 195ksame name
- mcollina/skills★ 2ksame name
- skyllwt/OmegaWiki★ 1.7ksame name
- DAIR-AutoResearch/AutoSci★ 1.7ksame name
- PKU-DAIR/AutoSci★ 1.7ksame name
- skyllwt/AutoSci★ 1.7ksame name
- TokenRollAI/cc-plugin★ 483same name
- pipecat-ai/gradient-bang★ 420same name
- AlexPEClub/ai-coding-starter-kit★ 382same name
- dannysmith/tauri-template★ 312same name
127 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository71 other files it gives its agents.
- AGENTS.mdAGENTS.md
- llms.txtllms.txt
- amendSkill
- auditSkill
- authorize-releaseSkill
- authorizeSkill
- certify-localSkill
- certify-stagingSkill
- coherence-checkSkill
- command-deckSkill
- contextSkill
- cut-releaseSkill
- dashboards-as-codeSkill
- data-tier-cutoverSkill
- decommission-gateSkill
- deploy-statusSkill
- dispatchSkill
- doctorSkill
- drift-sweepSkill
- env-hygieneSkill
- extract-specSkill
- fleetSkill
- grounding-conformanceSkill
- id-applySkill
- id-architectSkill
- id-baselineSkill
- id-discoverSkill
- id-documentSkill
- id-driftSkill
- id-impactSkill
- id-implementSkill
- id-importSkill
- id-planSkill
- id-promoteSkill
- id-reviewSkill
- id-rollbackSkill
- id-simulateSkill
- id-syncSkill
- id-testSkill
- id-validateSkill
- id-verifySkill
- indexSkill
- infra-sandboxed-applySkill
- intakeSkill
- learn-captureSkill
- learn-distillSkill
- merge-when-greenSkill
- mode-autonomousSkill
- mode-interactiveSkill
- modeSkill
- post-upgradeSkill
- releaseSkill
- relockSkill
- report-citation-graphSkill
- reposSkill
- research-captureSkill
- research-firstSkill
- revertSkill
- sd-debugSkill
- sd-discoverSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 2 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 125 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 41
VERIFY-ONLY. init does not write the plugin/marketplace enablement — a plugin cannot install or enable itself into the session already …
- Very specific: line 53
Operator registry: Create .claude/foundry-operators.json with ≥1 operator (committed — /foundry:authorize resolves operator_id against this …
- Very specific: line 66
VERIFY-ONLY. init does not write any part of the per-account jail.
- Very specific: line 111
Read-only without --apply (reports the current tier).
- Distinctive: line 117
Tier A itself is NOT retired — only its as-code applier is: Read the preflight's verdict precisely, because one of them is not a floor …
- Very specific: line 196
If the operator selects no profile, skip this block entirely and move on — do not run --lock with an empty/placeholder id.
- Very specific: line 210
VERIFY-ONLY. init does not write the statusLine wiring.
- Very specific: line 246
VERIFY-ONLY. init does not write the native OS-level Bash sandbox enable — no shipped writer owns this artifact today …
“Common” is measured: kept by at least 6 in 10 of the 125 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/foundry:init
The adopter onboarding + extraction scaffolder. Foundry is the framework; the
adopting project is the example. /foundry:init wires a new adopter (or the extracted
standalone plugin repo) so the gates are live + fail-closed.
When to trigger
- Onboarding a new repo to the Foundry plugin.
- Phase-4 extraction: splitting
foundry/out to a standalone public plugin repo, with the adopter repo as adopter #0 consuming it.
Procedure (fail-closed at the end)
Control-plane preflight — run this FIRST, before any step below writes anything.
/foundry:inititself can be run from the wrong root (a hosted repo instead of the control plane above it — seedocs/how-to/multi-repo-control-plane.md), and every step after this one writes a file. Run the scripted preflight and STOP if it exits non-zero: read the finding,cdto the named control plane, and re-run/foundry:initthere instead.python3 "${CLAUDE_PLUGIN_ROOT}/scripts/foundry_control_plane.py" "$CLAUDE_PROJECT_DIR"A non-zero exit names the offending ancestor
.claude/foundry-project.jsonand the one-line remedy. Only pass--override(exits 0, still prints the finding) for a deliberately independent adopter nested inside another repo's working tree — see the spec's residuals (feat-foundry-control-plane-preflight, AC-CPP-4/-4b). This step is a practice, not a control —/foundry:initis agent-driven prose, so nothing mechanically forces an agent to run it;/foundry:doctor's owncontrol-planecheck (step 10 below) is the fail-closed backstop this step exists to make you hit early rather than late.Plugin/marketplace enablement — VERIFY-ONLY.
<!-- foundry:init-verify-only:plugin-enablement v1 -->VERIFY-ONLY. init does not write the plugin/marketplace enablement — a plugin cannot install or enable itself into the session already running it (the harness classifier denies a self-confinement edit; this is the ER's empirical finding, not new policy here). This step only reads and reports.
- Present — confirm
/foundry:*skills resolve (this very step running is the evidence). Report the verdict and continue. - Absent or drifted — REFUSE: report the finding and stop this step, pointing at the
pre-session bootstrap's own doc —
${CLAUDE_PLUGIN_ROOT}/docs/QUICKSTART.md(or, before install,https://github.com/lukasrepublic/agentic-foundry/blob/main/docs/QUICKSTART.md) — the shipped writer of this artifact ([[feat-foundry-bootstrap-cli]] AC-BCL-4(b)).
<!-- /foundry:init-verify-only:plugin-enablement -->- Present — confirm
- Operator registry. Create
.claude/foundry-operators.jsonwith ≥1 operator (committed —/foundry:authorizeresolvesoperator_idagainst this registry and records it in the frozenacceptance-contract.yaml; absent registry fails closed). GitHub identity isolation (multi-account machines) — VERIFY-ONLY.
gh's active account is a single GLOBAL setting, so on a machine with >1 authenticated account an adopter onboarded without declaring the repo-owning account silently runsgh(PR create/merge, API) as whatever account is globally active — invisibly, sincegit pushcan still succeed via an SSH host alias, until an admin-scoped call 404s. Inspectgh auth status:- Single account → no-op — leave
.claude/gh-identityabsent; the guard stays dormant (preserves the opt-in contract; single-account adopters are unaffected). - >1 account → the verify-only region below reports the jail state; it does not seed one.
<!-- foundry:init-verify-only:git-identity v1 -->VERIFY-ONLY. init does not write any part of the per-account jail.
scripts/foundry-bootstrap.shis the shipped script the pre-session bootstrap invokes — see its own doc,${CLAUDE_PLUGIN_ROOT}/docs/QUICKSTART.md(or, before install,https://github.com/lukasrepublic/agentic-foundry/blob/main/docs/QUICKSTART.md) — for the commands. This step only verifies, read-only:GH_CONFIG_DIR=~/.config/gh-<account> gh api user --jq .login # compare against the declared handle git -C <target> config user.email # read back the resolved commit identity(NOT
gh auth status— it can read the shared keyring and would print something even for a stale ambient credential.)Disposition, one row per artifact — none of the three is written by this step:
Artifact Disposition Owner / remedy Commit identity — the global includeIfbinding, the per-account include file, repo-localuseConfigOnly, and the.claude/gh-identitymarkerREFUSE pre-session bootstrap owns it ([[feat-foundry-bootstrap-cli]] AC-BCL-7) The ghjail's authenticationREPORT-ONLY — no shipped writer out of scope of the pre-session bootstrap's own Clarifications; scripts/foundry-bootstrap.shnever authenticates itThe GH_CONFIG_DIRsession-env carrierREPORT-ONLY — no shipped writer the pre-session bootstrap is forbidden from writing the gitignored local session-settings file (AC-BCL-4(d)); see docs/identity-isolation.mdAbsent or drifted → the row's disposition above. Present and matching → report the verdict and continue.
<!-- /foundry:init-verify-only:git-identity -->- Two layers. Identity isolation has a gh-token layer (above) AND a git-transport
layer: the repo's git remote must use that account's SSH host alias
(
git@<alias>:owner/repo.git), never a baregithub.comURL, or pushes use the default key. Cross-account/private template: if the workspace was seeded from a private template owned by a different account,gh repo create --template403s — use the local-seed path.
- Single account → no-op — leave
Branch protection — the as-CODE applier is retired; use the tier preflight. This step used to run
foundry-branch-protection.sh apply/verify <owner/repo>to PUT + verify a universalfoundry-merge-gaterequired-status backstop. Both the applier script and thebranch-protection.jsonconfig it pinned are deleted — the context they enforced no longer exists to enforce. Do not re-introduce them. What replaced them isscripts/foundry_tier_preflight.py+ the shipped ruleset template (rulesets/tier-a-merge-floor.json):python3 scripts/foundry_tier_preflight.py --repo <owner>/<repo> \ --context spec-link-base --context security-path-base [--apply]Read-only without
--apply(reports the current tier);--applyinstalls the ruleset first. It accepts only ONE kind of evidence forTIER-A— a post-apply read of the branch-rules probe, the endpoint that reports what is actually ENFORCED. A created ruleset is not evidence: a private repo on a plan without ruleset enforcement will store one, return success, and enforce nothing.Tier A itself is NOT retired — only its as-code applier is. Read the preflight's verdict precisely, because one of them is not a floor statement:
TIER-A— enforced and verified. Nothing further.TIER-B (classic-protection)— some protection IS active on the branch, applied as CLASSIC branch protection, which the branch-rules probe cannot see. The verdict means "unverifiable from a read-only token", NOT "advisory". It does NOT prove the protection is adequate: the probe reads onlyprotected: true, which is equally true of a protection requiring no checks at all. Enumerate what is actually required by hand — the admin-onlygh api repos/<owner>/<repo>/branches/main/protection.TIER-Bwith no protection at all — genuinely advisory; see below.
If you migrate to a ruleset, do not lose contexts on the way.
--applyrequires the required contexts as--contextarguments and installs only those; the example above passes two because two is enough to demonstrate the flag, NOT because two is a floor. Enumerate the currently-required set from the admin endpoint first and pass every one, and keep classic protection in place until the probe reportsTIER-Aover that full set. Removing classic protection in favour of a thinner ruleset lowers a live floor.Carry the non-context properties across too —
--contextdoes not. Three of them map cleanly (enforce_admins: true→bypass_actors: [];allow_force_pushes: false→ thenon_fast_forwardrule; required reviews 0 →required_approving_review_count: 0). One does NOT: the shipped template setsstrict_required_status_checks_policy: false, so a branch on classicstrict: truesilently loses the up-to-date-branch requirement unless you set it true in the applied ruleset. That is the migration's sharpest edge — a full context list is not sufficient to preserve the floor. Those four mirror what THIS repo carries, and are not the whole surface: read the admin endpoint's full response and treat any field not named here (restrictions,required_linear_history,required_conversation_resolution,lock_branch,block_creations) the same way. One asymmetry runs the other direction and owes no disclosure: the template'spull_requestrule MANDATES a PR, where classic protection with no required reviews still gates a direct push by status checks alone — that migration adds a requirement rather than losing one.This framework's own
mainis in the second state — verified 2026-08-08 against the admin endpoint: classic protection requiringselftests,secret-scan,release-acceptance,shell-parse-bash32,spec-link-baseandsecurity-path-base, withstrict: true,enforce_admins: true,allow_force_pushes: false, and NO required reviews (a solo operator cannot supply a distinct approving principal, so the checks are the gate). Re-read it rather than trusting this list, which is a point-in-time observation.enforce_admins: trueis what makes the floor real: it is whygh pr merge --adminis dead here rather than merely discouraged, and why even a release cut must route itsmainwrite through a PR.An adopter with no protection applied is on Tier B (advisory) only — the
ci.ymlcommand battery +btb-gates' always-reportingspec-link/security-pathchecks report on every PR but are NOT a server-enforced required status, andhooks/foundry-git-discipline.sh'sghclause blocks a Foundry-sessiongh pr merge --adminoutright and requiresgh pr checksall-green for a plaingh pr merge— but a humangit push/ the web UI / the REST API are not gated. Applying Tier A is the step that closes those three.- App-exercise binding (the live-seam driver). Declare the adopter's boot
command (the generic analog of
make dev) + thesurface → how-to-exercisemap (ui:/api:/cli:/pipeline:/binary:/…). A contract surface with no usable driver surfaces at certification time —/foundry:certify-localREFUSES naming it (the thin doctor carries no driver check). - Env/identity mapping. Map the adopter's own vars onto
FOUNDRY_*(Foundry owns theFOUNDRY_*namespace; never bake a project-specific var into a primitive). - Mechanical-rename port (extraction only). Copy the adopter's
.claude/primitives intofoundry/under their foundry names (the KEEP→rename bulk) by hand — thefoundry-migrate.pyhelper this step originally named was retired and does not ship. Deeper prose generification is a separate review pass. Stack-profile lock (opt-in adoption,
feat-foundry-stack-profile-lock-create, AC-SPLC-7). Foundry ships four stack profiles underpacks/stack-profiles/(aws-eks-karpenter,node-web,python-uv-lib,python-uv-service) —/foundry:verify,/foundry:certify-local, and theid-*lane'sinfra_bindingall gate on an ACTIVE.foundry/stack-profile.lock. Offer the operator a choice of the shipped ids (or "none"). On a choice, invoke the SCRIPTED create path below — never hand-write a lock in prose (a hand-written lock skips the trusted-resolve guardrailsresolve_lock()enforces and can strand the adopter on the very first/foundry:doctorrun). On "none", complete this step with no lock — a lockless workspace is a fully-supported,DOCTOR-GREENstate (AC-SPLC-8); adopt a profile later via the same command.<!-- foundry:stack-profile-lock-create-prescribed (AC-SPLC-7 anchor — the prescribed command lives in THIS block) --># Creates .foundry/stack-profile.lock for the named id(s) (comma-separated for >1 profile). # Refuses (no write) if a lock already exists (see /foundry:relock), an id is unknown, or an id # fails a trusted-resolve guardrail (schema-invalid / core-incompatible / bundle-leaking). python3 "${CLAUDE_PLUGIN_ROOT}/scripts/foundry-stack-profile.py" --lock <id>[,<id>…]<!-- /foundry:stack-profile-lock-create-prescribed -->If the operator selects no profile, skip this block entirely and move on — do not run
--lockwith an empty/placeholder id.- Run
/foundry:doctor— must beDOCTOR-GREENbefore the adopter is live. Fail-closed. (Retired: this step used to also pin the gate wiring viafoundry-wiring-hash.py; that script no longer exists in this repo, and the current thin doctor —skills/doctor/SKILL.md— carries no wiring-hash check, so there is nothing left to pin.) - Status lines (opt-in, additive — isolation-first) — VERIFY-ONLY. A wired native
statusLinesurfaces the highest-value ambient signals every prompt (isolation state, current task, context-window headroom) — fail-open, opt-in, and for the ROOT session in a visual terminal only (v1.18.2: thesubagentStatusLinekey is retired — it ran once per subagent per refresh and fed a process storm); this step's verdict does not affectDOCTOR-GREEN.
<!-- foundry:init-verify-only:statusline v1 -->VERIFY-ONLY. init does not write the statusLine wiring. The shipped writers are
create-agentic-workspace whenever it writes .claude/settings.json itself (since v1.18.3 — the
operator reversed [[feat-foundry-bootstrap-cli]] AC-BCL-4(c)'s exclusion: a new workspace had no
status line), npx update-agentic-workspace@latest (since v1.17.0), and
create-agentic-workspace --existing --reconcile-floor on a workspace that already carries
.claude/settings.json. They install the wrapper under .claude/hooks/ (framework-owned:
converged when it carries the marker, kept when it does not; a kept or refused wrapper is never
wired), add the statusLine key only when absent, and remove a subagentStatusLine key only
when it is the exact value an earlier release wrote. The wrapper is single-flight and cached
(one render per project at a time; a line is reused for 5 s only while the session, directory and
context figure are unchanged), so a slow renderer can never pile up and the bar is never stale.
This step only reads and reports; the doctor's
statusline: advisory names the first missing piece.
- Present — read
.claude/settings.json. A local.claude/hooks/foundry-statusline.shcarrying thefeat-foundry-init-statusline-wrappermarker, with astatusLine.commandvalue in the$CLAUDE_PROJECT_DIRform, is the recognized wired shape — report it. Any other value is reported as-is (foreign or stale); it is never touched. - Absent or drifted — REPORT-ONLY: report that no shipped writer wires this today and
point at the pre-session bootstrap's own doc —
${CLAUDE_PLUGIN_ROOT}/docs/QUICKSTART.md(or, before install,https://github.com/lukasrepublic/agentic-foundry/blob/main/docs/QUICKSTART.md) — for the by-hand remedy, then continue; absence here is a fully-supported, non-blocking state, not a defect.
The shipped scripts/foundry-statusline-wrapper.sh / scripts/foundry-subagent-statusline-wrapper.sh
remain the wrappers to install by hand if you opt in — QUICKSTART carries the exact commands
and why the $CLAUDE_PROJECT_DIR indirection is required (${CLAUDE_PLUGIN_ROOT} does not
expand inside a statusLine command).
<!-- /foundry:init-verify-only:statusline -->Native Bash sandbox (opt-in write-confinement hardening) — VERIFY-ONLY. Enabling Claude Code's native OS-level Bash sandbox kernel-confines a dispatched worker's Bash writes to its worktree (macOS Seatbelt / Linux+WSL2 bubblewrap; subagent- + git-worktree-aware) — opt-in, advisory, and this step's verdict does not affect
DOCTOR-GREENeither.<!-- foundry:init-verify-only:sandbox v1 -->VERIFY-ONLY. init does not write the native OS-level Bash sandbox enable — no shipped writer owns this artifact today ([[feat-foundry-bootstrap-cli]] AC-BCL-4(c) forbids the pre-session bootstrap from emitting
sandbox.enabledtoo, and states it is not relocated to another writer). This step only reads and reports.- Present — read
.claude/settings.json'ssandboxkey. Report whether it is present and its value (sandbox.enabledis the on/off signal;sandbox.filesystemonly widens/narrows an already-enabled scope). - Absent or drifted — REPORT-ONLY: report that no shipped writer enables it today and
point at the pre-session bootstrap's own doc —
${CLAUDE_PLUGIN_ROOT}/docs/QUICKSTART.md(or, before install,https://github.com/lukasrepublic/agentic-foundry/blob/main/docs/QUICKSTART.md) — for the by-hand remedy, then continue; absence here is a fully-supported, non-blocking state (reads default to the whole machine either way, sandboxed or not).
Grounding for the exact key shape: the official Claude Code sandboxing docs (
code.claude.com/docs/en/sandboxing).<!-- /foundry:init-verify-only:sandbox -->- Present — read
- Runtime-partition
.gitignore(default-deny, leak-prevention). Runscripts/foundry-apply-runtime-gitignore.sh <repo-root>against the adopter repo. It installs the default-deny.foundry/*block (re-including only the small designed-tracked set:README.md,build-provenance.yaml, the/foundry:relockpin,stack-profile.lock) as an idempotent managed block in the repo's root.gitignore, so a routinegit add -Aafter a factory session can no longer sweep an unlisted runtime artifact into a commit — the class of leak recorded in [Doc: GO-PUBLIC.md] §5.4.scripts/foundry-bootstrap.shalready invokes this on the real target path for a freshly-cloned or--existingrepo; run it by hand for a repo bootstrapped before this step existed. Before flipping any repo's visibility to public, also runscripts/foundry-prepublication-leak-scan.py --root <repo-root>— its clean verdict requires a managed block to be present (it fails closed on a repo with none) plus all four of its scopes (working tree, full history, tracked.foundry/state, and a remote direct-SHA probe) to run clean; see the script's own--helpfor its remote/known-bad-SHA options. Guided first atom (the hello-loop). Close onboarding by walking the operator through ONE small, throwaway atom end-to-end, so the first real run of the loop happens before you need it for something that matters:
/foundry:intake— describe one trivial capability (e.g. "print a greeting") and let it produce a spec + acceptance contract underspecs/**./foundry:spec-review— get that spec reviewed and recorded./foundry:authorize— this is the one-keypress ask: a native confirmation prompt fires here, and the operator answers it. Explain it as it fires — it is the front gate. This session never answers it on the operator's behalf; only a human keypress can./foundry:dispatch— an implementer builds the toy atom on its own branch.- merge — the operator merges the resulting change through their own normal review flow.
Cleanup. The whole walk lives on a scratch branch carrying a throwaway spec under
specs/**— once the operator has seen the loop end to end, delete it: remove the scratch branch and its spec files rather than leaving toy content behind.
What init verifies — and what it no longer does
Init is not purely conversational — it still writes three artifacts (the closing line below). What changed is the five surfaces below: init used to prescribe writing four of them; now it only verifies and reports on all five, and names the real owner for each.
- status lines — verifies: whether
statusLineis wired (the retiredsubagentStatusLineis removed by the updater), and to what. no longer does: install the wrapper scripts or set the.claude/settings.jsonkeys. owner:npx update-agentic-workspace@latest(since v1.17.0; alsocreate-agentic-workspace --existing --reconcile-flooron a trusted workspace) — or by hand, see QUICKSTART's "Before your first session". - native Bash sandbox — verifies: whether
sandbox.enabledis set, and its value. no longer does: enable the sandbox. owner: no shipped writer — enable it by hand, see QUICKSTART's "Before your first session". - git identity — verifies: the per-account jail's authentication (the read-only
gh api userproof) and the resolved commit identity. no longer does: seed the jail, wire the globalincludeIf, or write.claude/gh-identity. owner: pre-session bootstrap (scripts/foundry-bootstrap.showns the commit-identity half; see step 4's verify-only region for the two sub-artifacts that have no shipped writer at all). - plugin enablement — verifies: that
/foundry:*skills resolve. no longer does: install or enable the plugin/marketplace. owner: pre-session bootstrap. - permission floor — verifies: reports what
/foundry:doctor'spermission-floorprobe finds today (a degraded form until a sibling probe lands — see the probe's own output). no longer does: write or repair.claude/settings.json'spermissionskey. owner: pre-session bootstrap.
init still writes three artifacts, unaffected by anything above: .claude/foundry-operators.json
(step 3), .foundry/stack-profile.lock via the scripted --lock path (step 9), and the
.gitignore managed block via the shipped applier (step 13).
Inputs / Outputs
- In: the adopter repo + its boot command + surface map + operator id(s) + (multi-account machines) the repo-owning gh account.
- Out: a wired, DOCTOR-GREEN adopter (registry + identity isolation + driver map; branch-protection Tier A is applied by hand — see step 5).
Anti-patterns
- Going live on DOCTOR-RED — the doctor is the fail-closed go-live gate.
- Onboarding a multi-account machine without declaring the repo-owning gh account — the
jail stays dormant and
ghsilently runs as the globally-active account (invisible until an admin-scoped call 404s). Single-account machines: correctly a no-op. - Trusting
gh auth statusas proof of isolation — it can read the shared keyring; prove the jail withgh api userunderGH_CONFIG_DIR(step 4's verify-only region does exactly this). - Baking a project-specific var (
<PROJECT>_*) into a foundry primitive — map ontoFOUNDRY_*. - Enabling non-local auto-merge at all — no distinct-principal poster ships; there is no supported unattended-merge posture.
- Skipping the app-exercise binding — without a live-seam driver the evidence floor is unrealizable for that adopter.
- Hand-writing
.foundry/stack-profile.lockin prose — always the scripted--lockpath (step 9); a hand-written lock skips the trusted-resolve guardrails and can fail the very first/foundry:doctor/resolve_lock()check it is supposed to pass.
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.

