Detect project type and configuration for generic application releases
View on GitHubjayteealao/agent-skills
release-automation
plugins/release-automation/skills/detect-project-type/SKILL.md
February 1, 2026
Select agents to install to:
npx add-skill https://github.com/jayteealao/agent-skills/blob/main/plugins/release-automation/skills/detect-project-type/SKILL.md -a claude-code --skill detect-project-typeInstallation paths:
.claude/skills/detect-project-type/# Detect Project Type ## Purpose Analyzes the project directory to determine the project type (Node.js, Python, Rust, Go, Java, generic, Claude Code plugin, or monorepo) and loads or generates appropriate release configuration. This is the foundation for generic release automation that works with any application. ## Input Context The skill expects to be invoked in a project root directory. It examines: - Configuration files (`.release-config.json`, `.releaserc.json`) - Project markers (package.json, Cargo.toml, pyproject.toml, etc.) - Directory structure (monorepo patterns) - Version file locations ## Workflow ### 1. Check for Explicit Configuration First, check if user has provided explicit configuration: ```bash # Check for config files in order of precedence if [ -f ".release-config.json" ]; then config_file=".release-config.json" elif [ -f ".releaserc.json" ]; then config_file=".releaserc.json" elif [ -f ".releaserc" ]; then config_file=".releaserc" else config_file="" fi ``` If config file exists: - Parse JSON to extract configuration - Validate configuration (required fields, file paths exist) - Return configuration with `config_source: "explicit"` See [Configuration Reference](../../docs/configuration.md) for schema details. ### 2. Auto-Detect Project Type If no configuration file, detect project type from filesystem markers: ```bash # Detection logic (in priority order) project_type="unknown" # Check for monorepo first (multiple package.json or project files in subdirs) if [ $(find packages -name "package.json" 2>/dev/null | wc -l) -gt 1 ] || \ [ $(find apps -name "package.json" 2>/dev/null | wc -l) -gt 1 ]; then project_type="monorepo" # Node.js project elif [ -f "package.json" ]; then project_type="nodejs" # Python project elif [ -f "pyproject.toml" ]; then project_type="python" # Rust project elif [ -f "Cargo.toml" ]; then project_type="rust" # Go project elif [ -f "go.mod" ]; then project_type="go" # Java/Gradle pr