simulate — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited simulate (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill exists because simulating a command is deceptively easy to get wrong in a way that wastes the user's time and trust. Hard sessions produced four non-negotiable rules and a method. Follow them exactly.
Use this skill whenever the user asks to "simulate", "demo", "show in practice", "run", or "see in action" any /bluespec.* command (charter, detect, plan, harden, verify), or to preview how a command behaves before shipping it.
Do not begin a simulation, build a scenario, or copy a fixture until both of these are settled, in this order:
charter, detect, plan, harden, or verify), ask which one before doing anything else. If they named more than one, confirm the order you will run them in..claude/skills/simulate/fixtures/) as a numbered list, each with a one-line description of its scenario, and ask the user to pick one by number. Do not silently default to a fixture. If only one fixture exists, still present it and confirm before using it. If none fits the command, say so and offer to add a new fixture (see the fixtures section).Only after the command is named and the fixture is chosen do you proceed to the rules and method below.
A Blue Spec command is not a standalone program. It is a file of instructions (spec/commands/bluespec.<phase>.md, scaffolded as a skill the agent reads) that tells an AI agent how to do a phase of security work. "Running the command" means an agent following those instructions. There is no binary that emits a deterministic result independent of the agent. So a "simulation" is the agent executing the command's steps for real, against a real scenario, while showing its work.
The failure mode to avoid: narrating what you _imagine_ the command would output, formatting it to look like a terminal, and presenting it as if it ran. That is theatre. The user cannot tell invented output from real output, and they will (rightly) call it a farce. Everything below is designed to make the simulation real and verifiable by the user, not a performance.
./tempBuild everything the simulation touches (the fixture, the .bluespec/memory/ artifacts the phases produce, any inputs) inside ./temp at the repo root, never in the system /tmp.
/tmp is invisible to the user: they cannot open those files in their editor, so everything you do there becomes "trust me". ./temp is in their workspace, openable, inspectable../temp is git-ignored, so the simulation never pollutes commits../temp when the user is done, or leave it for them to inspect, but ask first.#### The fixtures: start every simulation from one
Neutral sample projects ship next to this skill, each in its own directory under .claude/skills/simulate/fixtures/<name>/. Pick the fixture whose scenario fits what the command needs, or add a new one (see below). Every fixture is a small, real project that deliberately contains both robust and fragile code, in neutral pairs so the command has to analyze the code, not read a label.
Available fixtures:
tmpl CLI) for rendering templates and parsing text.Always begin a simulation by copying one fixture raw into `./temp`. If ./temp already exists and is not empty, clear it first, so each run starts clean (replace <name> with the fixture you chose):
rm -rf ./temp && mkdir -p ./temp
cp -R .claude/skills/simulate/fixtures/<name>/. ./temp/Then build the chain on top in ./temp by running the upstream phases for real (per Rule 4), so the .bluespec/memory/*.md artifact the command reads is produced by its own phase, not hand-written. Run the command's steps against ./temp, following its spec to the letter (per Rule 3), and show every step's output per Rule 2.
To add a fixture, create .claude/skills/simulate/fixtures/<new-name>/ as a small, real project with its own package.json, keep robust and fragile code in neutral pairs, add no revealing comments or names, and list it above. Add one when a command needs material the current fixtures do not cover (a different language or stack, secrets handling, auth, a database, and so on).
This is the rule that took longest to learn. When you run a tool (Bash, Read), the user's interface shows a truncated preview of that tool's IN and OUT. You do not control how much is shown, and it is usually cut off. If the evidence that backs a claim lives only inside a tool call's output, the user does not see it, and any sentence you write describing it reads as invention.
Therefore:
/bluespec.<phase> shows as it runs: the step by step, the scope decision, the verdicts) also goes in a fenced code block, styled like a transcript.A reliable pattern: run the command, redirect raw output to a file under ./temp (for example ./temp/run.log), then Read that file (the Read result is shown to you in full) and paste its contents into a fenced block. The user can also open ./temp/run.log to verify.
Show as you go, never in a batch at the end. The trigger is per step: the moment a step produces something the user should see (an input it read, its transcript, the artifact it wrote), paste it into a fenced block in the same message, before the next step. If you are about to start the next phase or fix and the previous step's output is not on screen yet, stop and paste it first. If the user has to remind you to show a command's output, the rule already failed.
"Running the command" is you executing spec/commands/bluespec.<phase>.md step by step, not doing the phase your own way and calling it the command.
harden must confirm before it edits any code, a full detect scan must be confirmed because it is token-heavy. Present what the spec says to present, in a transcript block, and wait. Never edit code or run a gated step without the confirmation first.The chain is charter → detect → plan → harden → verify, each phase reading what the one before it wrote. Hand-authoring a downstream artifact with the answers you expect (a harden.md that records exactly what you want verify to confirm or catch) is the failure: the downstream phase is then tested against your prediction, not reality, so it misses whatever you missed.
verify, run detect (reads the code), then plan (reads detect.md), then harden (reads plan.md, edits the code). Even when the user starts mid-chain, build the missing artifacts this way, in order.Partial, a Blocked, a finding you did not foresee. A suspiciously clean artifact is the tell this rule was broken.verify must catch the drift), but introduce the divergence visibly (revert in a shown tool call, keep the real artifacts), never by hand-writing a record the run never produced.Each phase reads the one before it and writes one artifact. Know this chain, and do not break it:
| Phase | Reads | Writes |
|---|---|---|
charter | the project context | .bluespec/memory/charter.md |
detect | the code | .bluespec/memory/detect.md |
plan | only `detect.md`, never the code | .bluespec/memory/plan.md |
harden | only `plan.md` plus the charter, and edits the user's code | .bluespec/memory/harden.md |
verify | harden.md and the code, confronting record against reality, changing nothing | .bluespec/memory/verify.md |
Then, for the command you are simulating:
./temp (Rule 1)../temp (Rule 4).spec/commands/bluespec.<phase>.md, to the letter (Rule 3).Read and show it../temp file the user can open, rather than a truncated tool call? (Rule 2)./temp, not hidden in /tmp? (Rule 1)If any answer is no, fix it before sending. The user would rather see real, modest output than a polished invention.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.