kepano/knap

Renderizar Markdown a partir de modelos e dados estruturados usando a CLI Knap. Use quando o usuário pedir para aplicar um modelo Knap, transformar dados JSON ou CSV em notas, gerar arquivos Markdown em lote ou formatar a saída do Defuddle em uma nota.

O que é knap?

O Knap é uma ferramenta CLI de código aberto que permite renderizar modelos Markdown com variáveis, filtros e lógica condicional. Ele é útil para desenvolvedores e agentes de IA que precisam gerar arquivos Markdown a partir de dados estruturados (JSON, CSV) ou transformar conteúdos extraídos da web via Defuddle em notas formatadas. A ferramenta oferece comandos como `knap render` para renderização única, `knap batch` para processamento em lote e `knap validate` para verificar a sintaxe dos modelos. Suporta plataformas como Node.js (20+) e pode ser usado diretamente via `npx`. O Knap fornece filtros integrados para manipulação de texto, datas e YAML, e permite a criação de frontmatter YAML completo através do filtro `yaml_property`. Com ela, é possível criar saídas customizadas, controlar erros e realizar validações sem saída de arquivo, facilitando a integração em pipelines de automação.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kepano/obsidian-skills/tree/main/skills/knap

Installed? Explore more Produtividade e Colaboração skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que knap faz?

Use a CLI Knap para renderizar modelos Markdown com variáveis, filtros e lógica.

Se não estiver instalado: npm install -g knap (requer Node.js 20 ou superior). Alternativamente, use npx knap.

Execute knap --help para comandos e opções disponíveis. Descubra a linguagem através da referência offline da CLI:

knap help syntax
knap help filters
knap help filter date
knap help tags
knap help tag for

Use as listas para encontrar nomes e então solicite ajuda individual para sintaxe, parâmetros e exemplos com saída esperada.

Uso

Renderize um modelo com variáveis JSON:

knap render template.md --data article.json -o note.md

Forneça um modelo e dados inline:

knap render -t '# {{ title | trim }}' --data-json '{"title":"Hello"}'

Substitua uma variável ou pipe dados JSON:

knap render template.md --data article.json --set 'title=Custom title'
cat article.json | knap render template.md --data -

Os dados devem ser um objeto JSON; suas propriedades se tornam variáveis do modelo. --set substitui chaves literais de nível superior por strings. Use JSON para objetos aninhados, arrays, números e booleanos.

Escolha uma fonte de modelo (arquivo, -t ou stdin) e uma fonte de dados (--data ou --data-json). Apenas uma entrada pode ler do stdin. Sem um arquivo de modelo ou -t, o Knap lê o modelo do stdin.

A saída padrão é stdout. -o cria diretórios pai e sobrescreve o destino após a renderização bem-sucedida. Erros saem com status 1; diagnósticos vão para stderr. Avisos podem acompanhar saída bem-sucedida.

Modelos

Use {{ variavel }} para valores, | para filtros e {% ... %} para lógica. Por exemplo, salve isso como template.md:

---
{{ title | yaml_property:"title" }}
{{ tags | yaml_property:"tags" }}
---
# {{ title | trim }}
{% if author %}
Por {{ author }}
{% endif %}

{{ content }}

Use yaml_property para propriedades completas de frontmatter para que os valores sejam citados e indentados corretamente. A CLI inclui filtros padrão, mas não fornece variáveis de navegador do Web Clipper, seletores, prompts ou filtros HTML dependentes de DOM. Forneça variáveis através de JSON.

Verifique um modelo antes de renderizar:

knap validate template.md

A validação verifica sintaxe, nomes de filtros e argumentos de filtro estáticos sem dados ou saída de arquivo. Ela não verifica existência de variáveis, valores em tempo de execução ou argumentos dinâmicos; renderize com dados reais para verificar o comportamento em tempo de execução. Diagnósticos vão para stderr e incluem comandos de ajuda relevantes.

Pipeline Defuddle

Extraia uma página da web como JSON com conteúdo Markdown e depois renderize em uma nota:

defuddle parse https://example.com/article --md --json \
  | knap render template.md --data - -o note.md

As propriedades JSON do Defuddle, como title e content, tornam-se diretamente variáveis do modelo.

Renderização em lote

Crie um arquivo por linha de CSV, objeto de array JSON ou arquivo JSON em uma pasta:

knap batch template.md --data articles.csv --output-dir notes \
  --filename '{{ title | safe_name }}.md'

Use --data articles.json para um array ou --data ./articles para uma pasta de objetos JSON. Cabeçalhos de CSV se tornam nomes de variáveis e valores permanecem como strings. Dados via pipe padrão são JSON; adicione --format csv para CSV via pipe.

Use --dry-run para validar e listar caminhos de saída sem escrever arquivos. Arquivos existentes requerem --overwrite, inclusive durante uma execução de teste. Nomes de saída duplicados dentro de um lote são erros mesmo com --overwrite.

Modelos de nome de arquivo devem produzir um único nome de arquivo com sua extensão, sem diretórios. Use safe_name para nomes derivados de dados. Sem --filename, o Knap preserva os nomes base de JSON de origem ou numera linhas de CSV e itens de array como 1.md, 2.md e assim por diante.

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

kepano/defuddle

Extract clean markdown content from web pages using Defuddle CLI, removing clutter and navigation to save tokens. Use instead of WebFetch when the user provides a URL to read or analyze, for online documentation, articles, blog posts, or any standard web page. Do NOT use for URLs ending in .md — those are already markdown, use WebFetch directly.

kepano/json-canvas

Create and edit JSON Canvas files (.canvas) with nodes, edges, groups, and connections. Use when working with .canvas files, creating visual canvases, mind maps, flowcharts, or when the user mentions Canvas files in Obsidian.

kepano/obsidian-bases

Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.

kepano/obsidian-cli

Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more. Also supports plugin and theme development with commands to reload plugins, run JavaScript, capture errors, take screenshots, and inspect the DOM. Use when the user asks to interact with their Obsidian vault, manage notes, search vault content, perform vault operations from the command line, or develop and debug Obsidian plugins and themes.

kepano/obsidian-markdown

Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.

Habilidades Relacionadas