Anarlog Agent Rules

An AI notepad for meetings, with desktop, mobile, and developer interfaces.

Overview

Anarlog gives each TypeScript and Rust component its own checks. It separates desktop JavaScript tests from scheduled native jobs, requires evidence from the exact release candidate, and names generated files and database constraints. Simple CLI screens are told not to adopt reducer and effect machinery they do not need.

Documents

├── 
├──  · imports ./AGENTS.md
├── .agents
│   └── skills
│       ├── anarlog-workflow
│       │   └── 
│       └── release-new-version
│           └── 
├── .github
│   └── 
├── **
│   └── AGENTS.mdNearest component instructions
├── apps
│   ├── api
│   │   └── 
│   ├── mobile
│   │   ├── 
│   │   └──  · imports AGENTS.md
│   └── web
│       ├── content
│       │   └── 
│       └── 
├── crates
│   ├── api-ticket
│   │   └── src
│   │       └── github
│   │           └── 
│   ├── chrome-native-host
│   │   └── 
│   ├── cloudsync
│   │   └── 
│   ├── db-app
│   │   └── 
│   ├── db-change
│   │   └── 
│   ├── db-core
│   │   └── 
│   ├── db-execute
│   │   └── 
│   ├── db-migrate
│   │   └── 
│   ├── db-reactive
│   │   └── 
│   ├── mobile-bridge
│   │   └── 
│   ├── notification-linux
│   │   └── 
│   ├── notification-macos
│   │   └── 
│   ├── notification-windows
│   │   └── 
│   └── template-app
│       └── 
├── docs
│   └── 
├── e2e
│   └── blackbox
│       └── 
├── enterprise
│   └── 
├── examples
│   └── plugins
│       └── 
├── packages
│   ├── changelog
│   │   └── content
│   │       └── 
│   └── db
│       └── 
└── plugins
    ├── db
    │   └── 
    ├── fs-sync
    │   └── src
    │       └── 
    ├── hooks
    │   └── 
    └── 

Techniques in this file

01 / Verification by change type

Match checks to the affected component

The verification table covers desktop, web, API, CLI, mobile, databases, billing, and a separate enterprise workspace. It warns that workflow path filters can miss consumers of shared packages.

Source excerpt starting at line 31.
Treat `.github/workflows/` and their composite actions as the source of truth for commands, setup, features, targets, and exclusions. Re-read them when changing this guide or CI. Run locally reproducible checks before committing; include affected consumers of shared packages even when workflow path filters miss them. A skipped workflow/job is not passing coverage.

02 / Verification by change type

Verify the job and the candidate

Native desktop and mobile coverage is not implied by a green PR result. Release verification requires the relevant job on the recorded candidate SHA.

Source excerpt starting at line 70.
- Desktop native CI (macOS, Windows, Linux x86_64/ARM64, and Swift) runs only on the daily schedule and `workflow_dispatch`, including release-candidate verification. PRs and pushes to `main` run desktop JS and i18n checks. Mobile iOS, Android, and watchOS native jobs also skip PRs. Check each required job and SHA, not only the aggregate green result.

03 / Generated file guards

Name generated outputs and their owners

OpenAPI, native bindings, permissions, and translations each have an owning generation command. Stable regeneration is required; hand-editing output would leave the source of truth unchanged.

Source excerpt starting at line 61.
- Regenerate native bindings and permissions using their owning Rust build/generator; do not hand-edit generated output. The macOS desktop job checks `plugins/db/js/bindings.gen.ts`, `plugins/db/permissions/autogenerated`, and `plugins/db/permissions/schemas/schema.json` for drift. Mobile bridge generation belongs to `cargo xtask mobile-bridge`.

04 / Architecture as narrative

Design migrations for the installed older build

Nightly and stable share a database. The file requires additive migrations by default and an explicit marker when older versions must refuse to open a newer schema.

Source excerpt starting at line 82.
- New SQLite migrations must be downgrade-safe (older builds tolerate newer schemas): additive only, new columns nullable or with a DEFAULT. If a migration can't be downgrade-safe, add a `-- breaking` line to the leading comment block of its `.sql` file so older builds refuse the database with an update prompt. Nightly and stable desktop builds share one database, so a breaking migration published in Nightly locks stable out until stable ships it.

05 / Behavioral framing

Scale command architecture to its state

The reducer/effect/runtime split is conditional on actual orchestration or state complexity. Simple browse and select flows are directed to a smaller structure.

Source excerpt starting at line 97.
Use the full reducer/effect/runtime split only when the command has async orchestration, a multi-step workflow, or substantial state transitions that benefit from reducer-style tests.

Ideas for your repo

  1. Map changed components to complete validation jobs, including setup.
  2. Report skipped checks separately from passing checks.
  3. Bind release evidence to one immutable candidate.
  4. Name generated files together with the command that owns them.
  5. Document how schema changes affect older installed clients.
Sponsored byModem

Give your agents the whole story.

These instructions explain how to work in Anarlog. Modem shows your agents what customers said, who is affected, and what changed.

See how Modem works