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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ permissions:

jobs:
audit:
name: Dependency audit (Node 20.19.0)
name: Dependency audit (Node LTS)
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
Expand All @@ -24,7 +24,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020
with:
node-version: 20.19.0
node-version: "lts/*"
cache: npm
- name: Install dependencies
run: npm ci
Expand All @@ -39,7 +39,7 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node: [20.19.0, "lts/*"]
node: ["lts/*"]

steps:
- name: Checkout repository
Expand Down Expand Up @@ -81,7 +81,7 @@ jobs:
npm run pack:check

packed-templates:
name: Packed template integration (Node 20.19.0)
name: Packed template integration (Node LTS)
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
Expand All @@ -90,15 +90,15 @@ jobs:
- name: Setup Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020
with:
node-version: 20.19.0
node-version: "lts/*"
cache: npm
- name: Install dependencies
run: npm ci
- name: Verify packed CLI against every template
run: npm run test:templates

peer-floor:
name: Packed Askr peer floor (0.0.53)
name: Packed Askr peer floor (0.0.85)
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
Expand All @@ -107,15 +107,15 @@ jobs:
- name: Setup Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020
with:
node-version: 20.19.0
node-version: "lts/*"
cache: npm
- name: Install dependencies
run: npm ci
- name: Verify the minimum supported Askr peer
run: npm run test:peer-floor

benchmark:
name: Performance gate (Ubuntu, Node 20.19.0)
name: Performance gate (Ubuntu, Node LTS)
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
Expand All @@ -124,7 +124,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020
with:
node-version: 20.19.0
node-version: "lts/*"
cache: npm
- name: Install dependencies
run: npm ci
Expand Down
36 changes: 36 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Repository Guidelines

## Project Structure

- `src/` contains the TypeScript CLI and library implementation. Commands live in `src/bin/`; analyzer, updater, guardrail, generator, and SSG modules are grouped by directory.
- `tests/` contains Vitest unit and contract tests. Packaging checks requiring nested installs live in `tests/integration/` and use `vitest.integration.config.ts`.
- `skills/` contains shipped agent skills; `docs/` contains command and design documentation; `benchmarks/` contains performance suites.
- Build artifacts are emitted to `dist/` and are not source files.

## Build, Test, and Development Commands

Use Node LTS and npm from the repository root. Install dependencies with `npm install` (CI uses `npm ci`).

- `npm run fmt` formats the repository; add `-- --check` for CI-style verification.
- `npm run lint` runs Vite+ linting over source, tests, benchmarks, and config files.
- `npm run typecheck` runs the TypeScript compiler without emitting files.
- `npm test` runs the standard Vitest suite; `npm run test:coverage` adds coverage reporting.
- `npm run test:peer-floor` and `npm run test:templates` run packaging integration tests.
- `npm run build` produces the distributable CLI in `dist/`; `npm run dev` rebuilds in watch mode.
- `npm run check` runs the main release checks; `npm run bench` runs performance gates.

## Coding Style and Naming

Use TypeScript with two-space indentation, semicolons, and double-quoted strings. Let Vite+ format and lint enforce style. Use kebab-case for filenames, descriptive `*.test.ts` names, and keep tests near their domain (integration tests under `tests/integration/`). Prefer small, typed helpers and explicit error messages.

## Testing Guidelines

Add regression tests with every behavior change. Use Vitest’s `test`/`describe` APIs and deterministic fixtures; avoid sleeps and network-dependent assumptions outside packaging integration tests. Run focused tests first, then `npm test`, `npm run typecheck`, and relevant integration or benchmark commands.

## Commits and Pull Requests

Use imperative, conventional commit subjects such as `fix: ...`, `test: ...`, `ci: ...`, or `chore: ...`. Keep commits focused. Pull requests should explain the behavior change, identify validation commands and results, link the relevant issue, and call out workflow, package, or release implications. Do not publish packages or create tags without explicit authorization.

## Configuration and Security

Do not commit credentials, generated `dist/` output, temporary tarballs, or local `node_modules/`. Preserve `package-lock.json` whenever dependency manifests change. Prefer `npm ci` for reproducible CI installs and review npm script-install warnings before approving new dependencies.
Loading