@fixturfab/content-kit
v1.1.0
Published
FixturFab's canonical glossary and writing-style (Vale) rules, generated from ff-ei. The single source of truth for terminology and prose linting across fixturfab.com and docs.fixturfab.com.
Readme
@fixturfab/content-kit
FixturFab's canonical glossary and writing-style (Vale) rules, generated
from ff-ei. This is the single source of truth that the marketing site
(fixturfab.com), the documentation site (docs.fixturfab.com), and the
glossary_lookup MCP tool all consume — so terminology and prose style never
drift between surfaces.
What's in here
| File | Source | Purpose |
|---|---|---|
| glossary.json, index.js | generated from ../../glossary/glossary.yml | The canonical term list (GLOSSARY_TERMS). |
| Styles/FixturFab/Terminology.yml | generated from the style blocks in glossary.yml | Vale terminology rules (canonical product/term forms). |
| Styles/FixturFab/AIPatterns.yml | authored from the style guide's "AI Writing Patterns to Avoid" | Flags generic AI filler. |
| Styles/FixturFab/MetaNarration.yml | authored from the style guide's "Performed candor" pattern | Flags narrated-honesty tells. |
| Styles/FixturFab/Forbidden.yml | authored from the style guide's forbidden words | Flags empty superlatives / corporate-speak. |
| index.d.ts, vale.ini | authored | Types and a reference Vale config. |
The generated files are committed. CI rebuilds them and fails if they don't match
(node build.mjs + a git diff --exit-code), so they can never diverge from the
canonical glossary.
Updating
- Edit the canonical source —
glossary/glossary.ymlat the ff-ei repo root — or the authoredStyles/FixturFab/{AIPatterns,MetaNarration,Forbidden}.yml. - Rebuild:
cd packages/content-kit && node build.mjs. - Commit the regenerated
glossary.json,index.js, andTerminology.yml. - To release: bump
versionhere and push acontent-kit-v<version>tag.
The package version is independent of the ff-ei plugin version — it tracks this glossary + rules artifact, on its own semver line.
Consuming
Glossary data (e.g. the marketing glossary page):
import { GLOSSARY_TERMS } from "@fixturfab/content-kit";Vale rules — in the consumer's .vale.ini:
StylesPath = node_modules/@fixturfab/content-kit/Styles
MinAlertLevel = warning
[*.{md,mdx}]
BasedOnStyles = FixturFab
# Skip identifier-shaped tokens (URLs, emails, domains, repo/registry paths) so a
# brand name or forbidden word inside one never false-positives — e.g. the lowercase
# brand in studio.fixturfab.com or [email protected] stays unflagged, while a real
# prose miscasing still flags.
TokenIgnores = ((?:\S+@\S+\.\S+)|(?:https?://\S+)|(?:(?:[a-z0-9][a-z0-9-]*\.)+[a-z][a-z]+(?:/\S*)?))All rules ship at warning level (warn-first). The linter enforces the
mechanizable floor — terminology and flat word/phrase blocklists — while
editorial judgment stays a human review. TokenIgnores is a single capturing
group with non-capturing alternatives because Vale honors only the first group and
splits the value on commas.
License & scope
@fixturfab/content-kit is published under the MIT License (see LICENSE). The
MIT grant covers only the files distributed in this package — the glossary
terms (glossary.json, index.js, index.d.ts) and the Vale style rules
(Styles/, vale.ini) in their published form.
Out of scope and not licensed by this package: the ff-ei repository this
package is generated from — FixturFab's strategy, sales, and content documents;
the MCP server; coach and skill definitions; keyword data — and the canonical
glossary source (glossary/glossary.yml) beyond the generated artifacts shipped
here. Those remain FixturFab's proprietary content, all rights reserved.
