wiki-activity-review
Produce a digest of an author's wiki contributions over a recent window. Default window is week-to-date โ from the most recent Monday (00:00 local) through end of today, inclusive. Examples:
- run on Sat โ window = Mon-Sat of the current week (6 days)
- run on Wed โ window = Mon-Wed of the current week (3 days)
- run on Mon โ window = just today (1 day; falls back to previous Mon-Sun if the user asked for a retrospective)
The caller can override with phrases like "last week" (preceding Mon-Sun), "last 2 weeks" (preceding 14 days), "since May 10" (anchored), or "this month" (from the 1st).
This skill covers both wikis. Skip neither โ contributors typically have pages on both, and a digest that only covers one is incomplete.
| Wiki | URL | CLI | Auth |
|---|---|---|---|
| v1 | https://wiki-ufypy5dpx93o.adom.cloud | adom-wiki | resolved by the CLI; for raw HTTP use $ADOM_WIKI_TOKEN |
| v2 | https://git-wiki-ktqxite5iglh.adom.cloud | adompkg (or raw REST) | adompkg login once, or $ADOM_WIKI_TOKEN as a bearer for raw HTTP |
Workflow
Step 1 โ Resolve identity
adom-wiki whoami | python3 -c "import sys,json; u=json.load(sys.stdin)['user']; print(u['display_name'], u['id'], u.get('email',''))"
That gives you the v1 pub_author_id / pub_author_name and the v2 author_id / author_name (same Carbon user id across both wikis). Match against author fields case-insensitively on display name AND exact match on id โ author records sometimes carry only one or the other.
If whoami returns the shared Developer identity, fall back to adom-cli carbon user get to surface the caller's platform profile and warn that v1 attribution may be missing.
Step 2 โ Enumerate pages on Wiki v1
The CLI caps each page list call at 200 results. Pull each type separately and concatenate. Types: skill, molecule, library, footprint, symbol, 3dcomp, app, datasheet, agent, scaffold.
python3 - <<'PY'
import subprocess, json
types = ['skill','molecule','library','footprint','symbol','3dcomp','app','datasheet','agent','scaffold']
all_pages = []
for t in types:
r = subprocess.run(['adom-wiki','page','list','--type',t,'--limit','500'],
capture_output=True, text=True)
d = json.loads(r.stdout)
all_pages.extend(d.get('pages', []))
if d.get('total', 0) > len(d.get('pages', [])):
print(f"WARN: {t} truncated ({len(d['pages'])} of {d['total']})", flush=True)
json.dump({'pages': all_pages}, open('/tmp/v1_pages.json','w'))
print(f"v1: {len(all_pages)} pages")
PY
If any type warns "truncated", paginate via raw HTTP: GET https://wiki-ufypy5dpx93o.adom.cloud/api/v1/pages?type=<t>&limit=200&offset=200.
Step 3 โ Enumerate pages on Wiki v2
curl -fsS "https://git-wiki-ktqxite5iglh.adom.cloud/api/v1/pages?limit=500" \
-H "Authorization: Bearer $ADOM_WIKI_TOKEN" > /tmp/v2_pages.json
If total > returned, paginate with &offset=500.
Step 4 โ Narrow to candidate pages
A page is a candidate for the window if (a) the author matches AND (b) its updated_at (v1) or last_commit_at/updated_at (v2) falls inside the window.
Critical gotcha โ updated_at is a poor proxy for "the user did something". A page may have its updated_at bumped by backend re-stamps with no logged activity. After narrowing by updated_at, always confirm with the activity log in step 5. Pages with no in-window log entries get demoted to a "Quiet touches" footnote in the output โ don't drop them silently, the user may want to investigate.
Step 5 โ Pull the activity log for each candidate (Wiki v1)
adom-wiki page log <type>/<slug> --limit 100
Returns {activity: [{created_at, kind, author_name, author_id, changelog, metadata, ...}]}. kind is one of: publish, edit, asset_upload, asset_delete, video_add, video_delete, skill_add, skill_remove. Filter to entries where:
author_idorauthor_namematches the resolved identitycreated_atis inside the window
Group consecutive entries by date for a cleaner digest.
Step 6 โ Pull the git log for each candidate (Wiki v2)
curl -fsS "https://git-wiki-ktqxite5iglh.adom.cloud/api/v1/pages/<slug>/log?limit=100" \
-H "Authorization: Bearer $ADOM_WIKI_TOKEN"
Filter to commits by the user inside the window. Note v2 commits don't have kind โ they're just git commits with messages. Surface the commit message as the changelog.
Step 7 โ Compose the digest
Output structure:
# Weekly Wiki Digest โ week of <YYYY-MM-DD>
## Wiki v1 โ <N> active pages
### 1. [<title>](https://wiki-ufypy5dpx93o.adom.cloud/<type>s/<slug>) โ `<type>` ยท v<version>
**<DayOfWeek MM/DD>** โ <one-line summary of what changed>
- <changelog 1>
- <changelog 2>
(repeat per page, newest first)
## Wiki v2 โ <N> active pages
### 1. [<title>](https://git-wiki-ktqxite5iglh.adom.cloud/<type>/<slug>) โ `<type>` ยท v<version>
(same shape; commit messages instead of typed activities)
## Quiet touches (no logged content changes)
- [<title>](url) โ `updated_at` advanced into the window but `page log` shows no activity from you. Backend touch.
---
**Theme of the week:** <1-2 sentences capturing the throughline you noticed across the week's work>
URL pluralization on Wiki v1 takes the type plural (apps, skills, molecules). Wiki v2 uses singular (/app/..., /skill/...). Get this right โ broken links in a digest are the most common bug.
Rules
- Always check both wikis. If you only ran one, say so explicitly and rerun.
- Match the window to the user's ask. Default is week-to-date (most recent Monday through today). "Last week" โ preceding Mon-Sun; "last 2 weeks" โ preceding 14 days; "this month" โ from the 1st of the current month; "since Tuesday" โ from that Tuesday. Convert relative phrases to absolute dates in the digest header.
- Cite changelogs verbatim when they exist โ they're the truest source of "what shipped". Don't paraphrase what the user wrote in the publish message.
- Never invent activity. If
page logreturns 0 entries in the window, the page goes under "Quiet touches", not the main digest. - End with a theme sentence, not a bare list. The point of a digest is connective tissue, not a changelog dump. Read the week's pages and surface what they have in common (a focus area, a customer, an internal tool, a recurring fix).
- No emoji. Plain markdown headings, tables, and links only.
Output length
A typical week has 3-6 active pages. Aim for ~30-60 lines of markdown. If the window spans several weeks with 20+ pages, suggest the user narrow the window rather than producing a 300-line wall.