feat(marketing/channels): X adapter (OAuth 2.0, threads, media) + shared infra#425
Merged
Conversation
Replaces @ngaf/marketing-channels skeleton with real X adapter. OAuth 2.0 with PKCE (corrected from initial OAuth 1.0a assumption), v2 /2/media/upload endpoint, hard validation, dry-run, 401-refresh path, one-time bootstrapper CLI. Stub metrics() until X tier upgrade. Shared validation/http/registry/dry-run infra for future LinkedIn, Dev.to, Reddit adapters. Dev.to lands next after X. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
19 tasks across 5 phases: shared infra (types, validation, http, dry-run, registry), X auth (state machine + OAuth 2.0 PKCE bootstrapper CLI), X media upload (v2 endpoint), X post (single + thread + media), docs + smoke script, build/test verification, PR. Full TDD; msw/node mocks for all HTTP paths. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
tsx (and npx tsx) do not auto-load .env files; the X adapter reads required env vars directly via process.env. Without --env-file, the bootstrapper and smoke script throw "X adapter missing env vars" even when .env is correctly populated. - npm script `marketing:channels:x:auth` now passes --env-file=.env to tsx - New npm script `marketing:channels:x:smoke` for the smoke runs - MANUAL-SMOKE.md updated to use the npm scripts (so the env-file flag is centralized, not duplicated in user-typed commands) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 tasks
blove
added a commit
that referenced
this pull request
May 18, 2026
* docs(marketing/channels): spec for Dev.to adapter Follow-up to channel-adapters. Extends Draft with optional DraftArticle (title, tags, canonicalUrl, description) — usable by Dev.to v1 and LinkedIn long-form later. Single API key auth, single POST endpoint, real metrics() (Dev.to read API is free). Direct syndication of blog posts with canonical_url set to cacheplane.ai/blog. Publishes immediately (Cowork is the human gate). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs(marketing/channels): plan for Dev.to adapter 10 tasks across 5 phases: extend Draft with DraftArticle, add Dev.to validation rules (TDD), implement post() and metrics() with msw mocks, DevToAdapter class, wire registry, extend smoke script, README + MANUAL-SMOKE updates, build/test verification, PR (stacked on #425). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(marketing/channels): add DraftArticle sub-type to Draft * feat(marketing/channels): add Dev.to validation rules * feat(marketing/channels): Dev.to post() * feat(marketing/channels): Dev.to metrics() — real read API * feat(marketing/channels): add DevToAdapter class * feat(marketing/channels): wire DevToAdapter into registry * feat(marketing/channels): smoke script supports --channel=devto * docs(marketing/channels): document Dev.to adapter --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Sub-spec 2 of the marketing umbrella. Replaces the @ngaf/marketing-channels skeleton with a real X adapter plus shared infra.
Shared infra (reused by future LinkedIn/Dev.to/Reddit adapters):
X adapter:
Tests: 33 tests across 5 spec files (validation: 14, http: 7, dry-run: 2, auth: 5, post: 5). All msw-mocked.
Plan deviations (all caught + handled):
Manual smoke required before merge (per spec): see marketing/channels/MANUAL-SMOKE.md
Spec: `docs/superpowers/specs/marketing/2026-05-17-channel-adapters-design.md`
Plan: `docs/superpowers/plans/marketing/2026-05-17-channel-adapters.md`
Test plan
🤖 Generated with Claude Code