Introducing NerdPerfect Printer

It’s here: <URL to go here once it’s on the Chrome Web Store after a little more testing; for now you can download it here>

For years I’ve been frustrated with web browser printing tools.

Often I just want to print the first sheet of a web page as a reminder – for example a film I want to watch. That’s really awkward in the usual UI (Print>Pages>Custom>type “1”).

And often I want to print an article to read on paper. The browser prints it with text clipped from one or more edges, dozens of pages of useless comments (I just wanted the article), ads obscuring the text, etc.

This fixes all that. It’s free in the Chrome Web Store.

It was entirely written by Claude Fable 5 – every line. The first version (which worked pretty well) took it less than 15 minutes (I think – I walked away while it was at it). Then I spent the next several hours tweaking it to be exactly what I wanted via a bunch of back-and-forths with Claude Code (I’m quite the perfectionist on this sort of thing – I could have skipped it all).

This is the first non-trivial project I asked an AI to build from zero, without me even architecting anything or writing a framework – not a single line of code.

This was my development process (not claimed to be ideal; it was my first try!):

1 – Described what I wanted to https://claude.ai (Fable 5). I’ll just show my prompts (not its replies):

I want to start a new Claude Code project. Normally I run CC in VSCode (with the Anthropic extension); I’m not sure that’s the best way to do this project (or if that’s even the advised modern method). The project is to build a Chrome exension from scratch.

It said to use VSCode and blah blah blah details. So I created a new empty folder and opened it in VSCode.

ok, please give me a prompt for CC asking it to do all that including drafting the CLAUDE.md. Here’s the project (I’m happy to post it to the Web Store to help other people – for free. I don’t want to do any support – I’m doing this for my own use.): See attached [scan of printed output; unreadable]. This happens to me a lot. I try to print out a long article from substack or xda or someplace else and the printout gets clipped on one or both edges; unreadable. I print from Chrome. I usually print using either selectText>rightClick>Print or SelectNothing>Print. (The former when I only want to print part of an article; often just the first page.) Chrome’s Print has this problem a lot. Sometimes selecting portions helps. Often ads and other junk appears overlaid on top of the text/illustrations making it unreadable. Ideally I’d like the extension to take over from Chrome’s built-in Print (if possible) but if not an icon in the top bar is fine. Does that all make sense and sound doable? A smart printer that formats such that text is readable?

It wrote a prompt for Claude Code (CC). I asked for changes:

I often want to print only the first 2 pages (double sided so one sheet) – for example a movie review I’ve decided to watch – the paper is just a reminder to watch it. That’s awkward in the Chrome interface. The SelectText>Print helps but imperfectly.

This went back-and-forth a few times with me adding requirements and features. Each time it produced a new prompt for Claude Code.

What effort setting do you suggest?

It said “High – the default. Leave it alone.”, blah blah blah reasons.

After a couple of more rounds of requirements/feature adjustments it produced this prompt for Claude Code, which I simply pasted into CC in VSCode:

I want to build a Chrome extension from scratch in this empty directory. Work in this order: (1) interview me, (2) draft CLAUDE.md for my approval, (3) present an implementation plan for my approval, (4) implement.

INTERVIEW FIRST: Before drafting anything, ask me any questions where my answer would change the design, one batch at a time. Don't ask questions you can resolve yourself from the requirements below. If you have no such questions, say so and proceed.

PROJECT: "Smart Print" — a Chrome extension producing clean, readable printouts of web articles. Chrome's built-in print frequently clips text at page edges and lets ads, overlays, and sticky elements render on top of article text. This extension extracts the article content, reflows it into a clean print-optimized layout, and prints that. It will be published free on the Chrome Web Store with no support offered.

USER EXPERIENCE (this is the core spec — normal use is exactly 2 clicks):

Click the toolbar icon ? a popup dialog opens containing:
- A PREVIEW of the cleaned, reflowed content as it will print (scaled down; paginated if feasible so the one-sheet cut point is visible). If text is selected on the page, the preview shows the selection; otherwise the extracted article. The preview is the guide for adjusting font size.
- A font-size box, pre-filled with the saved preference (default 11pt, range 9–16pt). Changing it reflows the preview live.
- A checkbox "Use clean serif font" (default OFF = keep the original web page's body font, captured from the page's computed style; ON = our serif). Persisted like font size.
- Button "Print 1 sheet" — prints the content truncated to fit exactly 2 pages (one duplex sheet).
- Button "Print all" — prints the whole article, or just the selected portion if a selection exists.

Either print button leads to the standard Chrome/system print dialog (printer selection, duplex, etc. — user needn't touch it if current settings are OK). So: click icon, click a print button, confirm system dialog. Done.

REQUIREMENTS:

1. Manifest V3 only. Never use MV2 patterns (no background pages; service worker only).

2. Plain JavaScript, no bundler, no build step, no framework. The directory must load directly as an unpacked extension via chrome://extensions.

3. Content extraction: vendor Mozilla's Readability.js (standalone, from mozilla/readability on GitHub) to extract article title, byline, and body. Do not write a custom extractor. Extraction runs when the popup opens so the preview is immediate.

4. Content rules:
a. Images and figures that are part of the article MUST be included, scaled to fit page width, with page-break-inside: avoid.
b. SELECTION: when a selection exists, print exactly what was selected — verbatim, whatever it is (including comments if the user selected comments), preserving inline formatting and images — but rendered through our clean print template so it prints without clipping, ad overlays, or the source site's interfering styles. Page title as header.
c. FULL ARTICLE: comments must never appear. Readability should handle this, but additionally strip known comment containers as a safety net (e.g., #comments, .comments-section, [class*="comment"], Substack's comment container). This stripping must NOT apply in selection mode.
d. ONE SHEET: truncate to fit exactly 2 printed pages at the chosen font size, cutting at a paragraph boundary, appending "…" and the source URL. Measurement must account for @page margins; use a conservative fit target (~95% of two pages) so overflow onto a third page is rare. Applies to the selection if one exists, else the article.

5. Print rendering: dedicated print CSS — body at the chosen size in the chosen font (site font by default, our serif when the checkbox is on), generous @page margins that never clip on common printers, single max-width text column, force light color scheme (black text on white regardless of the site's dark mode). Source URL and retrieval date (YYYY-MM-DD) in small text at the end of the printout. Implementation of the actual print (hidden tab, offscreen document, or popup-driven render tab) is your choice — pick whatever is most reliable for invoking window.print() on the clean content; the user must only ever see popup ? system print dialog.

6. Secondary invocation: context-menu items "Smart Print page" and "Smart Print selection" (contexts: ["selection"] for the latter) that open the same popup flow or print directly with saved settings — your choice, propose in the plan. Note: Ctrl+P cannot be overridden by extensions; do not attempt it, and record this fact in CLAUDE.md.

7. Persistence: font size and font-override checkbox via chrome.storage.sync. Nothing else is ever stored.

8. Permissions: minimal — activeTab, contextMenus, scripting, storage. No browsing data, page content, or history stored or transmitted. No analytics, no network requests. Everything runs locally. Keep it Web Store review-friendly.

9. Graceful failure: if Readability can't parse the page, fall back to rendering document.body through the cleanup CSS, with a brief notice in the preview that extraction failed.

10. Icons: generate a simple printer-glyph icon as PNGs at 16/32/48/128.

11. README.md: what it does, how to load unpacked, the popup workflow, settings, a privacy statement (all processing local; only font preferences stored; nothing collected or transmitted), and a note that the extension is provided as-is with no support.

12. Also produce the Chrome Web Store listing text: short description, detailed description emphasizing local-only processing / no account / no AI / two-click operation, and privacy-practices justifications for each permission (storage = font preferences only).

CLAUDE.md must capture: MV3-only rule; plain-JS/no-build rule; minimal-permissions rule (storage = font prefs only); impossibility of intercepting Ctrl+P; the vendored-Readability decision; the selection-prints-verbatim vs. article-strips-comments distinction; the 2-click UX contract (popup ? print button ? system dialog, nothing more); and the testing workflow (load unpacked at chrome://extensions, reload extension after changes, service worker console, popup console, and page console are all separate).

CREDIT: Mark each generated source file with a comment header: "Original author: Claude Fable 5, 2026-07-07". Same credit line in the README.

TESTING: After implementation, walk me through loading it unpacked. Then we'll iterate against real problem pages: a long astralcodexten.com post with a large comment thread (verify comments excluded, images included), an xda-developers.com article, and a selection-print of a partial article (verify verbatim selection). Verify one-sheet fit by printing to PDF, font-size and font-checkbox persistence, preview accuracy vs. printed output, and that dark-mode sites print black-on-white.

2 – I pasted that into Claude Code and let it go. A few minutes later I had the first version and it worked pretty well.

3 – I spent the next few hours tweaking. I wanted it perfect. I’m still not done tweaking – it works great on substack pages and better than the Chrome print on most other things, but it could be better.

To give you an idea of my tweaks – here are my prompts (without Claude’s responses):

My prompts — NerdPerfect Printer build session (2026-07-07)

Every prompt I gave Claude (Fable 5, in Claude Code) during the session that built the extension, in order. Typos and all. Entries in [brackets] were answers picked in Claude’s question dialogs rather than typed; screenshots and images I attached are noted. The initial specification (prompt 1) was itself drafted with https://claude.ai beforehand, as explained.

  1. [The full project specification given above]
  2. [Question-dialog answers: paper size ? “Add a paper-size setting”; hyperlinks on paper ? “Underlined, no URL”]Where is it [the spec it promised]? I don’t see it in the folder. I want to review it.
  3. Looks great. Please do it.
  4. [Plan approval, with notes:] Good except don’t truncate one-sheet at a paragraph boundary (unless not doing so is difficult). Fine to print a partial paragraph at the end – whatever fits on the sheet. Please include not only serif font box, but a font size box (which if changed updates the preview) and a printer selection dialog (choose spefici printer, PDF generator) and a way to change paper size (can be thru standard printer dialog).
  5. How to enable the Chrome integration for this session?
  6. [screenshot] The extension is already in Chrome. Not sure why you can’t get at it.
  7. @browser
  8. Can’t you test it yourself?
  9. formatting looks like it’s clipping the right side in the preview. (the Windows print preview dialog looks OK). Images are not printing (the flag).
  10. Does the dialog need a close X button? I see it closes if you click outside the dialog (good) but is it confusing without the X button?
  11. Still not printing images.
  12. Can’t you test that yourself?
  13. Please rename button to “Print first sheet”
  14. OK; if I select a region and print images print. If I don’t select, they don’t.
  15. Got a popup – “Scott Sumner wants to access…” I clicked Allow.
  16. Please remove the shading and “Print 1 sheet cuts here”. It’s just clutter. Can the preview show pages instead of dashed lines at page breaks?
  17. I didn’t have to reload – I just tried it and got the new version. Works better now. The headers and footers that appear in the real print don’t appear in the preview – can you fix that (I want the headers and footers).? I see you made a store listing draft – who is the credited publisher?
  18. Can you make the font size a dropdown instead of a thing with increase/decrease arrows (whatever that’s called)? And allow all available font sizes there. Please.
  19. Let’s call it Nerdprint and credit it to nerdfever.com.
  20. Better yet – Nerdperfect Printer.
  21. no, still didn’t need a reload. Why are font sizes limited to 9..16 point? I don’t think that’s ideal. Dropdown is much better. Can we sniff out the paper sizes suppored by the currently-selected printer and offer all of them in the dropdown (now just Letter and A4)?
  22. [screenshot] ok, I think the 9..16 range came from https://claude.ai which wrote the first prompt for me. I hadn’t noticed it. If we can’t sniff the paper size please retitle the box “Print preview size:”. And in the dialog, put the ext title in it somewhere near the top, and line up the dropboxwn boxes with the captions better. Please.
  23. [screenshot] Looking better! Found a bug – see clipped text on page 2.
  24. Can we make the ext icon a printer with nerd glasses (classic black frames with tape)?
  25. Let’s use “NerdPerfect Printer” (capitalization). I’m writing a blog post to link to in the store.
  26. What will it do if the user has a printer that can’t print double sided? If the answer is “print two sheets” then there needs to be a setting for that – I really want it to print just 1 sheet.
  27. [image: nerd with taped glasses] Glasses should be in front of printer icon, in this style (not round John Lennon glasses) with tape more crudely applied than in this image. Glasses larger than printer; printer visible behind glasses.
  28. [image: Arnie from “Christine”] Here’s a good example of the glasses (character “Arnie” in film “Christine”)
  29. Can we add a checkbox “Print comments”?
  30. We’re getting there! Please rename “Tabloid” to ‘Tabloid (11×17″)’, add 13×19″ and omit Executive.
  31. Let’s be consistent with the paper size names: Name (dimensions), including for Letter. (not for ISO sizes)
  32. ok, the url in the footer reads “chrome-extension…” instead of the source URL. Can you fix that? Note what I get when I try to print this Google search result – with or without “print comments” I only get the AI overview result.
  33. Huh? “API Error: Server error mid-response. The response above may be incomplete.”
  34. [screenshot] Footers are good now but the font seems way too small and I get “Couldn’t extract an article…”.
  35. Please also change label “Use clean serif font” to “Force “).
  36. ok, make it “Force font” then (“Georgia” seems confusing by itself).
  37. Let’s move the Force font box to underneath the Font size selection. And move Print Preview Size to the same new line – that’ll allow it to move flush right against the edge of the window (instead of being blocked by Double Side Printer). Just should look nice that way.
  38. ok, but put DS printer and print comments on the right.
  39. I put a PDF output in the folder for you to look at. It’s quite good I think. Can we move Print Comments to the left of the Print First Sheet button, and move DS printer all the way right?
  40. Better yet – let’s position DS printer exactly under the Print First Sheet button (since that’s what it affects).
  41. I don’t see any charts but I see 2 images. They look OK to me.
  42. See; it’s in the folder. Alas the flag image messed up the pagination. I got 2 sheets (3 pages).
  43. Almost. Look. The appended footer.
  44. [screenshots] Perfect. It’s in the folder. Next, let’s do the Google search page. It’s bad. See screenshots too. Look in folder.
  45. Preview is better (images, no text at all). PDF is still blank pages.
  46. [screenshots] Not good. See pdf too.
  47. [screenshots] Can we make the preview pane resizable (I’d like to drag it bigger to see more vertically)? Please look at the foobar output pdfs.
  48. [screenshot] Preview still has problems. Postscript still spills one sheet to two; Print all still produces blank PDF sheets. See PDFs
  49. [screenshots] OK, now I’m trying it on an XDA article. It could use some work. Compare screenshot to preview and output (I set up Claude Code…) I’m not sure what to do here.
  50. That’s a big improvement. Can we be a little smarter about font size in these cases – the author bio doesn’t appear in the Chrome rendered version at all – just the first line of it appears, and that’s in very small font in light grey – meant to be easily ignored. Can we maybe print that in a much smaller font? Also – can you output a list of my prompts in this session so far? I want to include them in my blog posting.

I expect to make improvements as I notice flaws. You can contact me and ask for support, but I’ll probably ignore you. You can just download the source code from Google, feed it to Claude or the AI of your choice, and ask it to change whatever you want different.

It’s a new age. As I said to https://claude.ai after I got the first version (mostly working!) after like 15 minutes:

It’s doing amazing [“it” is Claude Code]. I walked away for awhile and didn’t time how long it too – but it was done with a mostly-working first pass in way less than 30 min. I’m super super impressed. This capability is going to change the world. I have a professional software engineer working for me – I know he uses AI a lot but I don’t know if he knows you (Fable/Claude Code) can do the WHOLE JOB by yourself. Amazing. Congratulations.

No – Claude can’t do his whole job. The job is the discussion we had about the spec – and testing it afterward. Understanding what can be done, should be done, would be useful, what form it would be useful in. Describing it to the AI, tweaking it to work well, verifying that it works as hoped. But he can do 20x more now in the same amount of time. We have 20x more jobs for him. This is not a problem. If anything it makes me want to hire another software engineer now that I see how much productivity they have with this tool.

Leave a Reply

Your email address will not be published. Required fields are marked *