Agent skills for media and content processing, designed for non-coders.
Overview
Agent skills by 绿皮火车 for media processing, file management, and local AI. Perform complex operations through simple AI instructions. - Python 3.10+ environment - macOS for disk-cleaner, file-organizer, and file-master (system-specific tools) Run the following command in Claude Code: 1. Select 2. Select 3. Select the plugin(s) you want to install 4. Select Please install Skills from github.com/crazynomad/skills Skills are organized into five categories: Mac file management master - a prompt-only orchestration skill that chains disk-cleaner, file-organizer, and doc-mindmap into a three-phase workflow. In a real-world demo, this workflow freed 120GB of disk space, organized 1,600+ files, and converted 4,000+ PPTs into a searchable knowledge base. (Watch the full walkthrough) Only triggers when user needs combined multi-stage operations. For single tasks, use individual skills directly.
README
Green Train Skills
English | 中文
Agent skills by 绿皮火车 for media processing, file management, and local AI. Perform complex operations through simple AI instructions.
Video Tutorials
| Video | Skills Covered | Duration |
|---|---|---|
| Turn 4000+ PPTs into a Personal Knowledge Base | disk-cleaner, file-organizer, doc-mindmap | 17:30 |
| Vibe Coding Challenge: Building a Podcast Downloader | podcast-downloader | 10:55 |
Prerequisites
- Python 3.10+ environment
- macOS for
disk-cleaner,file-organizer, andfile-master(system-specific tools)
Installation
Quick Install (Recommended)
npx skills add crazynomad/skills
Register as Plugin Marketplace
Run the following command in Claude Code:
/plugin marketplace add crazynomad/skills
Install Skills
Option 1: Via Browse UI
- Select Browse and install plugins
- Select greentrain-skills
- Select the plugin(s) you want to install
- Select Install now
Option 2: Direct Install
# Install specific plugin
/plugin install greentrain-media@greentrain-skills
/plugin install greentrain-files@greentrain-skills
/plugin install greentrain-planning@greentrain-skills
/plugin install greentrain-dev@greentrain-skills
Option 3: Ask the Agent
Simply tell Claude Code:
Please install Skills from github.com/crazynomad/skills
Available Plugins
| Plugin | Description | Skills |
|---|---|---|
| greentrain-media | Video/podcast downloading, PDF conversion, title generation, TTS/STT, visual PPT generation | pdf-to-images, podcast-downloader, srt-title-generator, tts, twitter-downloader, visual-deck, visual-slides, youtube-downloader |
| greentrain-files | macOS disk cleaning, file organizing, document intelligence | file-master, disk-cleaner, file-organizer, doc-mindmap |
| greentrain-planning | Think-before-you-slide PPT methodology: classify, research-driven thesis, storyline review | ppt-classify, ppt-research-setup, ppt-narrative-review |
| greentrain-perspectives | Persona thinking-framework advisors distilled with nuwa-skill | jordan-peterson-perspective |
| greentrain-dev | GitHub backlog governance + loop decision-making | backlog-manager, loop-or-not |
For more details, visit https://skills.sh/docs.
Available Skills
Skills are organized into five categories:
File Management (macOS)
file-master
Mac file management master - a prompt-only orchestration skill that chains disk-cleaner, file-organizer, and doc-mindmap into a Clean > Organize > Analyze three-phase workflow. In a real-world demo, this workflow freed 120GB of disk space, organized 1,600+ files, and converted 4,000+ PPTs into a searchable knowledge base. (Watch the full walkthrough)
Three phases:
| Phase | Name | Description |
|---|---|---|
| Phase 1 | Clean | Disk cleanup with disk-cleaner |
| Phase 2 | Organize | File organization with file-organizer |
| Phase 3 | Analyze | Document analysis with doc-mindmap |
Only triggers when user needs combined multi-stage operations. For single tasks, use individual skills directly.
disk-cleaner
Smart Mac disk cleaning assistant powered by Mole. Features three-tier cleanup strategies, whitelist protection, categorized reports, and achievement pages. In a real-world test, it freed over 106GB of disk space across browser caches, app caches, system logs, and package manager artifacts.
# Check environment
python disk-cleaner/scripts/mole_cleaner.py --check
# Preview cleanable items
python disk-cleaner/scripts/mole_cleaner.py --preview
# Preview with HTML report
python disk-cleaner/scripts/mole_cleaner.py --preview --html
# Clean with tier selection (air/pro/max)
python disk-cleaner/scripts/mole_cleaner.py --clean --tier air --confirm
python disk-cleaner/scripts/mole_cleaner.py --clean --tier pro --confirm
python disk-cleaner/scripts/mole_cleaner.py --clean --tier max --confirm
# Manage whitelist
python disk-cleaner/scripts/mole_cleaner.py --whitelist --show
python disk-cleaner/scripts/mole_cleaner.py --whitelist --preset office
Cleanup Tiers:
| Tier | Description |
|---|---|
air |
Conservative - system caches only |
pro |
Balanced - caches + logs + temp files |
max |
Aggressive - all cleanable items |
Dependencies: Mole (brew install tw93/tap/mole)
file-organizer
Smart Mac file organizer focused on sorting office documents in the Downloads folder. Supports manual mode (Smart Folders) and auto mode (sort by type), with disk-cleaner whitelist integration. Built on macOS native capabilities (Finder Smart Folders + Spotlight), so files stay in place - no vendor lock-in. Tested with 1,600+ files in a single Downloads folder.
# Manual mode - create smart folders
python file-organizer/scripts/file_organizer.py --manual
# Auto mode - organize by category
python file-organizer/scripts/file_organizer.py --auto
# Preview without moving
python file-organizer/scripts/file_organizer.py --auto --dry-run
# View/organize screenshots
python file-organizer/scripts/file_organizer.py --screenshots
# Find large files (default >100MB)
python file-organizer/scripts/file_organizer.py --large-files
python file-organizer/scripts/file_organizer.py --large-files --min-size 500
Modes:
| Mode | Description |
|---|---|
--manual |
Create smart folders for manual organization |
--auto |
Auto-organize files by category |
--screenshots |
View and organize screenshots |
--large-files |
Find large files above threshold |
Dependencies: macOS, Python 3.8+
doc-mindmap
Document intelligence assistant - batch convert office documents to Markdown, generate summaries via local Ollama models, and create three-dimension symlink classification (topic/usage/client) with zero extra disk usage. All AI processing runs locally via Ollama - your documents never leave your machine. Tested with 4,000+ PPTs and 14,000+ PDFs.
# Preview documents + duplicate detection
python doc-mindmap/scripts/doc_converter.py ~/Documents/reports --preview
# Batch convert to Markdown
python doc-mindmap/scripts/doc_converter.py ~/Documents/reports --convert --confirm
# Generate summaries with Ollama
python doc-mindmap/scripts/doc_converter.py ~/Documents/reports --summarize
# Create 3-way classification with symlinks
python doc-mindmap/scripts/doc_converter.py ~/Documents/reports --organize
# Full pipeline
python doc-mindmap/scripts/doc_converter.py ~/Documents/reports --convert --confirm --summarize --organize
Supported Formats: PDF, PPTX, DOCX, XLSX, XLS, CSV, HTML, EPUB, JSON, XML
Dependencies:
- markitdown:
pip install 'markitdown[all]' - Ollama (optional, for summaries):
brew install ollama
Media Processing
pdf-to-images
Convert PDF files into a series of high-quality images (PNG/JPG) using ImageMagick. Useful for extracting slides or creating previews.
# Basic conversion
python pdf-to-images/scripts/pdf_to_images.py "presentation.pdf"
# Specify output directory
python pdf-to-images/scripts/pdf_to_images.py "document.pdf" -o ./output-images
# High resolution (300 DPI)
python pdf-to-images/scripts/pdf_to_images.py "document.pdf" -d 300
# JPEG output with quality setting
python pdf-to-images/scripts/pdf_to_images.py "document.pdf" -f jpg -q 90
Options:
| Option | Description | Default |
|---|---|---|
-o, --output |
Output directory | Same dir with -slides suffix |
-d, --dpi |
Resolution DPI | 150 |
-f, --format |
png, jpg, tiff | png |
-q, --quality |
JPEG quality 1-100 | 85 |
-p, --prefix |
Output filename prefix | slide |
Dependencies: ImageMagick (brew install imagemagick)
podcast-downloader
Download podcast episodes efficiently from Apple Podcasts. Features iTunes API integration for speed, with robust RSS fallback and metadata extraction. Born from a Vibe Coding challenge - built in 3 rounds of AI-assisted development using Claude, Gemini, and NotebookLM to reverse-engineer Apple’s podcast API.
# Download a single episode
python podcast-downloader/scripts/download_podcast.py "https://podcasts.apple.com/cn/podcast/id1711052890?i=1000744375610"
# Download latest 5 episodes
python podcast-downloader/scripts/download_podcast.py "https://podcasts.apple.com/cn/podcast/id1711052890" -n 5
# Specify output directory
python podcast-downloader/scripts/download_podcast.py "PODCAST_URL" -n 10 -o ./podcasts
Options:
| Option | Description | Default |
|---|---|---|
url |
Apple Podcast URL (required) | - |
-n, --count |
Number of latest episodes | All (up to 200) |
-o, --output |
Output directory | Current directory |
Dependencies: pip install requests feedparser
srt-title-generator
Analyze SRT subtitle files to generate engaging, viral-potential video titles. Optimized for platforms like YouTube, Bilibili, and Xiaohongshu.
Workflow: Read SRT file > Extract transcript > Analyze content > Generate platform-specific titles
Output format: Structured titles for multiple platforms:
| Platform | Constraint |
|---|---|
| YouTube | Max 60 characters |
| Xiaohongshu | Max 20 characters |
| Bilibili | Max 80 characters |
| Douyin | Max 55 characters |
Dependencies: None (prompt-based skill)
tts
Local text-to-speech, speech-to-text, and voice cloning on Apple Silicon, powered by Vox CLI (Qwen3-TTS + MLX). All processing runs entirely on-device - your data never leaves your machine.
# Text-to-speech
python tts/scripts/vox_tts.py speak "Hello world" --voice Chelsie -o ./output
# Speak with emotion/style
python tts/scripts/vox_tts.py speak "I can't believe it!" --instruct "excited" -o ./output
# Play audio immediately
python tts/scripts/vox_tts.py speak "Hello world" --play
# Transcribe audio to text
python tts/scripts/vox_tts.py transcribe recording.wav -o ./output
# Transcribe with SRT subtitles
python tts/scripts/vox_tts.py transcribe recording.wav --subtitle srt -o ./output
# Clone a voice from a sample
python tts/scripts/vox_tts.py clone "Text in cloned voice" --ref sample.wav -o ./output
# Register a cloned voice for reuse
python tts/scripts/vox_tts.py clone --ref sample.wav --register my-voice
# Design a voice from description
python tts/scripts/vox_tts.py design "Hello" --desc "warm friendly female voice" -o ./output
# Batch TTS from file
python tts/scripts/vox_tts.py batch texts.txt --voice Chelsie -o ./output
# List available voices
python tts/scripts/vox_tts.py voices
Options (speak):
| Option | Description | Default |
|---|---|---|
-o, --output |
Output directory | Current directory |
-v, --voice |
Voice name | Chelsie |
-m, --model |
small, large, large-hq | small |
-s, --speed |
Speed multiplier | 1.0 |
-i, --instruct |
Emotion/style instruction | - |
--play |
Play audio after generation | - |
--subtitle |
Generate srt or vtt | - |
Dependencies:
- Apple Silicon Mac (M1/M2/M3/M4), macOS 13+
- Vox CLI:
pipx install /path/to/tts
twitter-downloader
Download videos from individual X (Twitter) posts using twmd, an API-less Go-based downloader.
# Download a video from a tweet
python twitter-downloader/scripts/download_tweet.py "https://x.com/username/status/1234567890"
# Specify output directory
python twitter-downloader/scripts/download_tweet.py "URL" -o ~/Downloads/twitter
# Print video URL without downloading
python twitter-downloader/scripts/download_tweet.py "URL" --url-only
Options:
| Option | Description | Default |
|---|---|---|
url |
X/Twitter post URL (required) | - |
-o, --output |
Output directory | Current directory |
-q, --quality |
Video quality: best, 1080, 720, 480 | best |
--url-only |
Print video URL without downloading | - |
--cookies |
Path to cookies file (for private content) | - |
Dependencies: yt-dlp: pip install yt-dlp
visual-deck
v1.0 (2026-05-14) — Green Train’s design system layered on top of the open-slide React framework. Ships two channel themes (dark-teal for technical chapters, dark-coral for narrative chapters), four core layout patterns (hero-cover / chapter-cover / takeaway / thesis), the V2 four-segment Nano Banana image prompt format, and safe-zone typography discipline (text only lands in designated image regions, overflow goes into speaker notes, never shrink fonts). Output is a static HTML site or PDF via open-slide’s build — no .pptx in v1.0.
# Scaffold an open-slide project and apply Green Train's theme
npx @open-slide/cli@latest init my-deck --use-pnpm --locale zh-CN --no-git
cd my-deck
cp ~/Github/skills/visual-deck/themes/dark-teal.* themes/
pnpm dev # → http://localhost:5173
# Then read visual-deck/layouts/*.md and copy-paste JSX templates into slides//index.tsx
See visual-deck/SKILL.md for the full v1.0 contract and the v0.x → v1.0 migration guide.
Dependencies: Node.js 18+, pnpm, open-slide via npx @open-slide/cli.
Roadmap: .pptx export is planned as an open-slide upstream contribution (former v0.x pptxgenjs pipeline). No fixed date.
visual-slides (deprecated as default · narrow-use only)
Deprecated 2026-05-14. Inject content into a pre-existing hand-authored Google Slides master template via the gws CLI batchUpdate. Survives only for one narrow case: a polished Slides master already exists on Drive AND you need to batch-fill N content variants into it (monthly reports, multi-client briefs). For all “make a visual deck” use cases — use visual-deck instead.
# Existing pipeline still works for the narrow case:
python visual-slides/scripts/validate_plan.py content-plan.json
python visual-slides/scripts/inject.py content-plan.json --dry-run
python visual-slides/scripts/inject.py content-plan.json
Dependencies: gws CLI + gws auth login; Python 3.10+ with Pillow.
youtube-downloader
A powerful video downloader wrapping yt-dlp. Supports downloading videos, playlists, subtitles, and metadata from YouTube and 1000+ other sites.
# Download a video
python youtube-downloader/scripts/download_video.py "https://www.youtube.com/watch?v=VIDEO_ID"
# Specify resolution
python youtube-downloader/scripts/download_video.py "URL" -f 1080
# Audio only (MP3)
python youtube-downloader/scripts/download_video.py "URL" --audio-only
# Download with subtitles
python youtube-downloader/scripts/download_video.py "URL" --subtitles
# Download playlist
python youtube-downloader/scripts/download_video.py "PLAYLIST_URL" --playlist -n 5
# Specify output directory
python youtube-downloader/scripts/download_video.py "URL" -o ./videos
Options:
| Option | Description | Default |
|---|---|---|
-o, --output |
Output directory | Current directory |
-f, --format |
best, 1080, 720, 480, 360 | best |
--audio-only |
Extract audio only (MP3) | - |
--subtitles |
Download subtitles | - |
--sub-lang |
Subtitle language | en,zh-Hans |
--playlist |
Enable playlist mode | - |
-n, --count |
Number of videos from playlist | - |
--metadata |
Save video metadata JSON | true |
--thumbnail |
Download thumbnail | - |
--cookies |
Path to cookies file | - |
Dependencies:
Planning & Methodology
A “think-before-you-slide” PPT toolkit. Pairs with visual-deck to form a full classify → thesis → review → render pipeline. Distilled from 绿皮火车 EP10 《AI 做 PPT》 experiments.
ppt-classify
Classify a PPT brief into one of four types — Pitch / Research / Teaching / Narrative — and route to the right thesis-setup method. Different PPT types need different立论 frameworks: a research PPT is not a pitch, a pitch is not a narrative. Using the wrong type’s structure is the single biggest PPT mistake.
When to Use: At the very start of PPT planning, BEFORE writing any slide. Especially useful when the user says “help me make a PPT about X” but hasn’t decided how to frame it.
Workflow: Ask Q1-Q3 diagnostic chain (decision-driven? → teaching目标? → event vs argument?) → output type + recommended next skill + one-line thesis framework preview.
Dependencies: None (prompt-based skill)
ppt-research-setup
Set up a research-driven PPT thesis using a three-section framework plus a six-question specificity diagnostic. Distilled from research-grade content like Dylan Patel, Dwarkesh × Jensen, and 硅谷101 GTC 2026.
Three-Section Framework:
- Counter-consensus paradox (research motivation) — a question everyone thinks is answered but isn’t
- Structural decomposition framework (research boundary) — 3-5 analytical dimensions
- 3-4 investigation paths (concrete sub-questions) — each independently verifiable, layered (intuitive → reverse-reasoning → blind-spot)
Six-Question Specificity Diagnostic (borrowed from YC forcing questions, reframed for research): Demand Reality / Status Quo / Desperate Specificity / Narrowest Wedge / Observation & Surprise / Future-Fit.
Core principle: Specificity is the only currency. Vague answers get pushed.
Dependencies: None (prompt-based skill)
ppt-narrative-review
Review a PPT storyline for structural fit, pacing, and key-visual anchors. Type-aware — research-driven, pitch-driven, teaching-driven, and narrative-driven decks each have a distinct valid storyline shape. Catches structural mismatches (e.g. research deck using pitch opening) before you burn hours on visuals.
Four Storyline Shapes:
| Type | Shape |
|---|---|
| Research | Paradox → Framework → Investigation paths → Synthesis |
| Pitch | Conclusion → Pain → Evidence laddering → Counterargument → CTA |
| Teaching | Pain → Capability promise → Steps → Traps → Advanced |
| Narrative | Protagonist → Inciting event → Struggle → Turning point → New state |
Output: Structure-fit score, page-by-page review (✅ core / 🔶 support / ❌ cut), key-visual anchor recommendations.
Dependencies: None (prompt-based skill)
Perspectives
Persona “thinking operating systems” distilled with nuwa-skill (女娲造人): multi-agent deep research → mental-model extraction → runnable persona SKILL.md.
jordan-peterson-perspective
Jordan Peterson (the “lobster professor”) as a thinking advisor. Distilled from 216 sources across 6 dimensions (books, debate/interview transcripts, X posts, external criticism, decision records, full timeline; ~50% primary sources). Ships 6 mental models (order–chaos, myth as psychological technology, hierarchies, responsibility before rights, belief-as-action, ideology-as-possession), 8 decision heuristics, and a full expression DNA with Chinese-output adaptation.
When to Use: meaning crises, responsibility and growth questions, status anxiety, culture-war analysis — “用彼得森的视角…”, “整理好你的房间”, “龙虾教授”.
Built-in guardrails: externally refuted claims carry failure-mode annotations (e.g. the lobster-serotonin strong claim); a safety boundary breaks character on self-harm or medication topics. It is a thinking-framework skill, not therapy.
Dependencies: None (prompt-based; uses WebSearch for fact-dependent questions)
Dev Workflow
backlog-manager
GitHub backlog governance as a manager loop. Triages open issues (type labels + routing labels agent:ready / needs:human), appends structured completion blocks to thin issue descriptions (never edits your original text), maintains a bounded ready queue (Todo ≤ 5) on a GitHub Projects board, and repairs board drift (closed issue still sitting in “In Progress”, etc.). Battle-tested on a real repo: 30 issues fully triaged, then 10+ zero-drift patrol rounds driven by /loop.
Config-driven: reads .claude/backlog-manager.yaml from the target repo (repo, board IDs, label set, project-specific rules) and runs a guided init flow to generate it if missing. DRY-RUN by default — it only reports planned actions until you pass apply. Hard red lines: never closes issues, never edits titles or user-written text, never touches code.
When to Use: “groom the backlog”, “triage issues”, “整理 backlog”, “维护看板” — recurring backlog governance, ideally scheduled with /loop.
Dependencies: GitHub CLI (gh) authenticated with repo + project scopes
loop-or-not
A decision ruler for loop engineering: given a task, it rules don’t loop / timer loop (/loop, /schedule) / goal loop (/goal) — with evidence. It inspects the repo first (runnable tests, CI, bench scripts = available verifiers; issue/PR queues = recurring work; module boundaries), then interviews you one question at a time on the genuine decisions only (facts are looked up, never asked). When a loop is warranted, it drafts a four-part contract (goal / verification / boundary / stop) whose verification binds to real commands found in your repo — no placeholders.
Honest by design: recommending NO loop is a first-class outcome, and model-graded verification gets an explicit downgrade warning. Downstream work is referred, not rebuilt: pattern selection and production hardening go to cobusgreyling/loop-engineering; GitHub backlog cases go to backlog-manager. Interview mechanics adapted from mattpocock/skills’ grilling.
When to Use: “值不值得 loop”, “should I loop this task”, “要不要上 /goal”, “这个活能不能挂个循环自动跑”
Dependencies: None (prompt-based; uses gh when inspecting GitHub queues)
Structure
Each skill is contained in its own directory with a SKILL.md file defining its interface, usage, and dependencies.
skills/
├── .claude-plugin/marketplace.json
├── file-master/
├── disk-cleaner/
├── file-organizer/
├── doc-mindmap/
├── pdf-to-images/
├── podcast-downloader/
├── srt-title-generator/
├── tts/
├── twitter-downloader/
├── visual-deck/
├── youtube-downloader/
├── ppt-classify/
├── ppt-research-setup/
├── ppt-narrative-review/
├── jordan-peterson-perspective/
├── backlog-manager/
├── loop-or-not/
└── README.md
Acknowledgements
These skills stand on the shoulders of giants:
- Mole - Core engine for macOS system cleaning.
- markitdown - Microsoft’s document-to-Markdown converter.
- Ollama - Local LLM runtime for document summarization and classification.
- Vox CLI - Local TTS/STT engine for Apple Silicon via Qwen3-TTS + MLX.
- yt-dlp - The backbone of our video downloading capabilities.
- ImageMagick - Powering our PDF to image conversion.
- FFmpeg - Essential for high-quality audio extraction and video processing.
- Requests & Feedparser - Reliable tools for API interaction and RSS parsing.
We are grateful to the maintainers and contributors of these projects for their dedication to open-source software.
License
MIT
Recommended Tools
Try a different keyword or remove a filter.
Install
npx skillfish add crazynomad/skills