home / skills / everyinc / compound-engineering-plugin / generate_command

This skill helps you generate a new custom slash command following conventions and best practices for Claude Code plugins.

npx playbooks add skill everyinc/compound-engineering-plugin --skill generate_command

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
4.0 KB
---
name: generate_command
description: Create a new custom slash command following conventions and best practices
argument-hint: "[command purpose and requirements]"
disable-model-invocation: true
---

# Create a Custom Claude Code Command

Create a new skill in `.claude/skills/` for the requested task.

## Goal

#$ARGUMENTS

## Key Capabilities to Leverage

**File Operations:**
- Read, Edit, Write - modify files precisely
- Glob, Grep - search codebase
- MultiEdit - atomic multi-part changes

**Development:**
- Bash - run commands (git, tests, linters)
- Task - launch specialized agents for complex tasks
- TodoWrite - track progress with todo lists

**Web & APIs:**
- WebFetch, WebSearch - research documentation
- GitHub (gh cli) - PRs, issues, reviews
- Playwright - browser automation, screenshots

**Integrations:**
- AppSignal - logs and monitoring
- Context7 - framework docs
- Stripe, Todoist, Featurebase (if relevant)

## Best Practices

1. **Be specific and clear** - detailed instructions yield better results
2. **Break down complex tasks** - use step-by-step plans
3. **Use examples** - reference existing code patterns
4. **Include success criteria** - tests pass, linting clean, etc.
5. **Think first** - use "think hard" or "plan" keywords for complex problems
6. **Iterate** - guide the process step by step

## Required: YAML Frontmatter

**EVERY command MUST start with YAML frontmatter:**

```yaml
---
name: command-name
description: Brief description of what this command does (max 100 chars)
argument-hint: "[what arguments the command accepts]"
---
```

**Fields:**
- `name`: Lowercase command identifier (used internally)
- `description`: Clear, concise summary of command purpose
- `argument-hint`: Shows user what arguments are expected (e.g., `[file path]`, `[PR number]`, `[optional: format]`)

## Structure Your Command

```markdown
# [Command Name]

[Brief description of what this command does]

## Steps

1. [First step with specific details]
   - Include file paths, patterns, or constraints
   - Reference existing code if applicable

2. [Second step]
   - Use parallel tool calls when possible
   - Check/verify results

3. [Final steps]
   - Run tests
   - Lint code
   - Commit changes (if appropriate)

## Success Criteria

- [ ] Tests pass
- [ ] Code follows style guide
- [ ] Documentation updated (if needed)
```

## Tips for Effective Commands

- **Use $ARGUMENTS** placeholder for dynamic inputs
- **Reference CLAUDE.md** patterns and conventions
- **Include verification steps** - tests, linting, visual checks
- **Be explicit about constraints** - don't modify X, use pattern Y
- **Use XML tags** for structured prompts: `<task>`, `<requirements>`, `<constraints>`

## Example Pattern

```markdown
Implement #$ARGUMENTS following these steps:

1. Research existing patterns
   - Search for similar code using Grep
   - Read relevant files to understand approach

2. Plan the implementation
   - Think through edge cases and requirements
   - Consider test cases needed

3. Implement
   - Follow existing code patterns (reference specific files)
   - Write tests first if doing TDD
   - Ensure code follows CLAUDE.md conventions

4. Verify
   - Run tests: `bin/rails test`
   - Run linter: `bundle exec standardrb`
   - Check changes with git diff

5. Commit (optional)
   - Stage changes
   - Write clear commit message
```

## Creating the Command File

1. **Create the directory** at `.claude/skills/[name]/SKILL.md`
2. **Start with YAML frontmatter** (see section above)
3. **Structure the skill** using the template above
4. **Test the skill** by using it with appropriate arguments

## Command File Template

```markdown
---
name: command-name
description: What this command does
argument-hint: "[expected arguments]"
---

# Command Title

Brief introduction of what the command does and when to use it.

## Workflow

### Step 1: [First Major Step]

Details about what to do.

### Step 2: [Second Major Step]

Details about what to do.

## Success Criteria

- [ ] Expected outcome 1
- [ ] Expected outcome 2
```

Overview

This skill generates a new custom slash command in the .claude/skills/ tree following repository conventions and best practices. It produces a ready-to-use markdown skill file with required YAML frontmatter, a clear workflow, verification steps, and success criteria. The output is designed to be commit-ready and easy to test.

How this skill works

The skill inspects the codebase to find similar command patterns and existing examples, then scaffolds a new .claude/skills/<name>/SKILL.md file with the required YAML frontmatter and a structured implementation template. It includes concrete steps: discovery (grep/glob), implementation notes (file paths, test hints), verification (lint/tests), and a checklist of success criteria. Optionally it can run local linters and test commands to verify the changes.

When to use it

  • You need a new custom slash command that conforms to project conventions.
  • Creating reproducible, reviewable command templates for contributors.
  • Onboarding new commands where clear steps and verification are required.
  • When you want the command to include tests, lint checks, and success criteria.
  • Standardizing command format across multiple skills or teams.

Best practices

  • Always start with the required YAML frontmatter (name, description, argument-hint).
  • Search for similar skills with glob/grep to mirror existing patterns and naming.
  • Be explicit: include file paths, exact commands to run, and verification steps.
  • Break tasks into clear numbered steps and add success criteria (tests/lint).
  • Iterate: scaffold first, run tests and linters, then refine before committing.

Example use cases

  • Create a command to run a project-specific generator: include argument-hint and example invocation.
  • Scaffold a maintenance command that updates license headers across files with verification steps.
  • Add a QA command that runs a set of linters and unit tests and outputs a pass/fail checklist.
  • Provide a contributor-facing command template for adding new CI tasks with step-by-step instructions.
  • Implement a debugging command that collects logs, runs diagnostics, and stores artifacts.

FAQ

What must the YAML frontmatter contain?

Every command must include name (lowercase id), description (<=100 chars), and argument-hint showing expected arguments.

How do I verify the new command is correct?

Include steps to run the project tests and linter, run them locally (or via the skill), and ensure the success criteria checklist is satisfied.