[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PF8VR814XFRB5NFC38QGBN":3,"skill-same:01M6PF8VR814XFRB5NFC38QGBN":46},{"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":17,"publishedAt":21,"linkOnly":22,"markdownContent":23,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":6,"ownerHtmlUrl":30,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":31,"install":32,"resources":45},"01M6PF8VR814XFRB5NFC38QGBN","fleet-doctor",null,"sandraschi\u002Fdocumentation-mcp","sandraschi","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F34750307?v=4","01M6C42H9WE5EC9CK3N5RGZP8S","Sandra Schipal","01M6PE1X2FZP8KR5GANPPFTHA8",2,"MIT","https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp\u002Fblob\u002Fmaster\u002Fdocs\u002Fskills\u002Ffleet-doctor\u002FSKILL.md",[],[18,19,20],"doctor","fleet","fleet doctor","2026-11-10 10:12:30",false,"# Fleet Doctor — SOTA Compliance Pipeline\n\nYou are the **Fleet Doctor**, a skill that knows how to bring any MCP server repo in the fleet to full SOTA compliance. You have access to the fleet repos at `D:\\Dev\\repos\\{repo}` and the standards in `mcp-central-docs\u002Fstandards\u002F`.\n\n## The SOTA Checklist\n\nWhen given a repo name, run through this checklist in order:\n\n### Phase 1: Triage (read-only)\n\n1. **Lint**: `ruff check src\u002F` — count issues, categorize by rule\n2. **Prompts**: `ls mcpb\u002Fassets\u002Fprompts\u002F` — word count `system.md`, `user.md`, entries count `examples.json`\n3. **fastmcp**: `pyproject.toml` — fastmcp version constraint\n4. **MCPB**: `ls mcpb\u002F` — manifest.json tool count, mcpbignore quality\n5. **Tauri\u002FNSIS**: `ls native\u002F` — tauri.conf.json exists, hooks.nsh exists\n6. **Discovery**: `ls glama.json llms.txt llms-full.txt` — all three present?\n7. **Tests**: Count test files and approximate test count\n\n### Phase 2: Lint Green (fix, never hide)\n\n**No `ruff --add-noqa` ever.** Every issue must be actually fixed.\n\n| Rule | Fix Strategy |\n|------|-------------|\n| `F401` unused import | Remove it. If it's a re-export in `__init__.py`, add `__all__`. |\n| `E402` import ordering | Move imports before `logger = ...`. Move logger to last import. |\n| `S110` try\u002Fexcept\u002Fpass | Replace with `logger.debug(\"...\")` or `contextlib.suppress()`. |\n| `A002` builtin shadow | Rename `id→item_id`, `type→item_type`, `format→fmt`, `help→help_func`. |\n| `PTH` pathlib | `os.path.join(a,b)` → `Path(a)\u002Fb`. `os.path.exists(p)` → `Path(p).exists()`. |\n| `S603` subprocess | Convert to list args. Create a `_cmd()` helper wrapper. |\n| `S311` random | Replace with `time.time_ns() % ...` jitter or `secrets.choice()`. |\n| `S314` XML | Replace `xml.etree.ElementTree` with `defusedxml.ElementTree`. Add dep. |\n| `S324` md5 | Replace with `hashlib.sha256()`. No reason to keep md5. |\n| `B904` raise-from | Add `from err` to bare `raise` in `except` blocks. |\n| `E501` line length | Wrap with parentheses or temp variables. |\n| `UP035` deprecated typing | `typing.List` → `list`, `typing.Optional` → `| None`. |\n| `I001` import sorting | `ruff check --fix src\u002F` handles this. |\n| `E722` bare except | Change `except:` to `except Exception:`. |\n\n**Batch approach**: `ruff check --fix --unsafe-fixes src\u002F` first to get the auto-fixable ones. Then fix remaining categories one at a time. Iterate until zero.\n\n### Phase 3: Prompts (3-4-100 SOTA bar)\n\n| File | Words\u002FEntries | Target |\n|------|------|--------|\n| `mcpb\u002Fassets\u002Fprompts\u002Fsystem.md` | 3,000+ words | All tools documented with params, return types, examples |\n| `mcpb\u002Fassets\u002Fprompts\u002Fuser.md` | 4,000+ words | 12+ tutorials, REST API reference, troubleshooting, FAQ |\n| `mcpb\u002Fassets\u002Fprompts\u002Fexamples.json` | 100+ entries | Every tool with realistic parameter values |\n\nIf the prompts directory doesn't exist, create it. If they're too short, expand them. Each tool must have its purpose, parameters, and return format documented.\n\n### Phase 4: fastmcp Bump\n\n`pyproject.toml`: change `fastmcp>=3.2.0` (or `==3.2.0`) to `fastmcp>=3.4.4`.\n\n### Phase 5: MCPB Build\n\n1. Check `.mcpbignore` excludes: `.venv\u002F`, `node_modules\u002F`, `__pycache__\u002F`, `*.mcpb`, `dist\u002F`, `build\u002F`, `native\u002F`, `webapp\u002F`\u002F`web_sota\u002F`, `scripts\u002F`, `glama.json`, `llms.txt`, `llms-full.txt`\n2. Ensure `mcpb\u002Fmanifest.json` is valid and lists all tools\n3. Build: `scripts\u002Fmcpb-pack.ps1` or `npx @anthropic-ai\u002Fmcpb pack . dist\u002F{repo}-v{ver}.mcpb`\n4. Verify output file exists and `ls -la dist\u002F*.mcpb`\n\n### Phase 6: NSIS Installer\n\n1. **tauri.conf.json**: Set `\"csp\": null`, snake_case keys (`install_mode`, `create_desktop_shortcut`, `installer_hooks`), `\"webviewInstallMode\": {\"type\": \"skip\"}`\n2. **hooks.nsh**: Must have both `NSIS_HOOK_PREINSTALL` and `NSIS_HOOK_PREUNINSTALL` macros with both `taskkill \u002FF \u002FIM` AND `nsis_tauri_utils::KillProcessCurrentUser` fallback\n3. **main.rs**: Add `use tauri::{Emitter, Manager};`, `#[cfg(windows)] use std::os::windows::process::CommandExt;`, fix `app.state::\u003CT>().inner()` or `&*state` deref for `State` arguments, fix `if let Some(mut child)` with `mut`\n4. **backend.exe**: Check `native\u002Fresources\u002F{repo}-backend.exe` exists. If not, build with PyInstaller first.\n5. **Build**: `npx @tauri-apps\u002Fcli build --bundles nsis`\n6. Verify: `ls native\u002Ftarget\u002Frelease\u002Fbundle\u002Fnsis\u002F*.exe`\n\n### Phase 7: Discovery Files\n\nEnsure all three exist at repo root:\n- `llms.txt` — concise LLM index with links to `llms-full.txt`\n- `llms-full.txt` — full corpus: tools, architecture, config, troubleshooting\n- `glama.json` — registry entry with all tools, prompts, resources\n\n### Phase 8: Commit\n\n```bash\ngit add -A && git commit -m \"{repo} SOTA: fix {n} lint, prompts 3-4-100, fastmcp>=3.4.4, nsis fixes, rebuild mcpb\"\ngit push\n```\n\n## Fleet Travel Order\n\nThe repos at `D:\\Dev\\repos\\`. When given a repo, start from Phase 1. Report each phase's result before moving to the next.\n\n## Known Gotchas\n\n- `fastmcp.tool.annotations` does NOT exist in 3.4.2. Use dict format `{\"readonly\": True}` instead.\n- Tauri 2.11+ uses `snake_case` for NSIS config keys, not `camelCase`.\n- Rust `AppHandle::path()` requires `use tauri::Manager;` in scope.\n- `State\u003C'_, T>` implements `Deref\u003CTarget=T>`, pass as `&*state` or `.inner()`.\n- Pre-existing `.bak` files and `__pycache__\u002F` in `mcpb\u002Fsrc\u002F` must be cleaned before building.\n- Some repos have `web_sota\u002F` for frontend, others have `webapp\u002F`. Check both.\n",{},"master","be156301b65e301887f327d08190ed4f17ba08d2","docs\u002Fskills\u002Ffleet-doctor",0,"https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp","https:\u002F\u002Fgithub.com\u002Fsandraschi","2026-11-12 11:03:54",{"source":7,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add sandraschi\u002Fdocumentation-mcp --skill fleet-doctor",{"tool":38,"command":39},"bunx","bunx skills add sandraschi\u002Fdocumentation-mcp --skill fleet-doctor",{"tool":41,"command":42},"pnpm","pnpm dlx skills add sandraschi\u002Fdocumentation-mcp --skill fleet-doctor","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp\u002Fblob\u002Fmaster\u002Fdocs\u002Fskills\u002Ffleet-doctor\u002FSKILL.md",true,[],[47,74,100,110,136,162],{"skillNo":48,"name":49,"nameZh":6,"description":50,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":51,"categories":52,"keywords":61,"publishedAt":21},"01M6PFAWAHEJJCKKVNXEWNK87W","Docs Research","Use MCP Central Docs server to search, ask, and retrieve documentation (FastMCP, standards, packaging).","https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp\u002Fblob\u002Fmaster\u002Fsrc\u002Fdocs_mcp\u002Fskills\u002Fdocs-research\u002FSKILL.md",[53,58],{"categoryNo":54,"categoryName":55,"taxonomyType":56,"taxonomyTypeDesc":57},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",{"categoryNo":59,"categoryName":60,"taxonomyType":56,"taxonomyTypeDesc":57},"01JBSEEDCAT000000000000023","Skill与智能体开发",[62,63,64,65,66,67,68,69,70,71,72,73],"docs research","docs","research","standards","use","packaging","ask","server","search","fastmcp","documentation","MCP",{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":21},"01M6PFAN4DAENMY574Q7Q3CB3H","wrappee-drift","Read-only, single-repo audit of a repo's tool coverage against the software it wraps (its current real API\u002Fdocs, not training-data memory) and against comparable\u002Fcompeting wrappers. Trigger when the user says \"wrappee drift\" followed by a repo name, \"capability audit\" followed by a repo name, or asks whether a repo is missing features the wrapped software or a competitor now has. Always scoped to one named repo per invocation -- never trigger this fleet-wide or unprompted; that is explicitly against the SOP. Do NOT trigger for internal fleet-standard compliance (that is drift-scan) or strategic worth\u002Farchive decisions (that is quality-check) -- this is specifically about the gap between the repo's tool list and the wrapped software's\u002Fcompetitors' actual current capabilities.","https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp\u002Fblob\u002Fmaster\u002Fdocs\u002Fskills\u002Fwrappee-drift\u002FSKILL.md",[],[81,82,83,84,85,86,87,88,89,90,91,19,92,93,94,95,96,97,98,99],"drift","wrappee drift","api","data","audit","capabilities","training","memory","features","repo audit","competitors","now","software","tool list","only","never","coverage","list","read",{"skillNo":101,"name":102,"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":103,"categories":104,"keywords":109,"publishedAt":21},"01M6PFADA3X031SK3W3T6X0N6H","modules","https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp\u002Fblob\u002Fmaster\u002Fdocs\u002Fskills\u002Fwindsurf-mcp-standards\u002Fmodules\u002FSKILL.md",[105,108],{"categoryNo":106,"categoryName":107,"taxonomyType":56,"taxonomyTypeDesc":57},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":59,"categoryName":60,"taxonomyType":56,"taxonomyTypeDesc":57},[102],{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":120,"publishedAt":21},"01M6PFA8YA029N68TW0X31FB1W","mcp-standards","Use when developing MCP servers to access comprehensive standards for scaffolding, packaging, sampling, documentation, testing, error handling, monitoring, and CI\u002FCD workflows.","https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp\u002Fblob\u002Fmaster\u002Fdocs\u002Fskills\u002Fwindsurf-mcp-standards\u002FSKILL.md",[116,119],{"categoryNo":117,"categoryName":118,"taxonomyType":56,"taxonomyTypeDesc":57},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":59,"categoryName":60,"taxonomyType":56,"taxonomyTypeDesc":57},[121,73,65,66,122,123,124,125,126,127,128,129,130,131,132,133,72,134,135,67],"mcp standards","monitoring","sampling","scaffolding","servers","cd","error","for","CI\u002FCD","access","ci","mcp servers","error handling","workflows","testing",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":144,"publishedAt":21},"01M6PFA1XX344WX57B0DJZY94Q","webapp-cua-test","Run the pre-Tauri CUA click-through test (real browser, dev stack, OCR \"Connected\" wait, sidebar nav walk) for a fleet MCP server repo under D:\\Dev\\repos. Trigger when the user says \"cua webapp test\" or \"webapp clickthrough\" followed by a repo name, asks for an e2e click-through of a webapp, or asks whether a webapp boots and connects in a real browser. Not for the installed NSIS app (that is the nsis-build skill \u002F cua-nsis-test) and not for DOM assertions (Playwright), and not for hunting fake data or dead buttons (fakefind).","https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp\u002Fblob\u002Fmaster\u002Fdocs\u002Fskills\u002Fwebapp-cua-test\u002FSKILL.md",[142,143],{"categoryNo":117,"categoryName":118,"taxonomyType":56,"taxonomyTypeDesc":57},{"categoryNo":59,"categoryName":60,"taxonomyType":56,"taxonomyTypeDesc":57},[145,146,147,148,149,73,150,151,152,128,153,154,155,156,157,158,159,160,69,161],"webapp","test","webapp cua test","playwright","mcp server","dev","dom","assertions","trigger","click","app","tauri","repo","stack","e2e","ocr","browser",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":169,"publishedAt":21},"01M6PF9WYF6NWJR7WVN38TT0WH","ship","Final release gate for a fleet MCP server repo under D:\\Dev\\repos -- run all quality gates, build the release artifact, verify it, commit, push, and cut a GitHub release. Trigger this whenever the user says \"ship it\", \"ship\" followed by a repo name, \"release\" followed by a repo name, or asks to finalize and publish work that's already been done in a repo. This is the terminal step after assfix\u002Fnsis-build, not a substitute for them -- if the repo hasn't been assessed recently, say so before shipping rather than shipping blind.","https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp\u002Fblob\u002Fmaster\u002Fdocs\u002Fskills\u002Fship\u002FSKILL.md",[168],{"categoryNo":59,"categoryName":60,"taxonomyType":56,"taxonomyTypeDesc":57},[164,157,128,153,170,171,172,173,174,175,176,69,177,150,178,179,180,149,181,73],"gates","ship it","artifact","done","say","work","publish","push","shipping","quality gates","commit","github"]