Skip to content

v0.3.2: script fixes from the post-0.3.1 audit

Latest

Choose a tag to compare

@assafkip assafkip released this 16 Oct 18:45

Fixes from an audit after v0.3.1, each with a regression test in tests/test_scripts.py (39 tests, stdlib only). Two independent reviews checked the changes before release.

Would break a run:

  • A Substack host that answers HTML (bot check, login wall) now fails that author with a "not JSON" line. Before, it stopped the whole run and every author after it.
  • check_lessons.py treats http and https, www., a #fragment, a trailing slash and trailing bold, code or punctuation marks as the same page. Urls with parentheses (Wikipedia) and urls in backticks match. Valid citations no longer send the writer round the fix loop, and a different path still fails. It reads raw/ as UTF-8 on any system locale.
  • Sitemap and RSS author modes name every page they did not save, with the reason, like web mode.
  • Two pages that share a filename (/guide/intro and /tutorial/intro) both stay on disk.
  • A file in raw/ that isn't UTF-8 no longer stops the run.

Quality:

  • Substack mode honours limit (default 150) and min_words (default 150), and stops paging the archive at the limit. Paywalled teasers and short posts are skipped, named, and remembered, so a resume doesn't fetch them again.
  • Atom <content type="xhtml"> is read instead of triggering a page fetch per post.
  • limit counts posts on disk in every mode. RSS used to count new posts per run.
  • A url listed in two child sitemaps (WordPress post and image sitemaps) is fetched once.

Small:

  • The ElevenLabs key hook writes its export line once, not on every resume, clear and compact. Switching back to an earlier key makes it active again.
  • ElevenLabs errors show the API's own message (bad key, quota, unknown voice), never the key.
  • Site structured data names the current version.

Known gap: pages and feeds that are not UTF-8 still lose accented and non-Latin letters, and a Shift_JIS feed stops the run. Same as v0.3.1. Tracked in #6.

Install: /plugin marketplace add assafkip/claudemy then /plugin install claudemy@claudemy. Or download claudemy.skill below into ~/.claude/skills/.