# Newdrop — AI / GitHub What’s New

**Default path:** `CHANGELOG.md` → What’s New (widget + public page).  
Ship from GitHub, CI, or any agent — without dashboard homework.

## One-time setup

### A · Connect GitHub (best for repos)

Setup → **Ship from GitHub / AI** → **Connect GitHub**.

Sign in, approve the Newdrop app, pick the repo. Auto-publish turns on. Push
`CHANGELOG.md`, `whats-new.md`, or `.newdrop/*.md` on the default branch — or
publish a GitHub Release → public page + widget. Works on **private** repos.

**Optional (Setup, after connect):**

- **Monorepo path prefix** — only watch e.g. `apps/web/`
- **Draft from commit messages** — when no changelog file was touched; always
  stays **draft** (never auto-publishes)

### B · AI / agent API key

**Connect AI pack** (or a 7-day `/install/…` link) creates `ndw_…` for Cursor,
Claude, ChatGPT Actions, Copilot, Zapier, CI.

Agent packs: https://getnewdrop.com/dev/

## Path — CLI

```bash
curl -fsSL https://getnewdrop.com/cli/newdrop.mjs -o newdrop.mjs
chmod +x newdrop.mjs
export NEWDROP_WRITE_KEY=ndw_…
./newdrop.mjs me
./newdrop.mjs init          # CHANGELOG + .cursor rule + .newdrop/
./newdrop.mjs publish CHANGELOG.md
./newdrop.mjs publish CHANGELOG.md --draft
```

## Path — MCP (Claude / ChatGPT / Cursor)

Remote MCP URL: `https://getnewdrop.com/api/mcp`  
Auth header: `Authorization: Bearer ndw_…` (same Connect AI pack key).

Tools (write only — no billing/settings):

- `newdrop_whoami` — confirm key + URLs  
- `newdrop_publish_changelog` — markdown → live by default (`publish: false` = drafts)  
- `newdrop_create_update` — single update (draft by default)

## Path — Agent + API key

```bash
curl -X POST 'https://getnewdrop.com/api/v1/write/changelog' \
  -H "Authorization: Bearer ndw_YOUR_KEY" \
  -H 'Content-Type: text/markdown' \
  --data-binary @CHANGELOG.md
```

Confirm key: `GET /api/v1/write/me`  
OpenAPI (ChatGPT Actions): https://getnewdrop.com/openapi-write.yaml  
JS SDK: https://getnewdrop.com/sdk/newdrop-write.mjs

Single update JSON: `POST /api/v1/write/updates` (draft by default;
`"status":"published"` for live).

## Path — GitHub Action

If the App isn’t installed, store `NEWDROP_WRITE_KEY` as a repo secret:

```yaml
# .github/workflows/newdrop.yml
name: Newdrop
on:
  push:
    paths:
      - "CHANGELOG.md"
      - "whats-new.md"
      - ".newdrop/**"
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Publish What’s New
        env:
          NEWDROP_WRITE_KEY: ${{ secrets.NEWDROP_WRITE_KEY }}
        run: |
          curl -fsSL https://getnewdrop.com/cli/newdrop.mjs -o /tmp/newdrop.mjs
          node /tmp/newdrop.mjs publish CHANGELOG.md
```

Composite action: https://getnewdrop.com/github-action/action.yml  
(Example workflow also in this playbook above.)

## Notify everywhere (Zapier / Make)

Generic publish webhook → Catch Hook → Slack/Discord/…. Docs: `/docs#zapier`.

## Cursor / Claude prompt (copy)

> Update CHANGELOG.md with a Keep a Changelog section for this ship. If Newdrop
> GitHub App is connected, push is enough; otherwise run `node newdrop.mjs
> publish CHANGELOG.md` (or curl) with `NEWDROP_WRITE_KEY`. Never put the key in
> source.

Packs: [/dev/packs.md](https://getnewdrop.com/dev/packs.md)
