skills/interview-simulator/SKILL.md
Designs and orchestrates a realistic interview simulation platform with voice AI, whiteboard evaluation, gaze-tracking proctoring, and mobile spaced repetition. Use for building mock interview infrastructure, configuring sessions, and adaptive difficulty. Activate on "interview simulator", "mock interview", "practice session", "voice mock". NOT for individual round-type coaching, resume writing, or prep timeline coordination.
npx skillsauth add curiositech/windags-skills interview-simulatorInstall 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.
Platform architecture and coaching system for realistic mock interview practice with adaptive difficulty, emotion-sensitive voice AI, and comprehensive performance tracking.
IF emotion_data.hesitation_rate > 70% FOR 2+ consecutive responses
├── AND current_difficulty >= 3
│ └── REDUCE difficulty by 1 level
│ └── Voice persona: "Let's back up to fundamentals"
│
├── ELSE current_difficulty < 5
│ └── MAINTAIN difficulty
│ └── Voice persona: "Take your time, think through this"
│
└── ELSE (hesitation at difficulty 1-2)
└── PAUSE session for confidence building
└── Offer: "Would you like a 2-minute break?"
IF technical_accuracy > 85% AND response_time < 60% of target
├── AND current_difficulty < 5
│ └── INCREASE difficulty by 1 level
│ └── Add follow-up: "Now optimize for X constraint"
│
└── AND current_difficulty = 5
└── MAINTAIN but add adversarial prompts
└── "What if the requirements changed to..."
IF any dimension_score < 60 FOR last 3 sessions
├── SELECT lowest_scoring_round_type
│ └── Override user preference if different
│
ELIF no round_type practiced in last 7 days
├── SELECT oldest_unpracticed_round
│ └── Variety bonus for skills retention
│
ELSE
├── SELECT weakness_weighted_random()
│ └── 70% bias toward bottom 2 scores, 30% random
IF gaze_off_screen > 5 seconds
├── IMMEDIATE: Voice AI pauses, asks "Everything okay?"
│ └── IF happens again within 10 minutes
│ └── FLAG session as "distracted practice"
│ └── Debrief includes focus recommendations
│
IF second_monitor_detection = true
├── IMMEDIATE: Session pause, warning overlay
│ └── "Real interview won't have external resources"
│ └── Options: [Continue with flag] [Reset clean]
│
IF note_taking_detected (hand tracking)
├── ALLOW in Training mode with flag
├── BLOCK in Simulation mode
└── "Please close notes for realistic practice"
Symptoms: >50% of sessions are same round type, plateau in target skill, false confidence in demo sessions Detection Rule: IF session_history.last_10_sessions contains >7 of same round_type THEN flag "comfort_zone_looping" Fix: Lock out preferred round type for 72 hours, force weakness-weighted selection, show heatmap of practice distribution
Symptoms: Difficulty drops during complex technical problems where thinking time is normal, candidate reports sessions feel too easy Detection Rule: IF difficulty_reduction triggered AND problem_complexity = high AND response_quality > 75% THEN flag "false_positive_hesitation" Fix: Calibrate hesitation baseline per round type, extend thinking time allowance for design problems from 30s to 90s, separate "thinking" from "struggling" in emotion model
Symptoms: Voice AI cuts out mid-question, session scoring incomplete, debrief missing transcript sections, user reports poor experience Detection Rule: IF voice_stream_interruptions > 3 OR transcript_coverage < 80% THEN flag "network_degraded_session" Fix: Implement local recording fallback, retry logic for API calls, session quality gate before scoring (reject if <80% data integrity), offline mode with sync-later
Symptoms: False flags for normal behavior, user disables proctoring due to oversensitivity, gaze tracking works poorly for specific users (glasses, lighting) Detection Rule: IF proctor_flag_rate > 0.3 per session AND user_session_count > 5 THEN flag "proctor_oversensitive" Fix: Per-user calibration phase (30-second normal gaze pattern recording), lighting condition adaptation, glasses detection with adjusted thresholds
Symptoms: All session scores >80%, improvement suggestions too generic, user reports disconnect between debrief and actual performance Detection Rule: IF average_session_score > 80 AND session_count > 10 AND difficulty_level unchanged THEN flag "score_inflation" Fix: Recalibrate scoring rubric with harder baseline, cross-validate with round-specific skill scoring, add "compared to senior candidates" percentile context
Setup: User has 3 previous ML design sessions, scores: [65, 72, 68]. Starting difficulty: 3/5.
Session Flow:
00:00 Voice AI: "Let's design a recommendation system for a video platform. Start with the problem setup."
00:45 User: "Um... so we need to recommend videos... I guess we'd use collaborative filtering?"
Emotion data: hesitation_rate=85%, confidence=30%
01:15 Orchestrator detects: high hesitation + low confidence = reduce difficulty
Difficulty: 3 → 2, Voice persona shift to "supportive"
01:20 Voice AI: "Great start! Let's break this down step by step. What data do we have about users?"
02:30 User: [More confident response about user features]
Emotion data: hesitation_rate=40%, confidence=70%
Orchestrator: maintain difficulty=2, user finding footing
15:00 User demonstrates solid understanding at level 2
Technical accuracy=80%, response time=good
15:30 Orchestrator: increase difficulty 2 → 3
15:45 Voice AI: "Now, how would you handle the cold start problem for new users?"
30:00 Session ends, user handled level 3 questions well
Debrief Output:
Setup: User in poor connectivity environment, voice stream unstable.
Session Flow:
00:00 Session starts normally
02:15 Voice stream cuts out mid-question
02:20 Orchestrator detects stream_interruption, activates fallback
02:25 Text overlay: "Voice connection unstable. Switching to text mode."
Question continues in text, user types responses
15:30 Voice reconnects, quality test passed
15:35 Orchestrator: "Voice is back. Continuing with audio."
30:00 Session completes
Quality Gate Check:
Setup: User wears glasses, has second monitor for work (turned off during session).
Session Flow:
05:00 MediaPipe detects gaze deviation (actually lens reflection)
05:01 Proctor flags "off-screen gaze"
05:02 User continues normally
08:00 Another false flag (glasses adjustment)
08:01 System detects: flag_rate=2 in 8 minutes = high
08:05 Auto-calibration triggered: "We're detecting gaze issues.
Let's recalibrate for your setup. Look at the center of
your screen for 10 seconds."
08:15 New baseline established for this user
Subsequent flags drop to normal levels
Session completion requires all checks to pass:
This skill should NOT be used for:
Delegate to other skills when:
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.