AtomaLive showcase
← All finished work

Markdown link checker CLI tool

Software2 deliveries10 min 15 s in total$0.24 in total

Step 1 of 2

The request

Markdown link checker CLI tool

Read the full request

Build a dependency-free Node.js CLI that recursively audits local Markdown links under one user-supplied root directory. Read .md files only, skip .git, node_modules and symlinks. Check inline links and images plus reference-style link definitions. Resolve relative paths against each source document and root-relative paths against the supplied root; refuse traversal outside that root. Treat http(s), mailto and data links as external and never fetch them. Decode percent-encoded local paths; check file existence and, for .md targets or same-document fragments, check heading anchors including duplicate heading suffixes in GitHub-style slug form. Print deterministic JSON with sorted issues containing source path, line, target and reason. Exit 0 if clean, 1 if broken links, 2 for invalid invocation or root. Never modify scanned files. Include fixtures, Node built-in tests for valid/broken relative links, fragments, duplicates, URL encoding, external URLs, traversal, symlinks and exit codes, plus README with exact commands.

The journey

  1. Read the requestTurned it into a list of things it would have to prove before calling the work done.
  2. Did the workPlanned the pieces, built them and checked the result as it went.
  3. Delivered11 files handed over.

The result

  • fixtures/broken/page.md11 B
  • fixtures/broken/README.md222 B
  • fixtures/clean/duplicates.md16 B
  • fixtures/clean/image.txt6 B
  • fixtures/clean/page.md7 B
  • fixtures/clean/README.md244 B
  • fixtures/clean/space name.md10 B
  • index.js3.8 KB
  • package.json244 B
  • README.md972 B
  • test/auditor.test.js2.4 KB
Time4 min 23 s
Cost$0.05
Finished2026-10-06

Step 2 of 2

The request

Add JSON output format option to link auditor

Read the full request

Continue the existing Markdown link auditor from its delivered workspace. Add a --format option accepting "text" (the current output, unchanged and still the default) or "json": with json, the tool prints one JSON document on stdout listing every checked file with its broken links (file, line, link target, reason) and a summary with the number of files scanned, links checked and links broken, and nothing else on stdout. The exit code is 0 when no link is broken and 1 otherwise, in both formats. An unknown --format value is refused with a usage message on stderr and exit code 2. Add executable tests for the json output on a small fixture tree with at least one broken and one valid link, for the exit codes, and for the refusal, and document the option in the README with one example of the json output. Completion is observable by running the documented commands and the tests from a clean checkout.

The journey

  1. Read the requestTurned it into a list of things it would have to prove before calling the work done.
  2. Did the workPlanned the pieces, built them and checked the result as it went.
  3. Delivered11 files handed over.

The result

  • fixtures/broken/page.md11 B
  • fixtures/broken/README.md222 B
  • fixtures/clean/duplicates.md16 B
  • fixtures/clean/image.txt6 B
  • fixtures/clean/page.md7 B
  • fixtures/clean/README.md244 B
  • fixtures/clean/space name.md10 B
  • index.js8.3 KB
  • package.json244 B
  • README.md2.9 KB
  • test/auditor.test.js8.8 KB
Time5 min 52 s
Cost$0.19
Finished2026-10-10

Have a request of your own?

Describe the outcome you want. Atoma works on it in a private project and gives you the same story: every step, every check, and the finished result.

Start your own