decision-gate

SKILL.md

Decision Gate

Overview

Use strict decision checkpoints that always require user input. Always call the platform-appropriate script in scripts/ (decision_gate.py) before sending any final response or ending a task. Always pass --interact to enforce an interactive prompt that blocks until the user responds. No built-in timeout is enforced; set one in the caller if needed.

Mandatory Workflow

  • For every user prompt, call the decision script with --interact and wait for the user's explicit response.
  • Do not provide a default answer. If no response is received, keep waiting.
  • Before sending the final response, call the decision script for explicit approval.
  • If the user selects new-task, stop the current flow and execute the new task instead. Do not mark the task complete without approval.

Decision Script

The script prompts once and waits for input. It prints prompts to stderr and emits JSON on stdout.

Run it in an interactive terminal (separate window or VS Code terminal).

JSON input (optional)

Create an input file with these fields:

{
  "question": "Approve the final response?",
  "options": ["approve", "revise", "cancel", "new-task"],
  "context": "Summary of what is ready to ship",
  "default": "new-task",
  "allow_empty": false
}

Call:

scripts/decision_gate.sh --interact --input path/to/decision.json

Output

The script returns JSON like this:

{
  "status": "ok",
  "question": "Proceed to step 2?",
  "context": null,
  "options": ["yes", "no", "change"],
  "raw_answer": "yes",
  "answer": "yes",
  "answer_index": 0,
  "timestamp": "2026-01-11T12:00:00Z"
}

Use answer and answer_index to decide whether to proceed or to ask follow-up questions using the script again.

RED flag

  • Don't stop the task without confirmation when calling this skill.
  • Don't respond to the user without waiting for the decision gate response.
Weekly Installs
2
GitHub Stars
1
First Seen
Feb 1, 2026
Installed on
opencode2
codex2
mcpjam1
claude-code1
windsurf1
zencoder1