6 tasks: create 2 pinboards, update 3 skills (linkedin-post, linkedin-carousel, pilot-prep), end-to-end verification. Skills dir is not a git repo — file edits only. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9.5 KiB
Paste MCP Phase 1 Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Wire the Content Outbox and Call Prep pinboards into the linkedin-post, linkedin-carousel, and pilot-prep skills so every approved draft and call brief lands in Paste automatically.
Architecture: Two Paste pinboards are created first. Each skill gets one new instruction block at its natural completion point — after copy-review passes (linkedin-post), after final output is rendered (linkedin-carousel), and after the briefing is assembled (pilot-prep). Skills look up pinboard IDs by name via mcp__paste__list_pinboards at runtime rather than hardcoding IDs, so the wiring survives pinboard recreation.
Tech Stack: Paste MCP (mcp__paste__create_pinboard, mcp__paste__list_pinboards, mcp__paste__create_item), skill SKILL.md files (plain markdown instruction files, no code).
Task 1: Create Content Outbox Pinboard
Files:
-
No file changes — Paste MCP call only
-
Step 1: Create the pinboard
Call mcp__paste__create_pinboard with name Content Outbox.
Expected response:
{ "id": "content_outbox_XXXXXXXX-...", "name": "Content Outbox", "itemCount": 0 }
- Step 2: Record the pinboard ID
Note the id returned. It will be referenced in verification steps.
- Step 3: Verify via list
Call mcp__paste__list_pinboards. Confirm Content Outbox appears in the list alongside Useful Links.
Task 2: Create Call Prep Pinboard
Files:
-
No file changes — Paste MCP call only
-
Step 1: Create the pinboard
Call mcp__paste__create_pinboard with name Call Prep.
Expected response:
{ "id": "call_prep_XXXXXXXX-...", "name": "Call Prep", "itemCount": 0 }
- Step 2: Verify via list
Call mcp__paste__list_pinboards. Confirm both Content Outbox and Call Prep now appear.
- Step 3: Commit a note
cd /Users/sttil-solutions/projects/signal
git add docs/superpowers/plans/2026-06-09-paste-phase1.md
git commit -m "Add Paste Phase 1 implementation plan"
Task 3: Update linkedin-post Skill
Files:
- Modify:
/Users/sttil-solutions/.claude/skills/linkedin-post/SKILL.md
The current Step 6 handles NocoDB update after Kisa confirms the post is live. A new step goes between Step 5 (Iterate) and Step 6 (Confirm and Update NocoDB) — it fires when the draft is approved, not after posting. The Outbox is a staging layer: Kisa pastes from Paste to LinkedIn, then confirms to Claude, who updates NocoDB.
- Step 1: Add the Paste push step
In /Users/sttil-solutions/.claude/skills/linkedin-post/SKILL.md, insert the following block between the ## Step 5: Iterate section and ## Step 6: Confirm and Update NocoDB:
---
## Step 5.5: Push Approved Draft to Paste Content Outbox
When Kisa says the draft is good (approval signals: "that works", "perfect", "use that", "looks good", or similar) — before waiting for posting confirmation:
1. Call `mcp__paste__list_pinboards` to get the current pinboard list.
2. Find the pinboard named `Content Outbox` and get its `id`.
3. Call `mcp__paste__create_item` with:
- `content`: the full approved post text (exactly as drafted — no extra formatting)
- `list_id`: the Content Outbox id from step 2
4. Confirm with one line: "Draft saved to Paste Content Outbox — paste directly to LinkedIn when ready."
Do not push unreviewed drafts. Only push after Kisa signals approval.
- Step 2: Verify the file change
Read the file. Confirm the new Step 5.5 block appears between Step 5 and Step 6. Confirm Step 6 is unchanged.
- Step 3: Smoke test
Invoke linkedin-post with a test prompt: "draft a short test post about documentation gaps."
After it drafts and copy-review passes, say "that works."
Confirm the skill calls mcp__paste__list_pinboards and then mcp__paste__create_item.
Call mcp__paste__search with pinboard_id set to the Content Outbox id — confirm the test draft appears.
Delete the test item via mcp__paste__delete_item.
- Step 4: Confirm file saved
Read the first 10 lines of /Users/sttil-solutions/.claude/skills/linkedin-post/SKILL.md to confirm the edit persisted. No git commit needed — .claude/skills is not a git repo.
Task 4: Update linkedin-carousel Skill
Files:
- Modify:
/Users/sttil-solutions/.claude/skills/linkedin-carousel/SKILL.md
The carousel output is a rendered PDF. The Paste push captures the text copy (hook, per-slide headlines and body) — not the PDF file. This gives Kisa a reviewable text record and reusable caption copy.
- Step 1: Find the final output step
Read /Users/sttil-solutions/.claude/skills/linkedin-carousel/SKILL.md in full. Identify the last step — the one where the rendered PDF path is reported to Kisa.
- Step 2: Add the Paste push block
Immediately after the final output/delivery step, append:
---
## Final Step: Push Slide Copy to Paste Content Outbox
After confirming the PDF has rendered:
1. Assemble the carousel text copy in this format:
CAROUSEL: [Title]
HOOK: [Hook text from slide 1]
SLIDE 2: [Headline] [Body copy if any]
SLIDE 3: [Headline] [Body copy if any]
[... continue for all slides ...]
CTA: [Final slide CTA text]
2. Call `mcp__paste__list_pinboards`. Find `Content Outbox` and get its `id`.
3. Call `mcp__paste__create_item` with:
- `content`: the assembled text copy above
- `list_id`: the Content Outbox id
4. Confirm with one line: "Carousel copy saved to Paste Content Outbox. PDF at [path]."
- Step 3: Verify the file change
Read the file. Confirm the new block appears after the final delivery step and the format template is intact.
- Step 4: Confirm file saved
Read the last 20 lines of /Users/sttil-solutions/.claude/skills/linkedin-carousel/SKILL.md to confirm the new block is present.
Task 5: Update pilot-prep Skill
Files:
- Modify:
/Users/sttil-solutions/.claude/skills/pilot-prep/SKILL.md
The current Step 5 is "Offer a Practice Question (Optional)." The Paste push is a new Step 6 that fires after the briefing is assembled and the practice question is offered — so the full briefing is in Paste before the call, not just the summary.
- Step 1: Add the Paste push step
In /Users/sttil-solutions/.claude/skills/pilot-prep/SKILL.md, add the following block after ## Step 5: Offer a Practice Question (Optional):
---
## Step 6: Push Briefing to Paste Call Prep
After delivering the briefing and the Step 5 practice question offer:
1. Call `mcp__paste__list_pinboards`. Find `Call Prep` and get its `id`.
2. Call `mcp__paste__create_item` with:
- `content`: the full briefing text (all sections from Step 3, exactly as delivered)
- `list_id`: the Call Prep id
3. Confirm with one line: "Briefing saved to Paste Call Prep — available in your clipboard on any device before the call."
This step is not optional. Push every briefing. Kisa clears the pinboard after the call.
- Step 2: Verify the file change
Read the file. Confirm Step 6 appears after Step 5. Confirm Steps 1-5 are unchanged.
- Step 3: Smoke test
Invoke pilot-prep with: "prep for my call with Robert Robinson."
After the briefing is delivered, confirm the skill calls mcp__paste__list_pinboards and mcp__paste__create_item.
Call mcp__paste__search with pinboard_id set to the Call Prep id — confirm the briefing appears.
Do not delete the test item — this is a real prep if Robert Robinson's call is upcoming.
- Step 4: Confirm file saved
Read the last 20 lines of /Users/sttil-solutions/.claude/skills/pilot-prep/SKILL.md to confirm Step 6 is present.
Task 6: End-to-End Verification
- Step 1: Verify pinboard state
Call mcp__paste__list_pinboards. Confirm:
-
Content Outboxexists -
Call Prepexists -
Useful Linksstill exists (default pinboard unchanged) -
Step 2: Verify skill descriptions are updated
Check that the description: frontmatter in each updated SKILL.md still accurately describes the skill. No change needed unless the description explicitly said "does not save anywhere."
- Step 3: Update the spec to mark Phase 1 complete
In /Users/sttil-solutions/projects/signal/docs/superpowers/specs/2026-06-08-paste-mcp-ambient-layer-design.md, update the Phase 1 status line to:
### Phase 1: Content Outbox + Call Prep
**Trigger:** ~~Implement now~~ **COMPLETE — 2026-06-09**
- Step 4: Final commit
cd /Users/sttil-solutions/projects/signal
git add docs/superpowers/specs/2026-06-08-paste-mcp-ambient-layer-design.md
git commit -m "Mark Paste MCP Phase 1 complete"
Notes
- Skills are instruction files (markdown), not application code. No unit tests apply. Verification is behavioral: invoke the skill, observe Paste.
- The
.claude/skillsdirectory may not be a git repo. Check withgit -C /Users/sttil-solutions/.claude/skills statusbefore committing. If not a repo, commits are skipped — file changes are sufficient. - Paste auth must be active for smoke tests to work. If tools are unavailable, re-authenticate via
/mcpin a separate Claude Code window before running verification steps. - Phase 2 (Brand Vault) does not start until Phase 1 has been used across at least 2-3 real posts and calls and confirmed working.