Create a language-specific development skill by mining PR reviews, codebase conventions, build system patterns, and team documentation. Use when the user wants to create a new lang-dev skill (e.g., rust-dev, go-dev, python-dev) for their project.
npx claudepluginhub jaeyeom/claude-toolbox --plugin create-lang-dev-skillThis skill uses the workspace's default tool permissions.
Use this skill when the user wants to **create a new language-specific development skill** for their project (e.g., rust-dev, go-dev, python-dev, java-dev).
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Use this skill when the user wants to create a new language-specific development skill for their project (e.g., rust-dev, go-dev, python-dev, java-dev).
A lang-dev skill captures the conventions that live in reviewers' heads — the patterns that linters and formatters can't enforce. This skill guides you through a systematic process to extract those conventions and produce a high-quality skill file.
Target output: The final skill file should be under 500 lines — scannable, not encyclopedic. Keep this constraint in mind throughout every phase so you collect the most impactful conventions rather than exhaustively cataloging everything.
Identify all files for the target language and map the directory structure.
- Count total files (e.g., *.rs, *.go, *.py)
- Identify major modules/packages/crates
- Map the directory tree by domain (CLI tools, libraries, services, etc.)
What to look for:
If the project is a monorepo with multiple packages, services, or crates:
Cargo.toml workspace, Go workspace go.work, Bazel WORKSPACE) that unifies builds.Determine how the language is built, tested, linted, and formatted. Do not assume — verify each claim against actual config files and CI pipelines.
Check these in order:
Key questions to answer:
bazel build, go build, npm run build)cargo test, go test), or must you use the build system (e.g., bazel test)? Verify this — don't assume.Always ask the user if they have internal documentation. This is often the most valuable source.
Prompt the user with:
Do you have any of the following for this language?
- Wiki/Confluence pages about development conventions
- Style guides or coding standards documents
- Onboarding docs for new developers
- ADRs (Architecture Decision Records)
- README files in language-specific directories
These are often the most authoritative source for conventions that go beyond linters.
If documentation exists, use it as the primary source of truth — it overrides patterns inferred from code alone.
This is where the most valuable, non-obvious conventions live. Linters catch syntax; PR reviews catch design.
The examples below use the GitHub gh CLI. If the project uses GitLab (glab), Bitbucket, or another platform, adapt the commands to the equivalent API. The key data you need is the same: a list of merged PRs with their review comments.
# Get recent merged PRs (adjust owner/repo)
gh pr list --state merged --limit 100 --json number,title,files
# Filter for PRs touching the target language files
# Look for .rs, .go, .py, .java, .ts, etc.
Target: 15-30 PRs with substantive review comments. If fewer exist, the language may be too new in the project for a full skill — supplement with git log --all --follow history and git blame archaeology on key files to surface conventions that predate formal code review. Note this limitation in the final skill.
# Get the repo owner/name
gh repo view --json owner,name
# For each PR, get inline review comments
gh api repos/{owner}/{repo}/pulls/{pr_number}/comments
Classify each comment into one of these buckets. Ignore anything that a linter or formatter would catch automatically.
| Category | What to Look For |
|---|---|
| String/formatting patterns | Format string conventions, logging patterns |
| Error handling | Error propagation style, context/wrapping, fail-fast vs. graceful |
| Architecture | Module organization, separation of concerns, layer boundaries |
| Naming | Semantic naming rules, domain-specific terminology, URL/API naming |
| Type design | Generic vs. concrete types, ownership/borrowing, interface design |
| Testing | Test expectations, test isolation, mocking patterns, what to test |
| Logging/observability | Which logging framework, structured vs. unstructured, log levels |
| Configuration | Hardcoded vs. configurable, defaults, env vars vs. flags |
| Dependencies | Preferred libraries, version management, internal vs. external |
| Code organization | File layout, module boundaries, shared code extraction |
| Build system | Build target patterns, visibility rules, CI integration |
| Documentation | Doc comment expectations, what needs docs, example requirements |
| Performance | Unnecessary allocations, cloning, concurrency patterns |
| Security | Input validation, secret handling, auth patterns |
These are common categories, but let the actual PR comments drive the taxonomy. Create new categories if a project has a dominant pattern not listed here (e.g., "migration patterns" for a database-heavy project, or "FFI boundaries" for a mixed-language codebase).
For each category, record:
Rank categories by frequency. The top 5-7 categories become the core sections of the skill.
Every claim in the skill must be verified against the actual codebase or documentation.
First, inspect configuration files (BUILD files, Makefiles, CI configs, package.json scripts, etc.) to verify every command you plan to document. Check that:
:lib_test vs :my_crate_test)If inspection alone is ambiguous, run the commands to confirm — but prefer reading config files as the primary verification method, since running commands may have side effects or require environment setup.
For each convention from PR reviews, check if the codebase actually follows it:
If the user provided wiki/docs, check for contradictions between:
Documentation wins over inferred patterns. Note contradictions for the user.
Follow this template:
---
name: {lang}-dev
description: Expert knowledge for {Language} development in {Project}. Includes {key topics}. Use when writing, testing, or building {Language} code.
---
# {Language} Development Skill
Use this skill when the user **writes, modifies, tests, or builds {Language} code**.
## 1. The Golden Rule: {Most Important Build/Workflow Rule}
{Build system, canonical commands, what NOT to do}
## 2. {Highest-Frequency Convention, e.g., Error Handling}
{BAD/GOOD examples, rationale}
## 3. {Second-Highest Convention, e.g., Naming}
{BAD/GOOD examples, rationale}
## 4. {Third Convention, e.g., Testing Patterns}
{BAD/GOOD examples, rationale}
## 5. {Fourth Convention, e.g., Architecture/Module Boundaries}
{BAD/GOOD examples, rationale}
## 6. {Fifth Convention, e.g., Logging/Observability}
{BAD/GOOD examples, rationale}
## 7. Workspace and Dependency Management
{How to add dependencies, version management, preferred libraries}
## 8. Advanced Topics (Read These Files)
{DO NOT GUESS — read the authoritative source}
Adjust the number of convention sections (2-6 above) based on what the PR review mining actually found. The numbered structure is a guide, not a straitjacket — use as many or as few convention sections as the data supports.
DO:
DON'T:
Every skill should end with pointers to authoritative files for advanced topics. This prevents the LLM from guessing. You can also embed inline references (e.g., "See path/to/file for details") throughout the skill where contextually appropriate.
## Advanced Topics (Read These Files)
**DO NOT GUESS** on advanced topics. Read the authoritative source:
### `build/ci-config.yaml`
Read this file when:
- User asks about CI pipeline behavior
- User needs to add a new build target or test job
### `.golangci.yml` (or equivalent linter config)
Read this file when:
- User asks which linters are enabled and why
- User wants to suppress or configure a specific lint rule
### `docs/architecture.md`
Read this file when:
- User asks about module boundaries or layering
- User proposes a new package or significant refactor
Before finalizing, present the skill to the user and ask:
Before declaring the skill complete: