Generate a visual technology-stack inventory (TECH_STACK.html) from any codebase — languages, frameworks, databases, AI SDKs, testing, and infra. CLI + MCP server, stdlib-only scanner.
Project description
generate-tech-stack
Scan any project and generate a visual TECH_STACK.html page — dark-mode, auto-adapting, zero config.
Works as a Claude Code skill, MCP server, or GitHub Copilot Extension.
Live demo → — generated from fastapi/full-stack-fastapi-template, unmodified.
What it produces
Every generated page contains:
| Section | Description |
|---|---|
| Stat row | Total tools · Categories · AI Backends · Data Stores |
| Architecture diagram | Layered flow diagram (Consumer → API → AI/NLP → Data/Obs/Frontend) |
| Bar chart | Horizontal bars per category, colour-matched |
| Tool cards | One card per category; each tool shows a dot, name, description, and badge |
| Badge legend | Explains pip, dep, optional, core, deploy, ci, etc. |
| Footer | Project name · tool count · generation date |
Repository layout
~/.claude/skills/generate-tech-stack/
├── SKILL.md ← Claude Code skill definition
├── INSTALL.md ← detailed per-platform installation guide
├── README.md ← this file
├── scripts/
│ └── analyze.py ← core scanner + HTML renderer (no dependencies)
├── mcp/
│ ├── server.py ← MCP stdio server (pip install mcp)
│ └── requirements.txt
└── copilot/
├── index.js ← GitHub Copilot Extension (Express)
├── package.json
└── openai_function.json ← OpenAI / Antigravity function definition
Usage
pip (CLI + MCP server)
pip install generate-tech-stack-mcp
generate-tech-stack . TECH_STACK.html # CLI: scan and write the report
generate-tech-stack-mcp # stdio MCP server
With pip installed, any MCP host config reduces to:
{
"mcpServers": {
"generate-tech-stack": { "command": "generate-tech-stack-mcp" }
}
}
Claude Code
/generate-tech-stack
Run it from any project directory. The skill calls scripts/analyze.py and opens the result in your browser.
MCP (Claude Desktop, VS Code, Cursor, Zed, Windsurf, Continue)
pip install mcp
Add to your host's MCP config (replace the path with your actual home directory):
{
"mcpServers": {
"generate-tech-stack": {
"command": "python3",
"args": ["/home/<you>/.claude/skills/generate-tech-stack/mcp/server.py"]
}
}
}
Then ask: generate my tech stack or /generate-tech-stack.
MCP tools exposed:
generate_tech_stack— scans a project, writesTECH_STACK.html, opens in browserlist_tech_stack— returns a JSON summary, no file written
GitHub Copilot Extension
cd copilot
npm install
npm start # listens on port 3000
ngrok http 3000 # expose for GitHub to reach
Register a GitHub App with Copilot Extension enabled, set the Agent URL to https://your-url/agent, and install it on your account. Then in Copilot Chat:
@generate-tech-stack /generate-tech-stack
@generate-tech-stack /generate-tech-stack /path/to/project
Command line (standalone)
python3 ~/.claude/skills/generate-tech-stack/scripts/analyze.py /path/to/project
# output: /path/to/project/TECH_STACK.html
# custom output path:
python3 scripts/analyze.py . ~/Desktop/TECH_STACK.html
analyze.py has no third-party dependencies — just Python 3.8+.
What gets detected
| Source file | Detected tools |
|---|---|
requirements.txt / pyproject.toml |
Python packages (web, DB, AI, testing, observability, security…) |
package.json |
Node / npm packages (frameworks, frontend, DB drivers, tooling) |
go.mod |
Go language |
Cargo.toml |
Rust language |
pom.xml / build.gradle |
Java / Kotlin |
Gemfile |
Ruby |
composer.json |
PHP |
**/*.py source |
Optional/dynamic SDKs via importlib.find_spec() patterns |
docker-compose.yml / .env |
PostgreSQL, Redis, MongoDB, SQLite connection strings |
Dockerfile |
Docker |
docker-compose.yml |
Docker Compose |
.github/workflows/ |
GitHub Actions |
.gitlab-ci.yml |
GitLab CI |
alembic.ini |
Alembic migrations |
nginx.conf / Caddyfile |
Reverse proxy |
tsconfig.json / src/**/*.ts |
TypeScript |
Detected categories
| Category | Colour | Examples |
|---|---|---|
| Language & Runtime | Green | Python, Go, Rust, TypeScript |
| Web / API Framework | Purple | FastAPI, Express, Django, Next.js |
| Database / Storage | Green | SQLAlchemy, Prisma, Redis, ChromaDB |
| AI Guardrail SDKs | Blue | GuardrailsAI, NVIDIA NeMo, Presidio, Lakera |
| NLP / ML | Teal | spaCy, Transformers, Sentence Transformers |
| Observability | Teal | Prometheus, OpenTelemetry, Sentry, Loguru |
| Testing | Yellow | pytest, Jest, Cypress, Playwright |
| Security / Auth | Rose | PyJWT, bcrypt, Authlib, Helmet |
| Infrastructure / Deploy | Orange | Docker, Kubernetes, Celery, Boto3 |
| Frontend / Dashboard | Gray | React, Vue, Tailwind, Recharts |
| Messaging / Comms | Blue | Kafka, RabbitMQ, Socket.io |
| Dev Tools | Gray | ESLint, Prettier, Vite, TypeScript |
Design
Dark-mode only. Fonts: IBM Plex Sans (body) + JetBrains Mono (code/badges), loaded from Google Fonts. No JavaScript — pure HTML + CSS. Self-contained single file, opens in any browser offline.
See also
- INSTALL.md — per-platform setup instructions
- SKILL.md — Claude Code skill specification
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file generate_tech_stack_mcp-0.2.0.tar.gz.
File metadata
- Download URL: generate_tech_stack_mcp-0.2.0.tar.gz
- Upload date:
- Size: 22.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8596df0ae55f45d30eaef6f887e171a471c25b40eaa8838c1fbece83239b14a
|
|
| MD5 |
d88c871c788ab4b012b4f43fefbfb466
|
|
| BLAKE2b-256 |
a76a3c820c5d7a4830c91b8beb66d94ebddd738fe16f79e5c40ba5b041c59895
|
Provenance
The following attestation bundles were made for generate_tech_stack_mcp-0.2.0.tar.gz:
Publisher:
publish.yml on askuma/generate-tech-stack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
generate_tech_stack_mcp-0.2.0.tar.gz -
Subject digest:
e8596df0ae55f45d30eaef6f887e171a471c25b40eaa8838c1fbece83239b14a - Sigstore transparency entry: 2125405033
- Sigstore integration time:
-
Permalink:
askuma/generate-tech-stack@27f6561e80e386726e7fee7a052f27c680730a90 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/askuma
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@27f6561e80e386726e7fee7a052f27c680730a90 -
Trigger Event:
release
-
Statement type:
File details
Details for the file generate_tech_stack_mcp-0.2.0-py3-none-any.whl.
File metadata
- Download URL: generate_tech_stack_mcp-0.2.0-py3-none-any.whl
- Upload date:
- Size: 20.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77b353a901eb08dd1ec61c49117c358cd06786057669a3781f673fcd9db79756
|
|
| MD5 |
bf13599ee53baa8dc05dbfb5c93c8632
|
|
| BLAKE2b-256 |
d1d640a4b75b2b42d9d75d2180358ec45af4258fe8868d9e30404b7a82401934
|
Provenance
The following attestation bundles were made for generate_tech_stack_mcp-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on askuma/generate-tech-stack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
generate_tech_stack_mcp-0.2.0-py3-none-any.whl -
Subject digest:
77b353a901eb08dd1ec61c49117c358cd06786057669a3781f673fcd9db79756 - Sigstore transparency entry: 2125405212
- Sigstore integration time:
-
Permalink:
askuma/generate-tech-stack@27f6561e80e386726e7fee7a052f27c680730a90 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/askuma
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@27f6561e80e386726e7fee7a052f27c680730a90 -
Trigger Event:
release
-
Statement type: