Initialize and configure local development tooling for TypeScript, Rust, and Python projects including monorepos. Use when setting up linting (ESLint, Biome, clippy, ruff), formatting (Prettier, rustfmt, ruff), type checking (tsc, mypy), testing (Vitest, Jest, cargo test, pytest), Git hooks (lefthook for commit-msg, pre-commit, pre-push), GitHub Actions workflows, package publishing (npm, crates.io, PyPI), version management (Changesets), and automated releases. Covers both single-language projects and multi-language monorepos using Nx + pnpm workspaces.
From dev-specialismsnpx claudepluginhub aaronbassett/agent-foundry --plugin dev-specialismsThis skill uses the workspace's default tool permissions.
assets/configs/git-hooks/commitlint.config.jsassets/configs/git-hooks/lefthook.ymlassets/configs/monorepo/nx.jsonassets/configs/monorepo/pnpm-workspace.yamlassets/configs/python/pyproject.tomlassets/configs/python/ruff.tomlassets/configs/rust/clippy.tomlassets/configs/rust/deny.tomlassets/configs/rust/rustfmt.tomlassets/configs/typescript/biome.jsonassets/configs/typescript/eslint.config.jsassets/configs/typescript/tsconfig.strict.jsonassets/workflows/ci.ymlassets/workflows/publish-changesets.ymlassets/workflows/publish-crates.ymlassets/workflows/publish-npm.ymlassets/workflows/publish-pypi.ymlreferences/ci-cd.mdreferences/git-hooks.mdreferences/monorepo.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides slash command development for Claude Code: structure, YAML frontmatter, dynamic arguments, bash execution, user interactions, organization, and best practices.
Comprehensive setup for linting, formatting, type checking, testing, Git hooks, CI/CD, and publishing across TypeScript, Rust, and Python projects.
Use this skill when you need to:
Automated setup:
./scripts/init_typescript.sh
Choose tooling:
What you get:
→ See: references/typescript.md
Manual setup (opinionated configs in assets/):
# Tools come with Rust
rustup component add rustfmt clippy
# Optional: Enhanced tooling
brew install cargo-nextest cargo-deny
# Copy configs from assets/configs/rust/
cp assets/configs/rust/rustfmt.toml .
cp assets/configs/rust/clippy.toml .
→ See: references/rust.md
Using uv (recommended):
# Install uv
brew install uv
# Create project
uv init my-project
cd my-project
# Add dev dependencies
uv add --dev ruff mypy pytest
# Copy config from assets/
cp assets/configs/python/pyproject.toml .
→ See: references/python.md
Create Nx + pnpm monorepo:
./scripts/init_monorepo.sh
Or manually:
npx create-nx-workspace@latest my-monorepo
# Choose: pnpm + integrated monorepo
→ See: references/monorepo.md
Single Language Project → Use language-specific init script or manual setup → See Quick Start above
Monorepo (Multiple Packages) → Set up Nx + pnpm workspaces → See references/monorepo.md
Automated setup:
./scripts/setup_lefthook.sh
This configures:
→ See: references/git-hooks.md
Copy workflow templates:
# Basic CI
cp assets/workflows/ci.yml .github/workflows/
# Language-specific workflows available in assets/
→ See: references/ci-cd.md
For npm packages:
./scripts/setup_changesets.sh
Then copy publishing workflows from assets/workflows/.
→ See:
Tooling options:
Testing:
Key decisions:
→ Full guide: references/typescript.md
Built-in tools:
rustfmt - Code formattingclippy - Lintingcargo test - TestingEnhanced tools:
cargo-nextest - Faster test runnercargo-deny - Dependency securitycargo-make - Task runner→ Full guide: references/rust.md
Modern stack (recommended):
→ Full guide: references/python.md
Automated:
./scripts/setup_lefthook.sh
Manual:
brew install lefthook
lefthook install
lefthook.yml:
commit-msg:
commands:
commitlint:
run: npx commitlint --edit {1}
pre-commit:
parallel: true
commands:
format:
glob: "*.{ts,rs,py}"
run: format-staged-files {staged_files}
stage_fixed: true
pre-push:
commands:
validate:
run: ./scripts/validate_all.sh
→ Full guide: references/git-hooks.md
Key principle: Nx builds on top of pnpm, doesn't replace it.
# Run target for all packages
nx run-many --target=build --all
# Run only for affected
nx affected --target=test
# Visualize dependencies
nx graph
→ Full guide: references/monorepo.md
Recommended for monorepos and npm packages.
pnpm changeset
# Select packages, type (major/minor/patch), write summary
pnpm changeset version
# Updates package.json, generates CHANGELOG.md
pnpm changeset publish
git push --follow-tags
Use GitHub Actions to automate releases:
Copy workflow:
cp assets/workflows/publish-changesets.yml .github/workflows/
This creates "Version Packages" PR on main when changesets exist.
→ See:
Best practice: Run same checks in CI as local pre-push hook.
GitHub Actions templates:
ci.yml - Basic linting, testing, buildingpublish-npm.yml - Automated npm publishingpublish-crates.yml - Automated crates.io publishingpublish-pypi.yml - Automated PyPI publishingTest across multiple versions:
strategy:
matrix:
node-version: [18, 20, 21]
os: [ubuntu-latest, macos-latest]
Use affected commands to only test changed packages:
nx affected --target=test
nx affected --target=build
→ Full guide: references/ci-cd.md
Automated:
./scripts/init_typescript.sh --biome
# or
./scripts/init_typescript.sh --eslint-prettier
Creates:
./scripts/setup_lefthook.sh
Configures:
./scripts/setup_changesets.sh
Sets up:
./scripts/validate_all.sh
Runs:
scripts/)Setup scripts:
init_typescript.sh - Initialize TypeScript projectsetup_lefthook.sh - Configure Git hookssetup_changesets.sh - Set up version managementvalidate_all.sh - Run all checks (used by pre-push)Usage:
./scripts/script_name.sh
All scripts check if tools are installed/up-to-date before proceeding.
assets/configs/)TypeScript:
tsconfig.strict.json - Strict TypeScript configbiome.json - Biome configurationeslint.config.js - ESLint flat config.prettierrc.json - Prettier configurationRust:
rustfmt.toml - Rustfmt configurationclippy.toml - Clippy lintsdeny.toml - Cargo-deny configurationPython:
pyproject.toml - ruff, mypy, pytest configruff.toml - Standalone ruff configMonorepo:
nx.json - Nx configurationpnpm-workspace.yaml - pnpm workspacesGit Hooks:
lefthook.yml - Complete lefthook configcommitlint.config.js - Conventional commitsGitHub Workflows:
ci.yml - Basic CIpublish-changesets.yml - Automated releasespublish-npm.yml - npm publishingpublish-crates.yml - crates.io publishingpublish-pypi.yml - PyPI publishingreferences/)Language guides:
typescript.md - ESLint+Prettier vs Biome, testing, monoreporust.md - rustfmt, clippy, cargo-nextest, cargo-denypython.md - ruff, mypy, pytest, uv vs poetryInfrastructure:
monorepo.md - Nx + pnpm workspaces setupgit-hooks.md - lefthook configurationci-cd.md - GitHub Actions workflowspublishing.md - npm, crates.io, PyPI publishingversion-management.md - Changesets workflowCheck installation:
lefthook install
ls -la .git/hooks/
Test manually:
lefthook run pre-commit
ESLint + Prettier conflicts:
eslint-config-prettier is last in configBiome + Prettier conflicts:
Debugging:
./scripts/validate_all.sh locallySetup new TypeScript project:
./scripts/init_typescript.sh
Setup Git hooks:
./scripts/setup_lefthook.sh
Setup Changesets:
./scripts/setup_changesets.sh
Run full validation:
./scripts/validate_all.sh
Common commands:
# TypeScript
npm run lint && npm run type-check && npm test
# Rust
cargo fmt -- --check && cargo clippy -- -D warnings && cargo test
# Python
ruff check . && mypy . && pytest
# Monorepo
nx affected --target=test
nx run-many --target=build --all
# Changesets
pnpm changeset
pnpm changeset version
pnpm changeset publish