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.
- package/AGENTS.md +209 -0
- package/ARCHITECTURE.md +210 -0
- package/COMMANDS.md +241 -0
- package/CREATE-EXAMPLE.md +385 -0
- package/CREATE.md +315 -0
- package/EXTENSION.md +141 -0
- package/LICENSE +21 -0
- package/MEMORY.md +471 -0
- package/PORTABILITY.md +438 -0
- package/README.md +789 -0
- package/bin/git-hooks/post-commit +16 -0
- package/bin/git-hooks/pre-commit +21 -0
- package/bin/jdi-build.ps1 +381 -0
- package/bin/jdi-build.sh +332 -0
- package/bin/jdi-doctor.ps1 +403 -0
- package/bin/jdi-doctor.sh +400 -0
- package/bin/jdi-install-caveman.ps1 +97 -0
- package/bin/jdi-install-caveman.sh +99 -0
- package/bin/jdi-install-playwright.ps1 +319 -0
- package/bin/jdi-install-playwright.sh +284 -0
- package/bin/jdi-install.ps1 +154 -0
- package/bin/jdi-install.sh +132 -0
- package/bin/jdi-uninstall.ps1 +309 -0
- package/bin/jdi-uninstall.sh +264 -0
- package/bin/jdi-update.ps1 +215 -0
- package/bin/jdi-update.sh +209 -0
- package/bin/jdi.js +460 -0
- package/bin/lib/jdi-monitor.ps1 +66 -0
- package/bin/lib/jdi-monitor.sh +74 -0
- package/bin/lib/jdi-truncate.ps1 +96 -0
- package/bin/lib/jdi-truncate.sh +99 -0
- package/bin/lib/ui.js +197 -0
- package/core/agents/jdi-adopter.md +465 -0
- package/core/agents/jdi-architect.md +894 -0
- package/core/agents/jdi-asker.md +153 -0
- package/core/agents/jdi-bootstrap.md +247 -0
- package/core/agents/jdi-planner.md +254 -0
- package/core/agents/jdi-researcher.md +303 -0
- package/core/commands/jdi-adopt.md +155 -0
- package/core/commands/jdi-bootstrap.md +81 -0
- package/core/commands/jdi-create.md +80 -0
- package/core/commands/jdi-discuss.md +80 -0
- package/core/commands/jdi-do.md +200 -0
- package/core/commands/jdi-loop.md +315 -0
- package/core/commands/jdi-new.md +131 -0
- package/core/commands/jdi-plan.md +73 -0
- package/core/commands/jdi-ship.md +146 -0
- package/core/commands/jdi-verify.md +159 -0
- package/core/skills/clean-code/SKILL.md +261 -0
- package/core/skills/dry/SKILL.md +150 -0
- package/core/skills/frontend-rules/SKILL.md +386 -0
- package/core/skills/frontend-validator/SKILL.md +567 -0
- package/core/skills/kiss/SKILL.md +178 -0
- package/core/skills/solid/SKILL.md +281 -0
- package/core/skills/yagni/SKILL.md +207 -0
- package/core/templates/agent.md +72 -0
- package/core/templates/doer-specialist.md +216 -0
- package/core/templates/reviewer-specialist.md +405 -0
- package/core/templates/skill.md +66 -0
- package/package.json +70 -0
- package/runtimes/antigravity/agents.md +74 -0
- package/runtimes/antigravity/skills/clean-code/SKILL.md +252 -0
- package/runtimes/antigravity/skills/dry/SKILL.md +141 -0
- package/runtimes/antigravity/skills/frontend-rules/SKILL.md +376 -0
- package/runtimes/antigravity/skills/frontend-validator/SKILL.md +559 -0
- package/runtimes/antigravity/skills/jdi-adopt/SKILL.md +155 -0
- package/runtimes/antigravity/skills/jdi-adopter/SKILL.md +436 -0
- package/runtimes/antigravity/skills/jdi-architect/SKILL.md +872 -0
- package/runtimes/antigravity/skills/jdi-asker/SKILL.md +125 -0
- package/runtimes/antigravity/skills/jdi-asker/references/context-template.md +34 -0
- package/runtimes/antigravity/skills/jdi-asker/references/decision-format.md +19 -0
- package/runtimes/antigravity/skills/jdi-asker/scripts/find_phase_dir.sh +25 -0
- package/runtimes/antigravity/skills/jdi-bootstrap/SKILL.md +81 -0
- package/runtimes/antigravity/skills/jdi-create/SKILL.md +80 -0
- package/runtimes/antigravity/skills/jdi-discuss/SKILL.md +80 -0
- package/runtimes/antigravity/skills/jdi-discuss/scripts/run_command.sh +62 -0
- package/runtimes/antigravity/skills/jdi-do/SKILL.md +200 -0
- package/runtimes/antigravity/skills/jdi-loop/SKILL.md +315 -0
- package/runtimes/antigravity/skills/jdi-new/SKILL.md +131 -0
- package/runtimes/antigravity/skills/jdi-plan/SKILL.md +73 -0
- package/runtimes/antigravity/skills/jdi-planner/SKILL.md +225 -0
- package/runtimes/antigravity/skills/jdi-researcher/SKILL.md +274 -0
- package/runtimes/antigravity/skills/jdi-ship/SKILL.md +146 -0
- package/runtimes/antigravity/skills/jdi-verify/SKILL.md +159 -0
- package/runtimes/antigravity/skills/kiss/SKILL.md +169 -0
- package/runtimes/antigravity/skills/solid/SKILL.md +272 -0
- package/runtimes/antigravity/skills/yagni/SKILL.md +198 -0
- package/runtimes/claude/CLAUDE.md +91 -0
- package/runtimes/claude/agents/jdi-adopter.md +430 -0
- package/runtimes/claude/agents/jdi-architect.md +864 -0
- package/runtimes/claude/agents/jdi-asker.md +119 -0
- package/runtimes/claude/agents/jdi-bootstrap.md +213 -0
- package/runtimes/claude/agents/jdi-planner.md +221 -0
- package/runtimes/claude/agents/jdi-researcher.md +269 -0
- package/runtimes/claude/commands/jdi-adopt.md +155 -0
- package/runtimes/claude/commands/jdi-bootstrap.md +81 -0
- package/runtimes/claude/commands/jdi-create.md +80 -0
- package/runtimes/claude/commands/jdi-discuss.md +80 -0
- package/runtimes/claude/commands/jdi-do.md +200 -0
- package/runtimes/claude/commands/jdi-loop.md +315 -0
- package/runtimes/claude/commands/jdi-new.md +131 -0
- package/runtimes/claude/commands/jdi-plan.md +73 -0
- package/runtimes/claude/commands/jdi-ship.md +146 -0
- package/runtimes/claude/commands/jdi-verify.md +159 -0
- package/runtimes/claude/settings.example.json +132 -0
- package/runtimes/claude/skills/clean-code/SKILL.md +247 -0
- package/runtimes/claude/skills/dry/SKILL.md +136 -0
- package/runtimes/claude/skills/frontend-rules/SKILL.md +369 -0
- package/runtimes/claude/skills/frontend-validator/SKILL.md +553 -0
- package/runtimes/claude/skills/kiss/SKILL.md +164 -0
- package/runtimes/claude/skills/solid/SKILL.md +267 -0
- package/runtimes/claude/skills/yagni/SKILL.md +193 -0
- package/runtimes/copilot/agents/jdi-adopter.agent.md +430 -0
- package/runtimes/copilot/agents/jdi-architect.agent.md +864 -0
- package/runtimes/copilot/agents/jdi-asker.agent.md +119 -0
- package/runtimes/copilot/agents/jdi-bootstrap.agent.md +213 -0
- package/runtimes/copilot/agents/jdi-planner.agent.md +221 -0
- package/runtimes/copilot/agents/jdi-researcher.agent.md +269 -0
- package/runtimes/copilot/copilot-instructions.md +80 -0
- package/runtimes/copilot/prompts/jdi-adopt.prompt.md +155 -0
- package/runtimes/copilot/prompts/jdi-bootstrap.prompt.md +81 -0
- package/runtimes/copilot/prompts/jdi-create.prompt.md +80 -0
- package/runtimes/copilot/prompts/jdi-discuss.prompt.md +80 -0
- package/runtimes/copilot/prompts/jdi-do.prompt.md +200 -0
- package/runtimes/copilot/prompts/jdi-loop.prompt.md +315 -0
- package/runtimes/copilot/prompts/jdi-new.prompt.md +131 -0
- package/runtimes/copilot/prompts/jdi-plan.prompt.md +73 -0
- package/runtimes/copilot/prompts/jdi-ship.prompt.md +146 -0
- package/runtimes/copilot/prompts/jdi-verify.prompt.md +159 -0
- package/runtimes/opencode/AGENTS.md +87 -0
- package/runtimes/opencode/agents/jdi-adopter.md +434 -0
- package/runtimes/opencode/agents/jdi-architect.md +861 -0
- package/runtimes/opencode/agents/jdi-asker.md +123 -0
- package/runtimes/opencode/agents/jdi-bootstrap.md +217 -0
- package/runtimes/opencode/agents/jdi-planner.md +225 -0
- package/runtimes/opencode/agents/jdi-researcher.md +273 -0
- package/runtimes/opencode/commands/jdi-adopt.md +155 -0
- package/runtimes/opencode/commands/jdi-bootstrap.md +81 -0
- package/runtimes/opencode/commands/jdi-create.md +80 -0
- package/runtimes/opencode/commands/jdi-discuss.md +80 -0
- package/runtimes/opencode/commands/jdi-do.md +200 -0
- package/runtimes/opencode/commands/jdi-loop.md +315 -0
- package/runtimes/opencode/commands/jdi-new.md +131 -0
- package/runtimes/opencode/commands/jdi-plan.md +73 -0
- package/runtimes/opencode/commands/jdi-ship.md +146 -0
- package/runtimes/opencode/commands/jdi-verify.md +159 -0
- package/runtimes/opencode/opencode.example.jsonc +169 -0
- package/runtimes/opencode/skills/clean-code/SKILL.md +247 -0
- package/runtimes/opencode/skills/dry/SKILL.md +136 -0
- package/runtimes/opencode/skills/frontend-rules/SKILL.md +369 -0
- package/runtimes/opencode/skills/frontend-validator/SKILL.md +553 -0
- package/runtimes/opencode/skills/kiss/SKILL.md +164 -0
- package/runtimes/opencode/skills/solid/SKILL.md +267 -0
- package/runtimes/opencode/skills/yagni/SKILL.md +193 -0
- package/templates-jdi-folder/config.json +18 -0
- package/templates-jdi-folder/registry.md +31 -0
- package/templates-jdi-folder/reviewers.md +33 -0
- package/templates-jdi-folder/skills-registry.md +32 -0
- 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)
|