Stack Detection Reference Tables
Declarative mappings for identifying a project's technology stack. Commands reference these tables rather than maintaining their own detection logic.
Language Detection
| File |
Language |
Package Manager |
pyproject.toml |
Python |
uv / pip |
package.json |
JavaScript/TypeScript |
npm / yarn / pnpm |
Cargo.toml |
Rust |
cargo |
go.mod |
Go |
go |
Gemfile |
Ruby |
bundler |
build.gradle or pom.xml |
Java/Kotlin |
gradle / maven |
mix.exs |
Elixir |
mix |
Framework Detection
| Language |
Dependency |
Framework |
| Python |
fastapi |
FastAPI |
| Python |
django |
Django |
| Python |
flask |
Flask |
| TypeScript |
next |
Next.js |
| TypeScript |
express |
Express |
| TypeScript |
nestjs |
NestJS |
| Ruby |
rails |
Rails |
| Rust |
actix-web |
Actix |
| Rust |
axum |
Axum |
| Go |
gin-gonic |
Gin |
| Go |
echo |
Echo |
| Elixir |
phoenix |
Phoenix |
Domain Detection
| Directory Pattern |
Domain |
models/, schemas/, entities/ |
Data models |
api/, routes/, controllers/, handlers/ |
API layer |
services/, use_cases/, ops/ |
Business logic |
storage/, db/, repositories/ |
Data access |
auth/, security/ |
Authentication/security |
tests/, spec/, __tests__/ |
Testing |
Dockerfile, docker-compose.*, .github/workflows/, k8s/ |
Infrastructure |
| (detected via Framework Detection table above) |
Framework-specific |
Gating Rules
- Infrastructure requires 2 or more signals. A single
.github/workflows/ directory alone is not sufficient — most projects have CI config without being infrastructure-focused.
- Framework-specific is detected via the Framework Detection table (dependency-based), not directory patterns. Only present if a framework was identified.
Analysis Guidance (Beyond File Presence)
When performing LLM-driven codebase analysis (see coding-workflows:codebase-analysis skill), these per-stack guides indicate what to look for beyond file presence. Use these after identifying the stack via the tables above.
Python / FastAPI
- Dependency injection: How
Depends() is used -- shared session patterns, auth injection, config injection
- Async patterns: Consistent async/await usage, background tasks (Celery, Dramatiq, or native)
- Pydantic models: Request/response model organization, validation patterns, shared base models
- Error handling: Custom exception handlers, error response format consistency
- Database patterns: SQLAlchemy session management, Alembic migration conventions, repository vs direct query patterns
TypeScript / Next.js
- Component boundaries: Server vs client component split, data fetching strategy (server actions, RSC, API routes)
- State management: React Context, Zustand, Redux, or server-side state
- Route organization: App router patterns, parallel routes, intercepting routes
- Type safety: Shared type definitions, Zod validation, end-to-end type safety
Ruby / Rails
- Service objects: Thin controllers + service objects vs fat models, command/operation patterns
- ActiveRecord patterns: Scoping conventions, association patterns, callback usage
- Background jobs: Sidekiq/GoodJob organization, retry strategies, job base class patterns
- Testing: RSpec conventions (factories vs fixtures, shared examples, request spec patterns)
Rust / Actix or Axum
- Error handling: thiserror/anyhow usage, error type hierarchy
- State sharing: Arc<Mutex> patterns, app state extractors
- Middleware and extractors: Custom extractors, middleware chains
- Async runtime: tokio patterns, spawned tasks, channel usage
Go
- Interface design: Interface segregation, dependency injection patterns
- Context propagation: Context usage across service boundaries, timeout patterns
- Error wrapping: fmt.Errorf with %w, sentinel errors, custom error types
- Goroutine safety: Mutex usage, channel patterns, sync.WaitGroup
Generic (Unlisted Stacks)
- Entry point organization: Single vs multiple entry points, CLI vs server vs worker
- Error handling approach: Exceptions, result types, error codes
- Testing framework: Unit vs integration test organization, fixture patterns
- Module boundaries: How the codebase separates concerns
For TDD patterns and testing strategy guidance per stack, see coding-workflows:tdd-patterns.
See references/framework-hints.md for framework-specific convention hints used during skill generation.
Polyglot Projects
When multiple language files are detected (e.g., pyproject.toml and package.json):
- Present all detected languages to the user
- Ask which is the primary language
- Framework detection runs against the selected primary language
- Domain detection is language-agnostic (directory-based) and applies to all languages
When Detection Fails
If no project files are found or the technology stack cannot be determined, prompt the user for:
- Primary language
- Framework (if applicable)
- Key domains in the codebase (e.g., API, storage, auth)
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: kiwi-home-ai-coding-resources-stack-detection3description: Stack Detection Reference Tables4---56# Stack Detection Reference Tables78Declarative mappings for identifying a project's technology stack. Commands reference these tables rather than maintaining their own detection logic.910## Language Detection1112| File | Language | Package Manager |13|------|----------|-----------------|14| `pyproject.toml` | Python | uv / pip |15| `package.json` | JavaScript/TypeScript | npm / yarn / pnpm |16| `Cargo.toml` | Rust | cargo |17| `go.mod` | Go | go |18| `Gemfile` | Ruby | bundler |19| `build.gradle` or `pom.xml` | Java/Kotlin | gradle / maven |20| `mix.exs` | Elixir | mix |2122## Framework Detection2324| Language | Dependency | Framework |25|----------|-----------|-----------|26| Python | `fastapi` | FastAPI |27| Python | `django` | Django |28| Python | `flask` | Flask |29| TypeScript | `next` | Next.js |30| TypeScript | `express` | Express |31| TypeScript | `nestjs` | NestJS |32| Ruby | `rails` | Rails |33| Rust | `actix-web` | Actix |34| Rust | `axum` | Axum |35| Go | `gin-gonic` | Gin |36| Go | `echo` | Echo |37| Elixir | `phoenix` | Phoenix |3839## Domain Detection4041| Directory Pattern | Domain |42|-------------------|--------|43| `models/`, `schemas/`, `entities/` | Data models |44| `api/`, `routes/`, `controllers/`, `handlers/` | API layer |45| `services/`, `use_cases/`, `ops/` | Business logic |46| `storage/`, `db/`, `repositories/` | Data access |47| `auth/`, `security/` | Authentication/security |48| `tests/`, `spec/`, `__tests__/` | Testing |49| `Dockerfile`, `docker-compose.*`, `.github/workflows/`, `k8s/` | Infrastructure |50| _(detected via Framework Detection table above)_ | Framework-specific |5152### Gating Rules5354- **Infrastructure** requires **2 or more** signals. A single `.github/workflows/` directory alone is not sufficient — most projects have CI config without being infrastructure-focused.55- **Framework-specific** is detected via the Framework Detection table (dependency-based), not directory patterns. Only present if a framework was identified.5657## Analysis Guidance (Beyond File Presence)5859When performing LLM-driven codebase analysis (see `coding-workflows:codebase-analysis` skill), these per-stack guides indicate what to look for beyond file presence. Use these after identifying the stack via the tables above.6061### Python / FastAPI6263- **Dependency injection**: How `Depends()` is used -- shared session patterns, auth injection, config injection64- **Async patterns**: Consistent async/await usage, background tasks (Celery, Dramatiq, or native)65- **Pydantic models**: Request/response model organization, validation patterns, shared base models66- **Error handling**: Custom exception handlers, error response format consistency67- **Database patterns**: SQLAlchemy session management, Alembic migration conventions, repository vs direct query patterns6869### TypeScript / Next.js7071- **Component boundaries**: Server vs client component split, data fetching strategy (server actions, RSC, API routes)72- **State management**: React Context, Zustand, Redux, or server-side state73- **Route organization**: App router patterns, parallel routes, intercepting routes74- **Type safety**: Shared type definitions, Zod validation, end-to-end type safety7576### Ruby / Rails7778- **Service objects**: Thin controllers + service objects vs fat models, command/operation patterns79- **ActiveRecord patterns**: Scoping conventions, association patterns, callback usage80- **Background jobs**: Sidekiq/GoodJob organization, retry strategies, job base class patterns81- **Testing**: RSpec conventions (factories vs fixtures, shared examples, request spec patterns)8283### Rust / Actix or Axum8485- **Error handling**: thiserror/anyhow usage, error type hierarchy86- **State sharing**: Arc<Mutex<T>> patterns, app state extractors87- **Middleware and extractors**: Custom extractors, middleware chains88- **Async runtime**: tokio patterns, spawned tasks, channel usage8990### Go9192- **Interface design**: Interface segregation, dependency injection patterns93- **Context propagation**: Context usage across service boundaries, timeout patterns94- **Error wrapping**: fmt.Errorf with %w, sentinel errors, custom error types95- **Goroutine safety**: Mutex usage, channel patterns, sync.WaitGroup9697### Generic (Unlisted Stacks)9899- **Entry point organization**: Single vs multiple entry points, CLI vs server vs worker100- **Error handling approach**: Exceptions, result types, error codes101- **Testing framework**: Unit vs integration test organization, fixture patterns102- **Module boundaries**: How the codebase separates concerns103104For TDD patterns and testing strategy guidance per stack, see `coding-workflows:tdd-patterns`.105106See `references/framework-hints.md` for framework-specific convention hints used during skill generation.107108---109110## Polyglot Projects111112When multiple language files are detected (e.g., `pyproject.toml` and `package.json`):113114- Present all detected languages to the user115- Ask which is the primary language116- Framework detection runs against the selected primary language117- Domain detection is language-agnostic (directory-based) and applies to all languages118119## When Detection Fails120121If no project files are found or the technology stack cannot be determined, prompt the user for:1221231. Primary language1242. Framework (if applicable)1253. Key domains in the codebase (e.g., API, storage, auth)126127---128> Converted and distributed by [TomeVault](https://tomevault.io/claim/kiwi-home) — claim your Tome and manage your conversions.129<!-- tomevault:4.0:skill_md:2026-04-15 -->