head injection
Data-only meta and link tags — and why there is no script field.
head injects tags into every page’s <head>.
{ "head": { "meta": [{ "name": "theme-color", "content": "#4E7D4A" }], "link": [{ "rel": "me", "href": "https://example.com/profile" }] }}head.link entries take rel, href and an optional type.
There is no head.script
Section titled “There is no head.script”There is also no head.raw and no head.style. This is not an omission waiting to be
filled — it is the design.
A documentation platform that builds someone else’s repository cannot accept arbitrary
script injection through config and remain safe to run. Keeping head to data-only tags
is what makes a build of untrusted content a bounded operation.
The consequences are real, and worth stating rather than hiding:
- Analytics goes through
analytics, a registry of known providers — not a script tag. - Stylesheets go through
customCss. Ahead.linkwithrel: "stylesheet"is rejected with a message pointing you there. - Anything else that needs JavaScript has no configuration surface. If you need it, the honest answer today is that Reed does not support it.
Href classification
Section titled “Href classification”An href is classified the same way everywhere in docs.json:
- Root-relative (
/something) — base-prefixed by Reed. - Absolute
http(s)— passed through verbatim.
The same rule governs footer.columns[].links[].url and footer.status.url, so there is
one behaviour to learn rather than four.
Ordering and duplicates
Section titled “Ordering and duplicates”Tags are injected on every page, in the order you declare them. Reed does not deduplicate
against tags a template already emits, so declaring a theme-color that the template also
sets leaves two in the document. Check the built HTML if a tag appears not to take effect.