From ralph-dev
Detects programming language, framework, build tools, and verification commands for any project by scanning structure, counting file extensions, and analyzing configs like package.json or go.mod.
npx claudepluginhub mylukin/ralph-dev --plugin ralph-devThis skill is limited to using the following tools:
Autonomously detect the programming language, framework, build tools, and verification commands for ANY project.
Detects project tech stack (frameworks, databases, tests, libraries) from dependency files (Python, JS, Go, Ruby, Java, PHP) and structure; outputs structured JSON.
Analyzes project tech stack via sync-ctl CLI: detects languages, frameworks, runtimes, package managers, dependencies, Docker/K8s, monorepo structure. Use before scans or to understand codebases.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
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 |