kepano/knap

Générer du Markdown à partir de modèles et de données structurées avec Knap CLI. Utilisez-le lorsque l'utilisateur demande d'appliquer un modèle Knap, de transformer des données JSON ou CSV en notes, de générer par lots des fichiers Markdown ou de formater la sortie de Defuddle en une note.

Qu'est-ce que knap ?

Kepano/Knap est une compétence d'agent IA qui permet de transformer des données structurées (JSON, CSV) en fichiers Markdown formatés à l'aide de l'outil en ligne de commande Knap CLI. Elle est particulièrement utile dans les environnements comme Claude Code, Cursor ou Codex, où l'agent doit générer des notes, des rapports ou des documents à partir de modèles ou de flux de données. Knap supporte les variables, les filtres et la logique conditionnelle dans les modèles, ce qui permet une personnalisation avancée. La compétence couvre l'installation via npm, l'utilisation de commandes de rendu, de validation et de traitement par lots, ainsi que l'intégration avec Defuddle pour l'extraction de pages web. Les utilisateurs peuvent consulter l'aide intégrée pour la syntaxe, les filtres et les balises. Knap fonctionne avec Node.js 20 ou ultérieur, et peut être exécuté directement via npx sans installation préalable.

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

Installed? Explore more Productivité et collaboration skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait knap ?

Utilisez Knap CLI pour générer des modèles Markdown avec variables, filtres et logique.

Si non installé : npm install -g knap (nécessite Node.js 20 ou ultérieur). Vous pouvez également utiliser npx knap.

Exécutez knap --help pour voir les commandes et options disponibles. Découvrez le langage via la référence intégrée du CLI :

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

Utilisez les listes pour trouver les noms, puis demandez de l'aide individuelle pour la syntaxe, les paramètres et les exemples avec le résultat attendu.

Utilisation

Générer un modèle avec des variables JSON :

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

Fournir un modèle et des données en ligne :

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

Surcharger une variable ou rediriger des données JSON :

knap render template.md --data article.json --set 'title=Titre personnalisé'
cat article.json | knap render template.md --data -

Les données doivent être un objet JSON ; ses propriétés deviennent des variables de modèle. --set remplace les clés de premier niveau littérales par des chaînes. Utilisez JSON pour les objets imbriqués, tableaux, nombres et booléens.

Choisissez une source de modèle (fichier, -t ou entrée standard) et une source de données (--data ou --data-json). Une seule entrée peut lire l'entrée standard. Sans fichier de modèle ni -t, Knap lit le modèle depuis l'entrée standard.

La sortie est par défaut sur la sortie standard. -o crée les répertoires parents et écrase la destination après une génération réussie. Les erreurs renvoient un code de sortie 1 ; les diagnostics vont sur la sortie d'erreur. Des avertissements peuvent accompagner une sortie réussie.

Modèles

Utilisez {{ variable }} pour les valeurs, | pour les filtres, et {% ... %} pour la logique. Par exemple, enregistrez ceci dans template.md :

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

{{ content }}

Utilisez yaml_property pour les propriétés complètes de l'en-tête YAML afin que les valeurs soient correctement citées et indentées. Le CLI inclut des filtres standard, mais ne fournit pas de variables de navigateur Web Clipper, de sélecteurs, d'invites ou de filtres HTML dépendants du DOM. Fournissez les variables via JSON.

Vérifiez un modèle avant de le générer :

knap validate template.md

La validation vérifie la syntaxe, les noms de filtres et les arguments statiques des filtres sans données ni fichier de sortie. Elle ne vérifie pas l'existence des variables, les valeurs d'exécution ou les arguments dynamiques ; générez avec des données réelles pour vérifier le comportement à l'exécution. Les diagnostics vont sur la sortie d'erreur et incluent des commandes d'aide pertinentes.

Pipeline Defuddle

Extrayez une page web au format JSON avec du contenu Markdown, puis générez-la en une note :

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

Les propriétés JSON de Defuddle, telles que title et content, deviennent directement des variables de modèle.

Génération par lots

Créez un fichier par ligne CSV, par objet d'un tableau JSON, ou par fichier JSON dans un dossier :

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

Utilisez --data articles.json pour un tableau ou --data ./articles pour un dossier d'objets JSON. Les en-têtes CSV deviennent des noms de variables et les valeurs restent des chaînes. Les données redirigées par défaut sont en JSON ; ajoutez --format csv pour des données CSV redirigées.

Utilisez --dry-run pour valider et lister les chemins de sortie sans écrire de fichiers. Les fichiers existants nécessitent --overwrite, y compris lors d'un essai à blanc. Les noms de sortie en double dans un même lot sont des erreurs, même avec --overwrite.

Les modèles de noms de fichiers doivent produire un nom de fichier unique avec son extension, sans répertoires. Utilisez safe_name pour les noms dérivés des données. Sans --filename, Knap conserve les noms de base JSON sources ou numérote les lignes CSV et les éléments de tableau sous forme de 1.md, 2.md, etc.

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.

Skills associés