jdi-cli 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.
Files changed (159) hide show
  1. package/AGENTS.md +209 -0
  2. package/ARCHITECTURE.md +210 -0
  3. package/COMMANDS.md +241 -0
  4. package/CREATE-EXAMPLE.md +385 -0
  5. package/CREATE.md +315 -0
  6. package/EXTENSION.md +141 -0
  7. package/LICENSE +21 -0
  8. package/MEMORY.md +471 -0
  9. package/PORTABILITY.md +438 -0
  10. package/README.md +789 -0
  11. package/bin/git-hooks/post-commit +16 -0
  12. package/bin/git-hooks/pre-commit +21 -0
  13. package/bin/jdi-build.ps1 +381 -0
  14. package/bin/jdi-build.sh +332 -0
  15. package/bin/jdi-doctor.ps1 +403 -0
  16. package/bin/jdi-doctor.sh +400 -0
  17. package/bin/jdi-install-caveman.ps1 +97 -0
  18. package/bin/jdi-install-caveman.sh +99 -0
  19. package/bin/jdi-install-playwright.ps1 +319 -0
  20. package/bin/jdi-install-playwright.sh +284 -0
  21. package/bin/jdi-install.ps1 +154 -0
  22. package/bin/jdi-install.sh +132 -0
  23. package/bin/jdi-uninstall.ps1 +309 -0
  24. package/bin/jdi-uninstall.sh +264 -0
  25. package/bin/jdi-update.ps1 +215 -0
  26. package/bin/jdi-update.sh +209 -0
  27. package/bin/jdi.js +460 -0
  28. package/bin/lib/jdi-monitor.ps1 +66 -0
  29. package/bin/lib/jdi-monitor.sh +74 -0
  30. package/bin/lib/jdi-truncate.ps1 +96 -0
  31. package/bin/lib/jdi-truncate.sh +99 -0
  32. package/bin/lib/ui.js +197 -0
  33. package/core/agents/jdi-adopter.md +465 -0
  34. package/core/agents/jdi-architect.md +894 -0
  35. package/core/agents/jdi-asker.md +153 -0
  36. package/core/agents/jdi-bootstrap.md +247 -0
  37. package/core/agents/jdi-planner.md +254 -0
  38. package/core/agents/jdi-researcher.md +303 -0
  39. package/core/commands/jdi-adopt.md +155 -0
  40. package/core/commands/jdi-bootstrap.md +81 -0
  41. package/core/commands/jdi-create.md +80 -0
  42. package/core/commands/jdi-discuss.md +80 -0
  43. package/core/commands/jdi-do.md +200 -0
  44. package/core/commands/jdi-loop.md +315 -0
  45. package/core/commands/jdi-new.md +131 -0
  46. package/core/commands/jdi-plan.md +73 -0
  47. package/core/commands/jdi-ship.md +146 -0
  48. package/core/commands/jdi-verify.md +159 -0
  49. package/core/skills/clean-code/SKILL.md +261 -0
  50. package/core/skills/dry/SKILL.md +150 -0
  51. package/core/skills/frontend-rules/SKILL.md +386 -0
  52. package/core/skills/frontend-validator/SKILL.md +567 -0
  53. package/core/skills/kiss/SKILL.md +178 -0
  54. package/core/skills/solid/SKILL.md +281 -0
  55. package/core/skills/yagni/SKILL.md +207 -0
  56. package/core/templates/agent.md +72 -0
  57. package/core/templates/doer-specialist.md +216 -0
  58. package/core/templates/reviewer-specialist.md +405 -0
  59. package/core/templates/skill.md +66 -0
  60. package/package.json +70 -0
  61. package/runtimes/antigravity/agents.md +74 -0
  62. package/runtimes/antigravity/skills/clean-code/SKILL.md +252 -0
  63. package/runtimes/antigravity/skills/dry/SKILL.md +141 -0
  64. package/runtimes/antigravity/skills/frontend-rules/SKILL.md +376 -0
  65. package/runtimes/antigravity/skills/frontend-validator/SKILL.md +559 -0
  66. package/runtimes/antigravity/skills/jdi-adopt/SKILL.md +155 -0
  67. package/runtimes/antigravity/skills/jdi-adopter/SKILL.md +436 -0
  68. package/runtimes/antigravity/skills/jdi-architect/SKILL.md +872 -0
  69. package/runtimes/antigravity/skills/jdi-asker/SKILL.md +125 -0
  70. package/runtimes/antigravity/skills/jdi-asker/references/context-template.md +34 -0
  71. package/runtimes/antigravity/skills/jdi-asker/references/decision-format.md +19 -0
  72. package/runtimes/antigravity/skills/jdi-asker/scripts/find_phase_dir.sh +25 -0
  73. package/runtimes/antigravity/skills/jdi-bootstrap/SKILL.md +81 -0
  74. package/runtimes/antigravity/skills/jdi-create/SKILL.md +80 -0
  75. package/runtimes/antigravity/skills/jdi-discuss/SKILL.md +80 -0
  76. package/runtimes/antigravity/skills/jdi-discuss/scripts/run_command.sh +62 -0
  77. package/runtimes/antigravity/skills/jdi-do/SKILL.md +200 -0
  78. package/runtimes/antigravity/skills/jdi-loop/SKILL.md +315 -0
  79. package/runtimes/antigravity/skills/jdi-new/SKILL.md +131 -0
  80. package/runtimes/antigravity/skills/jdi-plan/SKILL.md +73 -0
  81. package/runtimes/antigravity/skills/jdi-planner/SKILL.md +225 -0
  82. package/runtimes/antigravity/skills/jdi-researcher/SKILL.md +274 -0
  83. package/runtimes/antigravity/skills/jdi-ship/SKILL.md +146 -0
  84. package/runtimes/antigravity/skills/jdi-verify/SKILL.md +159 -0
  85. package/runtimes/antigravity/skills/kiss/SKILL.md +169 -0
  86. package/runtimes/antigravity/skills/solid/SKILL.md +272 -0
  87. package/runtimes/antigravity/skills/yagni/SKILL.md +198 -0
  88. package/runtimes/claude/CLAUDE.md +91 -0
  89. package/runtimes/claude/agents/jdi-adopter.md +430 -0
  90. package/runtimes/claude/agents/jdi-architect.md +864 -0
  91. package/runtimes/claude/agents/jdi-asker.md +119 -0
  92. package/runtimes/claude/agents/jdi-bootstrap.md +213 -0
  93. package/runtimes/claude/agents/jdi-planner.md +221 -0
  94. package/runtimes/claude/agents/jdi-researcher.md +269 -0
  95. package/runtimes/claude/commands/jdi-adopt.md +155 -0
  96. package/runtimes/claude/commands/jdi-bootstrap.md +81 -0
  97. package/runtimes/claude/commands/jdi-create.md +80 -0
  98. package/runtimes/claude/commands/jdi-discuss.md +80 -0
  99. package/runtimes/claude/commands/jdi-do.md +200 -0
  100. package/runtimes/claude/commands/jdi-loop.md +315 -0
  101. package/runtimes/claude/commands/jdi-new.md +131 -0
  102. package/runtimes/claude/commands/jdi-plan.md +73 -0
  103. package/runtimes/claude/commands/jdi-ship.md +146 -0
  104. package/runtimes/claude/commands/jdi-verify.md +159 -0
  105. package/runtimes/claude/settings.example.json +132 -0
  106. package/runtimes/claude/skills/clean-code/SKILL.md +247 -0
  107. package/runtimes/claude/skills/dry/SKILL.md +136 -0
  108. package/runtimes/claude/skills/frontend-rules/SKILL.md +369 -0
  109. package/runtimes/claude/skills/frontend-validator/SKILL.md +553 -0
  110. package/runtimes/claude/skills/kiss/SKILL.md +164 -0
  111. package/runtimes/claude/skills/solid/SKILL.md +267 -0
  112. package/runtimes/claude/skills/yagni/SKILL.md +193 -0
  113. package/runtimes/copilot/agents/jdi-adopter.agent.md +430 -0
  114. package/runtimes/copilot/agents/jdi-architect.agent.md +864 -0
  115. package/runtimes/copilot/agents/jdi-asker.agent.md +119 -0
  116. package/runtimes/copilot/agents/jdi-bootstrap.agent.md +213 -0
  117. package/runtimes/copilot/agents/jdi-planner.agent.md +221 -0
  118. package/runtimes/copilot/agents/jdi-researcher.agent.md +269 -0
  119. package/runtimes/copilot/copilot-instructions.md +80 -0
  120. package/runtimes/copilot/prompts/jdi-adopt.prompt.md +155 -0
  121. package/runtimes/copilot/prompts/jdi-bootstrap.prompt.md +81 -0
  122. package/runtimes/copilot/prompts/jdi-create.prompt.md +80 -0
  123. package/runtimes/copilot/prompts/jdi-discuss.prompt.md +80 -0
  124. package/runtimes/copilot/prompts/jdi-do.prompt.md +200 -0
  125. package/runtimes/copilot/prompts/jdi-loop.prompt.md +315 -0
  126. package/runtimes/copilot/prompts/jdi-new.prompt.md +131 -0
  127. package/runtimes/copilot/prompts/jdi-plan.prompt.md +73 -0
  128. package/runtimes/copilot/prompts/jdi-ship.prompt.md +146 -0
  129. package/runtimes/copilot/prompts/jdi-verify.prompt.md +159 -0
  130. package/runtimes/opencode/AGENTS.md +87 -0
  131. package/runtimes/opencode/agents/jdi-adopter.md +434 -0
  132. package/runtimes/opencode/agents/jdi-architect.md +861 -0
  133. package/runtimes/opencode/agents/jdi-asker.md +123 -0
  134. package/runtimes/opencode/agents/jdi-bootstrap.md +217 -0
  135. package/runtimes/opencode/agents/jdi-planner.md +225 -0
  136. package/runtimes/opencode/agents/jdi-researcher.md +273 -0
  137. package/runtimes/opencode/commands/jdi-adopt.md +155 -0
  138. package/runtimes/opencode/commands/jdi-bootstrap.md +81 -0
  139. package/runtimes/opencode/commands/jdi-create.md +80 -0
  140. package/runtimes/opencode/commands/jdi-discuss.md +80 -0
  141. package/runtimes/opencode/commands/jdi-do.md +200 -0
  142. package/runtimes/opencode/commands/jdi-loop.md +315 -0
  143. package/runtimes/opencode/commands/jdi-new.md +131 -0
  144. package/runtimes/opencode/commands/jdi-plan.md +73 -0
  145. package/runtimes/opencode/commands/jdi-ship.md +146 -0
  146. package/runtimes/opencode/commands/jdi-verify.md +159 -0
  147. package/runtimes/opencode/opencode.example.jsonc +169 -0
  148. package/runtimes/opencode/skills/clean-code/SKILL.md +247 -0
  149. package/runtimes/opencode/skills/dry/SKILL.md +136 -0
  150. package/runtimes/opencode/skills/frontend-rules/SKILL.md +369 -0
  151. package/runtimes/opencode/skills/frontend-validator/SKILL.md +553 -0
  152. package/runtimes/opencode/skills/kiss/SKILL.md +164 -0
  153. package/runtimes/opencode/skills/solid/SKILL.md +267 -0
  154. package/runtimes/opencode/skills/yagni/SKILL.md +193 -0
  155. package/templates-jdi-folder/config.json +18 -0
  156. package/templates-jdi-folder/registry.md +31 -0
  157. package/templates-jdi-folder/reviewers.md +33 -0
  158. package/templates-jdi-folder/skills-registry.md +32 -0
  159. package/templates-jdi-folder/specialists.md +39 -0
package/PORTABILITY.md ADDED
@@ -0,0 +1,438 @@
1
+ # JDI — Portability
2
+
3
+ JDI roda em 4 runtimes: **Claude Code**, **GitHub Copilot**, **Google Antigravity**, **OpenCode**.
4
+
5
+ Estrategia: 1 fonte de verdade (`core/`) + adapters por runtime (`runtimes/<name>/`). 1 script que sincroniza.
6
+
7
+ ## Mapeamento dos 4 runtimes
8
+
9
+ | Conceito JDI | Claude Code | GitHub Copilot | Antigravity | OpenCode |
10
+ |---|---|---|---|---|
11
+ | Comando | `.claude/commands/<n>.md` | `.github/prompts/<n>.prompt.md` | `skills/<n>/SKILL.md` | `.opencode/commands/<n>.md` |
12
+ | Agente | `.claude/agents/<n>.md` | `.github/agents/<n>.agent.md` | `skills/<n>/SKILL.md` | `.opencode/agents/<n>.md` |
13
+ | Skill | `.claude/skills/<n>/SKILL.md` | n/a | `skills/<n>/` | `.opencode/skills/<n>/SKILL.md` (le tambem `.claude/skills/`) |
14
+ | Instrucao global | `CLAUDE.md` | `.github/copilot-instructions.md` | `agents.md` | `AGENTS.md` |
15
+ | Hook | `settings.json` `hooks` | nao tem | nao tem | `opencode.jsonc` `permission` |
16
+ | Invocacao | `/jdi-discuss` | `/jdi-discuss` ou `@jdi-asker` | discovery por trigger | `/jdi-discuss` ou `@jdi-asker` |
17
+ | Tools restritas | frontmatter `tools:` | frontmatter `tools:` | sem restricao formal | frontmatter `permission:` |
18
+ | Modelo escolhido | `model: opus|sonnet|haiku` | `model: gpt-5|...` | nao expoe | `model: anthropic/claude-...|openai/...` |
19
+ | Subagent flag | implicit (Agent tool spawn) | `@<name>` referenciado | discovery | `mode: subagent` + `subtask: true` |
20
+
21
+ Refs:
22
+ - [Claude Code agents docs](https://docs.claude.com/en/docs/claude-code/sub-agents)
23
+ - [GitHub Copilot custom agents](https://docs.github.com/en/copilot/concepts/agents/cloud-agent/about-custom-agents)
24
+ - [Antigravity skills](https://antigravity.google/docs/skills)
25
+ - [OpenCode agents](https://opencode.ai/docs/agents/)
26
+ - [OpenCode commands](https://opencode.ai/docs/commands/)
27
+ - [OpenCode skills](https://opencode.ai/docs/skills/)
28
+
29
+ ## Diferencas chave
30
+
31
+ ### Hooks
32
+ **Limitacao:** so Claude Code suporta hooks de runtime nativos (pre-commit, post-commit, etc).
33
+
34
+ **Workaround multi-runtime:**
35
+ - Hook `pre-commit` e `post-commit` em `.githooks/` sao **no-op por padrao**
36
+ - Reviewer (`/jdi-verify`) cobre validacao de qualidade — sem necessidade de doc-bot pre-commit
37
+ - User pode customizar `.githooks/` pra:
38
+ - Lint rapido pre-commit
39
+ - Notificacao Slack pos-commit
40
+ - Etc.
41
+ - Pra ativar: `git config core.hooksPath .githooks`
42
+
43
+ JDI documenta os 4 caminhos. User ativa o que tem.
44
+
45
+ OpenCode tem `permission:` por agent no frontmatter — nao eh hook, mas controla edit/bash/write granular.
46
+
47
+ ### Tools restritas
48
+ **Claude Code:** frontmatter `tools: [Read, Write, Edit, Bash, Grep, Glob]` aplica least-privilege.
49
+
50
+ **Copilot:** mesma sintaxe, mas suporte limitado a algumas tools.
51
+
52
+ **Antigravity:** SKILL.md nao restringe tools. Restricao via convencao na prosa do skill.
53
+
54
+ **OpenCode:** frontmatter `permission:` granular por verbo:
55
+ ```yaml
56
+ permission:
57
+ edit: deny # nao edita arquivos do projeto
58
+ bash:
59
+ "*": ask # pergunta antes de qq comando shell
60
+ "git status": allow
61
+ "git diff": allow
62
+ write: allow # pode criar arquivos novos
63
+ skill: allow # pode carregar skills
64
+ ```
65
+
66
+ ### Modelo
67
+ **Claude:** `model: opus` / `sonnet` / `haiku` no frontmatter.
68
+
69
+ **Copilot:** `model: gpt-5` / `claude-opus-4-7` / etc — depende da config da org.
70
+
71
+ **Antigravity:** transparente. Usa o modelo ativo no IDE.
72
+
73
+ **OpenCode:** `model: <provider>/<id>` exato. Exemplos:
74
+ - `anthropic/claude-sonnet-4-20250514`
75
+ - `anthropic/claude-opus-4-7`
76
+ - `openai/gpt-5`
77
+ - `google/gemini-2.5-flash`
78
+
79
+ JDI core declara intent (`reasoning: medium`) — adapter traduz pra modelo concreto por runtime.
80
+
81
+ ### Discovery
82
+ **Claude:** comando precisa estar em `commands/`. Agente precisa estar em `agents/`. Listado por nome.
83
+
84
+ **Copilot:** prompts em `.github/prompts/` listados via `/`. Agents auto-descobertos quando referenciado por `@`.
85
+
86
+ **Antigravity:** descoberta por **descricao + triggers**. SKILL.md frontmatter precisa ter `triggers:` claros. Agent escolhe skill automaticamente quando match.
87
+
88
+ **OpenCode:** comandos em `.opencode/commands/` listados via `/`. Agents em `.opencode/agents/` invocados via `@<name>` ou pelo `agent:` field do command. Skills descobertas via walk-up do cwd ate git worktree, lendo `.opencode/skills/`, `.claude/skills/`, `.agents/skills/`.
89
+
90
+ JDI core formata pra atender o pior caso (Antigravity precisa triggers fortes) — outros runtimes ignoram o campo extra.
91
+
92
+ ## Estrutura de pastas
93
+
94
+ ```
95
+ jdi/
96
+ +-- core/ source of truth
97
+ | +-- agents/
98
+ | | +-- jdi-researcher.md Opus - upfront discovery
99
+ | | +-- jdi-bootstrap.md Sonnet - dispara architect modo specialist
100
+ | | +-- jdi-asker.md Sonnet - loop de perguntas
101
+ | | +-- jdi-planner.md Opus - decompose phase
102
+ | | +-- jdi-architect.md Opus - meta (modo create + specialist)
103
+ | +-- commands/
104
+ | | +-- jdi-new.md
105
+ | | +-- jdi-bootstrap.md
106
+ | | +-- jdi-discuss.md
107
+ | | +-- jdi-plan.md
108
+ | | +-- jdi-do.md
109
+ | | +-- jdi-verify.md
110
+ | | +-- jdi-loop.md ralph loop, dev<->review automatico
111
+ | | +-- jdi-ship.md
112
+ | | +-- jdi-create.md (so contributors)
113
+ | +-- templates/
114
+ | +-- agent.md base pra agent generico
115
+ | +-- skill.md base pra skill
116
+ | +-- doer-specialist.md usado pelo architect modo specialist
117
+ | +-- reviewer-specialist.md idem
118
+ |
119
+ +-- runtimes/ gerados, nao editar a mao
120
+ | +-- claude/
121
+ | | +-- agents/
122
+ | | +-- commands/
123
+ | | +-- CLAUDE.md
124
+ | | +-- settings.example.json
125
+ | +-- copilot/
126
+ | | +-- agents/ .github/agents/<n>.agent.md
127
+ | | +-- prompts/ .github/prompts/<n>.prompt.md
128
+ | | +-- copilot-instructions.md
129
+ | +-- antigravity/
130
+ | | +-- skills/ cada agente vira <name>/SKILL.md
131
+ | | +-- agents.md
132
+ | +-- opencode/
133
+ | | +-- agents/ .opencode/agents/<n>.md
134
+ | | +-- commands/ .opencode/commands/<n>.md
135
+ | | +-- skills/ .opencode/skills/<n>/SKILL.md
136
+ | | +-- AGENTS.md
137
+ | | +-- opencode.example.jsonc
138
+ |
139
+ +-- bin/
140
+ | +-- jdi-build builda runtimes/ a partir de core/
141
+ | +-- jdi-install instala em ~/.claude, .github/, ~/.gemini/
142
+ |
143
+ +-- README.md
144
+ +-- ARCHITECTURE.md
145
+ +-- AGENTS.md
146
+ +-- COMMANDS.md
147
+ +-- MEMORY.md (state schema dos files .jdi/)
148
+ +-- EXTENSION.md
149
+ +-- CREATE.md
150
+ +-- CREATE-EXAMPLE.md
151
+ +-- PORTABILITY.md
152
+ ```
153
+
154
+ ## Formato do source-of-truth (`core/agents/<n>.md`)
155
+
156
+ ```yaml
157
+ ---
158
+ name: jdi-asker
159
+ description: Loop adaptativo de perguntas. Vira CONTEXT.md.
160
+ runtime_intent:
161
+ role: discover_decisions
162
+ reasoning: medium # cheap | medium | deep
163
+ privileges: read+write
164
+ tools_canonical:
165
+ - read
166
+ - write
167
+ - grep
168
+ - glob
169
+ - ask_user_question
170
+ triggers: # usado pelo Antigravity discovery
171
+ - "discutir phase"
172
+ - "context para phase"
173
+ - "decisoes para phase"
174
+ runtime_overrides:
175
+ claude:
176
+ model: sonnet
177
+ tools: [Read, Write, Grep, Glob, AskUserQuestion]
178
+ copilot:
179
+ model: gpt-5
180
+ tools: [read, write, grep, glob]
181
+ antigravity:
182
+ triggers_extra:
183
+ - "iniciar discuss"
184
+ - "/jdi-discuss"
185
+ ---
186
+
187
+ <role>
188
+ ... corpo do agente em markdown comum ...
189
+ </role>
190
+
191
+ <process>
192
+ ... fluxo ...
193
+ </process>
194
+
195
+ <output>
196
+ ... saida esperada ...
197
+ </output>
198
+ ```
199
+
200
+ ## Build script (`bin/jdi-build`)
201
+
202
+ Pseudocode:
203
+
204
+ ```bash
205
+ #!/usr/bin/env bash
206
+ # Le core/, gera runtimes/
207
+
208
+ for agent in core/agents/*.md; do
209
+ name=$(basename "$agent" .md)
210
+
211
+ # Claude
212
+ jq-md remap-frontmatter "$agent" \
213
+ --map "tools_canonical -> tools" \
214
+ --map "runtime_overrides.claude.model -> model" \
215
+ --strip "runtime_intent,triggers,runtime_overrides" \
216
+ > "runtimes/claude/agents/$name.md"
217
+
218
+ # Copilot
219
+ jq-md remap-frontmatter "$agent" \
220
+ --map "tools_canonical -> tools" \
221
+ --map "runtime_overrides.copilot.model -> model" \
222
+ --strip "runtime_intent,triggers,runtime_overrides" \
223
+ --rename-ext ".agent.md" \
224
+ > "runtimes/copilot/agents/$name.agent.md"
225
+
226
+ # Antigravity
227
+ mkdir -p "runtimes/antigravity/skills/$name"
228
+ jq-md to-skill-format "$agent" \
229
+ --strip "runtime_overrides,tools_canonical" \
230
+ --merge-triggers "runtime_overrides.antigravity.triggers_extra" \
231
+ > "runtimes/antigravity/skills/$name/SKILL.md"
232
+ done
233
+
234
+ # Comandos seguem o mesmo padrao
235
+ for cmd in core/commands/*.md; do
236
+ name=$(basename "$cmd" .md)
237
+
238
+ cp "$cmd" "runtimes/claude/commands/$name.md"
239
+
240
+ # Copilot: vira prompt file
241
+ cp "$cmd" "runtimes/copilot/prompts/$name.prompt.md"
242
+
243
+ # Antigravity: vira skill (comando = skill com trigger forte)
244
+ mkdir -p "runtimes/antigravity/skills/$name"
245
+ cp "$cmd" "runtimes/antigravity/skills/$name/SKILL.md"
246
+ done
247
+ ```
248
+
249
+ Implementacao real: bash + yq + sed (atual). Reescreve em ts se virar projeto serio.
250
+
251
+ ## Install script (`bin/jdi-install`)
252
+
253
+ ```bash
254
+ #!/usr/bin/env bash
255
+ # Uso: ./jdi-install <runtime> [--scope user|project]
256
+ #
257
+ # runtimes: claude | copilot | antigravity | all
258
+ # scope: user (global) | project (default)
259
+
260
+ RUNTIME="${1:-all}"
261
+ SCOPE="${2:---scope project}"
262
+
263
+ install_claude() {
264
+ if [[ "$SCOPE" == *"user"* ]]; then
265
+ DEST="$HOME/.claude"
266
+ else
267
+ DEST="$PWD/.claude"
268
+ fi
269
+ mkdir -p "$DEST/agents" "$DEST/commands"
270
+ cp -r runtimes/claude/agents/* "$DEST/agents/"
271
+ cp -r runtimes/claude/commands/* "$DEST/commands/"
272
+ cp runtimes/claude/CLAUDE.md "$PWD/CLAUDE.md"
273
+ echo "Claude Code: instalado em $DEST"
274
+ }
275
+
276
+ install_copilot() {
277
+ DEST="$PWD/.github"
278
+ mkdir -p "$DEST/agents" "$DEST/prompts"
279
+ cp -r runtimes/copilot/agents/* "$DEST/agents/"
280
+ cp -r runtimes/copilot/prompts/* "$DEST/prompts/"
281
+ cp runtimes/copilot/copilot-instructions.md "$DEST/copilot-instructions.md"
282
+ echo "Copilot: instalado em $DEST"
283
+ }
284
+
285
+ install_antigravity() {
286
+ if [[ "$SCOPE" == *"user"* ]]; then
287
+ DEST="$HOME/.gemini/antigravity"
288
+ else
289
+ DEST="$PWD/.gemini/antigravity"
290
+ fi
291
+ mkdir -p "$DEST/skills"
292
+ cp -r runtimes/antigravity/skills/* "$DEST/skills/"
293
+ cp runtimes/antigravity/agents.md "$PWD/agents.md"
294
+ echo "Antigravity: instalado em $DEST"
295
+ }
296
+
297
+ case "$RUNTIME" in
298
+ claude) install_claude ;;
299
+ copilot) install_copilot ;;
300
+ antigravity) install_antigravity ;;
301
+ all) install_claude && install_copilot && install_antigravity ;;
302
+ *) echo "runtime invalido: $RUNTIME"; exit 1 ;;
303
+ esac
304
+ ```
305
+
306
+ ## Diferencas que precisam de attention
307
+
308
+ ### 1. AskUserQuestion
309
+ - **Claude:** tool nativo
310
+ - **Copilot:** `vscode_askquestions` (equivalente)
311
+ - **Antigravity:** sem equivalente formal — skill instrui agente a fazer pergunta em chat normal
312
+
313
+ JDI core escreve abstracao "ASK_USER" no prompt. Adapter substitui.
314
+
315
+ ### 2. Bash execution
316
+ - **Claude:** tool `Bash` com sandbox/permissions
317
+ - **Copilot:** tool execute_shell limitado
318
+ - **Antigravity:** scripts em `scripts/` invocaveis via path
319
+
320
+ JDI core usa pseudocode bash. Adapter envolve no formato certo.
321
+
322
+ ### 3. Web access
323
+ - **Claude:** WebSearch + WebFetch
324
+ - **Copilot:** acesso via plugin/MCP
325
+ - **Antigravity:** acesso direto, ferramentas variam
326
+
327
+ JDI core usa "WEB_FETCH(<url>)" e "WEB_SEARCH(<query>)". Adapter mapeia.
328
+
329
+ ### 4. MCP / ctx7
330
+ **Claude e Copilot suportam MCP nativamente.** Antigravity tem suporte parcial.
331
+
332
+ JDI usa `ctx7` como fallback CLI universal — funciona em todos. Os agentes preferem ctx7 quando MCP nao disponivel.
333
+
334
+ ## Comportamento minimo garantido
335
+
336
+ Cada agente JDI **deve** funcionar com:
337
+ - Read, Write, Edit, Bash (qualquer subset)
338
+ - Sem MCP
339
+ - Sem hooks
340
+ - Sem AskUserQuestion (degrada pra prompt textual)
341
+
342
+ Isso garante que mesmo no runtime mais restrito (Antigravity sem MCP, ou Copilot CLI), o agente roda.
343
+
344
+ Fallbacks documentados em cada agente em `core/agents/<n>.md`:
345
+
346
+ ```markdown
347
+ <fallbacks>
348
+ - Sem AskUserQuestion -> imprime opcoes numeradas, espera resposta de texto
349
+ - Sem ctx7 -> WebSearch oficial docs como fallback
350
+ - Sem WebSearch -> usa training knowledge tagged [ASSUMED]
351
+ </fallbacks>
352
+ ```
353
+
354
+ ## Sequencia de install
355
+
356
+ **Linux / macOS / WSL:**
357
+
358
+ ```bash
359
+ # Clone JDI
360
+ git clone https://github.com/<user>/jdi.git
361
+ cd jdi
362
+
363
+ # Build adapters
364
+ ./bin/jdi-build.sh
365
+
366
+ # Instala no(s) runtime(s) que voce usa
367
+ ./bin/jdi-install.sh claude --scope user
368
+ ./bin/jdi-install.sh copilot --scope project
369
+ ./bin/jdi-install.sh antigravity --scope user
370
+ ./bin/jdi-install.sh opencode --scope user
371
+ ```
372
+
373
+ **Windows (PowerShell nativo):**
374
+
375
+ ```powershell
376
+ git clone https://github.com/<user>/jdi.git
377
+ cd jdi
378
+
379
+ # Build adapters
380
+ .\bin\jdi-build.ps1
381
+
382
+ # Instala no(s) runtime(s) que voce usa
383
+ .\bin\jdi-install.ps1 -Runtime claude -Scope user
384
+ .\bin\jdi-install.ps1 -Runtime copilot -Scope project
385
+ .\bin\jdi-install.ps1 -Runtime antigravity -Scope user
386
+ .\bin\jdi-install.ps1 -Runtime opencode -Scope user
387
+ ```
388
+
389
+ Pra projetos novos: `jdi-install.sh all --scope project` (ou `.ps1 -Runtime all -Scope project`) deixa todos os 4 runtimes prontos no projeto.
390
+
391
+ ### Equivalencia entre `.sh` e `.ps1`
392
+
393
+ | Bash (Linux/Mac/WSL) | PowerShell (Windows) |
394
+ |---|---|
395
+ | `./bin/jdi-build.sh [runtime]` | `.\bin\jdi-build.ps1 [-Target runtime]` |
396
+ | `./bin/jdi-install.sh <runtime> --scope <s>` | `.\bin\jdi-install.ps1 -Runtime <runtime> -Scope <s>` |
397
+ | `./bin/jdi-doctor.sh [--verbose]` | `.\bin\jdi-doctor.ps1 [-Verbose]` |
398
+
399
+ Os scripts geram exatamente os mesmos arquivos em `runtimes/`. Voce pode rodar `.sh` em uma maquina e `.ps1` em outra — output identico.
400
+
401
+ ### Cache breakpoints (prompt caching)
402
+
403
+ JDI ships uma convencao de prompt cache via frontmatter `cache_breakpoints:` nos templates `doer-specialist.md` e `reviewer-specialist.md`. Lista de paths estaveis (PROJECT.md, DECISIONS.md, body do specialist) que valem como prefix de cache.
404
+
405
+ **Suporte por runtime:**
406
+
407
+ | Runtime | Suporte | Como usar |
408
+ |---|---|---|
409
+ | Claude Code | sim — `cache_control` na API | Harness aplica em system prompt + tool defs automaticamente quando o subagent eh spawned |
410
+ | OpenCode | sim — passa-se ao provider Anthropic | Habilitado por default em providers que suportam |
411
+ | Copilot | n/a | Sem cache control no GHCP. Frontmatter eh ignorado |
412
+ | Antigravity | n/a | Sem cache control. Frontmatter eh ignorado |
413
+
414
+ A convencao eh **declarativa**: frontmatter declara o que **nao muda** entre tasks da mesma phase. Runtimes que entendem usam — outros ignoram sem warning. Zero codigo. Zero dep.
415
+
416
+ **Por que vale a pena:** prefix-match cache hit corta 70-80% do custo de input tokens em fluxos multi-task da mesma phase (Claude API: cache write 1.25x, cache read 0.1x).
417
+
418
+ ## Limitacoes conhecidas
419
+
420
+ | Limitacao | Workaround |
421
+ |---|---|
422
+ | Copilot/Antigravity sem hooks de runtime | git hooks em `.githooks/` |
423
+ | Antigravity sem restricao de tools | convencao via prosa no SKILL.md |
424
+ | Copilot prompts file invocados manualmente, nao auto | usuario tem que digitar `/jdi-discuss` — sem auto-advance |
425
+ | OpenCode model id verboso | runtime_overrides.opencode.model declara explicito |
426
+ | OpenCode permission por verbo (edit/bash/write) | mapeia 1:1 — sem perda de granularidade |
427
+ | Antigravity discovery por trigger -> falsos positivos | triggers especificos com prefixo `jdi-` |
428
+ | Modelos diferentes por runtime | `runtime_overrides` no frontmatter declara intent |
429
+ | Tools com nomes diferentes (Read vs read_file) | adapter normaliza por runtime |
430
+
431
+ ## Sources
432
+
433
+ - [GitHub Copilot custom agents docs](https://docs.github.com/en/copilot/concepts/agents/cloud-agent/about-custom-agents)
434
+ - [Custom agents in VS Code](https://code.visualstudio.com/docs/copilot/customization/custom-agents)
435
+ - [Antigravity skills](https://antigravity.google/docs/skills)
436
+ - [Authoring Antigravity skills (codelab)](https://codelabs.developers.google.com/getting-started-with-antigravity-skills)
437
+ - [Awesome Copilot (community)](https://github.com/github/awesome-copilot)
438
+ - [Antigravity awesome skills (community)](https://github.com/sickn33/antigravity-awesome-skills)