Help us improve
Share bugs, ideas, or general feedback.
npx claudepluginhub ivintik/private-claude-marketplace --plugin famdeck-atlasHow this skill is triggered — by the user, by Claude, or both
Slash command
/atlas:initThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
---
Initializes project-level Claude setup by adding .gitignore entries and creating settings.local.json. Does not copy agent/skill files — for projects with globally installed agents.
Initializes, upgrades, or migrates claude-harness plugin in projects. Handles fresh installs, v2.x migrations, legacy cleanup, memory directories, and .gitignore updates for ephemeral files.
Initializes Mycelium plugin by creating .claude/ directories (canvas, diamonds, memory, harness, evals, jit-tooling) with .gitkeep stubs and minimal starter files like active.yml. Idempotent setup.
Share bugs, ideas, or general feedback.
Set up atlas for first-time use: create directories, register the session hook, discover and register projects.
Parse $ARGUMENTS:
--scan <path>: directory to scan for projects (default: cwd)mkdir -p ~/.claude/atlas/cache/projects/
If ~/.claude/atlas/registry.yaml does not exist, create it:
# Atlas project registry — maps project slugs to filesystem paths.
# Managed by atlas:project-manager. See knowledge/schema.md for format.
projects:
Leave existing registry untouched.
Plugin SessionStart hooks don't surface output due to bug #16538. Register directly in ~/.claude/settings.local.json as a workaround.
.claude-plugin/plugin.json). The hook script is at <plugin-root>/hooks/scripts/session-start.py.~/.claude/settings.local.json (create {} if missing).jq --arg script "python3 <ABSOLUTE_PATH>/hooks/scripts/session-start.py" '
.hooks //= {} |
.hooks.SessionStart //= [] |
if (.hooks.SessionStart | map(select(.hooks[]?.command == $script)) | length) > 0
then .
else .hooks.SessionStart += [{
"matcher": "*",
"hooks": [{"type": "command", "command": $script, "timeout": 5}]
}]
end
' ~/.claude/settings.local.json > /tmp/atlas-settings.json \
&& mv /tmp/atlas-settings.json ~/.claude/settings.local.json
Scan the target directory for git repos up to 3 levels deep:
find <scan-path> -maxdepth 3 -name ".git" -type d 2>/dev/null
For each repo found, collect:
.git/.git/config<path>/.claude/atlas.yaml existsPresent as a table, then ask the user (via AskUserQuestion): Register all (default) / Let me choose / Skip.
For each project to register, append to ~/.claude/atlas/registry.yaml:
<slug>:
path: <path>
repo: <repo-url>
Handle the project config:
.claude/atlas.yaml exists — cache to ~/.claude/atlas/cache/projects/<slug>.yaml (prepend _cache_meta). Warn if summary is missing.name from package.json/Cargo.toml/build.gradle/directory name, ask for summary (<100 chars), auto-detect tags from language files, guess CI link from repo URL. Write it and cache.Atlas initialized!
Registry: ~/.claude/atlas/registry.yaml
Projects registered: N
Hook registered: yes (in ~/.claude/settings.local.json)
Next steps:
- Start a new Claude session to activate the session hook
- Use atlas:project-manager to add more projects
- Use atlas:project-manager edit <slug> to customize configs