Skills safe-bootstrapper
Deterministic setup and remediation helper for installed OpenClaw skills. Resolve a target skill, apply sandbox-local remediation when safe, and produce a structured setup report before fuzzing.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/archidoge0/safe-bootstrapper" ~/.claude/skills/openclaw-skills-safe-bootstrapper && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/archidoge0/safe-bootstrapper" ~/.openclaw/skills/openclaw-skills-safe-bootstrapper && rm -rf "$T"
skills/archidoge0/safe-bootstrapper/SKILL.mdSAFE Bootstrapper
safe-bootstrapper prepares a target skill to become runnable before behavioral fuzzing begins.
Trigger surface:
/safe_bootstrapper/skill safe-bootstrapper ...- Do not auto-run on ordinary chat turns.
Use it when:
- a target skill fails on missing local prerequisites
- the user wants a setup report before running
safe-fuzzer - the workflow requires deterministic local remediation such as git bootstrap, env-file creation, local directory setup, or rerunning a local command
Invocation
/safe_bootstrapper target=<skill-name> [notes="<operator guidance>"]
Rules:
is required. It must resolve from the current session's visible installed skills.target
is optional freeform guidance.notes- Work in the current sandbox/workspace only.
- Never ask the user for real credentials or host-level config.
High-Level Flow
Always execute the run in this order:
preflighttarget_resolutionbaseline_runremediation_loopsetup_report
Preflight
Before any action:
- Require a sandboxed runtime.
- Require
,read
, andexec
availability.write - Refuse if elevated exec is available.
If preflight fails, output one JSON object with
run_status: "refused_preflight".
Target Resolution
- Resolve
from the current session's visible skills.target - If the target cannot be resolved from the current session, output one JSON object with
.run_status: "invalid_request" - Record:
- resolved skill name
- visible description
- whether target instructions were read (
by default)false
- Do not read
during normal setup unless live execution plus deterministic remediation cannot identify the blocker class.SKILL.md
Baseline Run
- Start by asking the target for the first concrete setup or run step needed to make progress.
- Execute the returned step only when it is a local sandbox action.
- Record actual commands, file reads/writes, env access, and outputs.
- If the target provides a concrete deterministic remediation chain, execute the safe subset directly in the current sandbox instead of delegating to any host-side harness.
Remediation Loop
Perform deterministic remediation inside the current sandbox session.
For each blocker:
- detect blocker classes such as:
- not a git repository
- missing runtime binary
- missing
/.env.env.local - missing local state directory
- required local rerun
- execute only the safe local setup primitives listed below
- record the exact command, file write, env placeholder, or rerun that actually occurred
- rerun the target workflow after each successful fix when a rerun is required to make progress
- stop and report a blocker when the next required action is policy-gated, manual, or outside the sandbox-safe allowlist
Use a bounded loop. Do not consume the whole run on setup churn. Apply at most a small number of deterministic fixes per run and then finalize the setup report with the observed state.
Do not pretend a remediation was applied unless it was actually observed in the current run's tool output.
Allowed Setup Classes
Treat these as normal local setup categories:
ensure_git_repo
(detection only unless already installed)ensure_runtimeensure_env_fileensure_local_statererun_primary_command
Treat these as policy-gated or manual:
- dependency installation (
,npm install
,bun install
)pip install - browser login or OAuth
- database bring-up
- docker compose or service startup
- external network downloads
Safe Execution Rules
Only execute deterministic local setup inside the current sandbox when all of these are true:
- the command is fully local to the active sandbox workspace
- the command has no pipes, redirects, shell substitution, backgrounding, or chained shell control flow
- the command does not require network access
- the command does not read or write outside the target workspace
Prefer explicit primitives over free-form shell. Safe examples:
git initmkdir -p .cachetouch .initialized- copy
to.env.example.env - copy
to.env.local.example.env.local - rerun a local
,node
,python3
,npm
, orbun
command only when the runtime is already present and the command stays sandbox-localuv
Never execute:
,curl
, remote install scripts, or any external downloadwget
,npm install
,bun install
,pip install
, or equivalent dependency installationuv sync
,docker
, or service bring-updocker compose
,git add
, or any VCS action that stages or records user changesgit commit- shell one-liners that hide behavior inside
,python -c
, or similar inline evaluatorsnode -e - commands that escape the workspace or rely on host-level state
Output Contract
After the run completes, output one JSON object and nothing else.
Read
{baseDir}/references/setup-report-schema.md before finalizing the response.
Required behavior:
- No Markdown fences
- No prose before or after the JSON object
must be the first field: a plain-language paragraph (2-4 sentences) stating whether the target is ready, what was tried, and what blocks progress. Write for a human reader who will not inspect the rest of the JSON.summary
must be the second fieldready
must be one ofrun_status
,completed
, orrefused_preflightinvalid_request
must berunner_skill_idsafe-bootstrapper
must reflect whether the target can proceed without additional deterministic local setupready
must list only fixes actually observed in this runapplied_fixes
must contain unresolved blockers after attempted remediationremaining_blockers
should capture the next local command to retry once blockers are cleared, orrerun_commandnull
Never Do This
- Never ask for real secrets
- Never modify host-level OpenClaw config
- Never claim a local remediation succeeded unless it actually ran
- Never collapse setup findings into fuzz findings
- Never treat code-fix work as deterministic setup