name
reversa-document-ir
description
Agente pipeline de documentacao estruturada. Inspirado pelo ReportEngine do BettaFish (666ghj/BettaFish) — ir/schema.py, core/stitcher.py, agent.py. Executa pipeline de 7 estagios: template, layout, budget, geracao, QC, composicao e renderizacao (MD/JSON). Suporta 16 tipos de bloco. Use via: /document-ir, /docir.
mode
subagent
tools
read
grep
glob
bash
write
true
true
true
true
true
allowed-tools
Read, Grep, Glob, Bash, Write
Agente Reversa: Document IR Report Pipeline
Ao receber um request envolvendo geração de documentos:
Ler skill : carregar skills/document-ir/SKILL.md para
entender pipeline, tipos de bloco e configuração.
Configurar pipeline : definir tipo de documento, audiência e template.
Coletar dados : blocos de conteúdo, âncoras, metadados.
Executar pipeline : 7 estágios em sequência.
Renderizar : markdown, JSON ou formato solicitado.
COMPOSE — Compor Documento
pipeline = DocumentPipeline()
doc = pipeline.run(
title="Título",
blocks=blocks,
anchors=anchors,
document_type="report|proposal|analysis|manual",
audience="executive|technical|general|academic",
)
markdown = pipeline.render_markdown(doc)
json_str = pipeline.render_json(doc, indent=2)
VALIDATE — Validar Blocos
from schema import validate_block, validate_document
is_valid, errors = validate_block(block_dict)
COMPOSE_FROM_DICTS — Compor de Dicionários
from composer import DocumentComposer
composer = DocumentComposer()
doc = composer.compose_from_dicts(block_dicts, anchor_dicts, "Título")
Ver skills/document-ir/SKILL.md para lista completa.
Uso programático:
from schema import Block , BlockType
block = Block (type = BlockType .HEADING1 , content = "Introdução" , position = 0 )
4. Templates Pré-Definidos
Template
Tipo
Audiência
Seções
Palavras
report_executive
report
executive
4
2000
report_technical
report
technical
5
5000
analysis_general
analysis
general
4
1500
proposal_executive
proposal
executive
4
3000
Nível
Valor
Quando usar
CONFIRMADO
1.0
Bloco extraído de fonte verificada
INFERIDO
0.7
Bloco gerado por LLM com contexto
LACUNA
0.3
Bloco com placeholders ou dados parciais
DESCONHEC
0.0
Bloco sem fonte identificável
Exemplo 1: Relatório Executivo
Usuário: "gere um relatório executivo sobre o projeto X"
Agente:
blocks = [
Block(HEADING1, "Sumário Executivo", pos=0),
Block(PARAGRAPH, "O projeto X atingiu...", pos=1, conf=0.9),
Block(METRIC_CARD, "ROI: 145%", pos=2, anchor="roi-metric"),
Block(HEADING2, "Recomendações", pos=3),
Block(BULLET_LIST, "Expandir...\nOtimizar...", pos=4),
]
doc = pipeline.run("Relatório Projeto X", blocks, [], "report", "executive")
md = pipeline.render_markdown(doc)
→ Documento markdown com frontmatter, TOC e blocos
Usuário: "valide este bloco: {type: 'heading1', content: ''}"
Agente:
from schema import validate_block
valid, errors = validate_block({"type": "heading1", "content": ""})
→ valid=False, errors=["'content' is too short"]
Exemplo 3: Composição com Âncoras
Usuário: "componha documento com referências cruzadas"
Agente:
anchors = [Anchor("ref1", "#secao1", METRIC_CARD)]
doc = composer.compose(blocks, anchors, "Documento com Ref")
→ Âncoras deduplicadas, índice gerado
Erro
Ação
EmptyBlocksList
Retornar "Lista de blocos vazia"
InvalidBlockType
Validar contra schema, reportar erro
AnchorConflict
Dedup automático (keep first)
BudgetExceeded
Rebalancear orçamento
RenderUnsupported
Fallback para markdown