marathon-ralph/skills/project-detection/SKILL.md
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.
npx skillsauth add gruckion/chief-wiggum-anthropic-agent-harness project-detectionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Detects project configuration and provides standardized commands. Run once at init, cache in state file.
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"
}
}
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"
}
}
When running commands, always check state first:
project.commands from stateWhen 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
| 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 |
| 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 |
| Indicator | Language |
|---------------------------------------|----------|
| package.json | Node.js |
| pyproject.toml, setup.py | Python |
| go.mod | Go |
| Cargo.toml | Rust |
| build.gradle, pom.xml | Java |
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.
tools
# SQLite Skill for better-t-stack ## Overview SQLite database implementation using LibSQL client and Drizzle ORM. This skill covers local development, Turso cloud, and Cloudflare D1 deployments. --- ## CRITICAL WARNING **NEVER use `bun:sqlite` with Next.js applications.** Next.js runs on Node.js, not Bun runtime. Using `bun:sqlite` causes: ``` Cannot find module 'bun:sqlite' ``` **Always use `@libsql/client`** - it works in both Node.js and Bun environments. --- ## Library Stack | Pack
tools
Write Playwright E2E tests using fixtures and best practices. Use when creating E2E tests, writing browser automation tests, or testing user flows.
development
Visually verify implemented features work correctly before marking complete. Use when testing UI changes, verifying web features, or checking user flows work in the browser.
tools
Programmatically update marathon-ralph state file using deterministic jq commands. Use this instead of manually editing the JSON file.