AgentSkillsCN

cloc

统计代码行数,分析代码库规模与构成,对比不同版本之间的代码。适用于用户询问代码行数、代码库大小、语言分布,或代码统计信息时使用。

SKILL.md
--- frontmatter
name: cloc
description: Count lines of code, analyze codebase size and composition, compare code between versions. Use when the user asks about lines of code, codebase size, language breakdown, or code statistics.
argument-hint: "[path or git ref]"

Prerequisites

Before running cloc, check if it is installed:

code
which cloc

If not found, install it:

  • macOS: brew install cloc
  • npm: npm install -g cloc
  • Debian/Ubuntu: sudo apt install cloc
  • Red Hat/Fedora: sudo yum install cloc

About cloc

cloc 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.

Common Usage

Count a directory (default: current project):

code
cloc .

Count using git file list (respects .gitignore):

code
cloc --vcs=git

Count a specific path:

code
cloc $ARGUMENTS

Count by file (detailed breakdown):

code
cloc --by-file --vcs=git

Diff between two git refs:

code
cloc --git --diff <ref1> <ref2>

Exclude directories:

code
cloc --exclude-dir=node_modules,vendor,.git .

Output Formats

Use these flags for machine-readable output:

  • --json — JSON
  • --yaml — YAML
  • --csv — CSV
  • --md — Markdown table
  • --xml — XML

Useful Flags

FlagPurpose
--by-filePer-file breakdown instead of per-language
--vcs=gitUse git to get file list (respects .gitignore)
--gitTreat 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=NParallel processing (N cores)
--quietSuppress progress output

Guidelines

  • Prefer --vcs=git over bare . to avoid counting generated/vendored files
  • Use --json when the user needs to process the output programmatically
  • When comparing versions, use --git --diff <ref1> <ref2>
  • For large repos, consider --processes=N to speed things up