Each UTF-8 .md, .markdown, .txt, or .json file below .codefacts/ becomes one card. Directories are explored recursively and cards are ordered by path.
Markdown uses its first # Heading as the title and may begin with YAML front matter containing status, verified, and sources. JSON may provide the same metadata alongside title or name plus body, content, or summary:
{
"title": "API contract",
"body": "Responses use camelCase.",
"status": "active",
"verified": "2025-08-14",
"sources": ["https://example.com/api"]
}
The web deck includes cards whose status is active or omitted for backward compatibility. It renders the verified date beneath the title, carries sources as non-visible provenance metadata, and gives only content that does not fit in the card a clipped preview and Read more dialog instead of scrolling inside the card.
The shared @codefacts/markdown package renders inline code and fenced code blocks in both clients without allowing raw HTML. Other files use their filename as the title. Files over 256 KiB are ignored because cards are prose, not artifacts.