# Brain Pdf > Genera un PDF de calidad de publicación desde cualquier brain page usando el binario make-pdf de gstack; la brain page siempre es la fuente de verdad, el PDF es solo una renderización. Fuente: https://skillsagentes.com/skills/garrytan/gbrain/brain-pdf Markdown: https://skillsagentes.com/skills/garrytan/gbrain/brain-pdf.md Repositorio: https://github.com/garrytan/gbrain Autor: garrytan Licencia: MIT Actualizado: hace 3 meses Coste de contexto: 58 tok instalada, 1.7k tok al activarse, 1.8k tok con todos los archivos del bundle Bundle: 2 archivos, 7 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add garrytan/gbrain --skill brain-pdf --agent claude-code # Cursor npx -y skills add garrytan/gbrain --skill brain-pdf --agent cursor # Codex npx -y skills add garrytan/gbrain --skill brain-pdf --agent codex # Gemini CLI npx -y skills add garrytan/gbrain --skill brain-pdf --agent gemini # Windsurf npx -y skills add garrytan/gbrain --skill brain-pdf --agent windsurf # Cline npx -y skills add garrytan/gbrain --skill brain-pdf --agent cline ``` ## Qué hace - Renderiza una brain page en PDF de calidad de publicación usando el binario gstack make-pdf - Elimina el frontmatter YAML antes de renderizar para evitar que se vuelque como texto crudo - Sanitiza emojis y aplica encabezados de página y numeración - Entrega el PDF por Telegram, email o como ruta de archivo directa ## Cuándo usarla - Compartir un book mirror personalizado por email o Telegram - Entregar un playbook de lectura estratégica como lectura limpia - Producir un briefing o reporte con encabezados y numeración de página - Archivar un ensayo largo en formato portátil ## Cuándo no - El binario gstack make-pdf no está instalado en $HOME/.claude/skills/gstack/make-pdf/dist/pdf ## Qué la activa - "Haz un pdf de esta brain page" - "Convierte esta página de brain a pdf" - "Publica esta página como pdf" - "Exporta esta brain page" ## Antes de instalar - Requiere el binario gstack make-pdf instalado, junto con las fuentes fonts-liberation y fonts-noto-cjk. - Necesita en el PATH: sed - Variables de entorno: BRAIN_DIR, CLEAN, SLUG - reads environment config ## Archivos - SKILL.md — 7 KB - routing-eval.jsonl — 589 B ## SKILL.md Reproducido tal cual desde garrytan/gbrain bajo MIT. Esta sección es el documento original y está en inglés. # brain-pdf — Render a Brain Page to Publication-Quality PDF > **Convention:** see [conventions/quality.md](../conventions/quality.md) for > output rules. The PDF is a rendering — never the primary artifact. If a > PDF exists, the source brain page exists behind it. ## The rule The brain page is ALWAYS the source of truth. The PDF is a rendering of it, never a standalone artifact. If a PDF exists somewhere, the brain page must exist behind it. ## What this does Renders a brain page (markdown with frontmatter) into a publication-quality PDF using the gstack `make-pdf` binary. Output is suitable for: - Sharing a personalized book mirror via email or Telegram - Delivering a strategic-reading playbook as a clean read - Producing a briefing or report with running headers and page numbers - Archiving a long-form essay in a portable format ## Prerequisite: gstack make-pdf This skill depends on the gstack `make-pdf` binary at: ``` $HOME/.claude/skills/gstack/make-pdf/dist/pdf ``` The user must have gstack co-installed. If absent, the skill cannot run. A future v0.26+ may bundle a fallback PDF renderer; for v0.25.1 gstack is a soft prereq. Verify it exists before invoking: ```bash P="$HOME/.claude/skills/gstack/make-pdf/dist/pdf" [ -x "$P" ] || { echo "make-pdf not installed; install gstack" >&2; exit 1; } ``` ## Workflow ``` 1. RESOLVE → Confirm the brain page exists (gbrain get ). 2. STRIP → Remove YAML frontmatter — the renderer would otherwise dump it as a full page of raw metadata text. 3. RENDER → Invoke make-pdf with sane defaults (no --cover, no --toc). 4. DELIVER → Hand the PDF to the requester via the agent's preferred channel (do not use raw `MEDIA:` tags on Telegram — they fail silently). ``` ## Invocation ```bash SLUG="path/to/page" P="$HOME/.claude/skills/gstack/make-pdf/dist/pdf" # 1. Confirm the page exists. gbrain get "$SLUG" > /dev/null || { echo "Page $SLUG not found" >&2; exit 1; } # 2. Get the raw markdown. Two paths: read from the brain repo (if user # syncs locally) OR ask gbrain for the body via the API. BRAIN_DIR=$(gbrain config get sync.repo_path 2>/dev/null || echo) if [ -n "$BRAIN_DIR" ] && [ -f "$BRAIN_DIR/$SLUG.md" ]; then RAW="$BRAIN_DIR/$SLUG.md" else RAW=$(mktemp /tmp/brain-page-XXXXXX.md) gbrain get "$SLUG" --raw > "$RAW" # whatever flag exposes raw body fi # 3. Strip YAML frontmatter — sed: skip the opening '---' through the # closing '---' (lines 1..N), then keep everything after. CLEAN=$(mktemp /tmp/brain-page-clean-XXXXXX.md) sed '1{/^---$/!q}; /^---$/,/^---$/d' "$RAW" > "$CLEAN" # 4. Render. NO --cover, NO --toc by default — they look corporate # and waste space. Add them only if explicitly requested. OUT="/tmp/$(basename "$SLUG").pdf" CONTAINER=1 "$P" generate "$CLEAN" "$OUT" echo "Rendered: $OUT" ``` `CONTAINER=1` is mandatory in containerized environments — it tells Playwright to skip Chromium sandboxing. Harmless on bare-metal. ## Common patterns ```bash # Default — clean PDF, no cover, no TOC brain-pdf # Draft watermark for in-progress work CONTAINER=1 "$P" generate --watermark DRAFT "$CLEAN" "$OUT" # Optional cover + TOC if the user explicitly asks CONTAINER=1 "$P" generate --cover --toc "$CLEAN" "$OUT" # Custom title + author override (otherwise pulled from frontmatter) CONTAINER=1 "$P" generate --title "Custom Title" --author "Custom Author" "$CLEAN" "$OUT" ``` ## Defaults: NO cover, NO TOC These flags are off by default because they look corporate and waste space on most personal-knowledge content. Only add them when the user explicitly asks for "formal" output (e.g., something they're sending to a board or printing as a deliverable). ## Font requirements The renderer needs: - `fonts-liberation` (Helvetica/Arial substitute) - `fonts-noto-cjk` (Chinese/Japanese/Korean characters) - Minimum body font size: 10pt (page chrome 9pt) - Body text: 11pt If running in an environment without these fonts, install them via the host's package manager (`apt install fonts-liberation fonts-noto-cjk` on Debian/Ubuntu containers). ## Delivery After rendering, deliver via the agent's preferred channel: - **Telegram:** use the `message` tool with `filePath="/tmp/.pdf"` attachment. NEVER use raw `MEDIA:` tags — they fail silently. - **Email:** attach via the host's email tool. - **Direct file response:** print the PDF path; the user can pull it manually. Always include the brain page link in the delivery message so the user can also see it on GitHub / locally. The PDF is a rendering; the source is the artifact. ## Anti-Patterns - ❌ Generating a PDF without first confirming the brain page exists. No source = no PDF. - ❌ Skipping the frontmatter strip. The renderer dumps frontmatter as raw text on the first page; ugly. - ❌ Skipping emoji sanitization. Emoji that don't map to the rendering font show up as `□` boxes. - ❌ Adding `--cover` or `--toc` by default. Off unless asked. - ❌ Using raw `MEDIA:` tags for Telegram delivery. Use the `message` tool with `filePath`. ## Related skills - `skills/book-mirror/SKILL.md` — produces a brain page that's a natural input to brain-pdf (chapter-by-chapter personalized analysis). - `skills/strategic-reading/SKILL.md` — same shape, problem-lens variant. - `skills/publish/SKILL.md` — share brain pages as password-protected HTML (different rendering target). ## Contract This skill guarantees: - Routing matches the canonical triggers in the frontmatter. - Output written under the directories listed in `writes_to:` (when applicable). - Conventions referenced (`quality.md`, `brain-first.md`, `_brain-filing-rules.md`) are followed. - Privacy contract preserved: no real names, no fork-specific filesystem path literals, no upstream-fork references. The full behavior contract is documented in the body sections above; this section exists for the conformance test. ## Output Format The skill's output shape is documented inline in the body sections above (see "Output", "Brain page format", or equivalent). The literal section header here exists for the conformance test (`test/skills-conformance.test.ts`). ## Dónde encaja - Categoría: [Documentos](https://skillsagentes.com/categorias/documentos.md) — Lee, escribe y transforma archivos PDF, DOCX, XLSX y PPTX. - Creador: [garrytan](https://skillsagentes.com/creators/garrytan.md) — 134 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Setup](https://skillsagentes.com/skills/garrytan/gbrain/setup.md): Configura GBrain con auto-aprovisionamiento de Supabase o PGLite, inyección en AGENTS.md y primera importación. - [Maintain](https://skillsagentes.com/skills/garrytan/gbrain/maintain.md): Chequeos de salud del brain: aplicación de back-links, auditoría de citas, validación de filing, detección de info obsoleta, páginas huérfanas y benchmarks. - [Schema Unify](https://skillsagentes.com/skills/garrytan/gbrain/schema-unify.md): Migra un brain de gbrain-base a la taxonomía de 14 tipos canónicos de gbrain-base-v2 usando gbrain onboard --check y el handler Minion unify-types. - [Retrieval Reflex](https://skillsagentes.com/skills/garrytan/gbrain/retrieval-reflex.md): Cuándo y qué recuperar: abre la página del brain de una entidad relevante antes de responder desde memoria. - [Minion Orchestrator](https://skillsagentes.com/skills/garrytan/gbrain/minion-orchestrator.md): Skill unificado de Minions para jobs deterministas de shell y orquestación de subagentes LLM: cola durable, observable y controlable, más la doctrina de ejecución durable para operaciones largas. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)