agentleFS
mrsekutmrsekut/ccron/CLAUDE.md

ccron

CLAUDE.md0 starsChanged 8 months agoMITView on GitHub

Use Bun instead of Node.js, npm, pnpm, or vite.

  • Reads credentials

The file

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

10 rules. About 0 are common, 1 is distinctive, and 9 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 9

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Default to using Bun instead of Node.js.

    line 7
  2. Very specific:

    Use bun <file> instead of node <file> or ts-node <file>

    line 9
  3. Very specific:

    Use bun install instead of npm install or yarn install or pnpm install

    line 11
  4. Very specific:

    Use bun run <script> instead of npm run <script>

    line 12
  5. Very specific:

    Prefer Bun.file over node:fs's readFile/writeFile

    line 18
  6. Very specific:

    Use Bun.$ for shell commands instead of execa

    line 19
  7. Very specific:

    Use util.parseArgs for CLI argument parsing

    line 20
  8. Very specific:

    Use bun test to run tests.

    line 24
  9. Distinctive:

    Read (I/O) -> parse -> plan -> render (pure) -> execute (I/O).

    line 55
  10. Very specific:

    Keep parsing, planning and rendering pure.

    line 57

≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.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
CLAUDE.md

Default to using Bun instead of Node.js.

  • Use bun <file> instead of node <file> or ts-node <file>
  • Use bun test instead of jest or vitest
  • Use bun install instead of npm install or yarn install or pnpm install
  • Use bun run <script> instead of npm run <script>
  • Use bunx <package> <command> instead of npx <package> <command>
  • Bun automatically loads .env, so don't use dotenv.

APIs

  • Prefer Bun.file over node:fs's readFile/writeFile
  • Use Bun.$ for shell commands instead of execa
  • Use util.parseArgs for CLI argument parsing

Testing

Use bun test to run tests.

import { test, expect } from 'bun:test';

Project Structure

src/
  cli.ts           Entry point (bin): apply / status / run
  commands/        apply.ts, status.ts, run.ts (CLI layer)
  domain.ts        Domain types and smart constructors (JobName, Manifest, Plan, ...)
  manifest.ts      ccron.json -> validated Manifest (pure)
  schedule.ts      Cron expression parser -> CalendarInterval (pure)
  plan.ts          plan(manifest, actual) -> actions or conflicts (pure)
  generator.ts     Shell script and plist rendering (pure)
  format.ts        Text output for plans, owners, conflicts (pure)
  workflow.ts      prepare(): read -> parse -> read state -> plan, shared by apply and status
  state.ts         Read installed jobs and their owner from LaunchAgents (I/O)
  execute.ts       Apply a Plan to disk and launchd (I/O)
  launchd.ts       launchctl operations (I/O)
  paths.ts         Generated file locations, injected for tests
  testing/         Fake launchd for tests
skills/ccron/
  SKILL.md         Claude Code skill: edit ccron.json and apply it
docs/history/      Design decisions, newest first by date

Architecture

Read (I/O) -> parse -> plan -> render (pure) -> execute (I/O).

Keep parsing, planning and rendering pure. Anything that touches the machine (home, generated paths, launchctl, the claude location) is passed in through Deps so commands can run against a temporary directory and a fake launchd.

The manifest is the single source of truth. Do not add persisted state under ~/.config; read the actual state from the generated files and launchctl.

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.