Initial commit

This commit is contained in:
Zhongwei Li
2025-11-29 18:00:44 +08:00
commit e89a943b71
19 changed files with 5272 additions and 0 deletions

176
commands/suggest-skills.md Normal file
View 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
```