From cekernel
Initializes cekernel runtime directory and user profile interactively, configuring VAR_DIR, backend (headless/wezterm/tmux), and optional env variables from README.md.
npx claudepluginhub clonable-eden/plugins --plugin cekernelThis skill is limited to using the following tools:
Interactive setup for cekernel runtime environment. Creates the directory structure and writes a user profile to `~/.config/cekernel/envs/default.env`.
Sets up b00t direnv pattern for automatic per-project environment loading: direnv → .envrc → dotenv → .env, with datums specifying required vars and .env holding gitignored secrets.
Manages environment variables handler operations in DevOps basics, providing step-by-step guidance, best practices, and configurations for git, docker, CI/CD, infrastructure fundamentals.
Guides developers in setting up dev environments: installing tools like Node.js/Python/Docker/Git, configuring env vars/configs, verifying across macOS/Linux/Windows.
Share bugs, ideas, or general feedback.
Interactive setup for cekernel runtime environment. Creates the directory structure and writes a user profile to ~/.config/cekernel/envs/default.env.
Use AskUserQuestion to ask both questions at once:
~/.local/var/cekernel as default. Present as "Use default?" with the default path shown. If the user selects "Other", they can provide a custom path.Question 1: "Use ~/.local/var/cekernel as the runtime directory?"
header: "VAR_DIR"
options:
- label: "~/.local/var/cekernel (Recommended)"
description: "User-local directory. No sudo required."
- label: "/usr/local/var/cekernel"
description: "System-wide directory. May require sudo to create."
(User can also select "Other" to provide a custom path)
Question 2: "Which backend should cekernel use?"
header: "Backend"
options:
- label: "headless (Recommended)"
description: "No terminal required. Runs in the background."
- label: "wezterm"
description: "Visualize Workers in WezTerm tabs."
- label: "tmux"
description: "Run Workers in tmux sessions."
Map the answers:
headless, wezterm, or tmux)Present configurable variables and let the user optionally customize them.
Read envs/README.md using the Read tool and display the User-configurable Variables table (Variable, Default, Purpose columns). Exclude CEKERNEL_VAR_DIR and CEKERNEL_BACKEND since they were already configured in Step 1.
Use AskUserQuestion:
Question: "Would you like to customize any additional variables?"
header: "Additional Configuration"
options:
- label: "No, use defaults"
description: "Continue with default values for all other variables."
- label: "Yes, customize"
description: "Set one or more variables interactively."
Use AskUserQuestion with "Other" (free-text input):
Question: "Enter a variable to set (KEY=VALUE format):"
header: "Set Variable"
(User provides free-text input via "Other")
Separator normalization: The user may use any common separator between key and value (=, :, ;, /, |, or space). Normalize the input by replacing the first occurrence of any of these separators with = before validation and storage. Examples — all of these are normalized to CEKERNEL_WORKER_TIMEOUT=1800:
CEKERNEL_WORKER_TIMEOUT=1800 → as-is
CEKERNEL_WORKER_TIMEOUT:1800 → replace : with =
CEKERNEL_WORKER_TIMEOUT 1800 → replace space with =
envs/README.md. If not found, show an error and ask again.^[1-9][0-9]*$true, false" → must be exactly true or falsewezterm, tmux, headless" → must be one of those exact stringsnone, open, pbcopy" → must be one of those exact stringsAfter successfully setting a variable, store it and ask:
Question: "Would you like to set another variable?"
header: "More Variables"
options:
- label: "No, continue"
description: "Proceed with setup."
- label: "Yes"
description: "Set another variable."
Repeat from 2c until the user selects "No, continue".
Run the following commands using the chosen VAR_DIR:
mkdir -p "${VAR_DIR}/ipc"
mkdir -p "${VAR_DIR}/locks"
mkdir -p "${VAR_DIR}/logs"
mkdir -p "${VAR_DIR}/runners"
if [ ! -f "${VAR_DIR}/schedules.json" ]; then
echo '[]' > "${VAR_DIR}/schedules.json"
fi
Write ~/.config/cekernel/envs/default.env:
mkdir -p "$HOME/.config/cekernel/envs"
cat > "$HOME/.config/cekernel/envs/default.env" <<EOF
# cekernel user profile (generated by /setup)
CEKERNEL_VAR_DIR=${VAR_DIR}
CEKERNEL_BACKEND=${BACKEND}
# Additional variables set during setup:
${ADDITIONAL_VARS}
EOF
Where ${ADDITIONAL_VARS} is the list of KEY=VALUE lines collected in Step 2 (one per line). If no additional variables were set, omit the comment and the blank section.
Important: VAR_DIR must be written as an absolute path (e.g., /Users/alice/.local/var/cekernel), not with ~. Tilde is not expanded inside variable values read by load-env.sh. If the user specifies ~/.local/var/cekernel, expand it to $HOME/.local/var/cekernel before writing.
Display the result and guide the user to further configuration:
Setup complete:
Runtime directory: ${VAR_DIR}
Backend: ${BACKEND}
Additional variables: ${COUNT} configured (or "none" if skipped)
User profile: ~/.config/cekernel/envs/default.env
See envs/README.md for other configuration options.
If the user selected wezterm, also mention:
For WezTerm backend, see config/README.md to install the WezTerm plugin.
Read these files using the Read tool to provide the actual content path relative to the plugin directory.
sudo at any point. The purpose of this skill is to avoid sudo by using user-local paths.~/.config/cekernel/envs/default.env already exists, show the current content and ask the user whether to overwrite.~ expansion correctly in bash (use $HOME in scripts).