tech-stack-scan
Skill3 starsChanged 31 days agoMITView on GitHub
Deep technology-stack inventory: languages, frameworks, libraries, build tooling, CI/CD, infrastructure, databases, external services and protocols, each with file/line evidence, written as validated findings. Use for what technologies a codebase uses, a tech inventory or radar input, a dependency overview, or when another analysis needs a reliable picture of the stack first.
- Reads credentials
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 22
Use exactly these groups (skip empty ones):
- Distinctive: line 36
When an item fits two groups, classify by its *role in the system*, not by how it enters the code:
- Very specific: line 65
Follow the core workflow: write _sokrates/reports/ai-insights/tech-stack-scan.json (scanner: "tech-stack-scan", scanner_version: "1.0"), …
- Very specific: line 67
Put ecosystem totals into stats, e.g.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Tech stack deep scan
Produce an evidence-backed inventory of every technology a codebase relies on — not just what its manifests declare, but what the code actually uses and what the project runs on.
First read sokrates-scan-core/SKILL.md (sibling skill). It defines the output format, evidence rules, the validate/render scripts, and how to orient using the _sokrates data. This file only adds what is specific to tech scanning.
What counts as a finding
One finding per technology, at the most useful level of aggregation: "Tokio async runtime" is one finding even if 40 crates import it. Attach 1–3 representative evidence citations — prefer the declaration (manifest line) plus, for major items, one usage site that proves it is actually used. Record the version in attributes.version when the manifest pins one.
Aim for completeness on the significant items rather than exhaustiveness on trivia: every framework, runtime, datastore, and infrastructure element must be there; a utility library that appears once may be grouped into a single "notable smaller libraries" finding per ecosystem.
Absences can be findings too (no CI, no tests, no build system, no lockfile): file each under the group whose subject is absent (no CI → ci-cd, no build → build-tooling), set severity by the consequence of the gap using the cross-scanner scale, and evidence it with the nearest delimiting positive fact (the .gitignore line, the install instruction that assumes no build) with the evidence note saying what the citation delimits. On a project too small for ecosystem dependency totals, put LOC/file counts per language in stats instead.
Group taxonomy
Use exactly these groups (skip empty ones):
| group | contents |
languages-runtimes | Programming languages with approximate share (cite Sokrates metrics via sokrates_refs), runtimes and pinned versions (Node, JVM, Python, rustc editions/toolchains) |
frameworks | Application-shaping frameworks: web, UI, async runtimes, test frameworks, CLI frameworks |
libraries | Significant libraries that don't shape the architecture; group minor ones per ecosystem |
build-tooling | Build systems, package managers, monorepo/workspace tooling, linters/formatters, codegen |
ci-cd | CI providers and pipelines, release automation, artifact publishing |
infrastructure | Containers, orchestration, IaC, cloud providers, dev environments (devcontainer, nix) — the technologies only; what the definitions declare and how they are hardened is iac-scan's |
databases-storage | Databases, caches, queues/brokers, file/blob storage — declared drivers and connection/config evidence |
external-services | Third-party APIs and SaaS the code calls (payment, auth, LLM APIs, telemetry backends) |
protocols-formats | Wire protocols and interchange formats that shape interfaces: gRPC/protobuf, GraphQL, WebSocket, JSON-RPC, OpenAPI |
When an item fits two groups, classify by its role in the system, not by how it enters the code:
- A datastore beats its driver library: SQLite via SQLx is one
databases-storagefinding (mention the driver there), not alibrariesone. - A hosted third-party service beats its SDK: Sentry, Statsig, S3/R2 go to
external-serviceseven though they appear as libraries or in CI configs. - Sandboxing, virtualization, and dev environments (Landlock, embedded V8, devcontainer, nix) are
infrastructure. - Dependency-sourcing risks (git-pinned forks, local patches to third-party code, wildcard versions) are about dependency management: put them in
build-tooling, listing the affected technologies in the description andtags.
Where to look
Work breadth-first: manifests → build/deploy files → code-level signals.
- Manifests and lockfiles — find them all before reading any (Sokrates'
buildAndDeploymentFiles.jsonlists most):package.json(+workspaces),Cargo.toml(workspace roots first),go.mod,pyproject.toml/requirements*.txt/setup.py,pom.xml/build.gradle*,*.csproj,Gemfile,composer.json,mix.exs. Lockfiles confirm resolved versions; manifests are the primary evidence. - Build & dev environment —
Makefile,justfile,BUILD.bazel/MODULE.bazel,CMakeLists.txt,flake.nix,.devcontainer/,.tool-versions/.nvmrc/rust-toolchain.toml,Dockerfile*,docker-compose*,*.tf,helm/,k8s/. - CI/CD —
.github/workflows/*.yml,.gitlab-ci.yml,Jenkinsfile,.circleci/; release configs (goreleaser,changesets,release-please). - Code-level signals — for each major declared dependency, confirm real usage (one grep for its import). Then hunt for what manifests don't declare: hardcoded external API base URLs (
https://api.…), connection strings and driver imports, protocol schemas (*.proto,*.graphql,openapi.*), telemetry SDK initialization, feature-flag/auth SDKs. - Env & config surface —
.env.example,config/*.yaml, settings modules: service names in config keys often reveal external services no manifest mentions.
Severity — when a stack fact becomes a risk
Most findings are severity: info. Raise severity (and add a recommendation) only for:
- EOL / unmaintained: runtime or framework version past end-of-life, or a dependency archived/deprecated upstream —
medium–highdepending on exposure. Only claim EOL status you are confident of; if unsure of current status, state the version asinfoand note the uncertainty in the description. - Declared but unused / duplicated purpose: two libraries doing the same job, or heavyweight unused dependencies —
low. - Risky sourcing: dependencies pulled from git URLs or unpinned ranges in applications, vendored copies with local patches (check
patches/,third_party/) —low–medium. - Version fragmentation: the same dependency at conflicting major versions across the workspace —
low–medium.
Output
Follow the core workflow: write _sokrates/reports/ai-insights/tech-stack-scan.json (scanner: "tech-stack-scan", scanner_version: "1.0"), validate until OK, render the explorer, then report to the user leading with a stack summary (the two-sentence "what is this built with") and the attention items.
Put ecosystem totals into stats, e.g. {"direct_dependencies": {"cargo": 143, "npm": 27}, "manifest_files": 12}.
In this repository27 other files it gives its agents.
- sokrates-decompositionsSkill
- sokrates-features-of-interestSkill
- sokrates-landscape-configSkill
- sokrates-people-configSkill
- sokrates-repo-configSkill
- sokrates-virtual-landscapesSkill
- sokrates-improveSkill
- architecture-scanSkill
- cicd-scanSkill
- configuration-scanSkill
- domain-language-scanSkill
- evolution-scanSkill
- full-scanSkill
- functionality-scanSkill
- iac-scanSkill
- landscape-synthesis-scanSkill
- maintainability-scanSkill
- network-scanSkill
- observability-scanSkill
- performance-scanSkill
- reliability-scanSkill
- risk-synthesis-scanSkill
- security-scanSkill
- sokrates-scan-coreSkill
- storage-scanSkill
- testing-scanSkill
- sokratesSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

