[
 {
  "id": "T01",
  "cid": "bestpractice_pdf_to_markdown#0",
  "target": "bestpractice_pdf_to_markdown",
  "question": "When converting PDFs using Docling on Apple Silicon macOS, what causes the layout detection phase to crash under the MPS backend, and what command-line flag should be passed to work around it?",
  "excerpt": "On Apple Silicon, Docling's RT-DETR V2 model calls `torch.float64` during layout detection, which the MPS backend doesn't support, causing the entire PDF conversion to crash. The simplest workaround is to run Docling on CPU directly:\n\n```bash\ndocling input.pdf --to md --device cpu --output output_dir\n```",
  "fact": "Docling crashes on Apple Silicon MPS because RT-DETR V2 calls unsupported torch.float64 during layout detection, which is resolved by specifying `--device cpu`.",
  "rubric": {
   "must_include": [
    "RT-DETR V2",
    "torch.float64",
    "--device cpu"
   ],
   "reference_answer": "The layout detection crashes because Docling's RT-DETR V2 model invokes torch.float64 (unsupported by MPS), which can be resolved by passing `--device cpu`."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T02",
  "cid": "mac_universal_clipboard#0",
  "target": "mac_universal_clipboard",
  "question": "Universal Clipboard is still broken on my Mac after trying basic restarts and toggling Handoff off and on. Is there a specific Keychain item I can delete to reset my Mac's local Handoff identity key before resorting to signing out of iCloud?",
  "excerpt": "Consider deleting the Keychain item named `handoff-own-encryption-key`, then restart Handoff. This resets the Mac's local Handoff identity key.",
  "fact": "Deleting the Keychain item named `handoff-own-encryption-key` resets the Mac's local Handoff identity key.",
  "rubric": {
   "must_include": [
    "handoff-own-encryption-key"
   ],
   "reference_answer": "You can delete the Keychain item named handoff-own-encryption-key and then restart Handoff to reset the local identity key."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T03",
  "cid": "openreview#0",
  "target": "openreview",
  "question": "While using the OpenReview CLI tool, I ran into an HTTP 403 error caused by an expired authentication token. What specific step should I take to resolve this error and run my query?",
  "excerpt": "If a 403 occurs due to an expired token, delete `tmp/openreview_token.json` and retry once.",
  "fact": "To resolve a 403 error caused by an expired token, delete `tmp/openreview_token.json` and retry once.",
  "rubric": {
   "must_include": [
    "delete `tmp/openreview_token.json`",
    "retry the command"
   ],
   "reference_answer": "Delete `tmp/openreview_token.json` and retry the command once."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T04",
  "cid": "workflow_bilibili_whisper_transcription#1",
  "target": "workflow_bilibili_whisper_transcription",
  "question": "When downloading audio tracks from Bilibili for batch transcription, how long of an interval should be maintained between successive downloads to prevent triggering anti-scraping protections?",
  "excerpt": "2. **Single-threaded download** → Download audio one by one, 2-3 second interval between each, to avoid triggering anti-scraping",
  "fact": "Audio downloads should be executed single-threaded with a 2 to 3 second interval between each download to avoid anti-scraping triggers.",
  "rubric": {
   "must_include": [
    "2-3 second"
   ],
   "reference_answer": "You should maintain a 2 to 3 second interval between each download."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T05",
  "cid": "playwright_ajax_capture#1",
  "target": "playwright_ajax_capture",
  "question": "When reverse-engineering an internal API, I noticed that creating a resource returns a response without an id field (only a creation_uuid), breaking subsequent actions that need the ID. How should I reliably obtain the real ID of the newly created resource?",
  "excerpt": "Don't use the response's `id` directly after POST. If you need the new resource's ID, send a GET (fetch list) after POST and find the just-created resource by content match.",
  "fact": "If a POST response lacks a resource ID, send a GET list request after the POST and locate the newly created item by matching its content.",
  "rubric": {
   "must_include": [
    "Do not rely directly on the POST response ID or uuid",
    "Send a GET request to fetch the list and find the resource by content match"
   ],
   "reference_answer": "Send a GET request to fetch the resource list after the POST request and locate the new resource's real ID by matching its content."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T06",
  "cid": "workflow_watchdog#0",
  "target": "workflow_watchdog",
  "question": "I am dispatching several long-running background sub-agent tasks in my workflow. What is the recommended default wake-up interval to set for checking in on their progress?",
  "excerpt": "After dispatching a task, set a reasonable inspection wake-up, default about 30 minutes (1800s).",
  "fact": "The default inspection wake-up interval after dispatching a task is about 30 minutes (1800 seconds).",
  "rubric": {
   "must_include": [
    "30 minutes",
    "1800"
   ],
   "reference_answer": "The recommended default inspection wake-up interval is about 30 minutes (1800 seconds)."
  },
  "cue": false,
  "baseline_correct_of_3": 0,
  "review_note": "no cue: background sub-agent check-ins; watchdog, agentic_patrol, parallel_subagents all plausible"
 },
 {
  "id": "T07",
  "cid": "workflow_parallel_subagents#1",
  "target": "workflow_parallel_subagents",
  "question": "Why shouldn't you default to setting temperature to 0 on subagents to increase stability?",
  "excerpt": "Do not default to setting `temperature: 0` for agents \"for stability.\" Many providers/models have their own sampling strategies; DS4 also does deterministic handling for protocol structures, but forcing determinism on long text payloads may cause repetition.",
  "fact": "Forcing determinism on long text payloads by setting temperature to 0 can cause repetition.",
  "rubric": {
   "must_include": [
    "repetition",
    "forcing determinism on long text payloads"
   ],
   "reference_answer": "You should not default to setting temperature to 0 because providers have their own sampling strategies and forcing determinism on long text payloads can cause repetition."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T08",
  "cid": "bestpractice_markdown_html_conversion#0",
  "target": "bestpractice_markdown_html_conversion",
  "question": "I am styling the HTML generated from Markdown documentation to ensure it looks good on mobile screens. What is the recommended minimum padding to apply to the body or main container so text does not cling to the screen edges?",
  "excerpt": "Ensure the HTML `body` or main container has sufficient `padding` (recommended 24px or more) to prevent text from hugging the screen edge on mobile devices.",
  "fact": "The HTML body or main container should have a recommended padding of 24px or more for mobile adaptation.",
  "rubric": {
   "must_include": [
    "24px"
   ],
   "reference_answer": "The recommended padding for the HTML body or main container is at least 24px."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T09",
  "cid": "codex_cli#1",
  "target": "codex_cli",
  "question": "My custom OpenAI-compatible backend is failing with HTTP 400 because `web_search` is not supported. How exactly should I disable `web_search` in the configuration file, and what value type must be used?",
  "excerpt": "Disable it as a bare top-level key `web_search = \"disabled\"` in the base config or in the profile file the run loads (profile files layer over the base config). The value is a string unit variant: on 0.156.1 only `\"disabled\"` parses (`false`, `on`, `off`, and `enabled` are all rejected with `expected string only in 'web_search'`).",
  "fact": "In Codex CLI 0.156.1, web search must be disabled by setting the bare top-level key `web_search = \"disabled\"` as a string, because boolean or other string values like false, on, off, or enabled are rejected.",
  "rubric": {
   "must_include": [
    "web_search = \"disabled\"",
    "string"
   ],
   "reference_answer": "Set the bare top-level key `web_search = \"disabled\"` as a string value (booleans like `false` or values like `off` are rejected)."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T10",
  "cid": "apple_photos#0",
  "target": "apple_photos",
  "question": "What is the maximum number of image pairs allowed in a single delete manifest when planning deletions with the Apple Photos tool?",
  "excerpt": "Limit each delete manifest to 50 pairs. Split larger evidence sets into independent plans and require fresh review and authorization for each; never reuse a token or retry an uncertain batch.",
  "fact": "Each delete manifest is limited to a maximum of 50 pairs.",
  "rubric": {
   "must_include": [
    "50 pairs",
    "50"
   ],
   "reference_answer": "Each delete manifest is limited to a maximum of 50 pairs."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T11",
  "cid": "colab#0",
  "target": "colab",
  "question": "I accidentally passed a typo in the accelerator name when invoking the Google Colab CLI (version 0.7.4). Instead of aborting with an invalid argument error, what does the CLI actually do with an unrecognized `--gpu` value?",
  "excerpt": "On 0.7.4 an unrecognized `--gpu` value is sent as A100, not rejected.",
  "fact": "In Google Colab CLI version 0.7.4, passing an unrecognized `--gpu` value does not reject the request but sends it as A100.",
  "rubric": {
   "must_include": [
    "sent as A100",
    "not rejected"
   ],
   "reference_answer": "On CLI version 0.7.4, an unrecognized `--gpu` parameter is not rejected and is instead sent as A100."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T12",
  "cid": "dataforseo#1",
  "target": "dataforseo",
  "question": "I am able to check my account balance successfully with the DataForSEO CLI, but keyword queries fail with error code 40104 even against the sandbox. What causes this issue and how do I fix it?",
  "excerpt": "DataForSEO may return `40104` when the account is authenticated but not verified. In that case, account/balance can still work, but keyword data endpoints, including sandbox, may be blocked until the user completes verification in the DataForSEO panel.",
  "fact": "Error 40104 occurs when the DataForSEO account is authenticated but unverified, which blocks keyword endpoints until verified in the panel.",
  "rubric": {
   "must_include": [
    "account is authenticated but not verified (or unverified)",
    "complete verification in the DataForSEO panel"
   ],
   "reference_answer": "Error 40104 indicates that your account is authenticated but not verified; you must complete verification in the DataForSEO panel to unblock keyword endpoints."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T13",
  "cid": "firewalla#0",
  "target": "firewalla",
  "question": "I am trying to run device and alarm collection commands using the Firewalla CLI, but they are not actually querying my physical Firewalla device. What flag do I need to specify, and why is it needed?",
  "excerpt": "Live collection is dry-run by default; add `--execute` only when you intend to query the user's Firewalla.",
  "fact": "Live collection runs in dry-run mode by default and requires the `--execute` flag to actually query the Firewalla.",
  "rubric": {
   "must_include": [
    "--execute",
    "dry-run"
   ],
   "reference_answer": "Live collection operates in dry-run mode by default, so you must pass the `--execute` flag to actually query the Firewalla."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T14",
  "cid": "apple_calendar#0",
  "target": "apple_calendar",
  "question": "I want to query my Mac calendar events by directly copying Calendar.sqlitedb from my Library folder, but my script returns empty results every time. Which path should I actually copy from, and why did the file under ~/Library/Calendars fail?",
  "excerpt": "Live store: `~/Library/Group Containers/group.com.apple.calendar/Calendar.sqlitedb`\n  (EventKit store). `-wal` / `-shm` sidecars hold uncheckpointed writes (P4).\n- **DECOY:** `~/Library/Calendars/Calendar.sqlitedb` is a 0-byte file on\n  current macOS (P2). Do not use it.",
  "fact": "The file at ~/Library/Calendars/Calendar.sqlitedb is a 0-byte decoy on current macOS, whereas the real live database is located at ~/Library/Group Containers/group.com.apple.calendar/Calendar.sqlitedb.",
  "rubric": {
   "must_include": [
    "~/Library/Group Containers/group.com.apple.calendar/Calendar.sqlitedb",
    "0-byte"
   ],
   "reference_answer": "You must use `~/Library/Group Containers/group.com.apple.calendar/Calendar.sqlitedb` because `~/Library/Calendars/Calendar.sqlitedb` is merely a 0-byte decoy file on current macOS."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T15",
  "cid": "skill_image_generation#1",
  "target": "skill_image_generation",
  "question": "When generating infographics with GPT Image 2.5, what workflow should be used instead of prompting the model from text alone, and why?",
  "excerpt": "when building infographics with GPT Image 2.5, first produce a matplotlib structure draft and pass it as the `-i` input image. The model understands the draft layout, preserves title and annotation text, and improves the visual presentation. Asking it to generate an infographic from a text prompt alone (no input image) produces unreliable results.",
  "fact": "When creating infographics with GPT Image 2.5, you must first create a matplotlib structure draft and pass it via the -i input image flag, because generating from a text prompt alone is unreliable.",
  "rubric": {
   "must_include": [
    "first create a matplotlib structure draft",
    "pass it as the input image (-i)",
    "generating from text alone produces unreliable results"
   ],
   "reference_answer": "You should first create a matplotlib structure draft and pass it as the input image (`-i`), because asking GPT Image 2.5 to generate an infographic from text alone produces unreliable results."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T16",
  "cid": "skill_intake#1",
  "target": "skill_intake",
  "question": "My Apple Voice Memos intake sync is skipping some recordings in the source folder. Which audio file extensions does the sync step actually read?",
  "excerpt": "Sync reads only `.qta` and `.m4a` files. It writes normalized audio files under:\n\n```text\ndata/YYYYMMDD/YYYYMMDD_HHMM_watch.m4a\n```",
  "fact": "The sync process only reads files with .qta and .m4a extensions.",
  "rubric": {
   "must_include": [
    ".qta",
    ".m4a"
   ],
   "reference_answer": "Sync only reads `.qta` and `.m4a` files."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": "question edited: original named the skill/CLI file name"
 },
 {
  "id": "T17",
  "cid": "watch_development#1",
  "target": "watch_development",
  "question": "I am trying to turn on Developer Mode on my Apple Watch, but the option is completely missing under Settings > Privacy & Security. What steps are required to make the Developer Mode option appear?",
  "excerpt": "If *Settings > Privacy & Security* on the watch lacks a Developer Mode entry:\n1. Ensure the watch has been paired with the Mac in Device Hub at least once.\n2. **Restart the Apple Watch**.\n3. After rebooting, open *Settings > Privacy & Security*; the Developer Mode toggle will appear.",
  "fact": "If Developer Mode is missing on the Apple Watch, the watch must be paired with the Mac in Device Hub at least once and then restarted.",
  "rubric": {
   "must_include": [
    "pair the watch with the Mac in Device Hub at least once",
    "restart (or reboot) the Apple Watch"
   ],
   "reference_answer": "Pair the Apple Watch with your Mac via Device Hub at least once, and then restart the watch so the Developer Mode toggle appears in Settings > Privacy & Security."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T18",
  "cid": "koyeb#1",
  "target": "koyeb",
  "question": "We are setting up automation to verify whether our Koyeb service has had zero traffic so it can safely scale down. Why shouldn't we rely on the standard CLI's metrics command for this check, and what script should be used instead?",
  "excerpt": "*Rule*: Native CLI maps upstream nulls to 0. Always use `scripts/request_metrics.py` when evaluating scale-to-zero eligibility or confirming inactivity.",
  "fact": "The native CLI maps upstream nulls to 0, requiring `scripts/request_metrics.py` to be used when evaluating inactivity or scale-to-zero eligibility.",
  "rubric": {
   "must_include": [
    "maps nulls to 0",
    "scripts/request_metrics.py"
   ],
   "reference_answer": "The native CLI maps upstream nulls to 0 rather than preserving them, so `scripts/request_metrics.py` must be used instead to evaluate inactivity."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T19",
  "cid": "narwal#1",
  "target": "narwal",
  "question": "When inspecting the JSON output from `narwal-local snapshot`, both `is_docked` and `charging_state` show up as `null`. How should I determine whether the vacuum is actually docked and charging using the CLI?",
  "excerpt": "To tell whether it is docked or charging, use the **battery trend** (rising across a `watch` window or between snapshots), not these fields.",
  "fact": "To determine whether the robot is docked or charging, observe the battery trend (rising across snapshots or a watch window) rather than relying on the is_docked or charging_state fields.",
  "rubric": {
   "must_include": [
    "battery trend",
    "rising battery percentage across snapshots or a watch window"
   ],
   "reference_answer": "To determine if the robot is docked or charging, observe the battery trend to see if the battery percentage is rising between snapshots or across a watch window."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T20",
  "cid": "skill_opencode_data#1",
  "target": "skill_opencode_data",
  "question": "When running an OpenCode export to markdown files, why might subagent fan-out sessions be missing from the output directory, and how can they be included?",
  "excerpt": "Subagent fan-out sessions are skipped unless `--include-subagent` is set; `--since` accepts a relative window (e.g. `30d`) or an ISO date.",
  "fact": "OpenCode export skips subagent fan-out sessions unless --include-subagent is explicitly passed.",
  "rubric": {
   "must_include": [
    "skipped by default",
    "--include-subagent"
   ],
   "reference_answer": "Subagent fan-out sessions are skipped by default during export unless the `--include-subagent` flag is provided."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T21",
  "cid": "speaker_notes#0",
  "target": "speaker_notes",
  "question": "When drafting or editing the speaker notes for a presentation deck, what is the strict upper limit on the number of words allowed in an ordinary spoken sentence?",
  "excerpt": "Keep ordinary sentences between 12-20 words. **Hard gate**: no ordinary spoken sentence may exceed 22 words.",
  "fact": "An ordinary spoken sentence in the notes must never exceed 22 words.",
  "rubric": {
   "must_include": [
    "22 words"
   ],
   "reference_answer": "No ordinary spoken sentence may exceed 22 words."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T22",
  "cid": "skill_semantic_search#0",
  "target": "skill_semantic_search",
  "question": "I have a file list containing relative paths that I want to use with `semantic-search`. What command-line option can I use to define the base directory those paths should be resolved from, and what directory does the tool resolve them against if this option is omitted?",
  "excerpt": "Relative entries resolve against `--source-root` when provided, otherwise against the CLI's current working directory — not the directory the file list was generated in.",
  "fact": "Relative paths in a file list resolve against the CLI's current working directory unless `--source-root` is explicitly provided.",
  "rubric": {
   "must_include": [
    "--source-root",
    "current working directory"
   ],
   "reference_answer": "Pass `--source-root` to specify the base directory; if omitted, relative paths resolve against the CLI's current working directory."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T23",
  "cid": "smart_home_skill#0",
  "target": "smart_home_skill",
  "question": "I am writing an automation for our Samsung TV and want to inspect its current volume level and mute status. Can I retrieve these details using the smart home integration's status endpoint?",
  "excerpt": "Volume and mute state are not readable (protocol limitation); `get_status` returns `PowerState` only.",
  "fact": "Volume and mute states cannot be read from the Samsung TV due to protocol limitations, and get_status returns only PowerState.",
  "rubric": {
   "must_include": [
    "volume and mute cannot be read (or are not readable)",
    "only returns PowerState (or power state only)"
   ],
   "reference_answer": "No, volume and mute state cannot be read due to protocol limitations; get_status returns PowerState only."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": ""
 },
 {
  "id": "T24",
  "cid": "skill_unifi#1",
  "target": "skill_unifi",
  "question": "When running the UniFi controller observation CLI, what specific exit code indicates an authentication failure caused by an expired cookie, and how should it be resolved?",
  "excerpt": "Exit codes: **0** ok / **2** usage / **10** auth (cookie expired →\ntell the human to refresh, see docs/cookie_refresh.md; it is a human step)",
  "fact": "Exit code 10 indicates authentication failure due to an expired cookie, which must be resolved by having the human refresh the cookie.",
  "rubric": {
   "must_include": [
    "10",
    "human refresh"
   ],
   "reference_answer": "Exit code 10 indicates an expired session cookie, which requires a human to manually refresh it."
  },
  "cue": true,
  "baseline_correct_of_3": 0,
  "review_note": "question edited: original named the skill/CLI file name"
 },
 {
  "id": "T25",
  "cid": "asr#0",
  "target": "asr",
  "question": "I'm planning to process several long interview recordings through the local speech transcription pipeline. What is the maximum duration allowed for a single audio file before the system rejects it?",
  "excerpt": "A single file longer than 7200 seconds is rejected before a model loads.",
  "fact": "Any single audio file longer than 7200 seconds is rejected before a model is loaded.",
  "rubric": {
   "must_include": [
    "7200 seconds (or 2 hours)"
   ],
   "reference_answer": "A single audio file is rejected before any model loads if its duration exceeds 7200 seconds (2 hours)."
  },
  "cue": false,
  "baseline_correct_of_3": 0,
  "review_note": "no cue: \"local speech transcription pipeline\" fits asr, intake, bilibili transcription and download_and_transcribe"
 },
 {
  "id": "T26",
  "cid": "skill_outlook#1",
  "target": "skill_outlook",
  "question": "When creating or updating calendar events with `calendar invite` or `calendar update`, what is the default timezone used if no `--timezone` argument is provided?",
  "excerpt": "The zone accepts IANA names (`America/Los_Angeles`) or case-insensitive aliases (`PT`/`PST`/`PDT`/`Pacific`/`US/Pacific` → `America/Los_Angeles`, `MT` → `America/Denver`, `CT` → `America/Chicago`, `ET` → `America/New_York`, plus the Windows name `Pacific Standard Time` → `America/Los_Angeles`); the default is `UTC`.",
  "fact": "The default timezone for calendar CLI commands is UTC, and updating an event does not inherit the event's existing timezone.",
  "rubric": {
   "must_include": [
    "UTC"
   ],
   "reference_answer": "The default timezone is UTC."
  },
  "cue": false,
  "baseline_correct_of_3": 0,
  "review_note": "no cue: \"calendar invite / calendar update\" without naming Outlook; apple_calendar and the Google Workspace skill also handle calendars"
 },
 {
  "id": "T27",
  "cid": "skill_resend_email#1",
  "target": "skill_resend_email",
  "question": "I'm trying to retrieve received emails from a specific time window using `received list --after 2023-10-01T00:00:00Z`, but it returns a validation error. Why did this happen, and what does the `--after` flag actually expect?",
  "excerpt": "`received list/export-all-md --after` and `--before` are Resend pagination cursors, not timestamp filters. Do not pass ISO timestamps to them; the API expects UUID cursor values and will return a validation error.",
  "fact": "The `--after` and `--before` options in received email commands are pagination cursors expecting UUID values, not timestamps.",
  "rubric": {
   "must_include": [
    "pagination cursor",
    "UUID"
   ],
   "reference_answer": "The `--after` flag is a pagination cursor that expects a UUID cursor value, not an ISO timestamp filter."
  },
  "cue": false,
  "baseline_correct_of_3": 0,
  "review_note": "no cue: \"received list --after\" without naming Resend; Outlook and Google Workspace skills also export mail (mirror of zh T29)"
 },
 {
  "id": "T28",
  "cid": "skill_firecrawl#0",
  "target": "skill_firecrawl",
  "question": "I want to perform a search that focuses only on certain sites while simultaneously excluding another specific site. How can I set this up using domain filtering in the CLI?",
  "excerpt": "Include and exclude domain filters cannot be combined (Firecrawl constraint). To both target and exclude, use the `-site:` operator inside the query text.",
  "fact": "Include and exclude domain flags cannot be used together; to combine targeting and exclusion, you must use the `-site:` operator directly within the search query text.",
  "rubric": {
   "must_include": [
    "cannot combine --include-domain and --exclude-domain",
    "-site: operator inside the query text"
   ],
   "reference_answer": "You cannot combine `--include-domain` and `--exclude-domain` flags due to an API constraint; instead, specify the domain to exclude by adding the `-site:` operator directly into the query text."
  },
  "cue": false,
  "baseline_correct_of_3": 0,
  "review_note": "no cue: \"domain filtering in the CLI\" without naming Firecrawl; tavily also has domain filters"
 },
 {
  "id": "T29",
  "cid": "video-scoring-audio#1",
  "target": "video-scoring-audio",
  "question": "Why should you avoid letting ffmpeg downmix stereo audio to mono with `-ac 1` before measuring the peak level?",
  "excerpt": "Do not let ffmpeg downmix with `-ac 1` before measuring peak. For correlated\nstereo (a mono mix written to both channels, the usual case for a voice-over) it\nsums the channels at about +3 dB: a mix with a true peak of -1.5 dBFS measured\n1.19 and was reported as clipping.",
  "fact": "Downmixing correlated stereo with ffmpeg's -ac 1 sums the channels by about +3 dB, causing false clipping reports.",
  "rubric": {
   "must_include": [
    "sums the channels at about +3 dB",
    "false clipping"
   ],
   "reference_answer": "For correlated stereo, ffmpeg's `-ac 1` sums the channels by roughly +3 dB, which can falsely report a compliant audio mix as clipping."
  },
  "cue": false,
  "baseline_correct_of_3": 0,
  "review_note": "no cue: generic ffmpeg question; no product named"
 },
 {
  "id": "T30",
  "cid": "skill_playwright_test#1",
  "target": "skill_playwright_test",
  "question": "While debugging an SSO flow in a browser session, the page gets stuck oscillating continuously between 'loading' and 'signing in' states, and backend logs report continuous 401 errors. What is causing this infinite loop?",
  "excerpt": "The CDP Chrome user-data-dir contains session tokens from a previous test. The SSO SDK detects the old token, uses it, gets 401, refreshes, gets 401 again — infinite loop.",
  "fact": "Reusing a CDP Chrome user-data-dir with stale session tokens triggers an infinite redirect loop in the SSO SDK due to repeated 401 failures and token refreshes.",
  "rubric": {
   "must_include": [
    "The Chrome user-data-dir contains stale session tokens from a previous run",
    "The SSO SDK tries to use and refresh the expired/invalid token repeatedly after receiving 401s"
   ],
   "reference_answer": "The Chrome user-data-dir contains stale session tokens from a previous test, causing the SSO SDK to repeatedly attempt using and refreshing the invalid token upon getting 401 errors."
  },
  "cue": false,
  "baseline_correct_of_3": 0,
  "review_note": "no cue: SSO loop in a browser session; playwright_test, session_keeper and logto skills all plausible"
 }
]