[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PF9AQHN04HMDWYK2DBGPPE":3,"skill-same:01M6PF9AQHN04HMDWYK2DBGPPE":51},{"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":22,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":6,"ownerHtmlUrl":35,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":36,"install":37,"resources":50},"01M6PF9AQHN04HMDWYK2DBGPPE","mcp-builder",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\u002Fmcp-builder\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25],"MCP","mcp builder","builder","2026-11-10 10:12:30",false,"# MCP Builder Skill — Goliath Fleet Standard\n# FastMCP 3.2.4 | Starlette 1.0 | Sandra's Fleet | 2026-05-04\n#\n# INSTALLATION (Claude Desktop skills):\n#   Copy this file to: C:\\Users\\\u003Cuser>\\AppData\\Roaming\\Claude\\skills\\mcp-builder\\SKILL.md\n#   OR place at: D:\\Dev\\repos\\mcp-central-docs\\skills\\mcp-builder\\SKILL.md\n#   and symlink \u002F reference from Claude Desktop skills config.\n#\n# This skill auto-loads when Claude detects MCP server build\u002Fscaffold\u002Fport tasks.\n\n## TRIGGER CONDITIONS\nLoad this skill when the task involves any of:\n- \"create\u002Fscaffold\u002Fbuild a new MCP server\"\n- \"add a tool\u002Fendpoint to [repo]-mcp\"\n- \"what port should I use\"\n- \"start.ps1 for new server\"\n- \"FastMCP\" appearing in a coding task\n- \"write a SKILL.md\" or \"create a skill\"\n- Dockerfile for a Python MCP container\n\n---\n\n## FLEET IDENTITY\n\n- GitHub: sandraschi\n- Repos root: `D:\\Dev\\repos\\`\n- Fleet info depot (aka \"mcd\"): `D:\\Dev\\repos\\mcp-central-docs\\`\n- Port registry: `D:\\Dev\\repos\\mcp-central-docs\\operations\\WEBAPP_PORTS.md`\n- Fleet index: `D:\\Dev\\repos\\mcp-central-docs\\projects\\FLEET_INDEX.md`\n- Standards: `D:\\Dev\\repos\\mcp-central-docs\\standards\\`\n\n**Before creating any new MCP server:** read WEBAPP_PORTS.md to find the next free port pair. Never guess. Never use 3000\u002F5000\u002F5173\u002F8000\u002F8080.\n\n---\n\n## FASTMCP 3.2.4 — CANONICAL PATTERNS\n\n### SOTA as of 2026-07-17\n```\nfastmcp>=3.4.4,\u003C4\n```\n\nKey 3.2 additions over 3.1:\n- `GenerativeUI` provider, `prefab-ui>=0.18.0`\n- `@mcp.tool(app=True)` returns `PrefabApp` directly (not wrapped in `ToolResult`)\n- `mcp.http_app(path=\"\u002F\")` replaces `mcp.sse_app()` for ASGI mounting\n- `fastmcp dev apps` browser preview\n- Security fixes: SSRF\u002Fpath traversal (GHSA-vv7q-7jx5-f767), PyJWT CVE-2026-32597\n\nKey 3.1 additions (still current):\n- CodeMode (BM25 tool discovery) — `@mcp.tool()` with `description=` auto-indexes\n- `@mcp.prompt()` for prompt templates\n- `@mcp.resource()` for resource endpoints\n- `ctx.sample()` for agentic sampling (SEP-1577)\n- Prefab UI DSL (Python → React)\n- `SearchTools` standalone transform\n- Lazy imports\n\n### Minimal server template\n\n```python\n\"\"\"[repo-name] MCP Server — [one line description].\"\"\"\nfrom fastmcp import FastMCP, Context\nfrom starlette.applications import Starlette\nfrom starlette.routing import Mount\nimport uvicorn\n\nmcp = FastMCP(\"[ServerName]\", version=\"0.1.0\")\n\n@mcp.tool()\nasync def my_tool(param: str, ctx: Context) -> dict:\n    \"\"\"Tool description — appears in CodeMode BM25 index.\"\"\"\n    return {\"result\": param}\n\n# Mount MCP under \u002Fmcp on the Starlette app (Starlette 1.0 pattern)\napp = Starlette(routes=[Mount(\"\u002Fmcp\", mcp.http_app(path=\"\u002F\"))])\n\nif __name__ == \"__main__\":\n    uvicorn.run(app, host=\"0.0.0.0\", port=BACKEND_PORT)\n```\n\n### NEVER do this (anti-patterns)\n```python\n# WRONG — FastMCP 3.1 API, broken in 3.2\nStreamingResponse(mcp.sse_app())\n\n# WRONG — FastAPI\u002FPydantic (fleet standard is Starlette + plain dicts)\nfrom fastapi import FastAPI\nfrom pydantic import BaseModel\n\n# WRONG — old decorator-call pattern (works but verbose)\nmcp.tool()(my_function)\n\n# WRONG — task=True on tool decorators (invalid, causes startup error)\n@mcp.tool(task=True)\n```\n\n### Prefab UI (3.2)\n```python\nfrom fastmcp.contrib.prefab import PrefabApp, DataTable, Dashboard, Metric\n\n@mcp.tool(app=True)\nasync def my_dashboard() -> PrefabApp:\n    return Dashboard(title=\"Status\", metrics=[\n        Metric(label=\"Uptime\", value=\"99.9%\"),\n    ])\n```\n\n---\n\n## STARLETTE STANDARD (mandatory for new webapps)\n\nAll new MCP server webapps use **Starlette 1.0 + plain dicts**. No FastAPI. No Pydantic models.\n\n```python\nfrom starlette.applications import Starlette\nfrom starlette.routing import Route, Mount\nfrom starlette.requests import Request\nfrom starlette.responses import JSONResponse\nfrom starlette.staticfiles import StaticFiles\n\nasync def health(request: Request) -> JSONResponse:\n    return JSONResponse({\"status\": \"healthy\", \"version\": \"0.1.0\"})\n\nasync def api_status(request: Request) -> JSONResponse:\n    data = await request.json()\n    return JSONResponse({\"ok\": True, \"received\": data})\n\napp = Starlette(routes=[\n    Route(\"\u002Fhealth\", health),\n    Route(\"\u002Fapi\u002Fstatus\", api_status, methods=[\"POST\"]),\n    Mount(\"\u002Fmcp\", mcp.http_app(path=\"\u002F\")),\n    Mount(\"\u002F\", StaticFiles(directory=\"dist\", html=True), name=\"static\"),\n])\n```\n\n---\n\n## PORT ALLOCATION\n\n**Mandatory:** check `D:\\Dev\\repos\\mcp-central-docs\\operations\\WEBAPP_PORTS.md` for next free pair.\n\nRules:\n- Range: 10700–11000 only\n- Frontend and backend ports MUST be adjacent (e.g., 10956\u002F10957)\n- Even-numbered preferred for backends\n- After allocating: update WEBAPP_PORTS.md AND FLEET_INDEX.md\n\nCurrent high-water mark (2026-05-04): **10963** (deepfang Grafana)\nNext available pair: **10964\u002F10965** — verify against registry before using.\n\n---\n\n## START.PS1 — NAKED-PC INSTALL STANDARD\n\nEvery new MCP server MUST have a `start.ps1` that works on a fresh Windows clone.\n\n```powershell\n\u003C#\n.SYNOPSIS\n    Start [repo-name] MCP server — naked-PC compliant.\n    Requires: uv, Node.js LTS, just (auto-installed via winget if missing)\n#>\n\nSet-StrictMode -Version Latest\n$ErrorActionPreference = \"Stop\"\n\nfunction Require-Command {\n    param([string]$cmd, [string]$wingetId = \"\")\n    if (-not (Get-Command $cmd -ErrorAction SilentlyContinue)) {\n        if ($wingetId) {\n            Write-Host \"Installing $cmd via winget...\"\n            winget install --id $wingetId -e --accept-source-agreements --accept-package-agreements\n            $env:PATH = [System.Environment]::GetEnvironmentVariable(\"PATH\",\"Machine\") + \";\" +\n                        [System.Environment]::GetEnvironmentVariable(\"PATH\",\"User\")\n        } else {\n            Write-Error \"$cmd not found and no winget ID provided. Install manually.\"\n            exit 1\n        }\n    }\n}\n\nRequire-Command \"uv\"   \"astral-sh.uv\"\nRequire-Command \"node\" \"OpenJS.NodeJS.LTS\"\nRequire-Command \"just\" \"Casey.Just\"\n\n$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path\nSet-Location $ScriptDir\n\n# Kill zombie processes on our ports\n$BackendPort = 10964   # REPLACE with actual port\n$FrontendPort = 10965  # REPLACE with actual port\n@($BackendPort, $FrontendPort) | ForEach-Object {\n    $conn = Get-NetTCPConnection -LocalPort $_ -ErrorAction SilentlyContinue\n    if ($conn) { Stop-Process -Id $conn.OwningProcess -Force -ErrorAction SilentlyContinue }\n}\n\n# Install Python deps\n& \"C:\\Users\\\u003Cuser>\\.local\\bin\\uv.exe\" sync\n\n# Build frontend if dist missing\nif (-not (Test-Path \"webapp\\dist\\index.html\")) {\n    Write-Host \"Building frontend...\"\n    Push-Location webapp\n    npm ci\n    npm run build\n    Pop-Location\n}\n\n# Start backend\nStart-Process -NoNewWindow \"C:\\Users\\\u003Cuser>\\.local\\bin\\uv.exe\" -ArgumentList \"run\", \"python\", \"-m\", \"src.server\"\n\n# Wait for backend readiness\n$timeout = 30\n$elapsed = 0\nwhile ($elapsed -lt $timeout) {\n    try {\n        $resp = Invoke-WebRequest \"http:\u002F\u002Flocalhost:$BackendPort\u002Fhealth\" -UseBasicParsing -TimeoutSec 2 -ErrorAction Stop\n        if ($resp.StatusCode -eq 200) { break }\n    } catch {}\n    Start-Sleep 1\n    $elapsed++\n}\n\nWrite-Host \"Backend ready at http:\u002F\u002Flocalhost:$BackendPort\"\nStart-Process \"http:\u002F\u002Flocalhost:$FrontendPort\"\n```\n\nAlso provide `start.bat`:\n```bat\n@echo off\ncd \u002Fd \"%~dp0\"\npowershell -ExecutionPolicy Bypass -File \"%~dp0start.ps1\"\n```\n\n---\n\n## UV + PYTHON — FULL PATHS\n\nIn subprocess\u002FPowerShell context, `uv` is NOT on PATH. Always use full path:\n```\nC:\\Users\\\u003Cuser>\\.local\\bin\\uv.exe\n```\n\nPython:\n```\nC:\\Users\\\u003Cuser>\\AppData\\Local\\Programs\\Python\\Python313\\python.exe\n```\n\npyproject.toml minimum:\n```toml\n[project]\nname = \"repo-name-mcp\"\nversion = \"0.1.0\"\nrequires-python = \">=3.12\"\ndependencies = [\n    \"fastmcp>=3.4.4,\u003C4\",\n    \"starlette>=1.0.0\",\n    \"uvicorn[standard]>=0.30.0\",\n    \"httpx>=0.27.0\",\n]\n\n[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n```\n\n---\n\n## DOCKER \u002F CONTAINERS\n\nWhen writing Dockerfiles for MCP containers:\n\n```dockerfile\nFROM python:3.12-slim\n\nWORKDIR \u002Fapp\nRUN pip install --no-cache-dir fastmcp>=3.4.4,\u003C4 starlette>=1.0.0 uvicorn[standard]>=0.30.0\n\n# Non-root user (security standard — uid 65530+, one per container)\nRUN adduser --disabled-password --gecos \"\" --uid 65530 mcp\nUSER mcp\n\nEXPOSE 10964\nCMD [\"uvicorn\", \"server:app\", \"--host\", \"0.0.0.0\", \"--port\", \"10964\"]\n```\n\nNon-root UIDs in use (deepfang):\n- 65533 sanitizer\n- 65532 worker\nNext available: 65531, 65530, etc.\n\n---\n\n## TOOL DESIGN PATTERNS\n\n### Portmanteau (preferred for dense tool sets)\nSingle tool with `op` parameter instead of explosion of separate tools:\n\n```python\n@mcp.tool()\nasync def my_ops(op: str, path: str = \"\", content: str = \"\") -> dict:\n    \"\"\"\n    Unified file operations.\n    op: read | write | list | delete\n    \"\"\"\n    if op == \"read\": ...\n    elif op == \"write\": ...\n    raise ValueError(f\"Unknown op: {op}\")\n```\n\n### Agentic workflow (SEP-1577)\n```python\n@mcp.tool()\nasync def my_agentic_workflow(goal: str, ctx: Context) -> str:\n    \"\"\"Multi-step workflow via FastMCP 3.2 sampling.\"\"\"\n    result = await ctx.sample(\n        messages=goal,\n        system_prompt=\"You are a [domain] specialist...\",\n        temperature=0.2,\n        max_tokens=1024,\n    )\n    return result.text\n```\n\n### Safe-fail defaults\nAll tools that call external services must fail safely:\n```python\ntry:\n    resp = await client.get(url, timeout=10.0)\nexcept Exception as e:\n    return {\"success\": False, \"error\": str(e)}\n```\n\n---\n\n## CLAUDE DESKTOP MCP CONFIG\n\nPath: `C:\\Users\\\u003Cuser>\\AppData\\Roaming\\Claude\\claude_desktop_config.json`\n\nNew stdio server entry:\n```json\n\"repo-name-mcp\": {\n    \"command\": \"C:\\\\Users\\\\sandr\\\\.local\\\\bin\\\\uv.exe\",\n    \"args\": [\"run\", \"--directory\", \"D:\\\\Dev\\\\repos\\\\repo-name-mcp\", \"python\", \"-m\", \"src.server\"],\n    \"env\": {\n        \"SOME_VAR\": \"value\"\n    }\n}\n```\n\nNew HTTP\u002FSSE server entry (for FastMCP 3.2 http_app):\n```json\n\"repo-name-mcp\": {\n    \"type\": \"sse\",\n    \"url\": \"http:\u002F\u002Flocalhost:10964\u002Fmcp\u002Fsse\"\n}\n```\n\nMCP logs: `C:\\Users\\\u003Cuser>\\AppData\\Local\\Claude\\Logs\\mcp-server-{name}.log` (pre-2026-08-21: `AppData\\Roaming\\Claude\\logs`)\n\n---\n\n## GIT OPERATIONS IN POWERSHELL\n\n`git -C \u003Cpath>` via splatting fails. Always use:\n```powershell\nPush-Location \"D:\\Dev\\repos\\repo-name\"\n& \"C:\\Program Files\\Git\\cmd\\git.exe\" add .\n& \"C:\\Program Files\\Git\\cmd\\git.exe\" commit -m \"message\"\nPop-Location\n```\n\nNever use `&&` in PowerShell — use semicolons or separate statements.\n\n---\n\n## FLEET INDEX + PORT REGISTRY UPDATES\n\nAfter creating any new server, update both:\n\n1. `D:\\Dev\\repos\\mcp-central-docs\\projects\\FLEET_INDEX.md` — add row to table\n2. `D:\\Dev\\repos\\mcp-central-docs\\operations\\WEBAPP_PORTS.md` — add port rows\n\nFleet index row format:\n```\n| [repo-name](file:\u002F\u002F\u002FD:\u002FDev\u002Frepos\u002Frepo-name) | MCP Server | Active | **Description (v0.1.0)** — FastMCP 3.2.4; N tools; brief feature list. Backend **XXXXX**, frontend **XXXXX**. |\n```\n\n---\n\n## MCPB PACKAGING\n\nFleet uses source-code-only packaging via Anthropic mcpb CLI:\n```powershell\nmcpb validate   # validate manifest\nmcpb pack       # create package\n# Never use: mcpb init, mcpb publish\n```\n\nNo bundled deps in packages. `pyproject.toml` is the dependency manifest.\n\n---\n\n## ADVANCED MEMORY NOTES\n\nAfter significant work on any MCP server, write a note:\n```\nmemops:adn_notes(operation=\"write\",\n    title=\"repo-name-YYYY-MM-DD-session\",\n    folder=\"projects\",\n    tags=[\"repo-name\", \"fastmcp\", \"mcp\", \"status\", \"priority\"],\n    content=\"...\"\n)\n```\n\nTag ALL notes: [project-name, technology, status, priority]\n\n---\n\n## COMMON MISTAKES TO AVOID\n\n| Mistake | Correct |\n|---------|---------|\n| `mcp.sse_app()` | `mcp.http_app(path=\"\u002F\")` |\n| `@mcp.tool(task=True)` | `@mcp.tool()` |\n| `from fastapi import FastAPI` | `from starlette.applications import Starlette` |\n| `where uv` in subprocess | `C:\\Users\\\u003Cuser>\\.local\\bin\\uv.exe` |\n| `git -C path` splatting | `Push-Location path; git ...` |\n| `&&` in PowerShell | `;` or separate statements |\n| Guessing port numbers | Read WEBAPP_PORTS.md first |\n| `mkdir` in PowerShell | `New-Item -ItemType Directory` |\n| Mixing `\\` and `\u002F` in Windows paths | Always `\\` for Windows paths |\n| Not adding to FLEET_INDEX | Always update after creating server |\n",{},"master","be156301b65e301887f327d08190ed4f17ba08d2","docs\u002Fskills\u002Fmcp-builder",0,"https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp","https:\u002F\u002Fgithub.com\u002Fsandraschi","2026-11-12 11:03:54",{"source":7,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add sandraschi\u002Fdocumentation-mcp --skill mcp-builder",{"tool":43,"command":44},"bunx","bunx skills add sandraschi\u002Fdocumentation-mcp --skill mcp-builder",{"tool":46,"command":47},"pnpm","pnpm dlx skills add sandraschi\u002Fdocumentation-mcp --skill mcp-builder","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp\u002Fblob\u002Fmaster\u002Fdocs\u002Fskills\u002Fmcp-builder\u002FSKILL.md",true,[],[52,74,101,111,137,163],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":62,"publishedAt":26},"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",[58,61],{"categoryNo":59,"categoryName":60,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[63,64,65,66,67,68,69,70,71,72,73,23],"docs research","docs","research","standards","use","packaging","ask","server","search","fastmcp","documentation",{"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":26},"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,92,93,94,95,96,97,98,99,100],"drift","wrappee drift","api","data","audit","capabilities","training","memory","features","repo audit","competitors","fleet","now","software","tool list","only","never","coverage","list","read",{"skillNo":102,"name":103,"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":104,"categories":105,"keywords":110,"publishedAt":26},"01M6PFADA3X031SK3W3T6X0N6H","modules","https:\u002F\u002Fgithub.com\u002Fsandraschi\u002Fdocumentation-mcp\u002Fblob\u002Fmaster\u002Fdocs\u002Fskills\u002Fwindsurf-mcp-standards\u002Fmodules\u002FSKILL.md",[106,109],{"categoryNo":107,"categoryName":108,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[103],{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":121,"publishedAt":26},"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",[117,120],{"categoryNo":118,"categoryName":119,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[122,23,66,67,123,124,125,126,127,128,129,130,131,132,133,134,73,135,136,68],"mcp standards","monitoring","sampling","scaffolding","servers","cd","error","for","CI\u002FCD","access","ci","mcp servers","error handling","workflows","testing",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":145,"publishedAt":26},"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",[143,144],{"categoryNo":118,"categoryName":119,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[146,147,148,149,150,23,151,152,153,129,154,155,156,157,158,159,160,161,70,162],"webapp","test","webapp cua test","playwright","mcp server","dev","dom","assertions","trigger","click","app","tauri","repo","stack","e2e","ocr","browser",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":170,"publishedAt":26},"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",[169],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[165,158,129,154,171,172,173,174,175,176,177,70,178,151,179,180,181,150,182,23],"gates","ship it","artifact","done","say","work","publish","push","shipping","quality gates","commit","github"]