dry-run

MatiasComercio's avatarfrom MatiasComercio

Simulates command execution in dry-run mode without file modifications. Sets dry_run flag, executes command with read-only constraint, then resets flag. Useful for testing workflows safely. Triggers on keywords: dry run, simulate, test command, preview changes, safe mode, no write

⭐16stars🔀1forks📁View on GitHub🕐Updated Jan 3, 2026

When & Why to Use This Skill

The Dry-Run skill provides a critical safety layer for AI agent workflows by simulating command executions without modifying any files. It allows developers to preview changes, test complex scripts, and verify AI-generated implementation plans in a risk-free, read-only environment, ensuring system integrity while debugging or exploring new automation sequences.

Use Cases

  • Workflow Preview: Use '/dry-run' to see the full execution path of complex commands like specification generation without affecting the actual codebase.
  • Safe Implementation Testing: Verify how the agent would handle a feature implementation or bug fix to check for logic errors before committing changes.
  • Risk-Free Script Execution: Execute shell commands or scripts in a simulated mode to observe their behavior and output without the risk of accidental data loss.
  • Agent Behavior Auditing: Use the dry-run mode to understand how the AI interprets specific prompts and which files it intends to access or modify.
namedry-run
descriptionSimulates command execution in dry-run mode without file modifications. Sets dry_run flag, executes command with read-only constraint, then resets flag. Useful for testing workflows safely. Triggers on keywords: dry run, simulate, test command, preview changes, safe mode, no write
project-agnostictrue

Dry Run Skill

Executes any command or skill in simulation mode, preventing all file modifications except session state.

Usage

/dry-run <any command or prompt>

Examples:

  • /dry-run /po_spec path/to/spec.md - Preview full spec workflow
  • /dry-run /spec IMPLEMENT path/to/spec.md - Test implementation without changes
  • /dry-run why did you implement X this way? - Normal chat (no files affected)

Workflow

Step 1: Initialize Session Status

Find the Claude Code PID and create session directory:

pgrep -x claude | head -1 || echo "shared"

Use the output as CLAUDE_PID. Then create the session directory:

mkdir -p outputs/session/<CLAUDE_PID>

Check if outputs/session/<CLAUDE_PID>/status.yml exists. If not, create with initial schema:

dry_run: false

Step 2: Set Dry-Run Mode

Update outputs/session/<CLAUDE_PID>/status.yml:

dry_run: true

This signals to THIS session's file operations that writes are prohibited. Other Claude sessions (different PIDs) are not affected.

Step 3: Execute Delegated Command

Execute the provided command/prompt EXACTLY as given. All behavior remains normal EXCEPT:

CRITICAL CONSTRAINTS:

  • NO file modifications allowed (Read, Grep, Glob, LSP, Bash read-only commands OK)
  • ONLY exception: outputs/session/<CLAUDE_PID>/status.yml can be modified
  • If command requires file writes, DESCRIBE what WOULD be changed instead
  • For chat-only prompts (no file operations needed), respond normally

Step 4: Reset Dry-Run Mode

After execution completes (success or failure), reset state in outputs/session/<CLAUDE_PID>/status.yml:

dry_run: false

Step 5: Report Results

Provide summary:

  • What was executed
  • What file changes WOULD have occurred (if any)
  • Verification that dry_run mode is reset

Implementation Notes

The skill acts as a wrapper:

  1. It does NOT interpret or execute the delegated work itself
  2. It sets the flag, then lets normal AI behavior handle the prompt
  3. The dry_run flag is checked by pretooluse hook (hard enforcement at tool level)
  4. After completion, it ensures cleanup

State Schema

outputs/session/<claude_pid>/status.yml:

dry_run: bool  # true = prevent file writes, false = normal mode

Session isolation by Claude PID ensures parallel agents don't interfere with each other. Future extensions may add additional session state fields.