CHANGE-NAME π¦
SkillFiles & storageChange a name, email address, phone number, handle, or any identifying string across the artifacts where it lives β starting with surgical, provenance-disciplined PDF editing: scan the file, describe what's found, discuss the changes, perform and verify them. Originals preserved, every change disclosed, institutional corrections pursued in parallel.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the CHANGE-NAME π¦ skill
What this skill tells your AI
The instructions your AI receives, as published by simhacker/moollm in skills/change-name/SKILL.md and read by ahelβs review.
Say my name right β everywhere it's written.
People change names β transition, marriage, divorce, faith, stage names, safety, transliteration across scripts. The record does not follow by itself. Names live in version-of-record PDFs, citation databases, git histories, link annotations, metadata, and archives engineered never to change. This skill changes them β carefully, honestly, and with receipts.
One concrete task ships today: ninja-editing PDF files. The context is a socket:
each venue (git, ACM, ORCID, registries, archives, life admin) plugs in as a playbook in
playbooks/. This SKILL.md is self-contained for the PDF task; playbooks extend it.
The Ethics Gate (read first, always)
A correction is legitimate when all five hold. Any four out of five is a forgery with good manners:
- Documented wish or clear standing β the subject asked (best: find it in their own words), or those closest to them act on documented evidence of their identity. Standing order: self > subject's recorded request > family/co-authors > community.
- Original preserved β bit-for-bit, sha256-pinned, adjacent to the edition.
- Total disclosure β every change enumerated, in the artifact (embedded note) and beside it (README).
- Honest labeling β the filename says what the file is (
-memorial-edition,-corrected, never a silent replacement). - Canonical fix pursued β the edited derivative is a bridge to the institutional correction (publisher petition, registry update), never a substitute for it.
Never out anyone. A scan that finds every occurrence of an old name is also a map of someone's exposure. Treat SCAN reports as sensitive; publish only what the subject or their standing-holders approve.
Protocol: SCAN β DISCUSS β EDIT β VERIFY β PUBLISH
1. SCAN β look at the PDF and describe what you find
Run the sister script (degrades gracefully without pikepdf):
python3 scripts/pdf_name_scan.py TARGET.pdf --find "Old Name" [--replacement "New Name"]
It reports, without changing anything:
- Document metadata β
/Author,/Title, docinfo, XMP - Content-stream text β including kern-split occurrences: TeX-produced PDFs
store names like
(Freudenber)18(g), invisible to naive grep. The scanner inflates streams and matches across TJ kern numbers. - Link annotations β URIs containing the old name (profile links, repo links)
- Font subsets β per font: BaseFont, CharSet/FirstChar/LastChar, and whether the
embedded glyphs can spell the replacement. (Founding case: the email font subset
ended at glyph 117 β one code point short of the letter
v. It could not spell "vanessa". Know this before you promise an in-font edit.)
Describe findings to the human in plain language: where the name appears, what fonts carry it, what can be edited in-font and what needs a fallback face.
2. DISCUSS β agree the plan
Present the evidence, then agree, explicitly:
- Which occurrences change (byline yes; historical citations in other people's references may be out of scope), and which stay.
- Replacement strings β name, email, URLs (beware redirect masking: an old-handle URL that redirects still displays the old handle; update visible text).
- Typography β in-font where the subset allows (recompute kerning), matched fallback face where it doesn't (base-14 Helvetica for sans, Times for serif).
- Labeling β the edition's filename and the embedded provenance note text.
- The gate β confirm all five conditions; record the wish/standing evidence in the ledger.
3. EDIT β perform the surgery
With pikepdf, on a copy (never the original):
- Byline/text: locate the exact TJ array in the page content stream; build the
replacement with correct kerning (glyph widths from the font's
/Widths; word gaps as-250-style TJ numbers; known kern pairs, e.g. Vβa β +111 in Times); re-center by shifting the text matrix half the width delta;assert count == 1for every pattern before replacing β bytes, not regex, wherever possible. - Annotations: update
/A//URIand resize/Recthotspots to the new text width. - Metadata:
/Author, XMPdc:creator; embed a/Notedocinfo field stating what changed, when, why, and by whom.
4. VERIFY β prove it
- Render the edited pages (Ghostscript β PNG) and look at them β centering, font match, no keming. Zoom against an unedited neighbor for comparison.
- Extract full text (
gs -sDEVICE=txtwrite) β the old string's count in agreed scope must be zero; the new string must appear where planned. - Regression β all pages render clean (
-sDEVICE=nullpage). - Hash original and edition; record both.
5. PUBLISH β file it honestly
Original + edition + README side by side. README enumerates every edit, pins both hashes, cites the wish/standing evidence, and links the canonical-fix path (e.g. ACM name-change policy, option 3 β corrected version of record). Commit with a message that tells the story.
Beyond PDFs β the playbook socket
playbooks/pdf-prestoration.md is implemented (the founding case, step by step).
Planned playbooks each get one file, same shape (when to use, standing required,
procedure, verification): git-mailmap (attribution correction without history
rewrite), acm-petition, orcid, registries (dblp/Scholar/Wikidata),
web-archives (layer corrections beside immutable snapshots β fixity is evidence,
not the enemy), life-admin (the chores beyond documents). Add a playbook, advertise
it in CARD.yml, and the skill covers a new venue.
Part of MOOLLM
This skill lives in MOOLLM β see skills/README.md
for the ecosystem. Founding case study: designs/prestoration/,
with the worked example β before and after PDFs, sha256 provenance, and Vanessa's own
HN request β in designs/prestoration/sources/.
Companion tribute: Vanessa's philosophy.
Works standalone: the protocol above and the script in scripts/ need only python3,
ghostscript, and pikepdf.
Signals
- GitHub stars
- 52
- Forks
- 5
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
change-name- Source
- github.com/simhacker/moollm