with one click
ln-010-dev-environment-setup
// Installs agents, configures MCP servers, aligns marketplace plugins, creates and audits instructions. Use after setup or when agents/MCP/plugins need alignment.
// Installs agents, configures MCP servers, aligns marketplace plugins, creates and audits instructions. Use after setup or when agents/MCP/plugins need alignment.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | ln-010-dev-environment-setup |
| description | Installs agents, configures MCP servers, aligns marketplace plugins, creates and audits instructions. Use after setup or when agents/MCP/plugins need alignment. |
| disable-model-invocation | true |
| license | MIT |
Paths: File paths (
references/,../ln-*) are relative to this skill directory.
Type: L2 Domain Coordinator Category: 0XX Shared
Runtime-backed coordinator for environment setup. The runtime is the execution SSOT. Worker outputs are standalone summaries, not chat prose.
Load these before execution:
references/coordinator_runtime_contract.mdreferences/environment_setup_runtime_contract.mdreferences/environment_worker_runtime_contract.mdreferences/coordinator_summary_contract.mdreferences/agent_skill_roots_contract.mdreferences/environment_state_contract.mdreferences/environment_state_schema.jsonMCP servers are targets of this workflow, not a prerequisite for starting it. If a server is disconnected or unavailable, continue with file and CLI inspection and report that surface as disconnected or skipped instead of failing the coordinator.
| Parameter | Required | Default | Description |
|---|---|---|---|
targets | No | both | claude, codex, or both |
dry_run | No | false | Plan without mutating |
plugins | No | agile-workflow | Pass-through to ln-013. Use an explicit plugin list, or all to request every marketplace plugin. Optional plugins are never installed silently. |
auto_install_providers | No | false | Pass-through to ln-013 MCP provider check. When false, provider checks are detection-only. |
apply_ide_override | No | false | Pass-through to ln-012 Phase 6b. When true, ln-012 may write claudeCode.initialPermissionMode and claudeCode.allowDangerouslySkipPermissions to Cursor / VSCode user settings after explicit user consent. When false (default), Phase 6b is detection-only and reports drift without mutating IDE settings. |
Runtime family: environment-setup-runtime
Identifier:
targets-{normalizedTargets}Phases:
PHASE_0_CONFIGPHASE_1_ASSESSPHASE_1B_PROVIDER_SELECTIONPHASE_2_DISPATCH_PLANPHASE_3_WORKER_EXECUTIONPHASE_4_VERIFYPHASE_5_WRITE_ENV_STATEPHASE_6_SELF_CHECKTerminal phases:
DONEPAUSEDCollect one environment snapshot:
known_marketplaces.json install-location drift, whether cache is visible under ~/.codex/skills, whether ~/.codex/skills is a whole-root junction to ~/.claude/plugins, and whether approval_policy=never plus sandbox_mode=danger-full-access are already alignedbasedpyright for Python, csharp-ls for C#). Use mcp__hex-graph__install_graph_providers with mode: "check" if hex-graph MCP is connected.hex-skills/environment_state.json if present~/.cursor/extensions/anthropic.claude-code-* and ~/.vscode/extensions/anthropic.claude-code-*. For each found, read claudeCode.initialPermissionMode and claudeCode.allowDangerouslySkipPermissions from the matching IDE user settings.json. Detection-only — no writes here.Checkpoint payload:
assess_summaryUser selects the task tracker provider (linear, github, file). Selection is persisted in .hex-skills/environment_state.json -> task_management.provider and reused by every task-related skill (ln-200, ln-220, ln-300, ln-401, ln-130, etc.).
MANDATORY READ: Load references/tracker_provider_contract.md before this phase.
Codex exec --full-auto cannot prompt the user mid-run. Selection MUST go through runtime pause + pending_decision + record-decision (NOT AskUserQuestion).
Decision tree:
task_management from env state.available = filter([linear, github, file], byAvailability):
linear available iff Linear MCP server is connected.github available iff gh auth status ok AND repository detected AND (no project_number yet, OR existing project has Status field with all 7 canonical options: Backlog, Todo, In Progress, To Review, To Rework, Done, Canceled).file always available.task_management.provider is already set AND task_management.status == "active":node references/scripts/environment-setup-runtime/cli.mjs pause \
--identifier {identifier} \
--reason "Confirm tracker provider" \
--payload '{"kind":"tracker_provider_confirmation","question":"Keep current tracker {provider}?","choices":["keep","switch"],"resume_to_phase":"PHASE_1B_PROVIDER_SELECTION"}'
Resume with set-decision. On keep -> reuse existing provider. On switch -> fall through to step 4.
switch AND available.length > 1:node references/scripts/environment-setup-runtime/cli.mjs pause \
--identifier {identifier} \
--reason "Select tracker provider" \
--payload '{"kind":"tracker_provider_selection","choices":<available>,"resume_to_phase":"PHASE_1B_PROVIDER_SELECTION"}'
available.length == 1, do NOT pause. Auto-select with selected_by: "single_option" and write the reason (e.g. "Only file mode available because: Linear MCP disconnected, gh CLI not authenticated").node references/scripts/environment-setup-runtime/cli.mjs checkpoint \
--identifier {identifier} \
--phase PHASE_1B_PROVIDER_SELECTION \
--payload '{"provider_selection":{"chosen":"<provider>","available":<available>,"reason":"<text>","selected_by":"user|single_option"}}'
Checkpoint payload:
provider_selection.chosenprovider_selection.availableprovider_selection.reasonprovider_selection.selected_byBuild selective dispatch plan. Only invoke workers that have work.
Dispatch precedence:
ln-013-config-syncer becomes mandatory before Codex can be reported as healthy.ln-012-mcp-configurator becomes mandatory even when MCP registration is already complete. ln-012 owns both graph provider dependency installation (PHASE_3) and graph indexing (PHASE_5).Workers:
ln-011-agent-installerln-012-mcp-configuratorln-013-config-syncerln-014-agent-instructions-managerStandalone skills packaged in setup-environment but not dispatched by ln-010:
ln-015-hex-line-uninstaller remains direct-invocation only because it removes existing Claude-side integration surfaces.Checkpoint payload:
dispatch_planInvoke only selected workers. Do not re-probe the whole environment between worker calls.
Phase 1 assessment is the shared discovery snapshot. Materialize child manifests from that snapshot and pass them into managed worker runs.
For each selected worker:
child_run_idchild_summary_artifact_pathchild_run metadata before delegationenvironment-worker-runtime child runrunId and summaryArtifactPathenvironment-setup-runtimeEach worker remains standalone-capable, but Phase 3 always uses managed transport.
Expected summary kinds:
env-agent-installenv-mcp-configenv-marketplace-alignenv-instructionsRecord summaries with runtime record-worker.
Run targeted verification against the post-worker state:
Checkpoint payload:
verification_summaryWrite final durable state to:
.hex-skills/environment_state.jsonIncludes all detected sections: agents (with alignment status, marketplace plugins, Codex skill-root health, and Codex execution-default state), task_management, research, claude_md, assessment, hooks, ide_extension (Cursor / VSCode Claude Code extension state from Phase 1 plus any Phase 6b mutations from ln-012).
Rules:
.hex-skills/environment_state.jsonCheckpoint payload:
env_state_writtenfinal_resultConfirm:
dry_runCheckpoint payload:
passfinal_resultRuntime artifacts:
.hex-skills/runtime-artifacts/runs/{run_id}/{summary_kind}/{identifier}.jsonDurable environment output:
.hex-skills/environment_state.jsonDo not mix these layers.
Host Skill Invocation: Skill(skill: "...", args: "...") is mandatory delegation.
SKILL.md, treat args as $ARGUMENTS, execute that skill workflow, then return here with its result/artifact.| Phase | Worker | Context |
|---|---|---|
| 3 | ln-011-agent-installer | Install or update CLI agents |
| 3 | ln-012-mcp-configurator | Configure MCP servers, hooks, permissions, and IDE extension permission mode (Phase 6b) |
| 3 | ln-013-config-syncer | Install/verify Claude and Codex marketplace plugins, align MCP state, and align Codex defaults |
| 3 | ln-014-agent-instructions-manager | Create and audit instruction files |
node references/scripts/environment-worker-runtime/cli.mjs start --skill {worker} --identifier {childIdentifier} --manifest-file {childManifestPath} --run-id {childRunId} --summary-artifact-path {childSummaryArtifactPath}
node references/scripts/environment-setup-runtime/cli.mjs checkpoint --identifier {identifier} --phase PHASE_3_WORKER_EXECUTION --payload '{"child_run":{"worker":"{worker}","run_id":"{childRunId}","summary_artifact_path":"{childSummaryArtifactPath}"}}'
Skill(skill: "{worker}", args: "{workerArgs} --run-id {childRunId} --summary-artifact-path {childSummaryArtifactPath}")
Read {childSummaryArtifactPath}
node references/scripts/environment-setup-runtime/cli.mjs record-worker --identifier {identifier} --payload '{...environment worker summary...}'
apply_ide_override propagates from ln-010 input to ln-012 only. Default false keeps Phase 6b in detection mode and reports IDE drift as a WARN in the assessment summary; passing true lets ln-012 prompt the user and write Cursor / VSCode settings.
plugins and auto_install_providers propagate from ln-010 input to ln-013 only. Default plugin selection is agile-workflow; optional plugins require an explicit list or all. auto_install_providers=false keeps MCP provider handling detection-only.
- Phase 1: Assess (pending)
- Phase 1b: Tracker provider selection (pending)
- Phase 2: Build dispatch plan (pending)
- Phase 3: Start child runtime, checkpoint child metadata, and run selected workers (pending)
- Phase 4: Verify final state (pending)
- Phase 5: Write environment_state.json (pending)
- Phase 6: Self-check (pending)
ln-015-hex-line-uninstaller from normal setup; it is standalone cleanup..hex-skills/environment_state.json is written only in Phase 5.dry_run may end with final_result=DRY_RUN_PLAN and skip final state write..hex-skills/environment_state.json validated and written, or explicit DRY_RUN_PLANOptional reference: load references/meta_analysis_protocol.md only when the user asks for post-run meta-analysis or protocol-formatted run reflection.
Skill type: domain-coordinator. When requested, run after all phases complete. Output to chat using the protocol format.
Version: 6.1.0 Last Updated: 2026-04-07