skills/human-gate-designer/SKILL.md
Designs human-in-the-loop review points for DAG workflows. Determines what to present to the human, how to collect feedback, and how to route approve/reject/modify decisions back into the DAG. Use when adding approval gates, designing review UX, or handling human feedback in agent workflows. Activate on "human review", "approval gate", "human-in-the-loop", "human gate", "approval workflow", "user review step". NOT for executing human gates at runtime (use dag-runtime with Temporal signals), general UX design, or chatbot conversation design.
npx skillsauth add curiositech/windags-skills human-gate-designerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Designs human-in-the-loop review points in DAG workflows: what to present, how to collect feedback, how to route decisions back into the DAG.
✅ Use for:
❌ NOT for:
dag-runtime + Temporal signals)flowchart TD
A{Is the action irreversible?} -->|Yes| G1[Gate BEFORE the action]
A -->|No| B{Is output user-facing?}
B -->|Yes| G2[Gate AFTER generation, BEFORE delivery]
B -->|No| C{Cost > $0.50 for remaining nodes?}
C -->|Yes| G3[Gate at the cost threshold]
C -->|No| D{Confidence score < 0.7?}
D -->|Yes| G4[Gate on low-confidence outputs]
D -->|No| N[No gate needed]
| Situation | Gate Position | Why | |-----------|-------------|-----| | Irreversible action (deploy, send email, submit) | Before the action | Can't undo | | User-facing deliverable (report, website, PR) | After generation, before delivery | Quality check | | High cost remaining (>$0.50) | Before expensive phase | Budget confirmation | | Low confidence output (<0.7) | After the uncertain node | Expert judgment needed | | Ambiguous task decomposition | After planning, before execution | Validate the plan | | First run of a new template DAG | After each phase | Build trust gradually |
┌──────────────────────────────────────────────────────┐
│ 🔍 Human Review: [Node Name] │
│ │
│ Context: [1-2 sentences: what happened so far] │
│ │
│ Output to Review: │
│ ┌──────────────────────────────────────────────────┐│
│ │ [The node's output, formatted for readability] ││
│ │ [Key decisions highlighted] ││
│ │ [Confidence: 0.82] ││
│ └──────────────────────────────────────────────────┘│
│ │
│ Cost so far: $0.08 / $0.50 budget │
│ Remaining nodes: 4 (est. $0.12) │
│ │
│ [✅ Approve] [✏️ Modify] [❌ Reject] │
│ │
│ If modifying, what should change? │
│ ┌──────────────────────────────────────────────────┐│
│ │ [text input for human feedback] ││
│ └──────────────────────────────────────────────────┘│
└──────────────────────────────────────────────────────┘
flowchart TD
H[Human decision] --> A{Decision?}
A -->|Approve| C[Continue to next wave]
A -->|Modify| M[Re-execute node with human feedback injected]
M --> V[Validate modified output]
V --> H
A -->|Reject| R{Reject scope?}
R -->|This node only| RN[Re-plan this node with different approach]
RN --> H
R -->|Entire phase| RP[Re-plan from last successful phase]
RP --> H
R -->|Abort DAG| AB[Stop execution, return partial results]
When the human selects "Modify," their text becomes part of the re-execution prompt:
Original task: [same as before]
Previous output: [the output the human rejected]
Human feedback: "[the human's modification text]"
Revise your output to address the human's feedback.
Preserve the parts they didn't comment on.
Wrong: Requiring human approval after every single node. Right: Gate only at irreversible actions, user-facing outputs, and low-confidence decisions. Most internal nodes need no gate.
Wrong: The human can only approve or reject, with no way to provide specific feedback. Right: Always include a "Modify" option with a text input for targeted feedback.
Wrong: Showing the human a raw JSON output with no explanation. Right: Show: what the DAG is doing, what happened so far, what this output means, what happens next if approved.
This skill produces:
data-ai
license: Apache-2.0 NOT for unrelated tasks outside this domain.
development
Use when designing caching strategies (cache-aside, write-through, write-behind), implementing distributed locks, building rate limiters, leaderboards, real-time streams (XADD/consumer groups), pub/sub, or tuning eviction policies. Triggers: thundering-herd on cache miss, dogpile on key expiry, Redlock vs SET-NX-PX choice, sliding-window rate limiter, hot-key on a single cluster slot, big-key blowup, MULTI/EXEC across slots, KEYS in production. NOT for Redis Cluster operations/admin (different domain), embedded KV (SQLite, leveldb), in-process LRU caches, or Memcached.
tools
Drawing the `'use client'` boundary correctly in React Server Components apps (Next.js App Router, RSC frameworks) — leaf-pushing, slot composition, serialization rules, and environment poisoning prevention. Grounded in react.dev and Next.js 16 docs.
development
Use when designing rate limiting for an API, choosing between token bucket / sliding window / leaky bucket / fixed window, implementing it in Redis, deciding edge (Cloudflare/Upstash) vs origin enforcement, sizing per-user vs per-IP vs per-endpoint quotas, returning the right 429 response with Retry-After, or fixing the boundary-burst bug in fixed-window limiters. Triggers: 429 too many requests, INCR + EXPIRE, ZADD + ZREMRANGEBYSCORE + ZCARD, X-RateLimit-Remaining header, Cloudflare WAF rate limiting rules, Upstash @upstash/ratelimit, leaky bucket shaping vs policing, distributed rate limiter consistency. NOT for DDoS mitigation specifically (different scale), CAPTCHA / bot management, full WAF design, or per-user quota billing.