fleet-doctor
暂无简介
- License 许可
- MIT
- 最近更新
- 2026-11-12
- Stars
- ★ 2
- Forks
- 0
03 SKILL.md 正文
Fleet Doctor — SOTA Compliance Pipeline
You 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/standards/.
The SOTA Checklist
When given a repo name, run through this checklist in order:
Phase 1: Triage (read-only)
- Lint:
ruff check src/— count issues, categorize by rule - Prompts:
ls mcpb/assets/prompts/— word countsystem.md,user.md, entries countexamples.json - fastmcp:
pyproject.toml— fastmcp version constraint - MCPB:
ls mcpb/— manifest.json tool count, mcpbignore quality - Tauri/NSIS:
ls native/— tauri.conf.json exists, hooks.nsh exists - Discovery:
ls glama.json llms.txt llms-full.txt— all three present? - Tests: Count test files and approximate test count
Phase 2: Lint Green (fix, never hide)
No ruff --add-noqa ever. Every issue must be actually fixed.
| Rule | Fix Strategy |
|---|---|
F401 unused import |
Remove it. If it's a re-export in __init__.py, add __all__. |
E402 import ordering |
Move imports before logger = .... Move logger to last import. |
S110 try/except/pass |
Replace with logger.debug("...") or contextlib.suppress(). |
A002 builtin shadow |
Rename id→item_id, type→item_type, format→fmt, help→help_func. |
PTH pathlib |
os.path.join(a,b) → Path(a)/b. os.path.exists(p) → Path(p).exists(). |
S603 subprocess |
Convert to list args. Create a _cmd() helper wrapper. |
S311 random |
Replace with time.time_ns() % ... jitter or secrets.choice(). |
S314 XML |
Replace xml.etree.ElementTree with defusedxml.ElementTree. Add dep. |
S324 md5 |
Replace with hashlib.sha256(). No reason to keep md5. |
B904 raise-from |
Add from err to bare raise in except blocks. |
E501 line length |
Wrap with parentheses or temp variables. |
UP035 deprecated typing |
typing.List → list, typing.Optional → ` |
I001 import sorting |
ruff check --fix src/ handles this. |
E722 bare except |
Change except: to except Exception:. |
Batch approach: ruff check --fix --unsafe-fixes src/ first to get the auto-fixable ones. Then fix remaining categories one at a time. Iterate until zero.
Phase 3: Prompts (3-4-100 SOTA bar)
| File | Words/Entries | Target |
|---|---|---|
mcpb/assets/prompts/system.md |
3,000+ words | All tools documented with params, return types, examples |
mcpb/assets/prompts/user.md |
4,000+ words | 12+ tutorials, REST API reference, troubleshooting, FAQ |
mcpb/assets/prompts/examples.json |
100+ entries | Every tool with realistic parameter values |
If 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.
Phase 4: fastmcp Bump
pyproject.toml: change fastmcp>=3.2.0 (or ==3.2.0) to fastmcp>=3.4.4.
Phase 5: MCPB Build
- Check
.mcpbignoreexcludes:.venv/,node_modules/,__pycache__/,*.mcpb,dist/,build/,native/,webapp//web_sota/,scripts/,glama.json,llms.txt,llms-full.txt - Ensure
mcpb/manifest.jsonis valid and lists all tools - Build:
scripts/mcpb-pack.ps1ornpx @anthropic-ai/mcpb pack . dist/{repo}-v{ver}.mcpb - Verify output file exists and
ls -la dist/*.mcpb
Phase 6: NSIS Installer
- tauri.conf.json: Set
"csp": null, snake_case keys (install_mode,create_desktop_shortcut,installer_hooks),"webviewInstallMode": {"type": "skip"} - hooks.nsh: Must have both
NSIS_HOOK_PREINSTALLandNSIS_HOOK_PREUNINSTALLmacros with bothtaskkill /F /IMANDnsis_tauri_utils::KillProcessCurrentUserfallback - main.rs: Add
use tauri::{Emitter, Manager};,#[cfg(windows)] use std::os::windows::process::CommandExt;, fixapp.state::<T>().inner()or&*statederef forStatearguments, fixif let Some(mut child)withmut - backend.exe: Check
native/resources/{repo}-backend.exeexists. If not, build with PyInstaller first. - Build:
npx @tauri-apps/cli build --bundles nsis - Verify:
ls native/target/release/bundle/nsis/*.exe
Phase 7: Discovery Files
Ensure all three exist at repo root:
llms.txt— concise LLM index with links tollms-full.txtllms-full.txt— full corpus: tools, architecture, config, troubleshootingglama.json— registry entry with all tools, prompts, resources
Phase 8: Commit
git add -A && git commit -m "{repo} SOTA: fix {n} lint, prompts 3-4-100, fastmcp>=3.4.4, nsis fixes, rebuild mcpb"
git push
Fleet Travel Order
The repos at D:\Dev\repos\. When given a repo, start from Phase 1. Report each phase's result before moving to the next.
Known Gotchas
fastmcp.tool.annotationsdoes NOT exist in 3.4.2. Use dict format{"readonly": True}instead.- Tauri 2.11+ uses
snake_casefor NSIS config keys, notcamelCase. - Rust
AppHandle::path()requiresuse tauri::Manager;in scope. State<'_, T>implementsDeref<Target=T>, pass as&*stateor.inner().- Pre-existing
.bakfiles and__pycache__/inmcpb/src/must be cleaned before building. - Some repos have
web_sota/for frontend, others havewebapp/. Check both.
04 同仓库更多 Skills
Docs Research
Use MCP Central Docs server to search, ask, and retrieve documentation (FastMCP, standards, packaging).
wrappee-drift
Read-only, single-repo audit of a repo's tool coverage against the software it wraps (its current real API/docs, not training-data memory) and against comparable/competing 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/archive decisions (that is quality-check) -- this is specifically about the gap between the repo's tool list and the wrapped software's/competitors' actual current capabilities.
modules
暂无简介
mcp-standards
Use when developing MCP servers to access comprehensive standards for scaffolding, packaging, sampling, documentation, testing, error handling, monitoring, and CI/CD workflows.
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 / cua-nsis-test) and not for DOM assertions (Playwright), and not for hunting fake data or dead buttons (fakefind).
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/nsis-build, not a substitute for them -- if the repo hasn't been assessed recently, say so before shipping rather than shipping blind.