Install any skill in seconds. Free to start, no credit card required.
Get Started Free →将调研、概念架构、体验诊断、验证计划、脑图/xmind/系统设计图、已有策划案和生产约束收束为商业游戏策划案、独立游戏设计案、立项评审稿、发行/投资 pitch 或 vertical slice 设计文档。适用于一句话创意先经 game-concept-architect 生成概念契约后再成案、玩法/系统脑图转可落地策划案、审核并改进已有策划案。强调证据边界、受众与商业适配、scope gate、里程碑、风险、决策请求和下一步投入条件;不替代上游创意生成或体验诊断。
SkillScore59/100
Test results 59
3/3 safety checks passed
14%59%of test cases passed +45 pts
Passed 13 of 22 test cases with the skill, and 3 of 22 without it.
10 fixed3 passed either way9 still failing0 broke
One test task这里有一份玩家实况录屏的视频诊断报告和用户弹幕反馈,我们想诊断游戏第二关在视觉引导和打击反馈上的问题,请帮我分析这份视频证据并输出试玩问题诊断卡片。
Adds every file the skill has, pinned so you can update it. No account needed.
pip install "decimalai>=0.15"
decimalai skills add dy-2026-game-design-proposal-writer
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("dy-2026-game-design-proposal-writer")
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 dy-2026-game-design-proposal-writerThe 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/dy-2026-game-design-proposal-writer/SKILL.md https://app.decimal.ai/s/dy-2026-game-design-proposal-writer/SKILL.md.claude/skills/dy-2026-game-design-proposal-writer/SKILL.mdThis gets SKILL.md only. The skill's 20 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 dy-2026-game-design-proposal-writerimport 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/SKILL.mdimport asyncio
from pathlib import Path
from claude_agent_sdk import ClaudeAgentOptions, query
skill = Path(".agents/skills/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerfrom 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/SKILL.mdfrom pathlib import Path
from agents import Agent, Runner
skill = Path(".agents/skills/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerimport 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/SKILL.mdfrom pathlib import Path
from openai import OpenAI
client = OpenAI()
skill = Path(".agents/skills/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerimport 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/SKILL.mdfrom pathlib import Path
import anthropic
client = anthropic.Anthropic()
skill = Path(".agents/skills/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerfrom 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/SKILL.mdfrom pathlib import Path
from google import genai
from google.genai import types
client = genai.Client()
skill = Path(".agents/skills/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerfrom 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/SKILL.mdfrom pathlib import Path
from langchain.agents import create_agent
skill = Path(".agents/skills/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerimport 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerfrom 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/SKILL.mdfrom pathlib import Path
from google.adk.agents import LlmAgent
skill = Path(".agents/skills/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerfrom 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/SKILL.mdfrom pathlib import Path
from pydantic_ai import Agent
skill = Path(".agents/skills/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerimport 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/SKILL.mdfrom pathlib import Path
from deepagents import create_deep_agent
skill = Path(".agents/skills/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerimport 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/SKILL.mdimport asyncio
from pathlib import Path
from agent_framework import Agent
skill = Path(".agents/skills/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerfrom 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("dy-2026-game-design-proposal-writer")
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/dy-2026-game-design-proposal-writer/SKILL.mdfrom pathlib import Path
from strands import Agent
skill = Path(".agents/skills/dy-2026-game-design-proposal-writer/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 20 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 dy-2026-game-design-proposal-writerNo Python or account. Cursor, Copilot, Cline and Warp read this folder by themselves.
curl -fsSL --create-dirs -o .agents/skills/dy-2026-game-design-proposal-writer/SKILL.md https://app.decimal.ai/s/dy-2026-game-design-proposal-writer/SKILL.md.agents/skills/dy-2026-game-design-proposal-writer/SKILL.mdThis gets SKILL.md only. The skill's 20 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 20 other files are not included.
Raw files: /s/dy-2026-game-design-proposal-writer/SKILL.md · /s/dy-2026-game-design-proposal-writer.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/dy-2026-game-design-proposal-writer/SKILL.mdcurl -fsSL https://app.decimal.ai/s/dy-2026-game-design-proposal-writer.jsonThis gets SKILL.md only. The skill's 20 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.
使用本 skill 时,把已经存在的调研材料、创意方案、玩家承诺、竞品证据、体验诊断、ED 实验、生产约束和商业目标,整理成可以被制作人、老板、发行、投资人、合作方或独立团队成员评审的游戏策划案/独游设计案。
它不是普通 GDD 生成器,也不是把一句话创意扩写成长文的工具。创意还没有被拆出 design nucleus 时,优先提醒使用 game-concept-architect;样本体验还没有证据层时,优先提醒使用 game-experience-analyzer;需要一周体验实验时,优先提醒使用 game-experience-density-optimizer。本 skill 的核心工作是把上游产物变成一份有受众、有论证、有取舍、有风险、有下一步决策的文档。
如果用户给的是一句话创意,但明确要求“写策划案/立项案/独游设计案/pitch/GDD”,不要直接跳过上游。先调用 game-concept-architect 产出 concept brief、player-promise-contract、core loop、scope gate 和 validation plan,再用本 skill 成案。最终文档要标注“上游概念由本轮自动生成,证据等级仍为 assumption / needs_research”。
用户可在自己的环境中处理真实项目、私有项目或客户项目。准备公开仓库案例时,只能使用 synthetic、公开或明确授权的材料,并在发布前执行 Human Gate。
当用户想写、改写、压缩或评审以下材料时,使用本 skill:
game-concept-architect 拆成概念契约,再整理成正式策划案。以下请求要强触发:
如果用户只有一句话创意,并且目标是判断创意是否成立,应优先使用 game-concept-architect。如果用户同时要求产出策划案,本 skill 应作为第二步,在 game-concept-architect 输出后接续成案。
如果用户给的是录屏、PV、截图或试玩反馈,并希望诊断体验问题,应优先使用 game-experience-analyzer。
如果用户要的是首局节奏、反馈、具身感、氛围、认知负荷、留存或一周 A/B 实验,应优先使用 game-experience-density-optimizer。
如果用户只是要宣传文案、商店页短描述、众筹页面、PR 文案或广告脚本,本 skill 可以给文档中的定位和承诺,但不应替代专门的 marketing copywriting。
写案前先做一次项目内协作自检,但不要把本 skill 退化成泛品类设计回答。本 skill 只负责把项目内其他 skill 或用户已有材料收束成评审文档,不继承项目外的全局设计总师口径。
primary_category:先判断主品类/副品类、平台、商业模型和项目阶段。core_player_action:先看玩家反复做什么,再看题材、系统和文案。anti_pollution:商业案、独游案、Steam pitch、手游立项、Demo 文档不要互相套模板。proof_of_play:对外 pitch 必须说明 playable build、gameplay video、demo、vertical slice、玩家反馈或指标的状态。scope_feasibility:所有系统、内容、预算和里程碑都必须受团队能力约束。negative_example:至少写一个看似相似但不应采用/不应投递的反例。如果用户的真实需求还停留在一句话创意、媒体样本诊断或体验浓度实验,应先交给项目内对应 skill 形成稳定上游产物,再由本 skill 负责整理成评审文档:
game-concept-architect:输出 concept brief、player-promise-contract、core loop、scope gate 和 validation plan。game-experience-analyzer:输出 evidence-index、issue-card、sample boundary 和体验诊断。game-experience-density-optimizer:输出 ED handoff、一周实验、埋点字段、决策规则和 rollback 条件。game-design-source-curator:输出 source notes、reference boundary 和可追溯知识条目。当输入只有一句话创意但目标是策划案时,按两段式执行:
game-concept-architect 生成 concept brief、player-promise-contract、core loop、scope gate、validation plan。Source Artifact Inventory 里标注 generated_this_turn_by_game-concept-architect,不要伪装成用户已提供证据。当用户给出 xmind、脑图截图、OPML、Markdown 大纲、Word/Excel 导出、玩法系统表或系统设计结构图时,先读取 references/mindmap-and-existing-proposal-input.zh-CN.md:
当用户给出已有策划案、GDD、pitch、立项文档或 vertical slice 文档并要求审核、重写、改进、压缩、变正式时:
proposal review,指出缺失、过度承诺、scope 风险、证据伪装、读者不匹配、无法执行的里程碑。revision plan,说明保留什么、重写什么、删除什么、需要补什么证据。Change Log 和 Remaining Unknowns。在写任何完整策划案前,必须按下面顺序完成。用户要求短稿时可以压缩,但不要跳过边界、证据、scope 和决策门。
proposal intake:确认文档受众、使用场景、输出模式、平台、商业模式、项目阶段和材料来源。source artifact inventory:列出已有材料,例如 concept brief、player-promise-contract、validation plan、evidence-index、issue-card、ed-handoff、market/source notes、production profile。case visibility:记录可见性、输出去向和是否需要脱敏。它只用于输出管理,不限制用户在本地环境处理真实项目。document purpose:明确这份文档要推动什么决策,而不是只追求完整。evidence and assumption boundary:把事实、引用、用户提供信息、模型推断、assumption 和 unknown 分开。proposal mode selection:选择商业游戏策划案、独游设计案、一页决策 memo、发行 pitch outline 或 vertical slice design doc。proposal spine:先写一句话定位、玩家承诺、核心循环、目标玩家、平台/商业假设和差异化边界。scope and production gate:区分 MVP、Vertical Slice、Demo/公开试玩、Release、Post-launch、暂不开发和建议砍掉。risk and validation narrative:写清最大风险、验证动作、通过/失败标准、下一步投入条件。document assembly:再按选定模板写成正式文档。quality gate:检查是否可评审、可执行、可删减、可验证,且没有把未知写成确定事实。templates/proposal-intake.md,建立输入边界。若用户没有提供足够材料,不要停下;先产出 assumption draft,并最多提出 3 个会改变文档方向的问题。references/proposal-intake-router.zh-CN.md,判断输出模式。references/mindmap-and-existing-proposal-input.zh-CN.md,先做结构提取或 review,再成案。references/evidence-assumption-boundary.zh-CN.md,把每个关键判断标成 provided、derived、external_evidence、assumption、unknown 或 needs_research。references/commercial-game-proposal-framework.zh-CN.md 或 references/indie-design-dossier-framework.zh-CN.md,根据文档目标建立章节结构。references/audience-business-scope-gate.zh-CN.md,检查目标玩家、平台、商业模式和 scope 是否互相支持。references/publisher-platform-proof-gate.zh-CN.md,补齐 proof of play、publisher/platform fit、ask、budget、timeline 和 recheck gate。references/scope-and-milestone-gates.zh-CN.md,输出里程碑和下一步投入条件。references/pitch-document-quality-gate.zh-CN.md,执行最终文档门。templates/commercial-game-proposal.mdtemplates/indie-design-dossier.mdtemplates/one-page-decision-memo.mdtemplates/publisher-pitch-outline.mdtemplates/vertical-slice-design-doc.mdtemplates/proposal-evidence-ledger.mdtemplates/milestone-gate-plan.mdtemplates/risk-register.mdtemplates/existing-proposal-review.md| 模式 | 默认触发 | 交付重点 |
|---|---|---|
commercial_product_proposal | 商业游戏、手游、网游、小游戏、F2P、内部立项、老板评审 | 产品定位、目标玩家、核心体验、系统与商业闭环、平台渠道、制作成本、指标、风险和立项决策 |
indie_design_dossier | 独立游戏、Steam、主机/PC 买断、solo/small team、发行 pitch | 创作命题、玩家幻想、可卖点、最小内容策略、vertical slice、制作边界、社区/发行验证和风险 |
one_page_decision_memo | 用户要求快速判断、老板只看一页、会前材料 | 结论、为什么值得看、最大风险、最小验证、需要什么决策 |
publisher_pitch_outline | 发行、投资、合作方、比赛/孵化器 | 可被外部人快速理解的 pitch 结构、卖点证明、demo 计划、团队可信度和请求 |
vertical_slice_design_doc | Demo、first playable、vertical slice、下一阶段制作 | 切片目标、功能边界、体验路径、资产/系统清单、里程碑、测试和 Go/No-Go |
proposal_review_and_rewrite | 审核/改进已有策划案、GDD、pitch、立项文档 | 问题诊断、证据/范围/读者/执行性修正、改写计划、可选改写版 |
如果用户说商业游戏策划案,默认使用 commercial_product_proposal。如果用户说独游设计案,默认使用 indie_design_dossier。如果用户说只要一页或先给老板看,默认使用 one_page_decision_memo。如果用户说给发行或投资人看,默认使用 publisher_pitch_outline。如果用户说做 demo 或 vertical slice,默认使用 vertical_slice_design_doc。
如果用户说“审核/改进/重写已有策划案/GDD/pitch”,默认使用 proposal_review_and_rewrite,除非用户明确只要最终改写版。
case_visibility 只帮助 agent 管理输出边界,不限制用户在本地环境处理真实、私有或客户项目。
可选字段:
case_visibility: private_user_work | public_repo_example | public_article | client_confidential | synthetic_case | unknownoutput_destination: private_notes | repo_example | public_post | client_delivery | publisher_pitch | internal_review | unknownredaction_required: true | false | unknown当 output_destination=repo_example 时,仓库 examples、assets、showcases、eval cases 只能使用 synthetic cases、公开材料或明确 cleared materials,并在发布前执行 Human Gate。
assumption 或 needs_research。verified_current、needs_recheck 或 unknown。missing。商业游戏策划案必须让评审者知道三件事:为什么值得做、做成什么算成立、下一步要花多少钱或多少人力去验证。
独游设计案必须保护创作锋利度和制作边界。不要把商业游戏的全系统模板套进小团队项目。
commercial_product_proposal 至少包含:
## Case Visibility
## Proposal Intake
## Source Artifact Inventory
## Executive Summary
## Product Positioning
## Target Player and Desire
## Player Promise
## Core Loop and Key Systems
## Platform and Business Fit
## Scope Gate
## Production Feasibility
## Milestone and Gate Plan
## Metrics and Validation Plan
## Risk Register
## Decision Request
## Evidence and Assumption Ledger
indie_design_dossier 至少包含:
## Case Visibility
## Proposal Intake
## Source Artifact Inventory
## Creative Thesis
## Store-Page Promise
## Target Player and Niche
## Player Verbs and Core Loop
## Design Pillars
## Content Minimalism Strategy
## Art and Audio Direction Boundary
## Vertical Slice Plan
## Production Plan
## Release and Community Validation
## Risk Register
## Next Investment Decision
## Evidence and Assumption Ledger
one_page_decision_memo 至少包含:
## Decision Memo
## Why This, Why Now
## Core Promise
## Biggest Assumptions
## Minimum Validation
## Scope and Cost Boundary
## Recommendation
## Decision Needed
publisher_pitch_outline 至少包含:
## Pitch Goal
## One-Line Pitch
## Market/Reference Boundary
## Player Promise
## Proof of Play
## Publisher / Platform Fit
## Demo or Vertical Slice Plan
## Production Credibility
## Ask, Budget, and Timeline
## Risk and Validation
## Materials Checklist
## Recheck Before Submission
vertical_slice_design_doc 至少包含:
## Slice Goal
## Experience Path
## Must-Prove Assumptions
## Build Scope
## Feature Priority
## Asset and Content Scope
## Milestones
## Playtest Protocol
## Go/No-Go Criteria
## Handoff Checklist
proposal_review_and_rewrite 至少包含:
## Review Target
## Reader and Decision Fit
## Structure Diagnosis
## Evidence and Assumption Problems
## Scope and Production Risks
## Missing Proof / Missing Decisions
## Revision Plan
## Suggested Rewrite
## Change Log
## Remaining Unknowns
如果缺失信息很多,不要直接停下。先写低置信度版本,并明确标注 assumption 和 unknown。只有当缺失信息会改变文档模式或关键判断时,才提出澄清问题。最多问三个问题。
优先追问这些会改变文档方向的问题:
如果用户要求继续,就带着明确假设往前推进。
最终输出前检查:
game-concept-architect 上游产物,再进入本 skill 成案。Skills that do similar work, with their headline benchmark lift.
From the same source and nearby in the catalogue.