From asynkron-devtools
Counts lines of code in 200+ languages, analyzes codebase size/composition, compares git versions/diffs. Use for lines of code, language breakdowns, or code statistics.
npx claudepluginhub asynkron/asynkron-skills --plugin asynkron-devtoolsThis skill uses the workspace's default tool permissions.
Before running cloc, check if it is installed:
Analyzes codebases using tokei for fast line counts by language and difft for semantic AST-aware diffs. Delivers project overviews, composition stats, file comparisons, and git-integrated change reviews.
Counts source lines by file type and auto-detected modules in JS/TS monorepos, Rust/Go/Python workspaces, Java/Kotlin multi-module projects, full-stack monoliths, and single-module codebases using shell inspection.
Discovers git state, project structure, language/framework, and dev tooling in unfamiliar codebases. Provides structured summary with risk flags and recommendations for onboarding.
Share bugs, ideas, or general feedback.
Before running cloc, check if it is installed:
which cloc
If not found, install it:
brew install clocnpm install -g clocsudo apt install clocsudo yum install cloccloc counts blank lines, comment lines, and physical lines of source code in 200+ programming languages. It can analyze files, directories, archives (tar, zip, .whl, .ipynb), and git commits/branches.
Count a directory (default: current project):
cloc .
Count using git file list (respects .gitignore):
cloc --vcs=git
Count a specific path:
cloc $ARGUMENTS
Count by file (detailed breakdown):
cloc --by-file --vcs=git
Diff between two git refs:
cloc --git --diff <ref1> <ref2>
Exclude directories:
cloc --exclude-dir=node_modules,vendor,.git .
Use these flags for machine-readable output:
--json — JSON--yaml — YAML--csv — CSV--md — Markdown table--xml — XML| Flag | Purpose |
|---|---|
--by-file | Per-file breakdown instead of per-language |
--vcs=git | Use git to get file list (respects .gitignore) |
--git | Treat arguments as git targets (commits, branches) |
--diff <a> <b> | Show added/removed/modified lines between two sources |
--exclude-dir=<d1,d2> | Skip directories |
--exclude-lang=<l1,l2> | Skip languages |
--include-lang=<l1,l2> | Only count these languages |
--force-lang=<lang>,<ext> | Map file extension to a language |
--processes=N | Parallel processing (N cores) |
--quiet | Suppress progress output |
--vcs=git over bare . to avoid counting generated/vendored files--json when the user needs to process the output programmatically--git --diff <ref1> <ref2>--processes=N to speed things up