Best for
- Use when building server, dispatcher, gateway, packaging, and runtime integration.
dcc-mcp/dcc-mcp-core/skills/dcc-mcp-creator/SKILL.md
Infrastructure skill - guide developers and agents through creating or modernizing a DCC-MCP adapter or standalone internal MCP service for Nuke, Blender, 3ds Max, Unreal, ZBrush, Houdini, Maya, and custom studio systems. Use when building server, dispatcher, gateway, packaging, and runtime integration. Not for authoring individual SKILL.md tool packages - use dcc-mcp-skills-creator.
Decision brief
Use this skill when you are creating a new DCC-MCP adapter, modernizing an existing adapter repository, or exposing a private non-DCC studio system as a standalone MCP service: server composition, host-thread dispatch, sidecar/gateway wiring, readiness, resources, project state,…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/dcc-mcp/dcc-mcp-core --skill "skills/dcc-mcp-creator"Inspect the Agent Skill "dcc-mcp-creator" from https://github.com/dcc-mcp/dcc-mcp-core/blob/874c7b52c12587529827990c497d2c8292e5d875/skills/dcc-mcp-creator/SKILL.md at commit 874c7b52c12587529827990c497d2c8292e5d875. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
1. Classify the ownership boundary before creating files: - Public DCC adapter: run dcc-mcp-cli dcc-types; improve an existing adapter instead of creating a duplicate. Add a genuinely new public adapter to dcc-mcp-catalog.yml and the compatibility matrix. - Private non-DCC servi…
Review the “A declarative in-process tool returns this runner. HostExecutionBridge” section in the pinned source before continuing.
Install the published @loonghao/dcc-mcp-creator package, then start a new agent turn:
Use the dcc-mcp skill and dcc-mcp-cli for discovery, validation, and live DCC control whenever the agent can run shell commands. If the CLI is missing, follow the consent-gated official installation instructions in dcc-mcp. Before long-lived validation, run dcc-mcp-cli update ch…
DCC startup hook: adapter code running inside the host at application startup; it prepares env/instance data and launches the service path without blocking the DCC UI/main thread.
Permission review
The documentation asks the agent to run terminal commands or scripts.
npx --yes [email protected] install @loonghao/dcc-mcp-creatorThe documentation asks the agent to run terminal commands or scripts.
DCC control whenever the agent can run shell commands. If the CLI is missing,The documentation asks the agent to create, modify, or delete local files.
private registry workflow. Do not create or publish a public repositoryEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 95/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 39 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Use this skill when you are creating a new DCC-MCP adapter, modernizing an existing adapter repository, or exposing a private non-DCC studio system as a standalone MCP service: server composition, host-thread dispatch, sidecar/gateway wiring, readiness, resources, project state, diagnostics, install lifecycle, or cross-DCC verification. A local folder, intranet source tree, or private monorepo is sufficient; GitHub is not a runtime requirement.
For individual skill packages (SKILL.md, tools.yaml, scripts, groups, and
skill taxonomy), load dcc-mcp-skills-creator instead.
Install the published
@loonghao/dcc-mcp-creator
package, then start a new agent turn:
openclaw skills install @loonghao/dcc-mcp-creator
npx --yes [email protected] install @loonghao/dcc-mcp-creator
Use dcc-mcp to operate an
existing DCC. Use
dcc-mcp-skills-creator
when only a DCC-specific Skill package is needed.
Use the dcc-mcp skill and dcc-mcp-cli for discovery, validation, and live
DCC control whenever the agent can run shell commands. If the CLI is missing,
follow the consent-gated official installation instructions in dcc-mcp.
Before long-lived validation, run dcc-mcp-cli update check; use
dcc-mcp-cli update apply to stage the latest CLI for the next launch. This
does not replace a running server binary.
DccServerBase and Rust sidecars both participate as per-DCC services.dcc-mcp-sidecar child launched through the stable dcc-mcp-server sidecar command; it bridges host RPC to MCP/REST and exits when the watched DCC dies.dcc-mcp-server gateway process that owns routing, dynamic capability search/describe/call, and Gateway Admin./health and re-ensures the daemon through gateway-launch.lock; it is not a separate process.pid/sentinel prove the service itself is alive.host_pid; both owner and host must stay alive. Standalone/headless services intentionally have no bound host.dcc-mcp-cli dcc-types; improve an existing
adapter instead of creating a duplicate. Add a genuinely new public
adapter to dcc-mcp-catalog.yml and the compatibility matrix.dcc-mcp-cli install plans.dcc-mcp-skills-creator.requires-python = ">=3.7" is unchanged before any release. py37-lite fallback does NOT satisfy release gates. Removal requires an accepted superseding ADR, a major release, and at least 180 days of notice.DccServerBase + DccServerOptions.from_env(...).
Classify the runtime lifetime explicitly:
watch_pid=current_dcc_pid; core publishes the sidecar owner and bound host as separate liveness signals.dcc_pid=current_dcc_pid so McpHttpConfig.host_pid binds discovery to the DCC lifetime.instance_type="standalone", leave dcc_pid unset, and do not bind it to an optional GUI process. Runtime identity is independent from standalone_main_thread, which controls tool execution only.HostExecutionBridge; do not hand-roll a second script executor. Standalone services with no host-thread boundary should keep the default inline execution path.dcc_name/custom service id, server_name, env-var prefix, skill names, and gateway metadata.
Leave the instance port unset so core resolves DCC_MCP_<DCC>_PORT or asks the OS for a free port.MinimalModeConfig, project tools, resources, diagnostics, context snapshots, install lifecycle, and gateway failover before writing adapter-local wrappers. Python DccServerBase.collect_skill_search_paths() includes marketplace-installed skills under ~/.dcc-mcp/marketplace/<dcc> (or DCC_MCP_MARKETPLACE_INSTALL_ROOT/<dcc>) when the directory exists, so adapters should not add a second marketplace path convention. Hermetic adapter tests should set DCC_MCP_DISABLE_DEFAULT_SKILL_PATHS=1; this excludes implicit local/platform defaults, marketplace installs, and Admin custom paths while explicit, bundled, and environment-provided skill paths remain active.
ui-control skill and the
isolated dcc-mcp-ui-control-host.exe; do not instantiate
ComputerUseSession or add adapter-local screenshot/SendInput wrappers.
Keep ui_control__snapshot and ui_control__act in the same long-lived adapter
process so one thin named-pipe client retains the opaque host capability.
Preserve capture_provenance when snapshots or recordings become
evidence. Native Windows pixels require
backend=windows-ui-control-host and pixels_captured=true; use one
logical UI Control session_id plus one stable gateway
agent_context.session_id for attributable acceptance runs.
The per-logon-session host owns the screenshot/UIA observations, visible
banner, Esc stop token, input owner, confirmation, and native input.
ui-control declares requires_in_process: true while keeping
affinity: any; register HostExecutionBridge before skill loading.
The Host lazily owns one UIA worker per exact runtime session and reaps it
on stop or failure without replaying mutations. Never weaken this into
per-call subprocess execution or route it onto a blocked DCC UI thread.
A minimized or hidden exact HWND is recovered only through the host-owned
get_window_state / restore_window / show_window /
activate_window actions. They need no snapshot, must retain the existing
capability-bound PID/HWND, and must never become desktop discovery or
adapter-local Win32/input fallbacks.ui-control. Agents should make an explicit, agent-directed transition into the scoped
snapshot → one act → snapshot loop only when an operation is
unsupported, no suitable tool exists, or semantic UI Automation cannot
reach the required control. Re-observe after every action.DCC_MCP_COMPUTER_USE_ALLOW_RAW_INPUT, but it must not enable the
ceiling itself. Before raw input can start, the adapter/operator must set
DCC_MCP_UI_CONTROL_UIA_PROCESS_ID or DCC_MCP_UI_CONTROL_UIA_WINDOW_HANDLE to
the adapter's own DCC target; request scope may only narrow that trusted
PID/HWND. Require a visible unlocked desktop and matching Windows
integrity level, preserve the click-through border/banner/pointer feedback, and preserve
user_interrupted without automatic retry, session_id changes, or fallback. Once Esc stops an
session, only ui_control__snapshot(resume_computer_use=true) may request a
resume, and the isolated host must still obtain trusted user confirmation
before clearing the latch. Always call ui_control__stop_computer_use when
the workflow ends.
Never transition or retry through another UI/input path after a policy,
authorization, authentication, security, confirmation,
desktop_unavailable, or user_interrupted result.
Keep mutating UI Control tools annotated as destructive. The optional
intent may only raise the native host's independent UIA/input
classification. Do not introduce a model-supplied confirmed/approved
flag or environment bypass.ui_control__system_operation instead of adding adapter-local PowerShell,
reg.exe, mklink, or generic file-system tools. The host catalog named
by DCC_MCP_UI_CONTROL_SYSTEM_GRANTS_FILE is operator-owned, and the
adapter selects only its grant id through
DCC_MCP_UI_CONTROL_SYSTEM_GRANT_ID. Keep operations exact, typed,
idempotent, confirmation-gated, and free of credentials. Do not treat
elevation_required as permission to automate UAC or another shell path.dcc-mcp-cli gateway ..., list/search/describe/call) as the user UX; treat dcc-mcp-server modes as runtime plumbing. Read docs/guide/gateway.md before changing daemon, guardian, sentinel, registry, or idle-timeout behavior.
Gateway discovery reuses a recent capability snapshot across adjacent
queries. Route adapter catalog changes through the existing
load/reload/unload contracts that force a refresh; never depend on every
search polling the full backend catalog.
gateway://instances is agent-safe by default and returns only live,
routable rows. Use ?include_stale=true, ?include_dead=true, or
?view=all only for explicit diagnosis; never route a call from those
expanded operator views without re-validating live readiness.
Once an instance is selected, reuse gateway://instances/{instance_id} or
GET /v1/instances/{instance_id}/context for live process/machine
performance, scene/documents, loaded skills, and canonical follow-up routes.
These reads fetch the backend context on demand, but scene freshness remains
adapter-owned: publish changes from a host event/main-thread callback with
DccServerBase.update_gateway_metadata(...), and publish rich snapshots with
set_scene_resource(...). Never claim scene awareness when the adapter has
not installed a publisher; scene=null / no_scene_published is explicit.
For agent observability, read gateway://experiments/{experiment_id} for
runs, Session DAG links, metrics, and Judge evidence; read
gateway://governance for the effective policy boundary. Keep Admin memory
deletion controls out of agent-readable resources.dcc_mcp_core.install_lifecycle.build_sidecar_command(...) / launch_sidecar(...) for sidecar startup and readiness. Read docs/guide/adapter-install-lifecycle.md before changing host RPC, dispatch readiness, launch stdio, watch_pid, or instance_id handling.
load_skill success without an executable catalog.capture_bootstrap_errors(...); it is stdlib-only, records pre-MCP failures, and re-raises for the DCC's native error UI. DccServerBase already captures Python error logs and uncaught exceptions into the shared log plus output:// / events://. Forward host-native console callbacks with server.report_host_error(...); do not replace global stdout/stderr or add an adapter-local error store.instance_id to sidecar launch helpers only when it is a real UUID for the DCC service. During early startup, omit it or pass None; build_sidecar_command() rejects cosmetic values such as "unknown" with success=false and reason="invalid_instance_id" so adapters do not spawn a child that can only fail with a CLI argument error.
After DccServerBase.start(), use server.instance_id when adapter UI or
sidecar wiring needs the canonical FileRegistry identity. It is the exact
registered UUID and is None before start, after stop, or when gateway
registration is disabled/unavailable; never inspect private handles or
generate a replacement UUID.launch_sidecar(..., return_process=True, detached=False) instead of reimplementing subprocess.Popen; keep return_process=False for CLI/JSON paths because the process handle is not serializable.FileRegistry, register remotely through POST /v1/instances/register, refresh with /heartbeat, and deregister on shutdown; the gateway will expose the row as source: "http" in gateway://instances / GET /v1/instances, preserve instance_short and mcp_url, and route it through the same live_instances contract.--remote-host 0.0.0.0 or concrete LAN IP; for same-LAN convenience discovery, build with mdns and pair adapter-side --advertise-mdns with gateway-side --discover-mdns. Treat mDNS as a multicast discovery hint only, keep auth/TLS policy explicit, and prefer HTTP registration or relay for routed/subnet-crossing production deployments.instance_id, capabilities_fingerprint, adapter_version, and scene metadata, then configure the standalone gateway with --relay-source ADMIN_URL=PUBLIC_BASE_URL; the gateway will expose active tunnels as source: "relay" rows with relay details in source_meta after probing /v1/healthz through <PUBLIC_BASE_URL>/tunnel/<tunnel_id>/mcp.initialize.params.clientInfo, MCP _meta.agent_context, REST meta.agent_context, x-dcc-mcp-* headers, and safe User-Agent fallbacks flow through core rather than logging raw prompts or local machine data.register_lifecycle_hooks(...), search_skills(..., session_id=...), dispatch_session_start(...), dispatch_before_tool_call(...), dispatch_after_tool_call(...), and dispatch_session_end(...); pair MemoryRecorder(InMemoryMemoryStore()).install(hooks) with those hooks when adapters need bounded memory summaries, failed-pattern avoidance, or session compaction. Memory injection is conservative and budgeted by default: search receives compact ranking hints, tool calls receive memory only when it matches the current tool_name, and session-start injection is opt-in. Use SqliteMemoryStore() only when longterm patterns should be durable, operator-managed in the Admin Memory tab, and included in memory hit-rate observability; disable the recorder for privacy-sensitive deployments. Open a focused core issue/RFC only when those public hooks cannot express the adapter boundary.just idle-memory-smoke for standalone server idle/regression checks.ServiceEntry.version as the DCC application version; use core-published dcc_mcp_server_version and dcc_mcp_instance_type=gui|standalone metadata for server regression and runtime-shape diagnostics instead of overloading DCC or adapter versions.agent_context task/session/turn metadata and artifact/validation-friendly tool names so Admin task outcomes can group workflows, calls, deliverables, and checks without reading raw payloads or local paths.agent_context.session_id, keep UI Control logical ids connection/caller
scoped, and write only redacted recording projections to existing
session_events. Do not add adapter-local recorder state, a second
database, or a replay authority flag. Generated workflows re-resolve
current tools and schemas; semantic UI replay resolves fresh control ids;
raw/visual fallback requires exact-window calibration and drift guards./v1/experiments APIs.
Reuse session_events, workflow/recording identifiers, and artifact
references; do not add adapter-local experiment storage or treat judge
output as approval authority.Use the shared chunked path when a main-affinity operation cannot finish within one host UI tick. The adapter owns scheduling; skill code only defines bounded steps:
from dcc_mcp_core import chunked_job
@chunked_job(total=100)
def bake_frames():
for frame in range(100):
yield lambda frame=frame: bake_one_frame(frame)
# A declarative in-process tool returns this runner. HostExecutionBridge
# detects and submits it to HostUiDispatcherBase automatically.
return bake_frames()
execution: async, affinity: main, and
job_strategy: chunked. The bridge rejects a declared chunked tool that
returns a monolithic value.submit_chunked_runner() advances at most one step per host pump tick, so
unrelated UI work can run between steps.cancel(request_id) requests cancellation. The runner publishes
cancelled only after the next checkpoint observes it; a running native DCC
call or monolithic callback is not pre-empted.Do not label an indivisible native call as chunked. Use
job_strategy: monolithic when the host API cannot yield, or
job_strategy: isolated when a process/service-owned operation can return a
durable job id. Isolated status must remain queryable after transport loss;
cancellation may remain process-owner scoped when reconstructing ownership
would be unsafe.
unreachable; it
must not erase a row whose owner lock/PID or remote TTL is still valid.dcc_type, scene/project metadata, and adapter identity so
agents can rediscover a replacement instance. Never reuse an old tool slug
or direct MCP URL after the instance id changes.interrupted and remain queryable through the replacement instance's
jobs_get_status; adapter-owned isolated jobs need their own durable status
tool when they outlive the request transport. If the worker can outlive the
DCC/sidecar process, that status tool must be owned by the worker/service or
another independently live control process; gateway restart alone cannot
recreate an API whose owner exited.Reproduce through dcc-mcp and keep one gateway session id. Run
dcc-mcp-cli doctor, then dcc-mcp-cli stats --status failure --session-id <session-id>; preserve the failed call's request_id, trace/job ids, adapter
version, DCC version, readiness fields, and the smallest safe reproduction.
Use /v1/debug/issue-reports/<request_id> for the public-safe issue body and
review any ?mode=raw export locally before sharing it.
Report adapter-owned dispatch, host-thread, readiness, packaging, or install
bugs in the adapter repository. Escalate shared CLI, gateway, protocol, or core
contract failures to dcc-mcp-core. Tool schema/script/workflow defects belong
to the owning Skill and dcc-mcp-skills-creator. Record runtime feedback with
the CLI-discovered dcc_feedback__report tool; open an external issue only
with user authorization.
When asked to create a Nuke MCP adapter, start by mapping the host lifecycle: how Python is loaded, how the UI/main thread must be entered, what headless mode is available, how plugins are installed, and which operations should be bundled as default skills. Then scaffold the adapter around core primitives:
DccServerBase for MCP/HTTP and skill catalog behavior.DccServerOptions.from_env("NUKE") or an adapter-specific equivalent for env-driven configuration.HostExecutionBridge plus a Nuke dispatcher for all Nuke API calls.dcc-mcp-skills-creator for the first nuke-* skill packages.When asked to expose an internal asset, render-farm, review, or production
service, stay in the supplied private project and start with
examples/remote-server. It is a standalone
service despite the historical directory name: it binds to loopback for local
development, discovers a bundled example Skill, and needs no DCC process or GitHub
repository.
studio-assets; do not pretend it is
Maya or another cataloged DCC.instance_type="standalone", leave dcc_pid unset, and use inline
execution unless a real external host boundary exists.tools/list,
tools/call, resources, and errors with the official open-source MCP
Inspector before testing gateway discovery.SKILL.md, tools.yaml, groups.yaml, or prompt/workflow files in adapter runtime code when core exposes a typed object or catalog API.server._server unless no public core API exists; if you must, file a core issue and keep the adapter shim small.Alternatives
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
wanshuiyin/Auto-claude-code-research-in-sleep
Use it for operations and research tasks; the detail page covers purpose, installation, and practical steps.
dotnet/skills
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing
aaron-he-zhu/aaron-marketing-skills
Use when the user asks to "set up my founder social-selling routine", "build a daily engagement block for target accounts", or "turn funding / hiring signals into selling plays"; produces the founder/seller daily operating block — a time-boxed engagement-block spec (substantive value-add comments on target-account posts, never a pitch), warm-touch-before-ask cadence rules, trigger-response plays consuming the social-pulse-monitor B2B trigger watchlist (funding / hiring / launch signals), and a q