Get the FREE Ultimate OpenClaw Setup Guide →

new-skill

Scanned
npx machina-cli add skill shane9coy/Agent-Skill-Architecture-Guide/new-skill-builder --openclaw
Files (1)
SKILL.md
9.1 KB

New Skill Installer & Scaffolder

Overview

This skill helps you install, create, and manage skills in your .claude/skills/ directory. It handles the full lifecycle: scaffolding new skills from scratch, installing skills from external sources, validating skill structure, and troubleshooting registration issues.


Workflow 1: Create a New Skill From Scratch

When the user wants to create a brand new skill:

  1. Ask for details (if not provided):

    • Skill name (lowercase, hyphenated, e.g. api-tester)
    • What it should do (purpose)
    • When it should trigger (contexts)
    • Whether it needs scripts, references, or assets
  2. Scaffold the folder structure:

SKILL_NAME="the-skill-name"
PROJECT_DIR="$(pwd)"
SKILL_DIR="${PROJECT_DIR}/.claude/skills/${SKILL_NAME}"

mkdir -p "${SKILL_DIR}"
mkdir -p "${SKILL_DIR}/scripts"
mkdir -p "${SKILL_DIR}/references"
mkdir -p "${SKILL_DIR}/assets"
  1. Generate the SKILL.md with proper frontmatter:
---
name: {skill-name}
description: "{What it does}. Use when {trigger conditions}. Handles {capabilities}."
---

# {Skill Title}

## Overview
{One paragraph purpose statement}

## Instructions
1. {Step-by-step instructions}

## Examples
### Example 1
**Input:** "{example user request}"
**Action:** {what the skill does}
**Output:** {expected result}

## Error Handling
- {How to handle failures}

## Notes
- {Caveats and edge cases}
  1. Validate the skill (run Workflow 4 below)

  2. Report back with the file tree and confirmation it's registered.


Workflow 2: Install a Skill From External Source

When the user provides a URL, GitHub repo, zip file, or raw markdown:

From a GitHub Repository URL

REPO_URL="$1"
SKILL_NAME="$2"  # Extract from repo name if not given
SKILL_DIR=".claude/skills/${SKILL_NAME}"

# Clone just the skill content
git clone --depth 1 "${REPO_URL}" "/tmp/${SKILL_NAME}-clone"

# Find the SKILL.md
SKILL_FILE=$(find "/tmp/${SKILL_NAME}-clone" -name "SKILL.md" -type f | head -1)

if [ -z "$SKILL_FILE" ]; then
  echo "ERROR: No SKILL.md found in repository."
  echo "This repo may not be a valid AgentSkills package."
  exit 1
fi

# Get the skill's parent directory (contains SKILL.md + siblings)
SKILL_SRC=$(dirname "$SKILL_FILE")

# Copy to .claude/skills/
mkdir -p "${SKILL_DIR}"
cp -r "${SKILL_SRC}/"* "${SKILL_DIR}/"

# Cleanup
rm -rf "/tmp/${SKILL_NAME}-clone"

echo "Installed ${SKILL_NAME} to ${SKILL_DIR}"

From Raw Markdown Content

If the user pastes or uploads a SKILL.md file:

  1. Extract the name field from YAML frontmatter
  2. Create .claude/skills/{name}/SKILL.md
  3. Write the content
  4. Check if it references external files (scripts/, references/, assets/)
  5. Warn the user about any missing referenced files

From a Zip File

ZIP_FILE="$1"
TEMP_DIR="/tmp/skill-install-$$"

mkdir -p "$TEMP_DIR"
unzip -q "$ZIP_FILE" -d "$TEMP_DIR"

# Find SKILL.md (may be nested in a folder)
SKILL_FILE=$(find "$TEMP_DIR" -name "SKILL.md" -type f | head -1)

if [ -z "$SKILL_FILE" ]; then
  echo "ERROR: No SKILL.md found in zip."
  exit 1
fi

SKILL_SRC=$(dirname "$SKILL_FILE")
SKILL_NAME=$(grep "^name:" "$SKILL_FILE" | head -1 | sed 's/name: *//' | tr -d '"' | tr ' ' '-' | tr '[:upper:]' '[:lower:]')

if [ -z "$SKILL_NAME" ]; then
  SKILL_NAME=$(basename "$SKILL_SRC")
fi

SKILL_DIR=".claude/skills/${SKILL_NAME}"
mkdir -p "$SKILL_DIR"
cp -r "$SKILL_SRC/"* "$SKILL_DIR/"

rm -rf "$TEMP_DIR"
echo "Installed ${SKILL_NAME} to ${SKILL_DIR}"

Workflow 3: Install the Uploaded MCP Builder Skill

When the user wants to install the mcp-builder skill specifically:

  1. Create the directory structure:
mkdir -p .claude/skills/mcp-builder/reference
  1. Copy or create the SKILL.md from the user's uploaded file into .claude/skills/mcp-builder/SKILL.md

  2. Note that the SKILL.md references these files that need to be populated:

    • {baseDir}/reference/mcp_best_practices.md
    • {baseDir}/reference/python_mcp_server.md
    • {baseDir}/reference/node_mcp_server.md
    • {baseDir}/reference/evaluation.md
  3. Either fetch them from the source repo (if URL provided) or create stub files:

for ref in mcp_best_practices python_mcp_server node_mcp_server evaluation; do
  if [ ! -f ".claude/skills/mcp-builder/reference/${ref}.md" ]; then
    echo "# ${ref}" > ".claude/skills/mcp-builder/reference/${ref}.md"
    echo "" >> ".claude/skills/mcp-builder/reference/${ref}.md"
    echo "TODO: Populate with content from the original skill repository." >> ".claude/skills/mcp-builder/reference/${ref}.md"
    echo "Source: https://github.com/ComposioHQ/awesome-claude-skills/tree/main/mcp-builder/reference" >> ".claude/skills/mcp-builder/reference/${ref}.md"
  fi
done
  1. Warn the user that stub reference files need real content for full functionality.

Workflow 4: Validate Skills

Run these checks on any skill to ensure it will register properly:

Validation Checklist

SKILL_DIR="$1"  # e.g., .claude/skills/my-skill

# 1. Check SKILL.md exists
if [ ! -f "${SKILL_DIR}/SKILL.md" ]; then
  echo "FAIL: No SKILL.md found in ${SKILL_DIR}"
  exit 1
fi

# 2. Check frontmatter exists
if ! head -1 "${SKILL_DIR}/SKILL.md" | grep -q "^---"; then
  echo "FAIL: SKILL.md must start with --- (YAML frontmatter)"
  exit 1
fi

# 3. Check name field
if ! grep -q "^name:" "${SKILL_DIR}/SKILL.md"; then
  echo "FAIL: Missing 'name:' in frontmatter"
  exit 1
fi

# 4. Check description field
if ! grep -q "^description:" "${SKILL_DIR}/SKILL.md"; then
  echo "FAIL: Missing 'description:' in frontmatter"
  exit 1
fi

# 5. Check description is quoted if it has special chars
DESC_LINE=$(grep "^description:" "${SKILL_DIR}/SKILL.md" | head -1)
if echo "$DESC_LINE" | grep -qE '[\[\]#]' && ! echo "$DESC_LINE" | grep -q '"'; then
  echo "WARN: Description contains special characters but is not quoted. This may cause YAML parse failures."
fi

# 6. Check line count
LINES=$(wc -l < "${SKILL_DIR}/SKILL.md")
if [ "$LINES" -gt 500 ]; then
  echo "WARN: SKILL.md is ${LINES} lines (recommended max: 500). Move detail to references/."
fi

# 7. Check for referenced files that don't exist
grep -oE '\{baseDir\}/[^ )"]+' "${SKILL_DIR}/SKILL.md" | while read -r ref; do
  REAL_PATH="${SKILL_DIR}/${ref#{baseDir}/}"
  if [ ! -f "$REAL_PATH" ]; then
    echo "WARN: Referenced file not found: ${ref} -> ${REAL_PATH}"
  fi
done

echo "PASS: Skill structure is valid."

Workflow 5: Restructure / Audit Entire .claude Folder

When the user wants to audit or fix their entire .claude/ setup:

  1. Scan current structure:
echo "=== Current .claude structure ==="
find .claude -type f | head -50
echo ""
echo "=== Skills found ==="
find .claude/skills -name "SKILL.md" 2>/dev/null || echo "No skills directory found"
  1. For each SKILL.md found, run validation (Workflow 4)

  2. Check for common problems:

    • SKILL.md files not inside a named subfolder
    • Missing CLAUDE.md at project root
    • Skills with duplicate names
    • Orphan folders (no SKILL.md inside)
  3. Report findings and offer to fix issues.

  4. If no .claude/ folder exists, scaffold one:

mkdir -p .claude/skills
mkdir -p .claude/commands

# Create starter CLAUDE.md
cat > .claude/CLAUDE.md << 'EOF'
# Project Configuration

## Stack
- TODO: List your tech stack

## Commands
- `npm run dev` — Start dev server
- `npm test` — Run tests
- `npm run build` — Production build

## Conventions
- TODO: Add your code style preferences
- TODO: Add your naming conventions

## Notes
- TODO: Add project-specific context for Claude
EOF

echo "Created .claude/ folder with starter CLAUDE.md"

Important Rules

  1. Always validate after install — run the validation checklist on every new skill
  2. Never overwrite without asking — if a skill folder already exists, confirm before replacing
  3. Quote all descriptions — use double quotes around description values as a default habit
  4. Keep SKILL.md lean — under 500 lines, use references/ for depth
  5. Test the trigger — after installing, suggest the user try a prompt that should activate the skill
  6. Preserve existing structure — when restructuring, don't delete files without confirmation
  7. Handle both project-local and global installs — ask the user which scope they want:
    • Project: ./.claude/skills/
    • Global: ~/.claude/skills/

Error Handling

  • Git clone fails: Check if URL is valid, suggest HTTPS vs SSH
  • No SKILL.md in source: The source isn't a valid AgentSkills package — offer to create one from the content
  • YAML parse error: Almost always unquoted special characters in description — auto-fix by quoting
  • Skill doesn't trigger: Check description keywords match what users would actually say
  • Skill triggers but fails: Check that referenced scripts/files exist and are executable

Source

git clone https://github.com/shane9coy/Agent-Skill-Architecture-Guide/blob/main/.agent/skills/new-skill-builder/SKILL.mdView on GitHub

Overview

New Skill is an installer and scaffold tool for the .claude/skills directory. It covers creating skills from scratch, installing from external sources like URLs, GitHub repos, or zip files, validating the skill structure, and troubleshooting registration issues in the .claude folder.

How This Skill Works

Workflow 1 creates a new skill by gathering details, scaffolding the folder structure, and generating a SKILL.md with frontmatter. Workflow 2 installs external skills by cloning or unpacking archives, locating SKILL.md, and copying the skill into .claude/skills, then cleaning up. Workflow 3 covers installing the MCP Builder skill when provided.

When to Use It

  • When creating a brand-new skill from scratch.
  • When adding a skill from a URL, GitHub repo, or zip file.
  • When pasting or uploading a SKILL.md to install.
  • When validating an existing skill and fixing registration issues.
  • When restructuring the .claude/ folder for better organization.

Quick Start

  1. Step 1: Decide to create a new skill or install from external source.
  2. Step 2: Run the appropriate workflow to scaffold or copy files into .claude/skills.
  3. Step 3: Validate the skill and confirm registration.

Best Practices

  • Define a clear, lowercase hyphenated name for the skill.
  • Keep SKILL.md frontmatter accurate and descriptive.
  • Ensure folders scripts/, references/, assets/ exist if referenced.
  • Validate the skill after install to confirm registration.
  • Document edge cases and testing steps in the Instructions section.

Example Use Cases

  • Create a new 'weather-checker' skill from scratch and scaffold its folder.
  • Install a skill from a GitHub repo containing SKILL.md.
  • Install a ZIP-packaged skill with assets and references.
  • Fix a missing registration issue by restructuring .claude/skills.
  • Validate and reorganize existing skills for consistency.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers