Back to Library
Stage 03 / 4D build

Slack Session Auto-Drafter.

Cohort session posts draft themselves from the prior session's transcript and the upcoming agenda. The Slack CLI Toolkit posts the draft to a channel as a named bot, you read it, edit one or two lines, and ship. The recurring "what should I post before this session?" tax goes away.

What you'll have
  • undefined undefined
  • undefined undefined
  • undefined undefined
Slack
4D
Build time ~30 min
Track 4D required
Touches Slack CLI Toolkit · cairns-ingest · cairns-query · Bot identity · Vault transcripts and agendas
Source blueprints/ (Slack CLI #10) + .claude/skills/cairns-ingest + .claude/skills/cairns-query
One-click start

Draft your first session post.

Hand the pieces off to Claude in one paste. The agent reads the Slack CLI Toolkit setup, your transcript ingest skill, and your vault query skill, then walks one real upcoming session through the full draft-and-post-to-a-bot-channel flow.

How this fits in the OS.

Depends on

The Slack CLI Toolkit installed via Blueprint #10 (see Borrow a Working CLI), a bot token saved in Infisical or 1Password, the cairns-ingest skill in your workshop repo, and the cairns-query skill on top of a vault that already holds the prior session's transcript and the upcoming session's agenda.

Uses

Two skills (cairns-ingest for the prior transcript, cairns-query for the agenda), one CLI (the Slack CLI Toolkit) posting as a named bot identity, and one review channel where the draft lands before anyone in the cohort sees it.

Unlocks

A drafted post for every recurring session you run, grounded in what the room actually covered last time and what's on deck this time. The pattern transfers to any other recurring message you currently write by hand.

What you'll build.

The auto-drafter is three pieces you already have, stitched together with a single prompt. The cairns-ingest skill preserves the prior session's transcript at L3 and writes a dense L2 Chain of Density Card Catalog Layer (Card Catalog Layer for short) card. The cairns-query skill reads that L2 Chain of Density Card Catalog Layer card plus the upcoming session's agenda out of the same vault. The Slack CLI Toolkit posts the result into a review channel as the bot, not as you. You read the draft, edit one or two lines, and decide whether to repost from your own account or leave the bot's version up.

The point of the build is the seam between the second brain and the place where the team actually talks. Most session posts get written cold every week because the prior session's notes live in one tool and the agenda lives in another and stitching them together is a small annoying tax. The auto-drafter pays that tax in your sleep.

What changes for you.

The drafted post is the easy part. The bigger thing is the shift in how you treat recurring writing. Three internal shifts you'll feel:

  • Recurring posts stop starting from a blank page. Every session post draft arrives already grounded in last session's transcript and this session's agenda. You edit, you don't compose from scratch.
  • Drafts get a separate identity from you. The bot posts the draft. The bot is clearly the bot. You never accidentally publish a half-finished idea because the message went out under your handle. The review channel is the staging area; the cohort channel is the published surface.
  • The vault becomes the team's memory, not just yours. Once the drafter runs reliably, you start ingesting every session transcript automatically. The L2 Chain of Density Card Catalog Layer cards stop being personal notes and start being the source the team draws from. Continuity across sessions stops depending on whoever happened to attend last time.

Before you start.

Three prerequisites:

  • The Slack CLI Toolkit is installed. Blueprint #10 from the team's blueprints channel, walked through on the Borrow a Working CLI card. The toolkit posts as a named bot identity, which is the load-bearing distinction for this build. Posting as you would defeat the whole point.
  • The prior session's transcript is in your vault. Ingested through cairns-ingest, so the verbatim sits at L3 and a dense card sits in the L2 Chain of Density Card Catalog Layer. If you have not run that yet, the Meeting Transcript Processor is the right entry point. It wraps the same skill with a meeting-shaped extraction layer on top.
  • The upcoming session's agenda is queryable. A meeting note, an L1 waypoint, or a markdown file under cairns/L2/cards/. Anywhere cairns-query can find it. If the agenda lives only in your head, write it down before you build the drafter. The skill cannot pull what isn't recorded.

No new credentials beyond what Blueprint #10 already set up. The Slack bot token stays in Infisical or 1Password.

Walk through the build.

Step 01

Confirm the Slack CLI is wired and the bot is named

~5 min

The whole point of using the toolkit is that posts arrive labeled as the bot, not as you. Confirm that before you build anything on top.

Paste into Claude Code

Run a Slack CLI Toolkit smoke command. List the channels the bot can see, fetch the bot's display name, and tell me back: (1) the bot's name as the cohort will see it, (2) a list of channels the bot has access to, (3) which channel I should treat as the review channel for draft posts. I want to confirm the toolkit is wired and the bot identity is correct before we draft anything.

The agent does this for you. You don't run the API calls by hand. Claude calls the CLI, reads the output, and reports back. If the toolkit isn't installed or the token is missing, the smoke command fails clearly and you know to go install Blueprint #10 first.

The bot name looks generic or wrong? The Slack app you created in the Blueprint #10 install controls the display name. Open Slack's app settings, rename the bot, and re-run the smoke command. Names like session-drafter or cohort-bot make the staging surface obvious to everyone watching the review channel.
Step 02

Pick the session you want to draft for

~3 min

Don't pick a hypothetical. Pick the next real cohort session on the calendar. The point of the first run is to feel the value of a drafted post landing in your review channel, not to prove the skill chain works.

Hold three things in mind before you start the build prompt: which session this is, which channel the final post belongs in, and which channel the bot should post the draft into for review. The draft channel and the published channel are not the same.

Step 03

Pull the prior session's L2 Chain of Density Card Catalog Layer card

~5 min

The prior session's transcript should already be in your vault as an immutable L3 raw plus a dense L2 Chain of Density Card Catalog Layer card. The drafter reads the L2 Chain of Density Card Catalog Layer card first, not the raw. The L2 Chain of Density Card Catalog Layer card has the dense summary, the action items, the open questions, and the retrieval hooks the chain-of-density pass produced.

L3 RAWVerbatim prior session transcript. Drafter does not read this unless the L2 Chain of Density Card Catalog Layer card points at a quote or detail the draft actually needs.
L2 CARDDense summary, action items, open questions, retrieval hooks. This is what the drafter reads to know what carried over.
AGENDAUpcoming session's agenda, pulled by cairns-query. Meeting note, L1 waypoint, or L2 Chain of Density Card Catalog Layer card. The drafter needs an agenda source it can name.
L1 first, L2 Chain of Density Card Catalog Layer second, L3 only if needed. Same retrieval cascade the cairns-query skill enforces everywhere else.

The agent does this for you. You don't grep the vault. cairns-query reads cairns/L1/INDEX.md first, picks the right L2 Chain of Density Card Catalog Layer card by date and session slug, and reports what it pulled. If the prior session has no L2 Chain of Density Card Catalog Layer card, the drafter stops and tells you to run the Meeting Transcript Processor on the transcript first.

Step 04

Pull the upcoming session's agenda

~5 min

Same query skill, different target. The agenda might live as a meeting note in your vault, as an L1 waypoint under cairns/L1/personal/, or as its own L2 Chain of Density Card Catalog Layer card. The drafter does not care which, as long as the agenda is recorded somewhere queryable.

The drafter reads the agenda and asks you to confirm before drafting. Two things matter at this checkpoint: the agenda items are right, and nothing important is missing. If the agenda is empty, the drafter stops. Drafting a session post around an empty agenda just produces filler the cohort has to wade through.

Step 05

Compose the draft in plain English

~5 min

The draft is short. Four pieces, in order:

  • What carried over from last session. One or two lines drawn from the prior session's L2 Chain of Density Card Catalog Layer card. Action items still open, decisions that need follow-up, questions the room left unresolved.
  • The agenda for this session. The items pulled by cairns-query in Step 04, in the order they'll run.
  • Anything to bring or read first. Links, prework, prereqs. Pulled from the agenda if listed, omitted if not.
  • A single clear ask. If there is one. RSVP, a question to think about, a file to look at. If there isn't a clear ask, skip the line. Drafts without an ask are fine.

Voice should sound like the team, not a marketing email. The drafter has read your prior session transcripts, so it can match how the room actually talks. If the first draft sounds off, tell the agent which line is wrong and ask for a rewrite. The voice tunes itself after a couple of corrections.

Step 06

Post to the review channel as the bot

~5 min

The Slack CLI Toolkit posts the draft into your review channel, posting as the named bot. Not as you. This is the load-bearing point of the whole build. The draft is clearly a draft because the bot is clearly the bot.

Posts as bot, not as you

Compare with a connector-style integration that posts as whoever connected it. With Blueprint #10's bot identity, the draft message header shows the bot's name and label every time. There is no scenario where you accidentally publish a draft under your own handle because the toolkit only knows how to be the bot.

The drafter posts the draft, reports the channel and the message permalink, and stops. Reading and approving is on you. The bot does not have permission to repost into the cohort channel and should not be given that permission for this build. The review-then-publish split is the safety net.

The post never lands? The bot is probably not invited to the review channel. Slack bots can only post into channels they've been explicitly added to. In Slack, open the channel, type /invite @your-bot-name, and rerun the post step.
Step 07

Read back, edit, decide whether to repost

~5 min

Open the review channel. Read the draft from the bot's post. Two outcomes are healthy:

  • The draft is close enough. Leave the bot's post up in the review channel as a record, and repost the text from your own account into the cohort channel. The bot served as a structured draft; your post is the published version.
  • The draft needs work. Tell the agent which line is wrong and ask for a rewrite. The drafter can repost the corrected version into the review channel as a new message, so the review channel ends up as a small history of revisions. Once a revision is right, publish from your own account.

The diagnostic question after your first session post: did the cohort channel get a post that read like you, on time, without you having to start from a blank page? If yes, the drafter is wired. If the post still felt like it took just as long to ship, the L2 Chain of Density Card Catalog Layer card was probably thin or the agenda was missing pieces. Both are vault problems, not drafter problems.

When it works.

You'll see four things on a successful run:

  • The CLI smoke command returns a bot identity and a channel list. The bot's name matches what the cohort will see in the post header. The review channel is in the list.
  • cairns-query returns the prior session's L2 Chain of Density Card Catalog Layer card and the upcoming session's agenda. Both sources are named back to you before any drafting happens.
  • The bot posts the draft into the review channel. The message header shows the bot's name. The permalink works. The cohort channel has nothing in it yet.
  • You edit one or two lines and repost from your own account. The cohort sees a polished post from you. The review channel holds the draft history. Total elapsed time is small because the blank-page tax is gone.

The compounding test: run the drafter for three sessions in a row. By the third one, you should be editing fewer lines and shipping faster. If the third draft still needs heavy rewrites, the prior session L2 Chain of Density Card Catalog Layer cards are too thin. Tighten the chain-of-density pass on those before you blame the drafter.

If you get stuck.

Common failure modes, ranked by how often they bite people on the first run:

  • The bot token is missing or stale. Most common on the first run after a token rotation. The Slack CLI smoke command fails with an auth error. The fix: refresh the bot token in Infisical or 1Password yourself, then rerun the smoke command. Do not paste the real token into chat.
  • The bot is not in the review channel. Slack bots can only post into channels they've been invited to. The post step fails with a not-in-channel error. In Slack, open the channel and type /invite @your-bot-name, then rerun the post step.
  • The bot token scope is too narrow. Blueprint #10's setup includes the scopes the toolkit needs (chat:write, channels:read, and a few more). If you trimmed the scopes during the app setup, the post step fails. Reopen the Slack app config, add the missing scope, reinstall the app to the workspace to grant the new scope, and rotate the token.
  • The prior session's L2 Chain of Density Card Catalog Layer card is missing. cairns-query returns nothing and the drafter stops. The fix: run the Meeting Transcript Processor on the prior session's transcript first, then come back. Drafting a session post without the prior context is the kind of empty-calorie message the cohort will skip anyway.
  • The agenda is empty or vague. The drafter pulls the agenda and asks you to confirm before drafting. If it's empty, the drafter stops on purpose. Write the agenda down in your vault (a meeting note or a fresh L2 Chain of Density Card Catalog Layer card), then rerun.
  • The draft voice sounds like a marketing email. The first run usually does. Tell the agent which line is wrong and ask for a rewrite that matches how the team actually talks. The voice tightens after a couple of corrections. If it still feels off after three sessions, the prior session L2 Chain of Density Card Catalog Layer cards probably don't preserve enough of the room's actual phrasing for the agent to pick it up.

Still stuck? Post the prompt, the agent's response, and what you expected in the workshop Slack. Someone on the team has hit the same thing.

Where to go next.

You shipped a drafted session post grounded in what the room actually said last time. The natural next moves on the shelf:

Back to the Library