Initial commit
This commit is contained in:
176
commands/suggest-skills.md
Normal file
176
commands/suggest-skills.md
Normal file
@@ -0,0 +1,176 @@
|
||||
---
|
||||
name: suggest-skills
|
||||
description: Analyzes prompt files and recommends extracting reusable logic into skills
|
||||
argument-hint: [file-path]
|
||||
---
|
||||
|
||||
# PURPOSE
|
||||
|
||||
You are analyzing a prompt file to identify opportunities for skill extraction.
|
||||
|
||||
## Step 1: Read and Analyze Prompt
|
||||
|
||||
Read the file at path: `$1`
|
||||
|
||||
If no path provided (`$1` is empty), ask user for the file path.
|
||||
|
||||
Analyze the prompt content for extraction candidates:
|
||||
|
||||
**Identify if prompt contains:**
|
||||
|
||||
- Repeated multi-step workflows (3+ steps appearing 2+ times)
|
||||
- Complex subprocess with clear input/output boundaries (>200 words, self-contained)
|
||||
- Domain-specific logic that could apply to other prompts
|
||||
- Tool-heavy sections that could be reused
|
||||
|
||||
**For each candidate, document:**
|
||||
|
||||
- Proposed skill name (action-oriented, gerund form: `processing-X`, `building-Y`)
|
||||
- What it would handle (1 sentence)
|
||||
- Lines/sections to extract from current prompt
|
||||
- Justification (why worth extracting)
|
||||
|
||||
**Output MAX 3-5 skill candidates.** DO NOT suggest extraction for:
|
||||
|
||||
- Prompts <300 words total
|
||||
- One-off logic with no reuse potential
|
||||
- Simple template sections
|
||||
|
||||
## Step 2: Check for Duplicate Skills
|
||||
|
||||
Before presenting options to user, check if proposed skills already exist:
|
||||
|
||||
1. **Search user-level skills**:
|
||||
|
||||
- Glob `~/.claude/skills/*/SKILL.md`
|
||||
- Read each SKILL.md to check name and description
|
||||
- Match by: similar name, overlapping functionality
|
||||
|
||||
2. **Check available skills**:
|
||||
|
||||
- Review list of available skills from plugins/MCP
|
||||
- Current known skills: draft-github-issues, publish-github-issues, prompt-architecting, saas-pricing-strategy, skill-generator
|
||||
|
||||
3. **For each duplicate found**:
|
||||
- Note which existing skill covers this functionality
|
||||
- Remove from candidate list
|
||||
- Prepare recommendation to use existing skill instead
|
||||
|
||||
## Step 3: Present Options
|
||||
|
||||
Use AskUserQuestion tool to present candidates:
|
||||
|
||||
**If 0 candidates after deduplication:**
|
||||
|
||||
```text
|
||||
No new skills recommended. Existing skills already cover identified patterns:
|
||||
- {pattern description} → Use {existing-skill-name}
|
||||
- {pattern description} → Use {existing-skill-name}
|
||||
|
||||
Suggestion: Use /optimize-prompt-file to reduce verbosity without extracting logic.
|
||||
```
|
||||
|
||||
**If 1+ candidates remain:**
|
||||
|
||||
```text
|
||||
Question: "Which skills should I extract from this prompt?"
|
||||
multiSelect: true
|
||||
Options:
|
||||
- label: "{skill-name-1}"
|
||||
description: "Handles {what it does}. Extracts {section description}."
|
||||
- label: "{skill-name-2}"
|
||||
description: "Handles {what it does}. Extracts {section description}."
|
||||
...
|
||||
- label: "None - keep as-is"
|
||||
description: "Don't extract any skills"
|
||||
```
|
||||
|
||||
**Also inform user about existing skills:**
|
||||
|
||||
```text
|
||||
ℹ️ Existing skills that could be used:
|
||||
- {existing-skill-name}: {what it does}
|
||||
```
|
||||
|
||||
## Step 4: Execute User Choice
|
||||
|
||||
Based on user selection:
|
||||
|
||||
**If "None - keep as-is"**: Exit with no changes.
|
||||
|
||||
**If 1+ skills selected**:
|
||||
|
||||
For each selected skill:
|
||||
|
||||
1. **Run your skill-generator skill** with:
|
||||
|
||||
- Skill name: {selected-name}
|
||||
- Purpose: {what it handles}
|
||||
- Context: Extracted from {original-file-path}
|
||||
- Content to extract: {specific sections/logic}
|
||||
- Location: Ask user (user-level `~/.claude/skills/` or project-level `.claude/skills/`)
|
||||
|
||||
2. Wait for skill-generator to complete
|
||||
|
||||
3. Verify skill was created successfully
|
||||
|
||||
## Step 5: Refactor Original Prompt
|
||||
|
||||
Once all skills created:
|
||||
|
||||
1. **Replace extracted logic** with skill invocations:
|
||||
|
||||
- Find sections that were extracted
|
||||
- Replace with: "Run {skill-name} skill to handle {purpose}"
|
||||
- Update workflow steps to reference skill calls
|
||||
|
||||
2. **Preserve front matter** exactly (never modify)
|
||||
|
||||
3. **Show diff** to user:
|
||||
|
||||
```text
|
||||
Changes to {file-path}:
|
||||
|
||||
- [Removed: Lines X-Y - extracted to {skill-name}]
|
||||
+ [Added: Run {skill-name} skill]
|
||||
|
||||
Before: {original-word-count} words
|
||||
After: {new-word-count} words ({reduction}% reduction)
|
||||
|
||||
Proceed with refactoring? [yes/no]
|
||||
```
|
||||
|
||||
4. **Apply changes** if user approves:
|
||||
- Write refactored content + original front matter back to file
|
||||
- Report success with summary
|
||||
|
||||
## Important Rules
|
||||
|
||||
- NEVER create skills manually - ALWAYS use skill-generator skill
|
||||
- ALWAYS check for duplicate skills before presenting options
|
||||
- ALWAYS preserve front matter exactly
|
||||
- REQUIRE user approval before refactoring original prompt
|
||||
- DO NOT suggest extraction for prompts <300 words
|
||||
- DO NOT auto-extract without user selection via AskUserQuestion
|
||||
- If extraction would leave original prompt <50 words, warn that it may be too aggressive
|
||||
|
||||
## Example Output
|
||||
|
||||
```text
|
||||
Analyzing /Users/name/.claude/commands/complex-workflow.md...
|
||||
Current: 650 words
|
||||
|
||||
Identified 3 extraction candidates:
|
||||
1. validating-yaml-structure (lines 45-120): Validates YAML files against schemas
|
||||
2. batch-file-processing (lines 200-280): Processes multiple files with progress tracking
|
||||
3. generating-reports (lines 350-420): Creates markdown reports from structured data
|
||||
|
||||
Checking for duplicates...
|
||||
✅ No existing skills match these patterns
|
||||
|
||||
Which skills should I extract from this prompt?
|
||||
□ validating-yaml-structure - Handles YAML validation logic
|
||||
□ batch-file-processing - Handles multi-file processing with progress
|
||||
□ generating-reports - Handles report generation from data
|
||||
☑ None - keep as-is
|
||||
```
|
||||
Reference in New Issue
Block a user