agentsclimarketplace

Dify agent builder

Skill xxzxzmai-droid/dify-builder-skills/dify-agent-builder

Codex/Claude skills for generating Dify agents and plugins

Install
npx -y skills add xxzxzmai-droid/dify-builder-skills --skill dify-agent-builder

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Build a ready-to-import Dify Chatflow agent (a .yml DSL file) from a plain-language request. Use this whenever the user wants to create, build, design, or generate a Dify agent / chatbot / 智能体 / 工作流 / chatflow / DSL — e.g. "做一个能查知识库回答制度问题的Dify智能体", "帮我生成一个上传文档就分析的助手", "build me a Dify customer-service bot that calls an HTTP API", "make a multimodal agent that reads images". Trigger even when the user does not say the word "DSL" or "yml" — any request to produce a usable Dify agent counts. The skill designs a structured blueprint and runs a deterministic engine to emit valid Dify 0.3.0 Chatflow YAML the user can import directly.

SKILL.md

6.4 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it

Dify Agent Builder

Turn a plain-language request into an importable Dify 0.3.0 Chatflow .yml. You act as the architect: you design a structured BlueprintSpec (JSON), then run a deterministic engine (scripts/build_agent.py, backed by scripts/assembler.py) that faithfully renders it into valid, wired-up Dify YAML — node IDs, edges, env-var declarations, data plumbing and validation are all handled for you. You never hand-write YAML.

Assume Dify development and runtime are 内网/offline unless the user explicitly says otherwise: no public API calls, no internet-only dependencies, and no generated plugin that relies on PyPI at install time.

Workflow

  1. Understand the need. What should the agent do? Who uses it? What inputs (text / uploaded documents / images) and what outputs? If a blocking detail is missing (e.g. they want an HTTP API but give no purpose/method/path and don't say "placeholder is fine"), ask 1–2 sharp questions. Otherwise proceed with sensible defaults and state them.
  2. Design a BlueprintSpec following the philosophy below. Read references/blueprint-spec.md for the exact JSON schema and every node kind. For a common pattern, start from the closest examples/*.json file and edit only what the request requires. If the target Dify version or plugin/runtime compatibility is in doubt, read references/compatibility.md before rendering.
  3. Write the blueprint to a temp JSON file, e.g. /tmp/blueprint.json.
  4. Render it: python3 scripts/build_agent.py /tmp/blueprint.json <name>.yml The script prints node/edge counts, validation warnings, and post-import manual steps.
  5. Deliver the .yml to the user and briefly list: what it does, key design decisions you made (so they can correct you), and anything to configure after import (select a knowledge base, choose a model, fill env vars).

Design philosophy — this is what makes the agent actually good

These principles matter more than any feature list. The model running the generated agent is strong (e.g. DeepSeek-V4 class); lean on its intelligence instead of brittle scaffolding.

  • 少即是多 / Less is more. Prefer the fewest nodes and one well-prompted LLM. Put judgement, conditions, and "if X do Y" logic into the LLM's system_prompt, not into routers/if-else/code. The best workflow is usually (retrieval/extract/http) → one good LLM → answer. Every extra node is another failure point.
    • "Analyze the document if uploaded, otherwise just chat" → do NOT route. One chain: document-extractor → one LLM whose prompt says "if there's uploaded file text, analyze it; otherwise answer normally". The extractor yields empty when no file, so the LLM decides. Robust.
    • Only split into multiple routes when different situations genuinely need different tools (one needs a knowledge base, another needs an HTTP call) that can't be merged.
  • Don't overstep (不自作主张). Build only what the user asked for or the scenario clearly needs. No unrequested features, nodes, fields, or APIs. Respect negatives — if they say "no X", X must not appear.
  • Don't fabricate. Never invent knowledge-base content, API paths, business fields, or rule numbers. Use placeholders (e.g. /v1/your-endpoint) and tell the user in your delivery notes.
  • Write excellent node prompts. Each LLM node's system_prompt must state: role · task · grounding (answer from injected context — knowledge/file/http/code results — don't make things up) · output format · boundary (what to do when info is missing). Use the business's real terms, not "you are a helpful assistant".
  • The engine owns the plumbing. You only write each LLM node's system_prompt. The runtime user input ({{#sys.query#}}) and all upstream context are wired in automatically — never write user_template, and never paste the user's build request text into any prompt.
  • Multi-turn. If the user later says "add X / remove Y / rename / it errored", edit the previous blueprint minimally and re-render — don't redesign from scratch.

What the engine handles for you (so you don't worry about it)

Node IDs and layout, all edges, {{#sys.query#}} + upstream-context injection into LLM prompts, env-var declarations (scanned from {{#env.X#}} refs), sys.files reading for documents, the answer node's output reference, file-download export wiring, a None-safety net for code, and structural validation (broken edges, dup IDs, secret leaks, route integrity). It also forces the correct user-input wiring even if your blueprint gets it wrong.

Quick reference: when to use what

NeedShape
Q&A / writingsingle LLM
Answer from a knowledge base (制度/FAQ/docs)knowledge → LLM
Read uploaded Word/PDF/Excel/CSVdocument-extractor → LLM
Recognize an image (OCR/截图/票据)a single llm with "vision": true (NOT document-extractor)
Call an HTTP/business APIhttp → LLM (token via env var, never hardcoded)
Precise computation / parse / file outputadd a code node — only when an LLM can't read-and-do it
Genuinely different tools per intentrouting.enabled=true classifier with one minimal route each

Full schema, every field, and complete examples: references/blueprint-spec.md — read it before writing a blueprint.

Validation loop

When changing the skill or when a generated result seems risky, run the local regression suite from the repo root:

python3 -m unittest tests.test_agent_builder

The checked examples cover knowledge Q&A, document extraction + file export, HTTP + env vars, classifier routing, condition routing, and vision upload wiring.

What ships with it: 11 files

69.1 KB alongside SKILL.md, 2 of them executable

agents/

references/

scripts/

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.