# Skills Guide [中文](../zh-CN/skills-guide.md) Skills provide reusable procedures, checklists, templates, and references that Agents can load when needed. A Skill should be an executable procedure, not an encyclopedia page. ## Structure ```text skills/ ssrf-testing/ SKILL.md REFERENCE.md ``` `SKILL.md` front matter: ```markdown --- name: ssrf-testing description: SSRF identification, validation, bypass, and remediation workflow --- ``` The description determines when the Agent loads it. ## Recommended Sections ```markdown ## When to use ## Preconditions ## Procedure ## Stop conditions ## Output ``` Stop conditions matter: they tell the Agent when to escalate, ask for approval, or stop expanding scope. ## Anti-Patterns | Anti-pattern | Result | Fix | | --- | --- | --- | | Description too broad | triggers too often | make it scenario-specific | | Encyclopedia content | Agent lacks next step | write procedures and decisions | | Secrets in Skill | leakage/misuse | use runtime config or user input | | One huge Skill | costly and noisy | split by task/vulnerability | | No stop condition | scope creep | define approval/stop rules | ## Skill vs Knowledge Base - Skill: how to do something. - Knowledge base: facts, references, cases. For SSRF, a Skill describes the test procedure; the KB stores metadata addresses, bypass cases, and remediation references. ## Local Tool Risk `filesystem_tools: true` exposes local read/write/execute capability. In production: - constrain workspace; - require HITL for write/execute; - do not globally allowlist `execute`; - make Skills explicitly avoid out-of-scope files. ## Source Anchors - Validation: `internal/skillpackage/validate.go` - Service: `internal/skillpackage/service.go` - Eino Skills: `internal/multiagent/eino_skills.go` - Handler: `internal/handler/skills.go`