ganbatte-os 0.2.36 → 0.2.38
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/.gos/agents/profiles/ganbatte-os-master.md +113 -0
- package/.gos/libraries/caveman-rules.md +58 -0
- package/.gos/libraries/cloudflare-stack-kb.md +161 -0
- package/.gos/libraries/default-stack-kb.md +98 -0
- package/.gos/libraries/engineering-best-practices.md +208 -0
- package/.gos/libraries/gos-compress-setup.md +62 -0
- package/.gos/libraries/intake-questions-mom-test.md +91 -0
- package/.gos/libraries/lucide-icons-policy.md +174 -0
- package/.gos/libraries/security-best-practices.md +138 -0
- package/.gos/libraries/supabase-stack-kb.md +124 -0
- package/.gos/libraries/timer-pattern-spec.md +252 -0
- package/.gos/libraries/typeform-pattern-spec.md +204 -0
- package/.gos/libraries/ui-guardrails-checklist.md +144 -0
- package/.gos/libraries/visual-diff-lenses.md +114 -0
- package/.gos/skills/adr-tech-decisions/SKILL.md +166 -0
- package/.gos/skills/audit-screenshots/SKILL.md +219 -0
- package/.gos/skills/cloudflare-pages-setup/SKILL.md +180 -0
- package/.gos/skills/execute-plan/SKILL.md +5 -0
- package/.gos/skills/figma-print-diff/SKILL.md +165 -0
- package/.gos/skills/gos-caveman/SKILL.md +110 -0
- package/.gos/skills/gos-compress/SKILL.md +134 -0
- package/.gos/skills/gos-compress/scripts/compress.py +346 -0
- package/.gos/skills/gos-compress/scripts/setup.py +91 -0
- package/.gos/skills/idea-intake/SKILL.md +147 -0
- package/.gos/skills/plan-blueprint/SKILL.md +48 -3
- package/.gos/skills/plan-to-tasks/SKILL.md +28 -0
- package/.gos/skills/prd-from-intake/SKILL.md +94 -0
- package/.gos/skills/prototype-orchestrator/SKILL.md +120 -0
- package/.gos/skills/registry.json +13 -1
- package/.gos/skills/timer-component-pattern/SKILL.md +245 -0
- package/.gos/skills/typeform-form-pattern/SKILL.md +210 -0
- package/.gos/skills/ui-guardrails/SKILL.md +111 -0
- package/.gos/skills/validate-plan/SKILL.md +2 -0
- package/.gos/templates/intakeTemplate.md +41 -0
- package/.gos/templates/planTemplate.md +21 -0
- package/.gos/templates/prdLeanTemplate.md +40 -0
- package/.gos/templates/taskTemplate.md +2 -0
- package/CLAUDE.md +9 -1
- package/package.json +1 -1
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: figma-print-diff
|
|
3
|
+
description: >
|
|
4
|
+
Single-pass diff entre 1 print do app e 1 frame Figma. NAO usa fila/sessao. Imagem
|
|
5
|
+
fica em contexto durante toda a comparacao. Output: JSON estruturado + lista de fix-tasks.
|
|
6
|
+
Pensado para uso pos-codegen (validacao imediata) ou correcao pontual. Diferente de
|
|
7
|
+
audit-screenshots, que acumula multiplos prints.
|
|
8
|
+
argument-hint: "<print-path> <figma-url-ou-node-id> [contexto opcional do usuario]"
|
|
9
|
+
allowedTools: [Read, Glob, Grep, Bash, Write]
|
|
10
|
+
sourceDocs:
|
|
11
|
+
- libraries/visual-diff-lenses.md
|
|
12
|
+
use-when:
|
|
13
|
+
- acabou de gerar uma tela e quer validar contra o Figma agora
|
|
14
|
+
- usuario cola 1 print + 1 link Figma e pergunta "o que esta errado?"
|
|
15
|
+
- hook pos-codegen no design-to-code
|
|
16
|
+
do-not-use-for:
|
|
17
|
+
- multiplos prints em sessao (use audit-screenshots)
|
|
18
|
+
- quando nao ha referencia Figma (use react-doctor para validacao tecnica)
|
|
19
|
+
- quando nao ha print do app rodando (use plan-blueprint para planejar)
|
|
20
|
+
metadata:
|
|
21
|
+
category: visual-qa
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
Voce esta executando como **Visual Diff Auditor** via skill `figma-print-diff`. Faz UMA comparacao em UM unico passo, sem persistir sessao. Imagem do print + frame Figma DEVEM permanecer no contexto da inferencia ate o output final.
|
|
25
|
+
|
|
26
|
+
## Contrato critico
|
|
27
|
+
|
|
28
|
+
1. **Single-pass**: ler print + Figma + comparar + emitir output em UMA chamada do agente. NAO enfileirar.
|
|
29
|
+
2. **Imagem residente**: NAO descartar a imagem do contexto antes de emitir output. Se o agente perceber que perdeu a imagem (output mencionando "ver imagem" sem detalhes), REFAZER comparacao re-lendo.
|
|
30
|
+
3. **Output autossuficiente**: cada divergencia tem evidencia textual ("border-radius do botao Salvar = 8px no print, 12px no Figma") — nunca dependencia futura ("ver imagem").
|
|
31
|
+
4. **Sem fila**: nao gravar `.gos-local/audit-session.json`. Nao chamar `*close`. Nao gerar PLAN. Output direto.
|
|
32
|
+
|
|
33
|
+
## Pre-flight (gate)
|
|
34
|
+
|
|
35
|
+
1. Resolver `print-path`: arquivo deve existir. Senao -> abortar.
|
|
36
|
+
2. Resolver `figma-url-ou-node-id`:
|
|
37
|
+
- URL: extrair node-id da query string `?node-id=XXXX-YYYYY`.
|
|
38
|
+
- Node-id direto: aceitar `XXXX-YYYYY` ou `XXXX:YYYYY`.
|
|
39
|
+
3. Pull do frame Figma via Figma MCP `get_image` pelo node-id. Salvar em `.gos-local/figma-print-diff/<timestamp>.figma.png`.
|
|
40
|
+
4. Se Figma MCP indisponivel -> abortar com instrucao para iniciar Figma MCP.
|
|
41
|
+
|
|
42
|
+
## Lenses de comparacao (ordem)
|
|
43
|
+
|
|
44
|
+
Cada lens e uma passada mental do agente sobre as duas imagens, com saida estruturada antes de passar para a proxima.
|
|
45
|
+
|
|
46
|
+
### Lens 1 — Layout e hierarquia
|
|
47
|
+
- Estrutura geral coincide? (sidebar, header, footer, main, drawer)
|
|
48
|
+
- Ordem de elementos dentro de cada container coincide?
|
|
49
|
+
- Spacing e proporcoes batem (sem medir pixel-perfect, mas ratio coerente)?
|
|
50
|
+
|
|
51
|
+
### Lens 2 — Tokens visuais
|
|
52
|
+
- Cores: bg, text, border, ring, hover, active. Listar cada divergencia com locais.
|
|
53
|
+
- Tipografia: tamanho, peso, line-height, family. Reportar quando off.
|
|
54
|
+
- Spacing: padding/margin/gap notavelmente diferentes.
|
|
55
|
+
- Border-radius, shadows, blur.
|
|
56
|
+
|
|
57
|
+
### Lens 3 — Estados
|
|
58
|
+
- Loading state visivel no Figma? Existe no print?
|
|
59
|
+
- Empty state idem.
|
|
60
|
+
- Error state idem.
|
|
61
|
+
- Hover/active/focus visiveis?
|
|
62
|
+
- Disabled state.
|
|
63
|
+
|
|
64
|
+
### Lens 4 — Conteudo
|
|
65
|
+
- Textos coincidem (literais, sem tradutor automatico)?
|
|
66
|
+
- Icones coincidem (lib + variante)?
|
|
67
|
+
- Imagens placeholder vs reais?
|
|
68
|
+
- Dados mockados vs proximos a producao?
|
|
69
|
+
|
|
70
|
+
### Lens 5 — Interacao (inferida)
|
|
71
|
+
- Affordances: o que parece clicavel no Figma esta clicavel no print?
|
|
72
|
+
- Cursor states (pointer, default, not-allowed) coerentes?
|
|
73
|
+
- Posicao de tooltips/popovers se visivel.
|
|
74
|
+
|
|
75
|
+
### Lens 6 — Acessibilidade
|
|
76
|
+
- Contraste AA visivelmente quebrado em algum bloco?
|
|
77
|
+
- Tamanho de toque minimo (44px) respeitado?
|
|
78
|
+
- Indicadores de focus diferentes do hover (nao mesma cor)?
|
|
79
|
+
|
|
80
|
+
## Output (JSON estruturado)
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"print": "<path>",
|
|
85
|
+
"figma_node": "<node-id>",
|
|
86
|
+
"figma_url": "<url>",
|
|
87
|
+
"matches": [
|
|
88
|
+
"Layout sidebar + main bate",
|
|
89
|
+
"Header altura coincide"
|
|
90
|
+
],
|
|
91
|
+
"mismatches": [
|
|
92
|
+
{
|
|
93
|
+
"id": "M1",
|
|
94
|
+
"lens": "tokens",
|
|
95
|
+
"severity": "high|medium|low",
|
|
96
|
+
"where": "Botao Salvar (canto inf direito)",
|
|
97
|
+
"expected": "bg=blue-600, text-white, radius=8px",
|
|
98
|
+
"actual": "bg=gray-300, text-gray-700, radius=4px",
|
|
99
|
+
"fix": "Aplicar variant primary do Button do DS",
|
|
100
|
+
"task_template": "Corrigir botao Salvar: usar Button variant=primary"
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"missing_in_app": [
|
|
104
|
+
"Estado loading do form nao implementado"
|
|
105
|
+
],
|
|
106
|
+
"missing_in_figma": [
|
|
107
|
+
"Aviso de erro inline no campo email — pedir ao designer"
|
|
108
|
+
],
|
|
109
|
+
"summary": {
|
|
110
|
+
"total_mismatches": 8,
|
|
111
|
+
"high": 2,
|
|
112
|
+
"medium": 3,
|
|
113
|
+
"low": 3
|
|
114
|
+
},
|
|
115
|
+
"next_steps": [
|
|
116
|
+
"Aplicar fix M1 e M3 manualmente",
|
|
117
|
+
"Pedir clarificacao no Figma para missing_in_figma[0]"
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Output secundario (markdown human-readable)
|
|
123
|
+
|
|
124
|
+
Apos JSON, imprimir tabela:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
[figma-print-diff] <node-id>
|
|
128
|
+
|
|
129
|
+
severidade ref onde expected -> actual
|
|
130
|
+
high M1 Botao Salvar primary -> gray
|
|
131
|
+
medium M2 Spacing entre cards gap-6 -> gap-3
|
|
132
|
+
...
|
|
133
|
+
|
|
134
|
+
resumo: 8 divergencias (2 high, 3 medium, 3 low)
|
|
135
|
+
proximo: aplicar M1+M3 ou rodar `*audit-screenshots add` para acumular sessao.
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Regras criticas
|
|
139
|
+
|
|
140
|
+
- **NUNCA enfileirar**: se usuario mandar multiplos prints, recusar e direcionar para `*audit-screenshots`.
|
|
141
|
+
- **NUNCA descartar imagem antes do output**: violacao -> refazer.
|
|
142
|
+
- **Severity calibrada**:
|
|
143
|
+
- high: bloqueia merge (cor errada do botao primario, falta estado de erro).
|
|
144
|
+
- medium: pode entrar em sprint seguinte (spacing fora, icone trocado).
|
|
145
|
+
- low: cosmetico (radius 4px vs 6px).
|
|
146
|
+
- **Output curto se 0 mismatches**: "OK. Bate 100%." e fim — sem JSON inflado.
|
|
147
|
+
|
|
148
|
+
## Hook pos-codegen
|
|
149
|
+
|
|
150
|
+
`design-to-code` ao terminar pode invocar `figma-print-diff` automaticamente se:
|
|
151
|
+
- Existir screenshot do dev local (path em arg).
|
|
152
|
+
- Frame Figma original ainda no contexto.
|
|
153
|
+
|
|
154
|
+
Resultado entra como rodape da resposta do `design-to-code`.
|
|
155
|
+
|
|
156
|
+
## Input
|
|
157
|
+
|
|
158
|
+
$ARGUMENTS
|
|
159
|
+
|
|
160
|
+
Formato: `<print-path> <figma-url-ou-node-id> [contexto livre]`
|
|
161
|
+
|
|
162
|
+
Exemplo:
|
|
163
|
+
```
|
|
164
|
+
*figma-print-diff .screenshots/projetos.png https://figma.com/.../?node-id=9140-25431 a aba negocios esta sem mostrar coluna Area
|
|
165
|
+
```
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gos-caveman
|
|
3
|
+
description: >
|
|
4
|
+
Comprime OUTPUT de planos, tasks e respostas de skills cortando ~75% dos tokens
|
|
5
|
+
preservando precisao tecnica. 3 niveis (lite/full/ultra). Aplicar APENAS em prosa
|
|
6
|
+
e descricao de tasks — NUNCA em codigo, comandos shell, paths, ou trechos de regex.
|
|
7
|
+
Adaptado de github.com/JuliusBrussee/caveman (MIT).
|
|
8
|
+
argument-hint: "<level: lite|full|ultra> <texto ou path>"
|
|
9
|
+
allowedTools: [Read, Write, Edit]
|
|
10
|
+
sourceDocs:
|
|
11
|
+
- libraries/caveman-rules.md
|
|
12
|
+
use-when:
|
|
13
|
+
- finalizar plan-blueprint output (descricao + criterios)
|
|
14
|
+
- resumir resposta de skill com prosa longa
|
|
15
|
+
- usuario pede "fala caveman" ou "menos token"
|
|
16
|
+
do-not-use-for:
|
|
17
|
+
- codigo (variaveis, funcoes, types — preserva tudo)
|
|
18
|
+
- comandos shell (preserva tudo)
|
|
19
|
+
- paths de arquivos (preserva tudo)
|
|
20
|
+
- mensagens para usuario nao-tecnico (use linguagem normal)
|
|
21
|
+
metadata:
|
|
22
|
+
category: optimization
|
|
23
|
+
attribution: github.com/JuliusBrussee/caveman (MIT)
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
Voce esta executando como **Compressor Caveman** via skill `gos-caveman`. Reduz tokens de prosa preservando significado tecnico. Atribuicao obrigatoria a https://github.com/JuliusBrussee/caveman (MIT).
|
|
27
|
+
|
|
28
|
+
## Niveis
|
|
29
|
+
|
|
30
|
+
| Nivel | Reducao alvo | Estilo |
|
|
31
|
+
|-------|---------------|--------|
|
|
32
|
+
| lite | ~30% | Frases curtas, sem articulos redundantes, mantem conectivos |
|
|
33
|
+
| full | ~75% | Telegrafico. "X faz Y. Use Z." |
|
|
34
|
+
| ultra | ~90% | Quase codigo. "X -> Y. Use Z." |
|
|
35
|
+
|
|
36
|
+
## Regras de compressao
|
|
37
|
+
|
|
38
|
+
### Sempre PRESERVAR (NAO comprimir):
|
|
39
|
+
- Codigo (qualquer linguagem)
|
|
40
|
+
- Comandos (`npm run...`, paths)
|
|
41
|
+
- Identificadores (nomes de funcoes, variaveis, types, classes)
|
|
42
|
+
- Numeros, percentuais, IDs (ADR-007, T-12, PLAN-NNN)
|
|
43
|
+
- Nomes proprios (Cloudflare, Supabase, React)
|
|
44
|
+
- Frontmatter YAML/TOML
|
|
45
|
+
- URLs
|
|
46
|
+
|
|
47
|
+
### Sempre REMOVER:
|
|
48
|
+
- Articulos (o, a, os, as, um, uma) quando opcionais
|
|
49
|
+
- Pronomes redundantes (voce sabe, e claro que)
|
|
50
|
+
- Hedging (talvez, possivelmente, geralmente)
|
|
51
|
+
- Repeticao por enfase
|
|
52
|
+
- Adverbios suaves (basicamente, simplesmente, apenas)
|
|
53
|
+
- Parenteses de aclaracao redundante
|
|
54
|
+
|
|
55
|
+
### Sempre TRANSFORMAR:
|
|
56
|
+
- Verbos longos -> curtos: "deve realizar a operacao de" -> "faz"
|
|
57
|
+
- Negacoes duplas -> simples: "nao deixar de" -> "fazer"
|
|
58
|
+
- Listas em prosa -> bullets
|
|
59
|
+
- "X que e responsavel por Y" -> "X: Y"
|
|
60
|
+
|
|
61
|
+
## Exemplos
|
|
62
|
+
|
|
63
|
+
### Input (69 tokens)
|
|
64
|
+
> "A razao do seu componente React estar re-renderizando provavelmente e porque voce esta criando uma nova referencia de objeto a cada ciclo de render. Quando voce passa um objeto inline como prop, a comparacao shallow do React enxerga como objeto diferente toda vez."
|
|
65
|
+
|
|
66
|
+
### Output lite (45 tokens, -35%)
|
|
67
|
+
> "Componente React re-renderiza porque voce cria nova ref de objeto a cada render. Objeto inline como prop falha a comparacao shallow do React."
|
|
68
|
+
|
|
69
|
+
### Output full (19 tokens, -72%)
|
|
70
|
+
> "Nova ref a cada render. Inline obj prop = nova ref = re-render. Wrap em `useMemo`."
|
|
71
|
+
|
|
72
|
+
### Output ultra (10 tokens, -86%)
|
|
73
|
+
> "Inline obj prop -> nova ref -> re-render. `useMemo`."
|
|
74
|
+
|
|
75
|
+
## Aplicacao no G-OS
|
|
76
|
+
|
|
77
|
+
### Em plan-blueprint
|
|
78
|
+
Skills que produzem plano podem chamar `gos-caveman` automaticamente nas secoes:
|
|
79
|
+
- ## Contexto (lite)
|
|
80
|
+
- ## Componentes mapeados — coluna "Comportamento" (full)
|
|
81
|
+
- ## Notas / observacoes (full)
|
|
82
|
+
|
|
83
|
+
NAO comprimir:
|
|
84
|
+
- Frontmatter
|
|
85
|
+
- ## Page-level overrides (codigo)
|
|
86
|
+
- ## Drift map (referencia precisa)
|
|
87
|
+
- Tasks (cada task tem contrato proprio)
|
|
88
|
+
|
|
89
|
+
### Em outputs de skill
|
|
90
|
+
Quando uma skill responder ao usuario tecnico, oferecer:
|
|
91
|
+
- Default: linguagem normal.
|
|
92
|
+
- Se usuario tipou "caveman", "menos token", "ultra" -> aplicar full ou ultra.
|
|
93
|
+
|
|
94
|
+
## Anti-padroes
|
|
95
|
+
|
|
96
|
+
- **Comprimir codigo**: `function calc(x) { return x * 2 }` deve ficar igual. Comprimir comentario do codigo OK.
|
|
97
|
+
- **Comprimir output para nao-tecnico**: regra do dono — "linguagem coloquial" para `idea-intake`. Caveman so apos PRD.
|
|
98
|
+
- **Comprimir frontmatter YAML**: parser quebra. Frontmatter intocavel.
|
|
99
|
+
|
|
100
|
+
## Implementacao (manual, sem ML)
|
|
101
|
+
|
|
102
|
+
Caveman nao usa modelo separado. E uma prompt rule que o agente segue ao gerar output. NAO requer install de Python/venv (diferente de `gos-compress`/sandeco).
|
|
103
|
+
|
|
104
|
+
## Input
|
|
105
|
+
|
|
106
|
+
$ARGUMENTS
|
|
107
|
+
|
|
108
|
+
Formato: `<lite|full|ultra> <texto ou caminho de arquivo>`
|
|
109
|
+
|
|
110
|
+
Se path: ler arquivo, comprimir somente blocos de prosa marcados (entre headers `##`), preservar codigo/yaml/tabelas, salvar em `<arquivo>.cm.md` ao lado.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gos-compress
|
|
3
|
+
description: >
|
|
4
|
+
Comprime INPUT de prompts longos antes de enviar a outra skill ou subagent, usando
|
|
5
|
+
LLMLingua-2 da Microsoft (modelo XLM-RoBERTa local). Reducao tipica 40-60% sem perda
|
|
6
|
+
semantica. Wrapper sobre sandeco-token-reduce. Requer setup unico (~1GB modelo HuggingFace).
|
|
7
|
+
argument-hint: "<acao: setup|compress|init> [args]"
|
|
8
|
+
allowedTools: [Read, Write, Bash]
|
|
9
|
+
sourceDocs:
|
|
10
|
+
- libraries/gos-compress-setup.md
|
|
11
|
+
use-when:
|
|
12
|
+
- precisa passar contexto longo (>2000 tokens) para subagent/skill
|
|
13
|
+
- usuario pede "comprimir contexto" ou "reduzir tokens"
|
|
14
|
+
- prototype-orchestrator avancando entre fases com PRD/intake longos
|
|
15
|
+
do-not-use-for:
|
|
16
|
+
- textos curtos (<500 tokens — nao compensa)
|
|
17
|
+
- codigo (perde semantica precisa)
|
|
18
|
+
- frontmatter, tabelas estruturadas (parser quebra)
|
|
19
|
+
metadata:
|
|
20
|
+
category: optimization
|
|
21
|
+
attribution: github sandeco/sandeco-token-reduce + microsoft/llmlingua-2
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
Voce esta executando como **Compressor de Input** via skill `gos-compress`. Wrapper sobre sandeco-token-reduce + LLMLingua-2 da Microsoft.
|
|
25
|
+
|
|
26
|
+
## Pre-flight: setup unico
|
|
27
|
+
|
|
28
|
+
Antes do primeiro uso, o `.venv` precisa existir em `skills/gos-compress/.venv/`.
|
|
29
|
+
|
|
30
|
+
### Verificar
|
|
31
|
+
```bash
|
|
32
|
+
test -d <skill-dir>/.venv && echo "ready" || echo "needs-setup"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Setup (1x apenas, ~1GB download)
|
|
36
|
+
```bash
|
|
37
|
+
python "<skill-dir>/scripts/setup.py"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Setup faz:
|
|
41
|
+
- Cria `.venv`
|
|
42
|
+
- Instala `llmlingua` + `anthropic`
|
|
43
|
+
- Baixa `microsoft/llmlingua-2-xlm-roberta-large-meetingbank` (~1GB) em `~/.cache/huggingface/`
|
|
44
|
+
- Idempotente
|
|
45
|
+
|
|
46
|
+
## Acoes
|
|
47
|
+
|
|
48
|
+
### `setup` — instala/atualiza modelo
|
|
49
|
+
```
|
|
50
|
+
*gos-compress setup
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### `compress` — comprime arquivo ou texto
|
|
54
|
+
```
|
|
55
|
+
*gos-compress compress --file path/to/long.md --rate 0.4
|
|
56
|
+
*gos-compress compress --file path/to/long.md --rate 0.4 --output path/comprimido.md
|
|
57
|
+
*gos-compress compress --text "texto longo" --rate 0.5
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Parametros:
|
|
61
|
+
| Flag | Default | Descricao |
|
|
62
|
+
|------|---------|-----------|
|
|
63
|
+
| `--rate` | 0.4 | Fracao de tokens a manter (0.5 leve, 0.2 agressivo) |
|
|
64
|
+
| `--file` | — | Path do arquivo |
|
|
65
|
+
| `--text` | — | Texto direto |
|
|
66
|
+
| `--output` | — | Salva resultado em arquivo |
|
|
67
|
+
| `--json` | false | Output JSON com stats |
|
|
68
|
+
|
|
69
|
+
### `init` — alias para setup
|
|
70
|
+
|
|
71
|
+
## Taxa recomendada por uso
|
|
72
|
+
|
|
73
|
+
| Caso | Rate | Justificativa |
|
|
74
|
+
|------|------|---------------|
|
|
75
|
+
| Intake -> PRD | 0.5 | Preservar nuance |
|
|
76
|
+
| PRD -> ADR | 0.4 | Decisoes precisam contexto |
|
|
77
|
+
| ADR -> Plan | 0.4 | Padrao |
|
|
78
|
+
| Long thread -> resumo | 0.3 | Pode perder detalhe |
|
|
79
|
+
| Codigo (NAO USAR) | — | Use Read direto |
|
|
80
|
+
|
|
81
|
+
## Pipelines no G-OS
|
|
82
|
+
|
|
83
|
+
### Em prototype-orchestrator
|
|
84
|
+
Entre fases consecutivas, comprimir output da fase anterior antes de passar:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
intake.md (4000 tokens)
|
|
88
|
+
-> gos-compress rate=0.5
|
|
89
|
+
-> intake.compressed (2000 tokens)
|
|
90
|
+
-> input para prd-from-intake
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Em plan-blueprint
|
|
94
|
+
Quando rodando com `--compress-context`, comprimir `docs/stack.md` + `docs/prd/PRD-NNN/prd.md` + `docs/adr/*.md` antes de injetar no contexto.
|
|
95
|
+
|
|
96
|
+
## Output JSON (programatico)
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"compression": {
|
|
101
|
+
"compressed_prompt": "<texto>",
|
|
102
|
+
"origin_tokens": 312,
|
|
103
|
+
"compressed_tokens": 124,
|
|
104
|
+
"ratio": 2.52,
|
|
105
|
+
"saving": 188,
|
|
106
|
+
"rate_requested": 0.4
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Anti-uso
|
|
112
|
+
|
|
113
|
+
- Codigo: LLMLingua remove tokens "menos relevantes" semanticamente, mas codigo precisa preservacao exata.
|
|
114
|
+
- Tabelas: estrutura `|---|` quebra.
|
|
115
|
+
- YAML frontmatter: idem.
|
|
116
|
+
- Skill `idea-intake` outputs: usuario nao-tecnico pode confundir prosa fragmentada.
|
|
117
|
+
|
|
118
|
+
## Pre-processamento automatico (sandeco)
|
|
119
|
+
|
|
120
|
+
Antes de comprimir, sandeco aplica `strip_markdown()`:
|
|
121
|
+
- Remove `---`, grid de tabelas, `**bold**` (mantem texto), `##` headers (mantem texto), checkboxes, code fences, linhas vazias multiplas.
|
|
122
|
+
|
|
123
|
+
Reducao base ~6% antes do modelo entrar.
|
|
124
|
+
|
|
125
|
+
## Force tokens preservados
|
|
126
|
+
|
|
127
|
+
Sempre preservados pelo modelo (sandeco config):
|
|
128
|
+
- `\n`, `.`, `,`, `?`, `!`, `:`
|
|
129
|
+
- Negacoes PT: `nao`, `sem`, `nenhum`, `nunca`, `nem`, `nenhuma`
|
|
130
|
+
- Tokens com digitos (IDs, ms, percentuais) via `force_reserve_digit=True`
|
|
131
|
+
|
|
132
|
+
## Input
|
|
133
|
+
|
|
134
|
+
$ARGUMENTS
|