You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Architectural refactor of the cross-project knowledge story. Locks the
mental model into two distinct, both 100%-user-owned layers:
nucleus = your MEMORY of every session (raw, low bar, project-tagged)
→ ~/.atom/nucleus/projects/<slug>/learnings.jsonl
learnings = your PLAYBOOK of patterns to carry forward (curated, high bar)
→ ~/.atom/learnings/<type>/<key>.md
→ auto-copied into every new project you bootstrap
Both are the user's data. Nothing leaves their machine without explicit
action. Optional sync goes to *their own* private GitHub repos.
Storage rename: ~/.nucleus/ → ~/.atom/nucleus/ (one-shot migration runs
on first nucleus invocation; mv the directory if the new location is
empty and the legacy one exists).
Promote target rename: nucleus promote <id> now writes into the user's
~/.atom/learnings/, NOT into the atom repo's learnings/ directory.
That maintainer-curated `learnings/` directory is gone — it conflated
maintainer wisdom with user data and broke the privacy model.
New CLIs:
bin/learnings/ Mirror of nucleus shape: init / list / show /
remove / sync. Stores at ~/.atom/learnings/.
The promote target for `nucleus promote`.
bin/atom/ Top-level help dispatcher. `atom --help` (or
`atom`) prints the unified command table for
every CLI in the system. No subcommand routing;
pure discovery surface.
./atom-setup now installs 5 CLIs globally (was 3): atom, atom-setup,
nucleus, learnings, model-race. Cheatsheet at end nudges the user
to run `nucleus init && learnings init` once per machine.
scripts/copy-learnings.mjs sources from ~/.atom/learnings/ by default
(was ./learnings). atom-setup writer.js does the same.
scaffold/AGENTS.md Tooling section rewritten with the nucleus-vs-
learnings distinction unmissable. Two clearly labeled sections, the
generalization test framed at the promotion bridge, setup nudge
documented for AI tools.
scaffold/.claude/skills/nucleus/SKILL.md updated with the same two-
layer framing and a setup-nudge instruction for first-session
detection.
README.md gets a nucleus-vs-learnings comparison table at the top of
the "What is nucleus" section, replacing the metaphor-first prose.
All package versions bumped to 0.1.1.
CHANGELOG.md gains a [0.1.1] entry covering the rename, the user-
owned shift, the two new CLIs, and the cheatsheet nudges.
Regression suite (scripts/test-atom-setup.sh) version assertion
bumped to 0.1.1; all 57 assertions still pass locally.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+30-2Lines changed: 30 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,14 +6,41 @@ All notable changes to atom land here. Format: [Keep a Changelog](https://keepac
6
6
7
7
Tracking work targeting v0.2. See `docs/planning/` for in-flight build plans.
8
8
9
+
## [0.1.1] — 2026-05-06
10
+
11
+
Architectural refactor of the nucleus + learnings story. **No new features**, but the conceptual model is now coherent and the storage layout is namespaced under `~/.atom/`.
12
+
13
+
### Changed
14
+
15
+
-**`learnings` is now user-owned, not maintainer-curated.** Previously, `learnings/` was a directory in the atom repo where the maintainer's curated wisdom lived; new projects inherited it at clone time. That conflated maintainer content with user data and confused the privacy story. Now `learnings` is the user's *own* playbook, lives at `~/.atom/learnings/` on their machine, and follows them across every new project they bootstrap. atom ships the system; the content is theirs alone. Optional sync to *their* private GitHub repo (separate from the nucleus sync repo).
16
+
-**Storage moved from `~/.nucleus/` to `~/.atom/nucleus/`.** Namespace consistency with `~/.atom/learnings/` and any future per-machine atom state (config, cache, etc.). Migration is one-shot: `nucleus` detects `~/.nucleus/` on first run and renames it to `~/.atom/nucleus/`.
17
+
-**`nucleus promote <id>`** now writes into `~/.atom/learnings/<type>/<key>.md` (the user's playbook) instead of the atom repo's `learnings/`.
18
+
-**`scripts/copy-learnings.mjs`** sources from `~/.atom/learnings/` by default (was `./learnings`).
19
+
-**`atom-setup` writer** copies learnings from the user's `~/.atom/learnings/` into the new project, filtered by stack tags. No-op when the user hasn't run `learnings init` or hasn't promoted anything yet.
20
+
-**README, AGENTS.md, planning docs** rewritten to make the nucleus-vs-learnings distinction unmissable. Both layers framed as "100% yours."
21
+
22
+
### Added
23
+
24
+
-**`learnings` CLI** at `bin/learnings/` — `init`, `list`, `show`, `remove`, `sync`. Mirrors the nucleus CLI's shape. Promote target for `nucleus promote`.
25
+
-**`atom` CLI** at `bin/atom/` — top-level help dispatcher. `atom --help` (or `atom`) prints the unified command table for every CLI in the atom system. No subcommand routing; pure discovery surface.
26
+
-**Setup nudges** in the post-`atom-setup` cheatsheet and Claude nucleus skill: prompt the user to run `nucleus init && learnings init` once per machine.
27
+
28
+
### Removed
29
+
30
+
-**`atom/learnings/`** (the maintainer-curated directory) — removed from the repo. The system (taxonomy doc, copy script, promote flow) stays; the content is no longer atom's.
-**`learnings/`** — graduation layer for nucleus entries that pass the generalisation test. Files inherit into bootstrapped projects via `scripts/copy-learnings.mjs`, filtered by stack tags from `docs/LEARNINGS_TAXONOMY.md`.
18
45
-**`model-race`** — parallel AI model comparison via Git worktrees. Subcommands: `start`, `status`, `spec`, `launch`, `score`, `judge`, `merge`, `abort`. Weighted scorecard (pass-fail and numeric-min metrics), opt-in LLM judge, configurable per-project via `model-race.config.json`.
19
46
-**Docker** — four optional tiers in `extras/docker/`: None, Dockerfile only, + compose, + devcontainer. Smart-defaulted from stack and deploy target. Production-grade defaults: multi-stage build, non-root user, healthcheck, pinned base image, BuildKit cache mounts, multi-arch CI workflow.
@@ -30,5 +57,6 @@ First feature-complete release. atom is a project-starter template with cross-pr
30
57
- Stack presets currently include `nextjs` only. Other stacks fall back to the generic scaffold and will land per-stack in v0.2.
31
58
- Constitution generation is a TODO marker in the cheatsheet; v0.2 will wire `speckit-constitution` automatically.
The first command appends an entry; the second should find it. Once verified you can delete the test entry by editing `~/.nucleus/projects/<slug>/learnings.jsonl` directly.
68
+
The first command appends an entry; the second should find it. Once verified you can delete the test entry by editing `~/.atom/nucleus/projects/<slug>/learnings.jsonl` directly.
|**`nucleus`**|Cross-project learning store at `~/.nucleus`. Captures durable lessons mid-session; surfaces them in any future project. JSONL storage, optional GitHub sync, keyword + structured filter search. |
96
-
|**`learnings/`**|Graduation layer for `nucleus` entries that prove generalizable. Files inherit into every bootstrapped project, filtered by stack tags. |
95
+
|**`nucleus`**|Your **memory** — raw notes from every session, project-tagged, captured fast. Lives at `~/.atom/nucleus/`. JSONL storage, keyword + structured filter search. Optionally synced to your own private GitHub repo. |
96
+
|**`learnings`**|Your **playbook** — patterns you've decided to carry forward. Lives at `~/.atom/learnings/`. Auto-copied into every new project you bootstrap (filtered by stack tags). Optionally synced to your own private GitHub repo. |
97
97
|**`model-race`**| Parallel AI model comparison via Git worktrees. Race the same spec through claude/codex/gemini, score with weighted metrics, optional LLM judge, merge the winner. |
98
98
|**Docker, optional**| Four tiers: None / Dockerfile / + compose / + devcontainer. Smart-defaulted from your stack. Production-grade out of the box (multi-stage, non-root, healthcheck, multi-arch CI). |
99
99
|**Multi-AI tool support**|`AGENTS.md` is the canonical spec; `CLAUDE.md` / `GEMINI.md` / `.cursorrules` / `.github/copilot-instructions.md` are forwarders. Claude, Codex CLI, Gemini CLI, Cursor, and Copilot all read the same instructions. |
@@ -104,32 +104,41 @@ Plus `--resume` (pick up an interrupted setup), `--dry-run` (preview without wri
104
104
105
105
## What is nucleus?
106
106
107
-
**nucleus is atom's cross-project learning store.** It's a CLI (`nucleus add`, `nucleus search`, `nucleus promote`, `nucleus sync`) backed by a JSONL file at `~/.nucleus/projects/<slug>/learnings.jsonl` on your machine. You capture durable lessons mid-session — pitfalls, patterns, architecture decisions with rationale — and they surface in any future session, in any project, with `nucleus search`.
107
+
atom ships with two layers of cross-project knowledge. They're easy to confuse, so the distinction matters:
108
108
109
-
Think of it as **the brain of your project work that travels across every clone.** Every atom has a nucleus at its center holding its identity; `nucleus` does the same for your projects: the core knowledge that makes each project what it is.
109
+
||**nucleus**|**learnings**|
110
+
|---|---|---|
111
+
| What it is | Your **memory** of every session | Your **playbook** of patterns to carry forward |
112
+
| Bar to capture | Low — "worth noting" | High — "worth carrying into every future project" |
| Lives where |`~/.atom/nucleus/`|`~/.atom/learnings/`|
115
+
| Auto-copied to new projects? | No | Yes (filtered by stack tags) |
116
+
| Optional sync | Your own private GitHub repo | Your own private GitHub repo (separate from nucleus) |
117
+
118
+
**Both are 100% yours.** Nothing leaves your machine without your explicit action. atom is the system; the content is yours.
110
119
111
120
### Why it exists
112
121
113
122
Code can be rewritten. The lessons you learned writing it are harder to recover. They sit in your head, get half-remembered, and quietly disappear when you start the next project. Most coding sessions teach you something — a pitfall, a pattern, an architecture decision with rationale. Without a capture system, that learning evaporates the moment the session ends.
114
123
115
-
`nucleus` catches those lessons mid-session and lets future sessions, in any project, benefit from them. Together with atom's structure, you get more than a starter template: code you can rewrite, plus knowledge you can't.
124
+
`nucleus` catches those lessons mid-session, low bar, project-tagged. `learnings` is the curated subset you've decided to carry forward — auto-copied into every new project you bootstrap. Together they give you code you can rewrite**plus knowledge you can't**.
The first arrow is automated when Claude is your AI (claude-managed capture mode is the default). The second is human-in-the-loop — `nucleus promote` opens `$EDITOR` so you can refine the draft before it lands. The third is rare and intentional.
141
+
The first arrow is automated when Claude is your AI (`claude-managed` capture mode is the default). The second is human-in-the-loop — `nucleus promote` opens `$EDITOR` so you can refine the draft before it lands. The third runs every time you bootstrap a project from atom — your playbook follows you.
133
142
134
143
### Capture modes
135
144
@@ -139,7 +148,7 @@ The first arrow is automated when Claude is your AI (claude-managed capture mode
139
148
|**`auto-timer`**| A background process drains a session log every N minutes (5/15/30/60). For users who don't want to think about it. |
140
149
|**`manual`**| Claude surfaces "worth capturing?" suggestions; you run `nucleus add` yourself. For users who want full control. |
141
150
142
-
Picked at `atom-setup` time, configurable later via `~/.nucleus/config.json`.
151
+
Picked at `atom-setup` time, configurable later via `~/.atom/nucleus/config.json`.
143
152
144
153
---
145
154
@@ -151,7 +160,7 @@ Picked at `atom-setup` time, configurable later via `~/.nucleus/config.json`.
└── extras/ Opt-in stack presets, copied based on user choice
222
231
├── docker/ Dockerfile, compose, devcontainer, CI
@@ -300,7 +309,7 @@ atom/
300
309
atom evolves with every project that's shipped from it. The flow:
301
310
302
311
1.**During the project**, capture learnings via `nucleus add` (or `docs/INBOX.md` if you prefer manual).
303
-
2.**At the end of the project**, run `nucleus promote <id>` for entries that pass the generalization test. Files land in `atom/learnings/<type>/<slug>.md`.
312
+
2.**At the end of the project**, run `nucleus promote <id>` for entries that pass the generalization test. Files land in your local playbook at `~/.atom/learnings/<type>/<slug>.md` and ride forward into every new project you bootstrap.
304
313
3.**Periodically**, refine those into prose for `docs/LESSONS_LEARNED.md`.
305
314
306
315
See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the rules and the generalization test.
0 commit comments