← Browse

@tibsfox/publish-pipeline

B

Markdown to HTML/PDF build + FTP sync to configured remote host. Pandoc + xelatex templates, branded output, automated deployment. Proven on 29-document HEL series.

skillclaude

Install

agr install @tibsfox/publish-pipeline --target claude

Writes 1 file into .claude/skills/, pinned to git-75de0be0.

  • .claude/skills/publish-pipeline/SKILL.md

Document


name: publish-pipeline description: Markdown to HTML/PDF build + FTP sync to configured remote host. Pandoc + xelatex templates, branded output, automated deployment. Proven on 29-document HEL series. version: 1.0.0 type: skill category: media status: stable origin: tibsfox modified: false first_seen: 2026-03-31 first_path: .claude/skills/publish-pipeline/SKILL.md superseded_by: null

Publish Pipeline

Activates when research documents need to be converted to publication formats and deployed to the live site.

Build Chain

Markdown (.md) → pandoc → Standalone HTML (branded template)
                       → LaTeX PDF (xelatex, branded template)

Prerequisites

  • ~/.local/bin/pandoc (v3.6+)
  • xelatex (texlive-xetex)
  • DejaVu fonts (for PDF)
  • Templates at the project level: template.tex, html-template.html
  • build.sh script in the project directory

Build Command

bash www/$SITE_DOMAIN/Research/PROJECT/build.sh

Template Setup

Each research project needs:

  1. template.tex — LaTeX template (branded header/footer, colors, title page)
  2. html-template.html — Standalone HTML template (dark theme, navigation)
  3. build.sh — Iterates research/*.md, builds both formats

FTP Sync

# Full site sync
bash scripts/sync-research-to-live.sh

# Single project sync (direct to FTP root)
lftp -f /tmp/lftp-PROJECT.sh
# Where remote path is /PROJECT (NOT /Research/PROJECT)

Critical: The web server maps $DEPLOY_HOST/Research/X/ to FTP root /X/, not to /Research/X/. Always upload to root-level project directories.

Series Integration

After publishing, add the project to series.js:

{ id: 'CODE', name: 'Project Name', path: 'CODE/index.html' },

Alphabetical insertion by ID.

Trustgrade B

  • passBody integrity

    Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.

  • passType matchnot applicable to this artifact type

    Whether the artifact is really the kind of thing its metadata claims it is.

  • passFreshness

    How long since the source repository was last pushed to.

  • passPrompt injection

    Scans the artifact's own text for instructions aimed at your agent rather than at you.

  • warnLicenseno SPDX license detected

    Whether the source repository declares an SPDX license permissive enough to redistribute.

How the grade is calculated

Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:

  • Aevery check passed
  • Bone warning
  • Ctwo warnings
  • Dprompt injection or body integrity failed, or three warnings
  • Fone of those failed, and something else is wrong

These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.

Versions

  • git-75de0be0e1352026-07-31