TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/sys-witch/llms.txt
Use this file to discover all available pages before exploring further.
writing.js file is the single source of truth for the Writing page. It exports a named array (a) of five writing post objects, each displayed as a TomeCard component with a title, excerpt, publication date, channel badge, and article link. Editing this file is the only step required to add, remove, or update an article entry — no component changes are needed.
The complete SVG path registry for all named sigils in the theme lives in the companion file data/sigils.js, not here. See the Sigil SVG Path Registry section below for its full documentation.
Location: data/writing.js
Export 1 — Writing Posts Array
The writing posts array is exported asa. Each element is consumed by the TomeCard component to render an article preview card with title, excerpt, date, and a channel badge.
Data Shape
Field Reference
A unique identifier for the post used as a React list key. The current convention uses sequential numeric strings (
"1", "2", etc.), but any unique string is valid. Consider switching to a slug-based convention (e.g. "banishing-memory-leaks") if the archive grows large.The article title rendered as the
TomeCard heading. Casing is preserved as written — no automatic transformation is applied by the component.A short summary of the article shown beneath the title in the card body. Keep it to one or two sentences — the card layout does not accommodate long excerpts gracefully.
The publication date as an ISO 8601 date string, e.g.
"2025-10-31". The TomeCard component formats and displays this value. Always use the full YYYY-MM-DD format.The content category rendered as a badge on the card. Must be one of the five defined channel values:
| Value | Intended Use |
|---|---|
Technical | In-depth engineering articles aimed at developers |
Reflections | Personal essays on career, learning, and process |
Bug Reports | Post-mortems and debugging war stories |
Project Writeups | Narrative overviews of completed projects |
General Audience | Explainers written for non-technical readers |
The fully-qualified URL linking to the full article. Use
"#" as a placeholder for articles that are not yet published externally. Replace with the real URL when the article goes live.Current Writing Entries
All five articles currently defined indata/writing.js:
Adding a New Article
Append a new object to the end of thea array. Provide all six fields. Use the real publication date, choose exactly one of the five channel values, and link to the published article URL (or "#" until it is live).
Export 2 — Sigil SVG Path Registry
The sigil path registry is the internal constantL, exported from sigils.js as s. It is a plain JavaScript object whose keys are sigil names and whose values are SVG d attribute strings — the raw path geometry drawn into each <path> element by Sigil.js and other icon consumers across the theme.
Location: data/sigils.js
Registry Structure
Key Groups
The registry contains four logical groups of keys:Navigation Sigils
One sigil per page, used in the navigation bar and as section markers.
home, about, projects, skills, writing, case-studies, contactTrait Sigils
Personality glyphs rendered on the About page to represent character traits.
trait-detail, trait-creative, trait-sarcastic, trait-practical, trait-patternRune Sigils
Seven abstract rune forms used as decorative icons in
RuneTile (skills) and other components. Skills reference these via their sigilId field.rune-1, rune-2, rune-3, rune-4, rune-5, rune-6, rune-7Usage in Data Files
skills.js→sigilIdreferencesrune-1throughrune-7caseStudies.js→sigilIdreferences named page sigils such as"case-studies"and"projects"
Full Registry
The sigil registry in
data/sigils.js is consumed read-only by Sigil.js at render time. To add a new sigil, append a new key–value pair to the registry object in sigils.js with a valid SVG path d string drawn on a 24 × 24 viewBox. Then reference the new key via sigilId in whichever data file needs it.