1.20.1 (2026-02-05)
- lib: resolve unnecessary conditional ESLint warnings (8540ed9)
1.20.0 (2026-02-05)
- json-tools: add JSON manipulation plugin with MCP server (51709b0)
- lib: add shared type guards library (349f31c)
- lib: enable strict type assertions in ESLint (9757519)
- deps: consolidate all dependencies in root package.json (502e8f2)
- lib: improve null safety in commitlint scope validation (31aee73)
- wayback: add non-null assertions for available snapshot fields (69e1421)
- wayback: use discriminated unions for ClosestSnapshot type (b107a6b)
- bib: replace type assertions with type guards (90a7c00)
- cve-search: replace type assertions with type guards (f5d67b2)
- github-api: replace type assertions with type guards (7aea0b6)
- gravatar: replace type assertions with type guards (135fabd)
- json-lsp: replace type assertions with type guards (58b74ac)
- json-schema: replace type assertions with type guards (e2095b9)
- json-tools: use Zod type guards instead of type assertions (08d2c5d)
- json-tools: use Zod type guards instead of type assertions (d1e54da)
- lib: add type guards for latex processing (68a47e4)
- lib: add type guards to build scripts (f46e0ee)
- lib: improve type safety in test infrastructure (bcb9167)
- lib: return unknown from cache API for type safety (b7c122c)
- npm-registry: replace type assertions with type guards (8c9d3b5)
- npms-io: replace type assertions with type guards (d567f1d)
- pypi-json: replace type assertions with type guards (3188c6a)
- tex: replace type assertions with type guards (9aa539d)
- wayback: add fs dependency injection to cache script (e1f1fa2)
- wayback: fix isSnapshot type guard for optional fields (6b5b52c)
- wayback: replace type assertions with type guards (14af81f)
- apply ESLint auto-fix formatting to config files (fa04a07)
- wayback: add callsToArray helper for Node.js test runner (6454c90)
- wayback: add callsToArray helper for Node.js test runner compatibility (6da9910)
- wayback: fix screenshot tests and add fs dependency injection (d9673b5)
- wayback: use callsToArray and add mock getters in remaining tests (db83e7d)
- wayback: use callsToArray and add mock getters in tests (4a1e77c)
- deps: add typescript-eslint unified package (05bf7f3)
- switch from vitest to Node.js test runner (tsx --test) (830e9ce)
- chore(json-lsp): add LSP dependencies to root package.json (59da5f2)
- chore(json-lsp): update pnpm lock file (b18e448)
- test(json-lsp): add associations unit tests (c3c63a5)
- test(json-lsp): add catalog unit tests (c92f95c)
- feat(json-lsp): add LSP server configuration (8b2aec7)
- feat(json-lsp): add plugin manifest (2a852c8)
- feat(json-lsp): add schema associations module (14b71ec)
- feat(json-lsp): add SchemaStore catalog integration (1510b9c)
- feat(json-lsp): implement LSP server (3ba6f36)
- test(json-schema): add unit tests (786d199)
- feat(json-schema): add plugin manifest (569b3ac)
- feat(json-schema): add schema-check skill (ca1285d)
- feat(json-schema): add schema-meta skill (896502d)
- feat(json-schema): add schema-validate skill (ad965ab)
- feat(json-schema): add shared utilities (4a90679)
- chore(deps): add ajv packages for JSON Schema validation (aba913a)
- chore(ci): allow empty scopes for ci/chore/docs commits (565972c)
- ci: add Dependabot and allow empty scopes for ci/chore commits (43d7073)
- chore: add git commit --no-verify ban to permissions (72d0f3b)
- chore: remove unused vitest config (fd091f6)
- chore(deps): add c8 for coverage and remove vite-tsconfig-paths (071285a)
- chore(deps): migrate from vitest to Node.js native test runner (59bf197)
- chore(deps): update lockfile after vitest removal (616610d)
- fix(bib): correct mock assertions for Node.js test runner (0f41e39)
- fix(gravatar): migrate tests from Vitest to Node.js test runner (07d028d)
- fix(pypi-json): correct mock assertions for Node.js test runner (a96142e)
- fix(tex): correct mock assertions for Node.js test runner (157ca13)
- fix(wayback): migrate tests from Vitest to Node.js test runner (20010b4)
- test: add global test setup utilities for Node.js test runner (6603fdb)
- test(bib): migrate bib tests to Node.js native test runner (7283711)
- test(bib): migrate integration tests and remove vitest (418e89a)
- test(github-api): migrate tests to Node.js native test runner (bfab693)
- test(gravatar): migrate tests to Node.js native test runner (d65c150)
- test(lib): migrate lib tests to Node.js native test runner (6a7bf07)
- test(npm-registry): migrate tests to Node.js native test runner (5b1f2c1)
- test(npms-io): migrate tests to Node.js native test runner (eb64d42)
- test(pypi-json): migrate tests to Node.js native test runner (756d6d6)
- test(scripts): migrate generate-readme-plugins tests (b11cd69)
- test(tex): migrate tests to Node.js native test runner (90360a2)
- test(wayback): migrate tests to Node.js native test runner (9191d5c)
- refactor(bib): add dependency injection to converter (a8c5d88)
- test(lib): add unit tests for README generator (bd5de36)
- refactor(lib): export pure functions from generator for testing (17034b6)
- chore(ci): include scripts directory in test patterns (3bf39d4)
- chore(ci): stage plugin READMEs in pre-commit hook (3c67f3d)
- refactor(lib): implement component-type-agnostic README generator architecture (31acb27)
- chore(wayback): bump version to 0.9.0 (100f5bc)
- feat(wayback): add capture frequency analysis script (581616d)
- feat(wayback): add oldest and newest capture lookup script (2c7897f)
- feat(wayback): add skill for capture frequency analysis (1cb62a7)
- feat(wayback): add skills for oldest, newest, and range capture lookup (eb8fbb7)
- style(bib): fix generators linting issues (39191fd)
- style(github-api): remove unused Dependencies type import (e2e7077)
- refactor(bib): eliminate type coercion with type guards (6296ff4)
- refactor(bib): fix parsers type safety and remove coercion (4d17183)
- style(lib): rename test files to follow naming convention (064f951)
- style(lint): auto-fix eslint violations (ea85328)
- chore(ci): add sync-versions and validate to pre-commit (d0dd6d7)
- chore(ci): add vitest configuration (dbbdbc0)
- chore(ci): disable ban-ts-comment rule in test files (4769239)
- chore(ci): enforce unit/integration test naming convention (9d05981)
- chore(lib): allow any types in test files for mocks (ec3ef9f)
- chore(lib): exclude coverage directory from type checking (2f1d7bd)
- chore(marketplace): register bib plugin (3f836b1)
- chore(marketplace): register tex plugin (328d55d)
- chore(marketplace): sync plugin descriptions (0e136ab)
- test(bib): add unit tests for bibliography generators (07a61de)
- test(bib): add unit tests for converter and biblatex parser (3566e4c)
- test(bib): add unit tests for converter and biblatex parser (91de8f2)
- test(bib): add unit tests for endnote parser (4759cd4)
- test(bib): add unit tests for endnote parser (bf4afcb)
- test(bib): fix and improve endnote parser tests (1085dac)
- test(bib): fix endnote parser test type assertion (6503786)
- test(bib): rewrite latex parser tests for correct file (402c28d)
- test(bib): use ts-expect-error for private property access (2ec807a)
- test(github-api): add comprehensive unit tests for all scripts (159b817)
- test(gravatar): add unit tests for check, download, url scripts (c0c064f)
- test(gravatar): add unit tests for utils script (9eced3b)
- test(lib): add comprehensive tests for parseArgs utility (f05ea98)
- test(lib): add comprehensive tests for parseArgs utility (4f2a4cd)
- test(lib): add comprehensive tests for parseArgs utility (6967c2a)
- test(npm-registry): add unit tests for downloads, exists, info, search, utils (dc90997)
- test(npm-registry): add unit tests for downloads, exists, info, search, utils (7db2a30)
- test(npms-io): add unit tests for analyze, compare, suggest (1f052f6)
- test(npms-io): add unit tests for analyze, compare, suggest (76ef4f9)
- test(pypi-json): add unit tests for info script (918295d)
- test(tex): add tests for latex-to-md script main function (0c8dab5)
- test(tex): add tests for md-to-latex script main function (e8857db)
- test(tex): add unit tests for markdown/LaTeX conversion (c471577)
- test(wayback): add coverage tests for cache script (8d10cc1)
- test(wayback): add coverage tests for screenshot script (d43406a)
- test(wayback): add coverage tests for submit script (bb19503)
- test(wayback): add unit tests for cache, check, list, screenshot, submit (f6419c8)
- test(wayback): add unit tests for cache, check, list, screenshot, submit (a4aebdb)
- refactor(bib): use shared lib/latex utilities (5126af3)
- refactor(github-api): migrate to shared fetchWithCache pattern (fcd117c)
- refactor(gravatar): refactor scripts for testability with dependency injection (2dfea1a)
- refactor(lib): rename test file to follow unit test convention (81ef167)
- refactor(npm-registry): migrate to shared fetchWithCache pattern (bd80a56)
- refactor(npms-io): migrate to shared fetchWithCache pattern (7615c61)
- refactor(pypi-json): add ParsedArgs type export to utils (5241903)
- refactor(pypi-json): refactor info script for testability with dependency injection (308389c)
- refactor(tex): add dependency injection to latex-to-md script (d863de9)
- refactor(tex): add dependency injection to md-to-latex script (59aa3dc)
- refactor(wayback): refactor scripts for testability with dependency injection (fd5a57c)
- feat(bib): add bibliography manipulation plugin (8ecc470)
- feat(bib): add web page citation with Wayback Machine integration (ae7a92c)
- feat(lib): add shared LaTeX encoding/decoding utilities (7a6cf2f)
- feat(tex): add LaTeX manipulation plugin (0e1ffda)
- feat(tex): add markdown ↔ LaTeX bidirectional conversion (016ce3d)
- refactor(github-api,wayback): rename test files to follow convention (ba3dd00)
- chore(ci): remove test plugin directory (7e51fb3)
- chore(deps): add remark-lint and type checking dependencies (48b0eb6)
- chore(github-api): remove accidental SILL.md file (1526316)
- chore(lib): enable type checking for JavaScript files (53f51a7)
- docs(pypi-json,wayback): add Usage sections to SKILL.md files (6773d36)
- docs(cve-search): add Usage sections to SKILL.md files (1949a4a)
- docs(github-api): add Usage sections to SKILL.md files (1de635d)
- docs(gravatar): add Usage sections to SKILL.md files (c0e22a9)
- docs(npm-registry): add Usage sections to SKILL.md files (9408cfb)
- docs(npms-io): add Usage sections to SKILL.md files (636b059)
- feat(docs): add remark-lint rule to enforce ## Usage sections in SKILL.md (e68ab0a)
- feat(test): add test skill plugin with Usage section (fbcfbf3)
- docs(docs): improve marketplace and plugin explanation (b002182)
- fix(pypi-json): address remaining version parsing edge cases and improve robustness (dff5991)
- fix(pypi-json): improve version parsing for PEP 440 compliance (bcf0671)
- chore(cve-search): remove unused variable in pom.xml parser (af43533)
- chore(marketplace): sync cve-search plugin description from plugin.json (3ed0094)
- fix(cve-search): address code review feedback from PR #3 (629c755), closes #3
- fix(cve-search): resolve import paths and TypeScript type errors (ffc5bfa)
- feat(cve-search): add CVE lookup plugin with OpenCVE integration (0b58334)
- feat(cve-search): add dependency audit skill for scanning vulnerabilities (481bcd7)
- fix(pypi-json): address code review feedback and improve robustness (8382640)
- fix(pypi-json): address remaining review feedback and improve robustness (e5045a1)
- Merge pull request #2 from Mearman/claude/add-pypi-json-skill-0dHUB (dddc851), closes #2
- feat(pypi-json): add PyPI JSON API plugin with package information skill (807847f)
- docs(gravatar): add API Query section to gravatar-check skill (a6c331e)
- refactor(docs): remove unused skillName parameter from extractApiDetails (f5554b8)
- fix(docs): correct syntax errors in README generator (7d31f75)
- refactor(docs): restructure README with per-skill collapsible details (555ee94)
- docs(github-api): update description to use Title: Description format (2f361fe)
- docs(gravatar): update description to use Title: Description format (8e96d12)
- docs(marketplace): update descriptions to use Title: Description format (d33728d)
- refactor(docs): extract plugin titles from description by splitting on colon (223b616)
- feat(ci): sync descriptions from plugin.json to marketplace (ca12841)
- chore(docs): backfill missing entries for v1.11.2-v1.11.4 (7eca343)
- fix(ci): include all commit types in changelog (22e072d)
1.11.4 (2026-01-17)
- docs: change plugins to list format with code fences (cc1056e)
1.11.3 (2026-01-17)
- docs: clarify commit scope flexibility and how to add new scopes (0bf84be)
1.11.2 (2026-01-17)
- ci: stage README after lint-staged to include generated content (8c52d43)
1.11.1 (2026-01-17)
1.11.0 (2026-01-17)
- docs: add README auto-generation with pre-commit hook (f22e82e)
1.10.1 (2026-01-17)
1.10.0 (2026-01-17)
- lib: add optional TTL with configurable default (a3ba5bd)
1.9.0 (2026-01-17)
- lib: add fetchWithCache with exponential backoff and retry (3235dad)
1.8.1 (2026-01-17)
1.8.0 (2026-01-17)
- marketplace: add shared utilities library (c1948c7)
1.7.0 (2026-01-17)
- wayback: add screenshot availability check and update cache usage (98c081e)
1.6.0 (2026-01-17)
- ci: add eslint and typescript configuration (ed493c0)
- ci: add pre-commit hook with lint-staged (9719410)
1.5.4 (2026-01-17)
1.5.3 (2026-01-17)
1.5.2 (2026-01-17)
1.5.1 (2026-01-17)
1.5.0 (2026-01-17)
- github-api: add GitHub REST API integration plugin (c7feecd)
- gravatar: add Gravatar avatar URL generation plugin (5041e09)
- npm-registry: add npm registry integration plugin (1c48189)
- npms-io: add NPMS.io package quality analysis plugin (ccaad22)
1.4.0 (2026-01-17)
- wayback: split cache management into separate skill (3a8a2c6)
1.3.0 (2026-01-17)
- wayback: add --clear-cache flag to clear cached data (1e239aa)
- wayback: add OS tmpdir-based API response caching (96478db)
1.2.3 (2026-01-17)
- ci: include docs commits in changelog releases (23b5a0b)
1.2.3 (2026-01-17)
- docs: simplify AGENTS.md description (c14d92a)
- docs: separate commands into individual code fences for easier copying (cc4c567)
- docs: show both general and specific update commands (90f6c78)
- docs: remove marketplace name from update command (9f1f324)
- docs: clarify marketplace and plugin update commands (9201990)
- docs: rename CLAUDE.md to AGENTS.md with symlink (7353d30)
1.2.2 (2026-01-17)
- marketplace: rename marketplace to mearman (avoid reserved name) (9a6f7eb)
1.2.1 (2026-01-17)
- wayback: remove $schema from plugin.json for Claude Code compatibility (a5c2e29)
1.2.0 (2026-01-17)
- wayback: add error handling guidance to check skill (8600dc1)
1.1.0 (2026-01-17)
- ci: add per-plugin version bumping via semantic-release (6c7c30b)