Tech Stack Detector Skill
This skill provides intelligent detection of technologies, frameworks, and tools used in a project.
Detection Matrix
Languages
| Language |
Detection Files |
Indicators |
| TypeScript |
tsconfig.json, *.ts, *.tsx |
"typescript" in deps |
| JavaScript |
*.js, *.jsx, jsconfig.json |
No tsconfig |
| Python |
pyproject.toml, setup.py, *.py |
python, pip, poetry |
| Go |
go.mod, go.sum, *.go |
module declaration |
| Rust |
Cargo.toml, *.rs |
[package] section |
| Java |
pom.xml, build.gradle, *.java |
Maven/Gradle markers |
| C# |
*.csproj, *.sln |
MSBuild configs |
| Ruby |
Gemfile, *.rb |
gem declarations |
| PHP |
composer.json, *.php |
"require" section |
Frontend Frameworks
| Framework |
Detection |
Key Indicators |
| React |
react in deps |
JSX files, hooks patterns |
| Vue |
vue in deps |
.vue files, Options/Composition API |
| Angular |
@angular/core |
*.component.ts, decorators |
| Svelte |
svelte in deps |
.svelte files |
| Next.js |
next in deps |
pages/ or app/ directory |
| Nuxt |
nuxt in deps |
nuxt.config.* |
| Remix |
@remix-run/* |
app/routes/ structure |
| Astro |
astro in deps |
.astro files |
Backend Frameworks
| Framework |
Detection |
Key Indicators |
| Express |
express in deps |
app.use(), route handlers |
| Fastify |
fastify in deps |
Plugin architecture |
| NestJS |
@nestjs/core |
Decorators, modules |
| Django |
django in requirements |
settings.py, urls.py |
| FastAPI |
fastapi in requirements |
@app.get() decorators |
| Flask |
flask in requirements |
@app.route() |
| Spring |
spring-boot in pom |
@RestController |
| Rails |
rails in Gemfile |
MVC structure |
| Laravel |
laravel/framework |
artisan, routes/web.php |
Desktop Frameworks
| Framework |
Detection |
Key Indicators |
| Electron |
electron in deps |
main.js, preload.js |
| Tauri |
@tauri-apps/* |
tauri.conf.json |
| Qt |
CMakeLists.txt + Qt |
#include <Qt*> |
Build Tools
| Tool |
Detection File |
Config Pattern |
| Vite |
vite.config.* |
defineConfig() |
| Webpack |
webpack.config.* |
module.exports = {} |
| Rollup |
rollup.config.* |
export default {} |
| esbuild |
esbuild.config.* |
build() calls |
| Turbo |
turbo.json |
pipeline config |
| Nx |
nx.json |
projects, generators |
| Parcel |
package.json "source" |
No config file needed |
| SWC |
.swcrc |
jsc config |
Package Managers
| Manager |
Detection File |
Lock File |
| npm |
package.json |
package-lock.json |
| yarn |
package.json |
yarn.lock |
| pnpm |
package.json |
pnpm-lock.yaml |
| bun |
package.json |
bun.lockb |
| pip |
requirements.txt |
- |
| poetry |
pyproject.toml |
poetry.lock |
| cargo |
Cargo.toml |
Cargo.lock |
| maven |
pom.xml |
- |
| gradle |
build.gradle |
gradle.lockfile |
Testing Frameworks
| Framework |
Detection |
Config File |
| Jest |
jest in deps |
jest.config.* |
| Vitest |
vitest in deps |
vitest.config.* |
| Mocha |
mocha in deps |
.mocharc.* |
| Cypress |
cypress in deps |
cypress.config.* |
| Playwright |
@playwright/test |
playwright.config.* |
| Pytest |
pytest in requirements |
pytest.ini, pyproject.toml |
| JUnit |
pom.xml + junit |
- |
| RSpec |
rspec in Gemfile |
.rspec |
Databases
| Database |
Detection |
Connection Patterns |
| PostgreSQL |
pg, psycopg2 |
postgres://, postgresql:// |
| MySQL |
mysql2, mysqlclient |
mysql:// |
| MongoDB |
mongodb, mongoose |
mongodb:// |
| Redis |
redis, ioredis |
redis:// |
| SQLite |
sqlite3, better-sqlite3 |
.db, .sqlite files |
| Prisma |
@prisma/client |
schema.prisma |
| Drizzle |
drizzle-orm |
drizzle.config.ts |
Cloud & Infrastructure
| Service |
Detection |
Config |
| AWS |
@aws-sdk/* |
.aws/, serverless.yml |
| GCP |
@google-cloud/* |
gcloud references |
| Azure |
@azure/* |
azure-pipelines.yml |
| Vercel |
vercel in deps |
vercel.json |
| Docker |
Dockerfile |
docker-compose.yml |
| Kubernetes |
k8s manifests |
*.yaml with apiVersion |
| Terraform |
*.tf files |
main.tf, variables.tf |
Detection Algorithm
async function detectTechStack(projectRoot: string): Promise<TechStack> {
const detections: Detection[] = [];
// Phase 1: File-based detection (fast)
const files = await glob(['package.json', 'tsconfig.json', '*.config.*', ...]);
for (const file of files) {
detections.push(...detectFromFile(file));
}
// Phase 2: Content-based detection (selective)
const sampleFiles = selectRepresentativeFiles(projectRoot);
for (const file of sampleFiles) {
detections.push(...detectFromContent(file));
}
// Phase 3: Confidence scoring
const stack = aggregateDetections(detections);
return rankByConfidence(stack);
}
Output Format
## Tech Stack Analysis
### Primary Technologies
| Technology | Version | Confidence | Evidence |
|------------|---------|------------|----------|
| TypeScript | 5.3.x | HIGH | tsconfig.json, *.ts files |
| React | 18.x | HIGH | package.json, JSX patterns |
| Next.js | 14.x | HIGH | next.config.js, app/ directory |
### Build & Development
| Tool | Version | Purpose |
|------|---------|---------|
| pnpm | 8.x | Package manager |
| Turbo | 1.x | Monorepo build |
| Vite | 5.x | Dev server, bundling |
### Testing
| Framework | Coverage | Purpose |
|-----------|----------|---------|
| Jest | HIGH | Unit tests |
| Playwright | MEDIUM | E2E tests |
### Infrastructure
| Service | Purpose |
|---------|---------|
| Docker | Containerization |
| Vercel | Deployment |
### Uncertain Detections
⚠️ Redis: Found redis dependency but no connection config
⚠️ GraphQL: Found @apollo/client but no schema files
Integration with Steering
When invoked during /steering:
- Phase 2 (Tech Discovery) automatically uses this skill
- Populates
tech.md with detected stack
- Generates accurate build commands
- Identifies environment variable requirements
- Detects testing framework for test commands
Confidence Levels
HIGH: Config file + code evidence + dependencies
MEDIUM: Config file + dependencies (no code evidence)
LOW: Dependencies only (may be unused)
1---2name: tech-stack-detector3description: This skill should be used when the user asks about "detecting tech stack", "identifying technologies", "project dependencies", "framework detection", "build tool discovery", or needs to automatically identify and document the technologies used in a project.4---5
6# Tech Stack Detector Skill
7
8This skill provides intelligent detection of technologies, frameworks, and tools used in a project.
9
10## Detection Matrix
11
12### Languages
13
14| Language | Detection Files | Indicators |
15|----------|----------------|------------|
16| TypeScript | tsconfig.json, *.ts, *.tsx | `"typescript"` in deps |
17| JavaScript | *.js, *.jsx, jsconfig.json | No tsconfig |
18| Python | pyproject.toml, setup.py, *.py | `python`, `pip`, `poetry` |
19| Go | go.mod, go.sum, *.go | `module` declaration |
20| Rust | Cargo.toml, *.rs | `[package]` section |
21| Java | pom.xml, build.gradle, *.java | Maven/Gradle markers |
22| C# | *.csproj, *.sln | MSBuild configs |
23| Ruby | Gemfile, *.rb | `gem` declarations |
24| PHP | composer.json, *.php | `"require"` section |
25
26### Frontend Frameworks
27
28| Framework | Detection | Key Indicators |
29|-----------|-----------|----------------|
30| React | `react` in deps | JSX files, hooks patterns |
31| Vue | `vue` in deps | `.vue` files, Options/Composition API |
32| Angular | `@angular/core` | `*.component.ts`, decorators |
33| Svelte | `svelte` in deps | `.svelte` files |
34| Next.js | `next` in deps | `pages/` or `app/` directory |
35| Nuxt | `nuxt` in deps | `nuxt.config.*` |
36| Remix | `@remix-run/*` | `app/routes/` structure |
37| Astro | `astro` in deps | `.astro` files |
38
39### Backend Frameworks
40
41| Framework | Detection | Key Indicators |
42|-----------|-----------|----------------|
43| Express | `express` in deps | `app.use()`, route handlers |
44| Fastify | `fastify` in deps | Plugin architecture |
45| NestJS | `@nestjs/core` | Decorators, modules |
46| Django | `django` in requirements | `settings.py`, `urls.py` |
47| FastAPI | `fastapi` in requirements | `@app.get()` decorators |
48| Flask | `flask` in requirements | `@app.route()` |
49| Spring | `spring-boot` in pom | `@RestController` |
50| Rails | `rails` in Gemfile | MVC structure |
51| Laravel | `laravel/framework` | `artisan`, `routes/web.php` |
52
53### Desktop Frameworks
54
55| Framework | Detection | Key Indicators |
56|-----------|-----------|----------------|
57| Electron | `electron` in deps | `main.js`, `preload.js` |
58| Tauri | `@tauri-apps/*` | `tauri.conf.json` |
59| Qt | CMakeLists.txt + Qt | `#include <Qt*>` |
60
61### Build Tools
62
63| Tool | Detection File | Config Pattern |
64|------|----------------|----------------|
65| Vite | vite.config.* | `defineConfig()` |
66| Webpack | webpack.config.* | `module.exports = {}` |
67| Rollup | rollup.config.* | `export default {}` |
68| esbuild | esbuild.config.* | `build()` calls |
69| Turbo | turbo.json | `pipeline` config |
70| Nx | nx.json | `projects`, `generators` |
71| Parcel | package.json "source" | No config file needed |
72| SWC | .swcrc | `jsc` config |
73
74### Package Managers
75
76| Manager | Detection File | Lock File |
77|---------|----------------|-----------|
78| npm | package.json | package-lock.json |
79| yarn | package.json | yarn.lock |
80| pnpm | package.json | pnpm-lock.yaml |
81| bun | package.json | bun.lockb |
82| pip | requirements.txt | - |
83| poetry | pyproject.toml | poetry.lock |
84| cargo | Cargo.toml | Cargo.lock |
85| maven | pom.xml | - |
86| gradle | build.gradle | gradle.lockfile |
87
88### Testing Frameworks
89
90| Framework | Detection | Config File |
91|-----------|-----------|-------------|
92| Jest | `jest` in deps | jest.config.* |
93| Vitest | `vitest` in deps | vitest.config.* |
94| Mocha | `mocha` in deps | .mocharc.* |
95| Cypress | `cypress` in deps | cypress.config.* |
96| Playwright | `@playwright/test` | playwright.config.* |
97| Pytest | `pytest` in requirements | pytest.ini, pyproject.toml |
98| JUnit | pom.xml + junit | - |
99| RSpec | `rspec` in Gemfile | .rspec |
100
101### Databases
102
103| Database | Detection | Connection Patterns |
104|----------|-----------|---------------------|
105| PostgreSQL | `pg`, `psycopg2` | `postgres://`, `postgresql://` |
106| MySQL | `mysql2`, `mysqlclient` | `mysql://` |
107| MongoDB | `mongodb`, `mongoose` | `mongodb://` |
108| Redis | `redis`, `ioredis` | `redis://` |
109| SQLite | `sqlite3`, `better-sqlite3` | `.db`, `.sqlite` files |
110| Prisma | `@prisma/client` | `schema.prisma` |
111| Drizzle | `drizzle-orm` | `drizzle.config.ts` |
112
113### Cloud & Infrastructure
114
115| Service | Detection | Config |
116|---------|-----------|--------|
117| AWS | `@aws-sdk/*` | `.aws/`, `serverless.yml` |
118| GCP | `@google-cloud/*` | `gcloud` references |
119| Azure | `@azure/*` | `azure-pipelines.yml` |
120| Vercel | `vercel` in deps | `vercel.json` |
121| Docker | Dockerfile | `docker-compose.yml` |
122| Kubernetes | k8s manifests | `*.yaml` with `apiVersion` |
123| Terraform | `*.tf` files | `main.tf`, `variables.tf` |
124
125## Detection Algorithm
126
127```typescript
128async function detectTechStack(projectRoot: string): Promise<TechStack> {
129 const detections: Detection[] = [];
130
131 // Phase 1: File-based detection (fast)
132 const files = await glob(['package.json', 'tsconfig.json', '*.config.*', ...]);
133 for (const file of files) {
134 detections.push(...detectFromFile(file));
135 }
136
137 // Phase 2: Content-based detection (selective)
138 const sampleFiles = selectRepresentativeFiles(projectRoot);
139 for (const file of sampleFiles) {
140 detections.push(...detectFromContent(file));
141 }
142
143 // Phase 3: Confidence scoring
144 const stack = aggregateDetections(detections);
145 return rankByConfidence(stack);
146}
147```
148
149## Output Format
150
151```markdown
152## Tech Stack Analysis
153
154### Primary Technologies
155| Technology | Version | Confidence | Evidence |
156|------------|---------|------------|----------|
157| TypeScript | 5.3.x | HIGH | tsconfig.json, *.ts files |
158| React | 18.x | HIGH | package.json, JSX patterns |
159| Next.js | 14.x | HIGH | next.config.js, app/ directory |
160
161### Build & Development
162| Tool | Version | Purpose |
163|------|---------|---------|
164| pnpm | 8.x | Package manager |
165| Turbo | 1.x | Monorepo build |
166| Vite | 5.x | Dev server, bundling |
167
168### Testing
169| Framework | Coverage | Purpose |
170|-----------|----------|---------|
171| Jest | HIGH | Unit tests |
172| Playwright | MEDIUM | E2E tests |
173
174### Infrastructure
175| Service | Purpose |
176|---------|---------|
177| Docker | Containerization |
178| Vercel | Deployment |
179
180### Uncertain Detections
181⚠️ Redis: Found redis dependency but no connection config
182⚠️ GraphQL: Found @apollo/client but no schema files
183```
184
185## Integration with Steering
186
187When invoked during `/steering`:
188
1891. **Phase 2 (Tech Discovery)** automatically uses this skill
1902. Populates `tech.md` with detected stack
1913. Generates accurate build commands
1924. Identifies environment variable requirements
1935. Detects testing framework for test commands
194
195## Confidence Levels
196
197```
198HIGH: Config file + code evidence + dependencies
199MEDIUM: Config file + dependencies (no code evidence)
200LOW: Dependencies only (may be unused)
201```