@hybridlabor-api/bdb-antigravity-skills 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"""One-paste TouchDesigner bridge bootstrap (no clone, no Preferences).
|
|
2
|
+
|
|
3
|
+
Paste this single line into the Textport (Dialogs -> Textport and DATs) and the
|
|
4
|
+
bridge installs itself and starts:
|
|
5
|
+
|
|
6
|
+
import urllib.request; exec(urllib.request.urlopen("https://github.com/Pantani/tdmcp/raw/v0.11.0/td/bootstrap.py").read().decode())
|
|
7
|
+
|
|
8
|
+
That release-pinned snippet downloads just the bridge modules to
|
|
9
|
+
~/tdmcp-bridge/modules, puts them on sys.path for this session, and runs
|
|
10
|
+
install.run() -> a tdmcp_bridge on port 9980.
|
|
11
|
+
|
|
12
|
+
Requires the GitHub repo (or release zip) to be reachable. If your repo is
|
|
13
|
+
private, point REPO_ZIP at a public release asset, or use `install-bridge`
|
|
14
|
+
(`node dist/index.js install-bridge`) from a local checkout instead.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
import io
|
|
18
|
+
import os
|
|
19
|
+
import stat
|
|
20
|
+
import sys
|
|
21
|
+
import zipfile
|
|
22
|
+
import urllib.request
|
|
23
|
+
|
|
24
|
+
REPO_ZIP = "https://github.com/Pantani/tdmcp/archive/refs/tags/v0.11.0.zip"
|
|
25
|
+
DEST = os.path.expanduser("~/tdmcp-bridge")
|
|
26
|
+
_MARKER = "/td/modules/"
|
|
27
|
+
_SKIP_RUN_ENV = "TDMCP_BOOTSTRAP_SKIP_RUN"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _is_symlink(info):
|
|
31
|
+
return stat.S_ISLNK((info.external_attr >> 16) & 0o170000)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _safe_module_path(name, modules_dir):
|
|
35
|
+
idx = name.find(_MARKER)
|
|
36
|
+
if idx == -1:
|
|
37
|
+
return None
|
|
38
|
+
|
|
39
|
+
rel = name[idx + len(_MARKER):].replace("\\", "/")
|
|
40
|
+
if not rel or rel.endswith("/"):
|
|
41
|
+
return None
|
|
42
|
+
|
|
43
|
+
parts = rel.split("/")
|
|
44
|
+
if (
|
|
45
|
+
rel.startswith("/")
|
|
46
|
+
or rel.startswith("\\")
|
|
47
|
+
or (len(parts[0]) >= 2 and parts[0][1] == ":")
|
|
48
|
+
or any(part in ("", ".", "..") for part in parts)
|
|
49
|
+
):
|
|
50
|
+
raise RuntimeError("[tdmcp] Refusing unsafe archive entry: %s" % name)
|
|
51
|
+
|
|
52
|
+
root = os.path.realpath(modules_dir)
|
|
53
|
+
target = os.path.realpath(os.path.join(modules_dir, *parts))
|
|
54
|
+
if target != root and not target.startswith(root + os.sep):
|
|
55
|
+
raise RuntimeError("[tdmcp] Refusing archive entry outside modules: %s" % name)
|
|
56
|
+
|
|
57
|
+
return target
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def fetch_modules(repo_zip=REPO_ZIP, dest=DEST):
|
|
61
|
+
"""Download the repo zip and extract only its td/modules tree into dest/modules."""
|
|
62
|
+
modules_dir = os.path.join(dest, "modules")
|
|
63
|
+
try:
|
|
64
|
+
data = urllib.request.urlopen(repo_zip, timeout=30).read()
|
|
65
|
+
except Exception as exc: # noqa: BLE001 - surface a friendly hint in the Textport
|
|
66
|
+
raise RuntimeError(
|
|
67
|
+
"[tdmcp] Could not download the bridge from %r (%s). If the repo is "
|
|
68
|
+
"private, use a public release asset or the local 'install-bridge' "
|
|
69
|
+
"command instead." % (repo_zip, exc)
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
zf = zipfile.ZipFile(io.BytesIO(data))
|
|
73
|
+
os.makedirs(modules_dir, exist_ok=True)
|
|
74
|
+
extracted = 0
|
|
75
|
+
for info in zf.infolist():
|
|
76
|
+
name = info.filename
|
|
77
|
+
if name.endswith("/"):
|
|
78
|
+
continue
|
|
79
|
+
target = _safe_module_path(name, modules_dir)
|
|
80
|
+
if target is None:
|
|
81
|
+
continue
|
|
82
|
+
if _is_symlink(info):
|
|
83
|
+
raise RuntimeError("[tdmcp] Refusing symlink archive entry: %s" % name)
|
|
84
|
+
os.makedirs(os.path.dirname(target), exist_ok=True)
|
|
85
|
+
with zf.open(name) as src, open(target, "wb") as out:
|
|
86
|
+
out.write(src.read())
|
|
87
|
+
extracted += 1
|
|
88
|
+
|
|
89
|
+
if extracted == 0:
|
|
90
|
+
raise RuntimeError("[tdmcp] Downloaded archive had no td/modules — wrong REPO_ZIP?")
|
|
91
|
+
print("[tdmcp] bridge modules -> %s (%d files)" % (modules_dir, extracted))
|
|
92
|
+
return modules_dir
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def run(repo_zip=REPO_ZIP, dest=DEST, port=9980):
|
|
96
|
+
modules_dir = fetch_modules(repo_zip, dest)
|
|
97
|
+
if modules_dir not in sys.path:
|
|
98
|
+
sys.path.insert(0, modules_dir)
|
|
99
|
+
from mcp import install
|
|
100
|
+
|
|
101
|
+
return install.run(port=port, modules_dir=modules_dir)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
# Running via exec(urlopen(...).read()) or as a script kicks off the install.
|
|
105
|
+
if os.environ.get(_SKIP_RUN_ENV) != "1":
|
|
106
|
+
run()
|
package/mcp_config.json
CHANGED
|
@@ -27,6 +27,14 @@
|
|
|
27
27
|
"bdb_resolume_mcp": {
|
|
28
28
|
"command": "npx",
|
|
29
29
|
"args": ["-y", "bdb-resolume-mcp"]
|
|
30
|
+
},
|
|
31
|
+
"bdb_td_minddesigner": {
|
|
32
|
+
"command": "npx",
|
|
33
|
+
"args": ["-y", "minddesigner-tdmcp"]
|
|
34
|
+
},
|
|
35
|
+
"bdb_td_backup": {
|
|
36
|
+
"command": "npx",
|
|
37
|
+
"args": ["-y", "touchdesigner-mcp"]
|
|
30
38
|
}
|
|
31
39
|
}
|
|
32
40
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hybridlabor-api/bdb-antigravity-skills",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Optimized Antigravity skills and MCP pack for BDB DEV",
|
|
5
5
|
"main": "installer.sh",
|
|
6
6
|
"bin": {
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"mcp_config.json",
|
|
15
15
|
"GEMINI.md",
|
|
16
16
|
"skilloverview.html",
|
|
17
|
+
"assets/",
|
|
17
18
|
"skills/"
|
|
18
19
|
],
|
|
19
20
|
"author": "BDB DEV",
|
package/skilloverview.html
CHANGED
|
@@ -535,11 +535,11 @@
|
|
|
535
535
|
<header>
|
|
536
536
|
<div class="logo-area">
|
|
537
537
|
<h1>BDB DEV / ANTIGRAVITY</h1>
|
|
538
|
-
<span>v1.0.
|
|
538
|
+
<span>v1.0.2</span>
|
|
539
539
|
</div>
|
|
540
540
|
<div class="stats-strip">
|
|
541
541
|
<div class="stat-card">
|
|
542
|
-
<div class="stat-val" id="stat-count">
|
|
542
|
+
<div class="stat-val" id="stat-count">142</div>
|
|
543
543
|
<div class="stat-label">Active Skills</div>
|
|
544
544
|
</div>
|
|
545
545
|
<div class="stat-card">
|
|
@@ -547,7 +547,7 @@
|
|
|
547
547
|
<div class="stat-label">Custom Orchestrators</div>
|
|
548
548
|
</div>
|
|
549
549
|
<div class="stat-card">
|
|
550
|
-
<div class="stat-val">
|
|
550
|
+
<div class="stat-val">9</div>
|
|
551
551
|
<div class="stat-label">Active MCPs</div>
|
|
552
552
|
</div>
|
|
553
553
|
</div>
|
|
@@ -630,8 +630,8 @@
|
|
|
630
630
|
The master skill to manage and utilize whitelabeled Model Context Protocol servers. Connects AI directly to hardware, stage, and design software.
|
|
631
631
|
</p>
|
|
632
632
|
<ul>
|
|
633
|
-
<li>grandMA3 Console (
|
|
634
|
-
<li>
|
|
633
|
+
<li>grandMA3 Console & Resolume (Stage & Visual control)</li>
|
|
634
|
+
<li>TouchDesigner (MindDesigner network builder & parameter backup)</li>
|
|
635
635
|
<li>Unreal Engine 5.8 (Native Editor plugin)</li>
|
|
636
636
|
<li>Rhino 3D, DaVinci Resolve, GitHub, Chrome DevTools</li>
|
|
637
637
|
</ul>
|
|
@@ -644,9 +644,9 @@
|
|
|
644
644
|
<h2 style="margin-bottom: 20px;">Interactive Skill Explorer</h2>
|
|
645
645
|
<div class="explorer-section">
|
|
646
646
|
<div class="sidebar">
|
|
647
|
-
<button class="category-btn active" onclick="filterCategory('all')">All Skills (
|
|
647
|
+
<button class="category-btn active" onclick="filterCategory('all')">All Skills (142)</button>
|
|
648
648
|
<button class="category-btn" onclick="filterCategory('custom')">BDB Custom (2)</button>
|
|
649
|
-
<button class="category-btn" onclick="filterCategory('mcp')">Firecrawl & MCPs (
|
|
649
|
+
<button class="category-btn" onclick="filterCategory('mcp')">Firecrawl & MCPs (16)</button>
|
|
650
650
|
<button class="category-btn" onclick="filterCategory('frontend')">Frontend & UI/UX (11)</button>
|
|
651
651
|
<button class="category-btn" onclick="filterCategory('backend')">Backend & DB (14)</button>
|
|
652
652
|
<button class="category-btn" onclick="filterCategory('devops')">DevOps & Git (9)</button>
|
|
@@ -679,7 +679,9 @@
|
|
|
679
679
|
// Inline skills dataset representing the 140 curated skills
|
|
680
680
|
const skillsData = [
|
|
681
681
|
{ name: "bdbrainstorm", desc: "Forces a comprehensive multi-agent brainstorming workflow combining debate, interactive grilling, subagent tasking, and high-end visual design.", cat: "custom", source: "Global Config" },
|
|
682
|
-
{ name: "MCP_Manage", desc: "Command center skill that manages and directs whitelabeled MCP servers like grandMA3
|
|
682
|
+
{ name: "MCP_Manage", desc: "Command center skill that manages and directs whitelabeled MCP servers like grandMA3, Resolume, Unreal Engine, Rhino, DaVinci, TouchDesigner, and Puppeteer.", cat: "custom", source: "Global Config" },
|
|
683
|
+
{ name: "bdb_td_minddesigner", desc: "TouchDesigner MindDesigner MCP - Builds real COMP, TOP, CHOP node networks from natural language prompts.", cat: "mcp", source: "Global Config" },
|
|
684
|
+
{ name: "bdb_td_backup", desc: "TouchDesigner Control MCP - Sets node parameters and queries TouchDesigner project states.", cat: "mcp", source: "Global Config" },
|
|
683
685
|
{ name: "firecrawl", desc: "Searches, scrapes, and interacts with the web via the Firecrawl CLI.", cat: "mcp", source: "Workspace Agents" },
|
|
684
686
|
{ name: "firecrawl-agent", desc: "AI-powered autonomous data extraction that navigates complex sites and returns structured JSON.", cat: "mcp", source: "Workspace Agents" },
|
|
685
687
|
{ name: "firecrawl-build", desc: "Integrate Firecrawl into product code for web scraping, crawling, searching, and interaction.", cat: "mcp", source: "Workspace Agents" },
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: MCP_Manage
|
|
3
|
-
description: Manages the BDB specialized MCP servers including Unreal Engine, Rhino 7/8, DaVinci Resolve, grandMA3, Resolume, GitHub,
|
|
3
|
+
description: Manages the BDB specialized MCP servers including Unreal Engine, Rhino 7/8, DaVinci Resolve, grandMA3, Resolume, GitHub, Chrome DevTools, and TouchDesigner.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# MCP_Manage: Specialized Tool Orchestration
|
|
@@ -33,7 +33,16 @@ You are the authoritative skill for managing and utilizing the specialized Model
|
|
|
33
33
|
- **Capabilities:** Trigger clips, adjust composition parameters, control opacity and layers.
|
|
34
34
|
- **Implementation Details:** Takes advantage of the native `.mcpb` integration introduced in Resolume 7.26. Heavily utilizes the powerful implementations from `tortillaguy-resolume-mcp`, repackaged for the BDB pipeline.
|
|
35
35
|
|
|
36
|
+
8. **bdb_td_minddesigner** (TouchDesigner MindDesigner MCP - Main)
|
|
37
|
+
- **Capabilities:** Builds real TouchDesigner networks (COMPs, TOPs, CHOPs, SOPs, DATs) from plain language prompts.
|
|
38
|
+
- **Implementation Details:** Custom whitelabel implementation based on the open-source `minddesigner-tdmcp` server. It allows direct, real-time node network generation inside TouchDesigner from natural language descriptions.
|
|
39
|
+
|
|
40
|
+
9. **bdb_td_backup** (TouchDesigner Control - Backup)
|
|
41
|
+
- **Capabilities:** Adjust parameters, query operator values, read/write node connections.
|
|
42
|
+
- **Implementation Details:** Whitelabeled version of the `8beeeaaat/touchdesigner-mcp` project, serving as a robust fallback/direct controller for existing TD files.
|
|
43
|
+
|
|
36
44
|
## How to use them
|
|
37
45
|
- When the user asks to manipulate lighting, target `bdb_grandma3_mcp` or `bdb_resolume_mcp`.
|
|
38
46
|
- When working on CAD or game environments, invoke `bdb_rhino_mcp` or `bdb_unreal_mcp`.
|
|
39
|
-
-
|
|
47
|
+
- For real-time visual scripting and node networks, call `bdb_td_minddesigner` as your primary TouchDesigner controller, falling back to `bdb_td_backup` for direct parameter modifications.
|
|
48
|
+
- Always check the available tools via the MCP tool listing before executing commands. If a server is down, instruct the user to verify the `mcp_config.json` configuration and ensure the respective host applications are running with API/OSC/Lua/network plugins enabled.
|