[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EEBTK7WJ6CFSZCDFPRVE2N":3,"skill-same:01M6EEBTK7WJ6CFSZCDFPRVE2N":268},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":33,"frontMatter":34,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":40,"ownerHtmlUrl":41,"ownerBlogUrl":6,"ownerDescription":42,"updatedAt":43,"install":44,"resources":57},"01M6EEBTK7WJ6CFSZCDFPRVE2N","api-tester",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Fapi-tester\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30],"api","tester","api tester","2026-11-10 10:12:30",false,"# API Tester\n\n## Overview\n\nTest API endpoints by sending HTTP requests, validating responses, and reporting results. Supports REST and GraphQL APIs with authentication, custom headers, request bodies, and structured assertions on status codes, headers, and response payloads.\n\n## Instructions\n\nWhen a user asks you to test or debug an API endpoint, follow these steps:\n\n### Step 1: Gather endpoint details\n\nDetermine from the user or codebase:\n- **URL**: The full endpoint URL\n- **Method**: GET, POST, PUT, PATCH, DELETE\n- **Headers**: Content-Type, Authorization, custom headers\n- **Body**: JSON payload, form data, or query parameters\n- **Auth**: Bearer token, API key, basic auth\n- **Expected response**: Status code, response shape, specific values\n\n### Step 2: Send the request\n\n**Using curl (preferred for quick tests):**\n\n```bash\n# GET request\ncurl -s -w \"\\nHTTP Status: %{http_code}\\nTime: %{time_total}s\\n\" \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  \"https:\u002F\u002Fapi.example.com\u002Fusers?page=1\"\n\n# POST request with JSON\ncurl -s -w \"\\nHTTP Status: %{http_code}\\nTime: %{time_total}s\\n\" \\\n  -X POST \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -d '{\"name\": \"Jane\", \"email\": \"jane@example.com\"}' \\\n  \"https:\u002F\u002Fapi.example.com\u002Fusers\"\n```\n\n**Using Python (for complex flows):**\n\n```python\nimport requests\nimport json\nimport time\n\ndef test_endpoint(method, url, headers=None, body=None, expected_status=200):\n    start = time.time()\n    response = requests.request(method, url, headers=headers, json=body, timeout=30)\n    elapsed = time.time() - start\n\n    result = {\n        \"status\": response.status_code,\n        \"time_ms\": round(elapsed * 1000),\n        \"headers\": dict(response.headers),\n        \"body\": response.json() if response.headers.get(\"content-type\", \"\").startswith(\"application\u002Fjson\") else response.text,\n    }\n\n    passed = response.status_code == expected_status\n    print(f\"{'PASS' if passed else 'FAIL'} | {method} {url} | {response.status_code} | {result['time_ms']}ms\")\n    return result, passed\n```\n\n### Step 3: Validate the response\n\nCheck these in order:\n1. **Status code** matches expected (200, 201, 204, 400, 401, 404, etc.)\n2. **Response time** is acceptable (flag if > 2 seconds)\n3. **Content-Type** header matches expected format\n4. **Response body** structure matches expected schema\n5. **Specific values** match assertions\n\n```python\ndef validate_response(result, assertions):\n    failures = []\n    body = result[\"body\"]\n\n    for field, expected in assertions.items():\n        actual = body\n        for key in field.split(\".\"):\n            if isinstance(actual, dict):\n                actual = actual.get(key)\n            elif isinstance(actual, list) and key.isdigit():\n                actual = actual[int(key)]\n            else:\n                actual = None\n                break\n\n        if actual != expected:\n            failures.append(f\"  {field}: expected {expected!r}, got {actual!r}\")\n\n    return failures\n```\n\n### Step 4: Report results\n\nFormat as a clear test report:\n\n```\nAPI Test Results\n================\nEndpoint: POST \u002Fapi\u002Fusers\nStatus:   201 Created (expected 201) -- PASS\nTime:     142ms\nBody:     Valid JSON, 3 fields\n\nAssertions:\n  [PASS] body.id is present\n  [PASS] body.name == \"Jane\"\n  [PASS] body.email == \"jane@example.com\"\n  [FAIL] body.role expected \"admin\", got \"user\"\n\nResult: 3\u002F4 assertions passed\n```\n\n## Examples\n\n### Example 1: Test a CRUD flow\n\n**User request:** \"Test the users API -- create, read, update, delete\"\n\n**Output:**\n```\nAPI Test Suite: Users CRUD\n==========================\n\n1. POST \u002Fapi\u002Fusers\n   Status: 201 Created -- PASS\n   Time:   156ms\n   Body:   {\"id\": 42, \"name\": \"Test User\", \"email\": \"test@example.com\"}\n\n2. GET \u002Fapi\u002Fusers\u002F42\n   Status: 200 OK -- PASS\n   Time:   38ms\n   Body:   {\"id\": 42, \"name\": \"Test User\", \"email\": \"test@example.com\"}\n\n3. PUT \u002Fapi\u002Fusers\u002F42\n   Status: 200 OK -- PASS\n   Time:   89ms\n   Body:   {\"id\": 42, \"name\": \"Updated Name\", \"email\": \"test@example.com\"}\n\n4. DELETE \u002Fapi\u002Fusers\u002F42\n   Status: 204 No Content -- PASS\n   Time:   45ms\n\n5. GET \u002Fapi\u002Fusers\u002F42 (verify deletion)\n   Status: 404 Not Found -- PASS\n   Time:   22ms\n\nResult: 5\u002F5 PASSED\n```\n\n### Example 2: Debug a failing request\n\n**User request:** \"I'm getting a 401 on POST \u002Fapi\u002Forders, can you figure out why?\"\n\n**Output:**\n```\nDebugging POST \u002Fapi\u002Forders\n===========================\n\nTest 1: No auth header\n  Status: 401 -- Missing Authorization header (expected)\n\nTest 2: With Bearer token\n  Status: 401 -- Response: {\"error\": \"Token expired\"}\n  Note: Token exp claim is 2024-01-15T00:00:00Z (expired)\n\nTest 3: With refreshed token\n  Status: 201 Created -- PASS\n\nRoot cause: Your Bearer token has expired.\nFix: Refresh the token using POST \u002Fapi\u002Fauth\u002Frefresh\n```\n\n## Guidelines\n\n- Never send requests to production APIs unless the user explicitly confirms. Ask first.\n- Mask sensitive values (tokens, passwords, API keys) in output. Show only the last 4 characters.\n- For sequences of dependent requests (create then read), use the response from the first request to build the second.\n- Include response time in reports. Flag responses over 2 seconds as slow.\n- When testing auth flows, test both the happy path and common failure modes (expired token, wrong credentials, missing permissions).\n- For GraphQL, use POST with the query in the JSON body and validate the `data` field separately from `errors`.\n- If an endpoint returns pagination, test the first page and mention the total count.\n- Always set a timeout (30 seconds) to avoid hanging on unresponsive endpoints.\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FTerminalSkills\u002Fskills\u002Fapi-tester",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill api-tester",{"tool":50,"command":51},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill api-tester",{"tool":53,"command":54},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill api-tester","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Fapi-tester\u002FSKILL.md",true,[58,64,68,72,76,80,84,88,92,98,102,106,110,114,118,122,126,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264],{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"assets\u002FBOND-template.md","ASSET","资产文件",344,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002FBOND-template.md",{"path":65,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":66,"sourceHtmlUrl":67},"assets\u002FCAPABILITIES-template.md",907,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002FCAPABILITIES-template.md",{"path":69,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":70,"sourceHtmlUrl":71},"assets\u002Fcapability-authoring-template.md",3798,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002Fcapability-authoring-template.md",{"path":73,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":74,"sourceHtmlUrl":75},"assets\u002FCREED-template.md",1367,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002FCREED-template.md",{"path":77,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":78,"sourceHtmlUrl":79},"assets\u002Fcustomize-template.toml",2394,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002Fcustomize-template.toml",{"path":81,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":82,"sourceHtmlUrl":83},"assets\u002Ffirst-breath-config-template.md",3316,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002Ffirst-breath-config-template.md",{"path":85,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":86,"sourceHtmlUrl":87},"assets\u002Ffirst-breath-template.md",8364,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002Ffirst-breath-template.md",{"path":89,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":90,"sourceHtmlUrl":91},"assets\u002FINDEX-template.md",634,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002FINDEX-template.md",{"path":93,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":96,"sourceHtmlUrl":97},"assets\u002Finit-sanctum-template.py","SCRIPT","脚本",9509,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002Finit-sanctum-template.py",{"path":99,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":100,"sourceHtmlUrl":101},"assets\u002Fmemory-guidance-template.md",4167,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002Fmemory-guidance-template.md",{"path":103,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":104,"sourceHtmlUrl":105},"assets\u002FMEMORY-template.md",523,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002FMEMORY-template.md",{"path":107,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":108,"sourceHtmlUrl":109},"assets\u002FPERSONA-template.md",714,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002FPERSONA-template.md",{"path":111,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":112,"sourceHtmlUrl":113},"assets\u002FPULSE-template.md",1983,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002FPULSE-template.md",{"path":115,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":116,"sourceHtmlUrl":117},"assets\u002Fsample-customize-analyst.toml",3544,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002Fsample-customize-analyst.toml",{"path":119,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":120,"sourceHtmlUrl":121},"assets\u002FSKILL-template-bootloader.md",3619,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002FSKILL-template-bootloader.md",{"path":123,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":124,"sourceHtmlUrl":125},"assets\u002FSKILL-template.md",3867,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fassets\u002FSKILL-template.md",{"path":127,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":130,"sourceHtmlUrl":131},"references\u002Fagent-type-guidance.md","REFERENCE","参考文档",6031,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fagent-type-guidance.md",{"path":133,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":134,"sourceHtmlUrl":135},"references\u002Fbuild-process.md",24032,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fbuild-process.md",{"path":137,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":138,"sourceHtmlUrl":139},"references\u002Fedit-guidance.md",5955,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fedit-guidance.md",{"path":141,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":142,"sourceHtmlUrl":143},"references\u002Ffirst-breath-adaptation-guidance.md",6669,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Ffirst-breath-adaptation-guidance.md",{"path":145,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":146,"sourceHtmlUrl":147},"references\u002Fmission-writing-guidance.md",3890,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fmission-writing-guidance.md",{"path":149,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":150,"sourceHtmlUrl":151},"references\u002Fquality-analysis.md",7628,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fquality-analysis.md",{"path":153,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":154,"sourceHtmlUrl":155},"references\u002Fquality-dimensions.md",6001,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fquality-dimensions.md",{"path":157,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":158,"sourceHtmlUrl":159},"references\u002Fquality-scan-agent-cohesion.md",9062,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fquality-scan-agent-cohesion.md",{"path":161,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":162,"sourceHtmlUrl":163},"references\u002Fquality-scan-customization-surface.md",11355,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fquality-scan-customization-surface.md",{"path":165,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":166,"sourceHtmlUrl":167},"references\u002Fquality-scan-enhancement-opportunities.md",15800,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fquality-scan-enhancement-opportunities.md",{"path":169,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":170,"sourceHtmlUrl":171},"references\u002Fquality-scan-execution-efficiency.md",9069,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fquality-scan-execution-efficiency.md",{"path":173,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":174,"sourceHtmlUrl":175},"references\u002Fquality-scan-prompt-craft.md",19840,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fquality-scan-prompt-craft.md",{"path":177,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":178,"sourceHtmlUrl":179},"references\u002Fquality-scan-sanctum-architecture.md",9296,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fquality-scan-sanctum-architecture.md",{"path":181,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":182,"sourceHtmlUrl":183},"references\u002Fquality-scan-script-opportunities.md",11704,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fquality-scan-script-opportunities.md",{"path":185,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":186,"sourceHtmlUrl":187},"references\u002Fquality-scan-structure.md",13245,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fquality-scan-structure.md",{"path":189,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":190,"sourceHtmlUrl":191},"references\u002Freport-quality-scan-creator.md",13001,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Freport-quality-scan-creator.md",{"path":193,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":194,"sourceHtmlUrl":195},"references\u002Fsample-capability-authoring.md",3833,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fsample-capability-authoring.md",{"path":197,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":198,"sourceHtmlUrl":199},"references\u002Fsample-capability-prompt.md",4107,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fsample-capability-prompt.md",{"path":201,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":202,"sourceHtmlUrl":203},"references\u002Fsample-first-breath.md",9256,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fsample-first-breath.md",{"path":205,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":206,"sourceHtmlUrl":207},"references\u002Fsample-init-sanctum.py",9452,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fsample-init-sanctum.py",{"path":209,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":210,"sourceHtmlUrl":211},"references\u002Fsample-memory-guidance.md",4250,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fsample-memory-guidance.md",{"path":213,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":214,"sourceHtmlUrl":215},"references\u002Fscript-opportunities-reference.md",13331,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fscript-opportunities-reference.md",{"path":217,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":218,"sourceHtmlUrl":219},"references\u002Fscript-standards.md",4458,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fscript-standards.md",{"path":221,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":222,"sourceHtmlUrl":223},"references\u002Fskill-best-practices.md",10076,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fskill-best-practices.md",{"path":225,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":226,"sourceHtmlUrl":227},"references\u002Fstandard-fields.md",10999,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fstandard-fields.md",{"path":229,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":230,"sourceHtmlUrl":231},"references\u002Fstanding-order-guidance.md",5665,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Fstanding-order-guidance.md",{"path":233,"resourceType":128,"resourceTypeDesc":129,"sizeBytes":234,"sourceHtmlUrl":235},"references\u002Ftemplate-substitution-rules.md",4957,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Freferences\u002Ftemplate-substitution-rules.md",{"path":237,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":238,"sourceHtmlUrl":239},"scripts\u002Fgenerate-html-report.py",26127,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fscripts\u002Fgenerate-html-report.py",{"path":241,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":242,"sourceHtmlUrl":243},"scripts\u002Fprepass-execution-deps.py",11713,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fscripts\u002Fprepass-execution-deps.py",{"path":245,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":246,"sourceHtmlUrl":247},"scripts\u002Fprepass-prompt-metrics.py",15352,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fscripts\u002Fprepass-prompt-metrics.py",{"path":249,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":250,"sourceHtmlUrl":251},"scripts\u002Fprepass-sanctum-architecture.py",13029,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fscripts\u002Fprepass-sanctum-architecture.py",{"path":253,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":254,"sourceHtmlUrl":255},"scripts\u002Fprepass-structure-capabilities.py",17043,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fscripts\u002Fprepass-structure-capabilities.py",{"path":257,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":258,"sourceHtmlUrl":259},"scripts\u002Fprocess-template.py",5859,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fscripts\u002Fprocess-template.py",{"path":261,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":262,"sourceHtmlUrl":263},"scripts\u002Fscan-path-standards.py",11960,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fscripts\u002Fscan-path-standards.py",{"path":265,"resourceType":94,"resourceTypeDesc":95,"sizeBytes":266,"sourceHtmlUrl":267},"scripts\u002Fscan-scripts.py",26898,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.pi\u002Fskills\u002Fbmad-agent-builder\u002Fscripts\u002Fscan-scripts.py",[269,281,291,300,306,313],{"skillNo":270,"name":271,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":272,"categories":273,"keywords":277,"publishedAt":31},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[274],{"categoryNo":275,"categoryName":276,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[278,279,280],"model","model hierarchy","model hierarchy skill",{"skillNo":282,"name":283,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":284,"categories":285,"keywords":287,"publishedAt":31},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[286],{"categoryNo":275,"categoryName":276,"taxonomyType":20,"taxonomyTypeDesc":21},[288,289,290],"MCP","zoom","zoom mcp",{"skillNo":292,"name":293,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":294,"categories":295,"keywords":296,"publishedAt":31},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[297,298,299,289],"sdk","zoom apps sdk","apps",{"skillNo":301,"name":302,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":303,"categories":304,"keywords":305,"publishedAt":31},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[302],{"skillNo":307,"name":308,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":309,"categories":310,"keywords":312,"publishedAt":31},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[311],{"categoryNo":275,"categoryName":276,"taxonomyType":20,"taxonomyTypeDesc":21},[308],{"skillNo":314,"name":315,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":316,"categories":317,"keywords":318,"publishedAt":31},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[315]]