mcpField
A
add-skill

add-skill

github.com/youdotcom-ossAgent workflows9753 installsUpdated 2d ago
Repository

About add-skill

A workflow skill for adding external skills to the `agent-skills` repository. It guides integration and CLI skill scaffolding, publication workflow registration, symlink creation, and validation.

Key features

  1. 01Choose integration or tool workflow
  2. 02Scaffold skill files and directories
  3. 03Register skills in publish.yml
  4. 04Create external-skill symlinks
  5. 05Validate skill structure

Use cases

  1. 01Add an SDK integration skill
  2. 02Add a CLI wrapper skill
  3. 03Register a new external skill for publishing

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/youdotcom-oss/agent-skills --skill add-skill

After installing, type/add-skillin Claude Code to confirm it loaded.

Details

From the project README

Add Skill

Coordinate adding a new external skill to the agent-skills repository. Covers scaffolding, publish workflow registration, and symlink creation.

When to Use

Use this skill when:

  • Adding a new SDK/framework integration skill to skills/
  • Adding a new CLI tool wrapper skill to skills/
  • Any time a skills/<skill-name>/ directory needs to be created and registered

Decision Point

Ask first:

Is this an integration skill (agent generates code + tests calling real APIs) or a tool skill (agent runs a CLI command)?

  • Integration → Invoke create-seed-skill, then continue with Steps 2–4
  • Tool → Scaffold manually starting at Step 1

Integration Skill Workflow

Integration skills wrap SDKs or frameworks where the agent generates runnable code and integration tests.

Examples: ydc-ai-sdk-integration, teams-anthropic-integration, ydc-openai-agent-sdk-integration

Step 1 (integration) — Invoke create-seed-skill

Activate the create-seed-skill skill. It handles:

  • Collecting skill info (name, packages, language — TypeScript, Python, or both, paths A/B, env vars, test query)
  • Generating skills/<skill-name>/SKILL.md and assets/
  • Creating tests/<skill-name>/ directories with .gitkeep files (one per language if both)
  • Appending one prompts.jsonl entry per language to data/prompts/prompts.jsonl

Complete the create-seed-skill workflow fully before proceeding to Step 2.


Tool Skill Workflow

Tool skills are CLI wrappers where the agent runs commands rather than writing code.

Examples: youdotcom-cli

Step 1 — Scaffold the skill directory

Create the skill directory and SKILL.md at skills/<skill-name>/SKILL.md.

Required frontmatter:

---
name: <skill-name>
description: |
  One-line summary. When to activate.
license: <ISC|MIT|Apache-2.0>
compatibility: <runtime requirements, e.g. "Requires Bun 1.3+">
metadata:
  author: youdotcom-oss
  version: "1.0.0"
  category: <tool|integration|scaffolding>
  keywords: <comma-separated>
---

Validate immediately:

bunx @plaited/development-skills validate-skill skills/<skill-name>

Step 2 — Register in publish.yml

Two edits to .github/workflows/publish.yml:

2a — Add input

Under on.workflow_dispatch.inputs, add:

<skill-name>:
  description: "<skill-name>"
  required: false
  type: choice
  default: skip
  options:
    - skip
    - patch
    - minor
    - major
2b — Add job

Append at the end of the jobs: section. The new job must needs the current last job to preserve push serialization:

publish-<skill-name>:
  needs: <current-last-job>
  if: ${{ always() && inputs['<skill-name>'] != 'skip' }}
  uses: ./.github/workflows/_publish.yml
  with:
    skill_name: "<skill-name>"
    bump_type: ${{ inputs['<skill-name>'] }}
  secrets:
    PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }}

Find the current last job at runtime — do not rely on a hardcoded list. Run this to get the job ID to use as needs:

grep '^  publish-' .github/workflows/publish.yml | tail -1

The output will be a line like publish-youdotcom-cli: — use the job ID (without the trailing colon) as <current-last-job>.

The always() in if: is required — without it a skipped predecessor causes the dependent job to be skipped too, even if this skill was selected.


Step 3 — Create symlink

External skills symlink from .claude/skills/ into skills/:

ln -s ../../skills/<skill-name> .claude/skills/<skill-name>

Note: internal skills (in .agents/skills/) use a different target: ../../.agents/skills/<skill-name> — but this skill only handles external skills.


Step 4 — Final validation

bunx @plaited/development-skills validate-skill skills/<skill-name>

Confirm the output reports valid: true before committing.


Related Skills

  • create-seed-skill — Full scaffolding workflow for integration-type skills (SKILL.md + assets + prompts.jsonl)
  • validate-skill — Validate any skill's structure against the AgentSkills spec

Comments

Markdown supported