Agent skill

Simulate

by wellwelwel in wellwelwel/lagune

How to simulate a Lagune command end to end so the user sees both the process and the results in chat.

MITAuto-check passed

Install Simulate

skills CLI
$ npx skills add wellwelwel/lagune --skill simulate -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install wellwelwel/lagune simulate --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/wellwelwel/lagune.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/simulate .claude/skills/simulate && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
simulate
GitHub stars
173
Token cost
~2.9k tokens
SKILL.md length
1,755 words
Files
21
Skills in repo
8
Repo updated
First seen
Licence
MIT

At a glance

How to simulate a Lagune command end to end so the user sees both the process and the results in chat.

  • Works in 2 steps: The user must tell you which Lagune… → Then suggest the fixture, enumerated,…
  • The user asks to simulate
  • SKILL.md covers Before you start (mandatory), Why this skill exists (read…, The four hard rules and The method, step by step, plus 1 more section
  • Runs JavaScript scripts from its folder

What it does

Simulate is an agent skill from wellwelwel/lagune. How to simulate a Lagune command end to end so the user sees both the process and the results in chat. Use when the user asks to simulate, demo, preview, run, or see in action any lagune command. Read this before attempting any such simulation.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 28 other files (for example `fixtures/image-upload-service/package.json`, `fixtures/image-upload-service/src/lib/fetch-remote.js` and `fixtures/image-upload-service/src/lib/thumbnail.js`).

The repository describes itself as: 🌊 Lagune is your security copilot as you build, your Blue Team when you audit, whether you're a developer or not (no API key needed). The licence is MIT.

When your agent uses it

  • The user asks to simulate
  • See in action any lagune command

Example prompts

  • “/simulate”

Requirements

  • Node.js

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. The user must tell you which Lagune command to simulate. This is required, never assume or pick one. If the user has not named a command…
  2. Then suggest the fixture, enumerated, and let the user choose. Once the command is known, list the available fixtures (from…

What it can do on your machine

Read from SKILL.md and the folder at commit c97ddfc. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (JavaScript, from the files we listed), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Simulate loads about 2.9k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 1,755 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~63
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from wellwelwel/lagune at commit c97ddfc, republished under its MIT licence (© wellwelwel). 1,755 words, ~2,915 tokens.

Download SKILL.mdSave it as .claude/skills/simulate/SKILL.md (or your agent's skills folder). This skill also uses 20 other files; get the full folder from GitHub.
name
simulate
description
How to simulate a Lagune command end to end so the user sees both the process and the results in chat. Use when the user asks to simulate, demo, preview, run, or see in action any lagune command. Read this before attempting any such simulation.
user-invocable
true
metadata.internal
true

Simulating a Lagune command

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 /lagune.* command (charter, detect, plan, harden, verify), or to preview how a command behaves before shipping it.

Before you start (mandatory)

Do not begin a simulation, build a scenario, or copy a fixture until both of these are settled, in this order:

  1. The user must tell you which Lagune command to simulate. This is required, never assume or pick one. If the user has not named a command (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.
  2. Then suggest the fixture, enumerated, and let the user choose. Once the command is known, list the available fixtures (from .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.

Why this skill exists (read this first)

A Lagune command is not a standalone program. It is a file of instructions (spec/commands/lagune.<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.

The four hard rules

Rule 1: Run the scenario under ./temp

Build everything the simulation touches (the fixture, the .lagune/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.
  • Clean up ./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:

  • image-upload-service: a small ESM HTTP service that accepts image uploads, imports images from a remote URL, and serves them back.
  • template-toolkit: a publishable ESM npm package (a library plus a 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):

bash
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 .lagune/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).

Rule 2: Expose prompts and responses as fenced code blocks IN the chat message

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:

  • After running a tool, copy the relevant raw output into a fenced code block (triple backticks) in your normal chat message. The fenced block renders fully and identically in every interface. This is the "yellow letters" the user means: a markdown code block.
  • The command's prompt and interaction (what /lagune.<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.
  • Never write "the output above shows X" pointing at a tool call. Point at the fenced block you pasted, which the user can read in full.
  • When a number or line in your transcript came from a real run, it must match the raw output you pasted. If you write a transcript line that is not backed by pasted raw output, you are inventing, so stop.

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.

Show full SKILL.md (635 more words)Show less
Rule 3: You are the command, so follow its spec to the letter

"Running the command" is you executing spec/commands/lagune.<phase>.md step by step, not doing the phase your own way and calling it the command.

  • Open that spec first and treat it as the single source of truth. Follow its steps in order. Do not run the phase from memory or from this skill's summary.
  • Perform every user interaction the spec calls for, for real. When a step says to ask the user or to tell them something before proceeding, present it in a transcript block and, where it needs an answer, wait. Never skip the stop or answer in the user's place.
  • Decide scope, verdicts, fixes, priorities, and findings the way the spec's steps decide them, against the real scenario. If you cannot point to the spec step that justifies a line of output, you are acting as yourself, so stop and follow the spec.
Rule 4: Each phase's input must come from running the previous phase, not from you

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.

  • Produce every upstream artifact by running its phase, under its own spec, shown per Rule 2. To demo 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.
  • Let the artifact say what the run actually produced, gaps included: a Partial, a Blocked, a finding you did not foresee. A suspiciously clean artifact is the tell this rule was broken.
  • A deliberately divergent scenario is fine (harden applies everything, then the code is reverted so 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.

The method, step by step

Each phase reads the one before it and writes what the table shows. Know this chain, and do not break it:

PhaseReadsWrites
charterthe project context.lagune/memory/charter.md
detectthe code.lagune/memory/detect.md
planonly detect.md, never the code.lagune/memory/plan.md
hardenonly plan.md plus the charter, and edits the user's code.lagune/memory/harden.md
verifyharden.md and the code, confronting record against reality, changing no codethe Verdict/Reason on harden.md blocks

Then, for the command you are simulating:

  1. Copy the fixture raw into ./temp (Rule 1).
  2. Build the chain by running each upstream phase, in order, against ./temp (Rule 4).
  3. Run the target phase under its spec/commands/lagune.<phase>.md, to the letter (Rule 3).
  4. Show every input, transcript, and artifact in a fenced block as you go (Rule 2). Write each output artifact as a real file, then Read and show it.

Honesty checks before you present anything

  • Did this actually run, or am I typing what I think would happen?
  • Is every transcript line backed by raw output I pasted, or a ./temp file the user can open, rather than a truncated tool call? (Rule 2)
  • Have I already pasted the output of every step so far, so the user never has to ask? (Rule 2)
  • Did I follow each phase's spec, its user interactions included, instead of acting as myself? (Rule 3)
  • Did each upstream artifact come from running its phase, not from me hand-writing the result I wanted? (Rule 4)
  • Is the scenario under ./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.

© wellwelwel, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 20 other files in .claude/skills/simulate of wellwelwel/lagune.

  • SKILL.md
  • fixtures/image-upload-service/package.json
  • fixtures/image-upload-service/src/lib/fetch-remote.js
  • fixtures/image-upload-service/src/lib/thumbnail.js
  • fixtures/image-upload-service/src/lib/transcode.js
  • fixtures/image-upload-service/src/routes/avatar.js
  • fixtures/image-upload-service/src/routes/import.js
  • fixtures/image-upload-service/src/routes/photos.js
  • fixtures/image-upload-service/src/server.js
  • fixtures/image-upload-service/uploads/.gitkeep
  • fixtures/template-toolkit/bin/cli.js
  • fixtures/template-toolkit/package.json
  • fixtures/template-toolkit/src
  • … and 8 more

Open the folder on GitHubat commit c97ddfc

Compare with similar skills

Simulate next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Simulate compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Simulate this skillwellwelwel/lagune173—~2.9kAutomated safety check: PassMIT
Eas Simulatorsickn33/agentic-awesome-skills47k1 repos~6kAutomated safety check: NotesMIT
Simulateindranilbanerjee/digital-marketing-pro8551 repos~2.1kAutomated safety check: PassMIT
Flux Balance Analysis Simulatoraiming-lab/AutoResearchClaw15k—~2.1kAutomated safety check: PassMIT
Limrun iOS Simulatorsuperset-sh/superset15k—~5.2kAutomated safety check: NotesCustom licence
Conducting Man In The Middle Attack Simulationmukul975/Anthropic-Cybersecurity-Skills34k—~3kAutomated safety check: NotesApache-2.0

Similar skills

  • Eas Simulator

    sickn33/agentic-awesome-skills

    Curated upstream guidance for Eas Simulator; use when the workflow matches the user goal.

    47k GitHub starsUsed in 1 repo~6k tokens
    MobileAuto-check: notes
  • Simulate

    indranilbanerjee/digital-marketing-pro

    Run Monte Carlo simulations (default 10,000 iterations via revenue-simulator.py) of marketing scenarios — channel-mix shifts, budget reallocations, new-channel launches — reporting…

    855 GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • Flux Balance Analysis Simulator

    aiming-lab/AutoResearchClaw

    Runs flux balance analysis and related constraint-based simulations on a COBRApy metabolic model, from standard FBA to gene knockouts and carbon source swaps.

    15k GitHub stars~2.1k tokensUpdated 1 mo ago
    Research & ScienceAuto-check passed
  • Limrun iOS Simulator

    superset-sh/superset

    Drives an app on a Limrun cloud iOS simulator from any OS: launch, tap, type, read the accessibility tree and logs, take screenshots, record video and reach local services.

    15k GitHub stars~5.2k tokensUpdated today
    MobileAuto-check: notes
  • Conducting Man In The Middle Attack Simulation

    mukul975/Anthropic-Cybersecurity-Skills

    Simulates man-in-the-middle attacks using Ettercap, mitmproxy, and Bettercap in authorized environments to intercept, analyze, and modify network traffic for testing encryption enforcement…

    34k GitHub stars~3k tokensUpdated 1 mo ago
    SecurityAuto-check: notes
  • Performing Bandwidth Throttling Attack Simulation

    mukul975/Anthropic-Cybersecurity-Skills

    Simulate bandwidth throttling and network degradation attacks using tc, iperf3, and Scapy in authorized lab environments to test QoS controls, application resilience, and monitoring detection of…

    34k GitHub stars~3.1k tokensUpdated 1 mo ago
    Backend & APIsAuto-check: notes

More from wellwelwel/lagune

All 8 skills in this repo
  • Cdp

    wellwelwel/lagune

    Visual verification of a running page through Chrome's DevTools Protocol, capturing screenshots and measuring the rendered DOM.

    173 GitHub stars~749 tokensUpdated today
    Auto-check passed
  • Specialize

    wellwelwel/lagune

    Author a new built-in Lagune sub-skill inside the Lagune source, not a scaffolded .lagune/ target.

    173 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • UI

    wellwelwel/lagune

    Design engineering principles for making interfaces feel polished.

    173 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Dashboard

    wellwelwel/lagune

    Authoritative reference for the Lagune dashboard, a live view of a project's .lagune/ chain with a locked-down local action surface.

    173 GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Architecture

    wellwelwel/lagune

    Authoritative architecture reference for Lagune, covering repository layout, the command/template split, the core/adapter boundary, what it scaffolds, and the tracking-map model.

    173 GitHub stars~4.5k tokensUpdated today
    Auto-check passed
  • Engineering

    wellwelwel/lagune

    Authoritative engineering reference covering code conventions, comments, TypeScript type rules, testing, and commit messages.

    173 GitHub stars~1.4k tokensUpdated today
    Auto-check passed

Questions about Simulate

What does Simulate do?

How to simulate a Lagune command end to end so the user sees both the process and the results in chat. Simulate is an agent skill from wellwelwel/lagune. How to simulate a Lagune command end to end so the user sees both the process and the results in chat.

When should I use Simulate?

Simulate fits situations like: the user asks to simulate; see in action any lagune command.

How do I install Simulate in Claude Code?

Run `npx skills add wellwelwel/lagune --skill simulate -a claude-code`. Or copy the skill folder (.claude/skills/simulate in wellwelwel/lagune) into .claude/skills/simulate in your project. Claude Code loads it when a task matches its description.

How do I install Simulate in Codex?

Run `npx skills add wellwelwel/lagune --skill simulate -a codex`. Or copy the skill folder (.claude/skills/simulate in wellwelwel/lagune) into .agents/skills/simulate in your project. Codex loads it when a task matches its description.

Can I use Simulate in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add wellwelwel/lagune --skill simulate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/simulate, .gemini/skills/simulate, .github/skills/simulate and .opencode/skills/simulate in your project.

What does Simulate need to run?

Going by SKILL.md and its folder, Simulate needs JavaScript for the scripts in its folder. Our summary lists: Node.js.

Does Simulate access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Simulate safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Simulate use?

Simulate is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Simulate use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Simulate?

Skills that share tags, products or a category with Simulate: Eas Simulator (sickn33/agentic-awesome-skills, 47k stars), Simulate (indranilbanerjee/digital-marketing-pro, 855 stars), Flux Balance Analysis Simulator (aiming-lab/AutoResearchClaw, 15k stars) and Limrun iOS Simulator (superset-sh/superset, 15k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Simulate?

wellwelwel (a GitHub user) maintains it in wellwelwel/lagune, which has 173 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 8, 2026.

Source: wellwelwel/lagune on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.