← Back to list

project-detection
by gruckion
⭐ 9🍴 0📅 Jan 23, 2026
SKILL.md
name: project-detection description: Detects 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.
Project Detection
Detects project configuration and provides standardized commands. Run once at init, cache in state file.
Usage
Run the detection script from the project root:
./marathon-ralph/skills/project-detection/scripts/detect.sh /path/to/project
Returns JSON:
{
"language": "node",
"packageManager": "bun",
"monorepo": {
"type": "turbo",
"workspaces": ["apps/web", "apps/api", "packages/shared"]
},
"commands": {
"install": "bun install",
"dev": "bun run dev",
"build": "bun run build",
"test": "bun run test",
"testWorkspace": "bun run --filter={workspace} test",
"lint": "bun run lint",
"typecheck": "bun run check-types"
}
}
Caching Results
After detection, store in marathon state file under project key:
{
"project": {
"language": "node",
"packageManager": "bun",
"monorepo": { "type": "turbo", "workspaces": [...] },
"commands": { ... },
"detectedAt": "2024-01-03T12:00:00Z"
}
}
Using Cached Commands
When running commands, always check state first:
- Read
project.commandsfrom state - If not present, run detection script
- Use the appropriate command from the cache
For Monorepos
When tests/builds need to target a specific workspace:
# Use testWorkspace with the workspace name
bun run --filter=web test
# Or for all workspaces
turbo run test
Command Selection Priority
- Use cached command from state
- If no cache, run detection
- If detection fails, fall back to reference patterns
Detection Logic
Package Manager Detection (by lock file)
| Lock File | Package Manager | Install | Run |
|---|---|---|---|
bun.lock or bun.lockb | bun | bun install | bun run |
pnpm-lock.yaml | pnpm | pnpm install | pnpm run |
yarn.lock | yarn | yarn install | yarn |
package-lock.json | npm | npm install | npm run |
Monorepo Detection
| Config File | Monorepo Type |
|---|---|
turbo.json | Turborepo |
nx.json | Nx |
lerna.json | Lerna |
pnpm-workspace.yaml | pnpm workspaces |
package.json with workspaces | npm/yarn workspaces |
Language Detection
| Indicator | Language |
|---|---|
package.json | Node.js |
pyproject.toml, setup.py | Python |
go.mod | Go |
Cargo.toml | Rust |
build.gradle, pom.xml | Java |
Python Project Commands
For Python projects:
| Tool | Install | Run Script | Test |
|---|---|---|---|
| poetry | poetry install | poetry run {script} | poetry run pytest |
| poetry+poe | poetry install | poe {task} | poe test |
| pip + venv | pip install -r requirements.txt | python -m {module} | pytest |
| uv | uv pip install -r requirements.txt | uv run {script} | uv run pytest |
| pipenv | pipenv install | pipenv run {script} | pipenv run pytest |
Note: If [tool.poe.tasks] exists in pyproject.toml, poe commands are preferred.
Reference Files
- node.md - Node.js patterns and commands
- python.md - Python patterns and commands
- monorepo.md - Monorepo-specific patterns
Score
Total Score
50/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon