From ralph-dev
Detects programming language, framework, build tools, and test commands for any project. Run via /detect-language or ask "what language is this project?".
How this skill is triggered — by the user, by Claude, or both
Slash command
/ralph-dev:detect-languageThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Autonomously detect the programming language, framework, build tools, and verification commands for ANY project.
Autonomously detect the programming language, framework, build tools, and verification commands for ANY project.
/detect-languageIMPORTANT: This skill requires the Ralph-dev CLI. It will build automatically on first use.
# Bootstrap CLI - runs automatically, builds if needed
source ${CLAUDE_PLUGIN_ROOT}/shared/bootstrap-cli.sh
# Verify CLI is ready
ralph-dev --version
# List root files
ls -la
# Find config files (depth 2)
find . -maxdepth 2 -type f \( \
-name 'package.json' -o -name '*.toml' -o -name '*.gradle' \
-o -name 'pom.xml' -o -name 'Gemfile' -o -name 'go.mod' \
-o -name '*.csproj' -o -name 'Makefile' -o -name 'Package.swift' \
\) 2>/dev/null
# Count source files by extension
for ext in ts js py go rs java rb php cs cpp swift; do
count=$(find . -name "*.$ext" -type f 2>/dev/null | wc -l)
[ "$count" -gt 0 ] && echo "$ext: $count files"
done
Read the primary config file for the detected language and extract:
Based on evidence, identify:
| Component | How to Detect |
|---|---|
| Language | Primary config file + file extensions |
| Framework | Check dependencies for react, django, express, etc. |
| Build Tool | Config files: vite.config, webpack.config, Cargo.toml |
| Package Manager | Lock files: pnpm-lock.yaml, yarn.lock, go.sum |
| Test Framework | devDependencies: jest, vitest, pytest |
Language → Commands Mapping:
| Language | Type Check | Lint | Test | Build |
|---|---|---|---|---|
| TypeScript | npx tsc --noEmit | npm run lint | npm test | npm run build |
| Python | mypy . | flake8 | pytest | - |
| Go | - | go vet ./... | go test ./... | go build ./... |
| Rust | - | cargo clippy | cargo test | cargo build |
| Java (Maven) | - | - | mvn test | mvn package |
| Java (Gradle) | - | - | ./gradlew test | ./gradlew build |
| Ruby | - | rubocop | rspec | - |
| C# | - | - | dotnet test | dotnet build |
Adapt commands based on actual project config (scripts in package.json, etc.)
# Build JSON result
RESULT='{ "language": "...", "verifyCommands": [...] }'
# Save using CLI
ralph-dev detect-ai-save "$RESULT"
✅ Language Detection Complete
Language: {language}
Framework: {framework}
Build Tool: {buildTool}
Package Manager: {packageManager}
Test Framework: {testFramework}
Confidence: {N}%
Verification Commands:
1. {typecheck command}
2. {lint command}
3. {test command}
4. {build command}
{
"language": "typescript",
"confidence": 0.95,
"evidence": ["package.json exists", "tsconfig.json exists", "47 .ts files"],
"framework": "react",
"buildTool": "vite",
"packageManager": "pnpm",
"testFramework": "vitest",
"verifyCommands": [
"npx tsc --noEmit",
"pnpm run lint",
"pnpm test",
"pnpm run build"
]
}
Monorepo: Multiple config files in subdirectories
Multi-Language: Significant files from multiple languages
Custom Build: No recognized build system
| Error | Action |
|---|---|
| No config files found | Lower confidence, detect from file extensions |
| Conflicting indicators | Note ambiguity, ask user to clarify |
| Unknown build system | Suggest manual configuration |
npx claudepluginhub mylukin/ralph-dev --plugin ralph-devDetects project type, package manager, and monorepo structure. Returns correct commands for test/build/lint/dev. Run at project initialization and cache results in state. Use before running any build/test commands.
Detects project tech stack (frameworks, databases, tests, libraries) from dependency files (Python, JS, Go, Ruby, Java, PHP) and structure; outputs structured JSON.
Analyzes codebase structure, tech stack, patterns, and conventions for project onboarding and exploration.