Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions .claude/skills/cleanup-trn/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,12 @@ description: Clean up the Technical Release Notes (TRN) for a Livingdocs release

The TRN (Technical Release Notes) file gets auto-generated by a bot during the release cycle. Before a release is announced, it needs to be cleaned up: PRs removed from the "PRs to Categorize" list once their content is covered in the right sections, new features/breaking changes/deprecations added, migrations documented, and boilerplate removed.

## Step 1: Get the release handle
## Step 1: Get the release handle and demo deck

If the user hasn't specified one, ask: "Which release are we cleaning up? (e.g. `release-2026-07`)"
Ask **one question at a time** — wait for each answer before asking the next:

1. **Release handle** — if the user hasn't specified one, ask: "Which release are we cleaning up? (e.g. `release-2026-07`)"
2. **Cycle Demo Presentation** — ask: "Do you have the Cycle Demo Presentation for this release? Paste the Figma Slides link and I'll cross-check it against Notion — or say 'none' to skip." A node-specific slide link (URL contains `node-id=...`) reads at higher fidelity, but a plain deck URL works too. Hold onto the link for Step 2.

The TRN file lives at: `documentation/content/operations/releases/<release-handle>.md`

Expand Down Expand Up @@ -48,6 +51,8 @@ for r in filtered:
- `Type: Customer` packages → **Features**
- If a package titled "Deprecations and Breaking Changes" (`Type: Operational`) is present, call `notion-fetch` on its `url` to retrieve the page body, which lists the individual breaking changes and deprecations.

If a Cycle Demo Presentation link was provided in Step 1, read it now — see **Reading a Figma Slides deck** in `.claude/skills/write-trn-feature-section/SKILL.md` (Step 2) — and reconcile it against the Notion buckets, flagging anything present in one source but not the other.

Present the three-bucket list to the user:

> "Here's what I found in the Notion packages page for `<release-handle>`:
Expand All @@ -56,7 +61,10 @@ Present the three-bucket list to the user:
> **Breaking Changes:** ...
> **Deprecations:** ...
>
> I can't access the Cycle Demo Presentation — please check it and let me know if anything is missing or needs to be corrected before we proceed."
> [If a deck was read: "Cross-checked against the Cycle Demo Presentation — <matches / discrepancies>."]
> [If no deck was provided: "I didn't have the Cycle Demo Presentation to cross-check — please verify nothing is missing."]
>
> Let me know if anything is missing or needs to be corrected before we proceed."

Wait for the user to confirm or amend the list.

Expand Down
18 changes: 15 additions & 3 deletions .claude/skills/write-trn-feature-section/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Ask **one question at a time** — wait for each answer before asking the next:
1. **Release** — identifier in `release-YYYY-MM` format. Accept plain year/month and normalize it yourself.
2. **GitHub PR URLs** — ask whether they'd like to add all URLs at once or one at a time. If one at a time: ask for the first URL, then ask "Any more PRs? (say 'done' to continue)" and keep collecting until done. If all at once: accept a list of URLs in a single message.
3. **Notion requirement URL** — original requirement page (if available)
4. **Product Demo Presentation** — Figma Slides URLs are not supported. Ask the developer to paste the first slide screenshot (`Cmd+V` / `Ctrl+V`) or slide text/notes. Then ask "Any more slides? (say 'done' to continue)". Say "none" to skip.
4. **Cycle Demo Presentation** — a Figma Slides URL (see Step 2 for how it's read). Prefer a **node-specific** link: in Figma, select the relevant slide → Copy link → the URL contains `node-id=...`, which lets a single slide be read at full resolution. A plain deck URL works too. Say "none" to skip.
5. **Additional context** — free-form notes, summaries, or exclusions (e.g. "ignore PR #123"). Optional.
6. **Screenshots or Images** — ask the developer to paste images (`Cmd+V` / `Ctrl+V`). For each: ask for the filename (`release-YYYY-MM-description.png`) and a short description of what is shown. Say "none" to skip.
7. **Documentation link** — path under `/reference/` or `/guides/`, if one exists or will exist
Expand All @@ -21,9 +21,21 @@ Ask **one question at a time** — wait for each answer before asking the next:

- Fetch each GitHub PR: title, description, linked issues — understand what was built and why.
- If a Notion URL was provided, fetch it to understand the original user requirement.
- Use any demo slides or notes from steps 4 and 5 to understand how the feature was positioned.
- If a Figma Slides URL was provided, read the deck to understand how the feature was positioned (see **Reading a Figma Slides deck** below).
- Place each image after the paragraph it best illustrates, using the developer's description to decide.
- Use these two examples to calibrate tone and structure:

### Reading a Figma Slides deck

Only the Figma MCP `get_screenshot` tool works on Slides — `get_design_context` and `get_metadata` are rejected for Slides files, so there is no text/node-tree extraction. Read via screenshots:

- **Node-specific link** (`node-id=X-Y` in the URL): screenshot that node directly at `maxDimension` ~2048. This is the ideal case — one crisp slide, no cropping.
- **Plain deck URL** (no `node-id`): the page node is `0:1`. First screenshot `0:1` at a high `maxDimension` (e.g. 8000) for an overview — rows are sections, columns are slides within a section — then crop the relevant region to read it. `maxDimension` defaults to 1024, which is too small for a full deck; always raise it.
- The tool returns a short-lived asset URL; download it (`curl`) and read the PNG. For a large deck, crop with Pillow/`sips` rather than reading the whole canvas at once.
- If only a deck URL is available and a slide is still unreadable after cropping, ask the developer for a node-specific link to that slide.

### Calibration examples

Use these two examples to calibrate tone and structure:

**Example 1 - Simple (auto-available, no config):**

Expand Down