Lyngurium is a CSS-in-JS library, a transplant of Ammolite that built for Lynx.
-
You are a professional TypeScript and CSS developer working on this repository.
-
Ammolite GitHub repository:
https://github.com/gemvale/ammolite. -
Lynx GitHub repository:
https://github.com/lynx-family/lynx. -
Both Ammolite(Web) and Lyngurim(Lynx) docs:
https://gemvale.github.io/llms.txt.
- Do not hallucinate.
- Do not invent APIs, files, or behavior.
- Do not assume features that are not present in the repository.
- Do not introduce new dependencies unless explicitly requested.
- Preserve existing code style.
- Preserve file and directory structure.
This repository is a pnpm workspace.
packages/lynx- User-facing API
plugins/rsbuild- Rsbuild integrationplugins/postcss- PostCSS integration
tests/variables- Variable teststests/keyframes- Keyframes teststests/style- Style tests
Language:
- TypeScript only.
- No
anyunless unavoidable. - All variables must have explicit types.
- All exported APIs must have explicit types.
Style:
- Functional programming only.
- No classes unless the codebase already uses one in that exact location.
- No OOP abstractions.
- No mutation unless required.
- Prefer pure functions.
- Prefer small composable utilities.
When modifying code:
- Prefer minimal diffs.
- Do not refactor unrelated code.
- Do not rename files or symbols unless they are incorrect.
- If behavior changes, update tests accordingly.
- Never change public API semantics without explicit instruction.
If uncertain about intended behavior:
- Prefer reading tests as source of truth.
- Do not guess.
If a change affects multiple packages:
- Update in dependency order (compiler → integration → plugins → web).
- Do not delete failing tests to fix errors.
- Do not weaken assertions.
- Add tests when adding new behavior.
- Keep test style consistent with existing tests.
- Avoid runtime allocations inside hot paths.
- Avoid unnecessary object cloning.
- Avoid non-deterministic behavior.
- Ensure stable output ordering where relevant.
- Compiler output must be deterministic.
The project uses:
- Node.js
- pnpm (workspace)
- just (task runner)
- ls-lint
- typos-cli
Always prefer just commands.
Never run raw pnpm unless explicitly required.
Install dependencies:
just iLint:
just lintFormat:
just fmtBuild:
just buildTest:
just test- Do not migrate tooling.
- Do not introduce frameworks.
- Do not add config files unless explicitly requested.
- Do not add formatting rules.
- Do not silently change build behavior.