diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 268bad4..f0656a4 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -44,10 +44,11 @@ jobs: "pagesType": str, "hasCI": bool, } - OPTIONAL = {"npm": str} + OPTIONAL = {"npm": str, "archetype": str} VALID_TYPES = {"cursor-plugin", "mcp-server"} VALID_STATUS = {"experimental", "beta", "active", "maintenance", "deprecated", "archived"} VALID_PAGES = {"static", "mkdocs", "none"} + VALID_ARCHETYPES = {"deployed-service"} errors = [] for i, tool in enumerate(data): label = "Entry %d (%s)" % (i, tool.get("name", "?")) @@ -69,6 +70,19 @@ jobs: pass elif not all(isinstance(t, str) for t in tool.get("topics", [])): errors.append("%s: topics must be array of strings" % label) + archetype = tool.get("archetype") + if "archetype" in tool: + if archetype not in VALID_ARCHETYPES: + errors.append("%s: archetype must be one of %s" % (label, VALID_ARCHETYPES)) + if tool.get("type") != "mcp-server": + errors.append("%s: archetype is only valid for mcp-server entries" % label) + if tool.get("type") == "mcp-server": + npm = tool.get("npm") + if archetype == "deployed-service": + if "npm" in tool: + errors.append("%s: deployed-service must omit npm" % label) + elif not (isinstance(npm, str) and npm.strip()): + errors.append("%s: mcp-server entries must have a non-empty npm field" % label) if errors: for e in errors: print("::error::" + e, file=sys.stderr) @@ -128,6 +142,21 @@ jobs: test -f /tmp/scaffold-test/ci-test-plugin/mcp-server/server.py echo "Scaffold test passed" + python3 scaffold/create-tool.py \ + --name "CI Deployed Service" \ + --description "Automated deployed-service test" \ + --type mcp-server \ + --deployed-service \ + --no-register \ + --output /tmp/scaffold-service + + test -f /tmp/scaffold-service/ci-deployed-service/.drift-check.json + test ! -f /tmp/scaffold-service/ci-deployed-service/.github/workflows/publish.yml + test -f /tmp/scaffold-service/ci-deployed-service/.github/workflows/release.yml + grep -q '"private": true' /tmp/scaffold-service/ci-deployed-service/package.json + grep -qv 'gh workflow run publish.yml' /tmp/scaffold-service/ci-deployed-service/.github/workflows/release.yml + echo "Deployed-service scaffold test passed" + - name: Scaffold YAML well-formed run: | # Catches Jinja2 trim_blocks bugs that collapse adjacent expression lines. diff --git a/README.md b/README.md index bbe591b..8c8a2f7 100644 --- a/README.md +++ b/README.md @@ -62,11 +62,11 @@ flowchart LR | **Monday Cursor Plugin** | Plugin | 21 | 8 | 45 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/Monday-Cursor-Plugin) [![Docs](https://img.shields.io/badge/docs-7c3aed)](https://tmhsdigital.github.io/Monday-Cursor-Plugin/) | | **Steam Cursor Plugin** | Plugin | 30 | 9 | 25 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/Steam-Cursor-Plugin) [![Docs](https://img.shields.io/badge/docs-7c3aed)](https://tmhsdigital.github.io/Steam-Cursor-Plugin/) | | **Steam MCP Server** | MCP Server | - | - | 25 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/steam-mcp) [![npm](https://img.shields.io/badge/npm-cb3837?logo=npm&logoColor=white)](https://www.npmjs.com/package/@tmhs/steam-mcp) | -| **Developer Tools MCP** | MCP Server | - | - | 7 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/Developer-Tools-MCP) [![Docs](https://img.shields.io/badge/docs-7c3aed)](https://tmhsdigital.github.io/Developer-Tools-MCP/) | -| **CFX MCP** | MCP Server | - | - | 0 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/cfx-mcp) | +| **Developer Tools MCP** | MCP Server | - | - | 7 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/Developer-Tools-MCP) [![Docs](https://img.shields.io/badge/docs-7c3aed)](https://tmhsdigital.github.io/Developer-Tools-MCP/) [![npm](https://img.shields.io/badge/npm-cb3837?logo=npm&logoColor=white)](https://www.npmjs.com/package/@tmhs/devtools-mcp) | +| **CFX MCP** | MCP Server | - | - | 0 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/cfx-mcp) [![npm](https://img.shields.io/badge/npm-cb3837?logo=npm&logoColor=white)](https://www.npmjs.com/package/@tmhsdigital/cfx-mcp) | | **Blender Developer Tools** | Plugin | 12 | 6 | 0 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/Blender-Developer-Tools) | | **Local AI MCP** | MCP Server | - | - | 16 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/local-ai-mcp) [![Docs](https://img.shields.io/badge/docs-7c3aed)](https://tmhsdigital.github.io/local-ai-mcp/) [![npm](https://img.shields.io/badge/npm-cb3837?logo=npm&logoColor=white)](https://www.npmjs.com/package/@tmhs/local-ai-mcp) | -| **Screencast MCP** | MCP Server | - | - | 25 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/screencast-mcp) [![Docs](https://img.shields.io/badge/docs-7c3aed)](https://tmhsdigital.github.io/screencast-mcp/) | +| **Screencast MCP** | MCP Server | - | - | 25 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/screencast-mcp) [![Docs](https://img.shields.io/badge/docs-7c3aed)](https://tmhsdigital.github.io/screencast-mcp/) [![npm](https://img.shields.io/badge/npm-cb3837?logo=npm&logoColor=white)](https://www.npmjs.com/package/@tmhs/screencast-mcp) | | **Tailscale MCP** | MCP Server | - | - | 6 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/tailscale-mcp) [![Docs](https://img.shields.io/badge/docs-7c3aed)](https://tmhsdigital.github.io/tailscale-mcp/) [![npm](https://img.shields.io/badge/npm-cb3837?logo=npm&logoColor=white)](https://www.npmjs.com/package/@tmhs/tailscale-mcp) | | **Godot Correctness MCP** | MCP Server | - | - | 10 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/godot-correctness-mcp) [![Docs](https://img.shields.io/badge/docs-7c3aed)](https://tmhsdigital.github.io/godot-correctness-mcp/) [![npm](https://img.shields.io/badge/npm-cb3837?logo=npm&logoColor=white)](https://www.npmjs.com/package/@tmhs/godot-correctness-mcp) | | **Bounty Radar MCP** | MCP Server | - | - | 1 | [![Repo](https://img.shields.io/badge/repo-blue?logo=github)](https://github.com/TMHSDigital/bounty-radar-mcp) [![Docs](https://img.shields.io/badge/docs-7c3aed)](https://tmhsdigital.github.io/bounty-radar-mcp/) | diff --git a/STANDARDS_VERSION b/STANDARDS_VERSION index 81c871d..4dae298 100644 --- a/STANDARDS_VERSION +++ b/STANDARDS_VERSION @@ -1 +1 @@ -1.10.0 +1.10.1 diff --git a/VERSION b/VERSION index 84cc529..815d5ca 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.18.0 +1.19.0 diff --git a/docs/index.html b/docs/index.html index f833cd8..f46b327 100644 --- a/docs/index.html +++ b/docs/index.html @@ -345,7 +345,7 @@

Scaffold Generator