autoresearch
Autonomous goal-directed iteration loop: modify, verify, keep/discard against a metric or a checkable success predicate, with…
Draft launch or promotion copy for a shipped feature.
$ npx -y skills add leo-kuang-ai/spec-first --skill spec-promote --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/spec-promoteContext preview
The summary Claude sees to decide when to auto-load this skill.
Draft launch or promotion copy for a shipped feature.
name: spec-promote description: "Draft launch or promotion copy for a shipped feature." disable-model-invocation: true argument-hint: "[optional: what shipped and/or channels, e.g. 'a tweet thread and a LinkedIn post']"
Turn a feature that just shipped into copy-pasteable, user-facing announcement copy — right inside the engineering workflow.
After you ship, the messaging shouldn't wait for a separate marketing pass. `spec-promote` figures out what shipped, picks the right channels, and drafts the copy. It is **spiral-agnostic by default**: with nothing installed it draws on a lite layer of editorial and social-media expertise to produce strong channel-specific copy. When the Spiral CLI (see `references/spiral-cli.md`) is present and authed, it uses Spiral so the drafts are voice-matched to your brand — a subtle enhancement, never a requirement.
**The promotion output is draft-only. It never posts, publishes, commits, or opens PRs.** Posting is a human action. The only durable local preference exception is the separately disclosed and authorized Spiral opt-out write described in Path 0; it is not promotion output and must remain local-only.
spec-promote # Derive what shipped from context, draft defaults spec-promote [free-form description] # You describe what shipped spec-promote a tweet thread and a LinkedIn post # Request specific channels spec-promote 3 tweet options for the new export feature
If the user gave a free-form description of the feature, use it as the source of truth.
Otherwise, derive it from context (use what's available; don't block on any one source):
Then write a 1–3 sentence summary of the **user-facing value** — what a user can now do that they couldn't before, and why they'd care. Describe the outcome, not the implementation. ("You can now export any report to CSV in one click" — not "Added a CsvSerializer and an export endpoint.")
If you can't confidently tell what shipped, ask the user one short question rather than guessing.
Default to a small, sensible set:
Scale to what the change warrants and to what the user asked for. If they named channels ("LinkedIn", "email", "a blog intro", "a short demo script"), draft those instead of or in addition to the defaults. A small fix needs one or two short drafts; a flagship feature can justify a cross-channel set. Don't force a fixed template.
First, detect Spiral's state with the Skill-owned bounded probe. Resolve `SKILL_DIR` from the `spec-promote/SKILL.md` you loaded; do not run `spiral auth status` directly because provider stdout/stderr may contain secret-like fields:
SKILL_DIR="<absolute path of the directory containing this SKILL.md>" node "$SKILL_DIR/scripts/check-spiral-auth.cjs"
Classify into one of three states:
Never let a Spiral failure, timeout, or odd output block or slow the skill — when in doubt, treat it as not-ready and continue.
When Spiral isn't ready, offer to set it up **once** — unless the user previously opted out. The point is one proactive nudge, never a recurring one, and never a blocker: a decline always proceeds to Path B. **Any dismissal records the opt-out**, so a single first-run decline stops the offer for good in this repo — the user is never asked twice.
Read `references/spiral-cli.md` for the exact setup prompt (built with the platform's blocking-question tool), the connect/install steps, and how the opt-out is recorded so later runs skip this. In short:
Skip Path 0 entirely — straight to Path B — when the opt-out is already recorded, or when running headless / non-interactive (no human to answer). If a human is present but no blocking-question tool is available, do **not** skip — fall back to a numbered list of the two options in chat and wait for a reply (per the Ask section of `references/spiral-cli.md`).
Use the Spiral CLI so drafts match the
把 AI coding 会话变成可信、由项目拥有的变更。 spec-first 是面向 Claude Code、Codex、Kiro、Qoder、Cursor、OpenCode、ZCode 与 Pi 的仓库原生 AI Coding Harness。它把想法、需求、计划、代码、审查和知识连接成可检查的工程闭环。
Autonomous goal-directed iteration loop: modify, verify, keep/discard against a metric or a checkable success predicate, with…
Audit mobile App PRD/Figma/local-source consistency across page routes, KMP/Clean Architecture, components, analytics, i18n,…
Explore vague or ambitious ideas into a right-sized requirements-only unified plan. Use when the user wants to brainstorm, think…
Structured code review for bugs, regressions, tests, and standards. Report-only by default; apply fixes only when the current…
Internal landing helper for public workflows that already hold explicit commit and landing authorization; commits scoped changes,…
Internal commit helper for public workflows that already hold explicit commit authorization; creates scoped, value-communicating…