project-recon
oleh microsoft
Zero-dependency shell recon for any code repository — detect languages, count LOC, and report project scale. Pure POSIX find/wc or PowerShell, no Python or…
npx skills add https://github.com/microsoft/github-copilot-modernization --skill project-reconProject Recon: Zero-Dependency Repo Sizing
What this skill does
Quickly answers: how big is this repo and what's in it. Shell-only (POSIX find + wc or PowerShell), runs anywhere, no install needed.
Output Format
Emit exactly this JSON structure — no additional fields:
{
"total_loc": <int>,
"languages": { "<lang>": <loc>, ... },
"top_level_dirs": <int>,
"primary_language": "<lang with highest LOC>",
"git": <bool>
}
total_loc: sum of non-blank lines across all detected source fileslanguages: per-language LOC breakdown (only languages actually found)top_level_dirs: count of immediate subdirectories under repo root (excluding hidden dirs)primary_language: the language key with the highest LOCgit: whether the project root is a git repository (git rev-parse --git-dirsucceeds)
Do NOT add fields beyond this schema. No descriptions, no module lists, no domain analysis.
Files
| File | Purpose |
|---|---|
references/language-extensions.yaml | Language → file extension mapping + generated-file suffixes to skip |
references/exclude-patterns.yaml | Directory exclude rules (global + per-language) |
references/loc-shell.md | bash + PowerShell counting templates |
Workflow
- Detect languages. Scan for manifest files (pom.xml, *.csproj, package.json, go.mod, etc.) or dominant extensions. Look up
language-extensions.yamlfor the canonical extension list. - Resolve excludes. Union
exclude-patterns.yaml::global.dirswithper_language.<lang>.dirsfor each detected language. - Count. Use the template from
references/loc-shell.md. Run once per detected language, sum for total. - Emit JSON. Output the schema above. Nothing else.
Semantics
- Counts non-blank lines (
wc -l), comment-inclusive. This is intentional — speed and simplicity over precision. - Expect 5–15% upward bias vs comment-stripping counters on verbose languages (Java, C#). Acceptable for sizing.