Bootstraps Claude Code sessions by organizing files, generating CLAUDE.md, managing soul purpose lifecycle with completion protocol and context harvesting. Use /start or /init.
npx claudepluginhub anombyte93/atlas-session-lifecycleThis skill uses the workspace's default tool permissions.
> User runs `/start`. Questions upfront. Everything else silent. Then seamlessly continue working.
Initializes Claude Code sessions by migrating legacy harness files to .claude-harness/, creating missing state files like memory rules and config, and preparing GitHub sync.
Starts or resumes work sessions with full context loading, task planning, progress tracking, blocker handling, execution, and finalization including status, lessons, and changes. Use at work start.
Orchestrates AI coding workflows with self-correction loops, pre-flight discipline rules, 18 hook events, 5 agents, orchestration patterns, and cross-agent support for Claude Code and Cursor.
Share bugs, ideas, or general feedback.
User runs
/start. Questions upfront. Everything else silent. Then seamlessly continue working.
All session operations use atlas-session MCP tools directly (prefixed session_* and contract_*). Use ToolSearch to discover them.
Capture any text after /start as DIRECTIVE. If empty, the soul purpose is the directive.
The skill NEVER finishes with "ready to go" and stops. After setup, immediately begin working.
/start.claude mcp list — assume atlas-session is available, handle errors on first call| Service | If Unavailable | Action |
|---|---|---|
| atlas-session MCP | session_start errors/times out | STOP — required for /start |
| AtlasCoin | contract_health() fails | Continue without bounty tracking |
| Perplexity | Research queries fail | Context7 + WebSearch fallback |
| Context7 | Doc queries fail | Perplexity results only |
| Bitwarden | Vault locked/unavailable | Tell user, skip credential fetch |
Triggered when
session_startreturnspreflight.mode == "init".
MCP AVAILABILITY — assume atlas-session is available (do NOT run claude mcp list):
session_start(project_dir, DIRECTIVE) — returns combined preflight + validate + read_context + git_summary + classify_brainstorm + clutter check in ONE call.atlas-session MCP is not responding. /start requires this MCP to function.
To fix:
1. Check ~/.claude.json or project .mcp.json has atlas-session entry
2. Verify Python module: python3 -c "from atlas_session import server"
3. Restart Claude Code after fixing
Do NOT proceed with any other steps if session_start fails.preflight = result["preflight"], read_context = result["read_context"], git_summary = result["git_summary"], classify_brainstorm = result["classify_brainstorm"], clutter = result["clutter"].BRAINSTORM_WEIGHT from result["classify_brainstorm"]["weight"] for Step 4.File organization (only if result["clutter"] is present and status is "cluttered"):
Present the grouped move map from result["clutter"]:
git mv (if is_git) or file operations.session_init(project_dir, DIRECTIVE_OR_PENDING)session_ensure_governance(project_dir)session_cache_governance(project_dir)/init (Claude Code built-in — refreshes CLAUDE.md. Must run in main thread.)session_restore_governance(project_dir)CI/CD Scaffold Detection (smart, zero-friction):
Use project_signals from result["preflight"] (already available from Step 1).
Determine CI/CD action based on these rules:
| Condition | Action |
|---|---|
has_ci == true | Skip — already has CI/CD |
has_code_files == false OR is_empty_project == true | Skip — no code to test |
Simple script only (1-2 .py/.sh files, no package manifest) | Skip — toy project |
Has package manifest (package.json, pyproject.toml, Cargo.toml, go.mod) | Prompt user (see below) |
| 3+ code files but no package manifest | Prompt user (see below) |
Prompt when needed:
"This project has code files but no CI/CD. Atlas-Copilot can scaffold GitHub Actions workflows (CI tests + Claude review). Enable?"
Options:
Scaffold logic (if user accepts):
Detect language/stack from project_signals:
has_package_json → Node.jshas_pyproject → Pythonhas_go_mod → Gohas_cargo_toml → Rust.py files exist, else genericCreate .github/workflows/ directory, then:
ci.yml): calls anombyte93/atlas-copilot/.github/workflows/reusable-ci.yml@v1 with appropriate inputsclaude-review.yml): calls anombyte93/atlas-copilot/.github/workflows/reusable-claude-review.yml@v1Use language-specific defaults:
| Stack | test-command | build-command | install-command |
|---|---|---|---|
| Node.js | npm test -- --coverage --ci | npm run build | npm ci |
| Python | pytest tests/ -x --tb=short | (empty) | pip install -e ".[dev]" |
| Go | go test ./... -v -race | (empty) | go mod download |
| Rust | cargo test --verbose | cargo build --verbose | (empty) |
custom.md if it exists, follow instructions under "During Init".Quick Clarify runs first (always):
Invoke skill: "quick-clarify" with the DIRECTIVE.
This asks 3 questions: deliverable type, done criteria, and size.
For Medium/Large tasks, it also runs research.
After brainstorm completes:
session_activate(project_dir, DERIVED_SOUL_PURPOSE, DIRECTIVE_OR_PENDING) — sets soul purpose, enables stop hook, and returns feature claims in ONE call.Bounty creation (optional):
Call contract_health(). If healthy, call contract_create(project_dir, DERIVED_SOUL_PURPOSE, escrow, criteria) using contract_draft_criteria for suggestions.
Default escrow: 100. Increase for complex soul purposes at AI's discretion.
If AtlasCoin is down, tell user and continue without bounty.
TeamCreate("{project}-work") — assign directory-level file ownership per teammateSendMessage(type: "shutdown_request") then TeamDeletesuperpowers:test-driven-development if soul purpose involves code.superpowers:writing-plans if soul purpose has 3+ steps.Detect if Soul Loop should be enabled:
Check if soul purpose involves code — Look for keywords: "implement", "build", "fix", "add", "create", "refactor", "update", "write"
Determine intensity from task size (from quick-clarify):
--intensity small--intensity medium--intensity longConfigure gates from project structure:
GATES="research,deterministic"
# Add E2E gate if tests/e2e/ exists
if [[ -d "$PROJECT_DIR/tests/e2e" ]]; then
GATES="$GATES,e2e"
fi
# Add Acceptance gate if config/trello-testing.json exists
if [[ -f "$PROJECT_DIR/config/trello-testing.json" ]]; then
GATES="$GATES,acceptance"
fi
Invoke Soul Loop:
/soul-loop "$DERIVED_SOUL_PURPOSE" --intensity $INTENSITY --gates "$GATES"
This is automatic — do not ask the user. Soul Loop provides the backpressure guardrails for iterative development.
If iterative development is appropriate for the soul purpose, use /ralph-loop:
/ralph-loop "DERIVED_SOUL_PURPOSE" --max-iterations N --completion-promise "TEXT"
The user controls iterations and completion promises.
CRITICAL: you must call the Skill tool — not just mention it in text.
Soul Loop enforces hierarchical backpressure gates on each iteration. Use for iterative development that needs quality guardrails.
| Intensity | Invocation |
|---|---|
| Small | /soul-loop "SOUL_PURPOSE" --intensity small |
| Medium | /soul-loop "SOUL_PURPOSE" --intensity medium |
| Long | First skill: "prd-taskmaster", then /soul-loop "SOUL_PURPOSE" --intensity long |
Gate Hierarchy:
<promise> tagTo complete: Output <promise>YOUR_COMPLETION_PROMISE</promise> when done.
CRITICAL: Soul loop enforces backpressure. Test failures allow continued iteration with warnings. After 10 failures, hard block.
Triggered when
session_startreturnspreflight.mode == "reconcile".UX: Everything in Steps 1-2 is invisible to the user. First visible interaction is a question (Step 3) or seamless work continuation (Step 4).
Before any assessment, save the current session state so context files reflect reality:
/sync — updates all session-context files and MEMORY.md with current progress.MCP AVAILABILITY — assume atlas-session is available (do NOT run claude mcp list):
session_start(project_dir, DIRECTIVE) — returns combined assessment in one call.preflight, validate, read_context, git_summary, classify_brainstorm, clutter from the result.session_cache_governance(project_dir)/init in main thread.session_restore_governance(project_dir)read_context against git_summary: if context is stale (commits exist that aren't reflected in active context), update session-context/CLAUDE-activeContext.md with real progress.session_capability_inventory(project_dir) and check response.
cache_hit == True and git_changed == False: inventory is current, skip extraction.needs_generation == True: inventory requires generation. The MCP tool returns inventory_path when ready.CLAUDE-capability-inventory.md if it exists. Extract untested code, security claims, and feature claims with gaps.session-context/BOUNTY_ID.txt exists, call contract_get_status(project_dir).custom.md if it exists, follow instructions under "During Reconcile".If result["clutter"] is present and status is "cluttered", present move map to user (same flow as Init Step 2).
If DIRECTIVE is non-empty (3+ words) AND status_hint is no_purpose:
session_archive(project_dir, "(pending)", DIRECTIVE) to set soul purposeIf DIRECTIVE is non-empty (3+ words) AND soul purpose exists:
Otherwise (no directive):
session_features_read(project_dir) — check feature claim status.read_context + features_read + git_summary, classify:
clearly_incomplete: open tasks non-empty, active blockers, criteria not metprobably_complete: no open tasks, artifacts exist, criteria metuncertain: mixed signalsIf clearly_incomplete: No questions. Skip to Step 4.
If probably_complete or uncertain:
Ask ONE question: "Soul purpose: '[text]'. [1-2 sentence assessment]. [Bounty: active/none]. What would you like to do?"
superpowers:verification-before-completion, fold findings into re-presented question.Transition directly into work. No "session reconciled" message.
clearly_incomplete: Pick up where last session left off using active context.session_archive.TeamCreate("{project}-work") — assign directory-level file ownership per teammateSendMessage(type: "shutdown_request") then TeamDeletesuperpowers:test-driven-development if soul purpose involves code.superpowers:writing-plans if soul purpose has 3+ steps.Check if a Ralph Loop is already active:
test -f ~/.claude/ralph-loop.local.md && echo "active" || echo "inactive"
Note: Ralph Loop is no longer auto-invoked. User can manually start it with /ralph-loop if needed for iterative work.
Triggered when user chooses "Close" in Reconcile Step 3.
Read custom.md if it exists, follow instructions under "During Settlement".
session_close(project_dir) — returns combined harvest + features_read + hook_deactivate in ONE call.harvest = result["harvest"], features = result["features"], hook = result["hook"].harvest, assess what to promote (decisions need rationale, patterns must be reusable, troubleshooting must have verified solutions). Present to user for approval.features, run their proofs (shell commands, file checks).CLAUDE-features.md.superpowers:verification-before-completion — run doubt review on recent changes.superpowers:requesting-code-review before PR creation.git push -u origin HEADgh pr create --title "..." --body "..." with review summary.contract_run_tests(project_dir) — execute all criteria.contract_submit(project_dir).Task(subagent_type: "general-purpose", prompt: "You are finality-agent. Verify bounty [ID] independently. Call contract_verify. Report pass/fail.")contract_settle(project_dir). Tell user tokens earned.session_archive(project_dir, OLD_PURPOSE, NEW_PURPOSE) — archive soul purpose, reset active context.rm -f ~/.claude/ralph-loop.local.mdCreate or edit
custom.mdin the plugin root directory.
The AI reads custom.md at each lifecycle phase: