--- name: weekly-review description: Use this skill when the user asks to generate a "weekly review", create a "review article", run the "weekly review" process, or mentions generating content for AI, Intelligence Augmentation, Longevity, Resource Abundance, Energy, or Space subjects on their scheduled days. version: 1.3.1 --- # Weekly Review Article Generator Generate weekly review articles covering the best 10 items from the past week in each subject area. ## Schedule | Day | Subject | Directory | |-----------|---------------------------|----------------------------| | Monday | AI | ai/ | | Tuesday | Intelligence Augmentation | intelligence-augmentation/ | | Wednesday | Longevity | longevity/ | | Thursday | Resource Abundance | resource-abundance/ | | Friday | Energy | energy/ | | Saturday | Space | space/ | | Sunday | Robotics | robotics/ | ## Process 1. **Determine the subject** - Use the current day of week to select from the schedule - If Sunday, ask the user which subject to generate - User may override by specifying a subject 2. **Read subject-specific guidance** - Read `/SUBJECT.md` for search terms, priority sources, and emphasis areas 3. **Research the past week (be efficient)** - Run 3-4 WebSearches in parallel using search terms from SUBJECT.md - Cover the 7 days ending yesterday - WebSearch summaries contain substantial detail—use them directly - Do NOT run additional broad search rounds; 3-4 searches is sufficient - EXCEPTION: targeted source-upgrade searches in step 4 are allowed and expected 4. **Select the best 10 items** Selection criteria: - Future and technology positive framing - College graduate sophistication (substantive, not dumbed down) - Lay interest appropriate (accessible to educated non-specialists) - Importance OR novelty to the field Source quality rubric — apply to each candidate before writing: | Tier | Examples | Use? | |------|--------------------------------------------------------------------------|------------------------------------------------| | A | Peer-reviewed journals, university press releases, government/IGO bodies, primary company announcements | Use freely | | B | Established trade press (Nature News, Reuters, IEEE Spectrum, Ars Technica, sector-specific tier-1) | Use freely | | C | Investment newsletters, aggregators, Wikipedia-style summaries, WordPress/Medium blogs, SEO content farms | Upgrade or drop — never the sole source | | D | Press-release reprint sites, unattributed "news" domains, content matching the pattern `/blogs/` | Do not use | For any candidate item whose best available source is Tier C or D: - Run ONE targeted search for a primary or trade-press version of the same story (e.g., the university's press office, the company's newsroom, the government portal, the journal's DOI page) - If a Tier A or B source is found, use it - If not, drop the item and select the next-best candidate from the search pool URL sanity check — reject any URL that is: - A journal or publisher homepage rather than a specific article — e.g. `pubs.acs.org/journal/` with no article ID - A tag, category, or archive page rather than the specific item - A domain that does not match the "Publication Name" in the citation 5. **Write from search summaries** - Search result summaries contain enough detail for 3-5 paragraph synopses - Only use WebFetch for 2-3 items max where critical detail is missing - Skip any WebFetch that fails (403, paywall, etc.)—do not retry - Omit images rather than searching for them; include only if URL is in search results - Every specific statistic, dollar figure, or named claim must be traceable to the item's cited source — do not import figures from search snippets that aren't among the 10 selected items 6. **Write the article** Subject display names — use these exact capitalizations in filenames, H1, and the published title: | Directory | Display Name | |------------------------------|---------------------------| | `ai/` | AI | | `intelligence-augmentation/` | Intelligence Augmentation | | `longevity/` | Longevity | | `resource-abundance/` | Resource Abundance | | `energy/` | Energy | | `space/` | Space | | 'robotics/' | Robotics | Filename: `/ Weekly Review .md` - `` is ISO format `YYYY-MM-DD` - Spaces in filenames are intentional — do not substitute hyphens or underscores - Example: `ai/AI Weekly Review 2026-03-09.md` - Example: `resource-abundance/Resource Abundance Weekly Review 2026-04-23.md` The H1 at the top of the article must match the filename (minus the `.md` extension). When publishing via the Ghost Admin API, pass this same string as the `title` field in the POST body — Ghost requires `title` explicitly and does not derive it from the filename or first H1, so keeping all three identical means one source of truth. Week In Review discipline: the synthesis paragraphs may ONLY reference the 10 selected items. If a theme needs an 11th example to hold together, reconsider item selection rather than citing an unselected source in the synthesis. Format: ```markdown # Weekly Review ## Week In Review [2-4 paragraphs synthesizing the week's themes and interconnections] References to articles use format: [Article Title](url), linking ONLY to items in the "Items" section below. Explain how the items relate to each other and their collective significance to the field. ## Items ### [Item Title] ![Description](image-url) [3-5 paragraphs - accessible but substantive synopsis] Source: [Publication Name](url) --- [Repeat for all 10 items] ``` 7. **Save the article** - Write to the appropriate subject directory - Confirm completion with the filename ## Writing Style - Substantive and informative - Accessible to educated generalists - No hype or clickbait framing - Optimistic but grounded tone - Connect items to broader trends and implications - When a claim depends on a specific number or date, attribute it to a source rather than presenting it as established fact ## Future: Publishing via Ghost Admin API This skill's scope ends at "file saved to disk." A separate publisher script handles the Ghost API integration. Documenting the contract here so the invariant doesn't drift. ### The invariant The filename-to-title chain established above extends naturally into publishing: - Filename stem (minus `.md`) → Ghost `title` field in the API body - First H1 of the markdown → same string, duplicated for local readability - Everything after the first H1 → Ghost post body (HTML-converted, first H1 stripped) The Ghost newsletter slug is a separate piece of configuration — a single value identifying which newsletter in Ghost Admin the post should be emailed through. Pipeline-level config, not per-file. Each newsletter must be created once in Ghost Admin (Settings → Email newsletter → Newsletters) before the first automated publish; the API cannot create newsletters. ### Two-step publish pattern Ghost's Admin API requires a draft-then-publish flow to trigger newsletter email send. Single POST with `status: published` and a `newsletter` query parameter silently publishes without emailing. Confirmed pattern: **Step 1 — create draft:** ``` POST /admin/posts/?source=html Body: { "posts": [{ "title": "", "html": "", "status": "draft", "newsletter": "" }] } ``` Response contains `id` and `updated_at` — capture both. **Step 2 — publish and send:** ``` PUT /admin/posts//?newsletter=&email_segment=all Body: { "posts": [{ "updated_at": "", "status": "published" }] } ``` The `newsletter` query parameter must be on both requests. `email_segment=all` sends to all subscribers; `status:free` or `status:-free` target free-only or paid-only. Do NOT set `email_only: true` — that suppresses the public blog post and sends email only. Weekly reviews should appear on both the blog and in email. ### Body transformation The markdown on disk starts with an H1 that duplicates the Ghost `title`. Strip it before converting to HTML and sending, otherwise Ghost renders the title twice: ```bash title=$(basename "$file" .md) body=$(tail -n +2 "$file" | sed '/./,$!d') # drop first line, then leading blanks html=$(echo "$body" | pandoc -f markdown -t html) ``` ### Validation Before publishing, the publisher should verify that the first H1 of the file matches `basename "$file" .md`. This catches rename/edit drift — cases where the filename was changed but the H1 wasn't, or vice versa. If the check fails, refuse to publish and surface the mismatch.