Eigenwise/eigenwise-toolshed/plugins/workbench/skills/init-workspace/SKILL.md
init-workspace
Set up a complete Claude Code workspace for a new or existing project. Use for workspace setup, .claude configuration, project bootstrap, or Toolshed installation.
- Source repository stars
- 14
- Declared platforms
- 1
- Static risk flags
- 2
- Last source update
- 2026-08-06
- Source checked
- 2026-08-06
Decision brief
What it does—and where it fits
Set up a project's .claude/ workspace end to end. You are an orchestrator: the pieces already exist (codebase-mapper's map-codebase, live-rules, sidequest, skill-creator, the built-in /init, and Workbench's bootstrap installer). Your job is to interview the user, make the instal…
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/Eigenwise/eigenwise-toolshed --skill "plugins/workbench/skills/init-workspace"Inspect the Agent Skill "init-workspace" from https://github.com/Eigenwise/eigenwise-toolshed/blob/77e8aa62ba3f23125b68ec46ce7b54b80cbe5c01/plugins/workbench/skills/init-workspace/SKILL.md at commit 77e8aa62ba3f23125b68ec46ce7b54b80cbe5c01. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Before Phase 0 — Toolshed setup
Before the telemetry question, open with a short plain-language orientation in the user's terms. Cover the substance without reciting a fixed script: you will ask a few setup questions, show the proposed install and stop for approval, install the chosen plugins, request one relo…
Yes: install the Observability plugin at user scope if it is not already installedNo: continue immediately to the project-intent question. Do not ask again during this run.Before the telemetry question, open with a short plain-language orientation in the user's terms. Cover the substance without reciting a fixed script: you will ask a few setup questions, show the proposed install and sto… - 02
Phase 0 — Assess
Get the lay of the land before asking anything. Two axes matter:
New vs existing. Count real source files (ignore .git/, nodemodules/, vendor/, dist/,Codebase vs not-a-codebase. Is this actually code, or is it a wiki / notes vault / docs site /Existing .claude/? If settings.json, live-rules.md, or a map already exist, you are - 03
Phase 1 — Interview and selection
Model Gateway is a user-scope plugin and its wiring is global-only, so there is no per-project gateway choice to make. Say this plainly before wiring it. If the gateway is unwired, invoke /model-gateway:model-gateway and use its env --write-user command, then record the wiring r…
Auto-compact window: recommended 350000 (trigger 317k), aggressive 250000 (trigger33k), or custom 100000-1000000. Custom values are numbers; normalize them through the helper,Sidequest compaction policy: pin (board-state pinning in compaction summaries, safe default), - 04
Git setup for non-repos
If Phase 0 found that the project directory is not a git repo, ask once with AskUserQuestion after the user has confirmed their intended stack and before any pre-reload artifact is written. Recommend git init with this short reason: it preserves the workspace setup and lets futu…
On yes, run git init in the project root, then write or merge a stack-appropriate .gitignoreOn no, respect it without asking again. Record that the user declined so Phase 5 can give the oneNever auto-commit. Git initialization and .gitignore are the only changes in this step; the user - 05
Phase 2 — Install, then pre-reload writes
Build the installer plan in the current session scratchpad for install-workspace-plugins.js. Include version: 1, the detected/confirmed absolute projectDir, selected marketplaces, selected plugins, their scopes, userScopeConfirmed when needed, LSP preflight records, and only non…
Select the core from the catalog: codebase-mapper and live-rules, plus sidequest unless theDefault every selected workspace plugin to project. Use local only when the user explicitlyInclude a portable marketplace declaration only when the catalog has a reproducible source. The
Permission review
Static risk signals and limitations
Runs scripts
The documentation asks the agent to run terminal commands or scripts.
session/bootstrap plan. Do not invoke a bare `codex-gateway` shell command, since the installed plugin commandRuns scripts
The documentation asks the agent to run terminal commands or scripts.
node -e "const { enableAgentTeams } = require(process.env.CLAUDE_PLUGIN_ROOT + '/lib/project-settings.js'); enableAgentTeams(process.cwd());"Writes files
The documentation asks the agent to create, modify, or delete local files.
Write a short `.claude/.codebase-info/structure.md` (or, for a not-a-codebase project, a top-levelWrites files
The documentation asks the agent to create, modify, or delete local files.
`/codebase-mapper:update-codebase-map` after structural code changes when a map exists; ask to "add a liveEvidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 89/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 14 | Source | Repository attention, not individual Skill quality |
| Compatibility | 1 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- Eigenwise/eigenwise-toolshed
- Skill path
- plugins/workbench/skills/init-workspace/SKILL.md
- Commit
- 77e8aa62ba3f23125b68ec46ce7b54b80cbe5c01
- License
- MIT
- Collected
- 2026-08-06
- Default branch
- main
View the original SKILL.md
Init Workspace
Set up a project's .claude/ workspace end to end. You are an orchestrator: the pieces already
exist (codebase-mapper's map-codebase, live-rules, sidequest, skill-creator, the built-in
/init, and Workbench's bootstrap installer). Your job is to interview the user, make the installer
plan, sequence workspace artifacts around the plugin-reload boundary, and verify the result actually
works before you call it done.
The only prerequisite is Workbench installed at user scope. If it is not installed, stop and give
the user the Install commands from the Workbench README. If Workbench is installed only at project scope,
say that init-workspace requires the user-scope install and tell them to reinstall it at user scope before
rerunning this skill. Do not install Workbench as part of generated project settings.
Keep the whole thing tech- and purpose-agnostic: the logic below is generic. The stack-specific
choices come from references/stack-plugins.md (which plugins) and references/rule-templates.md
(which starter rules), plus what you detect in the repo. Never hard-code a stack into the flow.
The shape of the job
There is one hard constraint that dictates everything: plugins must be installed before any workspace artifact relies on them, and installed plugins take effect only after Claude reloads them. Ask for telemetry consent before inspecting the project, then learn the project's intent before recommending any Toolshed plugins. Split the project setup at its reload boundary:
- Telemetry consent — ask first, then stop for a restart only when the user opts in.
- Project intent — ask what the project is for, with any useful clues from a non-empty repo.
- Plugin picker — offer the current marketplace catalog with recommendations based on that intent.
- Assess the project (Phase 0).
- Interview and select project details (Phase 1).
- Install selected plugins, then write pre-reload artifacts (Phase 2).
- Reload boundary — stop, ask the user for one reload, and wait (Phase 3).
- Post-reload — build the map, bring up the board, and verify every selected plugin is loaded and usable (Phase 4).
- Wrap up — commit reminder and what they got (Phase 5).
Read references/stack-plugins.md before the plugin picker and references/rule-templates.md before
Phase 1; read references/self-improvement.md and references/structure-notes.md when you reach those
steps. The Observability plugin's enable-project-telemetry skill owns telemetry mechanics, setup, and
verification, including its own reference doc and command paths. This skill never runs observability
commands directly, because they live under a different plugin root.
Before Phase 0 — Toolshed setup
Orientation
Before the telemetry question, open with a short plain-language orientation in the user's terms. Cover the
substance without reciting a fixed script: you will ask a few setup questions, show the proposed install and
stop for approval, install the chosen plugins, request one reload, then build and verify the workspace. Say it
usually takes about 10–20 minutes, with large existing codebases taking longer to map. Explain that setup
merges into the project's .claude/ directory and never overwrites existing Claude config; name
~/.claude/settings.json as the one possible global write when the compaction window is configured. Promise
to name the concrete files before each write and to stop for confirmation before installing anything.
Every user-facing question below must include one short sentence saying why the answer matters. Keep that reason in the question itself, not in follow-up prose, and adapt the wording to the project rather than turning the flow into a script.
Telemetry consent
This is the first question in the whole flow. Before inspecting the directory, asking about the stack, or
asking any project question, check the project-local telemetry settings and the result of the telemetry skill's
verification command. found means telemetry is verified. A healthy-observer not-found means telemetry is
configured, pending first export, never verified. In either enabled state, say so briefly and skip this
question on re-entry. A pending result schedules exactly one re-check in Phase 4 after real session usage exists.
When telemetry is not enabled, use one AskUserQuestion with this plain explanation: "Enable local
project telemetry? Each project must opt in: this writes only its .claude/settings.local.json and sends usage
metadata through the local Collector to local Grafana. You can see API-equivalent cost; input, output, and cache
token totals; tool-call names and counts; plus model, session, agent, and activity information. It never records
prompt or response text, code or file contents, tool inputs or results, credentials, or environment values. This
helps you inspect local usage and cost without exposing project content."
- Yes: install the Observability plugin at user scope if it is not already installed
(
/plugin install observability@eigenwise-toolshed --scope user, then one reload), and hand off to/observability:enable-project-telemetry; it owns consent confirmation, setup, and verification. After it finishes, stop. Tell the user to restart Claude Code because its OTEL settings only apply to a new session, and to come back withclaude --continue(orclaude --resumeand pick this session) rather than a fresh/workbench:init-workspace. Resuming carries this conversation's answers across the restart; a fresh run starts the skill over and has to recover them from the bootstrap plan. Do not assess the project or ask the plugin question first. - No: continue immediately to the project-intent question. Do not ask again during this run.
A telemetry restart also satisfies a pending plugin reload boundary. Re-entry normally arrives as a resumed session that still holds the earlier answers; when it arrives as a fresh run instead, read the bootstrap plan before asking anything. Either way, detect the completed telemetry setup and continue with the project-intent question, picker, or later phase without repeating answered setup questions.
Project intent
Ask this plain-text question before listing any plugin options: "What is this project for, and who is it for? One or two lines is plenty. This lets me recommend only the setup that fits your project." For a non-empty repo, first inspect only enough of the visible project signals to pair the question with a useful inference, such as "I see a Rust audio-plugin project; what does it make and who uses it?" Keep that inference tentative and let the user correct it.
Keep the answer in the session/bootstrap plan. On re-entry, use a previously captured answer rather than asking again. A telemetry restart does not create an answer because this question happens after the restart.
Plugin picker
Ask this third, before Phase 0. Read the current Toolshed marketplace manifest and
references/stack-plugins.md, then offer the available plugins with a one-line plain-language description
and a recommendation grounded in the stated project purpose and any visible stack signals. In the picker
question, say that this choice decides which workspace tools will be installed and verified. Say why when
a plugin fits (for example, "recommended for this project because ...") and say "probably not needed
here" when it does not. Do not fall back to generic core/extra tiers. Do not maintain a hard-coded plugin
list in this skill: the current marketplace/catalog is the source of truth. Include the already-installed
state in the options, so a re-entry does not ask the user to install a plugin that is already present. Use
AskUserQuestion with multi-select when the current catalog fits its option limit; otherwise present
grouped choices and collect the selection before moving on.
The picker is a broad Toolshed choice informed by the project purpose, not a substitute for the later assessment. Keep the selected set for the installer plan; Phase 1 may recommend only missing, relevant stack extras rather than re-asking for the whole set.
Phase 0 — Assess
Get the lay of the land before asking anything. Two axes matter:
- New vs existing. Count real source files (ignore
.git/,node_modules/,vendor/,dist/,build/,.venv/, lockfiles, generated code). A repo with real code is existing; an empty repo, bare scaffold, or just a README/spec is greenfield. - Codebase vs not-a-codebase. Is this actually code, or is it a wiki / notes vault / docs site /
content repo / design folder? This decides whether you generate a codebase map at all (a wiki
doesn't need
map-codebase; it may still want live-rules and sidequest).
Also check what's already there:
- Existing
.claude/? Ifsettings.json,live-rules.md, or a map already exist, you are augmenting, not clobbering. Read them first and merge; never overwrite a user's existing config or rules. Call out what you'll add and what you'll leave alone. - Detect the stack from manifest/config files (
package.json,pyproject.toml,Cargo.toml,go.mod,svelte.config.js,*.csproj,Gemfile, etc.). See codebase-mapper'sreferences/language-detection.mdif you need the signal-file map. This detection seeds the interview so you propose rather than interrogate. - Git? Note whether it's a git repo (affects the commit reminder and the map's state file).
Pre-enable Sidequest lookup
When this flow needs Sidequest before reload, read ~/.claude/plugins/installed_plugins.json and select the
sidequest@eigenwise-toolshed entry for the current project (or its user-scope entry). Its installPath must
match ~/.claude/plugins/cache/eigenwise-toolshed/sidequest/<version> and its final segment must equal the
entry's version; otherwise stop and ask the user to reinstall Sidequest. Invoke
node "<installPath>/plugins/sidequest/bin/sidequest.js" profile list. Never PATH-probe or search the cache.
Recurring work and capabilities
When Sidequest is selected, build the routing input before proposing any category. Inspect what is actually visible: existing skills, the folder taxonomy, file types, maintenance scripts, and the stated project purpose. Turn those signals into a short list in this form: "This project repeatedly needs X, which takes capability Y." Ask the user to confirm or correct the list, and say in the question that the accepted capabilities will determine which Sidequest categories the project gets. Record the accepted list in the session/bootstrap plan. Derive project-profile categories from this list, never from the starter's existing category set.
Routing profile
When Sidequest is selected, make one routing choice immediately after the capability step and before the Phase 1
interview. Infer a starter from plain repo signals: code and build files → coding; docs, posts, or
content → writing; source corpora, datasets, or citation-heavy material → research; audio, scores,
or music-production files → creative-music. If signals conflict, choose the closest fit and say why.
Use one AskUserQuestion that proposes the inferred starter and offers: Use this profile, Choose
another starter, or Make a project profile. In the question, say that the profile controls which models
and effort levels future Sidequest work uses. Keep it conversational: do not turn category routing into
a form or walk through every category. If the user chooses another starter, show the available profiles from
sidequest profile list and let them name one in plain text. Record the accepted profile choice in the
session/bootstrap plan; if Sidequest was not selected, skip this step.
For Make a project profile, derive the final category set from the accepted recurring-work and capability
list plus the stated project purpose. Consult the closest starter as a reference for category shape and useful
precedent, never as the category baseline. Removing an inherited category is as normal as adding one. For every
category in the proposed final set, state why this project needs it and why its model and effort fit that work.
Remove anything you cannot justify; "it came with the starter" is not a justification. Give every derived
category a non-empty contract with standing instructions for its executor, and set its complete policy:
route, contract, readonly, and artifactRoots. A route without a contract is half-configured. Let the user
confirm or tweak the complete set in plain language; in that question, say the accepted set becomes this
project's Sidequest routing policy.
Create <project>-routing by cloning the closest starter for the profile plumbing, then reconcile the clone to
the confirmed final set and select it for the board:
sidequest profile create <project>-routing --from <starter> --description "<confirmed purpose>"
sidequest profile use <project>-routing --project <board>
Apply every profile-category add, edit, or removal with --profile <project>-routing, never --profile <starter>. A starter is shared policy and setup must never mutate it. Do not create a project profile when the
user accepts or picks a starter. Keep the selected profile and confirmed final category set in the plan; Phase 4
applies the profile after Sidequest creates or opens the board.
Executor worktree isolation
When Sidequest is selected, after recording the routing choice and before the Phase 1 interview, ask this plain-text question: "Should dispatched executors use isolated git worktrees here? I recommend keeping them on. Choose the shared checkout when the project's outputs need to appear in this working tree, or when parallel worktrees have caused problems here." Keep it conversational rather than turning it into a menu.
Record the accepted choice in the session/bootstrap plan alongside the routing choice. Default to isolated worktrees when the user accepts the recommendation or asks for good defaults. Use the shared checkout only when they explicitly choose it. If Sidequest was not selected, skip this question.
Phase 1 — Interview and selection
Model Gateway is a user-scope plugin and its wiring is global-only, so there is no per-project gateway
choice to make. Say this plainly before wiring it. If the gateway is unwired, invoke
/model-gateway:model-gateway and use its env --write-user command, then record the wiring result in the
session/bootstrap plan. Do not invoke a bare codex-gateway shell command, since the installed plugin command
is not on PATH. If the user enables Remote Control compatibility, explain first that the Codex/Grok rows
disappear from /model; explicit ids such as /model claude-gpt-5.6-terra still work and persist as the
default, and disabling compatibility restores the rows.
Compaction configuration
Ask one AskUserQuestion that explicitly records both settings before any write. In the question, say that
the compaction window writes to the global ~/.claude/settings.json and affects every project, while the
Sidequest policy writes to this project's .claude/settings.local.json; these choices decide when long
sessions compact and how Sidequest protects board state. On re-entry, read
~/.claude/settings.json and the project's .claude/settings.local.json first. Show the global
autoCompactWindow and the project's SIDEQUEST_COMPACTION_POLICY values. An absent window means
leave default. If the project file has a leftover autoCompactWindow, explain that it overrides the
global preference and offer to remove it. An unset policy has the same behavior as pin, but still ask
the user to choose and write the selected value. Never silently apply either recommendation.
- Auto-compact window: recommended 350000 (trigger ~317k), aggressive 250000 (trigger
~217k), **leave default (on 1M-pinned models auto-compact effectively never fires: trigger = window
- 33k)**, or custom 100000-1000000. Custom values are numbers; normalize them through the helper,
which clamps them to that inclusive range. Choosing leave default removes
autoCompactWindowfrom~/.claude/settings.json.
- 33k)**, or custom 100000-1000000. Custom values are numbers; normalize them through the helper,
which clamps them to that inclusive range. Choosing leave default removes
- Sidequest compaction policy: pin (board-state pinning in compaction summaries, safe default),
veto (pinning plus block mid-wave compaction), or off. Warn before accepting veto that it is
experimental until the US-40 spike verdict confirms hook blocks do not trip Claude Code's auto-compact
failure breaker. Keep this in the project
envblock: project environment settings mask global env, so global env is not a reliable carrier.
Store the explicit choices, including whether to remove a leftover project window, in the session/bootstrap plan. This stays one compact configuration step, not a wizard.
Keep it short and propose defaults from what you detected, so the user confirms rather than types essays. The project-intent answer was collected before the picker; use it to seed the map and structure notes, and do not ask it again. Ask what you genuinely can't infer. A good compact set (adapt, don't recite):
- Stack — confirm what you detected, and anything not yet visible (intended stack for greenfield; test framework; deploy target like Cloudflare/Vercel/AWS). Say in the question that this determines the relevant plugin prerequisites, starter rules, and verification commands.
- Codebase or not? Confirm your Phase 0 read ("this looks like a docs wiki, so I'll skip the codebase map, sound right?"). Say that the answer decides whether setup builds and maintains a codebase map.
- Team or solo, and any existing conventions worth encoding as rules (commit style, a
CONTRIBUTINGor style doc to point a rule at, house preferences). Say that this keeps future sessions and collaborators following the same project conventions. - Stack extras — recommend only missing catalog plugins that fit the confirmed project. Keep the picker selection unless the user changes it; do not repeat the broad Toolshed plugin question. Say that only confirmed extras will be added to the install plan.
- CLAUDE.md? Recommend a lightweight static one seeded through
/init; they can skip it for now if they prefer. Either answer keeps the live-rules plan. Say that this choice decides whether setup creates always-loaded project context; live rules still handle conditional behavioral enforcement.
Use the AskUserQuestion tool for the choices with clear options (stack extras, codebase-or-not,
CLAUDE.md yes/no); ask the open ones (what is this, conventions) in plain text. If the user said
"just set it up, use good defaults", keep their picker selection and add only obviously useful missing
stack extras.
Before creating an LSP plugin plan, run its required binary check from the catalog. Report a missing binary and its exact install hint, but never run a package manager yourself. Let the user either install it, continue knowing code intelligence stays unavailable until they do, or drop that plugin. In the question, say that this choice decides whether setup can verify that plugin's code intelligence now.
Git setup for non-repos
If Phase 0 found that the project directory is not a git repo, ask once with AskUserQuestion after
the user has confirmed their intended stack and before any pre-reload artifact is written. Recommend
git init with this short reason: it preserves the workspace setup and lets future sessions share it.
- On yes, run
git initin the project root, then write or merge a stack-appropriate.gitignorederived from the detected or confirmed stack. Never overwrite an existing.gitignore. - On no, respect it without asking again. Record that the user declined so Phase 5 can give the one relevant reminder.
- Never auto-commit. Git initialization and
.gitignoreare the only changes in this step; the user still owns the first commit.
Phase 2 — Install, then pre-reload writes
2a. Build and run the plugin plan
Build the installer plan in the current session scratchpad for
install-workspace-plugins.js. Include version: 1, the detected/confirmed absolute projectDir,
selected marketplaces, selected plugins, their scopes, userScopeConfirmed when needed, LSP preflight
records, and only non-plugin settings to merge.
-
Select the core from the catalog:
codebase-mapperandlive-rules, plussidequestunless the user opts out. Add only the confirmed extras. -
Default every selected workspace plugin to
project. Uselocalonly when the user explicitly calls it personal to this repo. Useuseronly when they explicitly request a cross-project install and record that confirmation in the plan. -
Include a portable marketplace declaration only when the catalog has a reproducible source. The official marketplace is already available and needs no declaration.
-
Do not hand-write or merge
enabledPlugins.claude plugin install --scope projectowns those entries and the helper verifies the CLI inventory afterwards. After a successful install, merge only the plan's non-plugin settings and portable marketplace declarations that the CLI did not make project-visible. Preserve every existing setting and never duplicate or contradict the CLI's output. Enable agent teams in the project's.claude/settings.local.jsonwith the merge-safe helper:node -e "const { enableAgentTeams } = require(process.env.CLAUDE_PLUGIN_ROOT + '/lib/project-settings.js'); enableAgentTeams(process.cwd());"This adds
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS: "1"without replacing existingenvkeys. Never write it to shared.claude/settings.json.
Run the helper's read-only pass first, then show the user the install delta and a concrete write preview before
touching project or global configuration. Name every planned path from the bootstrap plan, including the
project's .claude/ files, optional root CLAUDE.md or .gitignore, and the global
~/.claude/settings.json compaction exception when selected; also say which existing files will be merged and
left intact. Ask for approval before installation, with one sentence that the answer matters because the next
step installs the selected plugins and writes exactly this listed configuration. The LSP checks already run
in Phase 1, so use their results to settle any missing-binary choice before the install:
node "${CLAUDE_PLUGIN_ROOT}/bin/install-workspace-plugins.js" --plan "<session-scratchpad>/workspace-plugin-plan.json" --check
After the user settles any missing-binary choice, run the installer before writing any artifact that depends on a selected plugin:
node "${CLAUDE_PLUGIN_ROOT}/bin/install-workspace-plugins.js" --plan "<session-scratchpad>/workspace-plugin-plan.json"
If either command fails, stop. Report the helper's exact failed command and error, say which steps succeeded and which were not run, and give this recovery: fix the reported problem, then rerun the same installer command with the same plan. It is idempotent. Do not write dependent artifacts, request a reload, or claim the workspace setup completed after a partial install. After a successful result, merge the plan's non-plugin settings without replacing existing values, then apply the recorded compaction choices with Workbench's merge-safe helper:
node -e "const { configureSidequestCompaction } = require(process.env.CLAUDE_PLUGIN_ROOT + '/lib/project-settings.js'); configureSidequestCompaction(process.cwd(), { autoCompactWindow: <recorded window or null>, policy: '<recorded policy>', removeProjectAutoCompactWindow: <recorded true or false> });"
Run it only against the target project directory. It writes the selected window to
~/.claude/settings.json, preserving its existing keys including env, enabledPlugins, and
marketplaces; this is the one approved global-settings exception. It writes only
SIDEQUEST_COMPACTION_POLICY to the project's .claude/settings.local.json env block, preserving
unknown top-level keys and every existing env entry. If accepted, it also removes that project's leftover
autoCompactWindow override. Both files stay unchanged on an idempotent re-run. Continue with the other
pre-reload artifacts.
2b. Telemetry and reload handling
Telemetry is never enabled in this phase. When the user enabled it before Phase 0, the required session restart happens before this phase and satisfies this reload boundary too. Otherwise, request the single plugin reload in Phase 3.
2c. Atomic live rules
After a successful install, pin the hashed workspace artifacts to LF in the project-root .gitattributes. Create it when absent; otherwise preserve its content and add only missing entries:
.claude/live-rules/rules/*.md text eol=lf
.claude/live-rules/rules/**/*.md text eol=lf
.claude/.codebase-info/*.md text eol=lf
.claude/.codebase-info/**/*.md text eol=lf
Then write the rules this project needs, using references/rule-templates.md as
reference material rather than a catalog to copy from. Create a new workspace's .claude/live-rules/
directory directly. Write every accepted project rule as one
.claude/live-rules/rules/<stable-name>.md file, then atomically write
.claude/live-rules/manifest.json. Follow the exact individual-rule and manifest format in the reference:
every manifest entry needs its relative rule path, the SHA-256 hash of the UTF-8 rule file with \r bytes
removed, and applicability metadata (description, globs, dirs, prompt, priority, enabled,
include) derived for this project. Generate and validate those hashes mechanically, never by hand. A fresh workspace never creates
.claude/live-rules.md.
- Write the craft baseline (global,
priority90–100): atomic commits / two hats, simple design, surgical/Karpathy directive, verify-before-done, no-inline-comments/naming. Ship these on every workspace. - Write the self-improvement rule from
references/self-improvement.md, the baked-in loop. Ship it on every workspace. - Write any other rule only when a visible project signal justifies it, such as an existing file, a confirmed
stack choice, a maintenance script, or a stated convention. Scope it with the appropriate
globs,dirs, orprompt; do not ship a catalog rule because it might become useful later. - Optionally write the guidelines-pointer rule and copy
clean-code-principles.mdif the user wants the deeper digest available (copyreferences/clean-code-principles.mdinto.claude/).
Derive every generated rule's wording for this project and make it conform to the project's own voice and style rules. Compare generated text with the relevant template blocks: byte-identical output means the rule was copied instead of derived, so rewrite it for this project or drop it.
Keep bodies tight. Follow the live-rules format exactly (no bare --- inside a body, use ***). Write
rule files plus the manifest through temporary siblings and rename them into place together. If a
project already has .claude/live-rules.md, migrate its rules into atomic files without deleting the
original until the manifest and matcher behavior have been checked.
2d. Structure notes
Write a short .claude/.codebase-info/structure.md (or, for a not-a-codebase project, a top-level
note) capturing how the project is meant to be laid out — the organizing principle, where things
go, what belongs where. See references/structure-notes.md. This matters most for greenfield:
it's where intent gets written down before there's code for map-codebase to read. For an existing
codebase this is light (the map will cover structure); for greenfield it's a real deliverable.
2e. CLAUDE.md (optional)
Recommend a lightweight CLAUDE.md alongside live rules. They have separate jobs: CLAUDE.md is the
always-loaded, static project context — what the project is, its stack, and its build and test commands.
Live rules are conditional, targeted behavioral enforcement that gets injected when applicable. One does
not replace the other; together they are the default setup.
If the user wants CLAUDE.md, delegate to the built-in /init rather than hand-rolling it. Note the
deliberate exception: every other toolshed plugin says never touch CLAUDE.md, because their hooks
handle injection. init-workspace is the one-time static setup, so seeding CLAUDE.md here is correct,
and the self-improvement loop is explicitly allowed to update it later. Say this out loud so it doesn't
read as breaking the house rule.
Phase 3 — Reload boundary
All pre-reload writes and the complete installation must succeed before this boundary. A Claude Code restart that completed the telemetry flow counts as this boundary when it happened after the selected plugins were installed. Otherwise request one reload and wait:
The selected plugins are installed and the workspace files are ready. Run
/reload-plugins, then tell me to continue. If Claude Code refuses because the reload changes MCP or LSP servers, run/reload-plugins --force. Restart Claude Code only if reload still does not load them, and come back withclaude --continueso this run keeps its answers instead of starting over.
Do not request an earlier or second reload. Do not pretend the plugins are loaded and barrel into Phase 4 in the same turn — the whole point is to verify against really-loaded plugins.
Phase 4 — Post-reload: build and verify
Now the plugins are live. First run claude plugin list --json and confirm every selected plugin is
installed, enabled, and at its requested scope. Then do the work that needed them and verify each piece
empirically — this is the part that separates "wrote some files" from "set up a working workspace."
- Telemetry. When the project opted in, invoke
/observability:enable-project-telemetryand let it re-verify. It owns the verification command, which lives under its own plugin root.foundverifies telemetry. With a healthy observer,not-foundmeans configured, pending first export. Report it as unverified and give the user that skill to run later. Do not schedule another re-check. - Codebase map (skip for a not-a-codebase project). Invoke
map-codebase. For a big repo it fans out; with a ready Sidequest it can hand off an existing-code map and resume on the writer's completion. Wait for that completion before Phase 4 continues, then confirm.claude/.codebase-info/INDEX.mdexists. - live-rules is injecting. On this turn, confirm the live-rules content is actually in your context (the plugin injects a recognizable rules block on SessionStart and every prompt). If you can see your starter rules injected, it's wired. If not, the plugin isn't loaded, so send the user back to reload/restart.
- codebase-mapper is injecting. Same check: confirm the
INDEX.mdhub is being injected on the prompt. Seeing it in context is the proof the hook fired. - sidequest board. If selected, bring up the board (
sidequest dashboard, or ask the board skill), then apply the profile recorded after Phase 0 withsidequest profile use <profile> --project <board>. For a new project profile, create it from its recorded starter and apply only its confirmed delta before using it. Then callboard_configfor this board withworktreeIsolation: truefor isolated worktrees orworktreeIsolation: falsefor the shared checkout, using the choice recorded in the plan. Confirm the returned setting. Report the URL, selected profile, and executor checkout choice, so the user sees the Kanban and its routing policy are live. - Optional plugins. Verify each selected extra is usable: an LSP responds and its binary is on
PATH, a named skill resolves, or its documented integration opens. Keep it quick, but verify every selected plugin rather than assuming a loaded entry works.
If any check fails, fix it (usually a settings merge mistake, an unavailable prerequisite, or a rule scope that matches nothing) and re-verify. Report what you confirmed, concretely, not "should work."
Phase 5 — Wrap up
- Tell the user exactly what they got: which plugins are enabled, which rules are live (and that
editing them takes effect next prompt), whether a map was built, where the board is, and Model Gateway
wiring as
wiredornot wiredwith its mode. Fornot wired, include the model-gateway skill's exactenv --write-userrecovery command for global mode. - Give a practical handover using only the tools that were selected and verified. Tell them they can say
"build/add/implement ..." or run
/sidequest:featurefor feature work when Sidequest is enabled; run/codebase-mapper:update-codebase-mapafter structural code changes when a map exists; ask to "add a live rule for ..." or run/live-rules:add-rulefor a new project rule; and run/playbook:retrofor a deeper workspace reflection. Also name/workbench:workbench-doctorfor health checks and/workbench:update-toolshedfor updates. Keep this as a short next-actions list, not another inventory. - Commit reminder. If the project is a git repo, tell them to commit
.claude/so the team and every future session share the setup. Offer to do it (ship-by-default if that's their preference). If they declined Git setup, say once that the workspace is uncommitted and that they can rungit init, add a stack-appropriate.gitignore, then commit.claude/when they want to back it up. - Send them to the docs, and say why it matters. Most people skip the docs for a plugin, and these plugins punish that: they route work to other models, write config into the project, and inject context on every prompt. Point at https://eigenwise.github.io/eigenwise-toolshed/getting-started/ and name the specific page for each plugin you just installed, so the link is one click from something they now have. Say plainly that this handover is the short version and the guides cover the behavior they'll actually hit. Do not bury this in a list of other links.
Guidelines
- Orchestrate, don't reinvent. Use the bootstrap helper for plugin installation,
map-codebasefor the map,/initforCLAUDE.md,add-rule/skill-creatorwhere they fit. You write the glue and the sequencing. - Generic by construction. No stack is baked into the flow. Everything stack-specific comes from the reference catalog, which you extend when you meet a stack it doesn't cover yet (that extension is itself a self-improvement move).
- Never clobber. Merge into existing
.claude/files; a user's rules and config survive. - Verify against reality. The success test is selected plugins loaded and usable in a really-loaded session, plus the relevant hooks firing, not files on disk. Watch them fire.
- Respect the reload boundary. Don't collapse Phases 2 and 4 into one turn.
- Don't leak secrets. Rules and notes say where config lives, never actual credential values.
Success criteria
- Workbench is installed at user scope
- The user received the short orientation before the first question, including order, timing, merge-only behavior, install approval, reload, and verification
- Every user-facing question included one sentence explaining why the answer matters
- Before each write, the user was told the concrete paths; the compaction question and write preview named
~/.claude/settings.jsonas the one global-settings exception - Telemetry consent was the first question; a yes completed the telemetry flow and restarted Claude Code before resuming
- Project intent was asked before the picker; current marketplace catalog plugin picker came third with intent-grounded recommendations, before Phase 0
- Phase 0 assessment done (new/existing, codebase/not, existing
.claude/read and merged) - When Sidequest is selected, recurring jobs and required capabilities were confirmed before routing; routing profile and executor checkout choice were recorded in the bootstrap plan
- Every derived category is justified by this project's recurring work and by its selected model and effort;
every one has a non-empty
contractand completereadonlyandartifactRootspolicy - Stack and compact project-detail interview complete; LSP binary prerequisites checked
- Bootstrap plan created in the session scratchpad; helper check and install both succeeded
- CLI-owned
enabledPluginsleft toclaude plugin install; only non-plugin settings and portable marketplace declarations merged - Live rules and structure notes written after the successful install; every rule beyond the craft baseline and self-improvement rule is justified by an observed project need, and every generated rule follows the project's voice and style and is not byte-identical to a template block
- Codebase map built via
map-codebase(or deliberately skipped for a not-a-codebase project) - One reload requested after all pre-reload work; user reloaded before Phase 4
- Every selected plugin verified installed, enabled, requested-scope, and usable; relevant hooks fire
- User told what they got and reminded to commit
.claude/
References
references/stack-plugins.md— stack → installable plugins/marketplaces/LSP catalogreferences/rule-templates.md— craft-baseline and stack-specific live-rule reference materialreferences/self-improvement.md— the baked-in self-improvement live rule and how to install itreferences/structure-notes.md— the structure-notes template and when it's a real deliverablereferences/clean-code-principles.md— optional bundled digest for the guidelines-pointer rule
Alternatives
Compare before choosing
narrative-io/narrative-skills-marketplace
design-analysis
Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "
luongnv89/claude-howto
self-assessment
Comprehensive Claude Code self-assessment and learning path advisor. Runs a multi-category quiz covering 10 feature areas, produces a detailed skill profile with per-topic scores, identifies specific gaps, and generates a personalized learning path with prioritized next steps. Use when asked to "assess my level", "take the quiz", "find my level", "where should I start", "what should I learn next", "check my skills", "skill check", or "level up".
PramodDutta/qaskills
Pairwise Test Generator
Generate optimized test combinations using pairwise (all-pairs) testing algorithms to achieve maximum coverage with minimum test cases across multiple input parameters
PramodDutta/qaskills
RAG Regression Testing
Gate RAG pipelines in CI with versioned golden eval sets, per-metric thresholds, baseline drift detection, and a build that fails when retrieval or answer quality regresses.