Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Writes, improves, or rewrites Seedance 2.0 prompts that TRANSFORM footage the user already has (video-to-video), rather than building a scene from scratch.
SkillScore100/100
Test results 100
3/3 safety checks passed
36%100%of test cases passed +64 pts
Passed 25 of 25 test cases with the skill, and 9 of 25 without it.
16 fixed9 passed either way0 still failing0 broke
This benchmark measured an earlier version of the skill.
A newer attempt on gemini-3.6-flash on 10/3/2026 did not produce a publishable comparison (graded differently). The snapshot above is the previously measured run.
One test taskWhat is the maximum single generation duration supported for a video transformation shot in Seedance 2.0?
Adds every file the skill has, pinned so you can update it. No account needed.
pip install "decimalai>=0.15"
decimalai skills add osidemedia-higgsfield-seedance-vfx
claude --plugin-dir "$(git rev-parse --show-toplevel 2>/dev/null || pwd)/.agents"The same install from Python, for a notebook or a setup script.
pip install "decimalai>=0.15"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
print("Added. Start Claude Code with the command below.")claude --plugin-dir "$(git rev-parse --show-toplevel 2>/dev/null || pwd)/.agents"Type these in a Claude Code session. No account or API key. It writes the skill and any files it bundles, and asks first when its safety rating isn't Passed.
/plugin marketplace add decimal-labs/decimalai-claude-plugins
/plugin install decimalai@decimalai/decimalai:install osidemedia-higgsfield-seedance-vfxThe plugin needs python3 and curl on your machine.
No Python or account. Claude Code picks it up in its next session.
curl -fsSL --create-dirs -o .claude/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md https://app.decimal.ai/s/osidemedia-higgsfield-seedance-vfx/SKILL.md.claude/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdThis gets SKILL.md only. The skill's 2 other files are not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[claude-agent-sdk]"
decimalai skills add osidemedia-higgsfield-seedance-vfximport asyncio
from claude_agent_sdk import ClaudeAgentOptions
from decimalai.claude_agent_sdk import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
async def main():
question = "Hello!"
async with support.run(question) as run: # one user message, one run
async for message in run.query(options=ClaudeAgentOptions(max_turns=6)):
print(message)
# In a notebook or async code: await main()
asyncio.run(main())Prefer its own loader? ClaudeAgentOptions(plugins=[skills_plugin()], skills="all") reads the same folder. Use one or the other: a skill delivered both ways reaches the prompt twice.
The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[claude-agent-sdk]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
import asyncio
from claude_agent_sdk import ClaudeAgentOptions
from decimalai.claude_agent_sdk import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
async def main():
question = "Hello!"
async with support.run(question) as run: # one user message, one run
async for message in run.query(options=ClaudeAgentOptions(max_turns=6)):
print(message)
# In a notebook or async code: await main()
asyncio.run(main())Prefer its own loader? ClaudeAgentOptions(plugins=[skills_plugin()], skills="all") reads the same folder. Use one or the other: a skill delivered both ways reaches the prompt twice.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdimport asyncio
from pathlib import Path
from claude_agent_sdk import ClaudeAgentOptions, query
skill = Path(".agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md").read_text()
options = ClaudeAgentOptions(system_prompt=f"You are a helpful agent.\n\n{skill}", max_turns=6)
async def main():
async for message in query(prompt="Hello!", options=options):
print(message)
# In a notebook or async code: await main()
asyncio.run(main())This gets SKILL.md only. The skill's 2 other files are not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[openai-agents]"
decimalai skills add osidemedia-higgsfield-seedance-vfxfrom agents import Agent, Runner
from decimalai.openai_agents import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = Agent(
name=support.name,
instructions=support.instructions, # your prompt, then the skill list
tools=[*support.tools], # your tools, then load_skill
)
# In a notebook or async code: result = await Runner.run(agent, "Hello!")
result = Runner.run_sync(agent, "Hello!")Using SandboxAgent? capabilities=[Shell(), decimalai.openai_agents.sandbox_skills()] points its own loader at the same folder.
The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[openai-agents]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
from agents import Agent, Runner
from decimalai.openai_agents import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = Agent(
name=support.name,
instructions=support.instructions, # your prompt, then the skill list
tools=[*support.tools], # your tools, then load_skill
)
# In a notebook or async code: result = await Runner.run(agent, "Hello!")
result = Runner.run_sync(agent, "Hello!")Using SandboxAgent? capabilities=[Shell(), decimalai.openai_agents.sandbox_skills()] points its own loader at the same folder.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdfrom pathlib import Path
from agents import Agent, Runner
skill = Path(".agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md").read_text()
agent = Agent(name="support", instructions=f"You are a helpful agent.\n\n{skill}")
# In a notebook or async code: result = await Runner.run(agent, "Hello!")
result = Runner.run_sync(agent, "Hello!")This gets SKILL.md only. The skill's 2 other files are not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[openai]"
decimalai skills add osidemedia-higgsfield-seedance-vfximport json
from openai import OpenAI
from decimalai.openai import agent_config
client = OpenAI()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
def lookup_order(order_id: str) -> str:
return f"Order {order_id} shipped yesterday."
# Your tools, as Chat Completions takes them, and what answers each.
TOOLS = [{"type": "function", "function": {
"name": "lookup_order",
"description": "Look up the status of an order.",
"parameters": {"type": "object", "properties": {"order_id": {"type": "string"}},
"required": ["order_id"]},
}}]
FUNCTIONS = {"lookup_order": lookup_order}
question = "Where is order A1001?"
with support.run(question) as run: # one user message, one run
# run.system is your prompt, then the skill list.
messages = [{"role": "system", "content": run.system}, run.message]
while True:
reply = client.chat.completions.create(
model="gpt-5.4-mini",
messages=messages,
tools=[*TOOLS, *run.tools], # your tools, then load_skill
).choices[0].message
messages.append(reply)
if not reply.tool_calls:
break
for call in reply.tool_calls:
# load_skill is answered by the run; your own tools by FUNCTIONS.
function = FUNCTIONS.get(call.function.name)
messages.append(run.tool_result(call) or {
"role": "tool", "tool_call_id": call.id,
"content": function(**json.loads(call.function.arguments)) if function
else f"There is no tool named {call.function.name!r}.",
})
print(reply.content)
# The Responses API takes run.response_tools instead of run.tools.The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[openai]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
import json
from openai import OpenAI
from decimalai.openai import agent_config
client = OpenAI()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
def lookup_order(order_id: str) -> str:
return f"Order {order_id} shipped yesterday."
# Your tools, as Chat Completions takes them, and what answers each.
TOOLS = [{"type": "function", "function": {
"name": "lookup_order",
"description": "Look up the status of an order.",
"parameters": {"type": "object", "properties": {"order_id": {"type": "string"}},
"required": ["order_id"]},
}}]
FUNCTIONS = {"lookup_order": lookup_order}
question = "Where is order A1001?"
with support.run(question) as run: # one user message, one run
# run.system is your prompt, then the skill list.
messages = [{"role": "system", "content": run.system}, run.message]
while True:
reply = client.chat.completions.create(
model="gpt-5.4-mini",
messages=messages,
tools=[*TOOLS, *run.tools], # your tools, then load_skill
).choices[0].message
messages.append(reply)
if not reply.tool_calls:
break
for call in reply.tool_calls:
# load_skill is answered by the run; your own tools by FUNCTIONS.
function = FUNCTIONS.get(call.function.name)
messages.append(run.tool_result(call) or {
"role": "tool", "tool_call_id": call.id,
"content": function(**json.loads(call.function.arguments)) if function
else f"There is no tool named {call.function.name!r}.",
})
print(reply.content)
# The Responses API takes run.response_tools instead of run.tools.No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdfrom pathlib import Path
from openai import OpenAI
client = OpenAI()
skill = Path(".agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md").read_text()
reply = client.chat.completions.create(
model="gpt-5.4-mini",
messages=[
{"role": "system", "content": f"You are a helpful agent.\n\n{skill}"},
{"role": "user", "content": "Hello!"},
],
).choices[0].messageThis gets SKILL.md only. The skill's 2 other files are not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[anthropic]"
decimalai skills add osidemedia-higgsfield-seedance-vfximport anthropic
from decimalai.anthropic import agent_config
client = anthropic.Anthropic()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
question = "Hello!"
with support.run(question) as run: # one user message, one run
answer = client.beta.messages.tool_runner(
model="claude-haiku-5-5",
max_tokens=4096,
system=run.system, # your prompt, then the skill list
tools=[*run.tools], # your tools, then load_skill
messages=[{"role": "user", "content": question}],
).until_done()The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[anthropic]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
import anthropic
from decimalai.anthropic import agent_config
client = anthropic.Anthropic()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
question = "Hello!"
with support.run(question) as run: # one user message, one run
answer = client.beta.messages.tool_runner(
model="claude-haiku-5-5",
max_tokens=4096,
system=run.system, # your prompt, then the skill list
tools=[*run.tools], # your tools, then load_skill
messages=[{"role": "user", "content": question}],
).until_done()No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdfrom pathlib import Path
import anthropic
client = anthropic.Anthropic()
skill = Path(".agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md").read_text()
reply = client.messages.create(
model="claude-haiku-5-5",
max_tokens=4096,
system=f"You are a helpful agent.\n\n{skill}",
messages=[{"role": "user", "content": "Hello!"}],
)This gets SKILL.md only. The skill's 2 other files are not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[google-genai]"
decimalai skills add osidemedia-higgsfield-seedance-vfxfrom google import genai
from google.genai import types
from decimalai.google_genai import agent_config
client = genai.Client()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
def lookup_order(order_id: str) -> str:
return f"Order {order_id} shipped yesterday."
# Your functions, as declarations for the model, and what answers each.
TOOLS = [{"function_declarations": [{
"name": "lookup_order",
"description": "Look up the status of an order.",
"parameters_json_schema": {"type": "object", "properties": {"order_id": {"type": "string"}},
"required": ["order_id"]},
}]}]
FUNCTIONS = {"lookup_order": lookup_order}
question = "Where is order A1001?"
with support.run(question) as run: # one user message, one run
config = types.GenerateContentConfig(
system_instruction=run.system, # your prompt, then the skill list
tools=[*TOOLS, *run.tool_params], # your functions, then load_skill
)
contents = [{"role": "user", "parts": [{"text": run.message}]}]
while True:
response = client.models.generate_content(
model="gemini-3.5-flash", contents=contents, config=config,
)
if not response.function_calls:
break
contents.append(response.candidates[0].content)
parts = []
for call in response.function_calls:
# load_skill is answered by the run; your own functions by FUNCTIONS.
# A loop of your own rather than automatic function calling, which
# raises KeyError when the model asks for a function you did not pass.
function = FUNCTIONS.get(call.name)
parts.append(run.tool_result(call) or {"function_response": {
"name": call.name, "id": call.id,
"response": {"result": function(**(call.args or {})) if function
else f"There is no function named {call.name!r}."},
}})
contents.append({"role": "user", "parts": parts})
print(response.text)The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[google-genai]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
from google import genai
from google.genai import types
from decimalai.google_genai import agent_config
client = genai.Client()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
def lookup_order(order_id: str) -> str:
return f"Order {order_id} shipped yesterday."
# Your functions, as declarations for the model, and what answers each.
TOOLS = [{"function_declarations": [{
"name": "lookup_order",
"description": "Look up the status of an order.",
"parameters_json_schema": {"type": "object", "properties": {"order_id": {"type": "string"}},
"required": ["order_id"]},
}]}]
FUNCTIONS = {"lookup_order": lookup_order}
question = "Where is order A1001?"
with support.run(question) as run: # one user message, one run
config = types.GenerateContentConfig(
system_instruction=run.system, # your prompt, then the skill list
tools=[*TOOLS, *run.tool_params], # your functions, then load_skill
)
contents = [{"role": "user", "parts": [{"text": run.message}]}]
while True:
response = client.models.generate_content(
model="gemini-3.5-flash", contents=contents, config=config,
)
if not response.function_calls:
break
contents.append(response.candidates[0].content)
parts = []
for call in response.function_calls:
# load_skill is answered by the run; your own functions by FUNCTIONS.
# A loop of your own rather than automatic function calling, which
# raises KeyError when the model asks for a function you did not pass.
function = FUNCTIONS.get(call.name)
parts.append(run.tool_result(call) or {"function_response": {
"name": call.name, "id": call.id,
"response": {"result": function(**(call.args or {})) if function
else f"There is no function named {call.name!r}."},
}})
contents.append({"role": "user", "parts": parts})
print(response.text)No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdfrom pathlib import Path
from google import genai
from google.genai import types
client = genai.Client()
skill = Path(".agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md").read_text()
response = client.models.generate_content(
model="gemini-3.5-flash",
contents="Hello!",
config=types.GenerateContentConfig(system_instruction=f"You are a helpful agent.\n\n{skill}"),
)This gets SKILL.md only. The skill's 2 other files are not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[langchain]" langchain-openai
decimalai skills add osidemedia-higgsfield-seedance-vfxfrom langchain.agents import create_agent
from decimalai.langchain import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = create_agent(
"openai:gpt-5.4-mini",
tools=[], # your tools; the middleware adds load_skill
middleware=[support.middleware], # your prompt, the skill list and load_skill
)
result = agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[langchain]" langchain-openaifrom decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
from langchain.agents import create_agent
from decimalai.langchain import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = create_agent(
"openai:gpt-5.4-mini",
tools=[], # your tools; the middleware adds load_skill
middleware=[support.middleware], # your prompt, the skill list and load_skill
)
result = agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdfrom pathlib import Path
from langchain.agents import create_agent
skill = Path(".agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md").read_text()
agent = create_agent("openai:gpt-5.4-mini", tools=[], system_prompt=f"You are a helpful agent.\n\n{skill}")
result = agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})This gets SKILL.md only. The skill's 2 other files are not included.
CrewAI's own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" "crewai>=1.15.27"
decimalai skills add osidemedia-higgsfield-seedance-vfximport decimalai.crewai
from crewai import Agent, Crew, Task
agent = Agent(
role="Support", goal="Help the customer", backstory="A support agent.",
llm=llm, # your own CrewAI LLM
skills=decimalai.crewai.skills(), # the installed folder
tools=decimalai.crewai.skill_tools(), # reads a skill's files, runs its scripts
)
task = Task(description="Hello!", expected_output="an answer", agent=agent)
Crew(agents=[agent], tasks=[task]).kickoff()The same install from Python, for a notebook or a setup script. CrewAI's own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" "crewai>=1.15.27"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
import decimalai.crewai
from crewai import Agent, Crew, Task
agent = Agent(
role="Support", goal="Help the customer", backstory="A support agent.",
llm=llm, # your own CrewAI LLM
skills=decimalai.crewai.skills(), # the installed folder
tools=decimalai.crewai.skill_tools(), # reads a skill's files, runs its scripts
)
task = Task(description="Hello!", expected_output="an answer", agent=agent)
Crew(agents=[agent], tasks=[task]).kickoff()No DecimalAI package. CrewAI's own loader reads the folder, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdfrom pathlib import Path
from crewai import Agent, Crew, Task
agent = Agent(
role="Support", goal="Help the customer", backstory="A support agent.",
llm=llm, # your own CrewAI LLM
skills=[Path(".agents/skills")],
)
task = Task(description="Hello!", expected_output="an answer", agent=agent)
Crew(agents=[agent], tasks=[task]).kickoff()This gets SKILL.md only. The skill's 2 other files are not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[adk]"
decimalai skills add osidemedia-higgsfield-seedance-vfxfrom decimalai.adk import DecimalAIPlugin, agent_config
from google.adk.agents import LlmAgent
from google.adk.apps import App
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = LlmAgent(
name="support", # ADK needs a Python identifier
model="gemini-3.5-flash",
instruction=support.instruction, # your prompt, then the skill list
tools=[*support.tools], # your tools, then load_skill
)
# DecimalAIPlugin makes each invocation of runners built from this App one trace.
app = App(name="support", root_agent=agent, plugins=[DecimalAIPlugin()])Prefer ADK's own loader? SkillToolset(skills=decimalai.adk.skills(), ...) reads the same folder. Use one or the other: a skill delivered both ways reaches the prompt twice.
The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[adk]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
from decimalai.adk import DecimalAIPlugin, agent_config
from google.adk.agents import LlmAgent
from google.adk.apps import App
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = LlmAgent(
name="support", # ADK needs a Python identifier
model="gemini-3.5-flash",
instruction=support.instruction, # your prompt, then the skill list
tools=[*support.tools], # your tools, then load_skill
)
# DecimalAIPlugin makes each invocation of runners built from this App one trace.
app = App(name="support", root_agent=agent, plugins=[DecimalAIPlugin()])Prefer ADK's own loader? SkillToolset(skills=decimalai.adk.skills(), ...) reads the same folder. Use one or the other: a skill delivered both ways reaches the prompt twice.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdfrom pathlib import Path
from google.adk.agents import LlmAgent
skill = Path(".agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md").read_text()
agent = LlmAgent(
name="support",
model="gemini-3.5-flash",
instruction=lambda context: f"You are a helpful agent.\n\n{skill}",
)This gets SKILL.md only. The skill's 2 other files are not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[pydantic-ai]"
decimalai skills add osidemedia-higgsfield-seedance-vfxfrom pydantic_ai import Agent
from decimalai.pydantic_ai import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = Agent(
"openai:gpt-4o-mini",
name=support.name,
tools=[], # your tools; the capability adds load_skill
capabilities=[support], # your prompt, the skill list and load_skill
)
# In a notebook or async code: result = await agent.run("Hello!")
result = agent.run_sync("Hello!")On the Pydantic AI harness, decimalai.pydantic_ai_harness.skills(project) uses its own loader instead.
The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[pydantic-ai]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
from pydantic_ai import Agent
from decimalai.pydantic_ai import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = Agent(
"openai:gpt-4o-mini",
name=support.name,
tools=[], # your tools; the capability adds load_skill
capabilities=[support], # your prompt, the skill list and load_skill
)
# In a notebook or async code: result = await agent.run("Hello!")
result = agent.run_sync("Hello!")On the Pydantic AI harness, decimalai.pydantic_ai_harness.skills(project) uses its own loader instead.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdfrom pathlib import Path
from pydantic_ai import Agent
skill = Path(".agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md").read_text()
agent = Agent("openai:gpt-4o-mini", instructions=f"You are a helpful agent.\n\n{skill}")
# In a notebook or async code: result = await agent.run("Hello!")
result = agent.run_sync("Hello!")This gets SKILL.md only. The skill's 2 other files are not included.
Deep Agents' own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" deepagents
decimalai skills add osidemedia-higgsfield-seedance-vfximport decimalai.deepagents
from deepagents import create_deep_agent
agent = create_deep_agent(model=model, **decimalai.deepagents.skills())
agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})The default backend reads files but has no shell. To run a skill's scripts, pass skills(backend=LocalShellBackend(...)).
The same install from Python, for a notebook or a setup script. Deep Agents' own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" deepagentsfrom decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
import decimalai.deepagents
from deepagents import create_deep_agent
agent = create_deep_agent(model=model, **decimalai.deepagents.skills())
agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})The default backend reads files but has no shell. To run a skill's scripts, pass skills(backend=LocalShellBackend(...)).
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdfrom pathlib import Path
from deepagents import create_deep_agent
skill = Path(".agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md").read_text()
agent = create_deep_agent(model=model, system_prompt=f"You are a helpful agent.\n\n{skill}")
agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})This gets SKILL.md only. The skill's 2 other files are not included.
Its own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" agent-framework
decimalai skills add osidemedia-higgsfield-seedance-vfximport asyncio
from agent_framework import Agent
from decimalai.agent_framework import skills
agent = Agent(client=client, instructions="You are a helpful agent.", context_providers=[skills()])
asyncio.run(agent.run("Hello!"))It caches skills by default, so restart the process after decimalai skills update.
The same install from Python, for a notebook or a setup script. Its own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" agent-frameworkfrom decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
import asyncio
from agent_framework import Agent
from decimalai.agent_framework import skills
agent = Agent(client=client, instructions="You are a helpful agent.", context_providers=[skills()])
asyncio.run(agent.run("Hello!"))It caches skills by default, so restart the process after decimalai skills update.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdimport asyncio
from pathlib import Path
from agent_framework import Agent
skill = Path(".agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md").read_text()
agent = Agent(client=client, instructions=f"You are a helpful agent.\n\n{skill}")
asyncio.run(agent.run("Hello!"))This gets SKILL.md only. The skill's 2 other files are not included.
Strands' own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" strands-agents
decimalai skills add osidemedia-higgsfield-seedance-vfxfrom decimalai.strands import skills
from strands import Agent
from strands.vended_tools import file_editor, shell
agent = Agent(
model=model, # always pass one: the default is Amazon Bedrock
system_prompt="You are a helpful agent.",
tools=[file_editor, shell],
plugins=[skills()],
)
agent("Hello!")Strands loads an agent's skills once, so build the agent again after decimalai skills update.
The same install from Python, for a notebook or a setup script. Strands' own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" strands-agentsfrom decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("osidemedia-higgsfield-seedance-vfx")
if result.exit_code:
raise SystemExit(result.problems)
from decimalai.strands import skills
from strands import Agent
from strands.vended_tools import file_editor, shell
agent = Agent(
model=model, # always pass one: the default is Amazon Bedrock
system_prompt="You are a helpful agent.",
tools=[file_editor, shell],
plugins=[skills()],
)
agent("Hello!")Strands loads an agent's skills once, so build the agent again after decimalai skills update.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdfrom pathlib import Path
from strands import Agent
skill = Path(".agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md").read_text()
agent = Agent(model=model, system_prompt=f"You are a helpful agent.\n\n{skill}")
agent("Hello!")This gets SKILL.md only. The skill's 2 other files are not included.
Adds every file the skill has, pinned so you can update it. Cursor, Copilot, Cline and Warp read this folder by themselves.
pip install "decimalai>=0.15"
decimalai skills add osidemedia-higgsfield-seedance-vfxNo Python or account. Cursor, Copilot, Cline and Warp read this folder by themselves.
curl -fsSL --create-dirs -o .agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.md https://app.decimal.ai/s/osidemedia-higgsfield-seedance-vfx/SKILL.md.agents/skills/osidemedia-higgsfield-seedance-vfx/SKILL.mdThis gets SKILL.md only. The skill's 2 other files are not included.
Give its text to your model as instructions. No account or package needed.
This gets SKILL.md only. The skill's 2 other files are not included.
Raw files: /s/osidemedia-higgsfield-seedance-vfx/SKILL.md · /s/osidemedia-higgsfield-seedance-vfx.json
Fetch the file and give its text to your model as instructions. No account or package needed.
curl -fsSL https://app.decimal.ai/s/osidemedia-higgsfield-seedance-vfx/SKILL.mdcurl -fsSL https://app.decimal.ai/s/osidemedia-higgsfield-seedance-vfx.jsonThis gets SKILL.md only. The skill's 2 other files are not included.
You don't need a DecimalAI account.
Saved prompts and skills, pinned versions, and traces of this skill in your runs. DecimalAI does not run your agent.
Claude Code reads files from your project, so DecimalAI config does not apply there.
On Claude Agent SDK: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On OpenAI Agents: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On OpenAI SDK: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On Anthropic: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On Gemini API: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On LangChain: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On CrewAI: set DECIMAL_API_KEY and add decimalai.init(crewai=True) to record runs and skill use. The skill version stays in your repo.
On Google ADK: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On Pydantic AI: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On Deep Agents: set DECIMAL_API_KEY and add decimalai.init(langchain=True) to record runs and skill use. The skill version stays in your repo.
On Microsoft Agent Framework: set DECIMAL_API_KEY and add decimalai.init(otel=True, agent_name="support") to record runs and skill use. The skill version stays in your repo.
On Strands: set DECIMAL_API_KEY and add decimalai.init(otel=True, agent_name="support") to record runs and skill use. The skill version stays in your repo.
Editors read files from your project, so DecimalAI config does not apply there.
Anywhere else: record a use with decimalai.log_skill_activation() inside a trace.
This skill is for editing a clip the user already has: keep a real subject and the
real camera move, change only what they ask for. It is the video-to-video sibling of
../higgsfield-seedance/SKILL.md (the general Seedance director). It reuses that skill's
grammar verbatim — the six-slot formula, the Prompt-Craft Laws, the preflight linter —
and adds the transformation layer below. Do not contradict the parent skill; when a shot
needs filter-safety, mode selection, or engine rules, defer to it.
This file is the Seedance 2.0 v2v lane. It stays the right choice when the job needs 4K,
mode=std, or agenrehint. If the plate job is running on Seedance 2.5 — up to 1080p, up to 30 s, many references, platform start/end frames inomni_reference— the lane isomni_referencewith the clip attached as a video reference, and its production doctrine (source ≥ 4 s, duration = source, the four-batch rule, the performance-inheritance clause) lives in../higgsfield-seedance-2-5/VFX-PIPELINE.md.
This skill is a video-to-video layer on top of
../higgsfield-seedance/SKILL.md. Every VFX transform is still a Seedance prompt. This skill only changes the starting point: a real source clip whose subject, performance, and camera move must survive the edit.higgsfield-seedance§ Seedance 2.0 Prompt Modes / Transformation covers the in-clip morph (a character visibly becoming something else in one take); this skill covers preservation-VFX — lock the real plate, layer the effect in.
Routing aids — read the linked sections for the actual rules.
fast can't do 4K; Cinema Studio caps at 1080p) →@source declares the clip as the base (not a style ref); add @creature/@element only when a real texture keeps getting faked →On the line "…") + numeric (At about Ts); see references/dialogue-timing.md →total − intro = surviving window for the source performance; recompute on every change →references/first-frame.md →A transformation prompt has two jobs that pull against each other: lock everything that makes the source recognizable (the person's identity, face, wardrobe, performance, framing, lens, and camera motion), and change only the named element. If you under-specify the lock, Seedance re-rolls the face or the camera and the edit stops matching the original. So every prompt states both halves explicitly, and repeats the most fragile guardrail — usually "face and identity unchanged" — at the end of the action.
This is the whole blueprint: real footage goes in, the exact same shot comes back — same subject, same movement — with only the one requested change applied.
Run everything in Seedance 2.0, mode=std, 4K. The 4K matters: faces, lip-sync and fine
detail hold at 4K where they warp and fall apart at 1080p — and a footage transform lives or
dies on the preserved face reading as the same face. The 4k resolution enum is
model-verified (../../specs/model-specs.json → seedance_2_0); the "detail holds at 4K"
observation is a practitioner claim, strong but not a spec guarantee.
Two model constraints to respect (from ../higgsfield-seedance/SKILL.md § Pre-flight Linter):
native 4K is available in mode=std only — mode=fast (Seedance 2.0 Fast) caps at
480p/720p, and inside Cinema Studio the model is still capped at 1080p. So a 4K footage
transform must run in std mode, on the standard Seedance 2.0 surface. If the user is on fast
mode or in Cinema Studio and asks for 4K, flag the cap before they generate.
@source declarationThe source clip is the base, not a style reference. One line:
@source: Original <clip name> — <who/what is in it: subject, wardrobe, setting, action>. Preserve
<identity, face, wardrobe, performance, framing, camera and motion> exactly; <what to change —
e.g. enhance only the environment / add the creature on the tower / transform only the right arm>.
If a transformation needs a real texture the model keeps faking (an animal's fur, a specific face), add a second input as a texture reference and declare it:
@creature: Reference photo of a real <animal> — <fur / face / anatomy notes>. Appearance and
fur/skin texture reference only; ignore the photo's background and lighting, do not use it for the
environment.
The user supplies their own descriptions of what is in their files — use the tags correctly,
don't invent what the clip contains. But before writing @source for a clip you can open,
inspect it: read its duration / fps / aspect and extract a few frames. Build @source and
the specs runtime from what the footage actually shows — subject, wardrobe, framing, camera
move, time of day, key direction — not from the user's one-line summary. Set the specs duration
to the probed runtime by default. If no source clip is described, ask what footage they're
starting from before writing.
Seedance reads an uploaded video as a set of frames, not as a watched clip — so the frame content (subject, walk, light) is the context it has. Same principle as the screenshot → Claude workflow in
../higgsfield-seedance/SKILL.md§ Load-Bearing Rule.
One compact line. Always include the source-matching constraints:
Photoreal. <aspect, default 16:9>. <duration — match the source clip>s. 4K. <look / grade>.
NON-IP — generic <creature/design>, not based on any brand or character. <SFX only | SFX and
source dialogue only>.
../higgsfield-seedance/SKILL.md § The Rewrite Playbook / Brand · IP.)SFX only for added effects; SFX and source dialogue only when the source talk
track must survive (e.g. a zoom synced to a spoken line — see
references/dialogue-timing.md).The source is a single take, so describe continuous camera movement, not cuts. Lead with the shot/lens and "same framing as the source," then the preserved performance, then the transformation, then any timed camera move. Close with the lock-down clause.
End with a specific, ordered SFX note, exactly as the parent grammar requires. For added effects be behavioral: not "fire" but "a soft whoomph as it catches, then a low steady flame roar and crackle, occasional ember pop." Sync every effect (footsteps, impacts, wind, creature calls, servo whirs) to the visible action.
The workflow scales in difficulty. The steps are identical at every level — inspect the clip, name the one change, lock the rest — but the harder the camera moves, the harder the effect has to track:
Locked-off shots are easy — the frame barely changes, so the model just paints the effect in. The difficulty is entirely in how much the camera moves.
Set a head on fire, transform a hand, make a limb invisible, perch a creature on a landmark. Keep the whole plate; layer the effect in.
Keep the person, their vehicle, the seatbelt, the camera rig and its move; swap the whole world.
First decide the fork with the user — it changes everything:
Color matching alone is not enough to make a preserved subject sit in a new world — that's the most common "looks pasted in" failure. When integrating a subject (or a creature) into a plate, go beyond color with this recipe:
State the time of day and key direction concretely ("soft, diffused midday daylight with the key
coming from screen-right"). "Softer" means a larger, more diffuse source: gentle soft-edged
shadows, low contrast, smooth highlight rolloff, light haze. Full cinematic-lighting vocabulary is
in ../../vocab.md § Lighting.
When a creature or hard-surface element is added and must read as real:
@creature above). When
you already know exactly what you want, it's better to show the model than to describe it;
generate the reference in ../higgsfield-gpt-image-2/SKILL.md (GPT Image 2) or Nano Banana Pro,
then point the prompt at it.A crash zoom or smooth push-in landing on a beat is a recurring payoff. Anchor it two ways at
once so it lands even if Seedance's internal timing drifts: a semantic cue and a numeric cue.
The full measurement procedure — how to read T off the source audio and convert a timecode —
is in references/dialogue-timing.md.
On the line "<exact words>," the camera <snaps into a hard crash zoom | begins a smooth, steady push-in> …. Requires SFX and source dialogue only in the specs so the talk
track survives.At about <T> seconds … the camera …. Get T from the source audio (or a visible
action beat — "at about 2.2s, on his finger snap").The mirror of the push-in: open tight on the added element in isolation — a long-telephoto, compressed framing of the creature/effect with the subject out of frame — then move outward to land on the real plate. Two flavors, match the user's word:
Anchor the landing the same two ways as a timed zoom, and demand a 100% match of the source composition at the landing: name the matched attributes — same angle, headroom, horizon, lens character — or the model lands on a near-miss framing that no longer cuts against the original. After the landing, hand off to the preserved take and keep the source's own camera motion running.
When the payoff is the subject's mouth matching a specific line, quote it verbatim and anchor
it twice: once inside the action ("…lips matching the source exactly, saying clearly: ''…")
and once in the SFX/dialogue line. Require SFX and source dialogue only in the specs so the talk
track survives, and add "lips matching the source exactly" to the lock-down clause. Then check the
line against the surviving dialogue window (see § Duration discipline / Prepended-intro budget) —
a line that runs ~6s cannot sit in a 5s tail. If it doesn't fit, resolve the runtime before
delivering; don't ship a prompt that can't lip-sync. Dialogue + [AUDIO: Xs] mechanics live in
../higgsfield-audio/SKILL.md.
Default to the source clip's exact runtime. When the user changes the runtime, recompute any numeric zoom timing and tell them the new mark. When a long hold lands on a static creature, add small "living" micro-movements (a slow blink, jaw shift, steady breath) so it doesn't look frozen.
When you prepend a beat (a reveal, a telephoto hold, an establishing creature shot) to footage you must preserve, the preserved take does not get longer — it gets pushed back. State the arithmetic every time and flag what falls off:
total runtime − intro length = surviving window for the source performance
If the source take is longer than that surviving window, some of it cannot play. Say so explicitly and offer the three resolutions, in order of fidelity:
Never promise "100% lip-sync" and a prepended intro on a fixed total without doing this subtraction first. Recompute and re-flag it on every change to either number.
Before spending video credits, it's often worth generating the transformed opening still as an
image, locking the look, then animating from it. See references/first-frame.md for the full
procedure (model, settings, inputs, upload mechanics, and how to hand the still back to Seedance
as a start_image). This pairs with ../higgsfield-seedance/SKILL.md § Drafts Validate the Prompt
— pin the frame, not the roll.
The user iterates fast and in small steps ("softer light," "from the right," "bigger snowier
mountains," "make the chimp huge," "a beat before the zoom," "keep the original runtime"). Change
only the named thing and keep the rest of the prompt stable — re-rolling the whole prompt loses
what already worked. When refining a generated still, edit the chosen result (pass it back as the
base) and fix only what's off rather than starting over. This is the footage-transform case of
../higgsfield-prompt/SKILL.md § The Iteration Rule.
Output in English first, plain text — no bold, no headers, no bullets inside the prompt, not in a code block. Easy to copy as-is. Chinese translation only if asked, after the English, same format.
A short label above each prompt (e.g. Hook_2 · Variant 1 — Through the clouds) is fine and helps
when you deliver several variants; the prompt body itself stays plain text.
Skeleton:
@source: ...
@creature: ... (only if a texture reference is used)
Photoreal. 16:9. <N>s. 4K. <look/grade>. NON-IP — generic <X>. SFX [and source dialogue] only.
<Continuous shot, same framing as source. Preserved performance. The transformation, with physics
and plate interaction. Any timed camera move with semantic + numeric anchor. Lock-down clause: face
and identity unchanged; everything else identical to the source.>
SFX [and source dialogue] only: <specific, ordered sounds>.
Terse and kinetic; physically precise (exact materials, behaviors, scale); director-minded (lenses,
angles, moves); non-generic (no "beautiful / stunning / amazing" — texture words instead);
emotionally controlled. Don't inflate, don't soften, don't explain what things "represent." Same
anti-slop discipline as ../higgsfield-seedance/SKILL.md § Voice Rewrite.
Images ≤ 9; videos ≤ 3 items, total ≤ 15s; audio ≤ 3 MP3s, total ≤ 15s; total mixed inputs ≤ 12;
generation duration 4–15s. A source clip plus a texture-reference photo fits easily. If a request
needs more inputs than allowed, flag it and say what to prioritize. (Verified against
../../specs/model-specs.json → seedance_2_0: media_roles include video, image, audio,
start_image, end_image; 4k is a legal resolution in mode=std.)
@source (preserve all, add effect) → specs + 4K + NON-IP + SFX only →
continuous shot, preserved performance, effect igniting/creeping with plate interaction, subject unfazed → lock-down clause → SFX.@source (preserve subject + vehicle + rig + motion, replace world) →
specs + 4K + grade for the new world → continuous shot from the same rig, new world streaming past with parallax, relight to match or relight-all → lock-down → SFX.@source + @creature (texture ref) → specs + 4K + NON-IP + SFX and source dialogue only → continuous locked shot, giant photoreal creature integrated on the landmark, subject delivering to camera → at ~T / on the line "…", smooth push-in keeping the landmark in frame, creature turns to camera → lock-down → SFX and dialogue.@source (preserve subject + performance + lip-sync + framing, add element, prepend a telephoto intro) + @creature (texture ref) → specs + 4K + NON-IP + SFX and source dialogue only → open tight/telephoto on the added element in isolation for the intro beat, hard or smooth zoom-out at ~T landing on a 100% match of the source composition, then the preserved take plays with exact lip-sync to the quoted line while the added element continues behind → budget check (intro + remaining = total) →
lock-down → SFX and dialogue.A ready-to-fill skeleton plus worked variants live in
../../templates/seedance/footage-vfx-transform.md.
../higgsfield-seedance/SKILL.md — the parent Seedance director: six-slot formula, Prompt-Craft
Laws, engine rules, content-filter preflight linter, and the in-clip Transformation prompt mode../higgsfield-audio/SKILL.md — audio-as-conditioning, [AUDIO: Xs] dialogue/SFX, lip-sync (the
timed-zoom-to-dialogue and source-dialogue-preservation cases)../higgsfield-camera/SKILL.md — video reference, the Load-Bearing Rule, camera-move vocabulary
(handheld preservation + moves you never filmed)../higgsfield-gpt-image-2/SKILL.md — generate the creature/texture reference image and the
transformed start frame../higgsfield-facs/SKILL.md — muscle-level facial control when a dialogue-preserving transform
also needs an exact expressionreferences/dialogue-timing.md · references/first-frame.md — the two procedures this skill leans onAutomatically, when a task matches. Use whenever a real clip is the starting point and they want to: add a VFX element (set a head or hair on fire, transform a hand, make a limb invisible), swap the environment around a preserved subject (desert, clouds, lava, a neon city), drop a giant photoreal creature behind or onto a subject/landmark, relight or regrade so subject and adde
Skills that do similar work, with their headline benchmark lift.
From the same source and nearby in the catalogue.