Skill builder
Skill wcgomes/agents-workspace/templates/skills/skill-builder
A lightweight AI Agent harness to handle any kind of task! From software engineering to design, marketing, sales, finance, paid media, project management or whatever you need to be done.
npx -y skills add wcgomes/agents-workspace --skill skill-builderAssembled 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.
- 7 stars7 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
Create, refine, and validate Agent Skills following the agentskills.io specification. Use when writing a SKILL.md, creating a new skill directory, improving an existing skill's triggering or content, running evals, or diagnosing why a skill isn't activating.
SKILL.md
7.1 KB, as published. Nobody here has run it
Agent Skills
Create skills that follow the agentskills.io standard. A skill is a directory with a SKILL.md file and optional resources.
Golden rule: Add what the agent lacks, omit what it knows. If the agent would get it right without your instruction, cut it.
Language: All skill content must be written in English. Skill frontmatter, instructions, examples, and reference files are consumed by AI agents — English is the expected language.
Prose: No hard-wrapping — paragraphs flow as single lines; the renderer wraps. Write what matters, skip the rest; no preambles, no filler.
Quickstart — minimal skill
Create <name>/SKILL.md (directory name MUST match name):
---
name: roll-dice
description: Roll dice using a random number generator. Use when asked to roll a die (d6, d20, etc.), roll dice, or generate a random dice roll.
---
To roll a die, use:
```bash
echo $((RANDOM % <sides> + 1))
Replace <sides> with the number of sides (6 for standard, 20 for d20).
That's a complete skill. Expand only as needed.
## Directory structure
skill-name/ ├── SKILL.md # Required: metadata + instructions ├── scripts/ # Optional: executable code ├── references/ # Optional: docs loaded on demand ├── assets/ # Optional: templates, static resources └── evals/ # Optional: test cases
Keep file references one level deep from `SKILL.md`. Avoid deeply nested chains.
## Frontmatter
### Required
| Field | Rules |
|---|---|
| `name` | 1-64 chars. `a-z`, `0-9`, hyphens. No leading/trailing/consecutive hyphens. Must match folder name. |
| `description` | 1-1024 chars. What it does AND when to use it. See "Writing descriptions" below. |
### Optional
| Field | Purpose |
|---|---|
| `license` | License name or bundled file reference |
| `compatibility` | 1-500 chars. Env requirements (tools, OS, products). Most skills don't need this. |
| `metadata` | Arbitrary key-value map. Use unique keys to avoid conflicts. |
| `allowed-tools` | Space-separated pre-approved tools (experimental, support varies) |
### Examples
Minimal:
```yaml
---
name: pdf-processing
description: Extract PDF text, fill forms, merge files. Use when handling PDFs.
---
With optional fields:
---
name: data-pipeline
description: >
Build and run data pipelines using our internal ETL framework.
Use when the user mentions data ingestion, batch jobs, or ETL.
license: Proprietary. LICENSE.txt has complete terms
compatibility: Requires Python 3.14+ and uv
metadata:
author: data-team
version: "1.0"
allowed-tools: Bash(git:*) Bash(jq:*) Read
---
Writing descriptions
The description decides activation. Poor description → skill never triggers.
Principles:
- Imperative phrasing: "Use this skill when..." not "This skill helps..."
- User intent, not implementation: what the user is trying to achieve, not internal mechanics
- Err on the pushy side: explicitly list contexts, including implicit ones
- Name the boundary: what the skill does NOT do, when relevant
Good vs poor:
# Poor — vague, no trigger context
description: Helps with PDFs.
# Poor — too narrow, misses common phrasings
description: Process CSV files.
# Good — specific scope, explicit triggers, broad coverage
description: >
Analyze CSV and tabular data — summary statistics, derived columns,
charts, and data cleaning. Use when the user has a CSV, TSV, or
Excel file and wants to explore, transform, or visualize data,
even if they don't explicitly mention "CSV" or "analysis."
Nuance: agents often skip skills for simple one-step tasks they can handle alone. Descriptions matter most for specialized knowledge or non-obvious domains.
Writing the body
Keep SKILL.md under 500 lines / 5,000 tokens. Move reference material to separate files.
Ask for each paragraph: "Would the agent get this wrong without this instruction?" If no → cut it.
See references/WRITING_SKILLS.md for body structure, patterns, and examples.
Progressive disclosure
Three load stages:
- Discovery (~100 tokens) —
name+descriptionloaded at startup for all skills - Activation (< 5000 tokens) — full
SKILL.mdloaded when task matches - Resources (on demand) — files in
scripts/,references/,assets/loaded only when referenced
Tell the agent when to load each file:
# Good
Read `references/api-errors.md` when the API returns a non-200 status.
# Bad
See references/ for details.
Scripts
Bundle executables in scripts/ when the agent repeats the same logic. Use one-off commands (uvx, npx) for simple invocations.
Design for agentic use:
- Non-interactive (no TTY prompts)
--helpdocumentation- Helpful errors ("Received X, expected Y")
- Structured output (JSON/CSV) to stdout, diagnostics to stderr
- Idempotent where possible
- Dry-run flag for destructive ops
- Meaningful exit codes
See references/USING_SCRIPTS.md for language-specific setup (Python PEP 723, Deno, Bun, Ruby).
Evaluating skills
Test each case with skill vs without skill (or previous version) to prove the skill adds value.
See references/EVALUATING.md for full workflow.
Optimizing descriptions (triggering)
A skill only helps if it activates. Test triggering systematically.
See references/OPTIMIZING_DESCRIPTIONS.md for eval query design and optimization loop.
Validation
skills-ref validate ./my-skill
Checks frontmatter and naming conventions.
Best practices summary
- Start from real expertise — extract from actual tasks or synthesize from project artifacts. Not generic references.
- Refine with execution — read agent traces, not just outputs. Wasted steps signal vague instructions.
- Spend context wisely — cut anything the agent would get right without the skill.
- Scope coherently — one skill = one coherent unit of work. Not too narrow, not too broad.
- Iterate with evals — test systematically, not anecdotally.
Gotchas
- Description under 1024 chars — they tend to grow during optimization.
- Directory name MUST match
namein frontmatter. Mismatch breaks discovery. - Body loads entirely on activation — anything not on the critical path belongs in
references/. - Generic references ("see references/") don't trigger loading. Specify the condition.
- Skills that don't improve vs baseline may not be adding value — test with and without.
- Description changes during optimization can regress on earlier-passing queries — validation split catches this.
See references/BEST_PRACTICES.md and references/SPECIFICATION.md for full details.