Best for
- Use when authoring SKILL.
dcc-mcp/dcc-mcp-core/skills/dcc-mcp-skills-creator/SKILL.md
Infrastructure skill - create, validate, scaffold, and review DCC-MCP skills for the dcc-mcp-core ecosystem. Use when authoring SKILL.md, tools.yaml, scripts, groups, prompts, or skill taxonomy. Not for creating a full DCC-MCP adapter repository - use dcc-mcp-creator.
Decision brief
A first-class meta-skill for creating, validating, and reviewing DCC-MCP skill packages. It bundles scaffold/validation tools together with agent-facing authoring guidance for SKILL.md, tools.yaml, scripts, groups, prompts, and progressive-loading taxonomy.
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-skills-creator"Inspect the Agent Skill "dcc-mcp-skills-creator" from https://github.com/dcc-mcp/dcc-mcp-core/blob/874c7b52c12587529827990c497d2c8292e5d875/skills/dcc-mcp-skills-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
Review the “Quick Start” section in the pinned source before continuing.
1. Decide whether the skill is infrastructure, domain, thin-harness, or example. 2. Give the skill a kebab-case name and each local tool a snakecase name. 3. Keep host API calls inside scripts, with lazy imports so discovery works without the host running. 4. Import same-directo…
Install the published @loonghao/dcc-mcp-skills-creator package, then start a new agent turn:
Use the dcc-mcp skill and dcc-mcp-cli for skill discovery, loading, validation, and live calls whenever the agent can run shell commands. Start a live validation with dcc-mcp-cli list: if the process launches, the CLI is installed and the result checks the gateway plus DCC/MCP i…
Review the “Create a new skill” section in the pinned source before continuing.
Permission review
The documentation asks the agent to create, modify, or delete local files.
Use `dcc-mcp-creator` when the task is to create a full adapter repository forThe documentation asks the agent to run terminal commands or scripts.
npx --yes [email protected] install @loonghao/dcc-mcp-skills-creatorThe documentation asks the agent to read local files, directories, or repositories.
a complete adapter. A repository checkout may load this directory directly;The documentation asks the agent to run terminal commands or scripts.
validation, and live calls whenever the agent can run shell commands. Start aThe documentation includes network, browsing, or remote request actions.
If the desired behavior requires parsing core internals or adapter-private YAML at runtime, stop and request a core API instead.Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 91/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
A first-class meta-skill for creating, validating, and reviewing DCC-MCP skill
packages. It bundles scaffold/validation tools together with agent-facing
authoring guidance for SKILL.md, tools.yaml, scripts, groups, prompts, and
progressive-loading taxonomy.
Use dcc-mcp-creator when the task is to create a full adapter repository for
a host such as Nuke, Blender, 3ds Max, Unreal, ZBrush, Houdini, or Maya. Use
this skill when the task is to create or improve the skill packages loaded by
those adapters.
Install the published
@loonghao/dcc-mcp-skills-creator
package, then start a new agent turn:
openclaw skills install @loonghao/dcc-mcp-skills-creator
npx --yes [email protected] install @loonghao/dcc-mcp-skills-creator
Use dcc-mcp to operate an
existing DCC and
dcc-mcp-creator to build
a complete adapter. A repository checkout may load this directory directly;
DCC_MCP_SKILL_PATHS and extra_paths are runtime paths for DCC adapters, not
installation instructions for an agent host.
Use the dcc-mcp skill and dcc-mcp-cli for skill discovery, loading,
validation, and live calls whenever the agent can run shell commands. Start a
live validation with dcc-mcp-cli list: if the process launches, the CLI is
installed and the result checks the gateway plus DCC/MCP inventory. Diagnose a
failed health/inventory result with dcc-mcp-cli doctor; do not reinstall the
CLI, probe import dcc_mcp_core, or read server internals to infer readiness.
Only a shell-level command-not-found result means the CLI is missing. Ask for
consent; after explicit approval, immediately run the verified dcc-mcp helper
python scripts/check_cli.py --ensure-cli --pretty from that Skill's directory.
It installs the official CLI and rechecks health/inventory in the same attempt,
without a second confirmation. Keep it current with dcc-mcp-cli update check,
then dcc-mcp-cli update apply; apply stages the next CLI launch and does not
replace a running server binary.
# Call the loaded MCP tool:
# dcc_mcp_skills_creator__create_skill(
# name="maya-rigging",
# parent_dir="/path/to/skills/dir",
# dcc="maya",
# tool_name="create_locator",
# affinity="main",
# )
dcc-mcp-cli lint /path/to/my-skill
# Call the loaded MCP tool:
# dcc_mcp_skills_creator__skill_template()
my-skill/
|-- SKILL.md # Required: metadata frontmatter + instructions
|-- tools.yaml # Required when metadata.dcc-mcp.tools points here
|-- scripts/ # Optional: tool implementation scripts
| `-- create_locator.py
`-- references/ # Optional: recipes, examples, and long-form docs
|-- RECIPES.md
`-- NOTES.md
Generated tools.yaml entries follow the modern contract:
<skill-name>__<tool_name> when namespacing is needed.metadata.dcc-mcp.version in
SKILL.md; a top-level version key is rejected by the strict loader.metadata.dcc-mcp.dcc to the concrete host. Use dcc: any only when the
same implementation is safe in every host; concrete-host tools override a
same-named any tool during scoped lookup.metadata.dcc-mcp.depends as skill names,
not repo names or prose-only instructions. Use it when one skill must be
discovered or loaded before another, for example depends: ["qt-ui-inspector"].input_schema and output_schema are declared explicitly.{"type":"object","properties":{},"additionalProperties":false}.tools.yaml.input_schema shapes simple: prefer a top-level object with
properties, required, primitive type, bounds, and descriptions. Put
mutually exclusive forms, conditional requirements, and cross-field rules in
the tool script or handler validation instead of anyOf, oneOf, allOf,
not, if/then/else, or dependent-schema keywords. When a complex
schema is unavoidable, discovery must route through describe before call.execution is sync or async; use async for deferred/long-running work.job_strategy is monolithic (default), chunked, or isolated. Agents
use it to select a safe execution and recovery workflow.affinity is explicit. Use main for host API or scene mutation work and any for pure work.enforce_thread_affinity: true is emitted so adapter dispatch stays honest.annotations explicitly declare boolean read_only_hint,
destructive_hint, idempotent_hint, and open_world_hint. Missing safety
fields force describe, even for a zero-argument tool; deferred_hint stays
optional.target_tool_slug activates only that tool's group; do not rely on a sibling
default-active group being activated with it.call_examples: optional list of ready-to-copy argument payloads. Each entry has arguments (JSON object matching input_schema.properties) and an optional note. Surfaced in describe responses at metadata.dcc.call_examples so agents can construct correct arguments on the first attempt.execution: async changes the job lifecycle; it does not make one monolithic
host call interruptible. For long scene mutations:
execution: async
job_strategy: chunked
affinity: main
enforce_thread_affinity: true
annotations:
deferred_hint: true
When the adapter supports HostUiDispatcherBase.submit_chunked_runner(),
define bounded steps with the shared helper:
from dcc_mcp_core import chunked_job
@chunked_job(total=100)
def build_bake_steps():
for frame in range(100):
yield lambda frame=frame: bake_one_frame(frame)
Return the runner from the declarative entry point. HostExecutionBridge
automatically submits it to the shared host pump and binds it to the outer
JobManager cancellation probe. Do not create a skill-local timer, thread,
pump, or second job registry.
Keep each yielded callable bounded, return a string when a progress message is
useful, and let cancellation become terminal only after a runner checkpoint.
If the adapter does not expose the shared chunked path, document that the tool
is monolithic and request an adapter/core integration instead of claiming
mid-call interruption.
Use job_strategy: isolated when the typed tool launches a process- or
service-owned operation and returns a durable job id immediately. Declare the
poll and cancel tools in next-tools and in the result recovery context.
Status must remain readable after a transport disconnect or adapter restart;
state cancellation ownership honestly when it cannot be reconstructed.
Render and cook status tools should reuse the Core progress vocabulary:
status, progress.current, progress.total, and progress.message.
current and total are monotonic work-unit counts such as completed/total
frames; clients derive the percentage and render one progress bar. Prefer the
renderer or cook service's native counters. If files are the only source, keep
that counting inside the typed status tool instead of making the agent run
repeated directory scans.
During an active turn, agents should start once and use CLI --wait, REST job
events, or the declared status tool. Do not create an OS or DCC-MCP scheduled
workflow merely to poll one running operation. Only after the user explicitly
requests cross-session monitoring may an agent create a one-shot follow-up that
stores the existing job/operation id, performs read-only status checks, and
self-stops at a terminal state; it must never relaunch the render or cook.
Mirror this contract in agents/openai.yaml: tell the Agent to start once,
follow typed progress to a terminal state, and query the same job id after a
timeout instead of relaunching work.
For one indivisible DCC-native call, keep job_strategy: monolithic. Prefer
execution: async so the initial transport returns a core job id, then poll
the instance-routable jobs_get_status. A transport timeout is not completion
or cancellation: rediscover the instance and query the job before retrying.
The creator scaffold deliberately emits monolithic for async tools; change it
only with the matching chunked runner or isolated status/cancel implementation.
ui-control skill instead of creating another screenshot,
pointer, keyboard, or Windows SendInput tool set. Declare
metadata.dcc-mcp.depends: ["ui-control"] only when it is a hard workflow
dependency.ui_control__snapshot -> ui_control__act ->
ui_control__snapshot, and pass the latest snapshot_id unchanged. End every
path with ui_control__stop_computer_use. Screenshot coordinates belong to that
observation only.capture_provenance with saved evidence. Only
backend=windows-ui-control-host plus pixels_captured=true proves native
Windows screenshot capture; keep the logical UI Control session_id
distinct from the gateway agent session used for stats attribution.get_window_state followed by the necessary restore_window,
show_window, and activate_window host actions, then take a fresh
snapshot. Never substitute desktop enumeration or open-ended input.requires_in_process: true independently of
affinity; keep UI Control at affinity: any so it does not block the DCC
UI thread while preserving one named-pipe client. On Windows, the isolated
per-logon-session host owns observations, Esc interruption, confirmation, and the
cross-adapter input owner; skill scripts must not instantiate an in-process
ComputerUseSession fallback.control_id and semantic UI Automation action. Use raw coordinates
only when the UI does not expose a stable semantic control.drag path from the latest snapshot. keys may hold Ctrl, Shift, or Alt for
pointer-modified drags; snapshot again immediately before deriving another
path.DCC_MCP_COMPUTER_USE_ALLOW_RAW_INPUT from a skill script. It is an
operator-owned environment ceiling. Native input also requires the
adapter/operator to bind its DCC with DCC_MCP_UI_CONTROL_UIA_PROCESS_ID or
DCC_MCP_UI_CONTROL_UIA_WINDOW_HANDLE; a skill request may only narrow that
trusted scope. Propagate user_interrupted immediately;
do not retry the action or fall back to another input path after Esc interrupts a session.desktop_unavailable, or
user_interrupted result. Computer Use is a capability fallback, not a way
around a control boundary.intent can only raise the native host's independent
UIA/input classification. Never add a model-controlled confirmed or
approved argument or treat an environment variable as per-action user
approval.WorkflowSpec tool steps, compile semantic UI actions
as fresh snapshot -> find -> one act -> verified wait/snapshot loops,
and reject raw captured control ids or coordinates. Keep the demonstrated
instance id as review provenance only. Never serialize approvals, grants,
credentials, prompts, or secret-shaped fields. Visual fallback assets must
be content-addressed, exact-window bounded, confidence gated, stable across
multiple frames, and fail closed on geometry/DPI/topology drift.Decide whether the skill is infrastructure, domain, thin-harness, or example.
Give the skill a kebab-case name and each local tool a snake_case name.
Keep host API calls inside scripts, with lazy imports so discovery works without the host running.
Import same-directory helper modules directly; in-process runners expose the executing script's directory only for the call, so scripts must not mutate sys.path for sibling imports. In particular, do not repeat the legacy pattern shown in houdini#157:
script_dir = str(Path(__file__).resolve().parent)
if script_dir not in sys.path:
sys.path.insert(0, script_dir)
That mutates process-global import state and leaks across skills. Script-directory lifetime is runtime ownership; use a direct sibling import and let the executor scope resolution to the current call.
Import dependency-light runtime helpers from dcc_mcp_core.skills_helper first: JSON/YAML codecs, bounded HTTP helpers, safe file/path helpers, validation, cancellation checks, and result helpers.
Declare metadata.dcc-mcp.depends for prerequisite skills, then declare execution, affinity, timeout_hint_secs, schemas, annotations, and failure recovery chains in tools.yaml. Do not rely on runtime Python introspection for missing schemas. For high-frequency tools, add call_examples so agents can copy argument payloads without trial-and-error.
Put long examples, recipes, and host-specific notes under references/.
Validate with validate_skill_dir or dcc_mcp_core.validate_skill() before
loading it in an adapter. For discovery/load performance regressions, assert
deterministic backend operation counts; use elapsed-time thresholds only as
supplemental evidence.
If the desired behavior requires parsing core internals or adapter-private YAML at runtime, stop and request a core API instead.
Use retained gateway evidence only after the user-visible task and its
validation are complete. Keep one stable session_id in call metadata, then
query the narrowest useful slice:
dcc-mcp-cli stats --range 24h --dcc-type <dcc> --session-id <session-id>
Get the review_skill_improvement prompt from this skill and supply the stats
JSON plus bounded task and validation summaries. Treat total_calls == 0 as
missing evidence, not success. Never include hidden reasoning, raw prompts,
credentials, or unredacted payloads.
Prefer no_change, then improving an existing skill, and create a new skill
only for a repeated, reusable workflow that no current skill owns. Validate any
accepted change with validate_skill_dir or dcc-mcp-cli lint before loading
it. Statistics inform a proposal; they never authorize editing or publishing a
skill without the task owner's requested scope.
For a failed task, first use the dcc-mcp recovery flow: retain the
request_id, run doctor for runtime/readiness faults, query
stats --status failure --session-id <session-id>, and record structured
feedback through the CLI-discovered dcc_feedback__report tool. The public-safe
/v1/debug/issue-reports/<request_id> payload is suitable for a reviewed issue;
never publish ?mode=raw automatically.
Fix this Skill only when the evidence identifies its schema, script,
description, next-tool, or workflow contract. Route adapter/runtime failures to
dcc-mcp-creator and shared CLI/gateway/core failures to dcc-mcp-core. A
one-off tool bug is not evidence for creating another Skill.
When reviewing existing skills, reject top-level DCC-MCP extension keys such
as dcc, version, tags, tools, groups, depends, search-hint,
runtimes, prompts, and resources. Move them under
metadata.dcc-mcp.*; for version metadata, use
metadata.dcc-mcp.version: "1.0.0". Validate the installable skill directory
that contains the SKILL.md loaded by adapters, not only mirrored repository
docs or marketplace metadata.
Read AUTHORING_WORKFLOW.md and DCC_TOOL_CONTRACTS.md before changing a production skill package.
Gateway search treats tags as a narrowing filter. Use a small shared vocabulary
so pipeline, production-tracking, and documentation connectors rank and filter
consistently across hosts. When authoring SKILL.md frontmatter, include the
appropriate tags under metadata.dcc-mcp.tags:
| Tag | Use for |
|---|---|
pipeline | Studio pipeline systems, publish/intake/review automation, and production data hand-offs. |
production-tracking | Shot/asset/task/status tracking systems regardless of vendor. |
shotgrid | Autodesk Flow Production Tracking / ShotGrid-specific tools. |
ftrack | ftrack-specific tools. |
docs | Documentation, product help, reference lookup, and guide resources. |
read-only | Discovery/read operations. Also set MCP readOnlyHint (annotations.read_only_hint: true in tools.yaml); the tag is for search, not policy. |
destructive | Mutating or irreversible operations. Also set MCP destructiveHint (annotations.destructive_hint: true in tools.yaml); the tag is for search, not policy. |
Filter semantics:
dcc_type (singular) + dcc_types[] — OR: a result matching any listed
DCC family passes. Include dcc_type: "maya" with dcc_types: ["blender"]
to match records from either host in one request.tags[] — AND: a result must carry every listed tag. Use pipeline +
production-tracking to narrow to records that carry both.tags_any[] — OR: a result carrying any listed tag passes. Combines with
the AND filter above: tags: ["pipeline"] + tags_any: ["read-only", "docs"]
returns pipeline records that are read-only OR documentation.Vendor tags can be added when they sharpen routing without replacing the
canonical tags. For example, Autodesk Product Help should use docs,
read-only, and the vendor tag autodesk. Do not add docs to a
production-tracking search unless the user explicitly asks for help or reference
material.
All authored skills must declare compatibility: "Python 3.7+" in their
frontmatter when they are installed into an LTS DCC host. This applies to every
skill that is installed into a DCC host embedding Python 3.7 (Maya 2022,
Blender 2.83, 3ds Max 2022, etc.). py37-lite is a supported fallback but
does not replace the native Linux and Windows cp37 compatibility gates. See
ADR 011 and compatibility/python.json for the deprecation and CI contract.
In lite mode, create_skill_server() supports local metadata discovery
(list_skills, search_skills, and get_skill) only. The Rust sidecar is
dispatch-only, so gateway discovery and declarative load_skill execution
require a native Python 3.7 wheel; lite activation fails explicitly.
For hermetic CI or tests, set DCC_MCP_DISABLE_DEFAULT_SKILL_PATHS=1 so an
operator's local/platform defaults, marketplace installs, and Admin custom
paths cannot alter discovery results. Explicit, bundled, and
DCC_MCP_*_SKILL_PATHS paths remain active under this mode.
Skill SKILL.md example (frontmatter excerpt):
metadata:
dcc-mcp:
dcc: shotgrid
layer: domain
tags: [pipeline, production-tracking, shotgrid]
search-hint: "ShotGrid task status, find shots, update task assignments"
tools: tools.yaml
# Read-only docs connector (SKILL.md excerpt)
metadata:
dcc-mcp:
dcc: autodesk-help
layer: infrastructure
tags: [docs, autodesk, read-only, infrastructure]
search-hint: "Autodesk Product Help, Maya help, 3ds Max help, API reference"
tools: tools.yaml
Individual read tools should also carry read-only in their tool-level tags;
mutating publish/update tools should carry destructive when applicable.
The validator checks:
name, descriptionsource_file references exist in scripts/metadata.dcc-mcp.tools/groups/prompts references existmetadata.dcc-mcp.depends consistencymetadata.dcc-mcp.* and point to sibling filesmetadata.dcc-mcp.version is accepted and projected
to SkillMetadata.version; top-level version fails with an actionable
migration hintvalidate_skill_dir emits skill-helper-adoption warnings when scripts import avoidable dependencies covered by dcc_mcp_core.skills_helper, such as requests, httpx, PyYAML, or local JSON/HTTP/file/path helper modulesAlternatives
K-Dense-AI/scientific-agent-skills
Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.
K-Dense-AI/scientific-agent-skills
Medicinal chemistry filters for compound triage. Apply drug-likeness rules (Lipinski, Veber, CNS), structural alert catalogs (PAINS, NIBR, ChEMBL), complexity metrics, and the medchem query language for library filtering.
K-Dense-AI/scientific-agent-skills
Use NeuroKit2 to build or audit reproducible research workflows for physiological time-series preprocessing, event/interval analysis, multimodal alignment, variability, and complexity. Trigger when code imports neurokit2 or needs its current APIs, schemas, and method-aware validation—not for diagnosis or device validation.
majiayu000/spellbook
Complete testing strategy covering TDD workflow, test pyramid, unit/integration/E2E/property testing, framework best practices (Jest, Vitest, pytest), mock strategies, and CI integration. Use when writing tests, reviewing test quality, or establishing testing standards.