← ClaudeAtlas

text-parserslisted

Work on this repo's text readers — the shared MarkdownDocument and MarkdownText in markdown-common, ImportGraph, CommandTokens, the SnakeYAML-backed FrontMatter, and how ClaudeMdConformer reads through them — and the adversarial input that has broken each. Use when changing how a document, YAML front matter, a memory import or a hook command is read, when a rule fires on valid input or passes invalid input, or when the user says "fence", "front matter", "heading detection", "memory import", or "hook command".
adamw7/tools · ★ 11 · Data & Documents · score 74
Install: claude install-skill adamw7/tools
# Text Parsers Skill The `claude-code-enforcer` rules and the `adopt` conformer read Markdown, YAML front matter, `@path` imports and shell hook commands with small readers of their own. Those readers carry the largest share of this repository's shipped defects: `FrontMatter` and `CommandTokens` have each been fixed in six or seven separate commits, `MarkdownDocument` in four or five — several of those twice over, once in the reader and once in the copy `ClaudeMdConformer` used to carry, which is why the Markdown reader now lives in `markdown-common` with a single caller-facing copy. Every one of those fixes was the same thing — real input the reader had not been written for. This skill is the accumulated list, so the next change starts from it instead of rediscovering it. ## The one rule that matters most **Change the shared reader, never the caller.** `MarkdownDocument`, `FrontMatter`, `MarkdownText` and `CommandTokens` exist so every rule agrees on what a fence, a key, a code span and a token are. A rule that re-derives one of those locally is how the readers drifted in the first place — a fix landed in one place and the other two callers kept the bug. Concretely: commit #560 fixed *three* rules at once (`memoryImports`, `validateFileReferences`, `forbiddenTokens`) because the comment mask they all share was only being consulted by heading detection. The fix was one method exposed on `MarkdownDocument`, not three patches. ## The readers and their invariants ### `Mar