From concierge
initialize or repair the local foundation for gastown, obsidian, graphify, and rtk. use when the gt root may not exist yet, you want to add rigs from repo urls, create or repair the obsidian vault layout, install rtk and its claude hook, install graphify when missing, or refresh graphify on existing rigs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/concierge:setupThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill to prepare or repair the local environment so `concierge` can operate smoothly.
Use this skill to prepare or repair the local environment so concierge can operate smoothly.
The user should not need to remember how GT is initialized, how Obsidian folders are named, how RTK is enabled, or which Graphify commands to run. Handle the setup and report what changed.
Resolve paths in this order unless the user says otherwise:
MAIN_GT_ROOT, then GT_TOWN_ROOT, then ~/gtMAIN_OBSIDIAN_ROOT, then OBSIDIAN_VAULT, then ~/notes/workObsidian vault layout is composition-based: the vault root is an unversioned container holding one git repo per top-level folder.
Shared/<Name>/ — one directory per entry in shared: from the concierge config, each cloned from its configured git URL.User/ — cloned from user: in the concierge config. All skill-managed folders (Projects/, Plans/, PR-Reviews/, Analysis/, etc.) live under User/.<gt-root>/<rig>/mayor/rig.Concierge config resolution order:
$CONCIERGE_CONFIG — inline JSON with the full config ({"shared": {...}, "user": "<url>"}). Takes precedence when set.~/.concierge.json — persistent config file with the same shape.user URL and any shared entries conversationally, write ~/.concierge.json, then proceed.user is required. shared is optional (empty object or omitted key is fine). Folder names under Shared/ come from each key with its first character capitalized (engineering -> Engineering; SecurityPlatform stays SecurityPlatform).
Use the helper scripts in scripts/ for deterministic filesystem work.
/concierge:setup is a command, not a prompt. It takes exactly one optional argument:
upgrade — same as the default, plus run the known upgrade command for every tool flagged as outdated.Any other argument is ignored. If the user wants a narrower or different action (refresh Graphify, add a specific rig, set up a named project), that belongs to /concierge:go, not to setup. Do not try to interpret free-form English as a setup subcommand.
Resolve paths.
MAIN_GT_ROOT, then GT_TOWN_ROOT, then ~/gt.MAIN_OBSIDIAN_ROOT, then OBSIDIAN_VAULT, then ~/notes/work.Audit the environment (always run this first).
python3 skills/setup/scripts/audit_env.py (from the plugin root). Add --upgrade when the user passed upgrade. Add --json if you need machine-readable output for follow-on logic. Do NOT re-implement the audit inline by calling gt --version, gh release view, rtk --version, pipx list, etc. yourself — the script is the canonical audit and it exists specifically so the checks stay consistent across runs and versions.gt, gt-stack, graphify, rtk, gh, git, python3 — presence, installed version, and status (ok / outdated / missing / unknown). For release-backed tools (gt, graphify, rtk, gh) the latest upstream release is fetched via gh release view; gt-stack is shipped by this plugin (probed via gt-stack help) and git / python3 are system-managed, so no upstream check runs for those. It also reports GT root state, rig count, concierge config source, MCP-obsidian registration, and the RTK hook.upgrade, pass --upgrade to the script so it also invokes known upgrade commands for each outdated tool.gt version HEAD-<sha>) are reported as unknown — surface the installed string and the latest release tag side-by-side and let the user decide.Initialize or repair GT if needed.
scripts/ensure_gt.py --apply.gt install <gt-root>.name=url pairs.gt rig add <name> <url> for remote repos.gt init only when the user explicitly points at an existing local git repo that should be initialized in place.3b. Install the gt-stack helper.
scripts/ensure_gt_stack.py --apply.bin/gt-stack from the plugin into ~/.local/bin (or $GT_STACK_BIN_DIR). Idempotent on re-run.~/.local/bin is not on PATH, the script prints the export PATH=… line the user should add to their shell profile; surface that note verbatim.gt-stack is a thin helper over git + gh for stacked pull requests. It assumes the one-commit-per-branch convention and provides new, list, restack, submit, and sync verbs. See CONCIERGE_STACK.md at the plugin root for the convention and workflow.Create or repair the Obsidian vault structure.
$CONCIERGE_CONFIG is set, treat its value as inline JSON and use that.
b. Else if ~/.concierge.json exists, read it.
c. Else enter first-run flow: ask the user for their user: git URL (required) and any shared: entries they want (name + git URL, repeatable; blank to finish). Write the collected map to ~/.concierge.json as valid JSON.user must be present and a string URL.shared (if present) must be an object mapping display name to git URL.scripts/bootstrap_obsidian.py --apply. The script will:
shared.<Name> entry to Shared/<Name>/ (first-char-capitalized key).user: to User/.git pull).README.md from references/vault-root-readme.md.tmpl.README.md; everything else is owned by the individual repos.Ensure the Obsidian MCP server is connected.
mcp-obsidian (or mcp__mcp-obsidian__obsidian_list_files_in_vault) is available as an MCP tool.~/.claude/.mcp.json (or the project .mcp.json):
{
"mcpServers": {
"mcp-obsidian": {
"command": "uvx",
"args": ["mcp-obsidian"],
"env": {
"OBSIDIAN_API_KEY": "<api-key>"
}
}
}
}
e. After editing the config, tell the user to restart Claude Code or run /reload-plugins.Ensure RTK is active.
scripts/setup_rtk.sh --apply.rtk is missing, prefer Homebrew when available; otherwise use the official installer.rtk init --global so Claude's shell commands can be rewritten through RTK.Install or refresh Graphify.
graphify is missing, install the package first, then run graphify install.scripts/refresh_graphify.py --apply.<rig>/mayor/rig.Report remaining manual steps.
graphify . --update.Always report in this structure:
The per-tool status from scripts/audit_env.py (installed version, latest version, status). Call out anything flagged missing or outdated.
What paths, rigs, and configs you inspected.
What you initialized, added, or enabled for Gastown and RTK.
Whether the vault exists, the MCP server is connected, and any setup steps taken or remaining.
What vault folders, notes, or repo integrations you created.
Which rigs were installed, refreshed, skipped, or failed.
Only the actions the user still needs to take.
/concierge:setup — audit everything; auto-fix safe gaps; ask about anything that needs user input./concierge:setup upgrade — same, plus upgrade every outdated tool.Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub nsxbet/concierge --plugin concierge