Skip to content

feat(ce-promote): add ce-promote skill for post-ship announcement copy#888

Merged
tmchow merged 1 commit into
mainfrom
nervous-gould-7bce37
Jun 3, 2026
Merged

feat(ce-promote): add ce-promote skill for post-ship announcement copy#888
tmchow merged 1 commit into
mainfrom
nervous-gould-7bce37

Conversation

@imwm
Copy link
Copy Markdown
Collaborator

@imwm imwm commented Jun 1, 2026

What & why

After a feature ships, the user-facing messaging — a tweet/thread, a changelog blurb, a LinkedIn post, an email — is usually written later, by someone without the shipping context. ce-promote pulls that drafting into the engineering workflow: it figures out what shipped (from a description, or derived from the merged PR / diff / changelog / commits), picks sensible channels, and produces copy-pasteable drafts. It drafts only — never posts, publishes, or touches git.

Design notes

  • Lightweight footprint. Two product files (SKILL.md + one reference) plus two README rows; no new dependencies.
  • Spiral is an optional enhancement, not a dependency. With the Spiral CLI installed and authed, drafts are voice-matched and humanized. Without it, ce-promote ships a lite layer of editorial & social-media expertise to write strong copy on its own — modest by design (brand-voice matching, humanization, saved styles, and campaign orchestration are where the Spiral path goes further).

Spiral integration details

  • Three-state detection (ready / installed-unauthed / absent). Ready → voice-matched via spiral write … --instant --json.
  • Agent-driven sign-in, no key in chat: when Spiral is installed but unauthed, the agent runs spiral login --json (non-blocking), shares the returned auth_url, the user approves in a browser, and the agent polls spiral auth status --json until authenticated: true. The API key is exchanged server→CLI and never touches the agent's transcript or logs. Returning users (already_authenticated) skip straight through. Requires @every-env/spiral-cli ≥ 1.8.0; older CLIs degrade gracefully (suggest update, or the user signs in themselves).
  • First-run nudge, never naggy: the setup offer is shown once; a single dismissal records a per-repo opt-out so this per-ship skill never re-prompts.
  • Encodes Spiral's multi-channel / cue-word behavior: campaign phrasing returns one set of drafts per channel and ignores --num-drafts; single-channel variations need --num-drafts and must avoid cue words. Verified live.

Testing

  • Validated live against the real Spiral CLI: single-channel variations and multi-channel campaign both behave as documented.
  • Simulated the unauthed / absent / opted-out states; confirmed the nudge fires once and the opt-out suppresses it on later runs.
  • bun test (frontmatter + shell-safety) green; bun run release:validate in sync (39 skills).

Open for review (draft)

  • Per-repo opt-out lives in the per-worktree gitignored config, so a new worktree could re-show the offer once. Acceptable, or should it be user-global?
  • The agent sign-in path depends on @every-env/spiral-cli ≥ 1.8.0 (agent-aware spiral login, shipping in EveryInc/spiral-next#1182). The skill degrades gracefully on older CLIs.
  • Comfort check on naming the Spiral CLI / @every-env/spiral-cli package in an OSS plugin.

@imwm imwm force-pushed the nervous-gould-7bce37 branch from 991c8bb to 55b896c Compare June 1, 2026 04:56
Copy link
Copy Markdown
Collaborator

@tmchow tmchow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the skill end-to-end — really clean work. The graceful-degradation (three-state detect, never-block-on-Spiral) and the drafts-only safety stance are the strong parts, and Path B is substantive rather than a degraded teaser. Two small change requests on the opt-out config write before merge (inline). Everything else is polish.

Comment thread plugins/compound-engineering/skills/ce-promote/references/spiral-cli.md Outdated
Comment thread plugins/compound-engineering/skills/ce-promote/references/spiral-cli.md Outdated
@imwm imwm force-pushed the nervous-gould-7bce37 branch from 55b896c to f984658 Compare June 1, 2026 20:04
@imwm imwm marked this pull request as ready for review June 1, 2026 22:34
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f984658cb4

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread plugins/compound-engineering/skills/ce-promote/references/spiral-cli.md Outdated
@imwm imwm force-pushed the nervous-gould-7bce37 branch from f984658 to 786dc9e Compare June 1, 2026 22:41
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 786dc9eeeb

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread plugins/compound-engineering/skills/ce-promote/references/spiral-cli.md Outdated
@imwm imwm force-pushed the nervous-gould-7bce37 branch from 786dc9e to cf31ef9 Compare June 3, 2026 01:18
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cf31ef9a8b

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread plugins/compound-engineering/skills/ce-promote/references/spiral-cli.md Outdated
@imwm imwm force-pushed the nervous-gould-7bce37 branch from cf31ef9 to aa6e9b6 Compare June 3, 2026 01:46
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: aa6e9b60e4

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread plugins/compound-engineering/skills/ce-promote/references/spiral-cli.md Outdated
@imwm imwm force-pushed the nervous-gould-7bce37 branch from aa6e9b6 to 5d2c654 Compare June 3, 2026 01:50
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5d2c654057

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread plugins/compound-engineering/skills/ce-promote/SKILL.md Outdated
@imwm imwm force-pushed the nervous-gould-7bce37 branch from 5d2c654 to b61cb89 Compare June 3, 2026 01:54
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b61cb89813

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

spiral auth status 2>/dev/null
```

Classify into one of three states. Spiral is **ready** only if the binary exists AND auth status shows an authed key (`spiral_sk_...`):
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Detect authenticated Spiral from JSON status

For already-authenticated Spiral 1.8 users, the published agent flow reports readiness via spiral auth status --json returning authenticated: true / status: authenticated, while this check only treats output containing spiral_sk_... as ready. If the status command does not print a raw token, ready users are misclassified as unauthed and get the setup/opt-out prompt instead of Path A; use the JSON authenticated flag (or spiral login --json's already_authenticated) for readiness.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed (uniform --json approach across the implementation)

@imwm imwm force-pushed the nervous-gould-7bce37 branch from b61cb89 to 77b37c2 Compare June 3, 2026 03:14
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 77b37c2c27

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread plugins/compound-engineering/skills/ce-promote/SKILL.md Outdated
Generate user-facing announcement copy (X post/thread, changelog blurb,
LinkedIn, email, blog, demo script) for a feature that just shipped,
right inside the engineering workflow. Spiral-agnostic by default;
voice-matched via the optional Spiral CLI when installed and authed.

- Derives what shipped from a description or from the merged PR / diff /
  changelog / commits, and leads with user value over implementation.
- Three-state Spiral detection (ready / unauthed / absent) with a
  one-time, declinable first-run setup nudge; a single dismissal records
  a per-repo opt-out so this per-ship skill never nags.
- Encodes Spiral's multi-channel / cue-word behavior (verified live
  against CLI v1.6.1) and degrades gracefully to direct drafting when
  Spiral is absent, without giving away Spiral's voice-matching.
- Drafts only: never posts, publishes, or touches git.
@imwm imwm force-pushed the nervous-gould-7bce37 branch from 77b37c2 to 7e86a47 Compare June 3, 2026 03:23
@tmchow tmchow changed the title feat(promote): add ce-promote skill for post-ship announcement copy feat(ce-promote): add ce-promote skill for post-ship announcement copy Jun 3, 2026
@tmchow tmchow merged commit 0939187 into main Jun 3, 2026
2 checks passed
@github-actions github-actions Bot mentioned this pull request Jun 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants