Skip to content
View paultendo's full-sized avatar

Block or report paultendo

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
paultendo/README.md

Paul Wood FRSA

I build legal technology, at Fifty Six Law and independently, and I research characters that pass for one another. I write about the work at paultendo.github.io.

confusable-vision is the world's first font-by-font confusables dataset: which Unicode characters look alike, measured from the outlines of 322 fonts at the size people read them. Its data is used in Mozilla's add-on name checks, disarm and SilverSpeak.

namespace-guard checks whether a username or slug is really free: across your users, organisations and reserved routes, and against names made to pass for one you protect, like rnicrosoft. On npm, with no dependencies. agent-sanitizer uses it to fold lookalike characters in AI agents' tool calls back to ASCII.

d0ma1n finds the lookalikes of a domain that someone has already registered, and what each one is set up to do.

skills teach Claude Code and Codex to use namespace-guard and d0ma1n when a task calls for them. Add them with claude plugin marketplace add paultendo/skills.

tothepenny turns bank statement PDFs into a spreadsheet, checked against the balances the bank printed. It runs in your browser, so the statements stay on your computer.

agent-notify sends a desktop notification when Codex, Claude Code or Gemini CLI finishes, needs an approval or hits an error.

Blog · Substack · LinkedIn

Pinned Loading

  1. confusable-vision confusable-vision Public

    The world's first font-by-font confusables dataset: which Unicode characters look alike, measured from the outlines of 322 fonts at the size people read them. CC BY, used in Mozilla's add-on name c…

    TypeScript 12

  2. namespace-guard namespace-guard Public

    Is this name really free? Checks usernames and slugs across your tables and reserved names, and against lookalikes of names you protect, using the world's first font-by-font confusables dataset. Ze…

    TypeScript 6

  3. d0ma1n d0ma1n Public

    Find lookalike domains of your brand that are already registered: measured visual similarity, each TLD's registry rules, and live DNS and RDAP checks.

    TypeScript

  4. tothepenny tothepenny Public

    Does it add up? Bank statement PDFs to a spreadsheet, checked against the balances the bank printed. Runs in your browser or on your machine.

    Python

  5. agent-notify agent-notify Public

    Desktop notifications for AI coding agents (Codex CLI, Claude Code, Gemini CLI): completions, approvals and errors. macOS, Linux and WSL, no dependencies.

    Shell 16 2

  6. ssim-grey ssim-grey Public

    Fast SSIM for single-channel greyscale images. Zero dependencies.

    TypeScript