From ac-tools
Simulates command or skill execution in dry-run mode without file modifications except session state. Sets dry_run flag with read-only constraints, executes, then resets. Useful for safely testing workflows.
npx claudepluginhub waterplanai/agentic-config --plugin ac-toolsThis skill is limited to using the following tools:
Executes any command or skill in simulation mode, preventing all file modifications except session state.
Guides creation of Claude Code skills with extensions: allowed-tools (Bash patterns), context fork/inherit, argument-hint, model overrides, hooks.
Analyzes Claude Code session logs to validate skill execution against SKILL.md specs, verifying hooks, subagents, tools, artifacts, and workflow steps.
Share bugs, ideas, or general feedback.
Executes any command or skill in simulation mode, preventing all file modifications except session state.
/dry-run <any command or prompt>
Examples:
/dry-run /mux-ospec 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)Resolve the Claude Code PID using process-tree tracing (same logic as the dry-run hook), then create the session directory:
CLAUDE_PID=$(python3 - <<'PY'
import os
import subprocess
pid = os.getpid()
for _ in range(10):
result = subprocess.run(
["ps", "-o", "pid=,ppid=,comm=", "-p", str(pid)],
capture_output=True,
text=True,
)
line = result.stdout.strip()
if not line:
break
parts = line.split()
if len(parts) >= 3:
current_pid, ppid, comm = int(parts[0]), int(parts[1]), parts[2]
if "claude" in comm.lower():
print(current_pid)
break
pid = ppid
else:
break
else:
print("shared")
PY
)
[ -n "$CLAUDE_PID" ] || CLAUDE_PID="shared"
mkdir -p "outputs/session/${CLAUDE_PID}"
Check if outputs/session/<CLAUDE_PID>/status.yml exists. If not, create with initial schema:
dry_run: false
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.
Execute the provided command/prompt EXACTLY as given. All behavior remains normal EXCEPT:
CRITICAL CONSTRAINTS:
outputs/session/<CLAUDE_PID>/status.yml can be modifiedAfter execution completes (success or failure), reset state in outputs/session/<CLAUDE_PID>/status.yml:
dry_run: false
Provide summary:
The skill acts as a wrapper:
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.