growth-launch
Draft and evaluate a growth campaign bundle, then stop at founder approval.
Skill by bllshttng
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/bllshttng-growth-launch
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: marketing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/growth-launch
What's inside
- Skill name
growth-launch- Description
- Draft and evaluate a growth campaign bundle, then stop at founder approval.
- License
- Apache-2.0
- Instructions
- 181 lines in SKILL.md · view on GitHub
Files (2)
- LIMITATIONS.md
- SKILL.md
SKILL.md (first lines)
# growth-launch
Orchestrate one growth campaign through the four growth-studio role subagents,
evaluate every draft, and hold the bundle at a founder approval gate.
This skill drafts and reviews; it never publishes.
The mechanical guards that make that true are the subagents' bounded tool lists
(no Bash, no Task, no WebSearch, no WebFetch, no MCP tool) and the unchanged
approval authority; this prose is documentation, not a control.
The flow is fixed-round, never convergent: exactly one draft round and at most
one revision round.
There is no "until green" condition anywhere, so a persistently failing draft
costs a bounded two dispatches and then stops.
## 1. Activation gate
Run `fno config plugins ls`.
If growth-studio is absent or not active, print the activate command for this
pack's `plugin.yaml` and stop with a non-zero exit, creating no campaign
directory and falling back to nothing. The path is the pack's source manifest:
in this (dogfood) checkout that is `plugins/growth-studio/plugin.yaml`; in a consuming project it is wherever that project installed the pack:
fno config plugins activate plugins/growth-studio/plugin.yaml
A failing or non-zero `fno config plugins ls` is a refusal, never an assume-active.
Print the underlying error and stop.
This gate is the whole reason the faucet is gated: bundling made the skill
present unconditionally at session start, activation is what makes it permitted.
## 2. Objective intake
Take the free-text objective and a campaign slug from the invocation.
Reject the slug if it is empty or contains a path separator, a traversal
component (`..`), or a NUL: it becomes a filesystem path under
`.fno/campaigns/`. Create `.fno/campaigns/<slug>/`.
If that directory already exists, refuse and name it rather than interleaving
into a prior campaign.
Parse the `byline` argument from the invocation: `auto` (the default when absent), `on`, or `off`. It controls whether drafts carry the founder byline, read from the `byline:` form under `## Founder` in brand-identity, so the name is per-project and the skill never free-texts one. The byline belongs to published founder-voice prose and never to internal artifacts: the campaign-plan and the rendered-mock carry none in every mode. Under `auto`, the press-draft and the social LinkedIn post carry the byline (the founder-voice surfaces) and the social X/Threads posts carry none. `on` puts the byline on every published text draft (press-draft and all social posts), and `off` strips it everywhere. Write the resolved byline mode to `.fno/campaigns/<slug>/byline`.
Derive the activated pack's root from its receipt so paths resolve whether the
pack is the in-tree dogfood copy or an installed pack in another project:
```bash
PACK_ROOT="$(dirname "$(fno config plugins inspect growth-studio --json \
| python3 -c 'import json,sys;print(json.load(sys.stdin)["manifest_path"])')")"
```
The roles read three artifacts, all resolved through the project's context catalog (`[context.artifacts]` in `.fno/config.toml`):
- `product-truth`: project-supplied product facts (sensitivity `public`).
- `brand-voice`: the pack-supplied voice contract. Voice is a property of the
pack, so the project configures this entry to point at the pack's
`$PACK_ROOT/assets/brand-voice.md` (sensitivity `internal`).
- `brand-identity`: project-supplied brand identity (the brand name, founder,
and positioning a draft speaks from). A second consumer points this entry at
its own identity file; the pack's `$PACK_ROOT/assets/brand-identity.md` is
the Footnote dogfood default (sensitivity `internal`).
Build the catalog and confirm all three are present and readable:
```bash
fno agents roles context --json > .fno/campaigns/<slug>/catalog.json
```
If any of `product-truth`, `brand-voice`, or `brand-identity` is absent from
the catalog or `readable: false`, stop and name the missing artifact and its
config key (resolution would block with MISSING_CONTEXT or UNREADABLE_CONTEXT).
## 3. Resolution gate
Before dispatching any subagent, resolve each role for this work order so the
capability and context gates are enforced at launch, not bypassed. Stamp one
shared revision - the plugin role layer's snapshot revision - on the catalog,
the facts, and the resolve call so they agree (a mismatch blocks with
MIXED_REVISION):
```bash
REV="$(fno agents roles show marketing --json \
| python3 -c 'import json,sys;d=json.load(sys.stdin);print(d[-1]["raw_definition"]["snapshot_revision"])')"
fno agents roles context --json --snapshot "$REV" > .fno/campaigns/<slug>/catalog.json
```
For each role, write a capability-facts JSON covering that role's
`required_capabilities` (marketing: `growth.draft`, `growth.research`;
communications: `growth.draft`, `growth.statement`; design: `growth.render`,
`growth.accessibility`; social: `growth.draft`, `growth.schedule`). The grant
is the founder's: running `/fno:growth-launch` authorizes this campaign's work
order, and each fact RECORDS that authorization (`source_id` names the founder's
launch, `available: true`); it does not assert a capability from the manifest.
If the work order is not authorized, refuse before dispatch. Each fact carries
every required field, scoped to this work order:
```json
[{"capability": "growth.draft", "available": true,
"source_id": "founder-launch/<slug>", "snapshot_revision": "<REV>",
"work_order_scope": {"node_id": "<slug>", "attempt_id": "<attempt>", "role_id": "<role>"}}]
```
Then resolve, passing the shared revision explicitly:
```bash
fno agents roles resolve <role> --work-order <slug> --attempt <attempt> --snapshot "$REV" \
--capabilities .fno/campaigns/<slug>/<role>-capabilities.json \
--context .fno/campaigns/<slug>/catalog.json --json
```
A role that returns `RoleResolutionBlocked` (`MISSING_CAPABILITY`,
`MISSING_CONTEXT`, or `UNREADABLE_CONTEXT`) is recorded as blocked and NOT
dispatched; the campaign continues with the roles that resolved. This is the
only place the gates can be enforced at launch: bundling made the subagents
present, activation permitted the roles, and this step proves the work order is
authorized and the context is configured before any draft is written.
## 4. One draft round
Before dispatching, check the declared width against the route's provider budget (the four role subagents are the fan-out). This is a declaration check, not a cap the Task tool enforces:
```From bllshttng/fno, Apache-2.0.
More from bllshttng/fno
- 0.597score
execute
bllshttng
Execute an approved plan in a flat run or coordinated waves.
SkillAFreshness: A★ 2Claude Code +9 - 0.597score
mail
bllshttng
Read, send, reply to, and manage Footnote agent mail from any session.
SkillAFreshness: A★ 2Claude Code +9 - 0.597score
review
bllshttng
Review recent code changes, check if they are ready to ship, or assess a research brief.
SkillAFreshness: A★ 2Claude Code +9 - 0.597score
setup
bllshttng
Set up a machine for Footnote by launching the interactive setup wizard and reading its report.
SkillAFreshness: A★ 2Claude Code +9 - 0.597score
lead
bllshttng
Lead a backlog territory over time or run one governed planning wave.
SkillAFreshness: A★ 2Claude Code +9 - 0.597score
intel
bllshttng
Report session provenance, work completed, and where agent sessions needed correction.
SkillAFreshness: A★ 2Claude Code +9 - 0.597score
fix
bllshttng
Fix build failures and red tests, or investigate an error with an evidence-based loop.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
autocorrect
bllshttng
Review corrections, triage proposed patches, and audit the agent self-improvement loop.
SkillAFreshness: A★ 2Claude Code +9 - 0.592score
fno-me
bllshttng
Join this session to the Footnote agent mesh so peers can reach it.
SkillAFreshness: A★ 2Claude Code +9 - 0.592score
audit
bllshttng
Audit a feature for completeness, gaps, and buildable follow-up work.
SkillAFreshness: A★ 2Claude Code +9 - 0.592score
cache-keepalive
bllshttng
Keep the prompt cache warm during idle sessions when the project opts in.
SkillAFreshness: A★ 2Claude Code +9 - 0.592score
dnd
bllshttng
Hold incoming agent mail during a quiet window, then deliver one digest.
SkillAFreshness: A★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 1
- Last commit (this folder)
- Oct 2, 2026 (27 days ago)
- Last release
- Oct 23, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/bllshttng/fno
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from bllshttng
- 0.597score
mail
bllshttng
Read, send, reply to, and manage Footnote agent mail from any session.
SkillAFreshness: A★ 2Claude Code +9 - 0.597score
lead
bllshttng
Lead a backlog territory over time or run one governed planning wave.
SkillAFreshness: A★ 2Claude Code +9 - 0.597score
fix
bllshttng
Fix build failures and red tests, or investigate an error with an evidence-based loop.
SkillAFreshness: A★ 2Claude Code +9 - 0.597score
execute
bllshttng
Execute an approved plan in a flat run or coordinated waves.
SkillAFreshness: A★ 2Claude Code +9 - 0.597score
intel
bllshttng
Report session provenance, work completed, and where agent sessions needed correction.
SkillAFreshness: A★ 2Claude Code +9 - 0.597score
review
bllshttng
Review recent code changes, check if they are ready to ship, or assess a research brief.
SkillAFreshness: A★ 2Claude Code +9
Cite this page
growth-launch skill. Agent Mart. https://agentmart.dev/skills/bllshttng-growth-launch (last updated 2026-10-24)