GAAI-framework create-skill
Guide creation of a new GAAI skill following the agentskills.io spec and GAAI best practices. Activate when adding a new skill to the .gaai/core/skills/ catalog.
git clone https://github.com/Fr-e-d/GAAI-framework
T=$(mktemp -d) && git clone --depth=1 https://github.com/Fr-e-d/GAAI-framework "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.gaai/core/skills/cross/create-skill" ~/.claude/skills/fr-e-d-gaai-framework-create-skill && rm -rf "$T"
.gaai/core/skills/cross/create-skill/SKILL.mdCreate Skill
Purpose / When to Activate
Activate when:
- A new capability is needed that no existing skill covers
- A skill is being extracted from agent logic that has become reusable
- Extending a forked GAAI installation with project-specific skills
This skill is self-referential: it uses the agentskills.io spec to author a spec-compliant skill.
Prerequisites
Before activating:
- Confirm no existing skill already covers the intended capability (check
)README.skills.md - Confirm the new skill is a pure execution unit — it executes, it does not reason
- Confirm the skill belongs to exactly one category (discovery / delivery / cross)
- Have a clear, one-sentence description of: WHAT it does and WHEN to activate it
If a skill "appears to think" in the design, it is wrongly scoped. Redesign or split.
Process
Step 1 — Name and classify
Derive the skill name from the action it performs:
- Use lowercase kebab-case
- Name should be a verb phrase:
,generate-stories
,qa-reviewmemory-compact - Category: discovery (produces artefacts) | delivery (implements/validates) | cross (shared utility)
Verify name does not conflict with an existing skill in
README.skills.md.
Step 2 — Define inputs and outputs explicitly
List every input the skill requires. Be specific:
- What file paths does it read?
- What structured data does it receive from the invoking agent?
- What context is assumed to be present?
List every output the skill produces:
- File paths created or modified
- Structured data returned to the agent
- Side effects (backlog state changes, memory updates)
If inputs or outputs are unclear, the skill is not ready to be written. Clarify first.
Step 3 — Write the SKILL.md frontmatter
--- name: {skill-name} # matches directory name exactly description: {one sentence} # WHAT it does + WHEN to activate license: ELv2 compatibility: Works with any filesystem-based AI coding agent metadata: author: {author} version: "1.0" category: {discovery|delivery|cross} track: {discovery|delivery|cross-cutting} id: SKILL-{CAT}-{NNN} updated_at: {YYYY-MM-DD} status: stable|experimental # use experimental for new/unproven skills inputs: - {input_1}: {description} - {input_2}: {description} outputs: - {output_path_or_description} ---
Description rule: Must be one sentence, ≤ 1024 characters. Format:
"{Verb phrase that describes the output} when {activation condition}."
Example: "Generate Stories from an Epic with testable acceptance criteria when Discovery is refining a new feature scope."
Step 4 — Write the skill body
Required sections:
# {Skill Title} ## Purpose / When to Activate When and why an agent should invoke this skill. Be explicit. ## Process Numbered steps. Each step produces a specific output or advances the state. Steps must be deterministic: same inputs → same outputs. ## Quality Checks What must be true for the output to be acceptable. List as assertions, not descriptions. ## Outputs Exact file paths or structured outputs produced. ## Non-Goals What this skill must NOT do. Prevents scope creep.
Add a final line if applicable:
No silent assumptions. Every {X} becomes explicit and governed.
Step 5 — Create directory and file
.gaai/core/skills/{category}/{skill-name}/SKILL.md
SKILL.md filename is always uppercase (spec requirement).
Optional subdirectories (create only if needed):
— supporting documents the skill referencesreferences/
— templates or static files the skill producesassets/
Step 6 — Update ALL relevant indices (MANDATORY)
This step is non-negotiable. A skill that is not indexed is invisible to agents.
6a. Skills index YAML:
- Invoke
to regenerate bothbuild-skills-index
(core) and.gaai/core/skills/skills-index.yaml
(project).gaai/project/skills/skills-index.yaml - Verify the new skill appears in the generated index with correct
,id
,name
, andpathtags
6b. Skills README:
- Core skills: update
— add the skill to the appropriate category section.gaai/core/skills/README.skills.md - Project skills: update
— add the skill to the appropriate section.gaai/project/skills/README.md
6c. Domain index (if domain-scoped skill):
- If the skill belongs to a domain (e.g.,
), update the domain'sdomains/content-production/
in memory:index.md
— add a row to the skills table.gaai/project/contexts/memory/domains/{domain}/index.md
- This ensures domain sub-agents discover the skill when loading their domain context
Failure to update any of these indices means the skill is effectively invisible — agents cannot discover it, and it will not be loaded during delivery or discovery sessions.
Step 7 — Reference in agent file
If the skill is intended for a specific agent (Discovery or Delivery), add it to the agent's skill list in:
— Skills Used section.gaai/core/agents/discovery.agent.md
— Skills Used section.gaai/core/agents/delivery.agent.md- Or neither, if it's a general cross skill invoked opportunistically
Quality Checks
- Skill name matches directory name exactly
frontmatter hasSKILL.md
andname
at top level (spec requirement)description- Description is ≤ 1024 characters, one sentence
- All inputs are explicitly declared
- All outputs are explicitly declared with file paths where applicable
- Skill body has all 5 required sections
- Non-Goals section explicitly prevents scope creep
updatedREADME.skills.md
passes after creationhealth-check.sh
Non-Goals
This skill must NOT:
- Design agent behavior or orchestration logic (that is an agent concern)
- Make decisions about when to activate the skill (the invoking agent decides)
- Merge or replace an existing skill (deprecation requires explicit human decision)
A skill that appears to think is wrongly designed. Redesign before authoring.