skills/start/SKILL.md
Session initialization and lifecycle management: bootstraps session context, organizes files, generates CLAUDE.md, manages soul purpose lifecycle with completion protocol and active context harvesting. Use when user says /start, /init, bootstrap session, initialize session, or organize project.
npx skillsauth add anombyte93/atlas-session-lifecycle startInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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:
tools
Session initialization and lifecycle management: bootstraps session context, organizes files, generates CLAUDE.md, manages soul purpose lifecycle with completion protocol and active context harvesting. Use when user says /start, /init, bootstrap session, initialize session, or organize project.
tools
Fast save-point: sync all session-context files and MEMORY.md with current progress. Zero questions, zero delay. Use when user says /sync, save progress, save state, sync context, or /sync --full for capability inventory.
testing
Gracefully close, pause, or verify a session: harvest promotable content, save progress, archive soul purpose, settle AtlasCoin bounty. Use when user says /stop, wrap up, done for the day, finishing up, close session, pause, verify, or end session.
devops
Use when hitting the same error after 2+ fix attempts, when multiple symptoms share a common system, or when fixes feel like whack-a-mole. Forces architectural reassessment over symptom-patching. Also use proactively when a fix touches infrastructure-level config.