Initial commit
This commit is contained in:
268
skills/analyze/operations/detect-stack.md
Normal file
268
skills/analyze/operations/detect-stack.md
Normal file
@@ -0,0 +1,268 @@
|
||||
# Tech Stack Detection
|
||||
|
||||
Comprehensive commands for detecting programming languages, frameworks, and build systems.
|
||||
|
||||
## Overview
|
||||
|
||||
Run all detection commands **in parallel** to identify the technology stack. Missing files are normal - they just mean that technology isn't used.
|
||||
|
||||
---
|
||||
|
||||
## Detection Commands
|
||||
|
||||
Execute these commands to detect the primary language and framework:
|
||||
|
||||
```bash
|
||||
# Get current directory context
|
||||
pwd
|
||||
|
||||
# Show directory contents
|
||||
ls -la
|
||||
|
||||
# Get git repository info
|
||||
git remote -v 2>/dev/null
|
||||
|
||||
# Language/Framework Detection (run all in parallel)
|
||||
cat package.json 2>/dev/null # Node.js/JavaScript/TypeScript
|
||||
cat composer.json 2>/dev/null # PHP
|
||||
cat requirements.txt 2>/dev/null # Python (pip)
|
||||
cat Pipfile 2>/dev/null # Python (pipenv)
|
||||
cat pyproject.toml 2>/dev/null # Python (poetry)
|
||||
cat Gemfile 2>/dev/null # Ruby
|
||||
cat pom.xml 2>/dev/null # Java/Maven
|
||||
cat build.gradle 2>/dev/null # Java/Gradle
|
||||
cat Cargo.toml 2>/dev/null # Rust
|
||||
cat go.mod 2>/dev/null # Go
|
||||
cat pubspec.yaml 2>/dev/null # Dart/Flutter
|
||||
cat mix.exs 2>/dev/null # Elixir
|
||||
find . -maxdepth 2 -name "*.csproj" 2>/dev/null # .NET/C#
|
||||
find . -maxdepth 2 -name "*.sln" 2>/dev/null # .NET Solution
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Framework-Specific Detection
|
||||
|
||||
### JavaScript/TypeScript Frameworks
|
||||
|
||||
If `package.json` exists, look for these framework indicators:
|
||||
|
||||
```json
|
||||
{
|
||||
"dependencies": {
|
||||
"react": "...", // React
|
||||
"next": "...", // Next.js
|
||||
"vue": "...", // Vue.js
|
||||
"nuxt": "...", // Nuxt.js
|
||||
"@angular/core": "...", // Angular
|
||||
"svelte": "...", // Svelte
|
||||
"express": "...", // Express.js (backend)
|
||||
"fastify": "...", // Fastify (backend)
|
||||
"nestjs": "..." // NestJS (backend)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Python Frameworks
|
||||
|
||||
Look for these imports or dependencies:
|
||||
|
||||
- `django` - Django web framework
|
||||
- `flask` - Flask micro-framework
|
||||
- `fastapi` - FastAPI
|
||||
- `pyramid` - Pyramid
|
||||
- `tornado` - Tornado
|
||||
|
||||
### Ruby Frameworks
|
||||
|
||||
In `Gemfile`:
|
||||
|
||||
- `rails` - Ruby on Rails
|
||||
- `sinatra` - Sinatra
|
||||
- `hanami` - Hanami
|
||||
|
||||
### PHP Frameworks
|
||||
|
||||
In `composer.json`:
|
||||
|
||||
- `laravel/framework` - Laravel
|
||||
- `symfony/symfony` - Symfony
|
||||
- `slim/slim` - Slim
|
||||
|
||||
### Java Frameworks
|
||||
|
||||
In `pom.xml` or `build.gradle`:
|
||||
|
||||
- `spring-boot` - Spring Boot
|
||||
- `quarkus` - Quarkus
|
||||
- `micronaut` - Micronaut
|
||||
|
||||
---
|
||||
|
||||
## Database Detection
|
||||
|
||||
Look for database-related dependencies or configuration:
|
||||
|
||||
### SQL Databases
|
||||
|
||||
```bash
|
||||
# PostgreSQL indicators
|
||||
grep -r "postgres" package.json composer.json requirements.txt 2>/dev/null
|
||||
ls -la prisma/ 2>/dev/null # Prisma ORM
|
||||
|
||||
# MySQL indicators
|
||||
grep -r "mysql" package.json composer.json requirements.txt 2>/dev/null
|
||||
|
||||
# SQLite
|
||||
find . -name "*.db" -o -name "*.sqlite" 2>/dev/null
|
||||
```
|
||||
|
||||
### NoSQL Databases
|
||||
|
||||
```bash
|
||||
# MongoDB
|
||||
grep -r "mongodb\|mongoose" package.json requirements.txt 2>/dev/null
|
||||
|
||||
# Redis
|
||||
grep -r "redis" package.json requirements.txt 2>/dev/null
|
||||
|
||||
# DynamoDB (AWS)
|
||||
grep -r "dynamodb\|@aws-sdk" package.json requirements.txt 2>/dev/null
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Infrastructure Detection
|
||||
|
||||
### Cloud Providers
|
||||
|
||||
```bash
|
||||
# AWS
|
||||
find . -name "*.tf" -o -name "terraform.tfvars" 2>/dev/null # Terraform
|
||||
find . -name "serverless.yml" 2>/dev/null # Serverless Framework
|
||||
find . -name "cdk.json" 2>/dev/null # AWS CDK
|
||||
grep -r "@aws-sdk\|aws-lambda" package.json 2>/dev/null
|
||||
|
||||
# Azure
|
||||
grep -r "@azure" package.json 2>/dev/null
|
||||
|
||||
# GCP
|
||||
grep -r "@google-cloud" package.json 2>/dev/null
|
||||
```
|
||||
|
||||
### Container/Orchestration
|
||||
|
||||
```bash
|
||||
# Docker
|
||||
ls -la Dockerfile docker-compose.yml 2>/dev/null
|
||||
|
||||
# Kubernetes
|
||||
find . -name "*.yaml" | xargs grep -l "apiVersion: apps/v1" 2>/dev/null
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Build System Detection
|
||||
|
||||
Identify the build tool based on manifest files:
|
||||
|
||||
- `package.json` → npm, yarn, or pnpm (check for lock files)
|
||||
- `pom.xml` → Maven
|
||||
- `build.gradle` → Gradle
|
||||
- `Cargo.toml` → Cargo (Rust)
|
||||
- `go.mod` → Go modules
|
||||
- `Gemfile` → Bundler
|
||||
- `composer.json` → Composer
|
||||
- `requirements.txt` → pip
|
||||
- `Pipfile` → pipenv
|
||||
- `pyproject.toml` → poetry
|
||||
|
||||
---
|
||||
|
||||
## Version Extraction
|
||||
|
||||
Extract version numbers from manifests:
|
||||
|
||||
```bash
|
||||
# Node.js
|
||||
cat package.json | grep '"version"' | head -1
|
||||
|
||||
# Python
|
||||
cat setup.py | grep "version=" 2>/dev/null
|
||||
cat pyproject.toml | grep "version =" 2>/dev/null
|
||||
|
||||
# Java
|
||||
cat pom.xml | grep "<version>" | head -1
|
||||
|
||||
# Rust
|
||||
cat Cargo.toml | grep "version =" | head -1
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Multi-Language Projects
|
||||
|
||||
If multiple language manifest files exist, identify:
|
||||
|
||||
- **Primary language** - The main application language (most source files)
|
||||
- **Secondary languages** - Supporting tools, scripts, infrastructure
|
||||
|
||||
Example:
|
||||
- Primary: TypeScript (Next.js frontend + backend)
|
||||
- Secondary: Python (data processing scripts), Terraform (infrastructure)
|
||||
|
||||
---
|
||||
|
||||
## Output Summary
|
||||
|
||||
After detection, summarize as:
|
||||
|
||||
```markdown
|
||||
## Technology Stack
|
||||
|
||||
### Primary Language
|
||||
- TypeScript 5.2
|
||||
|
||||
### Frameworks & Libraries
|
||||
- Next.js 14.0.3 (React framework)
|
||||
- Prisma 5.6.0 (ORM)
|
||||
- tRPC 10.45.0 (API)
|
||||
|
||||
### Build System
|
||||
- npm 10.2.3
|
||||
|
||||
### Database
|
||||
- PostgreSQL (via Prisma)
|
||||
|
||||
### Infrastructure
|
||||
- AWS Lambda (Serverless)
|
||||
- Terraform 1.6.0 (IaC)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Common Patterns
|
||||
|
||||
### Full-Stack JavaScript/TypeScript
|
||||
- Frontend: React/Next.js/Vue
|
||||
- Backend: Express/Fastify/NestJS
|
||||
- Database: PostgreSQL/MongoDB
|
||||
- Infrastructure: AWS/Vercel/Netlify
|
||||
|
||||
### Python Web App
|
||||
- Framework: Django/Flask/FastAPI
|
||||
- Database: PostgreSQL/MySQL
|
||||
- Cache: Redis
|
||||
- Infrastructure: AWS/GCP
|
||||
|
||||
### Ruby on Rails
|
||||
- Framework: Rails
|
||||
- Database: PostgreSQL
|
||||
- Cache: Redis
|
||||
- Infrastructure: Heroku/AWS
|
||||
|
||||
### Java Enterprise
|
||||
- Framework: Spring Boot
|
||||
- Database: PostgreSQL/Oracle
|
||||
- Message Queue: RabbitMQ/Kafka
|
||||
- Infrastructure: Kubernetes
|
||||
Reference in New Issue
Block a user