Agent 生成器
- 作者仓库星标 347
- 作者仓库 flocks
Skill Builder
Create a reusable skill directory, not just a loose markdown file. Start with the smallest structure that can work: SKILL.md first, then add references/, scripts/, assets/, or evals/evals.json only when they reduce repeated work or keep the prompt lean.
When to Use
Use this skill when the user wants to:
- create a brand new skill
- turn a repeated prompt or workflow into a reusable skill
- improve an existing skill's structure, trigger description, or bundled resources
- add realistic eval prompts for a skill
- package a repo-local skill so it can be reused elsewhere
Decide First: Skill or Tool?
Choose a skill when the capability is mostly instructions, shell commands, and existing tools.
Choose a tool instead when the task needs:
- strict runtime behavior every time
- built-in auth or API-key handling
- binary or streaming data handling
- a new system integration that should not depend on prompt interpretation
If the task is really a tool problem, say so early and switch to tool creation instead of forcing a skill.
Clarify the Contract
If important details are missing, ask only for the smallest set of answers needed:
- Skill name: must be
kebab-case - Capability: what the skill should help the agent do
- Triggering context: what kinds of user requests should activate it
- Outputs: what files or results the skill should produce
- Testing: whether to add eval prompts now
If the request is mostly clear, propose sensible defaults and keep moving.
Directory Layout
Use this layout unless the task clearly needs less:
<skill-root>/
├── SKILL.md
├── evals/
│ └── evals.json # optional
├── references/ # optional
├── scripts/ # optional
└── assets/ # optional
Scope Rules
- Each skill must live in its own directory, and the directory name must exactly match the skill name in
kebab-case - Prefer the user-global path:
~/.flocks/plugins/skills/<name>/SKILL.md - Do not write user-created skills to
.flocks/skills/; that location is for built-in skills, not user/project-authored plugin skills - Do not scatter skill files into
docs/,tests/, or ad hoc output folders
Build Workflow
1. Capture the Real Intent
Before writing the file, pin down:
- the user problem the skill solves
- the user language that should trigger the skill
- the expected output format
- whether the skill needs helper scripts, references, env vars, or config
When converting an existing workflow into a skill, extract the process from the conversation or nearby files instead of asking the user to repeat everything.
2. Inspect Nearby Examples
Read one or two similar skills in the current repo and reuse the local conventions for:
- frontmatter tone
- section naming
- path conventions
- validation style
Do not copy text blindly. Reuse structure, not wording.
3. Draft the Frontmatter
At minimum, every skill needs:
---
name: my-skill
description: What it does and when to use it.
---
4. Write the Description for Triggering
The description is the main trigger. Make it slightly "pushy" instead of passive.
Good descriptions include both:
- what the skill does
- when it should be used
Prefer outcomes over internals.
# Better
description: Create or improve reusable documentation skills. Use whenever the user asks to turn a repeated docs workflow into a skill, generate a SKILL.md, or add references and evals for documentation automation.
Avoid descriptions that only say "this skill helps manage skills" without any trigger hints.
5. Write the Body with Progressive Disclosure
Keep SKILL.md focused and easy to execute. A good default shape is:
- what the skill does
- when to use it
- the minimum workflow to follow
- pitfalls and validation
- references to deeper files only when needed
Suggested sections:
## When to Use## Quick Start## Workflowor## Procedure## Pitfalls## Verification
If the body starts getting long, move stable detail into references/ and point to it explicitly. If the skill needs deterministic parsing or repeated transformations, add a helper under scripts/ instead of asking the model to rewrite the same logic each time.
6. Prefer Simple Dependencies
Follow the guidance:
- prefer shell, Python stdlib, and existing tools first
- avoid adding dependencies unless they clearly reduce repeated work
- if setup is required, document it plainly in the skill
Do not create helper scripts "just in case".
7. Add Eval Prompts When Useful
If the skill has verifiable behavior, file outputs, or a repeatable workflow, create evals/evals.json with 2-3 realistic prompts.
Use prompts that sound like a real user, not abstract benchmark text.
{
"skill_name": "example-skill",
"evals": [
{
"id": 1,
"prompt": "Create a new skill for X with Y constraints.",
"expected_output": "A valid skill directory with a strong description and the right files.",
"files": []
}
]
}
If the skill is highly subjective and the user does not want evals, skipping them is acceptable, but say that choice explicitly.
8. Verify Before Finishing
Before you report success:
- confirm the directory name matches the skill name
- confirm
nameis validkebab-case - confirm the description is strong enough to trigger
- confirm every referenced file actually exists
- confirm the file layout matches the chosen scope
- keep the skill lean; move bulky material to
references/when needed
When working inside this repository, prefer at least one concrete verification step:
uv run python - <<'PY'
import asyncio
from flocks.skill.skill import Skill
async def main():
skill = await Skill.get("my-skill")
assert skill is not None
print(skill.name, skill.source, skill.location)
asyncio.run(main())
PY
If the repo already has skill-related tests, add or update a focused test rather than relying only on a manual check.
Output Checklist
When you finish, report:
- created or updated files
- chosen scope:
projectoruser - the trigger-rich description you encoded
- any skipped extras such as evals or scripts, and why
Constraints
- Prefer the simplest viable skill.
- Do not add extra abstractions without clear reuse.
- Preserve the original skill name when editing an existing skill unless the user explicitly asks to rename it.
- Explain why steps matter instead of filling the skill with rigid commands.
- Keep the main skill body reasonably short; use
references/andscripts/for overflow.
- 流狐分类
- 工程开发
- 作者声明 Agent
- 未找到明确声明;不据此推断已兼容或已测试
- 静态检查
- 88 / 100 · 启发式扫描,不代表运行安全
- 作者 / 版本 / 许可
- @AgentFlocks · 未声明 license
- 流狐 Token 估算
- 低消耗
- 流狐接入估算
- 需简单配置
- 是否需要外部 API Key
- 需要 · Vendor-specific
- 检测到的系统要求
- 未声明
- 底层运行要求
- Python
- 检测到的文件与系统行为
-
- 只读
- 允许写入 / 修改
- Shell 执行
- 读取环境变量
- 检测到的网络行为
- 允许外网请求
- 安装命令数
- 无(仅作为资料)
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
# 2. Inspect Nearby Examples
- frontmatter tone
- section naming
- path conventions
- validation style Use this skill when the user wants to: create a brand new skill turn a repeated prompt or workflow into a reusable skill
Choose a skill when the capability is mostly instructions, shell commands, and existing tools. Choose a tool instead when the task needs: strict runtime behavior every time
If important details are missing, ask only for the smallest set of answers needed: Skill name: must be kebab-case Capability: what the skill should help the agent do
Use this layout unless the task clearly needs less:
Each skill must live in its own directory, and the directory name must exactly match the skill name in kebab-case Prefer the user-global path: ~/.flocks/plugins/skills/<name>/SKILL.md Do not write user-created skills to .flocks/skills/; that location is for…
Build Workflow
# Skill Builder
Create a reusable skill directory, not just a loose markdown file. Start with the smallest structure that can work: `SKILL.md` first, then add `references/`, `scripts/`, `assets/`, or `evals/evals.json` only when they reduce repeated work or keep the prompt lean.
## When to Use
Use this skill when the user wants to:
- create a brand new skill
- turn a repeated prompt or workflow into a reusable skill
- improve an existing skill's structure, trigger description, or bundled resources
- add realistic eval prompts for a skill
- package a repo-local skill so it can be reused elsewhere
## Decide First: Skill or Tool?
Choose a **skill** when the capability is mostly instructions, shell commands, and existing tools.
Choose a **tool** instead when the task needs:
- strict runtime behavior every time
- built-in auth or API-key handling
- binary or streaming data handling
- a new system integration that should not depend on prompt interpretation
If the task is really a tool problem, say so early and switch to tool creation instead of forcing a skill.
## Clarify the Contract
If important details are missing, ask only for the smallest set of answers needed:
1. **Skill name**: must be `kebab-case`
2. **Capability**: what the skill should help the agent do
3. **Triggering context**: what kinds of user requests should activate it
4. **Outputs**: what files or results the skill should produce
5. **Testing**: whether to add eval prompts now
If the request is mostly clear, propose sensible defaults and keep moving.
## Directory Layout
Use this layout unless the task clearly needs less:
```text
<skill-root>/
├── SKILL.md
├── evals/
│ └── evals.json # optional
├── references/ # optional
├── scripts/ # optional
… 作者原文负责流程事实;流狐只索引当前章节、要点、文件与命令。
章节 -> When to Use → Decide First: Skill or Tool? → Clarify the Contract → Directory Layout → Scope Rules → Build Workflow
要点 -> skill · tool · Skill name · Capability · Triggering context · Outputs · Testing · what the skill does
文件/命令 -> references/ · scripts/ · assets/ · evals/evals.json · kebab-case · ~/.flocks/plugins/skills/<name>/SKILL.md · .flocks/skills/ · docs/
内容 SHA-256 -> 28e4c7305de9
方法与流程
适用与边界
原文中的明确线索
references/、scripts/、assets/、evals/evals.json、kebab-case、~/.flocks/plugins/skills/<name>/SKILL.md、.flocks/skills/、docs/