Replies: 3 comments
|
skills are not a hard orchestration mechanism for forcing a specific tool-call sequence. Deep Agents use skills through progressive disclosure: at startup the agent sees the skill metadata/description, and it only reads the full SKILL.md when it decides that the skill is relevant to the current task. So if the model can already infer a reasonable plan from the tool descriptions, it may proceed without loading that skill. In your case, if the order A → B → C → D must always be followed, I would not rely on a skill alone to enforce it. A skill is better suited for reusable domain knowledge, detailed workflows, reference material, or instructions that are only needed for certain tasks. A few things I would try: Make the skill description very specific about when it should be activated, because the agent initially decides whether to use the skill based on that metadata. So I think the behavior you're seeing is expected: skills provide on-demand guidance, but they do not guarantee that the agent will load them or use them to override its own tool planning. Docs: https://docs.langchain.com/oss/python/deepagents/skills |
|
One thing I’d add is that The agent can build a reasonable A → B → C → D plan from the tool descriptions before it ever decides to open the skill. Since only the skill If that sequence is mandatory, I’d move the invariant into
If the order is truly strict, I’d go one step further and enforce it in code rather than prompt it — for example by exposing a single workflow tool that internally runs A/B/C/D, or by modeling the sequence as explicit graph states. I’d still keep the skill for the detailed reasoning around each step, but not use it as the control-flow mechanism. |
|
Skills are not a hard workflow engine. They are extra markdown the model may read. Why your
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
self.agent = create_deep_agent(
model=model, # Claude Sonnet 4.5 with temperature=0
memory=["./AGENTS.md"], # Agent identity and general instructions
skills=["./skills/"], # Specialized workflows (query-writing, schema-exploration)
tools=try_method.get('tools'), # tools
subagents=[], # No subagents needed
backend=FilesystemBackend(root_dir=base_dir) # Persistent file storage
)
In my task, I defined four tools: A, B, C, and D, and created a skills.md file where I wrote the order in which these tools should be called for the task. However, when the program actually ran, I observed the trace and found that the information in the skills file was not used. Instead, the write_todos function directly wrote the calls for the four tools A, B, C, and D according to the tool descriptions.
All reactions