#!/usr/bin/env bash set -euo pipefail SKILL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" TEMPLATES_DIR="$SKILL_DIR/../assets/templates" usage() { cat < Create a new skill scaffold by copying annotated templates to the destination. Arguments: skill-name Kebab-case skill identifier (e.g. my-tool, data-analyzer). Must match the directory name exactly. destination-dir Parent directory to create the skill in. Examples: ~/.agents/skills/ plugins/myplugin/skills/ Output: Creates // with annotated templates ready to fill in. Exit codes: 0 Scaffold created successfully 1 Invalid arguments or destination already exists EOF } if [[ "${1:-}" == "--help" || "${1:-}" == "-h" ]]; then usage exit 0 fi if [[ $# -lt 2 ]]; then echo "Error: skill-name and destination-dir are required." >&2 echo "" >&2 usage >&2 exit 1 fi SKILL_NAME="$1" DEST_DIR="$2" # Validate skill name format if ! echo "$SKILL_NAME" | grep -qE '^[a-z0-9]+(-[a-z0-9]+)*$'; then echo "Error: skill-name must use lowercase letters, numbers, and hyphens only." >&2 echo " No leading, trailing, or consecutive hyphens." >&2 echo " Received: '$SKILL_NAME'" >&2 exit 1 fi # Validate templates directory exists if [[ ! -d "$TEMPLATES_DIR" ]]; then echo "Error: templates directory not found at '$TEMPLATES_DIR'." >&2 echo " Run this script from its original location inside the skill-write skill." >&2 exit 1 fi # Validate destination exists if [[ ! -d "$DEST_DIR" ]]; then echo "Error: destination directory '$DEST_DIR' does not exist." >&2 exit 1 fi TARGET="$DEST_DIR/$SKILL_NAME" # Refuse to overwrite existing directory if [[ -d "$TARGET" ]]; then echo "Error: '$TARGET' already exists." >&2 echo " Remove it first or choose a different name." >&2 exit 1 fi # Copy templates to destination cp -r "$TEMPLATES_DIR" "$TARGET" # Set skill name in templates sed -i "s/SKILL_NAME/$SKILL_NAME/g" "$TARGET/SKILL.md" sed -i "s/SKILL_NAME/$SKILL_NAME/g" "$TARGET/README.md" echo "Scaffold created: $TARGET" echo "" echo "Next steps:" echo " 1. Fill in $TARGET/SKILL.md — replace all FILL IN: placeholders" echo " 2. Add scripts to scripts/ if needed (or delete the directory)" echo " 3. Add docs to references/ if needed (or delete the directory)" echo " 4. Add resources to assets/ if needed (or delete the directory)" echo " 5. Validate: run /skill-audit on $TARGET"