[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69A0DF7MM5T42K2TT1S168C":3,"skill-same:01M69A0DF7MM5T42K2TT1S168C":60},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":39,"repositoryHtmlUrl":40,"repositoryHomepageUrl":41,"ownerHtmlUrl":42,"ownerBlogUrl":43,"ownerDescription":44,"updatedAt":45,"install":46,"resources":59},"01M69A0DF7MM5T42K2TT1S168C","scope-api",null,"Query and control the Scope platform API for analyzing benchmark data, managing runs\u002Frequests, skills, agents, reports, and insights. Use when the user asks about SCOPE data, wants to trigger runs, check status, generate reports, or interact with the SCOPE platform programmatically.","microsoft\u002Fscope","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69A02AWCPD2P5P1SY08HRG0",84,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fscope\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fscope-api\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30],"scope api","status","2026-11-10 10:12:30",false,"---\nname: \"scope-api\"\ndescription: \"Query and control the Scope platform API for analyzing benchmark data, managing runs\u002Frequests, skills, agents, reports, and insights. Use when the user asks about SCOPE data, wants to trigger runs, check status, generate reports, or interact with the SCOPE platform programmatically.\"\n---\n\n## Scope API Skill\n\nThe Scope platform benchmarks AI coding agents. This skill explains how to query and control it.\n\n### Base URL\n\n```\nhttp:\u002F\u002Flocalhost:${API_PORT}\n```\n\nThe `API_PORT` variable is defined in the project `.env` file (default: `3116`). Always read it from the environment or `.env` before making calls.\n\n### Authentication\n\nFor authenticated calls, pass the existing **IdP access token** unchanged:\n```\n-H \"Authorization: Bearer $SCOPE_TOKEN\"\n```\n\nUse the caller-provided `SCOPE_TOKEN` when available; never print\u002Flog the token or\nput it in a URL. There is no Scope session JWT, `\u002Fauth\u002Flogin`, or token exchange.\nThe API verifies signature\u002Fclaims before consulting its user-access cache.\n\n**Enrollment is explicit.** Already-enrolled bearer callers remain compatible.\nFor a new identity, intentionally call this once before other authenticated calls:\n\n```bash\ncurl --fail-with-body -sS \\\n  -X POST \\\n  -H \"Authorization: Bearer $SCOPE_TOKEN\" \\\n  -H \"Cache-Control: no-store\" \\\n  \"http:\u002F\u002Flocalhost:$API_PORT\u002Fapi\u002Fv1\u002Fusers\u002Fme\"\n```\n\nOnly POST `\u002Fapi\u002Fv1\u002Fusers\u002Fme` may JIT-create the user or update profile,\n`lastLoginAt`, and eligible bootstrap-admin promotion. This POST has side effects:\n**never prefetch or poll it**, and do not silently invoke it as an ordinary lookup\nretry. `lastLoginAt` records this explicit upsert, not proof of an interactive login.\nFor normal identity checks use GET `\u002Fapi\u002Fv1\u002Fusers\u002Fme`; Invalid\u002Frepeated\u002Fstructured \nlogin values return `400`; HEAD never enrolls.\n\nPlain `\u002Fme` and other authenticated routes resolve an existing active Scope UUID\u002Frole\nfrom Redis; miss\u002Funavailability reads Mongo by exact `(idp, tid, oid)` and warms the\ncache, without JIT. Missing users return `403 user_not_enrolled`, disabled users\n`403 user_disabled`, reserved\u002Finvalid principals `401`; required Mongo\u002FJWKS outages\nreturn `503`, unexpected errors `500`. Do not interpret a cache miss as a denial or\nturn a verified-identity denial into anonymous access.\n\nThe fixed\u002Fnon-sliding cache TTL (`AUTH_USER_CACHE_TTL_SECONDS`, default 300 seconds)\nmeans DB-only role\u002Fdisable changes may not be visible until expiry. Public endpoints\nand existing no-token\u002Fauth-disabled anonymous rollout remain supported; this is not\nfull route RBAC. See [the auth contract](..\u002F..\u002F..\u002Fdocs\u002Farchitecture\u002Fauth-rbac.md).\n\n### Before Making API Calls\n\n**Always fetch the OpenAPI spec first** to understand available endpoints, required parameters, and response schemas:\n\n```bash\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fopenapi.json\n```\n\nParse it with `jq` to find the relevant endpoint and its schema before constructing your API call. For example:\n\n```bash\n# Find endpoints matching a keyword\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fopenapi.json | jq '.paths | keys[] | select(contains(\"requests\"))'\n\n# Get schema for a specific endpoint\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fopenapi.json | jq '.paths[\"\u002Fapi\u002Fv1\u002Frequests\"]'\n```\n\n### Key Endpoint Groups\n\n- **System**: `\u002Fhealth`, `\u002Fready`, `\u002Fabout`, `\u002Fapi\u002Fv1\u002Fversion`\n- **Identity**: GET `\u002Fapi\u002Fv1\u002Fusers\u002Fme` (read-only); POST `\u002Fapi\u002Fv1\u002Fusers\u002Fme` (explicit enrollment\u002Flogin refresh)\n- **Requests & Runs**: `\u002Fapi\u002Fv1\u002Frequests\u002F*` (create, cancel, retry, pause, resume, bulk ops, logs, HAR, video, snapshots, tool-calls)\n- **Skills**: `\u002Fapi\u002Fv1\u002Fskills\u002F*` (discover, search, external, resolve, revisions)\n- **Agents**: `\u002Fapi\u002Fv1\u002Fagents\u002F*` (CRUD, versions)\n- **Reports & Insights**: `\u002Fapi\u002Fv1\u002Freports\u002F*`, `\u002Fapi\u002Fv1\u002Finsights\u002F*` (trigger, bulk, upvote\u002Fdownvote)\n- **Criteria & Prompt Features**: `\u002Fapi\u002Fv1\u002Fcriteria\u002F*`, `\u002Fapi\u002Fv1\u002Fprompt-features\u002F*` (MDP, graph, seed, generate, extract)\n- **Task Prompts**: `\u002Fapi\u002Fv1\u002Ftask-prompts\u002F*` (generate, extract features)\n- **Models**: `\u002Fapi\u002Fv1\u002Fmodels\u002F*` (list, sync)\n- **Feature Flags**: `\u002Fapi\u002Fv1\u002Ffeature-flags`\n\n### Usage Pattern\n\nWhen the user asks about SCOPE data or wants to control SCOPE:\n\n1. **Fetch the OpenAPI spec** from `http:\u002F\u002Flocalhost:$API_PORT\u002Fopenapi.json`\n2. **Find the relevant endpoint** and inspect its parameters\u002Fschemas\n3. **Make the API call** with `curl` and parse results with `jq`\n4. For complex queries, combine multiple API calls\n\n### Example Workflow\n\n```bash\n# 1. Fetch spec and find the endpoint you need\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fopenapi.json | jq '.paths[\"\u002Fapi\u002Fv1\u002Frequests\"].get'\n\n# 2. Make the call\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fapi\u002Fv1\u002Frequests | jq '.[:5]'\n\n# 3. Drill into details\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fapi\u002Fv1\u002Frequests\u002F{id} | jq .\n```\n","## Scope API Skill\n\nThe Scope platform benchmarks AI coding agents. This skill explains how to query and control it.\n\n### Base URL\n\n```\nhttp:\u002F\u002Flocalhost:${API_PORT}\n```\n\nThe `API_PORT` variable is defined in the project `.env` file (default: `3116`). Always read it from the environment or `.env` before making calls.\n\n### Authentication\n\nFor authenticated calls, pass the existing **IdP access token** unchanged:\n```\n-H \"Authorization: Bearer $SCOPE_TOKEN\"\n```\n\nUse the caller-provided `SCOPE_TOKEN` when available; never print\u002Flog the token or\nput it in a URL. There is no Scope session JWT, `\u002Fauth\u002Flogin`, or token exchange.\nThe API verifies signature\u002Fclaims before consulting its user-access cache.\n\n**Enrollment is explicit.** Already-enrolled bearer callers remain compatible.\nFor a new identity, intentionally call this once before other authenticated calls:\n\n```bash\ncurl --fail-with-body -sS \\\n  -X POST \\\n  -H \"Authorization: Bearer $SCOPE_TOKEN\" \\\n  -H \"Cache-Control: no-store\" \\\n  \"http:\u002F\u002Flocalhost:$API_PORT\u002Fapi\u002Fv1\u002Fusers\u002Fme\"\n```\n\nOnly POST `\u002Fapi\u002Fv1\u002Fusers\u002Fme` may JIT-create the user or update profile,\n`lastLoginAt`, and eligible bootstrap-admin promotion. This POST has side effects:\n**never prefetch or poll it**, and do not silently invoke it as an ordinary lookup\nretry. `lastLoginAt` records this explicit upsert, not proof of an interactive login.\nFor normal identity checks use GET `\u002Fapi\u002Fv1\u002Fusers\u002Fme`; Invalid\u002Frepeated\u002Fstructured \nlogin values return `400`; HEAD never enrolls.\n\nPlain `\u002Fme` and other authenticated routes resolve an existing active Scope UUID\u002Frole\nfrom Redis; miss\u002Funavailability reads Mongo by exact `(idp, tid, oid)` and warms the\ncache, without JIT. Missing users return `403 user_not_enrolled`, disabled users\n`403 user_disabled`, reserved\u002Finvalid principals `401`; required Mongo\u002FJWKS outages\nreturn `503`, unexpected errors `500`. Do not interpret a cache miss as a denial or\nturn a verified-identity denial into anonymous access.\n\nThe fixed\u002Fnon-sliding cache TTL (`AUTH_USER_CACHE_TTL_SECONDS`, default 300 seconds)\nmeans DB-only role\u002Fdisable changes may not be visible until expiry. Public endpoints\nand existing no-token\u002Fauth-disabled anonymous rollout remain supported; this is not\nfull route RBAC. See [the auth contract](..\u002F..\u002F..\u002Fdocs\u002Farchitecture\u002Fauth-rbac.md).\n\n### Before Making API Calls\n\n**Always fetch the OpenAPI spec first** to understand available endpoints, required parameters, and response schemas:\n\n```bash\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fopenapi.json\n```\n\nParse it with `jq` to find the relevant endpoint and its schema before constructing your API call. For example:\n\n```bash\n# Find endpoints matching a keyword\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fopenapi.json | jq '.paths | keys[] | select(contains(\"requests\"))'\n\n# Get schema for a specific endpoint\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fopenapi.json | jq '.paths[\"\u002Fapi\u002Fv1\u002Frequests\"]'\n```\n\n### Key Endpoint Groups\n\n- **System**: `\u002Fhealth`, `\u002Fready`, `\u002Fabout`, `\u002Fapi\u002Fv1\u002Fversion`\n- **Identity**: GET `\u002Fapi\u002Fv1\u002Fusers\u002Fme` (read-only); POST `\u002Fapi\u002Fv1\u002Fusers\u002Fme` (explicit enrollment\u002Flogin refresh)\n- **Requests & Runs**: `\u002Fapi\u002Fv1\u002Frequests\u002F*` (create, cancel, retry, pause, resume, bulk ops, logs, HAR, video, snapshots, tool-calls)\n- **Skills**: `\u002Fapi\u002Fv1\u002Fskills\u002F*` (discover, search, external, resolve, revisions)\n- **Agents**: `\u002Fapi\u002Fv1\u002Fagents\u002F*` (CRUD, versions)\n- **Reports & Insights**: `\u002Fapi\u002Fv1\u002Freports\u002F*`, `\u002Fapi\u002Fv1\u002Finsights\u002F*` (trigger, bulk, upvote\u002Fdownvote)\n- **Criteria & Prompt Features**: `\u002Fapi\u002Fv1\u002Fcriteria\u002F*`, `\u002Fapi\u002Fv1\u002Fprompt-features\u002F*` (MDP, graph, seed, generate, extract)\n- **Task Prompts**: `\u002Fapi\u002Fv1\u002Ftask-prompts\u002F*` (generate, extract features)\n- **Models**: `\u002Fapi\u002Fv1\u002Fmodels\u002F*` (list, sync)\n- **Feature Flags**: `\u002Fapi\u002Fv1\u002Ffeature-flags`\n\n### Usage Pattern\n\nWhen the user asks about SCOPE data or wants to control SCOPE:\n\n1. **Fetch the OpenAPI spec** from `http:\u002F\u002Flocalhost:$API_PORT\u002Fopenapi.json`\n2. **Find the relevant endpoint** and inspect its parameters\u002Fschemas\n3. **Make the API call** with `curl` and parse results with `jq`\n4. For complex queries, combine multiple API calls\n\n### Example Workflow\n\n```bash\n# 1. Fetch spec and find the endpoint you need\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fopenapi.json | jq '.paths[\"\u002Fapi\u002Fv1\u002Frequests\"].get'\n\n# 2. Make the call\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fapi\u002Fv1\u002Frequests | jq '.[:5]'\n\n# 3. Drill into details\ncurl -s http:\u002F\u002Flocalhost:$API_PORT\u002Fapi\u002Fv1\u002Frequests\u002F{id} | jq .\n```\n",{"name":5,"description":7},"main","05d9435005711a96c63be162044854870e77c242",".agents\u002Fskills\u002Fscope-api",32,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fscope","https:\u002F\u002Fmicrosoft.github.io\u002Fscope\u002F","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-12 18:52:02",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add microsoft\u002Fscope --skill scope-api",{"tool":52,"command":53},"bunx","bunx skills add microsoft\u002Fscope --skill scope-api",{"tool":55,"command":56},"pnpm","pnpm dlx skills add microsoft\u002Fscope --skill scope-api","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fscope\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fscope-api\u002FSKILL.md",true,[],[61,80,99,108,119,130],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":70,"publishedAt":31},"01M6WEPRSQ7KG1B2FBVTS8B76F","github-actions","Use when creating, editing, reviewing, or troubleshooting GitHub Actions workflows in Scope.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fscope\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fgithub-actions\u002FSKILL.md",[67],{"categoryNo":68,"categoryName":69,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[71,72,73,74,75,76,77,78,79],"github actions","actions","github","workflows","troubleshooting","editing","use","scope","when",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":89,"publishedAt":31},"01M69A0MMREMJDBMNJA7YEV5G7","ax-practitioner","This skill should be used when the user asks about AX (agent experience) or the AX Practitioner Playbook, for example \"how do I evaluate my technology's agent experience\", \"write AX eval criteria\", \"design an eval scenario\", \"propensity vs efficacy\", \"lift and drag\", \"which agent profiles should I test\", \"how many eval runs\", \"how do I read an agent trajectory\", \"why does the agent ignore my MCP server or skill\", \"agent uses an outdated SDK version\", \"too many extensions\", \"how to read an AX readout\", \"how to get the owning team to fix the docs\", \"review my eval against the checklist\", or the SPFx worked example. It answers interactively and strictly from the playbook, citing chapters. When the playbook has no answer, it says so and clearly labels any general-knowledge or web content.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fscope\u002Fblob\u002Fmain\u002Fdocs\u002Fax-playbook\u002Fax-practitioner\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[90,91,92,93,94,95,96,97,98],"ax practitioner","mcp server","MCP","test","web","sdk","docs","review","design",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":106,"publishedAt":31},"01M69A0JXSYS6CZW0XJAG36C4V","typescript","TypeScript best practices for this monorepo. Use this skill when: (1) writing new TypeScript code, (2) reviewing TypeScript code, (3) working with API responses, fetch calls, or JSON parsing, (4) adding or modifying types and interfaces.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fscope\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftypescript\u002FSKILL.md",[105],{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[101,107],"writing",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":31},"01M69A0H0CJ9DVKDA3M4NHV52X","storybook","Maintain the Storybook component catalog for the portal app. Use this skill when: (1) adding new stories for components, (2) updating existing stories after component changes, (3) running a full Storybook refresh\u002Fsync with AI assistance.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fscope\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fstorybook\u002FSKILL.md",[],[110,115,116,117,118],"sync","component","react","components",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":31},"01M69A0F8EJTHV71BSS08BDW45","scope-cli","Interact with the Scope benchmarking platform using the Scope CLI — submit runs, list results, manage criteria, generate reports, and administer agents, skills, and MCP servers.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fscope\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fscope-cli\u002FSKILL.md",[125],{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},[127,128,129,92],"cli","scope cli","benchmarking",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":31},"01M69A0AZEJV4YWBXY9EKBBHS6","rust-best-practices","Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook. Use this skill when: (1) writing new Rust code or functions, (2) reviewing or refactoring existing Rust code, (3) deciding between borrowing vs cloning or ownership patterns, (4) implementing error handling with Result types, (5) optimizing Rust code for performance, (6) writing tests or documentation for Rust projects.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fscope\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frust-best-practices\u002FSKILL.md",[],[137,138,107,139,140],"rust","rust best practices","documentation","performance"]