stack-detectlisted
Install: claude install-skill James-Lloyd/lean-agent-harness
# stack-detect
Determine what stack(s) a repo uses and translate that into the harness's per-component verification
gates. The harness core is stack-agnostic; this skill is the bridge that fills
`harness/harness.config.json` → `components[]` (+ the cross-cutting `gate`) and the run/build/test
commands in `CLAUDE.md` / `AGENT_NOTES.md`.
## 0. First: is this one component or several?
Many projects are **headless** — one root folder containing multiple sub-repos, each with its own root
files (e.g. `frontend/` with `package.json` + `backend/` with `pyproject.toml`). Detect this **before**
detecting stacks:
- Look for manifests/lockfiles in **immediate subdirectories**, not just the root (`*/package.json`,
`*/pyproject.toml`, `*/go.mod`, `*/Cargo.toml`, `*/pom.xml`, etc.).
- Also recognize in-tool monorepos (workspaces in a root `package.json`, `pnpm-workspace.yaml`,
`turbo.json`, Nx, Cargo workspaces, Go modules).
- **One manifest at root** → a single component with `path: "."`.
**Manifests in subdirs** → one component per sub-repo (e.g. `frontend`, `backend`), each with its own
path, stack, and gate. Confirm the split and the directory names with the human.
- Cross-cutting integration/e2e that spans components (a Playwright suite hitting the running FE+BE,
a docker-compose smoke test) belongs in the **top-level `gate`**, not in any single component.
Run the per-stack detection below **once per component**, in that component's directory.
## 1. Gather signals (don't