Initialize atlas
Claude Code plugin orchestrating agentic coding sessions — primers, session logs, and knowledge consolidation
npx -y skills add dbtlr/atlas-skills --skill initialize-atlasAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Bind this project to a vault Workspace and scaffold or self-heal it. Use when setting up atlas in a repo, when the user says "initialize my workspace", or when start-session reports no Project Binding (.atlas.toml).
SKILL.md
7.9 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it
initialize-atlas
Bind a project to its vault Workspace and ensure that workspace is scaffolded correctly. Idempotent and self-healing — safe to run repeatedly.
Primary agent only. If you were dispatched as a subagent, stop here.
1. Resolve the vault
The vault is always the atlas vault; its location is the ATLAS_PATH environment variable — there is no registry and no per-repo vault config.
- If
ATLAS_PATHis set and the directory exists, use it as the vault root. - If
ATLAS_PATHis unset, ask the user toexport ATLAS_PATH=<their atlas vault root>(offer~/vaults/atlasas the conventional default), then continue.
Scaffold the vault skeleton if missing (see resources/vault-structure.md):
-
.norn/config.yaml— norn is the vault-write authority for the atlas skills (write-session-log, the consolidate pair all hard-require it), so the vault must carry a norn config. Ifnornisn't on PATH, stop and have the user install it. If the config is missing, seed it fromtemplates/norn-config.yaml— the minimum schema contract the skills depend on (session-log flags, shared-profile types); an existing config is never overwritten or merged — leave it alone. -
artifacts/session-logs/,artifacts/scratch/(nogenerated/— specs/plans are transient, deleted on merge) -
Workspaces/shared/withuser.md(User Profile),memory.md(Shared Memory), andobservations.md(the observations ledgerconsolidate-memoryextracts into). Create each missing one through norn so it carries its dedicated schema type from birth (NOW=$(date +%Y-%m-%dT%H:%M)):norn -C "$ATLAS_PATH" new "Workspaces/shared/user.md" \ --field title="User Profile" --field description="<one line>" \ --field type=user-profile --field workspace=shared \ --field created="$NOW" --field modified="$NOW" --body-from-stdin --yes < <body> # memory.md → --field type=shared-memory; observations.md → --field type=observationsSeed
user.md/memory.mdbodies lightly (a short user-profile interview can filluser.mdlater), each with the above/below-the-line split: a human-canon area, then a---rule, then the agent-consolidated regionconsolidate-memorymaintains (above = hand-authored/pinned, never touched by the skill; below = weighted consolidation).observations.mdstarts as an empty ledger. If a legacypartner_model.mdexists, offer to copy-and-curate it intouser.md+memory.mdrather than migrating in place.
2. Resolve the workspace name
- Use the
<workspace>argument if given; else infer from the repo directory name and confirm. - A Workspace maps 1:1 to a project, bound by name + path.
3. Elevator-pitch description
Get a 2–3 sentence description of the project, in priority order:
- From an existing Workspace Brief (if re-initializing).
- From the repo's
CLAUDE.md/AGENTS.md. - Else scan the repo and infer one.
Confirm it with the user (offer to edit). It becomes the Brief's description and opening paragraph.
3b. Workspace type
Pick the Brief's workspace_type — the vault's workspace-note rule requires it, and it has no safe default. Propose the best fit from the repo, then confirm with the user (on re-init, keep the existing value unless it's wrong):
workspace_type | When it fits |
|---|---|
| product | A single shippable system (app, site, service, infra) with one roadmap and task board. |
| library | Reusable code consumed by other projects — no standalone runtime, a single publishable surface. |
| monorepo | One repo housing multiple products, each with its own roadmap and task board. |
| incubator | Holding area for early ideas/sketches/tests before they graduate to their own workspace or are dropped. |
4. Scaffold / heal the workspace
Under $ATLAS_PATH/Workspaces/<workspace>/, ensure these exist — create only what's missing; never overwrite existing content:
<workspace>.md— Workspace Brief. Compose the body fromtemplates/workspace-brief.md(substitute{{WORKSPACE}},{{ELEVATOR_PITCH}}), then create it through norn:norn -C "$ATLAS_PATH" new "Workspaces/<workspace>/<workspace>.md" --field title=<workspace> --field description="<elevator pitch>" --field type=note --field kind=workspace --field workspace="[[<workspace>]]" --field status=active --field workspace_type=<workspace_type> --field domain=Workspaces --field created="$NOW" --field modified="$NOW" --body-from-stdin --yes < <body>. Thestatus/workspace_type/domainfields and the wikilinkworkspacesatisfy the vault'sworkspace-noterule (status=activefor a new binding;workspace_typefrom §3b;domainis alwaysWorkspaces). After creating it, stamp an initialbrief_baselineinto its frontmatter — its own scaffolded size — so a brand-new workspace starts within budget andstart-sessiondoesn't recommend a consolidation that has no logs to process. Measure it the same wayconsolidate-workspacedoes (code-point count, notwc -m):python3 -c 'import pathlib,sys; print(len(pathlib.Path(sys.argv[1]).read_text(encoding="utf-8")))' "<brief path>", then stamp it with norn (pin the vault — norn resolves from$NORN_ROOT/cwd, neverATLAS_PATH):norn -C "$ATLAS_PATH" set "Workspaces/<workspace>/<workspace>.md" --field-json brief_baseline=<chars> --yes(anunknown fieldwarning is benign).consolidate-workspacerefreshes it on every groom thereafter.- The workspace enum in the norn config — ensure
<workspace>appears undersession-log-base→allowed_values→workspacein$ATLAS_PATH/.norn/config.yaml; append it if missing. (The enum bounds the field, which doubles as norn's scan index for the consolidation queries; a workspace missing from it writes Session Logs that fail vault validation.) The config is a config file, not a vault document, so a direct anchored YAML edit is correct — then check it withnorn -C "$ATLAS_PATH" config validate. Append only, never remove or rename entries: frozen logs carry every name that was ever bound, and removing one invalidates them retroactively. glossary.md— Generated by thedomain-modelingskill (replacesCONTEXT.mdif present). If that skill isn't installed, create a placeholder through norn (norn -C "$ATLAS_PATH" new "Workspaces/<workspace>/glossary.md" --field title="Glossary" --field description="Domain terms for <workspace>" --field type=note --field kind=glossary --field workspace="[[<workspace>]]" --field created="$NOW" --field modified="$NOW" --body-from-stdin --yes) with a note to rundomain-modeling.decisions/,notes/,archive/
Local override. If the repo sets
decisions = "local"(or a path) in.atlas.toml, scaffolddecisions/+glossary.mdat that in-repo target instead of in the vault workspace.
If everything already exists and is consistent, report: "Your workspace is already initialized to <full path> and everything looks correct." Otherwise apply only the missing pieces and say what you added.
5. Write the Project Binding
Write .atlas.toml at the repo root:
workspace = "<workspace>"
# decisions = "local" # optional: keep decisions/glossary in-repo instead of the vault workspace
Ask whether to commit it to git (default: no — ensure it's in .gitignore).
6. Permissions (harness-specific)
Ensure the agent can read/write the vault paths. In Claude Code, add the vault globs to .claude/settings.local.json. Re-running initialize-atlas under a different harness adds that harness's needs.
7. Finish
- Fresh init: hand off to start-session to load the new context.
- Heal: just report what changed.
Gives 0 of the 12 instructions most project setup skills give in ~1.9k tokens
Counted across 999 of the 1,637 authors here whose files we hold, read 2026-08-06
- ask one question at a timein 29 of 999, across 28 files
- detect the package manager from lockfilesin 28 of 999, across 9 files
- present findings to the userin 25 of 999, across 4 files
- explore current repo statein 24 of 999, across 3 files
- update the agent skills block in place if it existsin 24 of 999, across 3 files
- install husky lint-staged and prettierin 23 of 999, across 4 files
- create the lintstagedrc filein 22 of 999, across 3 files
- commit all changed filesin 22 of 999, across 3 files
- run lint-staged to verify it worksin 22 of 999, across 3 files
- initialize huskyin 21 of 999, across 2 files
- create the husky pre-commit filein 21 of 999, across 2 files
- create a prettierrc file if missingin 21 of 999, across 2 files
Said here and by no other author read
- stop if dispatched as a subagent
- resolve atlas vault from ATLAS_PATH
- scaffold vault skeleton if missing
- create missing shared documents through norn
- confirm inferred workspace name
- confirm inferred project description
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.