init-project
Faz a entrevista da primeira geração de um projeto na sessão principal e depois entrega a geração inteira a um agent.
init-project, seção a seção
As seções do próprio SKILL.md da skill, em trechos. Passe o mouse ou clique numa delas para ver quais regras do projeto, templates e arquivos de references/ ela cita. As seções também são chips: clique num para ir até ela.
## Available blueprints
!find "${CLAUDE_PROJECT_DIR:-.}/.claude/blueprints" -mindepth 2 -maxdepth 2 -name '*.yaml' 2>/dev/null | sort
## Next to this repository
!ls -a "${CLAUDE_PROJECT_DIR:-.}/.." | head -30
## Session
${CLAUDE_SESSION_ID}
## Arguments
$ARGUMENTS
## Procedure
- The project is generated next to this repository, at
../<artifactId> - Interview — every question of the run, here, before delegating. The agent runs in the
… cortado aqui, o resto está no arquivo
## Why this is a manually-invoked skill
Form 2: creating a project is a ritual a person starts (axis 2 — /init-project), and the interview it leads to cannot be triggered by inference from a sentence. Form 1 was rejected for exactly that: a skill that can scaffold a whole tree on the model's own judgment is a directory rewritten by accident. Form 3 was rejected here and used one level down instead — the isolation belongs to the generation, which is why project-initializer exists, and the interview belongs here, in the main session, the only place AskUserQuestion is guaranteed (@.claude/decisions/0123-lessons-learned-020-init-project-run.md).
Runs on sonnet with effort: low: the interview reads its questions from the blueprints and from the two chained skills, and the generation is delegated to project-initializer, which declares its own model (@.claude/decisions/0081-skill-model-required-per-class.md).
O que lê, escreve e recusa
O contrato da própria skill, do SKILL.md, no texto original.
Class
orchestrator — the territory is skill_classes.orchestrator's override for this skill in @.claude/schemas/extensions.json, and it is empty: this skill writes no file itself. Everything is written by project-initializer, which the guard bypasses as an executor agent, and by project-bootstrap under it. ArchHook.java guard enforces it. The one write it causes is audit genesis replacing three placeholders in the generated project's GENESIS.md, outside this repository — done by the hook's code, never by a Write.
Reads
the blueprint listing and the listing of this repository's parent directory injected above, every blueprint YAML for the interview, the § 2 questions of transport-security-setup and sonarqube-setup, and the arguments.
Owns
the interview of a project's first generation. The questions about transport and Sonar stay owned by their skills; this one only asks them before the agent starts.
Delegates
to project-initializer — never generates a file inline, not even a single pom.xml. A partial generation from this thread is the failure mode the agent exists to prevent: the report would describe a tree nobody wrote in full.
Fonte: SKILL.md § Contract, no nerviz e4cae27.
O que o guard faz com ela
orchestrator é a classe da skill, e o território dela é vazio: ela não escreve arquivo nenhum. A fase que ela abre é o que impede uma geração na thread principal. O texto à direita é o do próprio hook.
write_allow da classe init-project
qualquer arquivo: o território é vazio
A recusa sai com código 2 e a mensagem volta para o modelo.
> /init-project … UserPromptSubmit guard prompt exit 0 # phase opened: init-project (class orchestrator) # write_allow: [] — this skill writes no file itself
PreToolUse Write(../bank-app/pom.xml) guard write exit 2 ❌ `init-project` is class `orchestrator` — ../bank-app/pom.xml is outside its territory. write_allow: (nothing — this class writes no file) Put the content in the spec as a code block, or finish the run and invoke the skill that owns this path. If the path is legitimately this skill's, widen skill_classes.orchestrator in .claude/schemas/extensions.json — retrying will not help.
PreToolUse Agent(project-initializer) guard call exit 0 # an Agent call changes nothing here: the phase stays init-project PreToolUse Write(../bank-app/pom.xml) # agent_type: project-initializer guard write exit 0 # judged by agent_classes.driver, write_allow: **
Onde ela fica no trilho
Cada card é um passo do /init-project. A entrevista roda na sessão principal; os passos com fundo colorido rodam dentro do project-initializer; o git-publish volta para a sessão principal, depois do audit genesis. Passos tracejados só rodam quando se aplicam.
/init-project orchestrator · sonnet