feat: /atom-new — bootstrap a project from inside Claude (v0.3 #23)#2
Merged
Conversation
Conversational Mode-1 bootstrap as a global Claude skill (thin launcher over installed AGENTS.md, not a fork). Scoped to Mode 1 only; Modes 2/3 are dev-facing. Distribution piggybacks existing global-symlink + atom upgrade machinery. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Global Claude Code skill that drives the AGENTS.md Mode 1 bootstrap conversationally from any directory — no terminal round-trip. Thin launcher over the installed AGENTS.md (reads it at invoke time, never restates the steps), so it can't drift from the source of truth. New top-level skills/ dir holds global user-facing skills (distinct from scaffold/.claude/skills/ which ship into bootstrapped projects). install.sh and atom upgrade symlink each into ~/.claude/skills/; the symlink-into-git-checkout means atom upgrade's git pull refreshes skill content for free. Idempotent (repoints stale links), safe (never clobbers a user-owned dir, reports the skip). Scope: Mode 1 only. Modes 2/3 are dev-facing and stay out. Tests: Test 21 (+14 assertions, 164 -> 178) — structural checks on both install paths plus a hermetic functional pass of linkGlobalSkills across fresh/repoint/skip using a scratch HOME. Added bin/atom dep pre-flight. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Both pre-existing, environment-specific, failing on Ubuntu CI but passing on macOS — unrelated to /atom-new. 14.15: picocolors auto-enables ANSI when $CI is set (GitHub Actions), so `<bold>name</bold> is ready` gained escape codes that split the asserted substring. Pin NO_COLOR=1 in the harness — plain text everywhere, children inherit it. 20.7: the pattern double-quoted its backticks, yielding `\`` which GNU grep treats as a buffer-start anchor (never matches mid-pattern); BSD grep took it literally, hiding the bug locally. Single-quote the pattern so backticks are literal. Verified against GNU grep 3.12: old pattern no-match, new pattern match. Suite: 178/178 under CI=1. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Opens the v0.3 line with the first candidate shipped ahead of scope-lock. Root VERSION 0.2.1 -> 0.3.0 (the target atom upgrade polls); the five CLIs align to 0.3.0; atom-update-check stays 0.1.0. CHANGELOG [Unreleased] graduated to [0.3.0]. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The 1.2 assertion hardcoded 0.2.1, so the 0.3.0 bump broke it. Read the repo VERSION instead — release bumps no longer trip this test. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A global Claude Code skill,
/atom-new, that drives atom's Mode 1 bootstrap conversationally from any directory or session — nocd ~/.atom/atom, no terminal round-trip. Removes the friction of having to return to the terminal (or be inside the atom repo) every time you want to start a project.Type
/atom-newin any Claude session → Claude walks you through project context → scaffold → constitution → first phase, the same flowatom-setupruns in the terminal, just guided.Design (decisions locked with the user)
$ATOM_SOURCE_DIR→$ATOM_INSTALL→~/.atom/atom/) and readsAGENTS.mdMode 1 + its docs at invoke time. It deliberately does not restate the bootstrap steps, so it can't drift from the single source of truth.atom-setup new) already serves the fast, no-questions path.skills/dir (global user skills, distinct fromscaffold/.claude/skills/which ship into projects).install.shandatom upgradesymlink each into~/.claude/skills/— a symlink into the git checkout, soatom upgrade'sgit pullrefreshes content for free. No new channel; consistent with git-not-npm.Safety / robustness
/atom-newfails gracefully with theinstall.shone-liner when no atom checkout is found.Tests
scripts/test-atom-setup.shTest 21 (+14 assertions, 164 → 178, 0 failed): structural checks on the skill + both install paths, plus a hermetic functional pass oflinkGlobalSkillsacross fresh-link / idempotent-repoint / user-owned-dir-skip using a scratchHOME(the runner's real~/.claudeis never touched). Added abin/atomdependency pre-flight.Not in this PR (release decision left to you)
No
VERSIONbump and no[Unreleased]→ versioned section — atom's releases are deliberate, and v0.3 isn't scope-locked yet. The feature is logged under[Unreleased]and #23 is marked built indocs/planning/v0.3.md. Merging + bumpingVERSIONis the step that makesatom upgradedeliver it to users — your call when to take it.🤖 Generated with Claude Code