# Update Site

> Update the VibePad website with new DMG and appcast entry Use when this capability is needed.

- Skill: `tomevault-io/update-site` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/update-site`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/update-site/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/update-site

---


Update the VibePad website: upload the new DMG for the download button and add an appcast entry for Sparkle auto-updates.

## Gathering info

Ask the user for any values not provided as arguments or inferrable from context:

1. **Version** (e.g. `1.1`) — the `sparkle:shortVersionString`
2. **Build number** (e.g. `2`) — the `sparkle:version`
3. **EdDSA signature** — the `sparkle:edSignature="..."` value from `sign_update`
4. **File length** in bytes — the `length="..."` value from `sign_update`

If the user just ran `/release`, these values should be available in the conversation context — use them without asking again.

## Steps

1. **Read the current appcast**:
   Read `/Users/vyuignatiov/code/vibepad-site/appcast.xml`.

2. **Replace the existing `<item>` entry** in `<channel>` with the new version's data. Use this format:
```xml
    <item>
      <title>Version {VERSION}</title>
      <pubDate>{RFC 2822 date, e.g. "Sat, 08 Feb 2026 12:00:00 -0800"}</pubDate>
      <sparkle:version>{BUILD_NUMBER}</sparkle:version>
      <sparkle:shortVersionString>{VERSION}</sparkle:shortVersionString>
      <sparkle:minimumSystemVersion>14.0</sparkle:minimumSystemVersion>
      <enclosure
        url="https://vibepad.now/assets/VibePad.dmg"
        type="application/x-apple-diskimage"
        sparkle:edSignature="{ED_SIGNATURE}"
        length="{FILE_LENGTH}"
      />
    </item>
```
   Use the current date/time for `<pubDate>`. **Replace** (don't stack) — the site serves a single DMG at a stable URL, so old entries would have stale signatures/lengths. Sparkle only checks the newest compatible item anyway.

3. **Copy the DMG** to the website assets (stable filename for the download button):
```bash
cp "/Users/vyuignatiov/code/VibePad/VibePad-${VERSION}.dmg" "/Users/vyuignatiov/code/vibepad-site/assets/VibePad.dmg"
```

4. **Commit and push** the vibepad-site repo (auto-deploys on push):
```bash
cd ~/code/vibepad-site && git add appcast.xml assets/VibePad.dmg && git commit -m "Update to VibePad ${VERSION}" && git push
```

5. **Report to the user**:
   - Show the updated appcast entry
   - Remind them to verify at `https://vibepad.now/appcast.xml`

---
> Source: [ignatovv/VibePad](https://github.com/ignatovv/VibePad) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-06-18 -->

