The Problem
Claude Code skills are usually distributed as single prompts or loose markdown files—hard to test, easy to break, and inconsistent across runs. Teams that depend on Claude for deliverable-grade output (decks, research briefs, PRDs) need repeatable workflows with quality gates, not prompt snippets that behave differently each invocation.
What This Does
This repo packages 13 end-to-end Claude Code skills as structured projects. Each skill lives in its own folder under skills/ or lab/ with a SKILL.md entry point, references/ for domain knowledge, scripts/ for executable logic, and evals/routing-evals.json for routing tests. Notable skills: deck-studio renders presentation decks with a 17-style library and 22-rule visual gate; deep-research produces cited decision briefs with verified citations; security-audit runs dependency, secret, and full scans.
The scripts/ directory contains tooling: install_skill.py copies a skill into ~/.claude/skills/, run_routing_evals.py validates routing accuracy, and validate.py checks skill structure. lab/ holds experimental skills (e.g., A-share analyst, Gaokao expert, podcast generator) not yet promoted to the curated set.
How It Is Wired
Execution starts at each skill's main function. The most complex path is lab/Geek-skills-gaokao-expert/scripts/analyze_paper.py:394, whose main reaches 92 functions and reads the filesystem via read_text. The security-audit skill's full_scan.py runs npm audit as an external command and writes output files.
The internal call graph shows format_size is the most reused helper (called from 7 places), followed by read_text (5 places) and safe_remove (4 places)—these carry the widest blast radius if changed. The module graph is flat: 29 internal modules, zero import edges, no circular dependencies, so there's no hub-and-spoke architecture to navigate. Each script is self-contained.
File-by-file responsibility: analyze_paper.py owns exam analysis (11 functions, 1 class); generate_podcast.py handles network calls and file I/O for podcast generation; mineru_parse.py shells out to the MinerU PDF parser; secrets_scan.py redacts secrets and decodes JWTs. The deck-studio skill is mostly declarative—its generate.js files in examples/ show the rendering pipeline.
How To Use It
git clone https://github.com/moses-y/ClaudeSkills.git && cd ClaudeSkills
python3 scripts/install_skill.py deck-studio # -> ~/.claude/skills/deck-studio
Then invoke /deck-studio in Claude Code. For other skills: python3 scripts/install_skill.py deep-research or --project for project-level install. The installed directory name becomes the slash command—copying manually without renaming yields /Geek-skills-deck-studio. Update with git pull && python3 scripts/install_skill.py deck-studio --force. No environment variables or config files are required.
Real-World Use
A product team researching a new market entry: run /deep-research with the question, get a cited decision brief with verified sources. For investor updates, /deck-studio turns a quarterly review into a consulting-style deck with a score from an independent judge (the README shows a 7.1/10 example). Security teams can invoke /security-audit on a codebase to get dependency, secret, and server-hardening reports.
Code Health & Issues
Static analysis found 19 issues (3 high, 16 medium). The high-severity finding is deep nesting (max indentation depth 8) in generate_podcast.py, clean_temp.py, and dependency_check.py—fix with early returns and guard clauses. Medium issues: duplicated code blocks across 4 files (7 repeated 6-line blocks), broad exception handling in 6 places (bare except in generate_report.py), and high branching density in scripts/run_routing_evals.py (65 branch points over 148 lines).
The repo has no test suite, which is the highest-priority fix. The single GitHub Actions workflow (validate.yml) declares no permissions (token inherits repo default) and no job timeout-minutes (six-hour platform default). No committed secrets, MIT license present.
The Bottom Line
A well-structured skill collection with real engineering discipline—each skill has references, evals, and scripts, not just prompts. The lack of tests is the main risk; any change to the shared helpers (format_size, read_text) ships without regression signals. Worth adopting if you standardize on Claude Code and need reproducible, quality-gated output.