# Experiment

> Chaotic domain: act to impose minimal constraints when cause-effect is invisible. Use when: production down with gibberish logs, completely novel problem, crisis, deliberate disruption, nothing makes sense. NOT for problems with any visible pattern — use /probe instead.

- Skill: `digital-stoic-org/experiment` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add digital-stoic-org/experiment`
- Raw SKILL.md: https://api.skillmd.com/api/skills/digital-stoic-org/experiment/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: digital-stoic-org (https://skillmd.com/u/digital-stoic-org)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/digital-stoic-org/experiment

---


# Experiment

Act → sense → gate. Human IS the constraint. No autonomous runs.

**Situation:** $ARGUMENTS

## ⚠️ AskUserQuestion Guard

**CRITICAL**: After EVERY `AskUserQuestion` call, check if answers are empty/blank. Known Claude Code bug: outside Plan Mode, AskUserQuestion silently returns empty answers without showing UI.

**If answers are empty**: DO NOT proceed with assumptions. Instead:
1. Output: "⚠️ Questions didn't display (known Claude Code bug outside Plan Mode)."
2. Present the options as a **numbered text list** and ask user to reply with their choice number.
3. WAIT for user reply before continuing.

## 0. Classify Chaos

AskUserQuestion — single call:

**"Accidental or deliberate?"**
- **Accidental** (crisis): something broke badly — production down, data corruption, cascading failure → faster gates
- **Deliberate** (innovation): intentional disruption — novel architecture, paradigm shift, no prior art → exploratory gates

Set `mode = accidental|deliberate`.

## 1. Frame the Void

State what is NOT known (not what is known):
- No visible cause-effect relationships
- No best practice applies
- No expert can say "do X"

Identify: what is the minimal safe action to impose ANY constraint on this space?

## 2. Act-Gate Loop

Repeat until structure emerges or transition triggered:

### Act
- Propose ONE minimal action (smallest possible intervention)
- State expected signal: "if this works, we'll see X"
- `isolation: worktree` for containment if code changes involved

### Gate
AskUserQuestion: "Ready to act? Describe outcome after: [action]"

**Wait for human response.** Gate fires after EVERY action — no batching.

### Sense
Interpret the response:
- Signal received → update constraint map
- No signal → action was too small or wrong dimension
- Negative signal → constraint hardened in wrong direction

Log: `action N: [what] → [outcome] → [constraint discovered]`

## 3. Structure Check

After each gate, assess:

```
Constraint type now:
- Still absent → continue act-gate loop
- Enabling (patterns visible) → TRANSITION to /probe
- Governing (experts applicable) → skip /probe → /frame-problem → /investigate
- Rigid (process known) → skip /probe → /frame-problem → execute
- Misclassified → TRANSITION to /frame-problem
```

## 4. Exit + Handoff

AskUserQuestion: "Which transition? [Probe — structure emerged / Frame-problem — misclassified / Troubleshoot — crisis was failure]"

Populate handoff template:
- Structure emerged → `experiment-to-probe-llm.md`
- Re-classify → `experiment-to-frame-problem-llm.md`
- Crisis / failure → invoke `/troubleshoot` with action log as context

Observability: `⚡ Experiment → {mode} → {N} acts → {N} gates → {structure} → TRANSITION`

## Invariants

- NO `run_in_background` — fully foreground
- Gate after EVERY action — human decides at each step
- `isolation: worktree` for containment only, never for parallelism
- Exit to `/probe` when enabling constraints emerge (Chaotic → Complex)

## Refs

- `reference.md` — protocols, gate patterns, transition triggers

