search-architect
Projeta o índice de busca como projeção reconstruível: mapping, consultas, escritas, rebuild e lag.
23-busca.md, bloco a bloco
O bank-app ainda não tem 23-busca.md. Estes são os blocos que o SKILL.md diz que o parcial contém.
## 1 · Projection
One row per field — step 4
## 2 · Index
Alias, version, the mapping file block, shards, replicas per environment, refresh interval
## 3 · Queries
Per port method — step 6
## 4 · Writes
The indexer's rules — step 7. none outside an indexer case
## 5 · Rebuild
The sequence and the source port — step 8. none when no rebuild is designed in this case
## 6 · Lag
The duration consumed, next to Freshness, and the remainder
## 7 · Failure
Per port method: the family and what the read does
## 8 · Requirements to other partials
One row per requirement, target partial named
## 9 · Declared dependencies
Coordinates; version empty when Spring Boot manages it, otherwise the resolved version and its source
## 10 · Configuration
Every property, its value, the reason
## 11 · Deferred
Same shape as every partial
## Compose services
The engine's row
## Design patterns
Step 12b
O que lê, escreve e recusa
O contrato da própria skill, do SKILL.md, no texto original.
Class
design — the territory is skill_classes.design in @.claude/schemas/extensions.json, and ArchHook.java guard enforces it. Writes inside the use case folder and nothing else.
Reads
docs/use-cases/UC-NNN-<slug>/00-use-case.md (mandatory), 10-domain.md (mandatory), 20-persistence.md of the source's cases, earlier 23-search.md, src/main/resources/search/, pom.xml, docker-compose.yml, the active blueprint's packages.map, @.claude/rules/search.md, @.claude/rules/architecture-ddd.md, @.claude/rules/error-handling.md, @.claude/rules/secrets.md, @.claude/skills/docker-architect/references/compose-service-decision.md, and this skill's references/.
Writes
docs/use-cases/UC-NNN-<slug>/23-search.md. Nothing else — the mapping file lives inside it.
Owns
the search document and its mapping, the index versions and the alias, the query shape and its cursor, the indexer's write rules, the rebuild's adapter and alias swap, the lag the projection consumes, the search dependency and its version, and the search compose row.
Does not decide
whether the case has a search index or which engine (00-use-case.md), the port or the event (10-domain.md), the consumer (25-messaging.md), when the rebuild runs (35-jobs.md), the source's schema (20-persistence.md), or the tests (40-tests.md). Does not write Java, pom.xml, application.yml or docker-compose.yml. Doesn't touch .claude/rules/**.
Fonte: SKILL.md § Contract, no nerviz e4cae27.
O que o guard faz com ela
design é a classe da skill. O ArchHook abre uma fase quando a skill é chamada e confere cada escrita contra o território da classe. O texto à direita é o do próprio hook.
write_allow da classe design
- ✓
docs/use-cases/UC-*/** - ✓
docs/use-cases/BACKLOG.md src/**: migrations e classes são do executordocker-compose.yml: arquivo de outra classecaso de uso já aprovado: as specs ficam congeladas
A recusa sai com código 2 e a mensagem volta para o modelo.
PreToolUse Skill(search-architect) audit call exit 0 guard call exit 0 # a skill of another class replaces the phase # write_allow: docs/use-cases/UC-*/**, docs/use-cases/BACKLOG.md
PreToolUse Write(docs/use-cases/UC-005-record-kyc-verdict/23-busca.md) guard write exit 0 PostToolUse audit file exit 0
PreToolUse Write(docker-compose.yml) guard write exit 2 ❌ `search-architect` is class `design` — docker-compose.yml is outside its territory. write_allow: docs/use-cases/UC-*/**, docs/use-cases/BACKLOG.md 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.design in .claude/schemas/extensions.json — retrying will not help.
# UC-005-record-kyc-verdict-spec.md: status: approved PreToolUse Edit(docs/use-cases/UC-005-record-kyc-verdict/23-busca.md) guard write exit 2 ❌ UC-005-record-kyc-verdict is approved — its specs are immutable. Record the change in the new use case's "Impact on approved use cases" section, and the one-line entry in UC-005-record-kyc-verdict/CHANGELOG.md, which stays writable.
Onde ela fica no trilho
Cada cartão é um passo do /new-feature; a seta leva o parcial que um passo entrega ao seguinte. Passos tracejados só rodam quando o caso de uso precisa.
/new-feature orchestrator · opus/new-feature-implement Quem lê o parcial depoisDepois da aprovação, o /new-feature-implement faz o executor construir o código. A spec é consolidada por referência e vale onde ela e um parcial divergem; o parcial é lido, por seção, para o detalhe.