app
Adom Shotlog
Public Made by Adomby adom
See the shots your AI never showed you, and know it actually SAW them. adom-shotlog streams every screenshot the AI gathers into a live gallery (webview/pup/browser/phone), reports whether a human is
name: adom-shotlog-publishing description: "How to publish adom-shotlog (and apps like it) to wiki.adom.inc with adompkg - org ownership, OSS source, MIT license, hero, and the wiki traps that waste hours (visibility re-privatization, hero caching, binary overwrite, title vs slug). Use when: publishing/republishing adom-shotlog, cutting a release, fixing an unlisted/privatized page, a stale hero, or bundling sub-skills. Trigger words: publish shotlog, adompkg publish, republish, wiki release, hero not updating, page went private, visibility trap, bundle sub-skills, org owned, publish rules."
Publishing adom-shotlog to wiki.adom.inc
The whole app - CLI binary, source, README, main skill, AND sub-skills - ships as
one package: adom/adom-shotlog. Do NOT create separate wiki pages/repos for
the skills; they live in THIS repo and ride along.
The publish command
cd <staging-dir> # holds package.json, bin/, src/, skills/, SKILL.md, README.md, LICENSE, screenshots/
adompkg publish --org adom --public --version <next> --yes
--org adom→ the page is org-owned (/adom/adom-shotlog), not user-owned. (Theauthor_namesidebar shows the publishing employee and is immutable via the API - that's attribution, not ownership.)--public→ anyone can install/view.- Version must bump every publish - you cannot republish the same version.
Keep
Cargo.toml,VERSION, andpackage.jsonversion in lockstep, and rebuild so the binary's--versionmatches what the page advertises.
package.json essentials
slug: "adom-shotlog"(install name) vstitle: "Adom Shotlog"(display heading). They're different on purpose - slug stays kebab, title is human.license: "MIT"+ ship a realLICENSEfile (© Adom Industries) + setlicense/authorsinCargo.toml. Metadata alone isn't enough for OSS.hero: { path: "screenshots/hero.png" }- REQUIRED; publish refuses without it.bundled: true, atagsarray, andfilesmust whitelist everything that should be browseable/installed, including source + sub-skills:["SKILL.md","skills/**","README.md","package.json","install.sh","uninstall.sh","bin/**","screenshots/**","src/**","Cargo.toml","Cargo.lock","build.sh","VERSION","LICENSE"](Only what's infilesreaches the git repo / Files tab - omitsrc/**and the source is NOT browseable.)install.shdeploys the binary AND loopsskills/*/to install every sub-skill.
The traps (learned the hard way)
- Visibility re-privatization. A
POST /filesor a metadataPUTon a public org page silently flipsvisibilityback to private. Fix: don't poke files piecemeal - do a bumpedadompkg publish --org adom --public, which re-publicizes. After publishing, verify anonymously:
Both must becurl -s -o /dev/null -w "%{http_code}\n" https://wiki.adom.inc/adom/adom-shotlog curl -s -o /dev/null -w "%{http_code}\n" https://wiki.adom.inc/api/packages/adom/adom-shotlog/<ver>/manifest200. - Hero caching by URL. The hero blob URL (
/blob/app/adom-shotlog/screenshots/hero.png) is cached by browser + CDN; overwriting the SAME path serves the stale image. You should NOT have to rename the file - the platform should cache-bust by content hash. Until it does, if a hero looks stale, confirm the served bytes (curl … | md5sum) match your new file; it's a cache, not a regression. (Logged for Colby - don't normalize the rename-the-file workaround.) - Binary overwrite. Overwriting a binary at the same repo path can no-op
(
commit:null). A version bump + republish sidesteps it. - Overview vs Files lag. The Overview tab renders a
readmeDB field set from the tarball README at publish time - a baregit pushof README updates the Files tab but not the Overview. Republish to refresh Overview.
After EVERY publish
- Verify anon
200(above). - Show it in pup (public page → pup): open/refresh the page, screenshot, look.
A
200proves nothing about what the human sees. - Retiring an old slug (e.g. the pre-rename
adom/shotlog)?adompkg delete <owner>/<slug> --confirmis a soft, reversible delete (adompkg undelete). It breaksadompkg install <old>, so mention the migration.
---
name: adom-shotlog-publishing
description: "How to publish adom-shotlog (and apps like it) to wiki.adom.inc with adompkg - org ownership, OSS source, MIT license, hero, and the wiki traps that waste hours (visibility re-privatization, hero caching, binary overwrite, title vs slug). Use when: publishing/republishing adom-shotlog, cutting a release, fixing an unlisted/privatized page, a stale hero, or bundling sub-skills. Trigger words: publish shotlog, adompkg publish, republish, wiki release, hero not updating, page went private, visibility trap, bundle sub-skills, org owned, publish rules."
---
# Publishing adom-shotlog to wiki.adom.inc
The whole app - CLI binary, source, README, main skill, AND sub-skills - ships as
**one package**: `adom/adom-shotlog`. Do NOT create separate wiki pages/repos for
the skills; they live in THIS repo and ride along.
## The publish command
```bash
cd <staging-dir> # holds package.json, bin/, src/, skills/, SKILL.md, README.md, LICENSE, screenshots/
adompkg publish --org adom --public --version <next> --yes
```
- **`--org adom`** → the page is **org-owned** (`/adom/adom-shotlog`), not
user-owned. (The `author_name` sidebar shows the publishing employee and is
**immutable via the API** - that's attribution, not ownership.)
- **`--public`** → anyone can install/view.
- **Version must bump every publish** - you cannot republish the same version.
Keep `Cargo.toml`, `VERSION`, and `package.json` version in lockstep, and rebuild
so the binary's `--version` matches what the page advertises.
## package.json essentials
- `slug: "adom-shotlog"` (install name) vs `title: "Adom Shotlog"` (display heading).
They're different on purpose - slug stays kebab, title is human.
- `license: "MIT"` + ship a real **`LICENSE`** file (© Adom Industries) + set
`license`/`authors` in `Cargo.toml`. Metadata alone isn't enough for OSS.
- `hero: { path: "screenshots/hero.png" }` - REQUIRED; publish refuses without it.
- `bundled: true`, a `tags` array, and `files` **must whitelist everything that
should be browseable/installed**, including source + sub-skills:
`["SKILL.md","skills/**","README.md","package.json","install.sh","uninstall.sh","bin/**","screenshots/**","src/**","Cargo.toml","Cargo.lock","build.sh","VERSION","LICENSE"]`
(Only what's in `files` reaches the git repo / Files tab - omit `src/**` and the
source is NOT browseable.)
- `install.sh` deploys the binary AND loops `skills/*/` to install every sub-skill.
## The traps (learned the hard way)
1. **Visibility re-privatization.** A `POST /files` or a metadata `PUT` on a public
org page silently flips `visibility` back to private. **Fix: don't poke files
piecemeal - do a bumped `adompkg publish --org adom --public`,** which
re-publicizes. After publishing, **verify anonymously**:
```bash
curl -s -o /dev/null -w "%{http_code}\n" https://wiki.adom.inc/adom/adom-shotlog
curl -s -o /dev/null -w "%{http_code}\n" https://wiki.adom.inc/api/packages/adom/adom-shotlog/<ver>/manifest
```
Both must be `200`.
2. **Hero caching by URL.** The hero blob URL (`/blob/app/adom-shotlog/screenshots/hero.png`)
is cached by browser + CDN; overwriting the SAME path serves the stale image.
You should NOT have to rename the file - the platform should cache-bust by
content hash. Until it does, if a hero looks stale, confirm the served bytes
(`curl … | md5sum`) match your new file; it's a cache, not a regression.
(Logged for Colby - don't normalize the rename-the-file workaround.)
3. **Binary overwrite.** Overwriting a binary at the same repo path can no-op
(`commit:null`). A version bump + republish sidesteps it.
4. **Overview vs Files lag.** The Overview tab renders a `readme` DB field set from
the **tarball** README at publish time - a bare `git push` of README updates the
Files tab but not the Overview. Republish to refresh Overview.
## After EVERY publish
- Verify anon `200` (above).
- **Show it in pup** (public page → pup): open/refresh the page, screenshot, look.
A `200` proves nothing about what the human sees.
- Retiring an old slug (e.g. the pre-rename `adom/shotlog`)? `adompkg delete
<owner>/<slug> --confirm` is a **soft, reversible** delete (`adompkg undelete`).
It breaks `adompkg install <old>`, so mention the migration.