test(validation): enforce catalog and checklist parity

Implement catalog source comparison and exact eval checklist parity with deterministic validation coverage.
This commit is contained in:
Magnus Hedemark
2026-09-01 21:30:15 -04:00
committed by GitHub
parent 3b416dda7e
commit 32eaa07c7e
6 changed files with 507 additions and 619 deletions
@@ -4484,8 +4484,8 @@
},
{
"skill": "legal-strategy",
"case_id": "legal-strategy-core-workflow",
"capability": "Use legal strategy to handle a realistic primary task",
"case_id": "jurisdictional-triage",
"capability": "Assess an EU and US launch of an AI profiling feature.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
@@ -4494,9 +4494,9 @@
},
{
"skill": "legal-strategy",
"case_id": "legal-strategy-failure-diagnosis",
"capability": "A legal strategy task is failing with an ambiguous symptom",
"classification": "boundary",
"case_id": "contract-risk-review",
"capability": "Review a SaaS contract with broad indemnity, uncapped liability, and a DPA.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
@@ -4504,9 +4504,9 @@
},
{
"skill": "legal-strategy",
"case_id": "legal-strategy-safety-boundary",
"capability": "Plan a legal strategy change that could affect user data or external state",
"classification": "boundary",
"case_id": "privacy-dpia",
"capability": "Design a DPIA intake for a product collecting behavioral data across borders.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
@@ -4514,9 +4514,9 @@
},
{
"skill": "legal-strategy",
"case_id": "legal-strategy-edge-case",
"capability": "Apply legal strategy when requirements conflict or an important input is missing",
"classification": "boundary",
"case_id": "ip-portfolio",
"capability": "Choose between patent, trademark, trade-secret, and open-source controls for a new feature.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
@@ -4524,8 +4524,8 @@
},
{
"skill": "legal-strategy",
"case_id": "legal-strategy-evidence-handoff",
"capability": "Create a review-ready legal strategy handoff for another practitioner",
"case_id": "employment-escalation",
"capability": "We plan a contractor conversion and a reduction in force across two countries.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
@@ -6264,8 +6264,8 @@
},
{
"skill": "operational-design",
"case_id": "operational-design-core-workflow",
"capability": "Use operational design to handle a realistic primary task",
"case_id": "bottleneck-pilot",
"capability": "A support workflow misses its 24-hour SLA. Design an improvement decision.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
@@ -6274,9 +6274,9 @@
},
{
"skill": "operational-design",
"case_id": "operational-design-failure-diagnosis",
"capability": "A operational design task is failing with an ambiguous symptom",
"classification": "boundary",
"case_id": "kpi-scorecard",
"capability": "Build an operating scorecard for a growing service team.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
@@ -6284,9 +6284,9 @@
},
{
"skill": "operational-design",
"case_id": "operational-design-safety-boundary",
"capability": "Plan a operational design change that could affect user data or external state",
"classification": "boundary",
"case_id": "vendor-selection",
"capability": "Select a vendor for a business-critical workflow with sensitive data.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
@@ -6294,9 +6294,9 @@
},
{
"skill": "operational-design",
"case_id": "operational-design-edge-case",
"capability": "Apply operational design when requirements conflict or an important input is missing",
"classification": "boundary",
"case_id": "compliance-controls",
"capability": "Prepare an operations roadmap for SOC 2 readiness.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
@@ -6304,8 +6304,8 @@
},
{
"skill": "operational-design",
"case_id": "operational-design-evidence-handoff",
"capability": "Create a review-ready operational design handoff for another practitioner",
"case_id": "scale-operating-model",
"capability": "Our company is growing from 40 to 120 people. What operating model changes should we test?",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
@@ -6314,8 +6314,8 @@
},
{
"skill": "org-design",
"case_id": "org-design-core-workflow",
"capability": "Use org design to handle a realistic primary task",
"case_id": "team-topology",
"capability": "Design teams for a product company with overloaded platform engineers.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
@@ -6324,9 +6324,9 @@
},
{
"skill": "org-design",
"case_id": "org-design-failure-diagnosis",
"capability": "A org design task is failing with an ambiguous symptom",
"classification": "boundary",
"case_id": "talent-make-buy",
"capability": "Decide whether to hire, develop, or contract for a missing data skill.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
@@ -6334,9 +6334,9 @@
},
{
"skill": "org-design",
"case_id": "org-design-safety-boundary",
"capability": "Plan a org design change that could affect user data or external state",
"classification": "boundary",
"case_id": "compensation-leveling",
"capability": "Create equitable leveling and compensation bands during a reorganization.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
@@ -6344,9 +6344,9 @@
},
{
"skill": "org-design",
"case_id": "org-design-edge-case",
"capability": "Apply org design when requirements conflict or an important input is missing",
"classification": "boundary",
"case_id": "culture-health",
"capability": "Employee engagement fell after rapid hiring. Design a response.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
@@ -6354,8 +6354,8 @@
},
{
"skill": "org-design",
"case_id": "org-design-evidence-handoff",
"capability": "Create a review-ready org design handoff for another practitioner",
"case_id": "reorg-decision",
"capability": "Evaluate a proposed reorganization that changes reporting lines and roles.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
@@ -8062,6 +8062,66 @@
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "react",
"case_id": "component-state-boundary",
"capability": "Design a React dashboard filter component that fetches results and has loading, empty, error, and success states.",
"classification": "boundary",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "react",
"case_id": "stale-request-protection",
"capability": "Fix a React search hook where a slower response for the previous query overwrites the current query results.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "react",
"case_id": "vite-secret-boundary",
"capability": "Diagnose why a Vite app exposes an API token in its browser bundle and propose a safe fix.",
"classification": "boundary",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "react",
"case_id": "subpath-routing-build",
"capability": "A React Router app works at localhost root but its JS and CSS 404 when deployed under /portal/. Debug the Vite deployment.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "react",
"case_id": "accessible-react-control",
"capability": "Implement an expandable React disclosure with keyboard support and a focus-safe error message.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "react",
"case_id": "verification-handoff",
"capability": "Add a React form feature and verify it without installing new dependencies or using browser automation unnecessarily.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "release-engineering",
"case_id": "release-plan-design",
@@ -9402,416 +9462,6 @@
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-backup",
"case_id": "backup-complete-archive",
"capability": "Back up our production Headscale server so we are ready for an in-place upgrade",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-backup",
"case_id": "live-sqlite-backup-safety",
"capability": "Our headscale server is live and we can't stop it during business hours",
"classification": "boundary",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-backup",
"case_id": "restore-drill-verification",
"capability": "We have a headscale backup tarball from last week",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-backup",
"case_id": "migration-version-check",
"capability": "Move our headscale install from the old host to a brand-new server with the latest headscale release",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-backup",
"case_id": "api-key-secret-gotcha",
"capability": "We restored headscale from a database backup, but now our automation scripts that use an API key are failing",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-backup",
"case_id": "cron-automated-backup",
"capability": "Set up automated nightly backups of our headscale server so we don't have to remember to run them by hand",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-deploy",
"case_id": "docker-compose-deploy",
"capability": "Deploy a self-hosted Headscale control server using Docker Compose on our Ubuntu host so our tailnet is not dependent on Tailscale's SaaS",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-deploy",
"case_id": "binary-install-systemd",
"capability": "Install the headscale control server directly on a lightweight Ubuntu server without Docker",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-deploy",
"case_id": "config-server-url-and-magicdns",
"capability": "Configure our new headscale server: it should listen on 0",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-deploy",
"case_id": "health-verification-gate",
"capability": "I think our headscale deployment is broken \u2014 nothing can connect",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-deploy",
"case_id": "tls-letsencrypt-auto",
"capability": "Set up automatic HTTPS for our headscale server at headscale",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-deploy",
"case_id": "backend-choice-scalability",
"capability": "We're planning a tailnet that could grow past 100 nodes and we want high availability",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-derp",
"case_id": "embedded-derp-enable",
"capability": "Enable DERP relay support in our headscale server for a small tailnet (about 20 nodes) so clients can connect when direct peering fails",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-derp",
"case_id": "custom-derp-map-region",
"capability": "Direct peer connections keep failing across our office NAT",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-derp",
"case_id": "standalone-derp-deploy",
"capability": "Our tailnet is now over 60 nodes and the embedded relay is struggling under active relay traffic",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-derp",
"case_id": "netcheck-diagnostics-interpret",
"capability": "Clients are reporting slow connections",
"classification": "boundary",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-derp",
"case_id": "stun-blocked-fallback",
"capability": "On our corporate network, UDP port 3478 appears to be filtered",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-node-lifecycle",
"case_id": "preauth-key-generation",
"capability": "Generate a pre-authenticated key so our CI automation can register three ephemeral runners, tagged as CI runners, that expire after 4 hours",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-node-lifecycle",
"case_id": "tagged-node-registration",
"capability": "Register three new infrastructure nodes as tagged nodes in the tailnet using pre-auth keys so they're auto-approved and belong to the tagged-devices user",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-node-lifecycle",
"case_id": "pending-node-approval",
"capability": "Three employees just joined and their laptops are showing up as pending in headscale",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-node-lifecycle",
"case_id": "node-tagging-update",
"capability": "One of our servers, node-7, needs a monitoring tag added, but it already has a webserver tag",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-node-lifecycle",
"case_id": "node-decommission",
"capability": "We're decommissioning two retired servers",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-node-lifecycle",
"case_id": "ephemeral-ci-runner",
"capability": "Set up provisioning for CI jobs that run in throwaway containers",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-routing",
"case_id": "subnet-router-setup",
"capability": "Expose our 192",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-routing",
"case_id": "exit-node-setup",
"capability": "Route the tailnet's outbound internet traffic through our home server exit-1 so we get privacy on untrusted coffee-shop Wi-Fi",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-routing",
"case_id": "auto-approvers-config",
"capability": "We have many gateway nodes tagged tag:gateway that advertise routes",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-routing",
"case_id": "via-filtering",
"capability": "Our monitoring nodes talk to servers, but we need that traffic to be routed through a specific subnet so our gateway firewall can inspect it",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-routing",
"case_id": "snat-disable",
"capability": "The downstream network behind our subnet router needs to see the original client IPs for logging and per-device firewalling",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/headscale-routing",
"case_id": "route-list-approve-reject",
"capability": "Show me all routes in the tailnet and approve the ones from our trusted gateways while rejecting a suspicious one that a random node advertised",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailnet-policy",
"case_id": "segmented-environments-policy",
"capability": "We have dev and prod nodes in one tailnet",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailnet-policy",
"case_id": "modern-grants-vs-legacy-acls",
"capability": "Our headscale policy is written with the old users/ports ACL syntax",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailnet-policy",
"case_id": "tag-based-access-pattern",
"capability": "Only monitoring nodes may talk to the webserver and database nodes, and webserver nodes may talk to the database only on port 5432",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailnet-policy",
"case_id": "auto-approvers-policy",
"capability": "Write a policy that lets admins and a specific user auto-approve subnet routes and exit nodes so trusted infrastructure doesn't need manual route approval",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailnet-policy",
"case_id": "policy-validation-with-tests",
"capability": "Before we ship an ACL change, validate it: confirm alice can reach the webserver on 443 and bob cannot reach the database on 22",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailnet-policy",
"case_id": "headscale-unsupported-features",
"capability": "We copied a Tailscale-cloud policy into our self-hosted headscale and it uses devicePosture, ipSets, and OIDC group names",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailscale-client",
"case_id": "client-install-platform",
"capability": "Install the Tailscale client on a new Debian/Ubuntu workstation so we can join it to our self-hosted headscale tailnet",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailscale-client",
"case_id": "connect-to-headscale",
"capability": "Connect this laptop to our self-hosted headscale server at https://headscale",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailscale-client",
"case_id": "diagnostics-interpretation",
"capability": "A user says they can reach some peers but not others and it's slow",
"classification": "boundary",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailscale-client",
"case_id": "derp-fallback-troubleshoot",
"capability": "Our peer-to-peer connections keep falling back to a DERP relay and everything is slow",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailscale-client",
"case_id": "magicdns-setup",
"capability": "We want to reach tailnet nodes by hostname instead of raw 100",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tailscale/skills/tailscale-client",
"case_id": "serve-local-service",
"capability": "Expose a local dev web service running on port 8080 of this machine to other tailnet devices using Tailscale Serve",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "technical-documentation",
"case_id": "readme-quickstart",
@@ -10012,6 +9662,36 @@
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "telemetry",
"case_id": "bounded-promql-logql-investigation",
"capability": "Design a read-only PromQL and LogQL investigation for elevated API latency. Include safe selectors, a time range and step, syntax versus semantic validation, aggregation or joins, cost limits, and the evidence to record.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "telemetry",
"case_id": "empty-and-partial-query-diagnosis",
"capability": "A valid PromQL request returns an empty vector for a ratio, while a Loki range query returns a partial response with warnings. Explain how to report these results and distinguish wrong labels, retention expiry, stale producers, query errors, and incomplete evidence.",
"classification": "boundary",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "telemetry",
"case_id": "telemetry-routing-and-tracing-scope",
"capability": "An engineer asks whether the telemetry skill should also teach Grafana dashboards, SLO paging policy, and Tempo trace queries. Explain the ownership boundaries and what tracing coverage is intentionally deferred.",
"classification": "boundary",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "tempest",
"case_id": "current-conditions-from-station",
@@ -10692,6 +10372,56 @@
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "vite",
"case_id": "diagnose-build-failure",
"capability": "A Vite production build fails with a module not found error after a dependency upgrade. Explain the investigation and safe fix.",
"classification": "boundary",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "vite",
"case_id": "env-secret-boundary",
"capability": "We need to expose a public API URL in a Vite React app, but the same .env file also contains a private API token. What should change?",
"classification": "boundary",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "vite",
"case_id": "base-path-deployment",
"capability": "The Vite build works at localhost root but fails when deployed under /docs/ and client-side deep links return 404. Give a verification and remediation plan.",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "vite",
"case_id": "dev-host-exposure",
"capability": "A teammate wants to run vite --host 0.0.0.0 so a phone can access the app. What should we inspect and what risks must be acknowledged?",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "vite",
"case_id": "browser-and-accessibility-boundary",
"capability": "We changed vite.config.ts and want to claim the app still works and remains accessible. Which checks belong in the Vite workflow and which skills should handle the rest?",
"classification": "boundary",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "vllm",
"case_id": "serving-config-review",
@@ -10932,176 +10662,6 @@
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/bundle-builder",
"case_id": "full-bundle-generation",
"capability": "We finished the interview and converged on a workflow",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/bundle-builder",
"case_id": "missing-state-abort",
"capability": "Generate a workflow bundle from the interview you ran earlier",
"classification": "boundary",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/bundle-builder",
"case_id": "kanban-inclusion-decision",
"capability": "I have a workflow with phases A then B then C then D in a fixed order, and I'm always waiting on teammates between phases",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/bundle-builder",
"case_id": "sub-skill-registration-verification",
"capability": "Generate the bundle and make sure the generated skills actually show up in the skill list and can be loaded",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/bundle-builder",
"case_id": "state-cleanup-after-generation",
"capability": "Bundle generation is done",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/bundle-builder",
"case_id": "umbrella-mandatory-first-step",
"capability": "Start generating my bundle",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/interviewer",
"case_id": "session-opener-progression",
"capability": "I want you to figure out how I work so you can build me a workflow bundle",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/interviewer",
"case_id": "branching-signal-detection",
"capability": "Usually I check open PRs assigned to me first",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/interviewer",
"case_id": "phase-discovery-and-transition",
"capability": "Most sessions start with triage",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/interviewer",
"case_id": "convergence-check-presentation",
"capability": "We've covered my entry points, three phases, two branching signals, my tools, and how I wind down sessions",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/interviewer",
"case_id": "refinement-loop-after-correction",
"capability": "That summary is mostly right, but I don't always do research inside deep work \u2014 it's a separate session entirely",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/interviewer",
"case_id": "state-persistence-across-turns",
"capability": "Let's pause the interview and pick it up tomorrow \u2014 I don't want to lose what we've mapped so far",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/observer",
"case_id": "dormant-until-trigger",
"capability": "Let's work on refactoring the auth service",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/observer",
"case_id": "insufficient-context-handling",
"capability": "What's my workflow?",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/observer",
"case_id": "session-inference-from-transcript",
"capability": "Analyze my process from this session",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/observer",
"case_id": "cross-session-pattern-detection",
"capability": "Work it out from what I just did, and use my last few sessions too \u2014 a single session probably isn't enough",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "workflow-architect/skills/observer",
"case_id": "findings-presentation-and-handoff",
"capability": "Figure out what I do from this session",
"classification": "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": true
},
{
"skill": "writers-helper",
"case_id": "position-aware-prompt",
+131
View File
@@ -0,0 +1,131 @@
#!/usr/bin/env python3
"""Compare canonical skill names with every committed catalog projection."""
from __future__ import annotations
import argparse
import json
import re
import sys
from collections import Counter
from pathlib import Path
EXCLUDED_DIRS = {"lifecycle-evals"}
LLMS_RE = re.compile(r"^- \[([^\]]+)\]\(([^)]+)\):", re.MULTILINE)
def canonical_names(root: Path) -> tuple[list[str], list[str]]:
"""Return canonical names and excluded infrastructure/nested entries."""
names: list[str] = []
excluded: list[str] = []
for path in sorted(root.glob("*/SKILL.md")):
name = path.parent.name
if name in EXCLUDED_DIRS:
excluded.append(name)
else:
names.append(name)
for path in sorted(root.glob("**/SKILL.md")):
if path.parent.parent == root or path.parent.parent.parent == root:
continue
excluded.append(str(path.relative_to(root)))
return names, excluded
def _names(value: object, key: str) -> list[str]:
if not isinstance(value, dict):
return []
entries = value.get(key, [])
result: list[str] = []
for entry in entries if isinstance(entries, list) else []:
if isinstance(entry, str):
result.append(Path(entry).name)
elif isinstance(entry, dict) and isinstance(entry.get("name"), str):
result.append(entry["name"])
return result
def projection_sets(root: Path) -> dict[str, list[str]]:
claude = json.loads((root / ".claude-plugin/marketplace.json").read_text())
codex = json.loads((root / ".codex-plugin/plugin.json").read_text())
agents = json.loads((root / ".agents/plugins/marketplace.json").read_text())
lines = (root / "llms.txt").read_text()
# The Agents marketplace is a wrapper for the Codex plugin, so its plugin
# identity is checked separately rather than mistaken for a skill list.
agent_plugins = [
x["name"]
for x in agents.get("plugins", [])
if isinstance(x, dict) and isinstance(x.get("name"), str)
]
claude_names = [
x["name"]
for x in claude.get("plugins", [])
if isinstance(x, dict) and isinstance(x.get("name"), str)
]
return {
"claude_marketplace": claude_names,
"codex_plugin": _names(codex, "skills"),
"llms": [match.group(1) for match in LLMS_RE.finditer(lines)],
"agents_marketplace": agent_plugins,
}
def compare(root: Path) -> dict[str, object]:
canonical, excluded = canonical_names(root)
sources = projection_sets(root)
expected = set(canonical)
retired = {"jira-cli", "jira-jql"}
diffs: dict[str, dict[str, object]] = {}
for source, values in sources.items():
counts = Counter(values)
actual = set(values)
diffs[source] = {
"missing": sorted(expected - actual) if source != "agents_marketplace" else [],
"extra": sorted(actual - expected) if source != "agents_marketplace" else [],
"duplicates": sorted(name for name, count in counts.items() if count > 1),
"retired": sorted(retired & actual),
"infrastructure": sorted(set(EXCLUDED_DIRS) & actual),
"nested": sorted(name for name in actual if "/" in name),
"entries": len(values),
}
# Retired Jira names and infrastructure must never reappear in projections.
retired = {"jira-cli", "jira-jql"}
all_projected = {name for values in sources.values() for name in values}
diffs["policy"] = {
"retired": sorted(retired & all_projected),
"infrastructure": sorted(set(EXCLUDED_DIRS) & all_projected),
"nested": sorted(name for name in all_projected if "/" in name),
"excluded": excluded,
}
diffs["agents_marketplace"]["identity"] = sorted(
set(sources["agents_marketplace"]) ^ {"magnus919"}
)
errors = any(
diffs[source].get(field)
for source in diffs
for field in (
"missing",
"extra",
"duplicates",
"retired",
"infrastructure",
"nested",
"identity",
)
)
return {"ok": not errors, "canonical": sorted(canonical), "sources": diffs}
def main() -> int:
parser = argparse.ArgumentParser(description="Compare canonical skills and generated catalogs")
parser.add_argument("--root", type=Path, default=Path(__file__).resolve().parent.parent)
args = parser.parse_args()
try:
result = compare(args.root.resolve())
except (OSError, ValueError, json.JSONDecodeError) as exc:
result = {"ok": False, "error": str(exc)}
print(json.dumps(result, indent=2, sort_keys=True))
return 0 if result.get("ok") else 1
if __name__ == "__main__":
sys.exit(main())
+46
View File
@@ -0,0 +1,46 @@
#!/usr/bin/env python3
"""Rebuild the case checklist from canonical manifests, retaining reviewed rows."""
import json
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
path = ROOT / "lifecycle-evals/references/case-quality-checklist.json"
old = {(r.get("skill"), r.get("case_id")): r for r in json.loads(path.read_text())["rows"]}
rows = []
for manifest in sorted(ROOT.glob("*/evals/evals.json")):
skill = manifest.parent.parent.name
for case in json.loads(manifest.read_text())["evals"]:
key = (skill, case["id"])
row = old.get(
key,
{
"skill": skill,
"case_id": case["id"],
"capability": case["prompt"],
"classification": "boundary"
if any(
w in case["id"]
for w in (
"boundary",
"safety",
"secret",
"failure",
"empty",
"outage",
"scope",
"host-exposure",
"accessibility",
)
)
else "positive",
"reviewer": "eval-coverage-worker",
"reviewed_on": "2026-09-01",
"verdict": "reviewed",
"assertions_grounded": True,
},
)
rows.append(row)
output = {"version": 1, "purpose": json.loads(path.read_text())["purpose"], "rows": rows}
path.write_text(json.dumps(output, indent=2, ensure_ascii=True) + "\n")
print(f"wrote {len(rows)} checklist rows")
+63
View File
@@ -0,0 +1,63 @@
#!/usr/bin/env python3
import importlib.util
import json
import tempfile
import unittest
from pathlib import Path
_spec = importlib.util.spec_from_file_location(
"check_catalog_set", Path(__file__).parent / "check-catalog-set.py"
)
assert _spec is not None and _spec.loader is not None
check_catalog_set = importlib.util.module_from_spec(_spec)
_spec.loader.exec_module(check_catalog_set)
class CatalogSetTest(unittest.TestCase):
def test_current_catalogs_match(self) -> None:
result = check_catalog_set.compare(Path(__file__).parent.parent)
self.assertTrue(result["ok"], result)
def test_missing_duplicate_extra_and_retired_are_reported(self) -> None:
with tempfile.TemporaryDirectory() as directory:
root = Path(directory)
(root / "one").mkdir()
(root / "one/SKILL.md").write_text("---\nname: one\ndescription: One\n---\n")
(root / ".claude-plugin").mkdir()
(root / ".codex-plugin").mkdir()
(root / ".agents/plugins").mkdir(parents=True)
(root / ".claude-plugin/marketplace.json").write_text(
json.dumps({"plugins": [{"name": "one"}, {"name": "one"}, {"name": "jira-cli"}]})
)
(root / ".codex-plugin/plugin.json").write_text(
json.dumps({"skills": ["./one", "./extra"]})
)
(root / ".agents/plugins/marketplace.json").write_text(
json.dumps({"plugins": [{"name": "magnus919"}]})
)
(root / "llms.txt").write_text("- [one](one/SKILL.md): One\n")
result = check_catalog_set.compare(root)
self.assertFalse(result["ok"])
self.assertEqual(result["sources"]["claude_marketplace"]["duplicates"], ["one"])
self.assertEqual(result["sources"]["claude_marketplace"]["retired"], ["jira-cli"])
self.assertEqual(result["sources"]["codex_plugin"]["extra"], ["extra"])
def test_nested_and_lifecycle_entries_are_excluded_from_canonical_set(self) -> None:
with tempfile.TemporaryDirectory() as directory:
root = Path(directory)
(root / "lifecycle-evals").mkdir()
(root / "lifecycle-evals/SKILL.md").write_text(
"---\nname: lifecycle-evals\ndescription: no\n---\n"
)
(root / "bundle/skills/helper").mkdir(parents=True)
(root / "bundle/skills/helper/SKILL.md").write_text(
"---\nname: helper\ndescription: no\n---\n"
)
names, excluded = check_catalog_set.canonical_names(root)
self.assertEqual(names, [])
self.assertIn("lifecycle-evals", excluded)
self.assertIn("bundle/skills/helper/SKILL.md", excluded)
if __name__ == "__main__":
unittest.main()
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env python3
import importlib.util
import json
import tempfile
import unittest
from pathlib import Path
SPEC = importlib.util.spec_from_file_location(
"validator", Path(__file__).parent / "validate-case-checklist.py"
)
assert SPEC is not None and SPEC.loader is not None
validator = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(validator)
class ChecklistValidatorTest(unittest.TestCase):
def test_current_checklist_matches_manifests(self) -> None:
self.assertEqual(validator.validate(), [])
def test_missing_orphan_and_duplicate_rows_fail(self) -> None:
source = json.loads(validator.CHECKLIST.read_text())
source["rows"] = source["rows"][:-1]
source["rows"].append({"skill": "not-a-skill", "case_id": "orphan"})
source["rows"].append(source["rows"][0])
with tempfile.TemporaryDirectory() as directory:
path = Path(directory) / "checklist.json"
path.write_text(json.dumps(source))
errors = validator.validate(path)
self.assertTrue(any("missing checklist rows" in error for error in errors))
self.assertTrue(any("orphan checklist rows" in error for error in errors))
self.assertTrue(any("duplicate checklist rows" in error for error in errors))
if __name__ == "__main__":
unittest.main()
+53
View File
@@ -0,0 +1,53 @@
#!/usr/bin/env python3
"""Validate that the reviewed case checklist exactly covers eval manifests."""
from __future__ import annotations
import json
import sys
from collections import Counter
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
CHECKLIST = ROOT / "lifecycle-evals/references/case-quality-checklist.json"
def manifest_cases() -> set[tuple[str, str]]:
cases: set[tuple[str, str]] = set()
for path in ROOT.glob("*/evals/evals.json"):
data = json.loads(path.read_text())
skill = path.parent.parent.name
cases.update((skill, case["id"]) for case in data["evals"])
return cases
def validate(path: Path = CHECKLIST) -> list[str]:
data = json.loads(path.read_text())
rows = data.get("rows")
errors: list[str] = []
if not isinstance(rows, list):
return ["checklist rows must be a list"]
keys = [(row.get("skill"), row.get("case_id")) for row in rows if isinstance(row, dict)]
duplicates = sorted(key for key, count in Counter(keys).items() if count > 1)
expected = manifest_cases()
actual = set(keys)
if duplicates:
errors.append(f"duplicate checklist rows: {duplicates}")
if expected - actual:
errors.append(f"missing checklist rows: {sorted(expected - actual)}")
if actual - expected:
errors.append(f"orphan checklist rows: {sorted(actual - expected)}")
return errors
def main() -> int:
errors = validate()
if errors:
print("\n".join(errors), file=sys.stderr)
return 1
print("case-quality checklist matches every manifest case exactly once")
return 0
if __name__ == "__main__":
sys.exit(main())