52 lines
2.9 KiB
Markdown
52 lines
2.9 KiB
Markdown
At the start of every new session, run `damem recall` in the terminal and treat
|
|
its output as the context for this repository. If the `damem` command is not
|
|
found, read [INSTALL.md](https://github.com/cunarist/damem/blob/main/INSTALL.md)
|
|
and follow it before reasoning or responding.
|
|
|
|
# Pull requests
|
|
|
|
Land every change through a pull request. Immediately after creating one,
|
|
comment `@bot` to request an AI-bot review. Wait for green CI and the bot's
|
|
approval on the current head before merging. Never merge without the user's
|
|
explicit permission.
|
|
|
|
# Runtime and checks
|
|
|
|
The action's TypeScript runs directly on the job image's Node.js (24.2 or
|
|
newer; `package.json` has no `engines`, the `node:24-bookworm` image pins it),
|
|
which strips the types itself: there is no build step and no runtime
|
|
dependency. Keep the sources to erasable syntax and `.ts` imports, which
|
|
`tsconfig.json` enforces. Its strictness set is fixed and leaves
|
|
`exactOptionalPropertyTypes` off
|
|
([.agents/memory/ts-only-files-and-imports.md](.agents/memory/ts-only-files-and-imports.md)).
|
|
Checks use Vite+: `vp check` formats, lints, and type-checks, and `vp test`
|
|
runs Vitest. Unit tests sit next to the code as `src/*.test.ts`;
|
|
repository-level tests live in `tests/`.
|
|
|
|
A `#` alias in `package.json` `imports` may point anywhere and owns its
|
|
target: an alias to a folder's `index.ts` owns that folder and everything
|
|
below it; an alias to any other file owns only that file. No overlap: no file
|
|
may be owned by 2 aliases, so no alias inside another alias's area and no 2
|
|
aliases with the same target. Outside an area, only the exact alias reaches
|
|
it; a deeper alias specifier or a relative path into the area is a bypass.
|
|
Inside an area, relative imports of siblings and subfolders are free. `../`
|
|
is banned in every file, owned or not
|
|
(`import/no-relative-parent-imports`). Files no alias owns need no `index.ts`
|
|
and no alias, and import `./` siblings and subfolders freely. The one alias
|
|
is `#testing` (`./src/testing/index.ts`): every test imports it by alias, and
|
|
`tests/` reaches `src/` only through it. Local convention, stricter than the
|
|
general rule above: in this repo, aliases point only at a direct subfolder of
|
|
`src/` (`"#helpers": "./src/helpers/index.ts"`), and code outside `src/` uses
|
|
`./` relative imports. `scripts/` is flat: one file per
|
|
tool, no subfolders and no `index.ts`, imported directly by file path
|
|
([.agents/memory/imports-aliases-barrels.md](.agents/memory/imports-aliases-barrels.md)).
|
|
|
|
The only config files are `package.json`, `tsconfig.json`, and
|
|
`vite.config.ts`, plus `package-lock.json`. Repo-local lint rules and the rule
|
|
list live in `scripts/project-lint.ts`. Lint disable comments are not allowed;
|
|
fix the source instead.
|
|
|
|
The composite action uses npm only to install the externally distributed
|
|
Claude Code, Codex, and OpenCode command-line tools; do not treat those
|
|
vendor executables as repository TypeScript dependencies.
|