harnesslisted
Install: claude install-skill TeFuirnever/oh-my-matrix
# OMM Development Harness
The harness guards TS source, docs, and commit messages. **Every gate runs identically locally and in CI** — `pnpm check` / `pnpm verify` mirror the pipeline, so what passes on your laptop passes in GitHub Actions.
Design rationale: [docs/design/dev-harness.md](../../docs/design/dev-harness.md). PR lifecycle: the [`work-with-pr`](../work-with-pr/SKILL.md) skill.
## The commands
```bash
pnpm check # lint (eslint) + markdownlint + typecheck ← static gates
pnpm verify # check + pnpm -r test + pnpm docs:build ← full local CI mirror
pnpm lint # eslint .
pnpm lint:md # markdownlint-cli2 (all .md, archive excluded)
pnpm typecheck # pnpm -r typecheck (tsc --noEmit per package)
pnpm -r test # vitest run across all workspaces
```
Run `pnpm verify` before pushing. CI (`.github/workflows/ci.yml`) splits these into `lint` / `typecheck` / `commitlint` / `test` jobs with concurrency cancellation and per-job summaries.
## Where things live
| Concern | File |
|---|---|
| ESLint (flat, TS-aware) | `eslint.config.mjs` |
| Markdownlint (lenient prose) | `.markdownlint-cli2.jsonc` |
| Commitlint (Conventional Commits) | `commitlint.config.mjs` |
| Node version | `.nvmrc` (20), `package.json` `engines.node` |
| Local `commit-msg` hook | `package.json` `simple-git-hooks` → installed via `prepare` |
| CI pipeline | `.github/workflows/ci.yml` |
| Docs build / deploy | `.github/workflows/docs.yml` |
| Repo MCPs | `.mcp.json` (codegraph) |
## Commits
C