Last updated: 2026-03-25 Purpose: Handoff notes for the next dev/agent picking up work.
Prompt: Address new board + CodeRabbit feedback on content-agent PR #342 Status: completed Changes:
- api: SRP — split
validateEnv.tsintoisContentAgentConfigured.ts+validateContentAgentEnv.ts - api: KISS — refactored
bot.tsto eager singleton variable matching coding-agent pattern - api: KISS — refactored
registerHandlers.tsto module-level side-effect registration (removed flag) - api: DRY — extracted shared
getThreadtolib/agents/getThread.ts(both agents use it) - api: CodeRabbit — added Zod platform validation + JSON error responses in
createPlatformRoutes.tsPRs: recoupable/api#342 (commit2abed88) Notes: 10 files changed, 60 ins / 65 del. Bot init DRY question addressed: both agents already sharecreateAgentState+agentLogger; remaining adapter config differs per agent so further abstraction would violate KISS. Awaiting Code Reviewer re-review.
Prompt: Update SR Dev AGENTS.md to mandate TDD red-green-refactor for API and Tasks codebases Status: completed Changes:
- agents/sr-dev/AGENTS.md: Added "Test-Driven Development (API & Tasks)" section mandating strict red-green-refactor cycle for all work in api and tasks codebases PRs: none (local instruction change) Notes: SR Dev must now write failing tests before any production code in api or tasks. Includes rules for bug fixes (reproduce first) and commit-per-phase guidance.
Prompt: Address 7 board feedback items on PR #342 (YAGNI, SRP, DRY, KISS, restructure) Status: completed Changes:
- api: Removed unused
/api/launchendpoint andlib/launch/(YAGNI) - api: Extracted
parseMentionArgsto own file, renamed handler →registerOnNewMention.ts(SRP) - api: Created shared
lib/agents/createPlatformRoutes.tsfactory used by both coding-agent and content-agent (DRY) - api: Created shared
lib/agents/createAgentState.tsfor Redis/ioredis state (DRY) - api: Moved callback auth into handler to match coding-agent pattern (KISS)
- api: Restructured
lib/content-agent/→lib/agents/content/PRs: recoupable/api#342 Notes: 21 files changed, 206 ins, 511 del. Awaiting Code Reviewer re-review.
Prompt: Test the changes in PR #342 against Vercel deployment preview Status: completed Changes:
- none (testing only)
PRs: none
Notes: Initial test run (11 cases) found 5 failures — content-agent endpoints returned 500 due to missing env vars crashing
getContentAgentBot(). Sr Dev fixed withisContentAgentConfigured()guard and moved auth before bot init (commit9da3aef). Re-test: all 11 cases pass. Results posted on GitHub PR #342 and Slack #code-review thread. Task marked done.
Prompt: Create a QA Tester agent that tests API PRs by running fetch requests against Vercel deployment previews Status: completed Changes:
- mono: Created
agents/qa-tester/AGENTS.md— full instructions for deployment preview testing, endpoint discovery from PR diffs, structured test reporting - mono: Updated
agents/code-reviewer/AGENTS.md— added QA Tester Integration section (trigger QA Tester after approving API PRs) - mono: Updated
agents/sr-dev/AGENTS.md— added QA Tester Feedback section (handle test failure reports) - Paperclip: Submitted hire request for QA Tester agent (f4d6bc75-b9ea-4fca-a456-4b889548ad83, claude-sonnet-4-6, reports to CTO) PRs: none (local instruction changes) Notes: Approval granted (d2fcb05e). Agent ID: f4d6bc75-b9ea-4fca-a456-4b889548ad83, urlKey: qa-tester. Agent workflow: Code Reviewer approves API PR → @-mentions QA Tester → QA Tester runs fetch tests against Vercel preview → reports on GitHub PR + Slack → routes failures to Sr Dev.
Prompt: Review clean PR #342 (superseding #341) for content-agent feature, identify Vercel build failure cause Status: completed Changes:
- none (review only)
PRs: recoupable/api#342 (approved after 1 review cycle)
Notes: Initial review found 2 blocking issues: (1) module-level env validation crashed Vercel build, (2) fragile thread ID parsing. Sr Dev fixed both (commit
5ca4293). Re-review confirmed fixes + all CI checks pass (test, format, Vercel). PR approved and ready to merge. Slack thread updated.
Prompt: Set up automated review loop between Sr Dev and Code Reviewer agents Status: completed Changes:
- agents/code-reviewer/AGENTS.md: Added "Review Loop with Sr Dev" section — when @-mentioned by Sr Dev, review the PR; if changes needed, @-mention Sr Dev back; if approved, @-mention Sr Dev and close
- agents/sr-dev/AGENTS.md: Added "Review Loop with Code Reviewer" section — after creating/updating a PR, @-mention Code Reviewer; when feedback arrives, fix and @-mention again; loop until approved PRs: none (local instruction changes) Notes: Both agents now have symmetric handoff instructions. The loop uses Paperclip @-mentions to trigger heartbeats. Sr Dev starts the cycle by @-mentioning Code Reviewer after pushing a PR. Code Reviewer closes the cycle by @-mentioning Sr Dev with approval/feedback.
Prompt: Fix code review feedback on content-agent PR #341 Status: completed Changes:
- api: Created clean branch
fix/content-agent-cleanfromtestwith only 17 new feature files (removed ~90 JSDoc-only changes) - api: Renamed
handlers/handleContentAgentCallback.ts→registerOnSubscribedMessage.ts(naming collision fix) - api: Added
crypto.timingSafeEqualfor callback secret comparison inhandleContentAgentCallback.ts - api: Fixed all JSDoc lint errors in new feature files PRs: recoupable/api#342 (supersedes #341) Notes: Old PR #341 had 106 files changed (90 unrelated JSDoc noise). New PR #342 has only 17 files. Posted update to Slack thread and commented on #341. Task reassigned to board for review.
Prompt: Review PR recoupable/api#341 and provide feedback Status: completed Changes:
- none (review only)
PRs: recoupable/api#341 (reviewed, request changes)
Notes: PR adds Recoup Content Agent Slack bot +
/api/launchendpoint. Verdict: request changes. Blocking issue: ~90 unrelated JSDoc-only changes inflate PR from ~16 new feature files to 106. Feature code itself is clean. Also flagged naming collision between twohandleContentAgentCallbackfiles and suggestedcrypto.timingSafeEqualfor callback secret. Review comment: recoupable/api#341 (comment)
Prompt: Fix feedback comments on docs PR #78 and update Slack thread Status: completed Changes:
- docs: Linked
POST /api/content-agent/callbackto its API reference page in data flow and endpoints table - docs: Added missing
RECOUP_API_KEYto environment variables table PRs: recoupable/docs#78 (updated, commit2149b60) Notes: Posted summary to #code-review Slack thread. PR still open for review.
Prompt: Create a new agent to review unmerged PRs in Recoup mono repo submodules Status: completed Changes:
- Paperclip: Created "Code Reviewer" agent (QA role, claude-sonnet-4-6, reports to CTO)
- Agent ID: 8dec924a-7c20-4280-985d-f3ea996e0c4e (urlKey: code-reviewer-2)
- Approval: d2fbd753 (approved after revision to add CLEAN code principles)
- mono: Created
agents/code-reviewer/AGENTS.mdwith review instructions (SRP, OCP, DRY, YAGNI, security checklist) - Set instructions path via API PRs: none (instructions file created locally, not yet committed) Notes: Agent is idle and ready for tasks. First revision was requested by board to emphasize CLEAN coding principles — incorporated into capabilities and instructions. Old agent 815e3d4f (Code Reviewer 1) was from the rejected first hire attempt.
Prompt: Scaffold the content-agent Slack bot following the coding-agent pattern Status: completed Changes:
- api: Added
content-agentSlack bot (routes, handlers, bot singleton, callback) onfeature/content-agentbranch - tasks: Added
poll-content-runTrigger.dev task onfeature/content-agentbranch PRs: Branches pushed — PRs need to be created manually (api → test, tasks → main) Notes: New env vars needed:SLACK_CONTENT_BOT_TOKEN,SLACK_CONTENT_SIGNING_SECRET,CONTENT_AGENT_CALLBACK_SECRET. Also needsRECOUP_API_BASE_URLin tasks env. Slack App must be created withapp_mentions:read+chat:writescopes.
Latest commits:
fad189efix: push mono repo root progress files directly to main (#96)e2599e7fix: set cwd to/vercel/sandbox/monofor Claude Code agent (#94)70f345cfeat: increase maxDuration of coding-agent task (#89)6625395feat: injectCLAUDE_CODE_OAUTH_TOKENinto sandbox environment (#86)
Status: Stable. The coding agent pipeline is working end-to-end:
- Sandbox spins up → monorepo cloned → submodules synced
- Claude Code agent runs with the user prompt (cwd =
/vercel/sandbox/mono) - Changes are committed and PRs opened via
pushAndCreatePRsViaAgent - Mono repo root files (e.g.,
PROGRESS.md) are pushed directly tomain
What to know: runClaudeCodeAgent now defaults cwd to /vercel/sandbox/mono. The pushAndCreatePRsViaAgent agent handles both mono root changes (direct push to main) and submodule changes (feature branch + PR).
Latest commits:
6ff735dfeat: add Slack chat bot integration for Record Label Agent (#296)f1d9035feat: add content-creation API endpoints and video persistence (#259)5b1f6bcfeat: admin accounts table endpoint (#288)6c5eda3feat: endpoint to check if authenticated account is admin (#281)
Status: Stable on test. PRs target test branch, not main.
What to know: Slack integration added for Record Label Agent. Content-creation endpoints live. Admin-check endpoint added.
Latest commits:
03714296feat: add navbar item for accounts (#1574)729a9062feat: task page top-left back link (#1573)6efe316dfix: duration stuck at 0ms for in-progress tasks (#1572)eaeb5799feat: polling UI forprompt_sandboxwhenrunIdpresent (#1563)c3611b31feat: move pulse to tasks page as Schedule/Recent/Pulse tabs (#1561)c7fb2744feat: artist connectors UI with tabbed settings modal (#1558)
Status: Stable on test. PRs target test branch.
What to know: Tasks page has been significantly built out — duration display, polling UI for sandbox runs, and pulse moved to tabs. Navbar now has accounts link.
Latest commits:
a09929achore: bump version to 0.1.11e4d4548feat: addrecoup contentcommand suite (#13)07e2b85feat: addmusic analyzecommand (#7)056257afeat: add--accountflag to notifications command (#12)
Status: Stable. Published to npm as 0.1.11.
What to know: recoup content command suite added. music analyze command added. Version auto-bumped via CI.
Latest commits:
05c455cdocs: improve user journey — navigation, quickstart, MCP client configse083670docs: expand MCP page with full tool list and docs search MCP explanationfd82b14feat: add authentication page (#62)
Status: Feature branch feat/mcp-docs-full-tool-list pushed, PR needs to be opened against main.
What changed (2026-03-24 user journey improvements):
- Navigation order fixed: Authentication now comes before MCP in sidebar
- Homepage (
index.mdx): integration path cards (REST/MCP/CLI), clearer "what you can build" framing - Quickstart (
quickstart.mdx): new first example uses Spotify search (works immediately, no existing data needed); Tasks list removed as first example - MCP page (
mcp.mdx): ready-to-paste config snippets for Claude Desktop, Cursor, and VS Code added before TypeScript SDK - API reference intro (
api-reference/introduction.mdx): stripped duplicate auth/base URL content, now links to auth guide
Latest commits:
3fcd006feat: update favicon to match app (#6)11b64e2feat: accounts table with subscription status (#5)5dd9571feat: endpoint to check if account is admin (#3)47295e8feat: Privy login support (#2)b53363ffeat: initial Next.js app setup (#1)
Status: Stable. Basic admin dashboard with Privy auth, accounts table, admin check, and new Org Repos commits table.
What to know: Added /sandboxes/orgs page showing a data table of commits per org sub-module. Key column is "Recent Commits" (latest_commit_messages array) showing up to 5 latest commit messages per repo. Data from GET /api/admins/sandboxes/orgs. New files: types/sandbox.ts (OrgRepoRow), lib/fetchAdminSandboxOrgs.ts, hooks/useAdminSandboxOrgs.ts, components/SandboxOrgs/*, app/sandboxes/orgs/page.tsx, components/Home/OrgReposNavButton.tsx. Nav button added to AdminDashboard.
Prompt: Apply code review feedback on branch agent/-u0ajm7x8fbr-update-or-codebas-1774058502626 — answer Sweets' questions: what domain does marketing deploy to, and why are there multiple apps?
Status: completed
Changes:
marketing: UpdatedAGENTS.md— Deployment section now explicitly states public site deploys tohttps://recoupable.com. Added new "Why Two Apps?" section explainingapps/web(public site, SEO, blog) vsapps/ops(internal marketing ops tooling, private workflows). Pushed to existing branch. PRs: Branchagent/-u0ajm7x8fbr-update-or-codebas-1774058502626pushed torecoupable/marketing— PR targetsmainNotes: The marketing repo was already on this feature branch. AGENTS.md is symlinked as CLAUDE.md — both updated together automatically.
Prompt: Implement PR review comments on recoupable/chat#1592 (streamdown v1→v2 upgrade) Status: completed Changes:
chat: Installed@streamdown/code@1.1.1,@streamdown/math@1.0.2,@streamdown/mermaid@1.0.2.chat: Updatedcomponents/ai-elements/response.tsxto import and passplugins={{ code, math, mermaid }}to<Streamdown>.defaultPluginsdefined as module-level constant for stable reference.chat: Added@sourcedirectives inapp/globals.cssfor the three new plugin packages so Tailwind scans their classes. PRs: recoupable/chat#1592 (branchagent/-u0ajm7x8fbr-update-chat-to-th-1774075858898) Notes:- P1 bot review resolved: streamdown v2 moved code highlighting, math, and mermaid behind optional plugins — without them, code blocks had no syntax highlighting and mermaid/math wouldn't render.
katex/dist/katex.min.csswas already imported inglobals.css— math CSS was pre-existing.
Prompt: Code review for branch agent/-u0ajm7x8fbr-update-chat-to-th-1774075858898 (streamdown v1.1.6 → v2.5.0)
Status: completed — no fixes needed, changes are correct
Changes:
chat: Reviewed 3-file diff:package.json(version bump),app/globals.css(@sourceglob),pnpm-lock.yaml. PRs: Branchagent/-u0ajm7x8fbr-update-chat-to-th-1774075858898— PR needs to be opened targetingtest. Notes:@source dist/*.jsglob is the official v2 recommendation (v2 splits classes across 4 files vs 1 in v1).Streamdowncomponent API is backward compatible —className,children,components,rehypePlugins,remarkPluginsall still present.data-streamdown='code-block'CSS selectors inresponse.tsxstill valid in v2 (confirmed inchunk-BO2N2NFS.js).- v2 ships
streamdown/styles.csswith animation keyframes — not imported, not needed unlessanimatedprop is used.
Prompt: Verify the build works on feature/chartmetric-proxy branch Status: completed Changes:
api: Fixedapp/api/chartmetric/[...path]/route.ts— params must bePromise<{path: string[]}>and awaited in Next.js 15+. The type error.next/types/validator.ts TS2344is now resolved. TypeScript compiles successfully (✓ Compiled successfully). All 5 Chartmetric tests pass. PRs: recoupable/api#318 (feature/chartmetric-proxy → test, existing PR updated) Notes: Build still fails at "collect page data" step due to missing SUPABASE_URL/SUPABASE_KEY env vars in sandbox — pre-existing environment issue, not from our changes. TypeScript itself is clean for the new code.
Prompt: Admin page to view recent Pulse task runs for a specific account (e.g., "What Pulse emails has Alexis received in the past 7 days?") Status: completed Changes:
tasks: CreatedsendPulseTasksub-task (src/tasks/sendPulseTask.ts).sendPulsesTasknow callssendPulseTask.triggerAndWait(..., { tags: ['account:<id>'] })per account so each run is queryable by account.api: UpdatedvalidateGetTaskRunQuery.tsto accept optionalaccount_idquery param. Admins (Bearer) can query any account; org API keys can query org members. New supabase fnselectAllAccountSnapshotsWithOwnersreturns{account_id, github_repo}[].buildSubmoduleRepoMapnow returnsAccountRepoEntry[]with account_id.getOrgRepoStats+getAdminSandboxOrgsHandlerenriched to include email inaccount_repos.docs:openapi.json— addedaccount_idparam toGET /api/tasks/runs, updatedOrgRepoRow.account_reposschema to{account_id, email, repo_url}[].admin: New/accounts/[account_id]page withAccountDetailPage+TaskRunsTableshowing Pulse runs.AccountReposListupdated — each entry shows clickable email →/accounts/[id].sandboxesColumns— account email is now a clickable link to/accounts/[id]. PRs: Branches pushed, PRs need to be created manually (gh not available in sandbox):- tasks:
feature/pulse-sub-task-account-tag - api:
feature/task-runs-account-id-param(target:test) - docs:
feature/task-runs-account-id-param - admin:
feature/account-task-runs-pageNotes: To answer "What Pulse emails has Alexis received?": find Alexis'saccount_idvia/sandboxespage (or/sandboxes/orgs), then go to/accounts/<id>— the page shows allsend-pulse-taskruns for that account with status and timestamps.
Prompt: On /accounts/[account_id], clicking a send-pulse-task row should show the Resend email HTML sent during that task run. Status: completed Changes:
api: Newlib/supabase/memory_emails/selectAccountEmailIds.ts— joins rooms → memories → memory_emails to get Resend email IDs for an account. Newlib/admins/emails/getAdminEmailsHandler.ts+app/api/admins/emails/route.ts—GET /api/admins/emails?account_id=<id>fetches each email from Resend SDK (returns id, subject, to, from, html, created_at). Admin Bearer auth required.admin:TaskRunsTable— added optionalonRunClickprop; rows showcursor-pointerwhen clickable.AccountDetailPage— tracksselectedRunstate, passesonRunClickto pulse runs table. NewPulseEmailModal— fetches all emails for the account viausePulseEmails, matches the email closest to the run's time window (±5 min buffer), renders HTML in a sandboxed iframe. NewusePulseEmailshook (lazy, enabled only when modal opens). NewfetchAccountPulseEmailslib function. PRs: Branches pushed, PRs need to be created manually:- api:
feature/admin-pulse-email-preview(target:test) - admin:
feature/pulse-email-preview(target:main) Notes: Email matching uses the run'sstartedAt/finishedAtwindow ±5 min. Falls back to the most recent email for the account if no match. Thememory_emailstable is the link — emails only appear here ifhandleSendEmailToolOutputswas called after the pulse (i.e., the sandbox chat flow ran through the standard chat handler). If pulse emails aren't showing, check thatmemory_emailsrows are being inserted for pulse runs.
Prompt: Update the Admin README to highlight the API calls used and link to the docs where devs can learn more. Status: completed Changes:
admin: RewroteREADME.md— added "API Calls" section with a table of all 5 endpoints (/api/admins,/api/admins/emails,/api/admins/sandboxes,/api/admins/sandboxes/orgs,/api/tasks/runs), doc links todevelopers.recoupable.com, and a "Where each call is made" breakdown per hook/lib file. Also updated Tech Stack section to include Privy and TanStack React Query. PRs: none (README-only change) Notes: Doc links point tohttps://developers.recoupable.com/api-reference/admins/*and.../tasks/runs. All admin endpoints require Bearer auth (Privy access token).
Prompt: Admin dashboard page to review Privy logins on a daily, weekly, and monthly basis — total count + table of results per time frame. Status: completed Changes:
docs: AddedGET /api/admins/privytoopenapi.json(path +PrivyLoginRow/AdminPrivyLoginsResponseschemas), newapi-reference/admins/privy.mdx, updateddocs.jsonnav.api: Newlib/admins/privy/fetchPrivyLogins.ts— paginates Privy Management API, stops early once users are older than the cutoff. NewvalidateGetPrivyLoginsQuery.ts(period: daily/weekly/monthly, default daily). NewgetPrivyLoginsHandler.ts. Newapp/api/admins/privy/route.ts. 11 unit tests, all green.admin: Newtypes/privy.ts,lib/recoup/fetchPrivyLogins.ts,hooks/usePrivyLogins.ts. New/privypage with period toggle (Daily/Weekly/Monthly), total count badge, and login table (email, Privy DID, timestamp). Added "View Privy Logins" nav button toAdminDashboard. PRs: Branches pushed — PRs need to be opened via GitHub:- docs:
feature/admin-privy-logins-docs→ main: https://github.com/recoupable/docs/pull/new/feature/admin-privy-logins-docs - api:
feature/admin-privy-logins→ test: https://github.com/recoupable/api/pull/new/feature/admin-privy-logins - admin:
feature/privy-logins-page→ main: https://github.com/recoupable/admin/pull/new/feature/privy-logins-page Notes:fetchPrivyLoginspaginatesGET https://api.privy.io/v1/users?order=descand stops early oncecreated_at < cutoff. This keeps the daily call fast (only fetches recent pages). If Privy returns users withoutlinked_accountsemail, the row showsnullfor email.
Prompt: All API keys are personal. If a personal account has access to an org, it can use account_id filtering within that org. Remove the distinction between personal and org API keys for access control. Status: completed Changes:
api: Newlib/organizations/canAccessAccountViaAnyOrg.ts— checks if two accounts share any org membership (2 DB queries: get current account's orgs, then check if target is in any of them). Newlib/organizations/__tests__/canAccessAccountViaAnyOrg.test.ts(4 tests). Updatedlib/auth/validateAccountIdOverride.ts— whenorgIdis null (personal key) and target ≠ self, falls back tocanAccessAccountViaAnyOrg()instead of immediately returning 403. Updatedlib/auth/__tests__/validateAuthContext.test.ts— updated "denies personal key" test to mock the new function, added "allows personal key with shared org" test. All 1526 tests pass. PRs: Branchagent/remove-org-api-key-logicpushed torecoupable/api(target:test):- https://github.com/recoupable/api/pull/new/agent/remove-org-api-key-logic
Notes: Only
validateAccountIdOverride.tswas changed in auth. ThebuildGet*Paramsfunctions that receiveorgIdfrom auth context don't need changes — when a personal key accesses via shared org,orgIdin the auth context staysnull, and the query params builders already handleorgId: nullby not filtering on org. The access gate is purely invalidateAccountIdOverride.
Prompt: Document both MCP servers in docs: (1) the Mintlify docs search MCP and (2) the Recoup API MCP with a full list of all tools. Status: completed Changes:
docs: Rewrotemcp.mdx— now explains both servers (Mintlify docs search MCP via contextual menu, and the Recoup API MCP athttps://recoup-api.vercel.app/mcp). Documents all 44 tools grouped by category (Artists, Chats, Tasks, Pulses, Catalogs, Spotify, YouTube, Search, Images, Video, Audio, Files, Communication, Segments, Sandboxes, Utilities). Removed outdatedrun_sandbox_commandentry (tool doesn't exist). Added connection snippet and two call examples. PRs: Branchfeat/mcp-docs-full-tool-listpushed — open PR via: https://github.com/recoupable/docs/pull/new/feat/mcp-docs-full-tool-list Notes: Tool list was derived from allregister*Tool.tsfiles inapi/lib/mcp/tools/. Therun_sandbox_commandin the old mcp.mdx was stale — no such tool is registered. If new tools are added to the API, update this page.
SUBMODULE_CONFIGintasks/src/sandboxes/submoduleConfig.tsdoes not includeadminormarketing— if the agent modifies those submodules, PRs won't be auto-created. Consider adding them.- No
PROGRESS_USAGE.mdexists yet — if this file should have a companion usage guide, create it. - The
progress.txtinit file referenced in the task prompt was not found — likely hasn't been created yet, or was intended as a seed for future use.
chat (frontend) → api (backend) → Supabase (database)
↘ tasks (async Trigger.dev jobs)
- Coding agent flow: Trigger.dev task → Vercel Sandbox → Claude Code CLI (
claude -p --dangerously-skip-permissions) → git commit/push → PR viagh - PRs for
apiandchattargettestbranch; all others targetmain - Admin check: POST
/api/admins/check— verifies if authenticated Privy user is in admins table
Prompt: Update docs for GET /api/admins/privy to include the latest API response — missing default of all for period and missing response fields (total_new, total_active, total_privy_users)
Status: completed
Changes:
docs: Updatedapi-reference/openapi.json— addedalltoperiodenum (set as default, replacing incorrectdailydefault); added missing 200 response fields:total_new,total_active,total_privy_users; updated endpoint description to reflect actual API behavior. PRs: Branchagent/-u0ajm7x8fbr-docs---added-resp-1773769254740pushed torecoupable/docs— PR targetingmain. Notes: Actual API code (validateGetPrivyLoginsQuery.ts) defaultsperiodto"all"(no date filter). Handler returns{ status, total, total_new, total_active, total_privy_accounts, logins }.
Prompt: Change total_privy_users to total_privy_accounts in the GET /api/admins/privy OpenAPI spec.
Status: completed
Changes:
docs: Renamedtotal_privy_users→total_privy_accountsinapi-reference/openapi.json(required field list, property name, and description). PRs: Pushed to existing branchagent/-u0ajm7x8fbr-docs---added-resp-1773769254740onrecoupable/docs. Notes: Matches the API response field naming convention (accounts, not users).
Prompt: Review docs from a user journey perspective — are they clear for Humans and Agents? Status: completed Changes:
docs: Navigation order fixed — authentication before MCP in sidebardocs: Homepage (index.mdx) — integration path cards (REST API / MCP / CLI), clearer "what you can build" framing for humans and agentsdocs: Quickstart (quickstart.mdx) — first example now uses Spotify search (no existing data needed, works immediately); removed Tasks list as first example; added MCP in next stepsdocs: MCP page (mcp.mdx) — added copy-paste config snippets for Claude Desktop, Cursor, and VS Code before the TypeScript SDK; moved tool reference after connection guidesdocs: API reference intro (api-reference/introduction.mdx) — removed duplicate auth/base URL content; now a clean page linking to auth guide PRs: Branchfeat/mcp-docs-full-tool-listpushed torecoupable/docs. PR needs to be opened againstmain. Notes:ghCLI not available in this sandbox — PR must be created manually or via the next agent run that has GitHub access.
Status: completed Changes:
- api: Expanded SUPPORTED_TOOLKITS from 4 to 12 connectors (added Gmail, Google Calendar, Spotify, Instagram, Twitter/X, YouTube, Slack, LinkedIn)
- api: Expanded ALLOWED_ARTIST_CONNECTORS to include spotify, instagram, twitter, youtube (in addition to tiktok)
- api: Updated CONNECTOR_DISPLAY_NAMES with 8 new entries
- api: Updated 3 test files — all 13 tests pass
PRs: recoupable/api#337
Notes: PR targets
testbranch. Changes are in feature/composio-more-connectors branch.
Prompt: Add tag filter chips to admin coding page with new API endpoint for filter options Status: completed Changes:
api: Added optionaltagquery param toGET /api/admins/coding/slack(filters by user_id); created newGET /api/admins/coding-agent/slack-tagsendpoint returning distinct Slack users; added 5 passing testsadmin: AddedSlackTagOption/SlackTagOptionsResponsetypes; createdfetchSlackTagOptionsanduseSlackTagOptions; updateduseSlackTagsto accept optionaltagparam; updatedCodingAgentSlackTagsPagewith clickable filter chips, toggle, and clear-filter UX PRs:- api: recoupable/api#338 (base: test)
- admin: recoupable/admin#23 (base: main)
Notes: Admin lint was non-functional due to pre-existing monorepo root eslint.config.js missing
@eslint/jspackage — unrelated to this task. API lint errors in my new files match the same pattern as existing route files (pre-existing jsdoc rules). All new tests pass.
Prompt: Create a new Sr Dev agent that handles coding tasks delegated by the CTO, working closely with the Code Reviewer agent Status: completed Changes:
mono/agents/sr-dev/AGENTS.md: Created instructions file for the Sr Dev agent covering code standards, git workflow, build commands, and Code Reviewer integration PRs: none Notes: Hire approved by board. Sr Dev agent (81d2b822-486a-4d29-8d43-87d83d740239) is active and idle. Workflow: CTO delegates coding tasks → Sr Dev implements → Code Reviewer reviews → feedback tasks routed back to Sr Dev.