CS

crazynomad/skills

Productivity workflow
27 stars Quality 44 Trend 33

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, and file-master (system-specific tools)

Installation

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

  1. Select Browse and install plugins
  2. Select greentrain-skills
  3. Select the plugin(s) you want to install
  4. 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:

  • yt-dlp: pip install yt-dlp
  • FFmpeg (for audio extraction): brew install ffmpeg

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:

  1. Counter-consensus paradox (research motivation) — a question everyone thinks is answered but isn’t
  2. Structural decomposition framework (research boundary) — 3-5 analytical dimensions
  3. 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

View this README on GitHub

Recommended Tools

Try a different keyword or remove a filter.

Install

npx skillfish add crazynomad/skills