@tavaressan/vetor 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -0
- package/bin/vetor.js +6 -0
- package/lib/banner.js +35 -0
- package/lib/commands/install.js +71 -0
- package/lib/commands/status.js +59 -0
- package/lib/commands/uninstall.js +119 -0
- package/lib/commands/update.js +63 -0
- package/lib/installer/command-exists.js +30 -0
- package/lib/installer/cursor-hooks.js +181 -0
- package/lib/installer/detector.js +79 -0
- package/lib/installer/manifest.js +76 -0
- package/lib/installer/prompts.js +97 -0
- package/lib/installer/writer.js +382 -0
- package/lib/router.js +50 -0
- package/package.json +39 -0
- package/templates/.gitkeep +0 -0
- package/templates/agents/code-review/agent.json +27 -0
- package/templates/agents/code-review/codex.toml +37 -0
- package/templates/agents/code-review.md +99 -0
- package/templates/agents/issue-worker/agent.json +33 -0
- package/templates/agents/issue-worker/codex.toml +57 -0
- package/templates/agents/issue-worker.md +112 -0
- package/templates/hooks/hooks-codex.json +48 -0
- package/templates/hooks/hooks.json +62 -0
- package/templates/opencode/agent/code-review.md +73 -0
- package/templates/opencode/agent/issue-coordinator.md +521 -0
- package/templates/opencode/agent/issue-worker.md +64 -0
- package/templates/opencode/mcp.jsonc +39 -0
- package/templates/opencode/plugin/vetor.ts +207 -0
- package/templates/opencode/scripts/agent-registration_test.ts +92 -0
- package/templates/opencode/scripts/check-edit.ts +147 -0
- package/templates/opencode/scripts/ensure-external-directory-permission.ts +110 -0
- package/templates/opencode/scripts/ensure-external-directory-permission_test.ts +142 -0
- package/templates/opencode/scripts/lib/guard.ts +45 -0
- package/templates/opencode/scripts/lib/model-health.ts +133 -0
- package/templates/opencode/scripts/lib/model-health_test.ts +181 -0
- package/templates/opencode/scripts/lib/project.ts +240 -0
- package/templates/opencode/scripts/lib/project_test.ts +45 -0
- package/templates/opencode/scripts/lib/status.ts +69 -0
- package/templates/opencode/scripts/lib/worktree.ts +41 -0
- package/templates/opencode/scripts/model-health.ts +50 -0
- package/templates/opencode/scripts/model-health_test.ts +80 -0
- package/templates/opencode/scripts/resolve-model.ts +112 -0
- package/templates/opencode/scripts/resolve-model_test.ts +185 -0
- package/templates/opencode/scripts/safety-check.ts +203 -0
- package/templates/opencode/scripts/vetor-checks.sh +217 -0
- package/templates/opencode/scripts/vetor-status.sh +99 -0
- package/templates/skills/architecture-review/SKILL.md +187 -0
- package/templates/skills/backlog-ideator/SKILL.md +277 -0
- package/templates/skills/design/SKILL.md +468 -0
- package/templates/skills/design/examples/design-contract-example.md +46 -0
- package/templates/skills/design/examples/prototype-handoff-example.md +142 -0
- package/templates/skills/fix-loop-agent/SKILL.md +255 -0
- package/templates/skills/guardian/SKILL.md +343 -0
- package/templates/skills/issue-coordinator/SKILL.md +596 -0
- package/templates/skills/retro/SKILL.md +156 -0
- package/templates/skills/shared/references/agent-status.template.md +68 -0
- package/templates/skills/shared/references/codebase-design-vocabulary.md +54 -0
- package/templates/skills/shared/references/conflict-resolution.md +94 -0
- package/templates/skills/shared/references/delegate-to-runtime.md +239 -0
- package/templates/skills/shared/references/design-vocabulary.md +508 -0
- package/templates/skills/shared/references/evidence-state.md +365 -0
- package/templates/skills/shared/references/frontend-design-enforcement.md +33 -0
- package/templates/skills/shared/references/grilling-conventions.md +64 -0
- package/templates/skills/shared/references/knowledge-provider-contract.md +150 -0
- package/templates/skills/shared/references/mcp-availability.md +104 -0
- package/templates/skills/shared/references/module-test-map.template.md +72 -0
- package/templates/skills/shared/references/planning-conventions.md +97 -0
- package/templates/skills/shared/references/project-conventions.md +63 -0
- package/templates/skills/shared/references/tdd-conventions.md +81 -0
- package/templates/skills/shared/references/touched-files-cache.md +30 -0
- package/templates/skills/spec/SKILL.md +524 -0
- package/templates/skills/spec-validate/SKILL.md +195 -0
- package/templates/skills/spec-validate/references/traceability.md +169 -0
- package/templates/skills/stack-practices/SKILL.md +151 -0
- package/templates/skills/vetor/SKILL.md +174 -0
- package/templates/skills/worktree-create/SKILL.md +142 -0
- package/templates/skills/worktree-ship/SKILL.md +394 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vetor
|
|
3
|
+
description: Porta de entrada do plugin. Inicializa e configura o ambiente do Vetor no projeto-alvo (mapeamento de testes e arquivos de configuração).
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Claude Code
|
|
6
|
+
metadata:
|
|
7
|
+
author: vitortavares
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Você é a skill de inicialização e configuração do Vetor. Sua missão é preparar o repositório-alvo para o uso do plugin, criando os diretórios e arquivos de configuração necessários caso não existam.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Sintaxe
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/vetor [--force]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
- `--force`: opcional — força a sobrescrita do mapeamento de testes (`module-test-map.md`), do arquivo de
|
|
22
|
+
configuração (`config.json`) e das rules geradas (`.claude/rules/vetor/`) mesmo que já existam.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Referências
|
|
27
|
+
|
|
28
|
+
> Paths relativos abaixo resolvem a partir do diretório desta própria skill (informado ao carregar,
|
|
29
|
+
> ex. "Base directory for this skill: ..."), não do `cwd` de execução. Em comandos `bash`/`deno run`,
|
|
30
|
+
> prefixe o path absoluto desse diretório ao caminho relativo antes de executar — defina uma vez:
|
|
31
|
+
> ```bash
|
|
32
|
+
> SKILL_DIR="<path absoluto informado como 'Base directory for this skill' no carregamento>"
|
|
33
|
+
> ```
|
|
34
|
+
> e use `"$SKILL_DIR/../../scripts/..."` em todo comando abaixo, nunca o path relativo isolado.
|
|
35
|
+
|
|
36
|
+
- `../shared/references/mcp-availability.md` — se, durante o setup, for
|
|
37
|
+
preciso explicar ou depurar comportamento do próprio Claude Code (hooks, slash commands,
|
|
38
|
+
configuração de MCP, permissões, SDK de agentes), o MCP `claude-code-docs` é **obrigatório quando
|
|
39
|
+
disponível** (ver "Documentação do próprio Claude Code (`claude-code-docs`)").
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Comportamento
|
|
44
|
+
|
|
45
|
+
### 0 — Verificar pré-requisitos
|
|
46
|
+
|
|
47
|
+
O Vetor executa seus scripts com Deno. Confirme que ele está disponível:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
deno --version
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Se o comando falhar, **pare** e instrua a instalação — sem Deno, o hook de segurança e a preparação
|
|
54
|
+
de dependências dos worktrees não funcionam:
|
|
55
|
+
- macOS/Linux: `curl -fsSL https://deno.land/install.sh | sh`
|
|
56
|
+
- Windows: `winget install DenoLand.Deno`
|
|
57
|
+
|
|
58
|
+
### 1 — Garantir estrutura de diretórios
|
|
59
|
+
|
|
60
|
+
Crie os diretórios do Vetor no projeto-alvo e garanta que os status files dos workers
|
|
61
|
+
(escritos em `.claude/vetor/status/` — ver
|
|
62
|
+
`../shared/references/agent-status.template.md`) nunca sejam commitados:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
mkdir -p .claude/vetor/status
|
|
66
|
+
grep -qxF '.claude/vetor/status/' .gitignore 2>/dev/null || echo '.claude/vetor/status/' >> .gitignore
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
A entrada no `.gitignore` é idempotente — este passo substitui qualquer ajuste de gitignore por
|
|
70
|
+
worker.
|
|
71
|
+
|
|
72
|
+
### 2 — Detectar o projeto (`module-test-map.md` + `config.json` + rules)
|
|
73
|
+
|
|
74
|
+
Um único script detecta o runtime, gera o mapeamento de testes, persiste a configuração e escreve as
|
|
75
|
+
rules de convenção do projeto:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
deno run -A "$SKILL_DIR/../../scripts/detect-project.ts" [--force]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Repasse o `--force` recebido nos args. A guarda é **por arquivo**: sem `--force`, cada arquivo que já
|
|
82
|
+
existe é preservado (o JSON de saída informa o que foi criado e o que foi pulado).
|
|
83
|
+
|
|
84
|
+
O script grava:
|
|
85
|
+
- `.claude/vetor/module-test-map.md` — comandos de teste por módulo;
|
|
86
|
+
- `.claude/vetor/config.json` — `runtime`, `packageManager` e `testCommand` detectados, preservando
|
|
87
|
+
o `maxConcurrentWorkers` (default 5), o bloco `knowledge` (`enabled`/`provider`) e o bloco opcional
|
|
88
|
+
`delegation` (`preferredRuntime` — ver `delegate-to-runtime.md`), se já existirem. O
|
|
89
|
+
`prepare-worktree.ts` lê isso para saber como preparar cada worktree;
|
|
90
|
+
- `.claude/rules/vetor/<runtime>.md` — convenções do projeto (comando de teste, formatador, lint,
|
|
91
|
+
estilo de import), com frontmatter `paths` para entrarem em contexto **apenas** quando o agente lê
|
|
92
|
+
um arquivo daquele tipo. Só há rules para projetos Deno e Node; nos demais runtimes o script não
|
|
93
|
+
gera nenhuma.
|
|
94
|
+
|
|
95
|
+
Cada linha de uma rule corresponde a um fato lido do repositório (`deno.json`, `package.json`,
|
|
96
|
+
arquivos de config). O que não foi detectado não vira regra.
|
|
97
|
+
|
|
98
|
+
Se o runtime sair como `unknown`, avise o usuário de que o `module-test-map.md` precisa de ajuste
|
|
99
|
+
manual — as skills de teste dependem dele.
|
|
100
|
+
|
|
101
|
+
O JSON de saída inclui um campo `knowledge` (`{"status": ..., "label": ...}`) com o estado do
|
|
102
|
+
**Knowledge Provider** — ver `../shared/references/knowledge-provider-contract.md`.
|
|
103
|
+
Ausência do bloco `knowledge` em `config.json` (ou de `config.json` inteiro) nunca é erro: o default é
|
|
104
|
+
`✓ Filesystem`, sempre funcional sem configuração adicional. Só vira `○ Disabled` com
|
|
105
|
+
`knowledge.enabled: false` explícito, e `✓ Obsidian` com `knowledge.provider: "obsidian"` explícito.
|
|
106
|
+
|
|
107
|
+
Ausência do bloco `delegation` também nunca é erro: sem `delegation.preferredRuntime` configurado,
|
|
108
|
+
a seleção do runtime de delegação (Gemini/OpenCode/Codex) segue puramente por disponibilidade no
|
|
109
|
+
PATH e, se ambígua (2+ candidatos), por anuência explícita — ver algoritmo completo em
|
|
110
|
+
`delegate-to-runtime.md` §2.
|
|
111
|
+
|
|
112
|
+
### 2.b — Inserir/atualizar resumo de capacidades em CLAUDE.md/AGENTS.md
|
|
113
|
+
|
|
114
|
+
`CLAUDE.md`/`AGENTS.md` são os arquivos que agentes de código carregam automaticamente no início de
|
|
115
|
+
uma sessão — diferente de `.claude/rules/vetor/`, que só entra em contexto sob demanda. Um
|
|
116
|
+
desenvolvedor (ou agente) que abre esses arquivos deve ficar sabendo, sem já conhecer o Vetor de
|
|
117
|
+
antemão, que o plugin está instalado e como invocar suas skills/agentes.
|
|
118
|
+
|
|
119
|
+
Para cada um de `CLAUDE.md` e `AGENTS.md` que já exista na raiz do projeto-alvo, rode:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
deno run -A "$SKILL_DIR/../../scripts/inject-capabilities-doc.ts" <caminho-do-arquivo>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
O script acha o bloco delimitado por `<!-- vetor:capabilities:start -->` / `<!-- vetor:capabilities:end -->`
|
|
126
|
+
e o substitui; se o bloco ainda não existir, insere no fim do arquivo; se o arquivo não existir, não
|
|
127
|
+
faz nada — **nunca crie `CLAUDE.md`/`AGENTS.md` do zero**, isso é convenção de onboarding do
|
|
128
|
+
projeto-alvo, não algo que o Vetor deva opinar. Rodar `/vetor` de novo é idempotente: o bloco é
|
|
129
|
+
atualizado no lugar, sem duplicar e sem exigir `--force`.
|
|
130
|
+
|
|
131
|
+
O conteúdo do bloco é fixo e definido em uma única fonte — a constante `CAPABILITIES_BODY` em
|
|
132
|
+
`scripts/inject-capabilities-doc.ts` — para não divergir entre execuções nem exigir que o agente
|
|
133
|
+
redija prosa a cada `/vetor`. É um resumo sucinto (não duplica o conteúdo completo dos `SKILL.md`):
|
|
134
|
+
título curto, lista das skills/agentes com o comando de invocação e, entre parênteses, o nome do
|
|
135
|
+
agente/skill correspondente. Se novas skills forem adicionadas ao plugin, atualize a constante — não
|
|
136
|
+
gere a lista ad hoc na hora de rodar `/vetor`.
|
|
137
|
+
|
|
138
|
+
### 3 — Exibir Sumário de Configuração e Próximos Passos
|
|
139
|
+
|
|
140
|
+
Após a criação/validação dos arquivos, exiba uma mensagem informativa clara e amigável para o desenvolvedor:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
🚀 Vetor inicializado com sucesso!
|
|
144
|
+
|
|
145
|
+
Runtime detectado: <runtime> (<testCommand>)
|
|
146
|
+
|
|
147
|
+
Knowledge: <label do campo `knowledge` no JSON de saída — ex.: "✓ Filesystem", "✓ Obsidian" ou "○ Disabled">
|
|
148
|
+
|
|
149
|
+
Arquivos configurados:
|
|
150
|
+
- [x] .claude/vetor/module-test-map.md (Mapeamento de testes por módulo)
|
|
151
|
+
- [x] .claude/vetor/config.json (runtime detectado + maxConcurrentWorkers: 5)
|
|
152
|
+
- [x] .claude/vetor/status/ (status files dos workers — gitignorado)
|
|
153
|
+
- [x] .claude/rules/vetor/<runtime>.md (convenções do projeto, carregadas sob demanda)
|
|
154
|
+
- [<x ou ->] CLAUDE.md — bloco de capacidades <inserido | atualizado | não encontrado (arquivo ausente)>
|
|
155
|
+
- [<x ou ->] AGENTS.md — bloco de capacidades <inserido | atualizado | não encontrado (arquivo ausente)>
|
|
156
|
+
|
|
157
|
+
Próximos passos recomendados:
|
|
158
|
+
1. Abra e revise o arquivo `.claude/vetor/module-test-map.md` para garantir que os comandos de teste headless e os mapeamentos de pasta de seu projeto estejam 100% corretos.
|
|
159
|
+
2. Revise e **commite** `.claude/rules/vetor/`. Os issue-workers rodam em worktrees, que só contêm arquivos rastreados pelo git — uma rule não commitada não chega até eles.
|
|
160
|
+
3. (Opcional) Crie a pasta `.claude/vetor/docs/` e adicione guias de arquitetura, padrões do projeto e gaps em markdown. O comando `/vetor:backlog` lerá automaticamente estes arquivos para propor issues altamente contextualizadas.
|
|
161
|
+
4. (Opcional) Rode `/vetor:stack-practices` para gerar regras de melhores práticas da stack detectada (via Context7).
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Se o script pulou algum arquivo por já existir, diga qual — e que só `--force` o sobrescreve. Reporte
|
|
165
|
+
também o resultado do passo 2.b: se o bloco de capacidades foi inserido, atualizado, ou se nenhum
|
|
166
|
+
`CLAUDE.md`/`AGENTS.md` foi encontrado na raiz (nesse caso, nenhuma ação foi tomada).
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Restrições
|
|
171
|
+
|
|
172
|
+
- Nunca execute ações destrutivas em arquivos de configuração existentes sem a flag `--force`
|
|
173
|
+
- Nunca altere códigos de negócio ou arquivos fora de `.claude/vetor/` e `.claude/rules/vetor/`
|
|
174
|
+
- Nunca escreva em `.claude/rules/` fora do subdiretório `vetor/` — esse espaço é do usuário
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: worktree-create
|
|
3
|
+
description: Criação headless de worktree — sem prompts interativos, todos os parâmetros via args. Primitivo usado pelo issue-coordinator e disponível como slash command standalone.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Claude Code
|
|
6
|
+
metadata:
|
|
7
|
+
author: vitortavares
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Você é o primitivo de criação de worktree do Vetor. Sua única responsabilidade é criar um worktree Git isolado de forma determinística, sem perguntas ao usuário.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Sintaxe
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/vetor:worktree-create <type> <slug> [issue#]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
- `<type>`: obrigatório — um de `feat`, `fix`, `chore`, `refactor`
|
|
22
|
+
- `<slug>`: obrigatório — kebab-case, máximo 30 caracteres (ex.: `embedding-retry`, `auth-refresh`)
|
|
23
|
+
- `[issue#]`: opcional — número inteiro da issue GitHub
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Comportamento
|
|
28
|
+
|
|
29
|
+
### 1 — Validação de args
|
|
30
|
+
|
|
31
|
+
Verifique os argumentos recebidos usando o script determinístico:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
scripts/vetor-checks.sh validate-issue-ref "$issue_ref" || exit 1
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Valide também:
|
|
38
|
+
|
|
39
|
+
- Se `<type>` não for um dos valores aceitos (`feat`, `fix`, `chore`, `refactor`):
|
|
40
|
+
```
|
|
41
|
+
ERRO: tipo inválido "<type>". Valores aceitos: feat, fix, chore, refactor
|
|
42
|
+
```
|
|
43
|
+
Aborte.
|
|
44
|
+
|
|
45
|
+
- Se `<slug>` não for kebab-case ou tiver mais de 30 caracteres:
|
|
46
|
+
```
|
|
47
|
+
ERRO: slug inválido "<slug>". Use kebab-case com no máximo 30 caracteres.
|
|
48
|
+
```
|
|
49
|
+
Aborte.
|
|
50
|
+
|
|
51
|
+
### 2 — Derivar nomes
|
|
52
|
+
|
|
53
|
+
Detecte a branch default do repositório: leia `../shared/references/project-conventions.md` e resolva `$DEFAULT_BRANCH` conforme descrito lá (não assuma `master`).
|
|
54
|
+
|
|
55
|
+
- **Branch:** `<type>/<issue#>-<slug>` se issue fornecida; `<type>/<slug>` caso contrário
|
|
56
|
+
- **Path:** `.claude/worktrees/<slug>`
|
|
57
|
+
|
|
58
|
+
### 3 — Verificar conflitos
|
|
59
|
+
|
|
60
|
+
Antes de criar, verifique se a branch ou o worktree já existem:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
git branch --list "<branch>"
|
|
64
|
+
git worktree list | grep "<slug>"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Se qualquer um já existir:
|
|
68
|
+
```
|
|
69
|
+
ERRO: branch "<branch>" ou worktree ".claude/worktrees/<slug>" já existe.
|
|
70
|
+
Use outro slug ou remova o worktree existente com:
|
|
71
|
+
git worktree remove .claude/worktrees/<slug>
|
|
72
|
+
git branch -d <branch>
|
|
73
|
+
```
|
|
74
|
+
**Aborte.** Nunca entre silenciosamente em um worktree existente.
|
|
75
|
+
|
|
76
|
+
### 4 — Criar worktree
|
|
77
|
+
|
|
78
|
+
Execute em sequência:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
git pull origin "$DEFAULT_BRANCH"
|
|
82
|
+
|
|
83
|
+
git worktree add -b <branch> .claude/worktrees/<slug> "$DEFAULT_BRANCH"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Se `git pull` falhar (ex.: rede indisponível), continue com a branch default local e avise:
|
|
87
|
+
```
|
|
88
|
+
AVISO: git pull falhou — criando worktree a partir da <default-branch> local.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Se `git worktree add` falhar, reporte o erro e aborte.
|
|
92
|
+
|
|
93
|
+
### 4.b — Preparar dependências
|
|
94
|
+
|
|
95
|
+
Delegue ao script determinístico — ele detecta o runtime e faz o que couber (Deno puro é no-op,
|
|
96
|
+
pois o cache `$DENO_DIR` já é global; Node ganha um link para o `node_modules` da raiz):
|
|
97
|
+
|
|
98
|
+
> O path relativo abaixo resolve a partir do diretório desta própria skill (informado ao carregar,
|
|
99
|
+
> ex. "Base directory for this skill: ..."), não do `cwd` de execução — defina uma vez:
|
|
100
|
+
> ```bash
|
|
101
|
+
> SKILL_DIR="<path absoluto informado como 'Base directory for this skill' no carregamento>"
|
|
102
|
+
> ```
|
|
103
|
+
> e use `"$SKILL_DIR/../../scripts/..."` em todo comando abaixo, nunca o path relativo isolado.
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
deno run -A "$SKILL_DIR/../../scripts/prepare-worktree.ts" --path .claude/worktrees/<slug>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
O script é tolerante a falhas: avisa em stderr e sai com 0 mesmo se a preparação falhar. Prossiga
|
|
110
|
+
normalmente — o worker instala o que faltar.
|
|
111
|
+
|
|
112
|
+
> No fluxo do `issue-coordinator`, o worktree é criado pelo harness (`isolation: "worktree"`) e a
|
|
113
|
+
> preparação roda sozinha via hook `WorktreeCreate`. Esta chamada só é necessária aqui, no uso
|
|
114
|
+
> standalone do skill.
|
|
115
|
+
|
|
116
|
+
### 5 — Entrar no worktree
|
|
117
|
+
|
|
118
|
+
Use a ferramenta `EnterWorktree` com o path `.claude/worktrees/<slug>` para mudar o contexto de trabalho.
|
|
119
|
+
|
|
120
|
+
### 6 — Saída
|
|
121
|
+
|
|
122
|
+
Após criar e entrar no worktree com sucesso, imprima:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{"branch": "<branch>", "path": ".claude/worktrees/<slug>", "issue": <N|null>}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
E informe:
|
|
129
|
+
```
|
|
130
|
+
Worktree criado e ativado.
|
|
131
|
+
Branch: <branch>
|
|
132
|
+
Path: .claude/worktrees/<slug>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Restrições
|
|
138
|
+
|
|
139
|
+
- Nunca faça perguntas ao usuário — todos os parâmetros vêm dos args
|
|
140
|
+
- Nunca entre em um worktree existente — sempre aborte com erro se houver conflito
|
|
141
|
+
- Nunca faça push ou crie PR — isso é responsabilidade do `worktree-ship`
|
|
142
|
+
- Se invocado como primitivo por outro skill (ex.: `issue-coordinator`), o `EnterWorktree` afeta apenas a sessão local do invocador
|