wizard
Give every repository script a raw Make target, an assisted terminal wizard, and a command skill.
Skill by Camgineer
Chalk Labs
Need help deploying wizard?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/camgineer-wizard
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/wizard
What's inside
- Skill name
wizard- Description
- Give every repository script a raw Make target, an assisted terminal wizard, and a command skill. Use when wiring scripts into Make, adding commands or namespaces, or improving terminal prompts and command discovery.
- License
- Apache-2.0
- Instructions
- 165 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (50)
- .gitignore
- CREDITS.md
- GLOSSARY.md
- LICENSE
- README.md
- SKILL.md
- openai.yaml · agents/
- cli.ts · engine/
- command.test.ts · engine/
- command.ts · engine/
- discovery.ts · engine/
- execution.ts · engine/
- interactive.ts · engine/fixtures/
- run-interactive.ts · engine/fixtures/
- interaction.ts · engine/
- interactive.test.ts · engine/
- interruption.ts · engine/
- redaction.ts · engine/
- terminal.ts · engine/
- wizard.ts · engine/
- SKILL.md · example/.agents/skills/greet/
- SKILL.md · example/.agents/skills/sign-in/
- engine · example/.agents/skills/wizard/
- SKILL.md · example/.agents/skills/workspace-cache-clear/
- Makefile · example/
- package.json · example/
- command.ts · example/scripts/greet/
- run.ts · example/scripts/greet/
- command.ts · example/scripts/sign-in/
- run.ts · example/scripts/sign-in/
- sign-in.ts · example/scripts/sign-in/
- command.ts · example/scripts/workspace/cache/clear/
- run.ts · example/scripts/workspace/cache/clear/
- package-lock.json
- package.json
- README.md · recordings/
- interactive-force-stop.cast · recordings/
- interactive-force-stop.gif · recordings/
- interactive-sign-in.cast · recordings/
- interactive-sign-in.gif · recordings/
- light.cast · recordings/
- long-menu.cast · recordings/
- narrow.cast · recordings/
- no-color.cast · recordings/
- raw-interrupt.cast · recordings/
- raw-interrupt.gif · recordings/
- record-interactive.mjs · recordings/
- static.cast · recordings/
- wizard.cast · recordings/
- tsconfig.json
SKILL.md (first lines)
# Wizard
Install one engine and give each command one declaration. Raw Make targets, interactive wizards, and command skills all reach the same command code. This applies to every script operation, including queries, reports, maintenance, builds, and setup.
Read [README.md](README.md) for the runnable example and terminal settings. Read [GLOSSARY.md](GLOSSARY.md) when distinguishing commands, namespaces, inputs, and human stages.
## Wire a repository
1. Inspect the repository's scripts, Make targets, package manager, and skill directory. Inventory every script operation and map each to a command path. Preserve the existing process logic behind the command's `run` function. Each operation has a raw target, wizard entry, and command skill before this step is complete.
2. Install this entire folder as `.agents/skills/wizard/` and keep the engine there. Install its runtime dependencies with `npm ci --omit=dev --prefix .agents/skills/wizard`. Ignore `.agents/skills/wizard/node_modules/`. Commit or reproducibly install the skill folder and its lockfile. Updating the installed skill upgrades the shared engine; keep repository-specific logic under `scripts/`.
3. Require Node 24 and ESM (`"type": "module"` in the repository's package manifest). Add this package import so commands at every depth use the same path:
```json
{
"imports": { "#wizard": "./.agents/skills/wizard/engine/command.ts" }
}
```
4. Add these Make rules. Merge the declarations with existing conventions. The command list comes from the filesystem. Keep the raw rule a **static pattern rule** with the discovered targets before `%: scripts/%/run.ts`. A bare implicit `%` rule resolves nested paths incorrectly.
```make
.DEFAULT_GOAL := wizard
WIZARD_ENGINE := .agents/skills/wizard/engine
COMMANDS := $(shell node $(WIZARD_ENGINE)/cli.ts list-commands)
.EXPORT_ALL_VARIABLES:
.PHONY: wizard check-commands $(COMMANDS)
wizard:
@node $(WIZARD_ENGINE)/cli.ts wizard
%/wizard:
@node $(WIZARD_ENGINE)/cli.ts wizard $*
$(COMMANDS): %: scripts/%/run.ts
@node $<
check-commands:
@node $(WIZARD_ENGINE)/cli.ts check-commands
```
Recipes use literal tab indentation. Variables reach Node through the environment; keep input expansions such as `$(SQL)` out of recipe text. Paths contain lowercase kebab-case segments. Reserve the segment `wizard` and the root path `check-commands`. Every folder containing either entry file must contain both entry files. Namespace folders contain descendants and need no declaration.
5. Add the TypeScript 7 compiler (`@typescript/native-preview`, pinned to the version in this skill's package manifest) and Node 24 types to the repository's development dependencies. Typecheck the consuming scripts and installed engine together. Exclude `.agents/skills/wizard/engine/**/*.test.ts` from the consuming repository typecheck; the skill runs its tests with its own development dependencies. Use `strict`, `module: "NodeNext"`, `noEmit`, `allowImportingTsExtensions`, `verbatimModuleSyntax`, and `erasableSyntaxOnly`. Node runs `.ts` files directly. Use erasable syntax and explicit `.ts` import extensions.
Complete wiring when `make check-commands`, the repository typecheck, a raw command, `make wizard`, and a nested namespace wizard pass. Exercise cancellation and a fake secret in the installed layout.
## Add a command
Create `scripts/<path>/command.ts` and a thin `run.ts`. Export `definition` from the declaration. Keep module initialization and all transitive imports free of side effects; discovery imports declarations. Load costly dependencies inside `run`.
```typescript
// scripts/db/read/command.ts
import type { Command } from '#wizard';
export const definition = {
name: 'Read records',
help: 'Run a read-only query.',
inputs: [{
name: 'SQL',
prompt: 'Which query should run?',
help: 'Enter a read-only SQL statement.',
required: true,
secret: false,
kind: 'text',
default: 'SELECT 1',
}],
async run(inputs, { root }) {
const { readRecords } = await import('./read-records.ts');
return readRecords(String(inputs.SQL), root);
},
} satisfies Command;
```
```typescript
// scripts/db/read/run.ts
import { runCommand } from '#wizard';
import { definition } from './command.ts';
await runCommand(definition);
```
`run` receives validated inputs and a `CommandContext` with `root`, `signal`, and `terminal`, and returns a result string. Perform all command work there. Return output instead of printing it. Run subprocesses with closed stdin and captured output so the wizard owns interaction. Await subprocess completion and keep descendants in the command process group.
Each input declares `name`, `prompt`, `help`, `required`, `secret`, and `kind`. Names are uppercase Make variable names. The checker rejects execution-control names such as `PATH`, `SHELL`, `MAKEFLAGS`, `NODE_OPTIONS`, and `WIZARD_*`. Use a descriptive name such as `ACCOUNT_NAME` rather than an ambient shell name such as `USER`.
| Kind | Value | Optional declaration |
|---|---|---|
| `text` | String | `default: 'value'` |
| `choice` | One declared option value | `options: [{ value: 'safe', label: 'Safe' }]`, `default: 'safe'` |
| `confirm` | Boolean | `default: false` |
| `number` | Finite number | `default: 1` |
`choice` requires nonempty, unique options. Defaults must match the kind and allowed choices. Omitted optional inputs use their default when declared, otherwise `''`. An explicit Skip on an optional choice yields `''` even when it has a default. A required input can have a default. Keep real credentials out of declarations and defaults. `secret: true` uses hidden entry for every kind; its help must explain the expected format or choice values.
Add business validation inside `run`, such as integer bounds or read-only query restrictions. Raw targets and wizards share that validation. An input's `required` flag checks presence; `false` remains a valid confirmation input.
For irreversible actions, set `irreversible` to a precise consequence, including the affected resource. The wizard asks for confirmation with cancel selected. The raw runner requires `CONFIRM=true`; the closing command includes it after confirmation. Human stages run before inputs and execution, one at a time:
```typescript
stages: [{ name: 'Review the resource', help: 'Finish work that needs the selected resource before removing it.' }],
irreversible: 'This permanently removes the selected resource.',
```
Stages describe work only a human can do, and pause for explicit completion. Raw operators and agents complete these prerequisites themselves. Use interactive execution when a command needs typed input between automated operations. Consult the [terminal reference](README.md#terminal-behavior) for interruption behavior.
## Run an interactive command
Set `interactive: true` when command work asks questions or needs cancellable progress. Omission means false; supplied values must be boolean. The wizard completes declaration inputs, human stages, and irreversible confirmation, then calls `run` in process with `wizard: true`. Raw execution calls the same definition without that flag. Existing commands keep their child execution in the wizard and Node's default SIGINT handling in raw execution.
Use only the context's terminal methods for command prompts. They share the engine's prompt instance and cancellation signal. Check `process.stdin.isTTY && process.stdout.isTTY` before asking human questions. Keep piped output machine-readable; progress is silent when stdout is redirected.
```typescript
async run(inputs, { signal, terminal }) {
await requestCode(String(inputs.EMAIL), signal);
const code = await terminal.password('Enter the code', value => {
const missingCode = !value?.trim();
if (missingCode) return 'Enter the code from your email.';From Camgineer/skills, Apache-2.0.
More from Camgineer/skills
- 0.570score
swag
Camgineer
Use for look-and-feel work across web and native interfaces, terminal UIs and CLI output, diagrams, slides, generated images, and charts.
SkillAFreshness: AClaude Code +9 - 0.564score
coordinator
Camgineer
Coordinate project requests, focused work, shared context, and delivery from one chat.
SkillAFreshness: AClaude Code +9 - 0.564score
simple-as-prose
Camgineer
Use when writing or revising replies, documents, UI copy, comments, or other prose.
SkillAFreshness: AClaude Code +9 - 0.553score
erd
Camgineer
Draw an interactive ERD of a database or data model as one HTML file.
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 22, 2026 (8 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/Camgineer/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Camgineer
- 0.570score
swag
Camgineer
Use for look-and-feel work across web and native interfaces, terminal UIs and CLI output, diagrams, slides, generated images, and charts.
SkillAFreshness: AClaude Code +9 - 0.569score
create-verification-skill
Camgineer
Use when an app lacks repeatable user-path verification, or its verification skill or feature map needs updating.
SkillAFreshness: AClaude Code +9 - 0.569score
domain-modeling
Camgineer
Use when defining domain terms, editing a glossary, or recording an architecture decision.
SkillAFreshness: AClaude Code +9 - 0.569score
architect
Camgineer
Use when code needs a new module, public interface, or design choice.
SkillAFreshness: AClaude Code +9 - 0.567score
design-ui
Camgineer
Use before building, changing, or critiquing UI appearance.
SkillAFreshness: AClaude Code +9 - 0.565score
csharp-best-practices
Camgineer
Use when reading or editing C#.
SkillAFreshness: AClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get wizard running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
wizard skill. Agent Mart. https://agentmart.dev/skills/camgineer-wizard (last updated 2026-10-24)