Scaffold init
Skill ramboz/jig/hosts/codex/plugins/jig/skills/scaffold-init
A Claude Code and Codex plugin that scaffolds AI-native development practices into new projects. jig adds a repeatable spec, implementation, review, and memory workflow to AI-assisted software projects.
npx -y skills add ramboz/jig --skill scaffold-initAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Initialize an AI-native development workspace with spec-driven workflow infrastructure. Use when starting a new project, setting up Codex on a codebase for the first time, or when the user says scaffold, initialize, set up AI workflow, onboard this repo, or similar. Do not use for adding an individual skill or config to an already- scaffolded project — that is handled by the relevant tier skill directly.
SKILL.md
6.2 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it
Spec 001 is fully implemented: greenfield-scaffold, doc-content, signal-detection, deferred-decisions, and Q&A wizard. See docs/specs/001-scaffold-init/spec.md.
What this skill does
Generates an AI-native development workspace by copying templates from
${PLUGIN_ROOT}/templates/ into a target directory. Detects project
signals from the filesystem (LLM/agent files, CI, tests, team), runs an optional
Q&A flow to let the user override those signals, and selects tiers accordingly.
Tier 0 always installs; Tier 1 installs when test signals are present; Tier 2
is offered (not auto-installed) when LLM/agent signals are present.
How to use
- Determine the target directory. Default: the current working directory. If you're unsure, ask the user once before scaffolding.
- Check if the target already has a
scaffold.jsonordocs/specs/— if so, the project is already scaffolded. Stop and tell the user rather than overwriting. - Run the Q&A flow (see next section). Collect answers as flag values.
- Invoke the wizard with the collected flags:
python3 "${PLUGIN_ROOT}/skills/scaffold-init/scaffold.py" \ [--runtime <name>] [--team|--solo] [--has-ci|--no-ci] \ [--has-tests|--no-tests] [--plans-ai|--no-ai] \ <target-dir> - Read the wizard's stdout summary and report back to the user. List the files that were created and the immediate next steps.
Codex custom-agent install
Codex scaffold mode (--host codex) writes project-local custom agents as
TOML under .codex/agents/. For Codex plugin users who want jig's role agents
globally available, run the explicit post-install helper:
python3 "${PLUGIN_ROOT}/skills/scaffold-init/scaffold.py" --install-codex-agents
The default destination is ~/.codex/agents. Use
--codex-agents-dir <dir> to target a different Codex agents directory.
The helper refuses to overwrite user-owned jig-*.toml files unless
--force is passed.
Q&A flow (slice 001-05)
Ask each question in order. Each question is independently skippable — if the user says "skip", "I don't know", "unsure", or similar, do not pass the flag (the wizard's filesystem inference handles it).
- Runtime/language — "What runtime or language is this project?
(e.g. Python, TypeScript, Go, Rust, mixed, unsure)"
→
--runtime <name>if answered; omit if skipped or unsure. - Team context — "Solo project or team setting?"
→
--teamfor team,--solofor solo; omit if skipped (uses git-author detection). - Existing CI — "Does the project already have CI configured?"
→
--has-cifor yes,--no-cifor no; omit if skipped. - Existing tests — "Does the project already have a test suite?"
→
--has-testsfor yes,--no-testsfor no; omit if skipped. This affects whether tier-1 (tdd-loopand friends) is auto-installed. - LLM/agent work planned — "Will this project involve LLM or agent development?"
→
--plans-aifor yes,--no-aifor no; omit if skipped. This affects whether tier-2 is offered.
Skipping every question is the legitimate "pure inference" mode (slice 001-03 behavior) — the wizard infers from filesystem signals alone. Do not invent answers when the user is unsure.
Output
After running, the target directory contains:
AGENTS.md(with Hot Cache section, project name substituted)docs/(architecture, workflow, conventions, refinement-todo, inbox, memory/, specs/, decisions/).codex/hooks/(empty — project-specific gates can go here)scaffold.json(install-state manifest)
Every scaffolded doc carries Status: Draft (wizard-generated).
docs/memory/people.md is NOT created (solo-project default — team detection is slice 001-03).
Immediate next steps to surface to the user
After scaffolding succeeds, tell the user:
- Open
AGENTS.mdand fill in the Hot Cache section with project-specific terms. - Open
docs/refinement-todo.mdto see what was deferred. - The first spec to write is in
docs/specs/— use/jig:spec-workflow(when implemented) or writedocs/specs/001-<feature>/spec.mdby hand. - Note:
docs/conventions.mdis now gated. Edits requireJIG_CONVENTIONS_APPROVED=1in the shell session.
Constraints
- Do not invoke this skill in a directory that is already scaffolded (has
scaffold.json). - Do not overwrite an existing
AGENTS.mdwithout explicit user confirmation. - The wizard is deterministic — do not edit the generated files yourself before
reporting back. The user should see exactly what
scaffold.pyproduced.
Gotchas
- The spec-gate hook for
docs/conventions.mdactivates AFTER scaffold-init completes. It cannot gate its own creation (bootstrap paradox — documented and intentional). templates/AGENTS.md.templateis the source template; do NOT use the jig repo's ownAGENTS.mdas a template — the two diverge over time.${PLUGIN_ROOT}is the right env var inside the plugin. Don't confuse it with$CODEX_PROJECT_DIR(which is the target project's root after install).- Signal detection (existing CI, LLM/agent files, team size) is deferred to slice 001-03. Until then, the wizard installs default tiers regardless of project context.
- scaffold-init refuses if the target looks spec-driven but lacks
scaffold.json. Slice 008-05 introduced a second pre-flight check: if ≥3 of the four migrate triggers (docs/specs//docs/slices/,docs/decisions//docs/adrs/,docs/workflow.md,docs/architecture.md) are present without ascaffold.json, the helper raisesLooksAlreadySpecDrivenError(exit 2) and points at/jig:migrate. Pass--forceto scaffold over the existing tree anyway (NOT recommended — overwrites docs).
What ships with it: 2 files
154.0 KB alongside SKILL.md, 2 of them executable
- scaffold.pyruns148.8 KB
- stocktake.pyruns5.2 KB