Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate concise (3-4 page), focused medical treatment plans in LaTeX/PDF format for all clinical specialties. Supports general medical treatment, rehabilitation therapy, mental health care, chronic disease management, perioperative care, and pain management. Includes SMART goal frameworks, evidence-based interventions with minimal text citations, regulatory compliance (HIPAA), and professional formatting. Prioritizes brevity and clinical actionability.
SkillScore82/100
Test results 64 · Live runs 100
3/3 safety checks passed
5%64%of test cases passed +59 pts
Passed 14 of 22 test cases with the skill, and 1 of 22 without it.
13 fixed1 passed either way8 still failing0 broke
Adds every file the skill has, pinned so you can update it. No account needed.
pip install "decimalai>=0.15"
decimalai skills add treatment-plans
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("treatment-plans")
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 treatment-plansThe 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/treatment-plans/SKILL.md https://app.decimal.ai/s/treatment-plans/SKILL.md.claude/skills/treatment-plans/SKILL.mdThis gets SKILL.md only. The skill's 19 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 treatment-plansimport 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("treatment-plans")
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/treatment-plans/SKILL.mdimport asyncio
from pathlib import Path
from claude_agent_sdk import ClaudeAgentOptions, query
skill = Path(".agents/skills/treatment-plans/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 19 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 treatment-plansfrom 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("treatment-plans")
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/treatment-plans/SKILL.mdfrom pathlib import Path
from agents import Agent, Runner
skill = Path(".agents/skills/treatment-plans/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 19 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 treatment-plansimport 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("treatment-plans")
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/treatment-plans/SKILL.mdfrom pathlib import Path
from openai import OpenAI
client = OpenAI()
skill = Path(".agents/skills/treatment-plans/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 19 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 treatment-plansimport 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("treatment-plans")
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/treatment-plans/SKILL.mdfrom pathlib import Path
import anthropic
client = anthropic.Anthropic()
skill = Path(".agents/skills/treatment-plans/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 19 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 treatment-plansfrom 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("treatment-plans")
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/treatment-plans/SKILL.mdfrom pathlib import Path
from google import genai
from google.genai import types
client = genai.Client()
skill = Path(".agents/skills/treatment-plans/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 19 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 treatment-plansfrom 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("treatment-plans")
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/treatment-plans/SKILL.mdfrom pathlib import Path
from langchain.agents import create_agent
skill = Path(".agents/skills/treatment-plans/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 19 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 treatment-plansimport 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("treatment-plans")
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/treatment-plans/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 19 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 treatment-plansfrom 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("treatment-plans")
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/treatment-plans/SKILL.mdfrom pathlib import Path
from google.adk.agents import LlmAgent
skill = Path(".agents/skills/treatment-plans/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 19 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 treatment-plansfrom 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("treatment-plans")
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/treatment-plans/SKILL.mdfrom pathlib import Path
from pydantic_ai import Agent
skill = Path(".agents/skills/treatment-plans/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 19 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 treatment-plansimport 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("treatment-plans")
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/treatment-plans/SKILL.mdfrom pathlib import Path
from deepagents import create_deep_agent
skill = Path(".agents/skills/treatment-plans/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 19 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 treatment-plansimport 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("treatment-plans")
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/treatment-plans/SKILL.mdimport asyncio
from pathlib import Path
from agent_framework import Agent
skill = Path(".agents/skills/treatment-plans/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 19 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 treatment-plansfrom 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("treatment-plans")
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/treatment-plans/SKILL.mdfrom pathlib import Path
from strands import Agent
skill = Path(".agents/skills/treatment-plans/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 19 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 treatment-plansNo Python or account. Cursor, Copilot, Cline and Warp read this folder by themselves.
curl -fsSL --create-dirs -o .agents/skills/treatment-plans/SKILL.md https://app.decimal.ai/s/treatment-plans/SKILL.md.agents/skills/treatment-plans/SKILL.mdThis gets SKILL.md only. The skill's 19 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 19 other files are not included.
Raw files: /s/treatment-plans/SKILL.md · /s/treatment-plans.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/treatment-plans/SKILL.mdcurl -fsSL https://app.decimal.ai/s/treatment-plans.jsonThis gets SKILL.md only. The skill's 19 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.
Treatment plan writing is the systematic documentation of clinical care strategies designed to address patient health conditions through evidence-based interventions, measurable goals, and structured follow-up. This skill provides comprehensive LaTeX templates and validation tools for creating concise, focused treatment plans (3-4 pages standard) across all medical specialties with full regulatory compliance.
Critical Principles:
Every treatment plan should include clear goals, specific interventions, defined timelines, monitoring parameters, and expected outcomes that align with patient preferences and current clinical guidelines - all presented as efficiently as possible.
This skill should be used when:
⚠️ MANDATORY: Every treatment plan MUST include at least 1 AI-generated figure using the scientific-schematics skill.
This is not optional. Treatment plans benefit greatly from visual elements. Before finalizing any document:
How to generate figures:
How to generate schematics:
python scripts/generate_schematic.py "your diagram description" -o figures/output.png
The AI will automatically:
When to add schematics:
For detailed guidance on creating schematics, refer to the scientific-schematics skill documentation.
Treatment plans come in three format options based on clinical complexity and use case:
When to use: Straightforward clinical scenarios, standard protocols, busy clinical settings
Format: Single page containing all essential treatment information in scannable sections
Required sections (all on one page):
Design principles:
Example structure:
[Patient ID/Diagnosis Box at top]
TARGET PATIENT POPULATION
Number of patients, demographics, key features
PRIMARY TREATMENT REGIMEN
• Medication 1: dose, frequency, duration
• Procedure: specific details
• Monitoring: what and when
SUPPORTIVE CARE
• Key supportive medications
RATIONALE
Brief clinical justification
MOLECULAR TARGETS / RISK FACTORS
Relevant biomarkers or risk stratification
EVIDENCE LEVEL
Guideline reference, trial data
MONITORING REQUIREMENTS
Key labs/vitals, frequency
EXPECTED CLINICAL BENEFIT
Primary endpoint, timeline
When to use: Moderate complexity, need for patient education materials, multidisciplinary coordination
Uses the Foundation Medicine first-page summary model with 2-3 additional pages of details.
When to use: Complex comorbidities, research protocols, extensive safety monitoring required
CRITICAL REQUIREMENT: All treatment plans MUST have a complete executive summary on the first page ONLY, before any table of contents or detailed sections.
Following the Foundation Medicine model for precision medicine reporting and clinical summary documents, treatment plans begin with a one-page executive summary that provides immediate access to key actionable information. This entire summary must fit on the first page.
Required First Page Structure (in order):
Title and Subtitle
Report Information Box (using \begin{infobox} or \begin{patientinfo})
Key Findings or Treatment Highlights (2-4 colored boxes using appropriate box types)
\begin{goalbox})
\begin{keybox} or \begin{infobox})
\begin{warningbox} if urgent)
\begin{infobox})
Visual Format Requirements:
\thispagestyle{empty} to remove page numbers from first page\newpage)Example First Page Structure:
\maketitle
\thispagestyle{empty}
% Report Information Box
\begin{patientinfo}
Report Type, Date, Patient Info, Diagnosis, etc.
\end{patientinfo}
% Key Finding #1: Treatment Goals
\begin{goalbox}[Primary Treatment Goals]
• Goal 1
• Goal 2
• Goal 3
\end{goalbox}
% Key Finding #2: Main Interventions
\begin{keybox}[Core Interventions]
• Intervention 1
• Intervention 2
• Intervention 3
\end{keybox}
% Key Finding #3: Critical Monitoring (if applicable)
\begin{warningbox}[Critical Decision Points]
• Decision point 1
• Decision point 2
\end{warningbox}
\newpage
\tableofcontents % TOC on page 2
\newpage % Detailed content starts page 3
CRITICAL: Treatment plans MUST prioritize brevity and clinical relevance. Default to 3-4 pages maximum unless clinical complexity absolutely demands more detail.
Treatment plans should prioritize clarity and actionability over exhaustive detail:
Streamlining Guidelines:
The goal is professional, clinically complete documentation that respects clinicians' time while ensuring comprehensive patient care. Every section should add value; remove or condense sections that don't directly inform treatment decisions.
Use minimal, targeted citations to support clinical recommendations:
General medical treatment plans address common chronic conditions and acute medical issues requiring structured therapeutic interventions.
Patient Information (De-identified)
Diagnosis and Assessment Summary
Treatment Goals (SMART Format)
Short-term goals (1-3 months):
Long-term goals (6-12 months):
Interventions
Pharmacological:
Non-pharmacological:
Procedural:
Timeline and Schedule
Monitoring Parameters
Expected Outcomes
Follow-up Plan
Patient Education
Risk Mitigation
Rehabilitation plans focus on restoring function, improving mobility, and enhancing quality of life through structured therapeutic programs.
Functional Assessment
Rehabilitation Goals
Impairment-level goals:
Activity-level goals:
Participation-level goals:
Therapeutic Interventions
Physical Therapy:
Occupational Therapy:
Speech-Language Pathology:
Other Services:
Treatment Schedule
Progress Monitoring
Home Exercise Program
Mental health treatment plans address psychiatric conditions through integrated psychotherapeutic, pharmacological, and psychosocial interventions.
Psychiatric Assessment
Treatment Goals
Symptom reduction:
Functional improvement:
Recovery-oriented goals:
Therapeutic Interventions
Psychotherapy:
Psychopharmacology:
Psychosocial Interventions:
Safety Planning
Monitoring and Assessment
Patient and Family Education
Comprehensive long-term care plans for chronic conditions requiring ongoing monitoring, treatment adjustments, and multidisciplinary coordination.
Disease-Specific Targets
Self-Management Support
Care Coordination
Population Health Integration
Structured plans for surgical and procedural patients covering preoperative preparation, intraoperative management, and postoperative recovery.
Preoperative Assessment
Perioperative Interventions
Postoperative Care
Discharge Planning
Multimodal approaches to acute and chronic pain using evidence-based interventions and opioid-sparing strategies.
Pain Assessment
Multimodal Interventions
Pharmacological:
Interventional Procedures:
Non-pharmacological:
Opioid Safety (when prescribed)
Functional Goals
Treatment plans MUST be concise and focused on actionable clinical information:
ALWAYS create a one-page executive summary as the first page:
All treatment goals should meet SMART criteria:
✓ Shared Decision-Making: Involve patients in goal-setting and treatment choices
✓ Cultural Competence: Respect cultural beliefs, language preferences, health literacy
✓ Patient Preferences: Honor treatment preferences and personal values
✓ Individualization: Tailor plans to patient's unique circumstances
✓ Empowerment: Support patient activation and self-management
✓ Clinical Guidelines: Follow current specialty society recommendations
✓ Quality Measures: Incorporate HEDIS, CMS quality measures
✓ Comparative Effectiveness: Use treatments with proven efficacy
✓ Avoid Low-Value Care: Eliminate unnecessary tests and interventions
✓ Stay Current: Update plans based on emerging evidence
✓ Completeness: Include all required elements
✓ Clarity: Use clear, professional medical language
✓ Accuracy: Ensure factual correctness and current information
✓ Timeliness: Document plans promptly
✓ Legibility: Professional formatting and organization
✓ Signature and Date: Authenticate all treatment plans
✓ HIPAA Privacy: De-identify all protected health information
✓ Informed Consent: Document patient understanding and agreement
✓ Billing Support: Include documentation to support medical necessity
✓ Quality Reporting: Enable extraction of quality metrics
✓ Legal Protection: Maintain defensible clinical documentation
✓ Team Communication: Share plans across care team
✓ Role Clarity: Define responsibilities for each team member
✓ Care Transitions: Ensure continuity across settings
✓ Specialist Integration: Coordinate with subspecialty care
✓ Patient-Centered Medical Home: Align with PCMH principles
Choose the appropriate template based on clinical context and desired length:
Use only when one-page format is insufficient due to complexity:
Note: Even when using standard templates, adapt them to be concise (3-4 pages max) by removing non-essential sections.
All LaTeX templates include:
# Compile LaTeX template to PDF
pdflatex general_medical_treatment_plan.tex
# For templates with references
pdflatex treatment_plan.tex
bibtex treatment_plan
pdflatex treatment_plan.tex
pdflatex treatment_plan.tex
Use validation scripts to ensure all required sections are present:
python check_completeness.py my_treatment_plan.tex
The script checks for:
Comprehensive validation of treatment plan quality:
python validate_treatment_plan.py my_treatment_plan.tex
Validation includes:
Review treatment plans against the quality checklist (quality_checklist.md):
Clinical Quality
Patient-Centered Care
Regulatory Compliance
Coordination and Communication
Treatment plans often accompany other clinical documentation:
clinical-reports skill): Document ongoing implementationclinical-reports skill): Initial assessment informs treatment planclinical-reports skill): Summarize treatment plan executionEvidence-based treatment planning requires literature support:
citation-management skill): Reference clinical guidelinesliterature-review skill): Understand treatment evidence baseresearch-lookup skill): Find current best practicesTreatment plans may be developed for clinical trials or research studies:
research-grants skill): Treatment protocols for funded studiesclinical-reports skill): Intervention documentationScenario: 58-year-old patient with newly diagnosed Type 2 diabetes, HbA1c 8.5%, BMI 32
Template: general_medical_treatment_plan.tex
Goals:
Interventions:
Scenario: 70-year-old patient s/p left MCA stroke with right hemiparesis
Template: rehabilitation_treatment_plan.tex
Goals:
Interventions:
Scenario: 35-year-old with moderate depression, PHQ-9 score 16
Template: mental_health_treatment_plan.tex
Goals:
Interventions:
Scenario: 68-year-old scheduled for right TKA for osteoarthritis
Template: perioperative_care_plan.tex
Preoperative Goals:
Postoperative Goals:
Scenario: 45-year-old with chronic non-specific low back pain, pain 7/10
Template: pain_management_plan.tex
Goals:
Interventions:
Treatment plans should align with:
Use the timeline generator script to create visual treatment timelines:
python timeline_generator.py --plan my_treatment_plan.tex --output timeline.pdf
Generates:
Interactive template selection:
cd .claude/skills/treatment-plans/scripts
python generate_template.py
# Or specify type directly
python generate_template.py --type mental_health --output depression_treatment_plan.tex
python check_completeness.py plan.texpython validate_treatment_plan.py plan.texquality_checklist.mdpdflatex plan.texTreatment plans can be enhanced with professional medical document styling using the medical_treatment_plan.sty LaTeX package. This custom style transforms plain academic documents into visually appealing, color-coded clinical documents that maintain scientific rigor while improving readability and usability.
The medical_treatment_plan.sty package (located in assets/medical_treatment_plan.sty) provides:
Professional Color Scheme
Styled Elements
The style package includes five specialized box environments for organizing clinical information:
For general information, clinical assessments, and testing schedules:
\begin{infobox}[Title]
\textbf{Key Information:}
\begin{itemize}
\item Clinical assessment details
\item Testing schedules
\item General guidance
\end{itemize}
\end{infobox}
Use cases: Metabolic status, baseline assessments, monitoring schedules, titration protocols
For critical decision points, safety protocols, and alerts:
\begin{warningbox}[Alert Title]
\textbf{Important Safety Information:}
\begin{itemize}
\item Critical drug interactions
\item Safety monitoring requirements
\item Red flag symptoms requiring immediate action
\end{itemize}
\end{warningbox}
Use cases: Medication safety, decision points, contraindications, emergency protocols
For treatment goals, targets, and success criteria:
\begin{goalbox}[Treatment Goals]
\textbf{Primary Objectives:}
\begin{itemize}
\item Reduce HbA1c to <7\% within 3 months
\item Achieve 5-7\% weight loss in 12 weeks
\item Complete diabetes education program
\end{itemize}
\end{goalbox}
Use cases: SMART goals, target outcomes, success metrics, CGM goals
For executive summaries, key takeaways, and important recommendations:
\begin{keybox}[Key Highlights]
\textbf{Essential Points:}
\begin{itemize}
\item Main therapeutic approach
\item Critical patient instructions
\item Priority interventions
\end{itemize}
\end{keybox}
Use cases: Plan overview, plate method instructions, important dietary guidelines
For emergency contacts and urgent protocols:
\begin{emergencybox}
\begin{itemize}
\item \textbf{Emergency Services:} 911
\item \textbf{Endocrinology Office:} [Phone] (business hours)
\item \textbf{After-Hours Hotline:} [Phone] (nights/weekends)
\item \textbf{Pharmacy:} [Phone and location]
\end{itemize}
\end{emergencybox}
Use cases: Emergency contacts, critical hotlines, urgent resource information
For patient demographics and baseline information:
\begin{patientinfo}
\begin{tabular}{ll}
\textbf{Age:} & 23 years \\
\textbf{Sex:} & Male \\
\textbf{Diagnosis:} & Type 2 Diabetes Mellitus \\
\textbf{Plan Start Date:} & \today \\
\end{tabular}
\end{patientinfo}
Use cases: Patient information sections, demographic data
Enhanced table environment with medical styling:
\begin{medtable}{Caption Text}
\begin{tabular}{|p{5cm}|p{4cm}|p{4.5cm}|}
\hline
\tableheadercolor % Blue header with white text
\textcolor{white}{\textbf{Column 1}} &
\textcolor{white}{\textbf{Column 2}} &
\textcolor{white}{\textbf{Column 3}} \\
\hline
Data row 1 content & Value 1 & Details 1 \\
\hline
\tablerowcolor % Alternating light gray row
Data row 2 content & Value 2 & Details 2 \\
\hline
Data row 3 content & Value 3 & Details 3 \\
\hline
\end{tabular}
\caption{Table caption}
\end{medtable}
Features:
\tablerowcolor) for improved readability% !TEX program = xelatex
\documentclass[11pt,letterpaper]{article}
% Use custom medical treatment plan style
\usepackage{medical_treatment_plan}
\usepackage{natbib}
\begin{document}
\maketitle
% Your content here
\end{document}
Ensure style file is in same directory as your .tex file, or install to LaTeX path
Compile with XeLaTeX (recommended for best results):
xelatex treatment_plan.tex
bibtex treatment_plan
xelatex treatment_plan.tex
xelatex treatment_plan.tex
The package automatically formats the title with a professional blue header:
\title{\textbf{Individualized Diabetes Treatment Plan}\\
\large{23-Year-Old Male Patient with Type 2 Diabetes}}
\author{Comprehensive Care Plan}
\date{\today}
\begin{document}
\maketitle
This creates an eye-catching blue box with white text and clear hierarchy.
Required LaTeX Packages (automatically loaded by the style):
geometry - Page layout and marginsxcolor - Color supporttcolorbox with [most] library - Custom colored boxestikz - Graphics and drawingfontspec - Font management (XeLaTeX/LuaLaTeX)fancyhdr - Custom headers and footerstitlesec - Section stylingenumitem - Enhanced list formattingbooktabs - Professional table ruleslongtable - Multi-page tablesarray - Enhanced table featurescolortbl - Colored table cellshyperref - Hyperlinks and PDF metadatanatbib - Bibliography managementRecommended Compilation:
# Using XeLaTeX (best font support)
xelatex document.tex
bibtex document
xelatex document.tex
xelatex document.tex
# Using PDFLaTeX (alternative)
pdflatex document.tex
bibtex document
pdflatex document.tex
pdflatex document.tex
Edit the style file to modify the color scheme:
% In medical_treatment_plan.sty
\definecolor{primaryblue}{RGB}{0, 102, 153} % Modify these
\definecolor{secondaryblue}{RGB}{102, 178, 204}
\definecolor{accentblue}{RGB}{0, 153, 204}
\definecolor{successgreen}{RGB}{0, 153, 76}
\definecolor{warningred}{RGB}{204, 0, 0}
Modify geometry settings in the style file:
\RequirePackage[margin=1in, top=1.2in, bottom=1.2in]{geometry}
Uncomment and modify in the style file:
\setmainfont{Your Preferred Font}
\setsansfont{Your Sans-Serif Font}
Modify in the style file:
\fancyhead[L]{\color{primaryblue}\sffamily\small\textbf{Treatment Plan Title}}
\fancyhead[R]{\color{darkgray}\sffamily\small Patient Info}
Copy assets/medical_treatment_plan.sty to the same directory as your .tex file.
# Find your local texmf directory
kpsewhich -var-value TEXMFHOME
# Copy to appropriate location (usually ~/texmf/tex/latex/)
mkdir -p ~/texmf/tex/latex/medical_treatment_plan
cp assets/medical_treatment_plan.sty ~/texmf/tex/latex/medical_treatment_plan/
# Update TeX file database
texhash ~/texmf
# Copy to system texmf directory (requires sudo)
sudo cp assets/medical_treatment_plan.sty /usr/local/texlive/texmf-local/tex/latex/
sudo texhash
Other medical/clinical document styles available from CTAN:
Journal Styles:
# Install via TeX Live Manager
tlmgr install nejm # New England Journal of Medicine
tlmgr install jama # JAMA style
tlmgr install bmj # British Medical Journal
General Professional Styles:
tlmgr install apa7 # APA 7th edition (health sciences)
tlmgr install IEEEtran # IEEE (medical devices/engineering)
tlmgr install springer # Springer journals
Download from CTAN:
Issue: Package not found
# Install missing packages via TeX Live Manager
sudo tlmgr update --self
sudo tlmgr install tcolorbox tikz pgf
Issue: Missing characters (✓, ≥, etc.)
$\checkmark$, $\geq$amssymb package for math symbolsIssue: Header height warnings
\setlength{\headheight}{22pt}Issue: Boxes not rendering
# Ensure complete tcolorbox installation
sudo tlmgr install tcolorbox tikz pgf
Issue: Font not found (XeLaTeX)
Appropriate Box Usage
Visual Hierarchy
Color Consistency
\textcolor{primaryblue}{\textbf{Text}} for emphasisWhite Space
\vspace{0.5cm} between major sectionsProfessional Appearance
Table Formatting
\tableheadercolor for all header rows\tablerowcolor to alternating rows in tables >3 rows\small\sffamily for large tables% !TEX program = xelatex
\documentclass[11pt,letterpaper]{article}
\usepackage{medical_treatment_plan}
\usepackage{natbib}
\title{\textbf{Comprehensive Treatment Plan}\\
\large{Patient-Centered Care Strategy}}
\author{Multidisciplinary Care Team}
\date{\today}
\begin{document}
\maketitle
\section*{Patient Information}
\begin{patientinfo}
% Demographics table
\end{patientinfo}
\section{Executive Summary}
\begin{keybox}[Plan Overview]
% Key highlights
\end{keybox}
\section{Treatment Goals}
\begin{goalbox}[SMART Goals - 3 Months]
\begin{medtable}{Primary Treatment Targets}
% Goals table with colored headers
\end{medtable}
\end{goalbox}
\section{Medication Plan}
\begin{infobox}[Titration Schedule]
% Medication instructions
\end{infobox}
\begin{warningbox}[Critical Decision Point]
% Important safety information
\end{warningbox}
\section{Emergency Protocols}
\begin{emergencybox}
% Emergency contacts
\end{emergencybox}
\bibliographystyle{plainnat}
\bibliography{references}
\end{document}
Clinical Practice:
Educational Use:
Documentation Quality:
Patient Engagement:
All treatment plans should involve patient understanding and voluntary agreement to proposed interventions.
Treatment plans must respect diverse cultural beliefs, health practices, and communication styles.
Consider social determinants of health, access barriers, and health disparities when developing plans.
Maintain strict HIPAA compliance; de-identify all protected health information in shared documents.
Balance medical recommendations with patient autonomy and values while promoting patient welfare.
Part of the Claude Scientific Writer project. See main LICENSE file.
Published skills whose descriptions closely match this one, with their headline benchmark lift.
Skills that do similar work, with their headline benchmark lift.
From the same source and nearby in the catalogue.