177 lines
5.2 KiB
Markdown
177 lines
5.2 KiB
Markdown
---
|
||
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
|
||
```
|