Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Human-in-the-loop approval gates. Creates approval requests for high-stakes actions like hiring agents, strategy proposals, or budget overrides. Tracks states from pending through approved/rejected/revision_requested. Blocks execution until resolved. Triggers on: "approve", "approval", "review request", "sign off"
.claude/skills/miosa-osa-approve/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 98% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 282% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -42% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 78% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 14% | 0% |
> Human-in-the-loop approval gates for high-stakes decisions.
Some actions should not execute without human review. The approve skill creates structured approval requests, tracks their lifecycle, and blocks execution until a human makes a decision. Three approval types by default: hire_agent (adding compute cost), strategy_proposal (changing direction), budget_override (exceeding limits). Custom types supported.
bash# Create an approval request /approve --type hire_agent --summary "Spawn a deep researcher for patent analysis" --cost "~50K tokens" # List pending approvals /approve list # Approve a request /approve ok req-a1b2 # Reject with reason /approve reject req-a1b2 --reason "Budget too tight this week" # Request revision /approve revise req-a1b2 --note "Reduce scope to 20K tokens" # View approval history /approve history --last 20 # Auto-approve low-risk actions /approve policy set hire_agent --auto-approve-under 10000
| Subcommand | Description | |------------|-------------| | (default) | Create a new approval request | | list | Show all pending approvals | | ok <req-id> | Approve a request | | reject <req-id> | Reject a request | | revise <req-id> | Request revision | | history | View past approvals | | policy | Configure auto-approval rules |
| Flag | Type | Default | Description | |------|------|---------|-------------| | --type | enum | required | hire_agent, strategy_proposal, budget_override, or custom | | --summary | string | required | Human-readable description of what needs approval | | --cost | string | — | Estimated cost (tokens, dollars, or time) | | --reason | string | — | Rejection reason or revision note | | --note | string | — | Additional context for revision request | | --last | int | 10 | Number of history entries to show | | --auto-approve-under | int | — | Auto-approve if cost below this threshold | | --urgency | enum | normal | critical, high, normal, low | | --deadline | duration | — | Approval needed by this time | | --requestor | string | auto | Agent or person requesting approval |
approvals/pending/{req-id}.json./approve list, then runs ok, reject, or revise.pending/ to resolved/. Record: decision, decider, timestamp, reason.markdown## Pending Approvals (2) ### req-a1b2 | hire_agent | high urgency **Summary:** Spawn a deep researcher for patent analysis **Requestor:** orchestrator **Cost:** ~50,000 tokens ($5.00) **Submitted:** 2026-03-20 14:30 **Deadline:** 2026-03-20 16:00 **Blocking:** task-d4e5 → `/approve ok req-a1b2` or `/approve reject req-a1b2 --reason "..."` ### req-c3d4 | budget_override | normal **Summary:** Analyst agent requests 20K additional tokens for deep revenue analysis **Requestor:** analyst (agent-e5f6) **Cost:** 20,000 tokens ($2.00) **Submitted:** 2026-03-20 14:35 **Deadline:** none → `/approve ok req-c3d4` or `/approve reject req-c3d4 --reason "..."`
approvals/pending/, approvals/resolved/)/inbox — Notification delivery/budget — Cost estimation and budget checks| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 6,846 | 6,583 | -4% | 1 | 1 | 0% | 1,048 | 2,080 | +98% | 0 | 0 | — |
case-02 | fail→fail | 6,063 | 3,425 | -44% | 1 | 1 | 0% | 1,097 | 1,680 | +53% | 0 | 0 | — |
case-03 | fail→pass | 4,846 | 3,506 | -28% | 1 | 1 | 0% | 434 | 1,656 | +282% | 0 | 0 | — |
case-04 | fail→pass | 14,004 | 1,920 | -86% | 1 | 1 | 0% | 2,286 | 1,335 | -42% | 0 | 0 | — |
case-05 | fail→pass | 5,322 | 2,334 | -56% | 1 | 1 | 0% | 821 | 1,464 | +78% | 0 | 0 | — |
case-06 | fail→pass | 8,265 | 3,785 | -54% | 1 | 1 | 0% | 1,428 | 1,627 | +14% | 0 | 0 | — |
case-07 | fail→pass | 25,603 | 2,376 | -91% | 1 | 1 | 0% | 4,404 | 1,360 | -69% | 0 | 0 | — |
case-08 | fail→pass | 16,606 | 5,448 | -67% | 1 | 1 | 0% | 1,772 | 1,834 | +3% | 0 | 0 | — |
case-09 | fail→pass | 6,335 | 4,831 | -24% | 1 | 1 | 0% | 914 | 1,930 | +111% | 0 | 0 | — |
case-10 | fail→pass | 6,364 | 4,513 | -29% | 1 | 1 | 0% | 987 | 1,867 | +89% | 0 | 0 | — |
case-11 | fail→pass | 14,497 | 3,632 | -75% | 1 | 1 | 0% | 2,046 | 1,729 | -15% | 0 | 0 | — |
case-12 | fail→pass | 14,901 | 3,361 | -77% | 1 | 1 | 0% | 2,534 | 1,661 | -34% | 0 | 0 | — |
case-13 | pass→pass | 16,707 | 2,194 | -87% | 1 | 1 | 0% | 2,703 | 1,458 | -46% | 0 | 0 | — |
case-14 | fail→pass | 18,166 | 3,040 | -83% | 1 | 1 | 0% | 2,371 | 1,426 | -40% | 0 | 0 | — |
case-15 | fail→pass | 11,296 | 2,154 | -81% | 1 | 1 | 0% | 1,634 | 1,414 | -13% | 0 | 0 | — |
case-16 | fail→pass | 11,590 | 4,380 | -62% | 1 | 1 | 0% | 1,771 | 1,730 | -2% | 0 | 0 | — |
case-17 | pass→pass | 6,543 | 1,566 | -76% | 1 | 1 | 0% | 942 | 1,344 | +43% | 0 | 0 | — |
case-18 | fail→pass | 23,386 | 3,148 | -87% | 1 | 1 | 0% | 3,750 | 1,377 | -63% | 0 | 0 | — |
case-19 | fail→pass | 10,967 | 1,812 | -83% | 1 | 1 | 0% | 1,597 | 1,365 | -15% | 0 | 0 | — |
case-20 | pass→pass | 8,691 | 4,801 | -45% | 1 | 1 | 0% | 1,243 | 1,855 | +49% | 0 | 0 | — |
case-21 | pass→pass | 15,849 | 4,591 | -71% | 1 | 1 | 0% | 1,863 | 1,709 | -8% | 0 | 0 | — |
case-22 | pass→pass | 7,389 | 8,745 | +18% | 1 | 1 | 0% | 1,287 | 2,311 | +80% | 0 | 0 | — |
case-23 | pass→pass | 6,684 | 3,596 | -46% | 1 | 1 | 0% | 1,155 | 1,647 | +43% | 0 | 0 | — |
case-24 | fail→pass | 9,630 | 2,734 | -72% | 1 | 1 | 0% | 1,620 | 1,577 | -3% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted, and 23 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +71 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.