Everything between the code in this repo and Pluck being live, in order. Each line is a human step.
- Push the repo to GitHub (
codu-code/pluck, private until launch) and fill the repo links. - Licence: Apache-2.0 for everything (root
LICENSEandNOTICE, every package.json,LICENCEinsite.ts), withTRADEMARKS.mdfor the name and logo, and a DCO sign-off on every commit (CONTRIBUTING.md,.github/workflows/dco.yml). - Fill the legal placeholders (
pnpm testlists any left:scripts/placeholders.test.ts). - Add the registered address of Codú Limited to Privacy once known.
- The connector clip:
ConnectLoopplays in Settings, AI tools and on Connect your AI (scripts/record-loop.mjsrecords it for socials). - Design pass on
docs/design-gaps.md: screens with no board, departures from the boards.
- Settings → General: make
codu-code/pluckpublic. - Settings → Code security: secret scanning and push protection on; Dependabot alerts on; private vulnerability reporting on (
SECURITY.mdlinks to it). - Settings → Branches: protect
main(pull request required, the DCO check required, no force pushes). - Description, topics (
read-it-later,mcp,self-hosted,nextjs,bookmarks) and the social preview image. - Tag
v0.1.0and write its release notes.
- Atlas user, CDK deploy, DNS, SES production access, Vercel project and env:
docs/deploy.md, sections 1 to 3. - The checks in
docs/deploy.md, section 4. - Set
ADMIN_EMAILSandABUSE_EMAIL, and check/adminopens for you. - Atlas backups are on for the cluster (they are for the existing one; confirm the
pluckdatabase is included).
-
pnpm --filter @pluck/extension zip. (Firefox is not planned for launch; the build still supports it.) - Chrome Web Store listing: description, screenshots, a 30-second video, privacy policy
https://getpluck.io/privacy, data-use answers (the page you pluck and its address go to your own Pluck server; nothing else, no selling, no ads). - Once the listings are live, put the store URL in
CHROME_STORE_URL(apps/web/lib/siteUrls.ts;/chromeredirects there).
- Apple developer team in Xcode or EAS for both targets (app and share extension); App Group
group.io.getpluck.appand Keychain groupio.getpluck.sharedon both. - The manual checklist in
docs/ios.md, on a phone. - App Store Connect: privacy labels (the six types in
docs/ios.md: email, photos, content you pluck, user ID, usage data after the in-app yes, crash data not linked; no tracking), the privacy policy URL, a permanent demo account for review (with a pk_live key or a mailbox you can read), in-app account deletion (Settings opens it on the web), screenshots. - Expect one Guideline 2.1 round. If review objects to "Open Pluck to sign in" in the share extension, change it to a line of text (see
docs/ios.md). - Stopgap until approval: an iOS Shortcut named "Pluck" that posts the shared URL with an API key.
- TestFlight first. Once the App Store listing is live, put its URL in
APP_STORE_URLinapps/web/lib/site.ts(it points at the/iphonecoming-soon page until then).
- Publish the stdio bridge under the
@getpluckscope:npm login, thenpnpm publish --access publicfrompackages/mcp-stdio(it builds first). Use pnpm, not npm: only pnpm appliespublishConfig.exports, so the package points atdist, notsrc. - Add
https://getpluck.io/mcpin Claude (web and desktop), ChatGPT, Claude Code and Cursor, and run each of the four prompts once.
- Watch the Vercel logs and the cron for errors for the first hours;
docs/deploy.mdsays what healthy looks like. - Try the home page paste box signed out, sign up, and see the link in the Inbox.