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:
tools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.