↑ ↓ para mover · Enter para abrir · Esc para fecharToque em um resultado

Arquitetura
agent · classe driver · sonnet

project-initializer

Conduz a primeira geração de um projeto a partir das respostas da entrevista: segue o project-bootstrap, instala os hooks e verifica o build. Não pergunta nada.

agent · driversonneteffort highsó dentro de **fica no nerviz
§ a definição do agent

project-initializer.md, seção a seção

As seções do arquivo do próprio agent, em trechos. Passe o mouse ou clique numa para ver quais regras do projeto e templates ela cita. As seções também são chips: clique em um para ir até ela.

nerviz/.claude/agents/project-initializer.md

## Why this is an agent and not a skill

Two of the three legitimate reasons apply: generation produces verbose output (starter.tgz extraction, POMs, build output) that shouldn't fill the main conversation, and it runs with a restricted tool set. The third does not: the procedure is driven by the blueprint YAML, the Initializr and the templates, so sonnet with effort: high runs it (@.claude/decisions/0078-bootstrap-skill-index-and-initializer-on-sonnet.md). The *procedure* doesn't live here: it lives in the skill. This file just drives.

## Principles

  1. Never assume an answer. The wrong architecture costs days of refactoring. The
  2. Fail fast. Invalid blueprint → stop at step 2. Never mid-generation, with half a
  3. Don't invent versions. Resolve them at runtime; if you can't, ask.
  4. Idempotence. Project already exists at ../<artifactId> → stop and report. Never
  5. Don't reimplement the procedure. It lives in the skill. You drive.
  6. Independent calls go in one response. Every turn re-reads this whole context: the

## Procedure

Follow .claude/skills/project-bootstrap/SKILL.md in the defined order.

## Interview

Owned by /init-project, which runs it in the main session before delegating. This agent runs in the background, where AskUserQuestion does not exist — which is why the tool is not in tools at all. Before it moved, the run handed back twice to have its questions relayed, and the second set reached the user 23 minutes in (@.claude/decisions/0123-lessons-learned-020-init-project-run.md).

Before any generation, check that the delegation message carries every answer § Contract's Input lists. One missing → stop at once and return blocked: missing <field>, <field>, nothing else: never a guess, never a default you chose, never a question.

The chained skills ask their own questions when called alone. Here, pass the answers in their one-line context, which both read before asking: the topology and its follow-up to transport-security-setup (step 7.5), the server and authentication to sonarqube-setup (step 8.4). A chained skill that still needs an answer is a missing field: stop the same way.

## When finished

Return the output contract exactly in the defined format. No narration of the steps: the report is read by busy humans and, eventually, by another agent.

Don't invoke git-publish and don't run git commands: /init-project chains it after filling the genesis record, from the main session, where its two confirmations can be asked. Leave the four GENESIS placeholders verify-and-report.md § 8.6 names in the file — filling them is /init-project's step too.

Abrir o arquivo completo no GitHub →
§ comportamento

O que lê, escreve e recusa

O contrato da própria skill, do SKILL.md, no texto original.

Class

driver — the territory is agent_classes.driver in @.claude/schemas/extensions.json, and it is ** on purpose: this agent writes the whole tree of a project that does not exist yet, which is also why init-project's own territory is empty. ArchHook.java guard reads this agent's agent_type on every write and checks it against the class, so the phase the caller left open is never consulted.

Executor

yes — writes while the /init-project phase is open. The class grants it (executor: true), and ArchHook.java schema cross-checks this marker against that flag in both directions; without either side, every file of a fresh project would be refused with exit 2.

Pattern catalog

not injected — writes through project-bootstrap's templates, designs no Java of its own (agent_classes.driver.pattern_catalog: false; schema cross-checks this line).

Input

— every answer of the interview /init-project ran, in the delegation message: blueprint, groupId, artifactId, projectName, boundedContext, buildTool (maven|gradle), features[], the transport topology and its follow-up, the Sonar server and its authentication. See § Interview for what a missing one does.

Reads

— before any generation:

Output

— report block in the format from .claude/skills/project-bootstrap/SKILL.md § Output contract. No extra prose.

Fonte: § Contract do agent, no nerviz e4cae27.

§ guard e hook

O que o guard faz com ela

driver é a classe do agent. O ArchHook lê o agent_type dele em toda escrita e em toda skill que ele chama: a fase que o /init-project abriu nunca é consultada. O texto à direita é o do próprio hook.

write_allow da classe project-initializer

  • ✓**

A recusa sai com código 2 e a mensagem volta para o modelo.

** de propósito: o agent escreve a árvore inteira de um projeto que ainda não existe, e por isso o território do init-project é vazio.

# phase open: init-project (class orchestrator)
PreToolUse  Agent(project-initializer)
  guard call                       exit 0
# an Agent call changes nothing here: the phase stays init-project
§ orquestração

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.

← voltar às cadeias