{
  "markdown": "# Shipnote\n\nTurn your daily dev activity into build-in-public posts. A Claude Code plugin.\n\n## What it does\n\nRun `/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.\n\n## Example\n\n```\nYou: /shipnote\n\nShipnote:\n---\nSpent the morning wiring up a CLI plugin from scratch.\nNo framework. No boilerplate. Just markdown files and bash.\nSometimes the simplest tools are the hardest to build.\n---\nPost saved to ~/.shipnote/posts.md\n```\n\n## Install\n\n```bash\nclaude plugins marketplace add https://github.com/PetarStoev02/shipnote.git\nclaude plugins install shipnote\n```\n\nWorks globally from any directory after install. Restart Claude Code to activate.\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `/shipnote` | Generate a post from your recent git activity |\n| `/shipnote-schedule` | Schedule, list, edit, and remove future posts |\n| `/shipnote-log` | View your past posts |\n| `/shipnote-setup` | Configure tone, platform, repos path |\n\n## First Run\n\nThe first time you run `/shipnote`, it walks you through setup:\n- **Tone**: Raw/real, Educational, Hype, or Mix\n- **Posts per run**: 1, 2, or 3\n- **Repos path**: Where your projects live (default: `~/Code/`)\n- **Platform**: Threads, X, or Both\n- **Max length**: Character limit per post (default: 500)\n\nConfig saves to `~/.shipnote/config.json`. Reconfigure anytime with `/shipnote-setup`.\n\n## Auto-Post to Threads\n\nShipnote can post directly to your Threads account. After generating a post, it asks \"Ship it to Threads?\" — confirm and it's live.\n\n### Setup (one-time, ~5 minutes)\n\n1. Go to [Meta Developer Portal](https://developers.facebook.com) and create a new app\n2. Select **\"Other\"** as the use case, then **\"Business\"** as the app type\n3. In your app dashboard, go to **Add Products** → find **Threads API** → click **Set Up**\n4. Go to **Threads API** → **Settings** and add your Threads account as a tester\n5. Open Threads, go to **Settings** → **Account** → **Website permissions** → accept the invite\n6. Back in the developer portal, go to **Threads API** → **Get Started**:\n   - Copy your **Threads User ID** (numeric)\n   - Click **Generate Token**, select your account, and copy the **Access Token**\n7. Run `/shipnote-setup` in Claude Code and enter your credentials when prompted\n\nYour credentials are stored locally in `~/.shipnote/config.json` and never leave your machine.\n\n> **Note:** Access tokens expire after 60 days. If posting starts failing, regenerate your token in the Meta Developer Portal and run `/shipnote-setup` again.\n\n## Post Scheduling\n\nSchedule posts for future dates instead of publishing immediately:\n\n```\nYou: /shipnote-schedule add\nShipnote: What should the post say?\nYou: \"Just automated my entire deploy pipeline...\"\nShipnote: When should it go out?\n  a) Tomorrow  b) In 2 days  c) Pick a date\nYou: a\nShipnote: Scheduled for 2026-04-08.\n```\n\nWhen 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`.\n\nScheduled posts are stored in `~/.shipnote/scheduled.json`.\n\n## Post Management\n\nShipnote includes scripts for managing your Threads posts via the API:\n\n| Script | Description |\n|--------|-------------|\n| `scripts/list-threads.sh` | List your posts with IDs, text, and timestamps |\n| `scripts/delete-threads.sh` | Delete a post by ID |\n\n```bash\n# List your recent posts\nbash scripts/list-threads.sh \"<user_id>\" \"<access_token>\"\n\n# Delete a post\nbash scripts/delete-threads.sh \"<post_id>\" \"<access_token>\"\n```\n\n> **Note:** Deleting posts requires the `threads_delete` permission enabled in your Meta Developer Portal app.\n\n## How it works\n\n1. Checks for scheduled posts due today — offers to ship them first\n2. Scans all git repos in your configured path for commits since your last post\n3. Claude reads the activity and generates a human-sounding post\n4. Post prints to console and saves to `~/.shipnote/posts.md`\n5. If Threads is configured, asks \"Ship it?\" — confirm to post directly\n6. Checkpoint updates so next run only covers new activity\n\n## License\n\nMIT\n",
  "bytes": 4203,
  "sha": "ad90304866caef3e3d147eeebf00ea20a5df98d78c9c445ddee05976fbc2a460",
  "repo_slug": "petarstoev02/shipnote",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_petarstoev02_shipnote_shipnote_bfcbb0bd/readme"
}