400 lines
9.5 KiB
Markdown
400 lines
9.5 KiB
Markdown
---
|
|
description: Fully automated research gathering for skill creation
|
|
argument-hint: [skill-name] [sources]
|
|
allowed-tools: Bash(python:*), Bash(mkdir:*), Bash(ls:*), Bash(echo:*), Read, Write, AskUserQuestion
|
|
---
|
|
|
|
# Skill Research
|
|
|
|
Your task is to gather research materials for skill creation with intelligent automation.
|
|
|
|
## Purpose
|
|
|
|
Automate the research phase of skill creation by:
|
|
|
|
- Selecting appropriate research tools based on context
|
|
- Executing research scripts with correct parameters
|
|
- Organizing research into skill-specific directories
|
|
- Providing clean, attributed source materials for skill authoring
|
|
|
|
## Inputs
|
|
|
|
Your task is to parse arguments from `$ARGUMENTS`:
|
|
|
|
- **Required:** `skill-name` - Name of skill being researched (kebab-case)
|
|
- **Optional:** `sources` - URLs, keywords, or categories to research
|
|
|
|
## Research Script Selection
|
|
|
|
Choose the appropriate research script based on input context:
|
|
|
|
### 1. If User Provides Specific URLs
|
|
|
|
When `sources` contains one or more URLs (http/https):
|
|
|
|
```bash
|
|
scripts/firecrawl_scrape_url.py "<url>" --output "docs/research/skills/<skill-name>/<filename>.md"
|
|
```
|
|
|
|
Run for each URL provided.
|
|
|
|
### 2. If Researching Claude Code Patterns
|
|
|
|
When skill relates to Claude Code functionality (skills, commands, agents,
|
|
hooks, plugins, MCP):
|
|
|
|
Ask user to confirm if this is about Claude Code:
|
|
|
|
```text
|
|
This appears to be related to Claude Code functionality.
|
|
Use official Claude Code documentation? [Yes/No]
|
|
```
|
|
|
|
If yes:
|
|
|
|
```bash
|
|
scripts/jina_reader_docs.py --output-dir "docs/research/skills/<skill-name>"
|
|
```
|
|
|
|
### 3. General Topic Research (Default)
|
|
|
|
For all other cases, use Firecrawl web search with intelligent category selection.
|
|
|
|
First, conduct a mini brainstorm with the user to refine scope:
|
|
|
|
```text
|
|
Let's refine the research scope for "<skill-name>":
|
|
|
|
1. What specific aspects should we focus on?
|
|
2. Which categories are most relevant? (choose one or multiple)
|
|
- github (code examples, repositories)
|
|
- research (academic papers, technical articles)
|
|
- pdf (documentation, guides)
|
|
- web (general web content - default, omit flag)
|
|
|
|
3. Any specific keywords or search terms to include?
|
|
```
|
|
|
|
Then execute:
|
|
|
|
```bash
|
|
# Single category (most common)
|
|
scripts/firecrawl_sdk_research.py "<query>" \
|
|
--limit <num-results> \
|
|
--category <category> \
|
|
--output "docs/research/skills/<skill-name>/research.md"
|
|
|
|
# Multiple categories (advanced)
|
|
scripts/firecrawl_sdk_research.py "<query>" \
|
|
--limit <num-results> \
|
|
--categories github,research,pdf \
|
|
--output "docs/research/skills/<skill-name>/research.md"
|
|
```
|
|
|
|
**Default parameters:**
|
|
|
|
- `limit`: 10 (adjustable based on scope)
|
|
- `category`: Based on user input, or use `--categories` for multiple, or omit
|
|
for general web search
|
|
- `query`: Skill name + refined keywords from brainstorm
|
|
|
|
## Output Directory Management
|
|
|
|
All research saves to: `docs/research/skills/<skill-name>/`
|
|
|
|
## Execution Process
|
|
|
|
### Step 1: Parse Arguments
|
|
|
|
Your task is to extract skill name and sources from `$ARGUMENTS`:
|
|
|
|
- Split arguments by space
|
|
- First argument: skill name (required)
|
|
- Remaining arguments: sources (optional)
|
|
|
|
**Validation:**
|
|
|
|
- Skill name must be kebab-case (lowercase with hyphens)
|
|
- Skill name cannot be empty
|
|
|
|
### Step 2: Determine Research Strategy
|
|
|
|
Your task is to analyze sources to select script:
|
|
|
|
```text
|
|
If sources contain URLs (starts with http:// or https://):
|
|
→ Use firecrawl_scrape_url.py for each URL
|
|
|
|
Else if skill-name matches Claude Code patterns:
|
|
(Contains: skill, command, agent, hook, plugin, mcp, slash, subagent)
|
|
→ Ask user if they want official Claude Code docs
|
|
→ If yes: Use jina_reader_docs.py
|
|
|
|
Else:
|
|
→ Use firecrawl_sdk_research.py with brainstorm
|
|
```
|
|
|
|
### Step 3: Create Output Directory
|
|
|
|
```bash
|
|
mkdir -p "docs/research/skills/<skill-name>"
|
|
```
|
|
|
|
### Step 4: Execute Research Script
|
|
|
|
Run selected script with appropriate parameters based on selection logic.
|
|
|
|
**Environment check:**
|
|
|
|
Before running Firecrawl scripts, verify API key:
|
|
|
|
```bash
|
|
if [ -z "$FIRECRAWL_API_KEY" ]; then
|
|
echo "Error: FIRECRAWL_API_KEY environment variable not set"
|
|
echo "Set it with: export FIRECRAWL_API_KEY='fc-your-api-key'"
|
|
exit 1
|
|
fi
|
|
```
|
|
|
|
**Script execution patterns:**
|
|
|
|
**For URL scraping:**
|
|
|
|
```bash
|
|
for url in $urls; do
|
|
filename=$(echo "$url" | sed 's|https\?://||' | sed 's|/|-|g' | cut -c1-50)
|
|
scripts/firecrawl_scrape_url.py "$url" \
|
|
--output "docs/research/skills/<skill-name>/${filename}.md"
|
|
done
|
|
```
|
|
|
|
**For Claude Code docs:**
|
|
|
|
```bash
|
|
scripts/jina_reader_docs.py \
|
|
--output-dir "docs/research/skills/<skill-name>"
|
|
```
|
|
|
|
**For general research:**
|
|
|
|
```bash
|
|
# Single category
|
|
scripts/firecrawl_sdk_research.py "$query" \
|
|
--limit $limit \
|
|
--category $category \
|
|
--output "docs/research/skills/<skill-name>/research.md"
|
|
|
|
# Or multiple categories
|
|
scripts/firecrawl_sdk_research.py "$query" \
|
|
--limit $limit \
|
|
--categories github,research,pdf \
|
|
--output "docs/research/skills/<skill-name>/research.md"
|
|
```
|
|
|
|
### Step 5: Verify Research Output
|
|
|
|
Check that research files were created:
|
|
|
|
```bash
|
|
ls -lh "docs/research/skills/<skill-name>/"
|
|
```
|
|
|
|
Display summary:
|
|
|
|
```text
|
|
✓ Research completed for <skill-name>
|
|
|
|
Output directory: docs/research/skills/<skill-name>/
|
|
Files created: X files
|
|
Total size: Y KB
|
|
|
|
Research materials ready for formatting and skill creation.
|
|
|
|
Next steps:
|
|
1. Review research materials
|
|
2. Run: /meta-claude:skill:format docs/research/skills/<skill-name>
|
|
3. Run: /meta-claude:skill:create <skill-name> docs/research/skills/<skill-name>
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
### Missing FIRECRAWL_API_KEY
|
|
|
|
```text
|
|
Error: FIRECRAWL_API_KEY environment variable not set.
|
|
|
|
Firecrawl research scripts require an API key.
|
|
|
|
Set it with:
|
|
export FIRECRAWL_API_KEY='fc-your-api-key'
|
|
|
|
Get your API key from: https://firecrawl.dev
|
|
|
|
Alternative: Use manual research and skip this step.
|
|
```
|
|
|
|
Exit with error code 1.
|
|
|
|
### Script Execution Failures
|
|
|
|
If research script fails:
|
|
|
|
```text
|
|
Error: Research script failed with exit code X
|
|
|
|
Script: <script-name>
|
|
Command: <full-command>
|
|
Error output: <stderr>
|
|
|
|
Troubleshooting:
|
|
- Verify API key is valid
|
|
- Check network connectivity
|
|
- Verify script permissions (chmod +x)
|
|
- Review script output above for specific errors
|
|
|
|
Research failed. Fix the error and try again.
|
|
```
|
|
|
|
Exit with error code 1.
|
|
|
|
### Invalid Skill Name
|
|
|
|
```text
|
|
Error: Invalid skill name format: <skill-name>
|
|
|
|
Skill names must:
|
|
- Use kebab-case (lowercase with hyphens)
|
|
- Contain only letters, numbers, and hyphens
|
|
- Not start or end with hyphens
|
|
- Not contain consecutive hyphens
|
|
|
|
Examples:
|
|
✓ docker-compose-helper
|
|
✓ git-workflow-automation
|
|
✗ DockerHelper (use docker-helper)
|
|
✗ git__workflow (no consecutive hyphens)
|
|
|
|
Please provide a valid skill name.
|
|
```
|
|
|
|
Exit with error code 1.
|
|
|
|
### No Sources Provided for URL Scraping
|
|
|
|
If user provides no sources but you detect they want URL scraping:
|
|
|
|
```text
|
|
No URLs provided for research.
|
|
|
|
Usage:
|
|
/meta-claude:skill:research <skill-name> <url1> [url2] [url3]
|
|
|
|
Example:
|
|
/meta-claude:skill:research docker-best-practices https://docs.docker.com/develop/dev-best-practices/
|
|
|
|
Or run without URLs for general web research:
|
|
/meta-claude:skill:research docker-best-practices
|
|
```
|
|
|
|
Exit with error code 1.
|
|
|
|
## Examples
|
|
|
|
### Example 1: General Research with Defaults
|
|
|
|
User invocation:
|
|
|
|
```bash
|
|
/meta-claude:skill:research ansible-vault-security
|
|
```
|
|
|
|
Process:
|
|
|
|
1. Detect no URLs, not Claude Code specific
|
|
2. Mini brainstorm with user about scope
|
|
3. Execute firecrawl_sdk_research.py:
|
|
|
|
```bash
|
|
scripts/firecrawl_sdk_research.py \
|
|
"ansible vault security best practices" \
|
|
--limit 10 \
|
|
--output docs/research/skills/ansible-vault-security/research.md
|
|
```
|
|
|
|
4. Display summary with next steps
|
|
|
|
### Example 2: Scraping Specific URLs
|
|
|
|
User invocation:
|
|
|
|
```bash
|
|
/meta-claude:skill:research terraform-best-practices \
|
|
https://developer.hashicorp.com/terraform/tutorials \
|
|
https://spacelift.io/blog/terraform-best-practices
|
|
```
|
|
|
|
Process:
|
|
|
|
1. Detect URLs in arguments
|
|
2. Create output directory: `docs/research/skills/terraform-best-practices/`
|
|
3. Scrape each URL:
|
|
- `developer-hashicorp-com-terraform-tutorials.md`
|
|
- `spacelift-io-blog-terraform-best-practices.md`
|
|
4. Display summary with file list
|
|
|
|
### Example 3: Claude Code Documentation
|
|
|
|
User invocation:
|
|
|
|
```bash
|
|
/meta-claude:skill:research skill-creator-advanced
|
|
```
|
|
|
|
Process:
|
|
|
|
1. Detect "skill" in name, matches Claude Code pattern
|
|
2. Ask: "This appears to be related to Claude Code functionality. Use
|
|
official Claude Code documentation? [Yes/No]"
|
|
3. User: Yes
|
|
4. Execute: `scripts/jina_reader_docs.py --output-dir docs/research/skills/skill-creator-advanced`
|
|
5. Display summary with downloaded docs list
|
|
|
|
### Example 4: Research with Category Filtering
|
|
|
|
User invocation:
|
|
|
|
```bash
|
|
/meta-claude:skill:research machine-learning-pipelines
|
|
```
|
|
|
|
Process:
|
|
|
|
1. Mini brainstorm reveals focus on academic research papers
|
|
2. User selects category: `research`
|
|
3. Execute firecrawl_sdk_research.py:
|
|
|
|
```bash
|
|
scripts/firecrawl_sdk_research.py \
|
|
"machine learning pipelines" \
|
|
--limit 10 \
|
|
--category research \
|
|
--output docs/research/skills/machine-learning-pipelines/research.md
|
|
```
|
|
|
|
4. Display summary
|
|
|
|
## Success Criteria
|
|
|
|
Research is successful when:
|
|
|
|
1. Research scripts execute without errors
|
|
2. Output directory contains research files
|
|
3. Files are non-empty and contain markdown content
|
|
4. Summary displays file count and total size
|
|
5. Next steps guide user to formatting and creation phases
|
|
|
|
## Exit Codes
|
|
|
|
- **0:** Success - research completed and saved
|
|
- **1:** Failure - invalid input, missing API key, script errors, or execution failures
|