[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CT6Y4KS52GJBV9WR2TJMM2":3,"skill-same:01M6CT6Y4KS52GJBV9WR2TJMM2":66},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6CT6Y4KS52GJBV9WR2TJMM2","api-tester-playbook",null,"Writes an API test playbook covering contracts, authentication, pagination and error handling. Use when building or reviewing API tests.","vibbs\u002Fcompany-os","vibbs","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7379149?v=4","01M6CT6M03CAS1H7RA89F3965B","Vibbs Dod","01M6CT6M4MY60C9FFQ3AAR2RSK",6,"MIT","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fapi-tester-playbook\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,31,32,33,34,35,36,37,38],"playbook","api","tester","api tester playbook","test","error handling","authentication","use","pagination","contracts","2026-11-10 10:12:30",false,"---\nname: api-tester-playbook\ndescription: Writes an API test playbook covering contracts, authentication, pagination and error handling. Use when building or reviewing API tests.\nuser-invocable: false\n---\n\n# API Tester Playbook\n\n## Reference\n- **ID**: S-QA-02\n- **Category**: QA\n- **Inputs**: API specification (OpenAPI\u002FSwagger), auth model, endpoint inventory\n- **Outputs**: API test playbook → artifacts\u002Fqa\u002F\n- **Used by**: QA Agent\n- **Tool scripts**: .\u002Ftools\u002Fartifact\u002Fvalidate.sh, .\u002Ftools\u002Fqa\u002Fcontract-test.sh\n\n## Purpose\nProduces a structured API testing playbook that covers contract testing, authentication and authorization edge cases, pagination correctness, rate limiting behavior, and error response validation for every endpoint.\n\n## Procedure\n1. Collect the API specification (OpenAPI\u002FSwagger) or endpoint inventory.\n2. For each endpoint, generate contract tests: verify response shape matches the schema.\n3. Design authentication tests: valid tokens, expired tokens, missing tokens, wrong scopes.\n4. Design authorization tests: tenant isolation, role-based access, resource ownership.\n5. Design pagination tests: first page, last page, empty results, invalid cursors, page size limits.\n6. Design error handling tests: 400 (bad input), 404 (not found), 409 (conflict), 429 (rate limit), 500 (server error).\n7. Design idempotency tests for mutating endpoints (POST, PUT, DELETE).\n8. Define expected response headers (CORS, cache-control, rate-limit headers).\n9. Organize tests into a runnable playbook with setup\u002Fteardown steps.\n10. Save the playbook to `artifacts\u002Fqa\u002F`.\n11. Validate the artifact using `.\u002Ftools\u002Fartifact\u002Fvalidate.sh`.\n\n### Test Scaffold Generation\n\nAfter producing the playbook document, generate actual test file scaffolds:\n\n1. Read `tech_stack.test_framework` and `tech_stack.language` from `company.config.yaml`\n2. Generate test files based on stack:\n   - **TypeScript + Jest\u002FVitest**: `tests\u002Fintegration\u002Fapi\u002F\u003Cendpoint>.test.ts`\n   - **Python + pytest**: `tests\u002Fapi\u002Ftest_\u003Cendpoint>.py`\n   - **Go + testing**: `internal\u002F\u003Cpackage>\u002F\u003Cendpoint>_test.go`\n3. Each test file includes: setup\u002Fteardown, auth helper, one happy-path test, one error test\n4. Run `.\u002Ftools\u002Fqa\u002Fcontract-test.sh \u003Cspec> \u003Curl>` to validate against API spec\n\nThe playbook document remains as a companion artifact in `artifacts\u002Ftest-plans\u002F`.\n\n## Quality Checklist\n- [ ] Every endpoint has contract tests\n- [ ] Auth edge cases (expired, missing, wrong scope) are covered\n- [ ] Authorization boundaries are tested (tenant isolation, RBAC)\n- [ ] Pagination is tested for boundary conditions\n- [ ] Error responses match documented status codes and shapes\n- [ ] Mutating endpoints have idempotency tests\n- [ ] Rate limiting behavior is validated\n- [ ] Artifact passes validation\n","# API Tester Playbook\n\n## Reference\n- **ID**: S-QA-02\n- **Category**: QA\n- **Inputs**: API specification (OpenAPI\u002FSwagger), auth model, endpoint inventory\n- **Outputs**: API test playbook → artifacts\u002Fqa\u002F\n- **Used by**: QA Agent\n- **Tool scripts**: .\u002Ftools\u002Fartifact\u002Fvalidate.sh, .\u002Ftools\u002Fqa\u002Fcontract-test.sh\n\n## Purpose\nProduces a structured API testing playbook that covers contract testing, authentication and authorization edge cases, pagination correctness, rate limiting behavior, and error response validation for every endpoint.\n\n## Procedure\n1. Collect the API specification (OpenAPI\u002FSwagger) or endpoint inventory.\n2. For each endpoint, generate contract tests: verify response shape matches the schema.\n3. Design authentication tests: valid tokens, expired tokens, missing tokens, wrong scopes.\n4. Design authorization tests: tenant isolation, role-based access, resource ownership.\n5. Design pagination tests: first page, last page, empty results, invalid cursors, page size limits.\n6. Design error handling tests: 400 (bad input), 404 (not found), 409 (conflict), 429 (rate limit), 500 (server error).\n7. Design idempotency tests for mutating endpoints (POST, PUT, DELETE).\n8. Define expected response headers (CORS, cache-control, rate-limit headers).\n9. Organize tests into a runnable playbook with setup\u002Fteardown steps.\n10. Save the playbook to `artifacts\u002Fqa\u002F`.\n11. Validate the artifact using `.\u002Ftools\u002Fartifact\u002Fvalidate.sh`.\n\n### Test Scaffold Generation\n\nAfter producing the playbook document, generate actual test file scaffolds:\n\n1. Read `tech_stack.test_framework` and `tech_stack.language` from `company.config.yaml`\n2. Generate test files based on stack:\n   - **TypeScript + Jest\u002FVitest**: `tests\u002Fintegration\u002Fapi\u002F\u003Cendpoint>.test.ts`\n   - **Python + pytest**: `tests\u002Fapi\u002Ftest_\u003Cendpoint>.py`\n   - **Go + testing**: `internal\u002F\u003Cpackage>\u002F\u003Cendpoint>_test.go`\n3. Each test file includes: setup\u002Fteardown, auth helper, one happy-path test, one error test\n4. Run `.\u002Ftools\u002Fqa\u002Fcontract-test.sh \u003Cspec> \u003Curl>` to validate against API spec\n\nThe playbook document remains as a companion artifact in `artifacts\u002Ftest-plans\u002F`.\n\n## Quality Checklist\n- [ ] Every endpoint has contract tests\n- [ ] Auth edge cases (expired, missing, wrong scope) are covered\n- [ ] Authorization boundaries are tested (tenant isolation, RBAC)\n- [ ] Pagination is tested for boundary conditions\n- [ ] Error responses match documented status codes and shapes\n- [ ] Mutating endpoints have idempotency tests\n- [ ] Rate limiting behavior is validated\n- [ ] Artifact passes validation\n",{"name":5,"description":7,"user-invocable":40},"main","e842fb6d0e04360c47db78bc2e2e2987314d64d4",".claude\u002Fskills\u002Fapi-tester-playbook",2,"https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os","https:\u002F\u002Fgithub.com\u002Fvibbs","Principal Engineer · Applied AI · building ArcAI @ GrowthArc","2026-10-21 02:08:08",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add vibbs\u002Fcompany-os --skill api-tester-playbook",{"tool":58,"command":59},"bunx","bunx skills add vibbs\u002Fcompany-os --skill api-tester-playbook",{"tool":61,"command":62},"pnpm","pnpm dlx skills add vibbs\u002Fcompany-os --skill api-tester-playbook","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fapi-tester-playbook\u002FSKILL.md",true,[],[67,76,84,94,110,126],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":39},"01M6CTHBW1E64ECYGD105N4S5E","typo-field","Fixture skill with a misspelled top-level field.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Ftypo-field\u002FSKILL.md",[],[74,75],"typo field","fixture skill",{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":39},"01M6CTHABTV8FKVDHFMMKPAV51","spaced-comments","Fixture skill with comments and spaces after block keys.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fspaced-comments\u002FSKILL.md",[],[83,75],"spaced comments",{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":39},"01M6CTH8MHC14KB65ZDHYBJW1N","crlf-comments","Fixture skill with Windows line endings.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fcrlf-comments\u002FSKILL.md",[],[91,92,93,75],"crlf comments","CRLF","windows",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":39},"01M6CTH6TBKTDP9G8QB1Z2K0TY","claude-fields","Fixture skill using top-level fields Claude Code documents.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fclaude-fields\u002FSKILL.md",[],[101,102,103,104,105,106,75,107,108,109],"claude fields","explore","documents","src","grep","read","Bash","code","testing",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":119,"publishedAt":39},"01M6CTH46BGKXH80RWS876Y2CW","workflow-router","Maps an objective to the artifacts, stages and agents it needs. Use when deciding what happens next or which agents to involve.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Fos\u002Fskills\u002Fworkflow-router\u002FSKILL.md",[116],{"categoryNo":117,"categoryName":118,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[120,121,122,123,124,36,125],"workflow","router","workflow router","next","maps","artifacts",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":39},"01M6CTH27653SRVP2FMEQN3J5B","weekly-review","Summarizes your week: what shipped, AI spend, support themes, security health and next priorities. Use at the end of each week.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Fos\u002Fskills\u002Fweekly-review\u002FSKILL.md",[],[133,134,135,123,36,136,137,138,139],"weekly review","review","priorities","health","save","support","security"]