fix(linkedin-studio): S21 harden monetize — drop orphan WebFetch+Write grants, re-source fabricated DM-conversion decay curve to SSOT

- allowed-tools: drop WebFetch (:13) + Write (:15) — orphan grants, zero body
  use; command fetches no URL and persists no file (now Read/Glob/Grep/AskUserQuestion)
- :343-346: replace postulated same-day/next-day/3+day decay curve (incl. invented
  <10% floor) with SSOT-supported qualitative claim + cite references/opportunity-generation.md
- gate 81/0/0 exit 0; counts 29/19 unchanged (.md-only)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qgzo6rxthw7KuxHjn5vyE
This commit is contained in:
Kjell Tore Guttormsen 2026-06-19 15:23:28 +02:00
commit aaacb20a3f
2 changed files with 51 additions and 6 deletions

View file

@ -10,9 +10,7 @@ allowed-tools:
- Read
- Glob
- Grep
- WebFetch
- AskUserQuestion
- Write
---
# LinkedIn Monetization Strategy
@ -340,10 +338,9 @@ DM Conversion Framework:
- Paid: "Want to grab 15 min to see if [offer] is a fit? [booking link]"
- Not ready: "No rush — follow along and reach out when timing is right"
Response time matters:
- Same day: roughly half convert to the next step
- Next day: 20-30% conversion
- 3+ days: <10% conversion
Response time matters — speed compounds conversion:
- Same-day responses convert far better than days-later ones; the longer the gap, the colder the lead.
- For per-channel benchmarks (speaking / consulting / podcast) and the response window each warrants, see `references/opportunity-generation.md`.
```
## Step 5: CTA Optimization

View file

@ -1497,3 +1497,51 @@ same analysis loop. **No branch invokes WebFetch.**
- Disposition: **FIXED** (1 edit, `commands/competitive.md`) · 0 deferrals · axes a/b/c PASS, axis-d PASS post-fix.
---
### /linkedin:monetize — turn thought leadership into revenue (readiness → stage strategy → lead magnet → funnel → tracking)
**INTENT.** Prose-heavy guided monetization strategist (Grow-tier atomic, unlocks ~1K followers). 9-step flow
(Step 08 `:22-487`): load refs → readiness scorecard → stage-specific strategy → lead-magnet blueprint →
funnel content → CTA optimization → Featured section → revenue model worksheet → tracking dashboard. Output is
prose templates the user fills in; **persists nothing**.
**SIMULATE (aspiring monetizer, grounded prose-trace — no fixture; touches no real state/data).** Traced
Step 08 against the file. Step 1 collects follower count / engagement / offers / goals via **AskUserQuestion**
(`:37`) — does NOT read state, so it degrades gracefully (asks rather than depends). Stage-1 branch (01K,
score 030, `:94-112`) handles the sub-unlock case honestly ("Revenue is secondary… DO NOT sell aggressively").
All scorecards/blueprints/worksheets are `[placeholder]` fill-ins — no fabricated user data. **No branch
invokes WebFetch, Write, Glob, or Grep.**
**EVALUATE (relevant axes; mechanical predicate each).**
- **(a) intention: PASS** — body delivers the description (readiness scoring, stage strategy, lead magnets,
CTA A/B, funnel, consulting-inquiry tracking). 7/7 referenced files resolve (Step 0 + Reference Files).
- **(b) algorithm/conversion-bar (axis-b): 1 FINDING** — `:344-346` postulated a generic time-decay curve
("same-day ~half / next-day 20-30% / **3+ days <10%**"). SSOT (`opportunity-generation.md:302-310`) gives
**per-channel** rates (speaking 30-50% same-day, consulting 20-30% within-24h, podcast 70-80%) + qualitative
"speed matters", NOT a generic decay curve — and **`<10%` is invented**, no SSOT basis. Same over-precise
-unsourced pattern as S18. (`:495` external-links claim was already SSOT-sourced + softened — clean.)
- **(c) quality rules: PASS** — prose-only (no post emission); no buzzwords; `:495` correctly sourced.
- **(d) agent-wiring + graceful degradation: 2 FINDINGS (allowed-tools over-grant)** — no agent delegation
(selbständig prose, correct for class). **`:13` `WebFetch`** = orphan grant, ONLY occurrence (`grep -n
WebFetch` = `:13` only), zero body use, WebSearch not even granted → pure dead external-capability grant,
exact S17/S19/S20 pattern. **`:15` `Write`** = orphan grant, ONLY occurrence, zero body use — command
never persists a file; unused **mutation** capability (stronger least-privilege case than read grants).
Borderline `Glob`/`Grep` (`:11-12`, no body use) left as-is (local, low-risk read tools — S20 precedent).
**HARDEN (2 surgical edits, `commands/monetize.md`).**
1. [REWORK · axis-d] removed `- WebFetch` and `- Write` from `allowed-tools` — orphan grants (zero usage;
external-fetch never realized, file never written). allowed-tools now Read·Glob·Grep·AskUserQuestion.
2. [REWORK · axis-b] `:343-346` replaced the fabricated decay curve (incl. invented `<10%`) with the
SSOT-supported qualitative claim ("speed compounds conversion — same-day converts far better than
days-later") + cite to `references/opportunity-generation.md` for the real per-channel benchmarks.
`:313/:323` "within 2 hours" left as-is (defensible tactical advice, not a fabricated statistic — operator OK).
**VERIFY.**
- Re-grepped final file: `grep -n WebFetch`**NONE**; `grep -n Write`**NONE**; `grep -n "roughly
half|<10%|3+ days|20-30% conversion"` → **NONE**; allowed-tools block = Read/Glob/Grep/AskUserQuestion.
- `git diff --stat` = 1 file, **+3 / 6**.
- `bash scripts/test-runner.sh``Passed: 81 · Failed: 0 · Warnings: 0`, **exit 0**; counts **29/19**
unchanged (.md-only edit).
- Disposition: **FIXED** (2 edits, `commands/monetize.md`) · 0 deferrals · axes a/c PASS, axes b/d PASS post-fix.
---