Use when the unit of work is a TikTok/Reels account, not one clip: positioning, sustainable cadence and format mix, ride-or-skip on a trend or sound, recurring series, diagnosing a flat account, and the dated learning loop. NOT the single script or hook variants (that is `video-shorts`), NOT the idea backlog (that is `shortform-ideation`).
npx skills add https://github.com/ericrisco/rsc-harness --skill shortform-strategy
*You own the account, not the clip.* You decide who it is for, how often it posts, what mix of formats, which trends it rides, which series it runs — and you keep a written record of what actually moved the numbers so the next call is grounded, not vibes. You produce a strategy doc, a posting plan, and a decision log. You never write the script, the cover, the caption, or the cut.
Hand off downstream the moment the deliverable becomes *one video*:
../video-shorts/SKILL.md.../shortform-ideation/SKILL.md.../shortform-packaging/SKILL.md.../shortform-editing/SKILL.md.../social-publisher/SKILL.md.../content-engine/SKILL.md.../brand-voice/SKILL.md.Boundary test: if it is one asset, route it. If it is *what the whole account does, on what rhythm, and the record of what worked* — it is yours.
Strategy without memory is just opinion. Before any call, read what the account already learned:
02-DOCS/wiki/shortform/ — the compiled strategy, positioning, and dated decisions.02-DOCS/raw/shortform/ — the per-post metrics ledger (completion %, sends, saves, follows).*Why: the account is a feedback loop. If you cannot point to the prior decision and the metric that backs it, you are guessing — and you will re-make a mistake the ledger already recorded.* If the directories are empty, this is a new account: say so explicitly and create the baseline in Step 0's write-back, then proceed to Positioning.
The numbers below age fast. The dated, sourced cheat-sheet lives in references/platform-signals-2026.md — cite it, do not re-derive it.
An account grows when a stranger can finish your video and instantly know *what they get if they follow*. Vague accounts do not grow; specific lanes do — "productivity for remote workers", "true crime in 5 minutes" — because the algorithm rewards retention and a tight lane is what holds a cohort to the end (almcorp.com short-form mastery 2026; virvid.ai faceless 2026 — accessed 2026-06-02).
Write the positioning as one sentence: <for whom> gets <one promise> in <format/lane>. If you cannot, the account has no lane yet — narrow before you post.
Faceless is fine. Retention, not a face, is what the algorithm scores. A faceless account is viable *if the retention holds*; if it does not, the problem is the lane or the hook, never the missing face.
| Signal | Diagnosis | Move |
|---|---|---|
| Clear one-promise sentence + completion holding | Lane is working | Proceed to cadence |
| Sentence is fuzzy / lists 3+ niches | No lane — this is the growth blocker | Narrow to ONE promise, re-test 2 weeks |
| Clear lane but completion < niche bar | Lane fine, execution weak | Fix hook/length (hand to ../video-shorts/SKILL.md), not the lane |
| Faceless, retention proven | Viable | Keep faceless; do not chase a face |
Pick the rhythm the account can *sustain*. Consistency now outperforms sporadic viral hits, and posting past the ceiling dilutes quality and burns the operator out (automateed.com; truescho.com; newzenler.com — accessed 2026-06-02).
| Account / platform | Cadence | Why |
|---|---|---|
| TikTok | 3–5 quality posts/week | Consistency sweet spot; daily-but-thin loses to fewer-but-sharper |
| Instagram Reels | 4–7 Reels/week | Reach-vs-engagement optimum |
| Instagram full mix (weekly) | 3–4 Reels + 2–3 carousels + 1–2 statics | Reels drive growth; carousels drive depth |
| Any platform | Hard ceiling ~10/week | Past this: diminishing returns + burnout + quality dilution |
Format mix rule (Instagram): carousels now average ~10% engagement vs ~6% for regular Reels and get a "second chance" surge of 2–3× impressions — but for small accounts Reels remain the biggest visibility driver (thesecondbrain.io; reelbase.io; usevisuals.com — accessed 2026-06-02). So: lean Reels for *growth*, carousels for *sales/community*. Do not pile into carousels on a small account chasing the engagement headline — you will trade reach you need for engagement you do not yet.
Bad → Good:
Make the account's KPI first-3s retention and completion %, not views or likes. The first 3 seconds decide a Reel, and watch-time/completion is the strongest retention signal — a fully-watched 15s beats a 60s most people abandon (truefuturemedia.com; buffer.com — accessed 2026-06-02). On TikTok the 2026 bar rose: ~70%+ completion to go viral (up from ~50% in 2024), and an 85% completion threshold trips a ~4× distribution multiplier (socialboostdigital.com; socialync.io — accessed 2026-06-02).
Set length bands as account policy, then let depth get scripted downstream:
| Goal | Length band | Why |
|---|---|---|
| New-audience reach + completion | 7–30s | Easiest to fully watch; clears the completion bar |
| Depth with existing followers | 30–90s | Room to teach; full 7–90s is the highest-viral band |
You set the band and the KPI. The actual hook and per-second pacing is ../video-shorts/SKILL.md's job — point to it, do not write it here.
In 2026 a trending sound is a niche/category signal, not a raw boost. Using a sound trending *within your niche* nudges TikTok to drop your test cohort into that niche (which raises completion); the 2022–2024 direct distribution boost is gone. Adopt within ~24h of it trending or skip it (sproutsocial.com; opus.pro — accessed 2026-06-02).
Run the call as a gate — all three must be yes to ride:
1. Is the sound/trend trending WITHIN our niche (not just globally)? no -> SKIP
2. Is it < ~24h old (still on the rising edge)? no -> SKIP
3. Does the format fit our positioning without contorting it? no -> SKIP
all yes -> RIDE: ship within 24h, treat the first ~30 minutes as the test
Why the 30-minute window matters: "view velocity" — engagement inside roughly the first 30 minutes of distribution — is a dominant early signal in 2026 (socialboostdigital.com; socialync.io — accessed 2026-06-02). A trend you publish late, off-niche, or twisted to fit gives you all the production cost and none of the cohort lift. When in doubt, skip — a missed trend costs nothing; a forced one costs a slot and muddies your lane.
Multi-part series drive roughly 2.8× higher return viewers because a recurring format builds the habit the algorithm rewards (socialboostdigital.com; socialync.io — accessed 2026-06-02). A series is the cheapest durable lift you can design.
Design it as a *contract with the viewer*:
The hand-off: you define the series *concept, cadence, and numbering*. The episodes get ideated (../shortform-ideation/SKILL.md), scripted (../video-shorts/SKILL.md), and packaged (../shortform-packaging/SKILL.md) elsewhere.
Every decision must end up in the ledger so next month's call is grounded.
Log per post (not just likes): date, platform, format, hook, length, sound, completion %, sends, saves, follows, notes. DM sends are the top distribution signal for Reels in 2026 — share-via-DM carries the most weight for unconnected reach, and shares/saves outrank likes (later.com; truefuturemedia.com; mirra.my — accessed 2026-06-02). If you only log likes and views, you are blind to the signal that actually moves reach.
Monthly review ritual: read the ledger, find the top-3 and bottom-3 by completion and by sends, name the pattern, make one positioning/cadence/series change, and record it as a dated decision. The full per-post schema, review checklist, and decision-record template live in references/learning-loop-template.md — use it verbatim so the ledger stays machine-readable.
02-DOCS/wiki/shortform/decisions.md is an OKF append-log: write the frontmatter
header once (a non-empty type is the only OKF hard requirement; title/tags/timestamp
are the recommended surface), then prepend each new dated block newest-first so the
latest call is on top. Use ISO 8601 dates; never edit a past block. Bump the header
timestamp on each append. Header + one block:
---
type: shortform-decision-log
title: Shortform strategy decisions
tags: [shortform, strategy, decisions]
timestamp: 2026-06-02T10:00:00Z
---
# Shortform strategy decisions
## 2026-06-02 — Drop daily posting to 4 Reels/week
**Decision:** Cut from ~7 thin posts/week to 4 strong Reels/week, fixed Tue/Fri.
**Rationale:** Reach fell as volume rose; consistency > velocity past the ceiling.
**Rests on:** completion avg 31% (ledger), cadence-ceiling signal (platform-signals-2026).
**Revisit on:** 2026-07-02 — keep if completion clears 40% and sends/post rise.
*Why dated + rests-on + revisit: a decision you cannot trace to a metric and a date is folklore. The revisit line turns it into an experiment with an end.*
| Anti-pattern | Why it fails | Do instead |
|---|---|---|
| Riding a trend after it peaked / off-niche | Sound is a niche signal now, not a boost; late + off-niche = cost, no lift | Run the 3-gate ride-or-skip; ship within 24h or skip |
| Cross-posting identical creative everywhere | An Originality Score suppresses recycled/reposted content | Re-cut natively per platform; treat each as original |
| Posting 10+/week to "grow faster" | Diminishing returns + burnout + quality dilution | Hold 3–5 (TikTok) / 4–7 (Reels); raise only if completion holds |
| Optimizing likes/views | Sends/saves/completion are what move reach; likes are vanity | KPI = completion % + sends/saves; log them per post |
| No clear lane ("a bit of everything") | Algorithm rewards retention; a fuzzy lane never holds a cohort | One-promise sentence first; narrow before posting |
| Hashtag-spamming for discovery | Discovery shifted to keywords; hashtags no longer support follows | Keywords in caption/profile/on-screen text; drop the hashtag wall |
| "Series" with no fixed schedule | No habit forms; it is just a tag, no return-viewer lift | Name + number + fixed slot; pilot via Trial Reels |
| Deciding from vibes, not the ledger | Re-makes recorded mistakes; nothing compounds | Read 02-DOCS/... first; every call gets a dated decision record |
Write the account's brain back so it compounds (mirrors the harness Karpathy-wiki convention). The shortform/ wiki tree is an OKF v0.1 bundle shared with the ../tiktok-api/SKILL.md and ../shortform-packaging/SKILL.md siblings: every .md written here carries YAML frontmatter with a non-empty type, cross-references are standard markdown links (never [[wikilinks]]), and decisions.md follows the OKF newest-first append-log rule.
02-DOCS/wiki/shortform/strategy.md — positioning, cadence/mix, KPI, length bands, current series. Same frontmatter shape as above with type: shortform-strategy, then the H1 (# Shortform account strategy) and the sections the linter checks.02-DOCS/wiki/shortform/decisions.md — the dated decision log, OKF append-log (type: shortform-decision-log, newest block on top; format above).02-DOCS/raw/shortform/metrics.csv — the per-post ledger (schema in references/learning-loop-template.md). This is raw/, not wiki/ — a CSV, no frontmatter.Verify a produced strategy doc with scripts/verify.sh 02-DOCS/wiki/shortform/strategy.md — a read-only structural lint (positioning, cadence, completion KPI, ride-or-skip rule, ≥1 dated decision, sends/saves logged). The lint reads body content, so the added frontmatter does not affect it.
Take ericrisco/shortform-strategy from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.