What's New
/knowledge-wiki-summary — pipe body via temp file, never retype paths (#29)
wiki-summary.mjs create no longer writes a skeleton for the LLM to edit. Instead the LLM generates the full summary body, writes it to a temp file, and pipes it in — so the LLM never has to re-enter the summary file path. This eliminates a class of silent corruption where non-ASCII characters in filenames (e.g. U+2019 right single quotation mark) were transcribed as their ASCII lookalikes (U+0027), causing the edit to land on the wrong file while leaving the correct target untouched.
The create command now accepts --tags "[tag1, tag2]" and reads body content from stdin (empty stdin exits with an error). The skill is restructured accordingly, with a recovery step for wrong-source-path errors.
File existence checks before inserting wikilinks (#28)
wiki-index.mjs upsert-summary and wiki-concept.mjs insert-source previously inserted wikilink entries without verifying the target file existed, silently creating broken links that wiki-lint would later flag. Both commands now check that the summary .md file is present on disk and exit 1 with a clear error message if not — catching apostrophe-character mismatches and other path errors at the point of insertion rather than downstream. The knowledge-wiki-concept and knowledge-wiki-lint skills include recovery hints for when these errors fire.
Wikilink regex fix for bracket-named files (#27)
Three wikilink regexes used character classes that stopped at the first ] inside a path, silently truncating links to files whose names contain square brackets (e.g. [Admission] Program). The fix uses a negative lookahead that allows a lone ] inside a link path as long as it is not immediately followed by another ] (which would close the wikilink). Affected: extractWikilinks in lib/graph.mjs, findUngroundedConcepts in wiki-lint.mjs, and SUMMARY_RE in wiki-index.mjs.
/knowledge-wiki-merge — guard against head-truncation (#26)
LLMs tend to append | head -N to commands with large output to keep context under control, silently discarding candidates and causing duplicate concepts to be missed. Two targeted fixes: an explicit Do not pipe through head warning on candidates.mjs find-shared-source-concepts, and a structural change to wiki-index.mjs read-concepts that redirects output to a temp file and reads it with the Read tool's offset/limit pagination — removing the incentive to truncate in the first place.