agentleFS
lossless-claudelossless-claude/lcm/.agents/skills/code-review/SKILL.md

code-review

Skill42 starsChanged 36 days agoMITView on GitHub

Review code changes in the lcm repository. Use when asked to review a PR, diff, or code change. Encodes project-specific rules for the SQLite daemon, connection lifecycle, type safety, performance gates, test coverage, transactions, migrations, and error handling.

  • Deletes or force-pushes

We split this skill into the rules it gives an agent

10 rules. 0 are common, 6 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 183 edited versions we read keep these.

  • 6

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do this, in order, before reading any diff hunk:

    line 20
  2. Very specific:

    When writing code rather than reviewing it, trace_path before changing any signature, return shape, or schema column.

    line 26
  3. Distinctive:

    Before reporting a review finding as fixed, verify it against the graph.

    line 34
  4. Very specific:

    All SQLite access MUST use getLcmConnection() and closeLcmConnection() from the shared connection module.

    line 40
  5. Distinctive:

    If a new connection is ever opened directly (e.g., in migration scripts), it must immediately set:

    line 47
  6. Very specific:

    No implicit any. All function parameters, return types, and object shapes must be explicitly typed.

    line 54
  7. Distinctive:

    When a response stops using queried data on a code path, the associated reads and read-only connection setup must be gated to paths that …

    line 66
  8. Very specific:

    Do not flag DatabaseSync usage in test fixtures that mock the connection — context matters.

    line 104
  9. Distinctive:

    Do not flag TypeScript-specific patterns that are idiomatic (e.g., discriminated unions, assertion functions).

    line 105
  10. Distinctive:

    Do not flag style preferences already covered by the formatter/linter.

    line 106

“Common” is measured: kept by at least 6 in 10 of the 183 edited versions of this file we could read. “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
SKILL.md

lcm Code Review

Review code changes in this repository against the project rules below. These rules exist because they have caused real production bugs — flag violations with high confidence.

<!-- review-checklist:start — generated from .github/review-checklist.md by scripts/sync-review-checklist.mjs; edit the source -->

Repository context

TypeScript SQLite daemon that persists Claude session memories across context resets. Uses Node.js DatabaseSync (synchronous SQLite API from node:sqlite) and exposes an HTTP daemon with REST routes.

codebase-memory MCP: query the graph first

A codebase-memory MCP server is running with a prebuilt graph of this repo. Use it before any text search or file view; built-in grep/regex search and line-range file reads are fallbacks, not the starting point.

Do this, in order, before reading any diff hunk:

  1. list_projects: the project name comes from the checkout path; never guess it.
  2. For every changed exported function, class, route or schema column, search_graph to locate it and trace_path to list its callers and callees. trace_path is what settles "does anything else depend on this?"; do not claim that nothing else depends on a symbol without it.
  3. get_code_snippet for the source you need; query_graph for multi-hop questions; get_architecture for orientation.

When writing code rather than reviewing it, trace_path before changing any signature, return shape, or schema column.

search_code only for literal or non-code text, or where graph coverage is thin. Fall back to built-in search only when a graph call errors, and say so.

Rules that are unreliable without the graph: #1 (a caller may own the close), #4 (collectStats() is often reached indirectly), #5 (existing tests live outside the diff), #10 (whether a named symbol still exists).

The review body opens with a short "Graph calls" list naming the tools used and the symbols traced; a review without that list is incomplete. Cite what you looked up: "nothing else calls this" is not reviewable unless you say how you checked.

Before reporting a review finding as fixed, verify it against the graph. Editing the file a finding points at is not the same as closing it. State which findings you verified and how.

Review checklist

1. Database connection pattern (highest priority)

  • All SQLite access MUST use getLcmConnection() and closeLcmConnection() from the shared connection module.
  • Flag any new DatabaseSync(...) instantiated directly in route handlers or utility files.
  • The shared connection ensures WAL mode and foreign key enforcement are set once at open time.
  • Flag double-open patterns: calling getLcmConnection() without a corresponding closeLcmConnection() on all exit paths (including error paths).

2. PRAGMA enforcement

  • If a new connection is ever opened directly (e.g., in migration scripts), it must immediately set:
    • PRAGMA journal_mode=WAL
    • PRAGMA foreign_keys=ON
  • Flag connections missing these PRAGMAs.

3. Type safety

  • No implicit any. All function parameters, return types, and object shapes must be explicitly typed.
  • Flag as any casts unless accompanied by a comment explaining why it is necessary.
  • Route handler request/response objects must use typed interfaces, not any.
  • TypeScript conventions: node: prefix for Node.js built-in imports, import type { ... } for type-only imports, ESM-style imports with .js extensions in TS files.

4. collectStats() performance

  • collectStats() runs full-table scans, so its cost grows with the database. It must NEVER be called in:
    • HTTP request handlers
    • Any path that runs more than once per user action
    • Startup initialization (lazy evaluation only)
  • Flag any collectStats() call that is not in a dedicated stats endpoint or background job.
  • When a response stops using queried data on a code path, the associated reads and read-only connection setup must be gated to paths that still consume them; required capture writes must be preserved.

5. Test coverage

  • New HTTP routes must have corresponding tests in test/daemon/routes/.
  • Tests should cover: happy path, missing required fields (400), and resource-not-found (404).
  • Flag PRs adding routes without tests.

6. SQLite transaction safety

  • Any operation that modifies more than one table must be wrapped in BEGIN/COMMIT.
  • Flag multi-table writes without transactions — they risk partial writes on crash.

7. Migration safety

  • Schema migrations must be additive only: ADD COLUMN, CREATE TABLE, CREATE INDEX.
  • Flag DROP COLUMN, DROP TABLE, ALTER COLUMN type, or any destructive DDL.
  • Migrations must be idempotent (CREATE TABLE IF NOT EXISTS, CREATE INDEX IF NOT EXISTS).

8. Error handling

  • Route handlers must catch errors and return structured JSON: { error: string, code?: string }.
  • Flag res.send(e.message) or unstructured error responses that leak stack traces.
  • Unhandled promise rejections in route handlers are bugs — flag missing try/catch in async handlers.

9. Daemon client conventions

  • Daemon HTTP requests must send the Authorization: Bearer <token> header; the token is read via readAuthToken(join(homedir(), ".lossless-claude", "daemon.token")). Auth is mandatory; a 401 arrives as a normal HTTP response, not a socket error — flag client code paths that drop the header or mishandle 401s.
  • DaemonClient throws Error objects annotated with the HTTP status and parsed JSON body (e.status, e.body) on non-2xx responses — flag client code that swallows non-2xx responses or loses the status/body annotations.

10. Source references in prose

  • Point at symbols, not line numbers: CompactionEngine.persistCompactionEvent, not src/compaction.ts:1331. Line numbers rot on any edit above them, and a stale one still looks plausible; a renamed symbol is greppable.
  • Flag any path/to/file.ts:NNN in Markdown, doc comments, or commit messages, unless pinned to an immutable ref (a commit SHA, or a labelled review-finding identifier).
  • Applies to docs/, docs/design/, AGENTS.md, and skill files.

What to skip

  • Do not flag DatabaseSync usage in test fixtures that mock the connection — context matters.
  • Do not flag TypeScript-specific patterns that are idiomatic (e.g., discriminated unions, assertion functions).
  • Do not flag style preferences already covered by the formatter/linter.
<!-- review-checklist:end -->

Download now (ZIP)

  • Other versions193 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 193

    1. mattpocock/skills★ 309ksame name
    2. TheAlgorithms/Python★ 226ksame name
    3. microsoft/vscode★ 194ksame name
    4. github/spec-kit★ 145ksame name
    5. ggml-org/llama.cpp★ 133ksame name
    6. shareAI-lab/analysis_claude_code★ 80ksame name
    7. shareAI-lab/learn-claude-code★ 80ksame name
    8. vectorize-io/hindsight★ 57ksame name
    9. dbeaver/dbeaver★ 52ksame name
    10. roboflow/supervision★ 51ksame name

    183 more not listed

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • Used alongsideProjects with it also use add-new-model, azsdk-common-sdk-breaking-change and 9 more.

    Other files people use alongside this one.

    Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
    • PydanticSkill

      add-new-model

      Add support for a newly-released language or image generation model in pydantic-ai (e.g. openai:gpt-5.6, anthropic:claude-sonnet-5, openai:gpt-image-2). Use when a provider ships a new model id and you need to wire literals, profile flags, adapters, and tests to recognize it. Handles SDK-lag, gateway list conventions, capability probing, and direct image-model geometry.

      Also in 9 projects that use this

    • Microsoft AzureSkill

      azsdk-common-sdk-breaking-change

      Detect and mitigate SDK Breaking changes for an SDK package which is generated from TypeSpec. WHEN: "Detect SDK breaking changes for a service", "Detect SDK breaking changes for an SDK package", "Detect and mitigate SDK breaking changes for a service", "Detect and mitigate SDK breaking changes for an SDK package". INVOKES: skill: azsdk-common-generate-sdk-locally; MCP tools: azure-sdk-mcp:azsdk_customized_code_update, azure-sdk-mcp:azsdk_package_detect_breaking_change.

      Also in 4 projects that use this

    • ww-w-aiSkill

      bkend-auth

      bkend.ai authentication guide. Signup, login, JWT tokens, sessions, role-based access control, and password management with bkend.ai BaaS. Triggers: bkend auth, bkend login, bkend signup, JWT, session, RBAC, password, bkend 인증, 로그인, 회원가입, bkend認証, ログイン, 新規登録, bkend认证, 登录, 注册, autenticacion bkend, authentification bkend, bkend-Auth Do NOT use for: data operations (use $bkend-data), file storage (use $bkend-storage).

      Also in 4 projects that use this

    • ww-w-aiSkill

      bkend-cookbook

      bkend.ai cookbook with step-by-step tutorials and example projects. Build a todo app, blog, e-commerce store, and more with bkend.ai BaaS. Triggers: bkend cookbook, bkend tutorial, bkend example, todo app, blog app, bkend 쿡북, bkend 튜토리얼, 예제 프로젝트, bkendクックブック, チュートリアル, bkend教程, 示例项目, tutorial bkend, tutoriel bkend, bkend-Tutorial, ricettario Do NOT use for: initial setup (use $bkend-quickstart), specific features (use $bkend-data/auth/storage).

      Also in 4 projects that use this

    • dzhngSkill

      close-spec

      When a spec under specs/<feature>/ is done shipping (a write-spec build, or any planned task that produced a spec), archive it to specs/done/ and rewrite it from a build-plan into a durable rationale — the why, the principles, the invariants — pointing back to the real code for the how. Use when implementation has landed and the plan no longer matches what shipped, or the user says a feature/spec is finished. Pairs with [write-spec](../write-spec/SKILL.md) (the plan this closes) and [review](../review/SKILL.md) (run before closing).

      Also in 4 projects that use this

    • dzhngSkill

      design-with-images

      Explore UI and visual design with image generation, then iterate the real implementation against the user-selected concept. Use when brainstorming visual directions, offering mockup variants, or implementing an approved generated design; do not stop at the mockups or the first code approximation.

      Also in 4 projects that use this

    • +5 more from ww-w-ai
  • In this repository6 other files it gives its agents.

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.