[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CR3YWNN9D68Z5FP20D2FDG":3,"skill-same:01M6CR3YWNN9D68Z5FP20D2FDG":53},{"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":18,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":26,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":6,"ownerDescription":38,"updatedAt":39,"install":40,"resources":52},"01M6CR3YWNN9D68Z5FP20D2FDG","sync-docs",null,"Regenerate docs\u002Fsupported_endpoints.md by running utils\u002Fdocs_generate.py and verify it matches current endpoint registrations in app\u002Fmain.py","allenrobel\u002Fnd-mock","allenrobel","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20111332?v=4","01M6CR3RGWSF9VZER2XTEFE0AD","Allen Robel","01M6CR3RMJYKZC0VKZS12NEM4N",1,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fallenrobel\u002Fnd-mock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fsync-docs\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"docs","sync","sync docs","generate","endpoint","verify","endpoints","main","2026-11-10 10:12:30",false,"---\nname: sync-docs\ndescription: Regenerate docs\u002Fsupported_endpoints.md by running utils\u002Fdocs_generate.py and verify it matches current endpoint registrations in app\u002Fmain.py\ndisable-model-invocation: true\n---\n\n`utils\u002Fdocs_generate.py` requires a running server at `localhost:8000` — it fetches `\u002Fopenapi.json` to discover endpoints.\n\nSteps:\n1. Start the server in the background:\n   ```\n   PYTHONPATH=. VIRTUAL_ENV= \u002FUsers\u002Farobel\u002Frepos\u002Fnd-mock\u002F.venv\u002Fbin\u002Fuvicorn app.main:app --port 8000 &>\u002Ftmp\u002Fuvicorn.log &\n   SERVER_PID=$!\n   ```\n2. Wait for it to be ready (`sleep 2` is sufficient), then run the script:\n   ```\n   PYTHONPATH=. VIRTUAL_ENV= \u002FUsers\u002Farobel\u002Frepos\u002Fnd-mock\u002F.venv\u002Fbin\u002Fpython utils\u002Fdocs_generate.py\n   ```\n3. Stop the server:\n   ```\n   kill $SERVER_PID\n   ```\n4. Verify the regenerated `docs\u002Fsupported_endpoints.md` covers all tag groups and routers registered via `app.include_router()` in `app\u002Fmain.py`.\n","`utils\u002Fdocs_generate.py` requires a running server at `localhost:8000` — it fetches `\u002Fopenapi.json` to discover endpoints.\n\nSteps:\n1. Start the server in the background:\n   ```\n   PYTHONPATH=. VIRTUAL_ENV= \u002FUsers\u002Farobel\u002Frepos\u002Fnd-mock\u002F.venv\u002Fbin\u002Fuvicorn app.main:app --port 8000 &>\u002Ftmp\u002Fuvicorn.log &\n   SERVER_PID=$!\n   ```\n2. Wait for it to be ready (`sleep 2` is sufficient), then run the script:\n   ```\n   PYTHONPATH=. VIRTUAL_ENV= \u002FUsers\u002Farobel\u002Frepos\u002Fnd-mock\u002F.venv\u002Fbin\u002Fpython utils\u002Fdocs_generate.py\n   ```\n3. Stop the server:\n   ```\n   kill $SERVER_PID\n   ```\n4. Verify the regenerated `docs\u002Fsupported_endpoints.md` covers all tag groups and routers registered via `app.include_router()` in `app\u002Fmain.py`.\n",{"name":5,"description":7,"disable-model-invocation":32},true,"aae8bce80d5d6b6a593ad993fdad26d531db8318",".claude\u002Fskills\u002Fsync-docs",0,"https:\u002F\u002Fgithub.com\u002Fallenrobel\u002Fnd-mock","https:\u002F\u002Fgithub.com\u002Fallenrobel","I work @cisco during the day.  At night, I write iOS apps and noodle with a guitar.","2026-03-08 08:19:02",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":32},[42,45,48],{"tool":43,"command":44},"npx","npx skills add allenrobel\u002Fnd-mock --skill sync-docs",{"tool":46,"command":47},"bunx","bunx skills add allenrobel\u002Fnd-mock --skill sync-docs",{"tool":49,"command":50},"pnpm","pnpm dlx skills add allenrobel\u002Fnd-mock --skill sync-docs","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fallenrobel\u002Fnd-mock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fsync-docs\u002FSKILL.md",[],[54,72],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":65,"publishedAt":27},"01M6CR3WT12V3FJWWZK2K6XCP5","gen-test","Generate unit tests for nd-mock API endpoints","https:\u002F\u002Fgithub.com\u002Fallenrobel\u002Fnd-mock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgen-test\u002FSKILL.md",[60],{"categoryNo":61,"categoryName":62,"taxonomyType":63,"taxonomyTypeDesc":64},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[66,67,68,25,69,23,70,22,71],"gen test","test","manage","api","fabric","unit tests",{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":27},"01M6CR3T32P5NK7HDS33J8NEY4","add-endpoint","Scaffold a new API endpoint with models, router, main.py registration, and test stubs based on schema\u002Fmanage.json or schema\u002Finfra.json definitions","https:\u002F\u002Fgithub.com\u002Fallenrobel\u002Fnd-mock\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fadd-endpoint\u002FSKILL.md",[],[23,79,26,80,67,81,68,82,83,84,85,86,69,87],"add endpoint","infra","registration","api endpoint","models","router","schema","json","scaffold"]