diff --git a/plugins/backlog/skills/next/SKILL.md b/plugins/backlog/commands/next.md similarity index 95% rename from plugins/backlog/skills/next/SKILL.md rename to plugins/backlog/commands/next.md index b6d9d8c..201cc6a 100644 --- a/plugins/backlog/skills/next/SKILL.md +++ b/plugins/backlog/commands/next.md @@ -1,18 +1,9 @@ --- -name: next description: Check Gitea for open issues and surface the next task to work on --- # Backlog - Find Next Task -## When to Activate This Skill -- "/backlog" -- "What should I work on?" -- "Check for open issues" -- "Any tasks to do?" -- "What's next?" -- "Show me the backlog" - ## Core Workflow ### Step 1: Detect the current repo diff --git a/plugins/project-plan/skills/generate/SKILL.md b/plugins/project-plan/commands/generate.md similarity index 92% rename from plugins/project-plan/skills/generate/SKILL.md rename to plugins/project-plan/commands/generate.md index 028d66f..6a2d6e3 100644 --- a/plugins/project-plan/skills/generate/SKILL.md +++ b/plugins/project-plan/commands/generate.md @@ -1,5 +1,4 @@ --- -name: generate description: Analyze codebase and generate comprehensive PROJECT_PLAN.json task files --- @@ -10,7 +9,7 @@ Creates structured `PROJECT_PLAN.json` files for tracking project work. ## Usage ``` -/project-plan [type] +/project-plan:generate [type] ``` **Types:** @@ -175,13 +174,3 @@ Create `PROJECT_PLAN.json` in the project root or relevant subdirectory. - Default: `PROJECT_PLAN.json` in project root - For monorepos: `{subproject}/PROJECT_PLAN.json` - For focused work: `{directory}/PROJECT_PLAN.json` - -## Example Invocations - -``` -/project-plan # Default refactoring analysis -/project-plan refactoring # Technical debt focus -/project-plan feature # Feature implementation plan -/project-plan audit # Security/a11y audit -/project-plan --output=frontend # Save to frontend/PROJECT_PLAN.json -``` diff --git a/plugins/save-doc/skills/save/SKILL.md b/plugins/save-doc/commands/save.md similarity index 96% rename from plugins/save-doc/skills/save/SKILL.md rename to plugins/save-doc/commands/save.md index 0abedd8..9f2f276 100644 --- a/plugins/save-doc/skills/save/SKILL.md +++ b/plugins/save-doc/commands/save.md @@ -1,8 +1,6 @@ --- -name: save -allowed-tools: Read,Write,Edit,Glob,Grep,Bash description: Save documentation to the knowledge base with proper frontmatter -user-invocable: true +allowed-tools: Read,Write,Edit,Glob,Grep,Bash --- Save learnings, fixes, release notes, and other documentation to the claude-home knowledge base. Files are auto-committed and pushed by the `sync-kb` systemd timer (every 2 hours), which triggers kb-rag reindexing. @@ -70,7 +68,7 @@ Save to `/mnt/NV2/Development/claude-home/{domain}/`. The file will be auto-comm ## Examples -See `examples/` in this skill directory for templates of each document type: +See `examples/` in this plugin directory for templates of each document type: - `examples/troubleshooting.md` — Bug fix / incident resolution - `examples/release-notes.md` — Deployment / release changelog - `examples/guide.md` — How-to / setup guide diff --git a/plugins/save-doc/skills/save/examples/guide.md b/plugins/save-doc/examples/guide.md similarity index 100% rename from plugins/save-doc/skills/save/examples/guide.md rename to plugins/save-doc/examples/guide.md diff --git a/plugins/save-doc/skills/save/examples/release-notes.md b/plugins/save-doc/examples/release-notes.md similarity index 100% rename from plugins/save-doc/skills/save/examples/release-notes.md rename to plugins/save-doc/examples/release-notes.md diff --git a/plugins/save-doc/skills/save/examples/runbook.md b/plugins/save-doc/examples/runbook.md similarity index 100% rename from plugins/save-doc/skills/save/examples/runbook.md rename to plugins/save-doc/examples/runbook.md diff --git a/plugins/save-doc/skills/save/examples/troubleshooting.md b/plugins/save-doc/examples/troubleshooting.md similarity index 100% rename from plugins/save-doc/skills/save/examples/troubleshooting.md rename to plugins/save-doc/examples/troubleshooting.md diff --git a/plugins/youtube-transcriber/commands/transcribe.md b/plugins/youtube-transcriber/commands/transcribe.md new file mode 100644 index 0000000..979b398 --- /dev/null +++ b/plugins/youtube-transcriber/commands/transcribe.md @@ -0,0 +1,164 @@ +--- +description: Transcribe YouTube videos of any length using GPT-4o-mini-transcribe +--- + +# YouTube Transcriber - High-Quality Video Transcription + +## Script Location +**Primary script**: `$YOUTUBE_TRANSCRIBER_DIR/transcribe.py` + +## Key Features +- **Parallel processing**: Multiple videos can be transcribed simultaneously +- **Unlimited length**: Auto-chunks videos >10 minutes to prevent API limits +- **Organized output**: + - Transcripts → `output/` directory + - Temp files → `temp/` directory (auto-cleaned) +- **High quality**: Uses GPT-4o-mini-transcribe by default (OpenAI's recommended model) +- **Cost options**: Can use `-m gpt-4o-transcribe` for the full-size model at 2x cost + +## Basic Usage + +### Single Video +```bash +cd $YOUTUBE_TRANSCRIBER_DIR +uv run python transcribe.py "https://youtube.com/watch?v=VIDEO_ID" +``` + +**Output**: `output/Video_Title_2025-11-10.txt` + +### Multiple Videos in Parallel +```bash +cd $YOUTUBE_TRANSCRIBER_DIR + +# Launch all in background simultaneously +uv run python transcribe.py "URL1" & +uv run python transcribe.py "URL2" & +uv run python transcribe.py "URL3" & +wait +``` + +**Why parallel works**: Each transcription uses unique temp files (UUID-based) in `temp/` directory. + +### Higher Quality Mode +```bash +cd $YOUTUBE_TRANSCRIBER_DIR +uv run python transcribe.py "URL" -m gpt-4o-transcribe +``` + +**When to use full model**: Noisy audio, critical accuracy requirements. Costs 2x more ($0.006/min vs $0.003/min). + +## Command Options + +```bash +uv run python transcribe.py [URL] [OPTIONS] + +Options: + -o, --output PATH Custom output filename (default: auto-generated in output/) + -m, --model MODEL Transcription model (default: gpt-4o-mini-transcribe) + Options: gpt-4o-mini-transcribe, gpt-4o-transcribe, whisper-1 + -p, --prompt TEXT Context prompt for better accuracy + --chunk-duration MINUTES Chunk size for long videos (default: 10 minutes) + --keep-audio Keep temp audio files (default: auto-delete) +``` + +## Workflow for User Requests + +### Single Video Request +1. Change to transcriber directory +2. Run script with URL +3. Report output file location in `output/` directory + +### Multiple Video Request +1. Change to transcriber directory +2. Launch all transcriptions in parallel using background processes +3. Wait for all to complete +4. Report all output files in `output/` directory + +### Testing/Cost-Conscious Request +1. Default model (`gpt-4o-mini-transcribe`) is already the cheapest GPT-4o option +2. For even cheaper: suggest Groq's Whisper API as an alternative +3. Quality is excellent for most YouTube content + +## Technical Details + +**How it works**: +1. Downloads audio from YouTube (via yt-dlp) +2. Saves to unique temp file: `temp/download_{UUID}.mp3` +3. Splits long videos (>10 min) into chunks automatically +4. Transcribes with OpenAI API (GPT-4o-mini-transcribe) +5. Saves transcript: `output/Video_Title_YYYY-MM-DD.txt` +6. Cleans up temp files automatically + +**Parallel safety**: +- Each process uses UUID-based temp files +- No file conflicts between parallel processes +- Temp files auto-cleaned after completion + +**Auto-chunking**: +- Videos >10 minutes: Split into 10-minute chunks +- Context preserved between chunks +- Prevents API response truncation + +## Requirements +- OpenAI API key: `$OPENAI_API_KEY` environment variable +- Python 3.10+ with uv package manager +- FFmpeg (for audio processing) +- yt-dlp (for YouTube downloads) + +**Check requirements**: +```bash +echo $OPENAI_API_KEY # Should show API key +which ffmpeg # Should show path +``` + +## Cost Estimates + +Default model (`gpt-4o-mini-transcribe` at $0.003/min): + +- **5-minute video**: ~$0.015 +- **25-minute video**: ~$0.075 +- **60-minute video**: ~$0.18 + +Full model (`gpt-4o-transcribe` at $0.006/min): + +- **5-minute video**: ~$0.03 +- **25-minute video**: ~$0.15 +- **60-minute video**: ~$0.36 + +## Quick Reference + +```bash +# Single video (default quality) +uv run python transcribe.py "URL" + +# Single video (higher quality, 2x cost) +uv run python transcribe.py "URL" -m gpt-4o-transcribe + +# Multiple videos in parallel +for url in URL1 URL2 URL3; do + uv run python transcribe.py "$url" & +done +wait + +# With custom output +uv run python transcribe.py "URL" -o custom_name.txt + +# With context prompt +uv run python transcribe.py "URL" -p "Context about video content" +``` + +## Integration + +**With fabric**: Process transcripts after generation +```bash +cat output/Video_Title_2025-11-10.txt | fabric -p extract_wisdom +``` + +## Notes + +- Script requires being in its directory to work correctly +- Always change to `$YOUTUBE_TRANSCRIBER_DIR` first +- Parallel execution is safe and recommended for multiple videos +- Default model (gpt-4o-mini-transcribe) is recommended for most content +- Output files automatically named with video title + date +- Temp files automatically cleaned after transcription diff --git a/plugins/youtube-transcriber/skills/transcribe/SKILL.md b/plugins/youtube-transcriber/skills/transcribe/SKILL.md deleted file mode 100644 index d314b51..0000000 --- a/plugins/youtube-transcriber/skills/transcribe/SKILL.md +++ /dev/null @@ -1,263 +0,0 @@ ---- -name: transcribe -description: Transcribe YouTube videos of any length using GPT-4o-transcribe ---- - -# YouTube Transcriber - High-Quality Video Transcription - -## When to Activate This Skill -- "Transcribe this YouTube video" -- "Get a transcript of [URL]" -- "Transcribe these videos" (multiple URLs) -- User provides YouTube URL(s) needing transcription -- "Extract text from video" -- Any request involving YouTube video transcription - -## Script Location -**Primary script**: `$YOUTUBE_TRANSCRIBER_DIR/transcribe.py` - -## Key Features -- **Parallel processing**: Multiple videos can be transcribed simultaneously -- **Unlimited length**: Auto-chunks videos >10 minutes to prevent API limits -- **Organized output**: - - Transcripts → `output/` directory - - Temp files → `temp/` directory (auto-cleaned) -- **High quality**: Uses GPT-4o-transcribe by default (reduced hallucinations) -- **Cost options**: Can use `-m gpt-4o-mini-transcribe` for 50% cost savings - -## Basic Usage - -### Single Video -```bash -cd $YOUTUBE_TRANSCRIBER_DIR -uv run python transcribe.py "https://youtube.com/watch?v=VIDEO_ID" -``` - -**Output**: `output/Video_Title_2025-11-10.txt` - -### Multiple Videos in Parallel -```bash -cd $YOUTUBE_TRANSCRIBER_DIR - -# Launch all in background simultaneously -uv run python transcribe.py "URL1" & -uv run python transcribe.py "URL2" & -uv run python transcribe.py "URL3" & -wait -``` - -**Why parallel works**: Each transcription uses unique temp files (UUID-based) in `temp/` directory. - -### Cost-Saving Mode -```bash -cd $YOUTUBE_TRANSCRIBER_DIR -uv run python transcribe.py "URL" -m gpt-4o-mini-transcribe -``` - -**When to use mini**: Testing, casual content, bulk processing. Quality is the same as gpt-4o-transcribe but ~50% cheaper. - -## Command Options - -```bash -uv run python transcribe.py [URL] [OPTIONS] - -Options: - -o, --output PATH Custom output filename (default: auto-generated in output/) - -m, --model MODEL Transcription model (default: gpt-4o-transcribe) - Options: gpt-4o-transcribe, gpt-4o-mini-transcribe, whisper-1 - -p, --prompt TEXT Context prompt for better accuracy - --chunk-duration MINUTES Chunk size for long videos (default: 10 minutes) - --keep-audio Keep temp audio files (default: auto-delete) -``` - -## Workflow for User Requests - -### Single Video Request -1. Change to transcriber directory -2. Run script with URL -3. Report output file location in `output/` directory - -### Multiple Video Request -1. Change to transcriber directory -2. Launch all transcriptions in parallel using background processes -3. Wait for all to complete -4. Report all output files in `output/` directory - -### Testing/Cost-Conscious Request -1. Always use `-m gpt-4o-mini-transcribe` for testing -2. Mention cost savings to user -3. Quality is identical to full model - -## Example Responses - -**User**: "Transcribe this video: https://youtube.com/watch?v=abc123" - -**Assistant Action**: -```bash -cd $YOUTUBE_TRANSCRIBER_DIR -uv run python transcribe.py "https://youtube.com/watch?v=abc123" -``` - -**Report**: "✅ Transcript saved to `output/Video_Title_2025-11-10.txt`" - ---- - -**User**: "Transcribe these 5 videos: [URL1] [URL2] [URL3] [URL4] [URL5]" - -**Assistant Action**: Launch all 5 in parallel: -```bash -cd $YOUTUBE_TRANSCRIBER_DIR -uv run python transcribe.py "URL1" & -uv run python transcribe.py "URL2" & -uv run python transcribe.py "URL3" & -uv run python transcribe.py "URL4" & -uv run python transcribe.py "URL5" & -wait -``` - -**Report**: "✅ All 5 videos transcribed successfully in parallel. Output files in `output/` directory" - -## Technical Details - -**How it works**: -1. Downloads audio from YouTube (via yt-dlp) -2. Saves to unique temp file: `temp/download_{UUID}.mp3` -3. Splits long videos (>10 min) into chunks automatically -4. Transcribes with OpenAI API (GPT-4o-transcribe) -5. Saves transcript: `output/Video_Title_YYYY-MM-DD.txt` -6. Cleans up temp files automatically - -**Parallel safety**: -- Each process uses UUID-based temp files -- No file conflicts between parallel processes -- Temp files auto-cleaned after completion - -**Auto-chunking**: -- Videos >10 minutes: Split into 10-minute chunks -- Context preserved between chunks -- Prevents API response truncation - -## Requirements -- OpenAI API key: `$OPENAI_API_KEY` environment variable -- Python 3.10+ with uv package manager -- FFmpeg (for audio processing) -- yt-dlp (for YouTube downloads) - -**Check requirements**: -```bash -echo $OPENAI_API_KEY # Should show API key -which ffmpeg # Should show path -``` - -## Output Format - -Transcripts are saved as plain text with metadata: -``` -================================================================================ -YouTube Video Transcript (Long Video) -================================================================================ - -Title: Video Title Here -Uploader: Channel Name -Duration: 45m 32s -URL: https://youtube.com/watch?v=VIDEO_ID - -================================================================================ - -[Full transcript text with proper punctuation...] -``` - -## Best Practices - -1. **Always use parallel for multiple videos** - It's 6x faster -2. **Use mini model for testing** - Same quality, half the cost -3. **Check output/ directory** - All transcripts organized there -4. **Temp files auto-clean** - No manual cleanup needed -5. **Add context prompts for technical content**: - ```bash - uv run python transcribe.py "URL" \ - -p "Technical discussion about Docker, Kubernetes, microservices" - ``` - -## Troubleshooting - -**API Key Missing**: -```bash -export OPENAI_API_KEY="sk-proj-your-key-here" -``` - -**FFmpeg Not Found**: -```bash -sudo dnf install ffmpeg # Fedora/Nobara -``` - -**Parallel Conflicts** (shouldn't happen with UUID temps): -- Each process creates unique temp file in `temp/` -- If issues occur, check `temp/` directory permissions - -## Cost Estimates (as of March 2025) - -- **5-minute video**: $0.10 - $0.20 -- **25-minute video**: $0.50 - $1.00 -- **60-minute video**: $1.20 - $2.40 - -**Using mini model**: Reduce costs by ~50% - -## Quick Reference - -```bash -# Single video (default quality) -uv run python transcribe.py "URL" - -# Single video (cost-saving) -uv run python transcribe.py "URL" -m gpt-4o-mini-transcribe - -# Multiple videos in parallel -for url in URL1 URL2 URL3; do - uv run python transcribe.py "$url" & -done -wait - -# With custom output -uv run python transcribe.py "URL" -o custom_name.txt - -# With context prompt -uv run python transcribe.py "URL" -p "Context about video content" -``` - -## Directory Structure - -``` -$YOUTUBE_TRANSCRIBER_DIR/ -├── transcribe.py # Main script -├── temp/ # Temporary audio files (auto-cleaned) -├── output/ # All transcripts saved here -├── README.md # Full documentation -└── pyproject.toml # Dependencies -``` - -## Integration with Other Skills - -**With fabric skill**: Process transcripts after generation -```bash -# 1. Transcribe -uv run python transcribe.py "URL" - -# 2. Process with fabric -cat output/Video_Title_2025-11-10.txt | fabric -p extract_wisdom -``` - -**With research skill**: Transcribe source videos for research -```bash -# Transcribe multiple research videos in parallel -# Then analyze transcripts for insights -``` - -## Notes - -- Script requires being in its directory to work correctly -- Always change to `$YOUTUBE_TRANSCRIBER_DIR` first -- Parallel execution is safe and recommended for multiple videos -- Use mini model for testing to save costs -- Output files automatically named with video title + date -- Temp files automatically cleaned after transcription diff --git a/plugins/z-image/skills/generate/SKILL.md b/plugins/z-image/commands/generate.md similarity index 85% rename from plugins/z-image/skills/generate/SKILL.md rename to plugins/z-image/commands/generate.md index 03ea684..13e551f 100644 --- a/plugins/z-image/skills/generate/SKILL.md +++ b/plugins/z-image/commands/generate.md @@ -1,18 +1,10 @@ --- -name: generate description: Generate images from text prompts using local GPU inference allowed-tools: Bash(z-image:*) --- # Z-Image - Local AI Image Generation -## When to Activate This Skill -- "Generate an image of..." -- "Create a picture of..." -- "Make me an image" -- "z-image [prompt]" -- User describes something visual they want generated - ## Tool **Binary:** `z-image` (in PATH via `~/bin/z-image`)