Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 4 additions & 4 deletions .claude/skills/contributing-to-loopover/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ Run the matching command(s) and **commit the regenerated file(s)** — CI fails
| A Cloudflare binding/var in `wrangler.jsonc` | `npm run cf-typegen` | `worker-configuration.d.ts` |
| Drizzle schema (`src/db/schema.ts`) | `npm run drizzle:generate` | the new `migrations/NNNN_*.sql` |
| Added a raw-SQL migration | (none — just author it) | next **contiguous** `migrations/NNNN_snake.sql` |
| `src/selfhost/**` (or a few other scanned files — see `scripts/gen-selfhost-env-reference.mjs`'s `DEFAULT_SOURCE_ROOTS`) adding/removing an `env.SOMETHING` read | `npm run selfhost:env-reference` | `apps/loopover-ui/src/lib/selfhost-env-reference.ts` — the doc cites the file only (not `file:line`, deliberately, so an unrelated line shift elsewhere in the file never makes this go stale) |
| `src/selfhost/**` (or a few other scanned files — see `scripts/gen-selfhost-env-reference.ts`'s `DEFAULT_SOURCE_ROOTS`) adding/removing an `env.SOMETHING` read | `npm run selfhost:env-reference` | `apps/loopover-ui/src/lib/selfhost-env-reference.ts` — the doc cites the file only (not `file:line`, deliberately, so an unrelated line shift elsewhere in the file never makes this go stale) |
| CLI command surface | `npm run command-reference` | the generated command-reference doc |
| UI files (`apps/loopover-ui/**`) | `npm --workspace @loopover/ui run format` | formatted files |

Expand All @@ -221,9 +221,9 @@ npm audit --audit-level=moderate # the dependency-review job's local eq

`npm run test:ci` runs, and must pass, **all of**: `actionlint`, `db:migrations:check`,
`db:schema-drift:check`, `selfhost:env-reference:check`, `selfhost:validate-observability`,
`cf-typegen:check`, `build:mcp:check`, `build:miner:check`, `typecheck`, `test:coverage`, `test:engine-parity`, `test:live-gate-parity`, `test:driver-parity`, the
`@loopover/engine` workspace's own test run, `test:workers`, `test:mcp-pack`,
`test:miner-pack`, `rees:test`, `ui:openapi:check`, `ui:openapi:settings-parity`,
`cf-typegen:check`, `typecheck`, `test:coverage`, `test:engine-parity`, `test:live-gate-parity`, `test:driver-parity`, the
`@loopover/engine` workspace's own test run, `test:workers`, `build:mcp`, `test:mcp-pack`,
`build:miner`, `test:miner-pack`, `rees:test`, `ui:openapi:check`, `ui:openapi:settings-parity`,
`ui:version-audit`, `docs:drift-check`, `manifest:drift-check`, `engine-parity:drift-check`,
`command-reference:check`, `ui:lint`, `ui:typecheck`, `ui:test`, `ui:build`. If any step fails, fix it
and re-run — do not push a red tree. (Full per-check table in `reference.md`; check `package.json`'s
Expand Down
9 changes: 8 additions & 1 deletion .claude/skills/contributing-to-loopover/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,13 @@ jobs run only if their path filter matched; on push to `main`, everything runs.
| mcp → pack | tarball hygiene | `npm run test:mcp-pack` | unexpected/forbidden file or stale README in the npm tarball |
| miner → build | miner engine/pkg build | `npm run build:miner` | `@loopover/{engine,miner}` build error |
| miner → pack | tarball hygiene | `npm run test:miner-pack` | unexpected/forbidden file in the miner npm tarball |

`packages/loopover-{miner,mcp}` are `.ts`-only in git: editing their `bin`/`lib` source means editing `.ts`
and nothing else — the compiled `.js`/`.d.ts` these two `build` commands produce is gitignored, never
committed, and never something a PR needs to touch. Tests (in-process imports and the CLI-harness
subprocess spawns alike) run straight off the `.ts`; `build:mcp`/`build:miner` above exist only to
validate the real publishable artifact still compiles and packs cleanly.

| rees → test | review-enrichment-service's own suite | `npm run rees:test` | any failing test under `review-enrichment/` |
| ui → openapi drift | spec check | `npm run ui:openapi:check` | committed `openapi.json` is stale (run `npm run ui:openapi`) |
| ui → openapi settings-parity | schema/type structural diff | `npm run ui:openapi:settings-parity` | `RepositorySettingsSchema` (src/openapi/schemas.ts) is missing a field the `RepositorySettings` type has |
Expand All @@ -60,7 +67,7 @@ jobs run only if their path filter matched; on push to `main`, everything runs.
Every `vitest.config.ts` in the repo (root, `vitest.workers.config.ts`, and every workspace with its own
config) wires this as `globalSetup`, so it runs once before any test file regardless of how vitest was
invoked — including a direct `npx vitest run test/unit/<file>.test.ts`, which this doc's own §6 ("Iterate,
then verify") recommends for fast iteration. `scripts/check-node-version.mjs`'s `pretest*` hooks
then verify") recommends for fast iteration. `scripts/check-node-version.ts`'s `pretest*` hooks
(`package.json`) only cover 5 high-traffic npm script names (`test`, `test:ci`, `test:coverage`,
`test:workers`, `ui:test`) as a genuinely-faster fail there (before npm even spawns vitest) — they are a
nicety on top of the globalSetup guarantee, not a substitute for it. An earlier version of this guard was
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-duration-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
- name: Pull ci.yml run stats
env:
GITHUB_TOKEN: ${{ github.token }}
run: node scripts/ci-duration-report.mjs --days=7 --output=ci-duration-report.json
run: node --experimental-strip-types scripts/ci-duration-report.ts --days=7 --output=ci-duration-report.json
- name: Write summary
run: |
node <<'NODE'
Expand Down
Loading
Loading