AgentSkillsCN

sign-pdf

在 PDF 文档上叠加印章与签名。当用户说“签个名”“盖个章”“给 PDF 签名”时,或当用户上传 PDF 文件并提及签名、盖章操作时,或当用户请求准备一份带有印章的发票或文件以便发送时,可触发此功能。支持针对常见文档类型(如“发票”)预设签名位置,并已预先校准好各位置的精确坐标。

SKILL.md
--- frontmatter
name: sign-pdf
description: "Overlay stamp and signature on a PDF document. Trigger when: (1) user says 'подпиши', 'поставь печать', 'sign PDF', (2) user drops a PDF and mentions signing/stamping, (3) user asks to prepare an invoice or document for sending with seal. Supports presets for known document types (счёт-фактура) with pre-calibrated positions."

Sign PDF

Dependencies

Python: pypdf, reportlab, Pillow. System: poppler (brew, for preview).

bash
python3 -c "from pypdf import PdfReader; from reportlab.pdfgen import canvas; from PIL import Image; print('OK')"
# If missing: pip install pypdf reportlab Pillow && brew install poppler

Seal images

Stamp and signature PNGs stored outside any repo:

code
~/Projects/_secrets/seal/
├── stamp.png
└── signature.png

Workflow

Calibrated preset (invoice, etc.) — ONE step, no confirmations

If the document type has a calibrated preset, run sign + open in a single Bash call. Do NOT ask for intermediate confirmations — presets are already tuned.

bash
python3 .claude/skills/sign-pdf/scripts/sign_pdf.py "path/to/doc.pdf" --preset invoice && open "path/to/doc (подписан).pdf"

Tell user the file is ready and opened in Preview. Done.

New/unknown document — iterative calibration

  1. Run script with best-guess positioning:
bash
python3 .claude/skills/sign-pdf/scripts/sign_pdf.py "path/to/doc.pdf" && open "path/to/doc (подписан).pdf"
  1. If user wants adjustment — convert cm to points (1 cm = 28.35 pt), rerun with offsets:
bash
python3 .claude/skills/sign-pdf/scripts/sign_pdf.py "doc.pdf" --sign-dy -28.35 --stamp-dx 85 && open "doc (подписан).pdf"
  1. Repeat until user approves, then save as new preset in PRESETS dict.

Presets

Preset--presetDescription
Счёт-фактураinvoice4.5 cm, печать + подпись ИП (left) + подпись бухгалтера (right), all pages
Договорcontract4.5 cm, печать + подпись Исполнителя (правая колонка), last page
Default(none)4.5 cm, bottom-left, all pages

New presets: add to PRESETS dict in scripts/sign_pdf.py.

Arguments

ArgDefaultNotes
pdfrequiredPath to PDF
--presetnonePreset name (invoice)
--pagesalle.g. 1,2 or 2
--size4.5Image size in cm
--sign-dx/dy0Signature offset (points, +right/+up)
--stamp-dx/dy0Stamp offset (points)
--sign2-dx/dy02nd signature offset (points, for presets with sign2)
--stampautoOverride stamp path
--signatureautoOverride signature path
--outputautoOutput path (default: original + " (подписан)")