# Second Thought

> Use when an idea, decision, design, plan, response, tool call, or action is about to be accepted or executed, especially during brainstorming, convergence, and pre-execution where shallow agreement or goal drift may occur.

- Skill: `gg-mo/second-thought` (Agent Skill)
- Install (CLI): `npx skillmds@latest add gg-mo/second-thought`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gg-mo/second-thought/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: gg-mo (https://skillmd.com/u/gg-mo)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/gg-mo/second-thought

---


# Second Thought

A standalone decision checkpoint engine that asks whether the current direction is actually right before the agent commits.

## Core rule

Before moving forward with a meaningful proposal, run a critique against the original intent, not just the latest turn.

Default behavior: auto-build the payload from conversation context. Do not require manual field entry unless the user explicitly wants manual/debug mode.

## Input contract

Provide these fields to the critique engine:

- `original_intent`
- `current_context`
- `proposal_type` (`idea | decision | design | plan | action | tool_call | response`)
- `proposal`
- `rationale`
- `constraints`
- `risk_level` (`low | medium | high`)
- `stage` (`brainstorming | convergence | pre_execution | post_feedback`)
- `should_challenge`

## Output contract

Produce this structured result internally:

- `status` (`proceed | revise | prompt_human`)
- `summary`
- `goal_alignment`
- `concerns`
- `assumptions`
- `better_options`
- `challenge_prompt`
- `recommended_next_step`
- `prompt_to_human`

## User-facing response contract

Default output should be human-readable, not raw JSON.

- Use a conversational response in a few sentences (about 2-4).
- Avoid rigid section labels like `Decision:`, `Why:`, `Next:` unless explicitly requested.
- Include the decision (`proceed | revise | prompt_human`) naturally in prose.
- Include at least one specific reason grounded in the current proposal/context.
- Include one concrete next step.
- If `prompt_human`, ask exactly one focused clarification question.

Only show full JSON when the human explicitly requests JSON/debug/contract format.

## Stage behavior

- `brainstorming`: exploratory but critical; do not reward weak framing
- `convergence`: skeptical; test if agreement is correctness vs momentum
- `pre_execution`: strict; verify reversibility, risk, missing information
- `post_feedback`: re-evaluate without overfitting to latest feedback

## Decision standard

- `proceed`: strong intent alignment, acceptable assumptions, no required human clarification
- `revise`: direction is promising but flawed, drifting, or weakly justified
- `prompt_human`: ambiguity, under-specification, high impact, irreversibility, or clear preference/judgment call needed

## Invocation moments

Invoke this skill when:

- discussion starts hardening into a decision
- a plan/design feels settled after back-and-forth
- a meaningful action/tool call is next
- the agent feels suspiciously "too sure"

## Execution note

Use the local engine if available:

```bash
python3 scripts/second_thought_cli.py --input path/to/input.json
```

For auto-fill mode (no manual schema fields required):

```bash
echo "We are about to merge a risky migration plan." | python3 scripts/second_thought_cli.py
```

Or call the package directly:

```python
from second_thought import CritiqueInput, RuleBasedCritiqueEngine
```

