init-config-devbox
Performs initial configuration of a development host with a fixed sequence: setup proxy first, then configure pixi/uv/npm/bun global tooling, and finally configure Claude Code. Use only when explicitly invoked by name for first-time host bootstrap or full re-bootstrap.
Best use case
init-config-devbox is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Performs initial configuration of a development host with a fixed sequence: setup proxy first, then configure pixi/uv/npm/bun global tooling, and finally configure Claude Code. Use only when explicitly invoked by name for first-time host bootstrap or full re-bootstrap.
Teams using init-config-devbox should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/init-config-devbox/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How init-config-devbox Compares
| Feature / Agent | init-config-devbox | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Performs initial configuration of a development host with a fixed sequence: setup proxy first, then configure pixi/uv/npm/bun global tooling, and finally configure Claude Code. Use only when explicitly invoked by name for first-time host bootstrap or full re-bootstrap.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
SKILL.md Source
# Initial development host configuration skill
Use this skill to run the full host configuration process in a repeatable way.
## Activation
- This skill must be triggered manually by name: `init-config-devbox`.
- Do not auto-activate this skill for unrelated tasks.
## Network policy
- Treat all network access as fallback.
- Prefer local assets first (`scripts/`, existing binaries, local config/state).
- Use network only when required inputs/tools are missing or explicitly requested.
- Proxy usage is controlled by `[proxy].candidate_list` from selected TOML:
- If `candidate_list` is present and non-empty, use proxy-aware flow.
- If `candidate_list` is missing or empty, run all installation/configuration commands without proxy setup/sourcing.
## Inputs and references
- Proxy script: `scripts/setup-proxy.sh`
- Unified configuration file: `config.toml`
- Config schema: `config-schema.json`
- Vendored scripts: `scripts/`
- Refresh vendored scripts from raw GitHub URLs (no git checkout):
- `bash scripts/sync-from-lanren-ai.sh --ref main`
Configuration file selection:
- Allow user to specify an alternate TOML path (for example via prompt input or an explicit argument).
- If user does not provide a TOML path, fall back to the skill-accompanied file:
- `./config.toml`
- Validate selected TOML against `./config-schema.json` before applying changes.
## Required execution order
### 1) Setup proxy (`setup-proxy.sh` and `.bashrc`)
1. If `[proxy].candidate_list` is present and non-empty, use accompanied local script first:
- `install -m 0755 ./scripts/setup-proxy.sh "$HOME/setup-proxy.sh"`
2. If `[proxy].candidate_list` is present and non-empty, ensure `.bashrc` contains proxy candidates in order:
- `export PROXY_CANDIDATE_LIST="<candidate_list joined by comma>"`
- Do not hardcode host-specific proxy entries in this skill; use values from TOML or existing host `.bashrc`.
3. For proxy-required install operations, source first only when `[proxy].candidate_list` is present and non-empty:
- `source ~/setup-proxy.sh`
4. If `[proxy].candidate_list` is missing or empty, skip proxy setup/sourcing entirely.
### 2) Configure/install pixi
Rules:
- If `[proxy].candidate_list` is present and non-empty, source proxy before pixi install/update commands.
- If `[proxy].candidate_list` is missing or empty, run pixi commands directly without proxy sourcing.
- Use global tool install: `pixi global install ...`
- Read channel priority from `[pixi].channel_priority` in TOML (do not hardcode channels in this skill).
- If `[paths].pixi_cache_dir` is set and non-empty, redirect pixi/rattler cache via `.bashrc`:
- `export PIXI_CACHE_DIR="<pixi_cache_dir>"`
- `export RATTLER_CACHE_DIR="<pixi_cache_dir>"`
- If `[paths].pixi_cache_dir` is missing or empty, do not set `PIXI_CACHE_DIR`/`RATTLER_CACHE_DIR`; use Pixi/Rattler defaults.
Global tool set:
- Read from `[pixi].global_tools` in TOML (do not hardcode tool names in this skill).
Install command:
- If `[proxy].candidate_list` is present and non-empty:
- `source ~/setup-proxy.sh; pixi --no-progress global install <tools from [pixi].global_tools>`
- If `[proxy].candidate_list` is missing or empty:
- `pixi --no-progress global install <tools from [pixi].global_tools>`
### 3) Configure/install uv
Rules:
- If `[proxy].candidate_list` is present and non-empty, source proxy before uv install/update commands.
- If `[proxy].candidate_list` is missing or empty, run uv commands directly without proxy sourcing.
- Use global tool install: `uv tool install ...`
- If `[paths].uv_cache_dir` is set and non-empty, redirect uv cache via `.bashrc`:
- `export UV_CACHE_DIR="<uv_cache_dir>"`
- If `[paths].uv_cache_dir` is missing or empty, do not set `UV_CACHE_DIR`; use uv defaults.
Global tool set:
- Read from `[uv].global_tools` in TOML (do not hardcode tool names in this skill).
Install commands:
- If `[proxy].candidate_list` is present and non-empty:
- `source ~/setup-proxy.sh; uv tool install <each tool from [uv].global_tools>`
- If `[proxy].candidate_list` is missing or empty:
- `uv tool install <each tool from [uv].global_tools>`
### 4) Configure/install npm (skip bootstrap if already present)
Rules:
- If `npm --version` succeeds, skip npm bootstrap installation.
- If `[proxy].candidate_list` is present and non-empty, source proxy before npm config/install operations.
- If `[proxy].candidate_list` is missing or empty, run npm config/install operations directly without proxy sourcing.
- Configure npm mirror from TOML:
- `npm config set registry <[urls].npm_registry_mirror>`
- Install global packages with latest policy:
- Read package list from `[npm].global_packages` and apply `[npm].install_global` / `[npm].install_latest`.
Note:
- If no npm global package list is explicitly provided, only set registry/config and skip global installs.
### 5) Configure/install bun (skip bootstrap if already present)
Rules:
- If `bun --version` succeeds, skip bun bootstrap installation.
- If bootstrap is needed and `[proxy].candidate_list` is present and non-empty, proxy may be used for bootstrap only.
- If `[proxy].candidate_list` is missing or empty, run bun bootstrap/install/update directly without proxy sourcing.
- Install global packages with latest policy:
- Read package list from `[bun].global_packages` and apply `[bun].install_global` / `[bun].install_latest`.
- Update globals:
- `bun update -g --latest`
### 6) Configure Claude Code
Use local vendored scripts in `scripts/claude-code-cli/`.
Required outcomes:
1. Skip login/onboarding enabled.
2. Custom alias launcher created (read alias from `[claude].alias`; do not hardcode alias in this skill).
3. Tavily MCP configured.
4. Context7 MCP configured.
Credential policy:
- Read secrets and all configurable values from the selected TOML (user-provided TOML if specified, otherwise `./config.toml`).
- Do not write secrets into markdown docs.
Missing credential handling:
- For each required credential (`anthropic_api_key`, `tavily_api_key`, `context7_api_key`), if the TOML value is empty or missing, explicitly ask the user how to proceed.
- Offer exactly these choices per missing credential:
1. Provide the credential value directly.
2. Provide an environment variable name that already contains the credential.
3. Refuse to provide it.
- If user provides a value or env reference, use it only for the current run unless the user explicitly asks to persist it.
- If user refuses to provide a credential, skip only the steps that require that credential and continue with all remaining applicable steps.
- Never block the full workflow due to one missing credential if unaffected steps can still run.
Credential-to-step mapping:
- `anthropic_api_key` is required for `scripts/claude-code-cli/config-custom-api-key.sh`.
- `tavily_api_key` is required for `scripts/claude-code-cli/config-tavily-mcp.sh`.
- `context7_api_key` is required only when applying Context7 API key via `claude mcp add-json`; `scripts/claude-code-cli/config-context7-mcp.sh` can still run.
Execution sequence (using vendored scripts):
- `sh scripts/claude-code-cli/config-skip-login.sh`
- `sh scripts/claude-code-cli/config-custom-api-key.sh --alias-name <alias> --api-key <claude_api_key>`
- `sh scripts/claude-code-cli/config-tavily-mcp.sh --api-key <tavily_api_key>`
- `sh scripts/claude-code-cli/config-context7-mcp.sh`
- Then ensure Context7 key is applied in MCP env via `claude mcp add-json` if needed.
## Verification checklist
- Proxy selection works: `source ~/setup-proxy.sh`
- Pixi tools present: `pixi global list`
- uv tools present: `uv tool list`
- npm available and configured: `npm --version` and `npm config get registry`
- bun globals present: `bun pm -g ls`
- Claude onboarding skipped: `~/.claude.json` contains `hasCompletedOnboarding=true`
- Claude MCP healthy: `claude mcp list` shows `tavily` and `context7`
## Documentation requirements
- Keep all credentials only in the selected TOML (fallback: `./config.toml`).
- Store non-secret execution notes in your current task output/logs; do not duplicate secrets in docs.Related Skills
init-pixi-project
Initialize and scaffold a new Pixi-managed Python project, or upgrade an existing one. Use when the user explicitly mentions "init", "initialize", or "setup" in conjunction with "pixi". Handles existing projects by prompting for confirmation before merging.
pixi-make-offline-channel
Use when the user wants to create a self-hosted, offline-installable Conda channel (mirror) containing a specific subset of packages using Pixi.
pixi-make-cu-build-env
Guides the agent to setup a new or existing Pixi environment for compiling C++ and CUDA code. It ensures the correct compilers, toolkits, and CMake configurations are in place for a robust user-space build.
pixi-install-nvidia
Use when the user says "use pixi to install <some nvidia tool>" (or similar) and wants NVIDIA/CUDA/GPU packages installed via Pixi (no sudo/apt), e.g., CUDA toolkit pieces, cuDNN/NCCL, PyTorch CUDA builds, RAPIDS.
pei-docker-usage
Helper for PeiDocker (`pei-docker-cli`). Trigger ONLY when the user explicitly requests PeiDocker usage OR when working within a PeiDocker-generated project (indicated by `user_config.yml`).
conan-basic-usage
Basic operations for the Conan C++ package manager. Use when the user explicitly asks to 'use conan' for tasks like creating projects, installing dependencies, or building packages, or asks for 'how to' guidance on Conan setup.
explore-dnn-model
Manual invocation only; use only when the user explicitly requests `explore-dnn-model` by name. Explore how to run a given DNN model checkpoint in the current Python environment by locating weights + upstream source code, resolving dependencies with user confirmation, running reproducible experiments under `tmp/`, and producing reports about I/O contracts, timing, and profiling.
openspec-ext-revise-by-decision
Manual invocation only; use only when the user explicitly requests `openspec-ext-revise-by-decision` by exact name. Revise OpenSpec change artifacts from a review or decision document that contains questions plus `DECISION` blocks, applying chosen decisions from a review file such as `openspec/changes/<change>/review/review-*.md` back into proposal, design, specs, and tasks.
openspec-ext-review-plan
Review an OpenSpec change (or a single OpenSpec change artifact file) for completeness, coherence, and alignment with existing system design; capture actionable feedback plus open questions; write a review report under the change directory (review/review-YYYYMMDD-HHMMSS.md).
openspec-ext-respond-to-review
Read an OpenSpec review report critically, evaluate the reviewer's proposals and findings against the current change artifacts and repository context, and write developer-owned final decisions/responses back into the review document. Use when the user explicitly mentions `openspec` or points to a path under `openspec/` while asking to examine a review report carefully, decide open questions, respond to findings, fill `DECISION` blocks, respond to an OpenSpec review file, or record final answers in an OpenSpec review document without yet revising the proposal, design, specs, or tasks.
openspec-ext-hack-through-test
Manual invocation only. OpenSpec-specific hack-through-testing workflow targeting production-level end-to-end paths using real data and real user workflows — not CI smoke/unit/integration tests. Three subskills: `propose` to create an OpenSpec change with HTT-ready test cases (automatic scripts and interactive guides) by invoking `openspec-propose` or `openspec-ff-change`, `revise` to update an existing OpenSpec change so its artifacts support hack-through-testing-driven implementation and testing, and `run` to exercise an implemented OpenSpec change through the full hack-through-testing loop (in-place by default, or in a disposable snapshot worktree when requested). Use when the user explicitly asks for `openspec-ext-hack-through-test`, points to `openspec/changes/...` while asking to propose, revise, run, exercise, or prepare work under hack-through-testing principles, or wants OpenSpec work shaped for fast blocker discovery through patch-forward testing.
openspec-ext-explain
Create or update OpenSpec change explanation docs that capture developer-facing questions and answers under `openspec/changes/.../explain/`. Use when the user explicitly mentions `openspec` or points to a path under `openspec/` while asking to create, update, document, or maintain a Q&A, FAQ, explain note, or question-and-answer doc for an OpenSpec change based on user questions, implementation notes, review questions, or current chat context.