name: wiki-family description: >- How to build a Family-style wiki repo on the Adom Wiki, an anchor page plus children published as their own pages, joined by a naming convention, a family tag, and breadcrumbs (e.g. adom-usb + adom-usb-sniffer-cdc, adom-desktop + bridges). Use this when a hub has parts that need their own owners or release cadence, or when adding a child/plugin to an existing family. Trigger words: wiki family repo, parent child wiki page, add a plugin to the family, anchor page, family tag, name a child page, adom-usb plugin, adom-desktop bridge, publish a child page, family naming convention, register a child.

Parent skill: adom-wiki-skillpack

Building a Family repo

A Family is an anchor page plus children published as separate wiki pages (not files in one repo), joined by convention so the relationship survives even when a child is seen out of context. Use it when children need independent owners or update cadences, see wiki-repo-styles for Family-vs-Skillpack. Examples: adom-usb (+ sniffer/firmware plugins), adom-desktop (+ bridges).

1. Naming: every member announces its family

Users meet children out of context (a card, a search hit, a screensaver billboard), so the family must be obvious without reading the slug. There are TWO names, with DIFFERENT separators, don't mix them up:

The title: the canonical format (this is the one people see)

The page title is what shows on cards, search, the homepage slideshow, and the screensaver. Nobody reads slugs, the title is what carries the family. Use exactly this format, every time, identically across siblings:

<Parent Title> - <Child descriptor>
  • Separator is a space, a plain ASCII hyphen -, and a space (" - ").
  • The parent is its proper Title Case product name (Adom USB, Adom Desktop), NOT the slug.
  • NEVER a colon (:), an em-dash (,) or en-dash (), a slug-style hyphen with no spaces, or the bare descriptor on its own.
✅ Correct ❌ Wrong Why it's wrong
Adom USB - CDC serial sniffer CDC serial sniffer bare descriptor: hides the family
Adom USB - RP2040 persona pack adom-usb-stub-rp2040 slug used as the title
Adom Desktop - KiCad Bridge Adom Desktop: KiCad Bridge colon, not " - "
Adom Desktop - Bridge SDK Adom Desktop: Bridge SDK em-dash, not ASCII hyphen
Adom Desktop - Altium Bridge adom-desktop-altium-bridge slug as title (a real offender)
Adom Desktop - Demo Demo orphan: doesn't announce the family at all
Adom Desktop - Bridges Registry Adom Desktop Bridges Registry no " - " separator

(The ❌ column is drawn from real inconsistencies already on the wiki, colons, em-dashes, slug-as-title, and orphan titles all exist today. Match the ✅ column.)

The slug: dashes, no spaces

  • Slug: <parent>-<descriptor>, adom-usb-sniffer-cdc, adom-desktop-kicad-bridge. Dash separators, lowercase, never a colon (illegal in slugs) and never spaces. The slug is NOT the title, convert it to the spaced, Title-Cased form above for the title field.

The other family markers

  • Family tag/keyword: include <parent>-plugin (e.g. adom-usb-plugin) so the anchor's discovery and <parent> plugins search find the child.
  • Hero billboard: carry a small family chip (e.g. ADOM-USB · SNIFFER) so the relationship survives even when only the image shows. Build it per wiki-hero.

After publishing a child, GET /api/v1/pages/<child-slug> and eyeball the title, it must read <Parent> - <descriptor> with the spaced ASCII hyphen, identical in style to its siblings.

2. The anchor page is a registry

The anchor (e.g. adom-usb) documents the family and keeps a table of known children in its README ("install any of these"), plus the conventions so every child adopts them. The anchor's skill explains how to author and publish a child. Children point back to the anchor via breadcrumbs (see wiki-breadcrumbs), which is how third-party children announce themselves to the anchor.

3. Ship reference children as templates

Include copyable child templates in the anchor repo under examples/ (as adom-usb does with examples/adom-usb-sniffer-cdc/ and .../adom-usb-stub-rp2040/), each with its own plugin.json + package.json + install.sh/uninstall.sh + README.md. Third parties copy a template, rename per the convention, and publish.

4. Publishing a child

Each child is a normal Page publish (see wiki-api / wiki-publish-safely), with the family conventions applied:

# canonical org children publish into the org namespace, not personal:
adom-wiki pkg publish --org adom -y
# if the child ships a binary, attach it as a release asset:
adom-wiki release upload adom/<child-slug>@<ver> ./bin/<bin> --platform linux
# then push source + a COMPLETE page.json (title leads with the parent, hero set,
# family tag in metadata) to the git layer LAST (the hero-clobber rule applies).

After any title/hero change, confirm GET /api/v1/pages/<child-slug> shows the title leading with the parent and hero_path set, cards, search, and the screensaver read those fields.

5. Discovery

Children are found three ways, so set all three: the family tag (<parent>-plugin), the anchor's registry table in its README, and breadcrumbs from the child back to the anchor. The anchor can also query the registry for everything tagged <parent>-plugin to list the family live.