Skip to content

Auto: Content & Presence Updates (June-July 2026)#1

Open
ppradyoth wants to merge 15 commits into
mainfrom
auto/presence-updates
Open

Auto: Content & Presence Updates (June-July 2026)#1
ppradyoth wants to merge 15 commits into
mainfrom
auto/presence-updates

Conversation

@ppradyoth

@ppradyoth ppradyoth commented Jun 23, 2026

Copy link
Copy Markdown
Owner

Cumulative content & presence work for the June–July 2026 autonomous agent window. Do not merge until review.

Cumulative changelog

2026-07-07 run

  • New script: link-text-lint.js — a zero-dependency Node CLI that lints link text for the accessibility (and SEO) gap a link checker can't see: link-check.js tells you a URL is dead; this tells you a working link has text that says nothing. Screen-reader users navigate by a flat list of every link out of context, so ten "click here" links are ten identical, useless entries; search engines read link text as a relevance signal for the destination, so "here"/"read more" throw it away too (WCAG 2.4.4). Four rules: empty-link-text + whitespace-text (errors — a listener hears the raw URL or nothing), nondescriptive-text (warning — the "click here"/"here"/"read more"/"this link" word list), and url-as-text (warning — a long raw URL as the visible text; short bare domains pass). Handles Markdown [text](url), reference [text][ref], and HTML <a href>text</a>; ignores images (that's image-alt-lint.js) and idiomatic angle-bracket autolinks. Unwraps emphasis/inline-code in link text so [**here**] and [`cmd`] are judged by their rendered words — and a real code-styled link like [`examples/`](examples/) is not mistaken for empty (the tricky bug found + fixed in testing: matching now happens on the raw line with code-span ranges skipped, instead of blanking inline code first). Fence-aware, per-line <!-- link-lint-ignore -->, --strict/--no-html/--json/--quiet, CI exit codes 0/1/2, require()-able exports. Tested against crafted inputs (all four rules, HTML anchors, emphasis/code normalization, opt-out, autolink, fenced + inline-code skipping, --strict/--no-html/--json, exit codes 0/1/2) and dogfooded clean on the repo's own README (23 links). Wired into examples/check-docs.sh as a default-ON, defect-only check (only empty/whitespace-text fail a build; the descriptive-text rules warn). README section 15 + ToC entry; runner header/toggle-list, CHECK_LINK_TEXT, and the "seven ON-by-default checks" count updated (also corrected a stale "five checks" line and added the missing CHECK_WHITESPACE/CHECK_LINK_TEXT toggles); node -c + bash -n clean.

2026-07-06 run

  • New script: whitespace-lint.js — zero-dep CLI that lints (and idempotently --fixes) whitespace hygiene the content linters ignore: trailing whitespace (MD009), hard tabs (MD010), CRLF/bare-CR, missing/duplicated final newline, over-long blank runs (MD012). Fence-aware; works on any text file. Tested against byte-exact inputs (incl. --fix correctness via od -c, idempotency, CRLF). Wired into check-docs.sh (default-ON, defect-only). README section 14.

2026-07-05 run

  • New script: changelog-lint.js — zero-dep CLI that lints a CHANGELOG.md against Keep a Changelog. Five error rules + three warnings. Auto-wired into check-docs.sh. README section 13.

2026-07-04 run

  • New script: commit-lint.js — zero-dep CLI that lints git commit messages against Conventional Commits. Hook-ready against .git/COMMIT_EDITMSG. Tested 16 cases. README section 12.

2026-07-03 run

  • New script: list-lint.js — zero-dep Markdown list consistency linter (MD004/MD029/MD005/MD007). Wired into check-docs.sh ON-by-default. README section 11.

2026-07-02 run

  • Wired all linters into examples/check-docs.sh — one command runs the whole zero-dep suite; every check individually toggleable.

2026-07-01 run

  • New script: image-alt-lint.js — zero-dep linter for image alt text. README section 10.

2026-06-30 run

  • New script: code-fence-lint.js — zero-dep linter for fenced code blocks. README section 9.

2026-06-29 run

  • New script: table-fmt.jsgofmt for GFM tables. Idempotent, --write/--check/--json. README section 8.

2026-06-28 run

  • New script: heading-lint.js — zero-dep heading-structure linter. README section 7.

2026-06-27 run

  • New script: frontmatter-lint.js — zero-dep YAML frontmatter linter.

2026-06-26 run

  • New examples/ foldercheck-docs.sh, docs-check.yml, git-pre-commit.

2026-06-25 run

  • New script: link-check.js — zero-dep Markdown link checker.

2026-06-23 run

  • New script: markdown-toc.js — zero-dep, GitHub-accurate TOC generator.

Verification

  • All scripts run locally and tested before commit; zero runtime dependencies (pure Node built-ins).
  • This run: link-text-lint.js exercised against crafted inputs (all four rules, HTML anchors, emphasis/inline-code normalization, per-line opt-out, autolink, fenced + inline-code skipping, --strict/--no-html/--json, exit codes 0/1/2); a false-positive on code-styled link text ([`examples/`](examples/)) was found via README dogfooding and fixed (skip links inside code spans by range instead of blanking inline code); README now dogfoods clean (23 links, 0 problems); node -c clean; check-docs.sh runs the new check and the full suite passes; bash -n examples/check-docs.sh clean.

🤖 Generated with Claude Code

claude and others added 15 commits June 23, 2026 07:05
Zero-dependency Node script. Extracts headings (code-fence aware), builds
GitHub-compatible anchor slugs with duplicate disambiguation, prints to stdout
or injects an idempotent TOC block via --write. Documented in README.
Verifies the TOC is current without writing: exit 0 (up to date), 1 (stale),
2 (no markers). Documented in README. Tested across all three exit states.
- Detects relative file links pointing at missing paths
- Validates #anchors (same-file and cross-file) using GitHub's slug algorithm
- Ignores links in fenced code blocks and inline code spans
- Network-free by default; --external lists URLs without fetching
- CI-friendly exit codes (0 ok / 1 broken / 2 usage); --json output
- Documented in README with usage and feature list
…hecks

Concrete copy-paste artifacts wiring link-check.js (and opt-in markdown-toc.js
--check) into CI and git hooks. Tested on this repo. README section + note on
the marker false-positive caveat.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YC1umQHkdcQLWnoF5GKE45
Zero-dependency, network-free Node linter for the --- frontmatter block:
required-key checks, YYYY-MM-DD date validation, boolean/list type checks,
duplicate-key and unterminated-block detection. Supports --dir recursion,
--json, --quiet, and CI exit codes (0/1/2). Practical YAML subset parser
(scalars, quoted strings, flow + block lists, booleans, numbers). Tested
against the blog-drafts repo plus crafted bad-input fixtures. README section
6 + TOC added; all links verified.
…text (a11y + SEO)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EsnAGky7CwiknXv6K84UnU
Was link-check only. Now runs the whole suite: link-check, code-fence-lint,
image-alt-lint, and frontmatter-lint (--allow-missing) ON by default (defect-only,
CI-safe); heading-lint and table-fmt --check opt-in (they flag deliberate style,
not bugs); markdown-toc stays opt-in via TOC_FILES. Each check toggleable via
CHECK_* env vars. Tested: default passes on this repo, strict (CHECK_HEADINGS=1
CHECK_TABLES=1) fails on the intentional duplicate sub-headings + unaligned table,
toggles work. Updated README + docs-check.yml to match.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NdojMF6h7vP4khiEFhWwB1
Flags mixed bullet markers within one list (MD004), broken ordered
numbering that's neither all-1. nor a clean increment (MD029), and
odd-space list indentation (MD005/MD007, a non-failing warning). Tracks
and skips fenced code; scopes marker checks to a single list block so
separate lists using different markers are never cross-flagged. --json,
--quiet, per-rule toggles, --strict-indent; CI exit codes; require()able
via lintText. Tested on fixtures (each rule), false-positive guards, and
the repo's own docs. Wired into examples/check-docs.sh (ON by default,
CHECK_LISTS toggle) and documented as README section 11.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013kxtY7Uxk9sJZFdxU7ucAt
Lints commit messages against Conventional Commits: header grammar, type enum,
blank-line separator (errors) plus subject/body length and style (warnings).
Three input modes (message file, --stdin, --range A..B), hook-ready (strips git
cruft, skips merge autos), --json/--quiet, require()-able lintMessage/stripGitCruft.
Adds examples/git-commit-msg hook and README section 12 with a dogfood note.
Tested across 16 cases incl. FP guards; existing doc suite still clean.
Zero-dep Node linter — version-heading format, SemVer, ISO dates, change-group
names, duplicate/ordering/empty checks. Fenced-code aware, --json/--strict/require().
Wired into check-docs.sh as an auto-on per-file check when a CHANGELOG exists.
README section 13.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VteDDVmV9aL5p8kSqdCxeC
The hygiene companion to the content lint family. Flags trailing whitespace
(MD009), hard tabs in indentation (MD010), CRLF/bare-CR line endings, a
missing/duplicated final newline, and over-long blank runs (MD012) — the
invisible diff noise the content linters ignore. Every rule is mechanical,
so --fix repairs all of them idempotently. Fenced-code aware; allows the
2-space Markdown hard break by default; works on any text file, not just MD.

Wired into examples/check-docs.sh as a default-ON, defect-only check and
documented as README section 14. Tested against crafted inputs: lint output,
exit codes 0/1/2, --fix byte-correctness, idempotency, CRLF, --no-md-breaks;
dogfooded clean on the repo's own docs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017xACmT2TJTBxXtDgx1jpfK
Wired into check-docs.sh as a default-on defect-only check (empty/whitespace
link text fail; non-descriptive and raw-URL text warn). README section 15 + ToC.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012fBd8EPMktgYBViLUd7H3s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants