agentleFS
PunGrumpyPunGrumpy/logixlysia/AGENTS.md

logixlysia

AGENTS.md275 starsChanged 4 months agoMITView on GitHub

Bun 1.3.14 workspaces + Turborepo. Published package: packages/logixlysia (Elysia logging plugin). Other workspaces: apps/docs (Blume docs site), apps/elysia (playground), packages/bench (vitest benchmarks). Tests live in packages/logixlysia/__tests__/<area>/*.test.ts (bun:test; helpers in __tests__/_helpers/). Any change under packages/logixlysia/ needs a changeset: .changeset/<slug>.md with 'logixlysia': patch|minor. Conventional commits (fix(output): …). Public API changes must update the API snapshot (bun test --update-snapshots __tests__/api). This project uses Ultracite, a zero-config preset that enforces strict code quality standards through automated formatting and linting. Oxlint + Oxfmt (the underlying…

  • Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.

    Of the AGENTS.md files we read, the 31,700 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.

  • In this repository3 other files it gives its agents.

The file

Show its rules and text

We split this AGENTS.md into the rules it gives an agent

33 rules. About 0 are common, 18 are distinctive, and 15 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈18

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 15

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Write code that is accessible, performant, type-safe, and maintainable.

    line 33
  2. Distinctive:

    Use explicit types for function parameters and return values when they enhance clarity

    line 37
  3. Very specific:

    Prefer unknown over any when the type is genuinely unknown

    line 38
  4. Very specific:

    Use const assertions (as const) for immutable values and literal types

    line 39
  5. Distinctive:

    Use meaningful variable names instead of magic numbers - extract constants with descriptive names

    line 41
  6. Distinctive:

    Use arrow functions for callbacks and short functions

    line 45
  7. Very specific:

    Prefer for...of loops over .forEach() and indexed for loops

    line 46
  8. Very specific:

    Use optional chaining (?.) and nullish coalescing (??) for safer property access

    line 47
  9. Distinctive:

    Prefer template literals over string concatenation

    line 48
  10. Distinctive:

    Use destructuring for object and array assignments

    line 49
  11. Very specific:

    Use const by default, let only when reassignment is needed, never var

    line 50
  12. Very specific:

    Always await promises in async functions - don't forget to use the return value

    line 54
  13. Very specific:

    Use async/await syntax instead of promise chains for better readability

    line 55
  14. Distinctive:

    Don't use async functions as Promise executors

    line 57
  15. Very specific:

    Remove console.log, debugger, and alert statements from production code

    line 61
  16. Very specific:

    Use try-catch blocks meaningfully - don't catch errors just to rethrow them

    line 63
  17. Distinctive:

    Prefer early returns over nested conditionals for error cases

    line 64
  18. Distinctive:

    Keep functions focused and under reasonable cognitive complexity limits

    line 68
  19. Distinctive:

    Use early returns to reduce nesting

    line 70
  20. Distinctive:

    Prefer simple conditionals over nested ternary operators

    line 71
  21. Very specific:

    Add rel="noopener" when using target="_blank" on links

    line 76
  22. Very specific:

    Avoid dangerouslySetInnerHTML unless absolutely necessary

    line 77
  23. Very specific:

    Don't use eval() or assign directly to document.cookie

    line 78
  24. Distinctive:

    Avoid spread syntax in accumulators within loops

    line 83
  25. Distinctive:

    Use top-level regex literals instead of creating them in loops

    line 84
  26. Distinctive:

    Prefer specific imports over namespace imports

    line 85
  27. Distinctive:

    Avoid barrel files (index files that re-export everything)

    line 86
  28. Very specific:

    Write assertions inside it() or test() blocks

    line 92
  29. Distinctive:

    Avoid done callbacks in async tests - use async/await instead

    line 93
  30. Very specific:

    Don't use .only or .skip in committed code

    line 94
  31. Very specific:

    Keep test suites reasonably flat - avoid excessive describe nesting

    line 95
  32. Distinctive:

    Meaningful naming: - Use descriptive names for functions, variables, and types

    line 102
  33. Distinctive:

    Documentation: - Add comments for complex logic, but prefer self-documenting code

    line 106

≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
AGENTS.md

Logixlysia: working in this repo

Bun 1.3.14 workspaces + Turborepo. Published package: packages/logixlysia (Elysia logging plugin). Other workspaces: apps/docs (Blume docs site), apps/elysia (playground), packages/bench (vitest benchmarks).

Verify your work

WhatCommandExpect
Lint + format checkbun run lintexit 0
Auto-formatbun run formatexit 0
Typecheckbun run typecheckexit 0
Testscd packages/logixlysia && bun run build && bun testall pass (coverage is on by default; the API-snapshot test needs dist/)
Buildbun run builddist/ for 15 entries

Tests live in packages/logixlysia/__tests__/<area>/*.test.ts (bun:test; helpers in __tests__/_helpers/). Any change under packages/logixlysia/ needs a changeset: .changeset/<slug>.md with 'logixlysia': patch|minor. Conventional commits (fix(output): …). Public API changes must update the API snapshot (bun test --update-snapshots __tests__/api).

Ultracite Code Standards

This project uses Ultracite, a zero-config preset that enforces strict code quality standards through automated formatting and linting.

Quick Reference

  • Format code: bun x ultracite fix
  • Check for issues: bun x ultracite check
  • Diagnose setup: bun x ultracite doctor

Oxlint + Oxfmt (the underlying engine) provides robust linting and formatting. Most issues are automatically fixable.


Core Principles

Write code that is accessible, performant, type-safe, and maintainable. Focus on clarity and explicit intent over brevity.

Type Safety & Explicitness

  • Use explicit types for function parameters and return values when they enhance clarity
  • Prefer unknown over any when the type is genuinely unknown
  • Use const assertions (as const) for immutable values and literal types
  • Leverage TypeScript's type narrowing instead of type assertions
  • Use meaningful variable names instead of magic numbers - extract constants with descriptive names

Modern JavaScript/TypeScript

  • Use arrow functions for callbacks and short functions
  • Prefer for...of loops over .forEach() and indexed for loops
  • Use optional chaining (?.) and nullish coalescing (??) for safer property access
  • Prefer template literals over string concatenation
  • Use destructuring for object and array assignments
  • Use const by default, let only when reassignment is needed, never var

Async & Promises

  • Always await promises in async functions - don't forget to use the return value
  • Use async/await syntax instead of promise chains for better readability
  • Handle errors appropriately in async code with try-catch blocks
  • Don't use async functions as Promise executors

Error Handling & Debugging

  • Remove console.log, debugger, and alert statements from production code
  • Throw Error objects with descriptive messages, not strings or other values
  • Use try-catch blocks meaningfully - don't catch errors just to rethrow them
  • Prefer early returns over nested conditionals for error cases

Code Organization

  • Keep functions focused and under reasonable cognitive complexity limits
  • Extract complex conditions into well-named boolean variables
  • Use early returns to reduce nesting
  • Prefer simple conditionals over nested ternary operators
  • Group related code together and separate concerns

Security

  • Add rel="noopener" when using target="_blank" on links
  • Avoid dangerouslySetInnerHTML unless absolutely necessary
  • Don't use eval() or assign directly to document.cookie
  • Validate and sanitize user input

Performance

  • Avoid spread syntax in accumulators within loops
  • Use top-level regex literals instead of creating them in loops
  • Prefer specific imports over namespace imports
  • Avoid barrel files (index files that re-export everything)

Testing

  • Write assertions inside it() or test() blocks
  • Avoid done callbacks in async tests - use async/await instead
  • Don't use .only or .skip in committed code
  • Keep test suites reasonably flat - avoid excessive describe nesting

When Oxlint + Oxfmt Can't Help

Oxlint will catch most issues automatically. Focus your attention on:

  1. Business logic correctness - Oxlint can't validate your algorithms
  2. Meaningful naming - Use descriptive names for functions, variables, and types
  3. Architecture decisions - Component structure, data flow, and API design
  4. Edge cases - Handle boundary conditions and error states
  5. User experience - Accessibility, performance, and usability considerations
  6. Documentation - Add comments for complex logic, but prefer self-documenting code

Most formatting and common issues are automatically fixed by Oxlint + Oxfmt. Run bun x ultracite fix before committing to ensure compliance.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.