Back to the catalog

shipnote

Turn your daily dev activity into build-in-public posts. Scans git repos, generates human-sounding posts, schedules future posts, and auto-p

Open source Repository Open in the app JSON README (API)

About

Turn your daily dev activity into build-in-public posts. Scans git repos, generates human-sounding posts, schedules future posts, and auto-publishes to Threads.

Details

Kind
Plugins
Topic
Version control
Publisher
petarstoev02
Origin
marketplace
Category
ferramentas
Last push
2026-04-06T14:58:15Z
Repository state
ativo
Language
Shell
License
MIT
Added
2026-08-30 01:48:58
Updated
2026-08-30 01:48:58
Origin id
petarstoev02/shipnote/shipnote

README

# Shipnote

Turn your daily dev activity into build-in-public posts. A Claude Code plugin.

## What it does

Run `/shipnote` in Claude Code and get a ready-to-post Threads update based on your actual git activity. No more staring at a blank post wondering what to write.

## Example

```
You: /shipnote

Shipnote:
---
Spent the morning wiring up a CLI plugin from scratch.
No framework. No boilerplate. Just markdown files and bash.
Sometimes the simplest tools are the hardest to build.
---
Post saved to ~/.shipnote/posts.md
```

## Install

```bash
claude plugins marketplace add https://github.com/PetarStoev02/shipnote.git
claude plugins install shipnote
```

Works globally from any directory after install. Restart Claude Code to activate.

## Commands

| Command | Description |
|---------|-------------|
| `/shipnote` | Generate a post from your recent git activity |
| `/shipnote-schedule` | Schedule, list, edit, and remove future posts |
| `/shipnote-log` | View your past posts |
| `/shipnote-setup` | Configure tone, platform, repos path |

## First Run

The first time you run `/shipnote`, it walks you through setup:
- **Tone**: Raw/real, Educational, Hype, or Mix
- **Posts per run**: 1, 2, or 3
- **Repos path**: Where your projects live (default: `~/Code/`)
- **Platform**: Threads, X, or Both
- **Max length**: Character limit per post (default: 500)

Config saves to `~/.shipnote/config.json`. Reconfigure anytime with `/shipnote-setup`.

## Auto-Post to Threads

Shipnote can post directly to your Threads account. After generating a post, it asks "Ship it to Threads?" — confirm and it's live.

### Setup (one-time, ~5 minutes)

1. Go to [Meta Developer Portal](https://developers.facebook.com) and create a new app
2. Select **"Other"** as the use case, then **"Business"** as the app type
3. In your app dashboard, go to **Add Products** → find **Threads API** → click **Set Up**
4. Go to **Threads API** → **Settings** and add your Threads account as a tester
5. Open Threads, go to **Settings** → **Account** → **Website permissions** → accept the invite
6. Back in the developer portal, go to **Threads API** → **Get Started**:
   - Copy your **Threads User ID** (numeric)
   - Click **Generate Token**, select your account, and copy the **Access Token**
7. Run `/shipnote-setup` in Claude Code and enter your credentials when prompted

Your credentials are stored locally in `~/.shipnote/config.json` and never leave your machine.

> **Note:** Access tokens expire after 60 days. If posting starts failing, regenerate your token in the Meta Developer Portal and run `/shipnote-setup` again.

## Post Scheduling

Schedule posts for future dates instead of publishing immediately:

```
You: /shipnote-schedule add
Shipnote: What should the post say?
You: "Just automated my entire deploy pipeline..."
Shipnote: When should it go out?
  a) Tomorrow  b) In 2 days  c) Pick a date
You: a
Shipnote: Scheduled for 2026-04-08.
```

When you run `/shipnote` on the scheduled date, it prompts you to ship the post before generating a new one. You can also list, edit, or remove scheduled posts with `/shipnote-schedule`.

Scheduled posts are stored in `~/.shipnote/scheduled.json`.

## Post Management

Shipnote includes scripts for managing your Threads posts via the API:

| Script | Description |
|--------|-------------|
| `scripts/list-threads.sh` | List your posts with IDs, text, and timestamps |
| `scripts/delete-threads.sh` | Delete a post by ID |

```bash
# List your recent posts
bash scripts/list-threads.sh "<user_id>" "<access_token>"

# Delete a post
bash scripts/delete-threads.sh "<post_id>" "<access_token>"
```

> **Note:** Deleting posts requires the `threads_delete` permission enabled in your Meta Developer Portal app.

## How it works

1. Checks for scheduled posts due today — offers to ship them first
2. Scans all git repos in your configured path for commits since your last post
3. Claude reads the activity and generates a human-sounding post
4. Post prints to console and saves to `~/.shipnote/posts.md`
5. If Threads is configured, asks "Ship it?" — confirm to post directly
6. Checkpoint updates so next run only covers new activity

## License

MIT

More