← Commit history
README.md+2−2
@@ -124,8 +124,8 @@ each part need its own lifecycle and maybe its own author?_ Yes → Family.  The pack encodes these; they're worth stating here too: -1. **Write both storage layers** every publish (git + registry).-2. **`adom-wiki pkg publish` clobbers the hero**, it overwrites the repo's `page.json`+1. **Every file the page shows must reach the repo.** Since adom-wiki 1.8.2 publish commits the tarball's files to the repo itself (media only with `--include-media`); before it, write both storage layers every publish (git + registry).+2. **Hero and `page.json` on publish.** Since 1.8.2 publish merges `page.json` and keeps the hero. Before it, `adom-wiki pkg publish` clobbered the hero: it overwrote the repo's `page.json`    (no `hero`), so the hero gets *unlinked* (not deleted) on every publish. Fix:    **publish first, push a complete `page.json` LAST.** (This is the recurring    "hero disappeared" bug.)
SKILL.md+1−1
@@ -72,7 +72,7 @@ important enough to state up front: 1. **Write BOTH storage layers, every publish.** The git repo (Files/README) and    the package registry (tarball/`adom-wiki pkg install`) are independent. Do only one    and the page is broken. → **wiki-api**, **wiki-publish-safely**.-2. **`adom-wiki pkg publish` clobbers the hero.** It overwrites the repo's `page.json`+2. **Hero and `page.json` on publish.** adom-wiki 1.8.2+ (tested 2026-10-30): publish commits the tarball files and a MERGED page.json to the repo and keeps the hero; see **wiki-publish-safely** rules 1-2. On an older CLI/server the following still applies. Publish overwrites the repo's `page.json`    with the package manifest (which has no `hero`), so the page-header hero gets    unlinked on every publish. The image isn't deleted, its reference is. **Fix:    publish FIRST, then push a complete `page.json` (with `hero`) to git LAST.** →
package.json+2−2
@@ -1,8 +1,8 @@ {   "slug": "adom-wiki-skillpack",   "title": "Adom Wiki Skill Pack",-  "version": "0.8.54",-  "changelog": "0.8.54: publish checklist: page.json must carry the same discovery_triggers as package.json; a page.json push without them silently wipes the page's triggers (adom/wiki#240).",+  "version": "0.8.55",+  "changelog": "0.8.55: wiki-publish-safely matches adom-wiki 1.8.2 (tested 2026-10-30, #5): publish writes both layers (commits the tarball files + a merged page.json to the repo), a first publish creates the page with no ghost row, and page.json is merged (manifest keys win, the hero and hand-added keys survive); the old rules are kept for older CLIs/servers. 0.8.54: publish checklist: page.json must carry the same discovery_triggers as package.json; a page.json push without them silently wipes the page's triggers (adom/wiki#240).",   "type": "skill",   "hero": {     "path": "screenshots/hero.png"
page.json+3−3
@@ -201,8 +201,8 @@       "prompt": "Before I create this wiki page, check whether the thing already has a home."     }   ],-  "version": "0.8.54",-  "changelog": "0.8.54: publish checklist: page.json must carry the same discovery_triggers as package.json; a page.json push without them silently wipes the page's triggers (adom/wiki#240).",+  "version": "0.8.55",+  "changelog": "0.8.55: wiki-publish-safely matches adom-wiki 1.8.2 (tested 2026-10-30, #5): publish writes both layers (commits the tarball files + a merged page.json to the repo), a first publish creates the page with no ghost row, and page.json is merged (manifest keys win, the hero and hand-added keys survive); the old rules are kept for older CLIs/servers. 0.8.54: publish checklist: page.json must carry the same discovery_triggers as package.json; a page.json push without them silently wipes the page's triggers (adom/wiki#240).",   "description": "The Adom Wiki Skill Pack : one main skill plus the focused sub-skills that teach the AI to publish to wiki.adom.inc without breaking pages, name the wiki repo archetypes (Page, Skillpack, Family), and publish rich component pages (chips, molecules, boards). The wiki is six tools in one: git, package manager, releases, discussions, pull requests, and discovery. One package manager install drops the whole set onto your container. Includes reviewed Z-up component artwork, surface-selected MPN marking, reusable thumbnail caches and component-page widgets. Includes canonical video widgets, synchronized captions and chapters, and voiceover pacing checks.",   "dependencies": {     "adom/adom-wiki-hero-image": "^0.2.2",@@ -267,4 +267,4 @@     "email": "[email protected]"   },   "org": "adom"-}+}\ No newline at end of file
skills/wiki-api/SKILL.md+1−1
@@ -42,7 +42,7 @@ Add `--org adom -y` to publish a canonical org package (`adom/<slug>`). ## The publish workflow: both layers, in this order  The git repo and the package registry are written separately (see wiki-anatomy).-Write both, and order matters because of the hero-clobber gotcha (see step 4).+Write both, and order matters because of the hero-clobber gotcha (see step 4). adom-wiki 1.8.2+ (tested 2026-10-30): publish commits the tarball files and a MERGED page.json to the repo and keeps the hero; see **wiki-publish-safely** rules 1-2. On an older CLI/server the following still applies.  **Step 1, `package.json` first.** Set `slug`, `version`, `type`, `description`, `dependencies`, `files[]` (list every shipped file), and `scripts.install/uninstall`.
skills/wiki-component/SKILL.md+1−1
@@ -509,7 +509,7 @@ downloads + BOM + assembly notes. Page archetype.    restores it (read its old files first; keep what is still useful, such as datasheet figure crops). 3. Push with `adom-wiki repo push <owner>/<slug> --files ...` in batches of about **3.5 MB**    (GLB/STEP/PDF are big and a too-large batch returns **413**), `page.json` LAST so the-   hero/title stay linked (**wiki-hero**, **wiki-publish-safely**). No `pkg publish` tarball is+   hero/title stay linked (a page.json push replaces the file; publish since adom-wiki 1.8.2 merges it) (**wiki-hero**, **wiki-publish-safely**). No `pkg publish` tarball is    needed for a component. Set the provenance Source to the manufacturer afterwards:    `adom-wiki page edit <owner>/<slug> --source stmicroelectronics --source-url <product page>`. 4. **Verify in pup**, and check `/viewer/...` routes return interactive content.
skills/wiki-family/SKILL.md+2−1
@@ -94,7 +94,8 @@ 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).+# family tag in metadata) to the git layer LAST (the hero-clobber rule applies before adom-wiki 1.8.2;+# since 1.8.2 publish merges page.json and keeps the hero, see wiki-publish-safely). ```  After any title/hero change, confirm `GET /api/v1/pages/<child-slug>` shows the
skills/wiki-hero/SKILL.md+2
@@ -81,6 +81,8 @@ The same overwrite also resets the page **title and brief** to the package value  Order every publish so the complete `page.json` is the final commit: +> adom-wiki 1.8.2+ (tested 2026-10-30): publish commits the tarball files and a MERGED page.json to the repo and keeps the hero; see **wiki-publish-safely** rules 1-2. On an older CLI/server the following still applies.+ 1. `adom-wiki pkg publish` (registry/tarball), this clobbers `page.json` in the repo. 2. **THEN** push a **complete** `page.json` to `POST /api/v1/pages/<slug>/files`    as the last step, including `hero:{type:"image",path:"screenshots/hero.png"}`,
skills/wiki-publish-safely/SKILL.md+44−28
@@ -1,8 +1,8 @@ --- name: wiki-publish-safely description: >--  Hard rules for editing an Adom Wiki page without breaking it: write both layers, immutable-  versions, soft-delete, hero lost on publish, verify in pup. Use before and after any publish,+  Hard rules for editing an Adom Wiki page without breaking it: what publish writes to the page+  repo, page.json merging, immutable versions, soft-delete, verify in pup. Use before and after any publish,   file push or README/metadata edit, or when a page broke (placeholder, empty Files tab, hero   gone). ---@@ -17,24 +17,40 @@ companion.  ## The five rules that prevent broken pages -1. **Write BOTH layers, every publish.** Git repo (`POST /files`) *and* package-   registry (`adom-wiki pkg publish`). Only one → the page is broken (placeholder Files-   tab, or a README that won't `adom-wiki pkg install`). See **wiki-anatomy**.--2. **The hero gets clobbered, re-push `page.json` LAST.** `adom-wiki pkg publish`-   overwrites the repo's `page.json` with the package manifest, which has **no-   `hero`**, so the page-header hero is unlinked on every publish. The PNG is NOT-   deleted; only its reference is dropped. **Fix:** publish first, then push a-   *complete* `page.json` (with `hero:{type:"image",path:"screenshots/hero.png"}`,-   title, brief, tags) as the final commit, and confirm-   `GET /api/v1/pages/<slug>` shows `hero_path` set. Full detail → **wiki-hero**.-   The same clobber resets the page **title and brief** to the package values ,-   the complete `page.json` re-push restores those too. Two title traps: (a) put a-   `title` in **package.json** as well, the manifest has none by default, so the-   clobber resets the title to the bare **slug**; (b) the title must be a-   **human, descriptive name, NEVER the slug echo** (`Wiki Hero Image Skill`, not-   `adom-wiki-hero-image`). Cards, search, the homepage, and the screensaver all-   show the title; nobody reads slugs. → **wiki-repo-styles** / **wiki-family**.+**What publish does today** (tested 2026-10-30 on adom-wiki 1.8.2, wiki issue+adom/adom-wiki-skillpack#5): `adom-wiki pkg publish` writes BOTH layers. On every+publish, first or later, it commits a `Publish X.Y.Z` to the page repo holding every+file in the tarball, plus `package.json` and a `page.json`. A first publish with no+page created beforehand creates the page with its repo, as one row. The CLI's+`PUBLISH_LAYERS` hint ("the page git repo is a SEPARATE layer and is not synced by+publish") is wrong on this version. Rules 1 and 2 below say what still applies.++1. **Every file the page shows must reach the repo.** Publish commits the tarball's+   files, so anything in `files[]` lands on the Files tab. What is NOT in the tarball+   is not committed: media is left out unless you pass `--include-media` (hero,+   `screenshots/`, videos are page assets, not install payload). So either publish+   with `--include-media`, or push the media yourself with `adom-wiki repo push`.+   Files pushed only to the repo survive later publishes (publish adds and updates+   files, it does not delete). Before 1.8.2 publish wrote only the registry: on an+   older CLI or server, push all source to the repo as well. See **wiki-anatomy**.++2. **Publish merges `page.json`: keys from `package.json` win.** Publish writes the+   manifest's keys (version, title, description, hero, discovery_triggers, tags,+   files...) into the repo's `page.json` and keeps every other key you added by hand+   (`kind`, for example). Consequences:+   - The **hero survives** publish, whether or not `package.json` declares one. (Before+     1.8.2 publish replaced `page.json` with a manifest that had no hero, which is why+     this rule used to say "re-push page.json last". On an older server, still do that,+     and confirm `GET /api/v1/pages/<slug>` shows `hero_path`.) Full detail → **wiki-hero**.+   - A **title or brief edited only in `page.json` is reset** to the `package.json` value+     on the next publish. Keep them in `package.json`. Two title traps: (a) put a+     `title` in **package.json**, or publish resets the title to the bare **slug**;+     (b) the title must be a **human, descriptive name, NEVER the slug echo** (`Wiki+     Hero Image Skill`, not `adom-wiki-hero-image`). Cards, search, the homepage, and+     the screensaver all show the title; nobody reads slugs. → **wiki-repo-styles** /+     **wiki-family**.+   - A `page.json` you push by hand still needs the same `discovery_triggers` as+     `package.json` (a push without them zeroes the indexed triggers, adom/wiki#240).  3. **Text is plain; only binaries are base64.** Base64-encoding a `.md`/`.json`/    `.sh` makes the wiki store the base64 string as the file content → README@@ -81,10 +97,11 @@ README for the hero filename and delete any line that references it. → **wiki-  - **Cloudflare WAF blocks Python urllib/requests without a `User-Agent`** →   send `User-Agent: `adom-wiki pkg`/2.1.0`. curl sends its own UA and is fine.-- **Publish-only pages create ghost rows.** `adom-wiki pkg publish` without first-  `POST /pages` makes a tarball but no git repo; a later `POST /files` then-  inserts a *second* page row (a duplicate on the listing). Always create the-  page first.+- **No need to create the page first (1.8.2).** A first `adom-wiki pkg publish`+  creates the page and its repo as one row, and a later `repo push` goes to that same+  row. Before 1.8.2, publish-only pages made a tarball but no repo, and a later+  `POST /files` inserted a *second* page row (a ghost duplicate): on an older CLI or+  server, create the page first. - **Rate limits** are per account when signed in (per IP when anonymous), over a   sliding minute. Going over returns HTTP 429 with   `{"error":"Rate limit exceeded","retry_after":N,"code":"RATE_LIMITED"}`:@@ -113,10 +130,9 @@ README for the hero filename and delete any line that references it. → **wiki-  - [ ] `package.json`: version bumped, `files[]` complete, `dependencies` set - [ ] **Findable**: app/skill pages carry 3+ `discovery_triggers` in the user's own words (in `package.json`, or `adom-wiki discover triggers <ref> --add ...` for a page-only page). A page with none never appears in `discover find`. Check: `adom-wiki discover find "<how a user would ask>"` lists it-- [ ] Page created (first time only) via `POST /pages`-- [ ] `adom-wiki pkg publish` succeeded (tarball in registry)-- [ ] ALL source pushed to git (text plain, binaries base64, UA header)-- [ ] **Complete `page.json` pushed LAST** → `hero_path`, title, brief restored, and the **same `discovery_triggers` as `package.json`**. A page.json push without them wipes the page's indexed triggers to zero, silently (adom/wiki#240). Check after: `adom-wiki discover triggers <ref>`+- [ ] `adom-wiki pkg publish` succeeded: it creates the page on the first publish and commits `Publish X.Y.Z` to the repo (check `adom-wiki repo log <ref>`; before 1.8.2, create the page first and push all source yourself)+- [ ] Media on the page (hero, README images) is in the repo: published with `--include-media`, or pushed with `adom-wiki repo push`+- [ ] Title, brief, hero and `discovery_triggers` live in `package.json` (publish writes them into `page.json`); check after: `adom-wiki page stats <ref>` shows `hero_path`, and `adom-wiki discover triggers <ref>` lists the triggers - [ ] **Title is descriptive, NOT the slug** (and `title` is set in `package.json` too, so publish won't reset it to the slug) - [ ] README does NOT embed the hero image (page header shows it already) - [ ] Opened in pup + screenshot read: README renders, Files tab full, hero shows
skills/wiki-skillpack/SKILL.md+3−2
@@ -86,7 +86,8 @@ to the right sub-skill. This is the navigational backbone of a Skillpack. ## Publishing  Publish the whole package via the standard workflow (**wiki-api** /-**wiki-publish-safely**): create the page once, `adom-wiki pkg publish` the tarball,-push all files to git with a complete `page.json` LAST, then verify in pup that+**wiki-publish-safely**): `adom-wiki pkg publish` the tarball (since adom-wiki 1.8.2 it creates the page on the first+publish and commits its files and a merged `page.json` to git; on an older CLI create the page once and+push all files to git with a complete `page.json` LAST), then verify in pup that `adom-wiki pkg install` deploys every skill. The live reference for this whole pattern is **adom-ui-design** (and this pack itself).