Install any skill in seconds. Free to start, no credit card required.
Get Started Free →改稿润色:在已有稿子上压缩、只用已有事实扩写、上行平行下行语气互转、大白话转公文语言、讲话口语化或书面化、按领导批注逐条改、多稿合并(冲突由用户定),不新增事实,附修改说明。用户说“压到3000字”“太长了砍一半”“报告改成发给下面的通知”“大白话改成公文”“领导批了太虚、数据呢”“两稿合成一稿”时使用。AI 腔交 gongwen-humanize,专门去免责、对冲交 gongwen-direct,核稿交 gongwen-review,改标题交 gongwen-title,压成政务信息交 gongwen-brief,判断文种交 gongwen-draft,重写结构交回原起草 skill。
SkillScore73/100
Test results 73
3/3 safety checks passed
55%73%of test cases passed +18 pts
Passed 16 of 22 test cases with the skill, and 12 of 22 without it.
5 fixed11 passed either way5 still failing1 broke
One test task一份关于数字经济发展的公文初稿,请全面修改其中的AI腔调,去掉“值得注意的是”、“翻案句”和新八股词汇,保持其他结构不变。
Adds every file the skill has, pinned so you can update it. No account needed.
pip install "decimalai>=0.15"
decimalai skills add duyunzhoudyz-gongwen-polish
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("duyunzhoudyz-gongwen-polish")
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 duyunzhoudyz-gongwen-polishThe 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/duyunzhoudyz-gongwen-polish/SKILL.md https://app.decimal.ai/s/duyunzhoudyz-gongwen-polish/SKILL.md.claude/skills/duyunzhoudyz-gongwen-polish/SKILL.mdThis gets SKILL.md only. The skill's 13 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 duyunzhoudyz-gongwen-polishimport 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/SKILL.mdimport asyncio
from pathlib import Path
from claude_agent_sdk import ClaudeAgentOptions, query
skill = Path(".agents/skills/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishfrom 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/SKILL.mdfrom pathlib import Path
from agents import Agent, Runner
skill = Path(".agents/skills/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishimport 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/SKILL.mdfrom pathlib import Path
from openai import OpenAI
client = OpenAI()
skill = Path(".agents/skills/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishimport 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/SKILL.mdfrom pathlib import Path
import anthropic
client = anthropic.Anthropic()
skill = Path(".agents/skills/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishfrom 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/SKILL.mdfrom pathlib import Path
from google import genai
from google.genai import types
client = genai.Client()
skill = Path(".agents/skills/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishfrom 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/SKILL.mdfrom pathlib import Path
from langchain.agents import create_agent
skill = Path(".agents/skills/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishimport 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishfrom 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/SKILL.mdfrom pathlib import Path
from google.adk.agents import LlmAgent
skill = Path(".agents/skills/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishfrom 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/SKILL.mdfrom pathlib import Path
from pydantic_ai import Agent
skill = Path(".agents/skills/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishimport 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/SKILL.mdfrom pathlib import Path
from deepagents import create_deep_agent
skill = Path(".agents/skills/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishimport 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/SKILL.mdimport asyncio
from pathlib import Path
from agent_framework import Agent
skill = Path(".agents/skills/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishfrom 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("duyunzhoudyz-gongwen-polish")
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/duyunzhoudyz-gongwen-polish/SKILL.mdfrom pathlib import Path
from strands import Agent
skill = Path(".agents/skills/duyunzhoudyz-gongwen-polish/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 13 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 duyunzhoudyz-gongwen-polishNo Python or account. Cursor, Copilot, Cline and Warp read this folder by themselves.
curl -fsSL --create-dirs -o .agents/skills/duyunzhoudyz-gongwen-polish/SKILL.md https://app.decimal.ai/s/duyunzhoudyz-gongwen-polish/SKILL.md.agents/skills/duyunzhoudyz-gongwen-polish/SKILL.mdThis gets SKILL.md only. The skill's 13 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 13 other files are not included.
Raw files: /s/duyunzhoudyz-gongwen-polish/SKILL.md · /s/duyunzhoudyz-gongwen-polish.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/duyunzhoudyz-gongwen-polish/SKILL.mdcurl -fsSL https://app.decimal.ai/s/duyunzhoudyz-gongwen-polish.jsonThis gets SKILL.md only. The skill's 13 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.
在用户已有的稿子上做七种修改:压缩、扩写、调语气、转译、口语化或书面化、按领导批注改稿、多稿合并。只动表达和取舍,不加事实:改后稿的每个数字、案例、表态都能在原稿或用户材料里找到;缺的标【待补】,几稿说法不一的列出来由用户定。每次交付都附修改说明。
| 任务 | 用户常说 |
|---|---|
| 压缩 | 压到3000字、太长了砍一半、按减负规定压一压、讲话控制在15分钟 |
| 扩写 | 太单薄了扩一扩、写到2000字 |
| 调语气(新文种和受文对象已定) | 报告改成发给下面的通知、领导定了请示改成函发、下发的改成向上汇报的口气 |
| 转译 | 科室写的大白话改成公文、业务说法改得像公文 |
| 口语化或书面化 | 讲话稿改得好讲一点、把领导讲话录音整理稿改成书面材料 |
| 按批注改稿 | 领导批了“太虚”“数据呢”、按批注改、领导在 Word 里批了意见 |
| 多稿合并 | 两稿合成一稿、甲乙两个版本取长补短 |
| 用户要的 | 转给 |
|---|---|
| 通篇去 AI 腔:“值得注意的是”、翻案句、新八股词 | gongwen-humanize |
| 专门去免责声明、对冲、平衡腔;同一份下行文“像在商量”,改成要求口气 | gongwen-direct |
| 全面核稿,查格式、标点、数字、提法 | gongwen-review |
| 重拟标题、小标题 | gongwen-title |
| 只有素材、记录、数据表,还没有稿子 | 起草 skill:总结汇报 gongwen-report,法定公文 gongwen-draft,讲话 gongwen-speech,党建 gongwen-party |
| 判断该用什么文种(“这个请示是不是该用函”),或文种用错、行文规则有问题要改 | gongwen-draft 模式二 |
| 要推倒结构重写:换文种后结构全变(如报告改实施方案、拆任务分工)、提纲重搭 | 原起草 skill;以上级文件为依据拆任务的交 gongwen-implement;本行业专用文书交已装的对应行业包 |
| 长材料压成政务信息、简报、新闻稿 | gongwen-brief |
| 拿原稿和领导改过的稿子,总结领导的改稿习惯 | gongwen-profile |
| 排成 Word | gongwen-format |
能调用其他 skill 的环境直接调用;目标 skill 未安装或在网页环境的,按 references/_shared/style/output-format.md 第四部分转交:给交接卡、“新开对话粘贴 dist/prompts/.md 继续”的说明和安装命令。其余回复和起草说明中不写 skill 名,用描述性说法(如“建议再去 AI 腔”)。
一稿兼有几种问题时,本 skill 只做第一张表中的任务。免责声明、AI 自述、对话引导语按红线三直接删除;其他 AI 腔、对冲语气、格式错误不顺手改,列入修改说明的“转交事项”。用户同时要求“顺便去 AI 味”的,先完成本 skill 的任务,再转交 gongwen-humanize。
references/_shared/guardrails.md 第一条):
python scripts/secret_check.py <文件>(含页眉页脚),命中即停;没有 Python 时用 zipfile 解压 docx,读取 word/document.xml 和所有 word/header*.xml、word/footer*.xml,搜索"秘密""机密""绝密""★""内部资料""工作秘密""不得外传""内部使用"等字样,发现任意一个即停止——只读 document.xml 不算完成,密级标志常在页眉里。用了 python-docx 等库读正文的,还必须用 zipfile 单独检查所有 header 文件(正文读取不含页眉)。纯文本稿件同样先扫一遍再改。公文/<YYYYMMDD>-<简短标题>/原稿.txt(多稿存 原稿-甲.txt、原稿-乙.txt,批注存 批注.txt)。用户给的文件不改动:.docx 运行 python scripts/polish_stat.py body 原文件.docx --out <上述目录>/原稿.txt 转成文字稿(有修订痕迹的按接受全部修订导出,在说明中写明);正文后混有批注转述的,分开存。.gongwen/单位画像.md(没有再找 ~/.gongwen/,用户粘贴的按粘贴内容),同目录的 领导偏好卡.md、禁用词.md、文风参数.md 一并读取;偏好卡里的篇幅、用词、数据呈现偏好优先于本 skill 的默认做法。没有画像时按 references/_shared/profiles/roles.md 第九节“无画像降级”处理,单位类型从稿件判断。references/_shared/profiles/roles.md 第十节)。“直接改”或高效模式不问,待补、待核实只进起草说明。调语气缺发文主体、受文对象或文种又推断不出的,属核心事实缺失(第十节情形②):首轮只出措辞对照建议,开头说明缺哪一项,末尾问清,不改全文。| 任务 | 只问 | 不回答时的默认 |
|---|---|---|
| 压缩、扩写 | 目标字数或讲话时长 | 压缩:说"按减负规定""减负""按规定压"的,目标取原稿三分之二;给了具体数("压到N字""砍一半")的,以用户指定为准;说"该删的删""帮我精简""能删多少删多少""删掉空话套话"不给字数的,同样取三分之二;只说"太长了"的,取七成;扩写:不定目标,展开到素材用完为止 |
| 调语气 | 新的发文主体、受文对象和文种 | 不猜;只出措辞对照建议,不改全文;要判断用什么文种的,建议重新起草 |
| 按批注改稿 | 批注原话和对应位置 | 位置看不出的那条列为“未落实,请确认位置” |
| 多稿合并 | 以哪一稿为底稿 | 最新的一稿;分不出新旧的,用结构最完整的一稿 |
references/_shared/guardrails.md 第六条):要求“改得查不出是 AI 写的”,或把正式文件改成便笺、“白头”规避发文管理的,说明原因,不按此办,其余照常改;对照检查、述职、心得体会、研讨发言、交流发言、谈心谈话记录要扩写而缺本人事例的,只在相应位置标【待补:本人具体事例】,不代拟,起草说明中给出填写指引(写本岗位做过的哪件事、学习后工作有什么改变)。党建个人材料素材不足、需先出提纲的,转 gongwen-party。references/_shared/style/output-format.md 第四部分)。python scripts/polish_stat.py count 原稿.txt;没有时按段估算,说明中写“字数为估算”。references/tone.md 对照表调整称谓和要求措辞;references/_shared/style/defensive.md 第六部分调整“必须、要、可以”,写进批注落实对照表;细则见参考资料,这里是每项必做的动作。Agent 环境改完先把正文写入原稿同目录的 正文.txt(已存在时加 -v2,此后各步都用这份),复核中的修改直接改这份文件。
压缩(细则 references/length.md 第一至五部分)
python scripts/polish_stat.py count 原稿.txt --target 3000(上限口径加 --max),看各部分占比。改完对 正文.txt 再运行一次验证;超出目标 10% 以上的继续按第 3 条顺序删减;没有 Python 时人工逐段估算,写"约 N 字(估算)",同样须达到目标 ±10% 再交付。references/length.md 第三部分),删完一级算一次字数,够了就停。空泛表态中,以下排比口号优先删除,不计入必保内容:无对象和数字支撑的"打好组合拳""形成大合唱""上下联动左右协同""齐抓共管""合力推进""形成合力""汇聚合力""凝聚共识"等;"全方位多维度""多举措多渠道""更加扎实""持续走深走实""抓铁有声踏石留印""驰而不息""久久为功"等力度修饰套话;不与具体事项绑定的"赋能""抓手""闭环""新生态""新机制""构建大格局"等空泛新八股词。references/length.md 第四部分);第一步第 4 条所列句子除外。扩写(细则 references/length.md 第六部分)
references/_shared/guardrails.md 第四条第2款):改前估算素材能支撑多少字。差距超过 30% 的,在回复第一段说明目标字数和素材可支撑的字数,附补料清单(补哪几样材料就能写足);应有的板块保留,缺内容处最关键的标【待补:该补什么】(一般不超过 3 处),其余写进补料清单;只按“做法—过程—结果”展开已有事实,不注水,【待补】不计入字数。调语气(行文方向互转)(对照表 references/tone.md 第一、二部分)
references/_shared/rules/doc-types.md 第六节决策表核对方向和文种是否匹配;不匹配的,说明并建议先重新判断文种,不自行改定。references/_shared/rules/jianfu.md JF-16),改用“请各乡镇……”的商洽口吻,或建议由县政府办公室行文,修改说明写明依据。转译(业务语言改公文语言)(词表 references/tone.md 第三部分)
口语化或书面化(references/tone.md 第四部分)
按领导批注改稿(对照表 references/annotations.md)
references/annotations.md 第一部分)。Agent 环境下 docx 运行 python scripts/polish_stat.py comments 批注稿.docx 提取;有修订痕迹的,按开工检查第 2 条导出 原稿.txt(按改后的算),不接受某处修订的请用户先在 Word 中处理。读不出批注的,请用户逐条转述“位置|原文片段|批注原话”。references/annotations.md 第二部分对照表改;一条批注两个意思的(“太虚,数据呢”)拆成两项。references/annotations.md 第四部分处理(Agent 环境征得同意后追加到 .gongwen/领导偏好卡.md,网页环境交用户保存)。多稿合并(references/merge.md)
python scripts/polish_stat.py trace 正文.txt 原稿-甲.txt 原稿-乙.txt,“未找到来源”的句子和小句逐条核对,属新增事实的删去或改为【待补】。python scripts/fact_diff.py 原稿.txt 正文.txt --json(合并多稿时第一份写底稿,其余各稿用 --ref 原稿-乙.txt 追加,几稿加几个)。“改稿新增”每一项都必须是新增的【待补】或脱敏替换,否则恢复原稿写法。“原稿有而改稿没有”只允许第一步第 4 条的四种删除情形,逐项确认删的不是成效数据、责任、时限、需上级支持的事项(调语气删去的上行请求除外),并写进“附:删去的数据”;其他一律恢复。python scripts/fact_diff.py 原稿.txt 正文.txt --ref 材料.txt --ledger(几份材料加几个 --ref),输出每一项同样只能是新增标记或脱敏替换。python scripts/polish_stat.py compare 原稿.txt 正文.txt。每处改动都对应本次任务(按批注改稿时对应某条批注),对应不上的恢复原文;“新增”段落和“多出的文字”只能是措辞调整、新增标记或脱敏替换,带新数字、荣誉、评价、排名的删去或改为【待补】。另运行 python scripts/change_guard.py 原稿.txt 正文.txt --json(要求结构不动的加 --keep-structure;合并多稿时只对底稿运行):CHG-001(P0 事实变化)逐条恢复或在修改说明写明理由;CHG-004(结构变化)在结构不动时必须恢复;CHG-003(无规则依据的改动)按需列入说明供核对。python scripts/polish_stat.py count 正文.txt --target <目标> --max,确认没超上限;其余去掉 --max,确认在±10% 以内(脚本判断下限时已扣除【待补】)。超出或不足的,继续改,或按压缩第 5 条、扩写第 3 条在回复第一段说明。python scripts/gongwen_lint.py 正文.txt --doc-type <文书类型> --json。本次改动带进来的问题必须改掉;原稿就有、不在本次任务内的(如发文字号格式)列入“转交事项”,建议再核稿。命中公文白名单的保留(references/_shared/style/ai-tone.md 第二部分)。疑似误报的(如“四、四季度安排”被报序号乱序),不改原标题,说明中写明位置和判断。references/checklist.md 逐项人工核对(读不到时按本节和自检清单):字数逐段估算(标题和【起草说明】之后不算),写“约N字(估算)”,上限口径按九成五控制;数字、日期、文号、书名号和引号内的内容、状态词、义务强度词逐项对照原稿和材料。在说明中写“未运行机检和事实比对,已人工逐段核对”。正文.txt 并在复核中改定,不另存起草说明。回复开头直接贴改后全文(篇幅差距说明、补料清单除外),其后写文件位置和起草说明,不写过程说明。references/_shared/style/output-format.md 第三部分),不加引导语。路线还有下一站的,起草说明之后输出更新后的交接卡,告诉用户新开对话,先粘贴下一站的提示词文件,再粘贴交接卡和改后正文。正文、起草说明、交付位置按 references/_shared/style/output-format.md:正文纯文本,不用 Markdown,层次序数依次为 一、(一)1.(1),正文只允许【待补:说明】一种提示。起草说明只在对话中,放在正文之后,不超过 5 行、每行一句,不写工具名和规则号,无内容的省略:
假设:任务、目标字数、底稿、单位类型。 待补:一行汇总,写位置和要补什么。 待核实:一行汇总。 修改说明:一行,写“原稿约 N 字,改后约 M 字,共修改 K 处”,加改了什么、为什么改、事实核对结果,有转交事项的写要点。 保密提示:有脱敏时写一行,按位置和信息类型列出,不复述原值。
教学模式另附写作要点。附表放在起草说明之后,标题为“附:删去的数据”(有删除时,逐项写理由)“附:批注落实对照表”“附:合并说明”“附:合并冲突清单”“附:领导偏好卡改稿记录(待保存)”“附:提法核对清单”;逐条的修改说明(教学、转译模式)也作附表,可用表格。
有 Python 时运行第三步的 gongwen_lint、fact_diff、change_guard、compare、count;无法运行按第三步第 5 条人工核对。
| 单位类型 | 改稿时特别注意 |
|---|---|
| 党政机关 | 下行文件压缩按减负规定上限,超限为 P1;提法最密,改前先圈出 |
| 基层 | 面向群众的稿子转大白话时写清时间、地点、要求、咨询电话;不向村(社区)转嫁责任 |
| 社区 | 对居民用服务和提醒的口气,不用命令口吻;居民信息一律脱敏 |
| 公立医院 | 指标名称照用原稿,不改成通俗说法;缩写首次写全称;患者信息脱敏 |
| 高校 | 校级与学院两级发文语气不同;学术材料保留学术用语;学生信息脱敏 |
| 中小学 | 致家长的稿子通俗、具体,写清需要家长配合的事 |
| 国有企业 | 经营数据、专业术语照用;商业秘密提醒脱敏;党委前置研究等程序表述不删 |
表中要“写清”的要素,原稿和材料没有的标【待补】,不自拟。医院、学校、国企内部材料不受减负规定字数条款直接约束,超限只作提示。详见 references/units.md。
没有文件系统(网页版、内网提示词版)时,读不到的文件按本文和附录执行,不向用户索要。
| 文件 | 何时读取 |
|---|---|
references/length.md、tone.md、annotations.md、merge.md | 第二步各任务(见各任务标题后的括注) |
references/checklist.md、references/units.md | 无法运行脚本时;定单位类型后 |
references/_shared/guardrails.md、style/output-format.md | 开工前、与用户要求冲突时;交付、交接卡 |
references/_shared/style/ai-tone.md、references/_shared/style/defensive.md | 判断哪些归 humanize、direct;调语气强度 |
references/_shared/rules/ 下的 jianfu.md、doc-types.md、gbt15835.md、data-expression.md | 定压缩目标、查 JF-16;核对文种和惯用语;数字写法、百分点 |
references/_shared/profiles/roles.md、references/_shared/profiles/units/ | 定角色模式和单位类型 |
scripts/polish_stat.py | count、compare、trace、comments、body |
scripts/fact_diff.py、scripts/change_guard.py、scripts/gongwen_lint.py | 第三步复核 |
Skills that do similar work, with their headline benchmark lift.
From the same source and nearby in the catalogue.