@sellable/mcp 0.1.259 → 0.1.261

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,17 @@ Every saved draft needs a validation receipt. A draft without this receipt is no
11
11
  - `candidateHooksConsidered`
12
12
  - `selectedHook`
13
13
  - `selectedHookWhy`
14
+ - `preDraftNarrativeOutline`
15
+ - `preDraftStructureBrief` as a legacy compatibility alias when older drafts or
16
+ downstream readers still expect it
17
+ - `selectedSourceTemplate`
18
+ - `postPositioningBreakdown`
19
+ - `viralPostOutline`
20
+ - `hookToBodyPromiseMap`
21
+ - `bodyExpressionCandidates`
22
+ - `combinedBodyPlan`
23
+ - `visibleFlowTrace` when the user asked for whole-flow, debug, or
24
+ step-by-step mode
14
25
  - `proofClaimsUsed`
15
26
  - `proofClaimSources`
16
27
  - `storyFilesConsulted`
@@ -18,6 +29,9 @@ Every saved draft needs a validation receipt. A draft without this receipt is no
18
29
  - `voiceRulesApplied`
19
30
  - `marketBeliefAudit`
20
31
  - `premiseValueAudit`
32
+ - `mobileScanabilityAudit`
33
+ - `templateAdaptationAudit`
34
+ - `abstractionToConcreteRewriteAudit`
21
35
  - `linkedinPreviewAudit`
22
36
  - `simplifierConcreteLanguageAudit`
23
37
  - `antiAiAudit`
@@ -74,9 +88,13 @@ Each candidate should include:
74
88
 
75
89
  - hook text
76
90
  - selected premise
91
+ - selected source template or no-template rationale
77
92
  - premise tension opened
78
93
  - reader value implied
79
94
  - source pattern
95
+ - hook-to-body promise
96
+ - see-more tension
97
+ - curiosity debt
80
98
  - score
81
99
  - char count including newlines and first-line / first-two-line preview measurements
82
100
  - physical line count, content line count, longest nonblank line, and blank-line risk
@@ -93,12 +111,48 @@ After the first draft:
93
111
  1. remove unsupported claims
94
112
  2. verify the draft is anchored to the selected market belief and controversy
95
113
  3. verify the real story/scene, tension, and reader value are visible early
96
- 4. tighten the hook
97
- 5. simplify abstract phrasing
98
- 6. replace generic language with concrete words only when supported
99
- 7. preserve the user's actual story and point
100
- 8. remove AI tells
101
- 9. re-check LinkedIn preview fit after edits
114
+ 4. verify the body repays the selected hook's curiosity debt
115
+ 5. verify the final post follows the selected positioning sequence or explains
116
+ why it departed from the template
117
+ 6. tighten the hook
118
+ 7. simplify abstract phrasing
119
+ 8. replace generic language with concrete words only when supported
120
+ 9. preserve the user's actual story and point
121
+ 10. remove AI tells
122
+ 11. re-check LinkedIn preview fit after edits
123
+
124
+ ## Visible Flow Trace Audit
125
+
126
+ When the user asks to see the whole flow, run the process step by step, validate
127
+ that it is working, or debug a bad output, the validation receipt must preserve a
128
+ `visibleFlowTrace`.
129
+
130
+ Record:
131
+
132
+ - `mode`: visible_whole_flow_debug
133
+ - `checkpointStatuses`: each checkpoint marked `pass`, `weak`, `fail`, or
134
+ `blocked`
135
+ - `checkpointOutputs`: the concrete output shown to the user for each
136
+ checkpoint
137
+ - `qualityBreak`: the first checkpoint that made the draft weak, if any
138
+ - `downstreamEffect`: how that break affected the hook, premise, body, or ready
139
+ status
140
+ - `userVisibleBeforeSave`: yes | no
141
+ - `draftSavedDespiteWeakness`: yes | no
142
+ - `reasonDraftSaved`: why a `needs_revision` draft was still worth saving, if
143
+ it was saved
144
+
145
+ Save as `needs_revision` when:
146
+
147
+ - the trace was not shown before draft prose in visible debug mode
148
+ - the body-expression lab was summarized after the fact instead of generating
149
+ real candidates before prose
150
+ - a weak premise, missing proof, or wrong source template produced a bad body
151
+ - the final response claims the workflow worked only because artifacts were
152
+ saved
153
+
154
+ Do not mark a run successful unless the visible trace, final draft, and saved
155
+ receipt all agree on the same quality state.
102
156
 
103
157
  ## Premise Value Audit
104
158
 
@@ -116,15 +170,128 @@ Record:
116
170
  - `readerValue`: what the reader learns, sees differently, or can do
117
171
  - `proofAvailable`: source-backed proof used
118
172
  - `proofMissing`: claims intentionally avoided or requiring user input
173
+ - `preDraftNarrativeOutline`: hierarchical `I.`, `A.`, `i.` outline showing
174
+ hook debt, thesis, operating model, working body patterns adapted, narrative
175
+ beats, scan path, proof claims, and abstractions to remove
176
+ - `preDraftStructureBrief`: legacy compatibility alias only; the canonical
177
+ artifact is `preDraftNarrativeOutline`
119
178
  - `premiseQualityGates`: pass/fail for `specific_scene_or_pattern`,
120
179
  `clear_reader`, `visible_tension`, `reader_value`, `credible_speaker`,
121
- `proof_safety`, and `market_heat`
180
+ `proof_safety`, `market_heat`, and `pre_draft_narrative_outline`
122
181
  - `bodyOutline`: how the body delivers the premise before prose
182
+ - `viralPostOutline`: the selected narrative structure, including beat jobs
183
+ - `hookToBodyPromiseMap`: how the body repays the hook's open loop
184
+ - `combinedBodyPlan`: which body-expression lines were kept, rewritten, or cut
123
185
 
124
186
  If the draft has no specific scene or observed pattern, no visible tension, or
125
187
  no reader value beyond "this is interesting," save as `needs_revision`. Do not
126
188
  mark it `ready` because the hook passes preview limits.
127
189
 
190
+ ## Pre-Draft Narrative Outline Audit
191
+
192
+ Before a draft can be `ready`, validate that the narrative outline was locked
193
+ before the body was written.
194
+
195
+ Record:
196
+
197
+ - `hook`: selected hook plus mobile/desktop rendered preview verdict
198
+ - `thesis`: one sentence the post defends
199
+ - `readerBeingTaught`: specific reader and why the post is written for them
200
+ - `coreEquationOrMechanism`: the operating idea being taught
201
+ - `keyDefinitions`: concrete definitions and examples for terms the reader
202
+ could misunderstand
203
+ - `proofClaims`: claims, sources, and public-safety status
204
+ - `sourceTemplateOrNoTemplateRationale`
205
+ - `workingBodyPatternsAdapted`: body pattern name, beat order, why it worked,
206
+ what gets borrowed, and what must not be copied
207
+ - `hierarchicalNarrativeBeats`: `I.`, `A.`, `i.` outline of the final post's
208
+ argument, examples, proof, and line/section shapes
209
+ - `mobileScanPath`: what a skimmer understands from the hook, separators,
210
+ section labels, numbers, and close
211
+ - `sectionOutline`: legacy summary of section order plus the job of each
212
+ section; do not substitute this for `hierarchicalNarrativeBeats`
213
+ - `bodyPromiseAfterSeeMore`: what the body immediately repays
214
+ - `abstractionsToRemove`: abstract phrases and their concrete replacements
215
+ - `userCorrectionsApplied`: user corrections applied to the outline before
216
+ prose
217
+
218
+ Save as `needs_revision` when the draft was written before the narrative
219
+ outline, when the outline is a flat checklist instead of hierarchical
220
+ `I.`, `A.`, `i.` notation, when the outline does not match the final prose, when
221
+ working body patterns are unnamed or vaguely borrowed, when the mobile scan path
222
+ is unclear, or when key terms are left abstract.
223
+
224
+ ## Mobile Scanability Audit
225
+
226
+ A LinkedIn post must still teach the main idea when a reader scans it.
227
+
228
+ Record:
229
+
230
+ - `scanVisibleFrom`: hook, separators, numbered labels, ranges/numbers, example
231
+ prompts, and close
232
+ - `readerGetsWithoutReadingEveryWord`: the specific takeaway a skimmer gets
233
+ - `sectionSeparators`: present | absent | not_needed
234
+ - `sectionLabels`: concrete | abstract | missing
235
+ - `numbersOrProofVisible`: yes | no
236
+ - `mobileLineLengthRisk`: pass | warn | fail
237
+ - `skimVerdict`: pass | needs_revision
238
+
239
+ Save as `needs_revision` when a skimmer cannot understand the thesis, hierarchy,
240
+ or practical next action.
241
+
242
+ ## Abstraction-To-Concrete Rewrite Audit
243
+
244
+ Record every meaningful abstraction found in the draft and the concrete
245
+ replacement. Do not merely say "made concrete."
246
+
247
+ Use this format:
248
+
249
+ ```text
250
+ abstractionToConcreteRewriteAudit:
251
+ 1.
252
+ original:
253
+ issue:
254
+ replacement:
255
+ source:
256
+ kept_or_cut:
257
+ ```
258
+
259
+ Common abstractions to flag:
260
+
261
+ - vague nouns such as `signal`, `market`, `attention`, `system`, `quality`,
262
+ `context`, `machine`, or `workflow` when the sentence does not name the actual
263
+ source, action, number, or object
264
+ - broad persona labels used as lead sources
265
+ - "warm" without explaining what made the source warm
266
+ - "offer" without explaining why the recipient would believe or want it
267
+ - "learning" without naming what metric changes the next decision
268
+
269
+ Do not make language concrete by inventing facts. If the concrete replacement
270
+ requires missing proof, ask the user or save as `needs_revision`.
271
+
272
+ ## Template Adaptation Audit
273
+
274
+ Before a draft can be `ready`, validate that source posts were converted into
275
+ templates rather than copied.
276
+
277
+ Record:
278
+
279
+ - `selectedSourceTemplate`: source, template name, and why it fits
280
+ - `positioningSequenceBorrowed`: category sequence being adapted
281
+ - `viralPostOutlineBorrowed`: beat sequence being adapted
282
+ - `lineShapesBorrowed`: reusable line shapes, not copied wording
283
+ - `userStoryInputsUsed`: source-backed user facts filling the template
284
+ - `userProofInputsUsed`: source-backed user proof filling the template
285
+ - `forbiddenBorrowingAvoided`: source proof, jokes, personal context, status,
286
+ phrases, or examples not used
287
+ - `hookToBodyRepayment`: whether the body answers the hook's curiosity debt
288
+ - `bodyExpressionCandidatesReviewed`: which variants were tested and what won
289
+ - `copyingRisk`: pass | needs_revision | blocked
290
+
291
+ Save as `needs_revision` when the draft copies outside wording, borrows outside
292
+ proof, keeps a source template's status without equivalent user authority, or
293
+ uses a hook whose promised body payoff is not delivered.
294
+
128
295
  ## Market Belief Audit
129
296
 
130
297
  Before a draft can be `ready`, validate that it is not merely an internally
@@ -259,7 +426,9 @@ If the necessary proof or story is missing, ask the user or return blocked/retry
259
426
 
260
427
  Use:
261
428
 
262
- - `ready` only when proof, voice, anti-AI, and concrete-language gates pass
429
+ - `ready` only when proof, voice, anti-AI, concrete-language, pre-draft
430
+ structure, mobile-scanability, hook-to-body repayment, and
431
+ template-adaptation gates pass
263
432
  - `needs_revision` when a draft exists but a gate failed
264
433
  - `blocked` when required context is missing
265
434
  - `retry-needed` when a tool/package/search failure blocked the pipeline
@@ -1,16 +1,42 @@
1
- # Premise Development
1
+ # Premise Development V2
2
2
 
3
3
  A strong post is not an idea with a better hook. A strong post is a valuable
4
4
  premise wrapped in a sharp opening.
5
5
 
6
- Use this stage after market/hook research and before hook candidates. Do not
7
- generate hook candidates until at least one `Premise Card` exists.
6
+ Use this stage after market/hook research and before hook candidates. V2 premise
7
+ development also consumes the source post templates from hook research:
8
+ post positioning breakdowns, viral-post outlines, hook-to-body promise maps, and
9
+ body expression inputs.
10
+
11
+ Do not generate hook candidates until at least one `Premise Card` exists and at
12
+ least one source template has either been selected or explicitly rejected as a
13
+ poor fit.
8
14
 
9
15
  ## Goal
10
16
 
11
17
  Turn the raw idea into a real story, observed tension, or useful argument that a
12
18
  specific reader would care about.
13
19
 
20
+ Use this post tension framework when evaluating whether the premise can hold
21
+ attention:
22
+
23
+ ```text
24
+ Belief -> Contradiction -> Stakes -> Proof -> Mechanism -> Reframe -> Useful Move
25
+ ```
26
+
27
+ - `Belief`: what the reader already thinks or wants to be true
28
+ - `Contradiction`: what the source story reveals that does not fit the belief
29
+ - `Stakes`: what the reader loses if they keep believing the old version
30
+ - `Proof`: the scene, number, repeated pattern, or concrete artifact that makes
31
+ the contradiction credible
32
+ - `Mechanism`: why the thing actually works or fails
33
+ - `Reframe`: the sharper way to see the problem after the mechanism is clear
34
+ - `Useful Move`: what the reader can do, notice, stop doing, or test next
35
+
36
+ A post feels "edge of seat" when the hook creates a contradiction the target
37
+ reader cares about, the body delays the answer only while adding proof, and each
38
+ beat either raises tension or repays tension. If a beat does neither, cut it.
39
+
14
40
  The premise must answer:
15
41
 
16
42
  - who this is for
@@ -22,6 +48,8 @@ The premise must answer:
22
48
  - why now
23
49
  - why this user can credibly say it
24
50
  - what proof is available and what proof is missing
51
+ - which source template, if any, should shape the narrative
52
+ - which positioning sequence the user's post should follow
25
53
 
26
54
  If the premise has no real scene, no tension, and no reader value, stop before
27
55
  drafting. Ask for the missing story or save only a `needs_revision` premise
@@ -96,11 +124,23 @@ proof missing:
96
124
  best frame:
97
125
  story | contrarian take | teardown | founder confession | future thesis | lesson
98
126
 
127
+ source template fit:
128
+ <selected source template name or none>
129
+
130
+ positioning sequence to test:
131
+ <Category -> Category -> Category -> ...>
132
+
133
+ viral outline to adapt:
134
+ <beat names from selected source template, rewritten for this user's story>
135
+
99
136
  hook territories:
100
137
  - <territory 1>
101
138
  - <territory 2>
102
139
  - <territory 3>
103
140
 
141
+ body expression inputs:
142
+ - <line shape, proof slot, story beat, mechanism explanation, or closing move>
143
+
104
144
  risk:
105
145
  <why this premise might still be weak>
106
146
 
@@ -108,6 +148,210 @@ score:
108
148
  <1-100 with short reason>
109
149
  ```
110
150
 
151
+ ## Template-Aware Premise Selection
152
+
153
+ Do not treat source templates as decoration. A source template is useful only
154
+ when its narrative engine matches something the user can credibly say.
155
+
156
+ For each premise card, compare it against the selected keeper templates from
157
+ hook research:
158
+
159
+ ```text
160
+ Template fit check:
161
+ premise:
162
+ source_template:
163
+ template narrative engine:
164
+ matching user story/proof:
165
+ missing user story/proof:
166
+ positioning sequence fit:
167
+ hook promise fit:
168
+ body payoff fit:
169
+ voice fit:
170
+ borrow:
171
+ do not borrow:
172
+ fit verdict: strong | partial | weak | reject
173
+ ```
174
+
175
+ Reject a template when it depends on source-specific proof, celebrity reach,
176
+ personal context the user does not have, or a body structure that would force a
177
+ fake story. Prefer a less viral template that fits the user's real proof over a
178
+ more viral template that requires borrowed authority.
179
+
180
+ ## Viral Narrative Structure
181
+
182
+ Once a premise and source template are selected, create the user's viral-post
183
+ outline before writing body prose.
184
+
185
+ Use this format:
186
+
187
+ ```text
188
+ User viral-post outline:
189
+ selected_premise:
190
+ selected_source_template:
191
+ hook_promise:
192
+ see_more_tension:
193
+ body_payoff:
194
+ positioning_sequence:
195
+ <Category> -> <Category> -> <Category> -> ...
196
+
197
+ beats:
198
+ 1.
199
+ beat_name:
200
+ narrative_job:
201
+ user_story_or_proof:
202
+ positioning_categories:
203
+ reader_state_before:
204
+ reader_state_after:
205
+ line_shape_to_test:
206
+ proof_safety:
207
+ ```
208
+
209
+ The outline should preserve the source template's useful narrative jobs while
210
+ replacing all source-specific proof, scenes, status, jokes, and examples with
211
+ the user's material.
212
+
213
+ ## Body Expression Lab
214
+
215
+ After the selected hook and viral-post outline exist, generate body expression
216
+ candidates before writing the final draft. This is where the system tests
217
+ different ways to express the same structure.
218
+
219
+ Generate 5-8 body expression candidates. Every candidate must use:
220
+
221
+ - the same selected hook or hook territory
222
+ - the same selected premise
223
+ - the same viral-post outline
224
+ - the same positioning sequence
225
+ - only user-sourced story and proof
226
+
227
+ Each candidate should vary the expression, not the facts:
228
+
229
+ ```text
230
+ Body expression candidate:
231
+ name:
232
+ expression_strategy:
233
+ opening_after_hook:
234
+ beat_lines:
235
+ 1. <line or paragraph>
236
+ 2. <line or paragraph>
237
+ positioning_sequence_coverage:
238
+ hook_promise_repaid:
239
+ best_lines:
240
+ weak_lines:
241
+ proof_risk:
242
+ voice_risk:
243
+ score:
244
+ ```
245
+
246
+ Useful expression strategies:
247
+
248
+ - plain field guide
249
+ - founder confession
250
+ - proof-first roadmap
251
+ - teardown then replacement
252
+ - scene then lesson
253
+ - enemy naming then mechanism
254
+ - compact build-in-public note
255
+
256
+ Do not create candidates by changing the claim. Create candidates by changing
257
+ line order, amount of scene, proof placement, rhythm, and how the mechanism is
258
+ explained.
259
+
260
+ ## Combine Pass
261
+
262
+ After body expression candidates are scored, combine the best parts into one
263
+ draft outline before prose.
264
+
265
+ Record:
266
+
267
+ ```text
268
+ Combined body plan:
269
+ selected_hook:
270
+ selected_expression_parts:
271
+ lines_kept:
272
+ lines_rewritten:
273
+ lines_cut:
274
+ positioning_sequence_final:
275
+ hook_promise_repayment:
276
+ proof_gaps_remaining:
277
+ why_this_combination_wins:
278
+ ```
279
+
280
+ If no candidate repays the hook promise with real user proof, return to premise
281
+ development or ask the user for the missing story. Do not save a `ready` draft.
282
+
283
+ ## Pre-Draft Narrative Outline
284
+
285
+ Before final prose, produce a compact `Pre-Draft Narrative Outline`. This is the
286
+ user-visible argument skeleton that lets the user confirm what the post is
287
+ trying to say, in what order, and which proven body shapes are being adapted
288
+ before the system writes body copy.
289
+
290
+ Use this format:
291
+
292
+ ```text
293
+ Pre-Draft Narrative Outline
294
+ I. Hook and click debt
295
+ A. Selected hook: <selected hook>
296
+ B. Rendered mobile preview verdict: <pass | warn | fail + why>
297
+ C. What "see more" must repay: <the open loop the first body beat must answer>
298
+
299
+ II. Thesis the post will defend
300
+ A. One-sentence thesis: <the post's operating claim>
301
+ B. Reader being taught: <specific audience, not a broad persona>
302
+ C. Why this reader cares now: <timely pain, belief, or decision>
303
+
304
+ III. Operating model
305
+ A. Core equation or mechanism: <the model the post teaches>
306
+ B. Key definitions:
307
+ i. <term>: <plain definition + concrete examples>
308
+ ii. <term>: <plain definition + concrete examples>
309
+
310
+ IV. Body shape borrowed from posts that worked
311
+ A. Selected source template or no-template rationale: <source or rationale>
312
+ B. Working body pattern(s) being adapted:
313
+ i. <pattern name>: <beat order and why it works>
314
+ ii. <pattern name>: <beat order and why it works>
315
+ C. What gets borrowed:
316
+ i. <narrative job, sequence, transition, or proof order>
317
+ D. What must not be copied:
318
+ i. <source wording, creator-specific proof, joke, or context>
319
+
320
+ V. Narrative beats
321
+ A. Beat 1: <job, reader state before/after, example/proof>
322
+ i. Line shape or section label: <how it will appear>
323
+ ii. Concrete examples: <examples/numbers>
324
+ B. Beat 2: <job, reader state before/after, example/proof>
325
+ i. Line shape or section label: <how it will appear>
326
+ ii. Concrete examples: <examples/numbers>
327
+ C. Beat 3: <job, reader state before/after, example/proof>
328
+ i. Line shape or section label: <how it will appear>
329
+ ii. Concrete examples: <examples/numbers>
330
+
331
+ VI. Scan path and proof safety
332
+ A. Mobile scan path: <what skimmers learn from labels/numbers/close>
333
+ B. Proof claims:
334
+ i. <claim>: <source + public-safety status>
335
+ C. Abstractions to remove:
336
+ i. <abstract phrase> -> <concrete replacement>
337
+ D. Draft risks: <risk and how to avoid it>
338
+ ```
339
+
340
+ Quality gate:
341
+
342
+ - The outline must explain the post before the draft exists.
343
+ - The outline must be useful to a reader who only scans the finished post.
344
+ - The outline must include proof claims and risk before prose.
345
+ - The outline must define any operating terms that could be misunderstood.
346
+ - The outline must use `I.`, `A.`, and `i.` hierarchy. A flat field list fails.
347
+ - If the post is adapting bodies that worked, the outline must name the body
348
+ pattern and what beat order, proof order, or transition logic is being
349
+ borrowed.
350
+ - If the post is a field guide, the narrative beats must show the hierarchy
351
+ before prose, such as best-to-worst, highest-to-lowest intent, or
352
+ source-to-outcome.
353
+ - If the outline cannot be made concrete, return to premise development.
354
+
111
355
  ## Premise Quality Gate
112
356
 
113
357
  A premise can move to hook generation only when it passes all of these:
@@ -119,6 +363,9 @@ A premise can move to hook generation only when it passes all of these:
119
363
  - `credible_speaker`: pass
120
364
  - `proof_safety`: pass
121
365
  - `market_heat`: pass or explained
366
+ - `template_fit`: pass or explicitly no-template
367
+ - `hook_to_body_repayment`: pass
368
+ - `pre_draft_narrative_outline`: pass
122
369
 
123
370
  If any gate fails:
124
371
 
@@ -137,8 +384,11 @@ For each hook candidate, include:
137
384
  - which tension it opens
138
385
  - which reader value it implies
139
386
  - whether the real scene appears in the first screen or shortly after
387
+ - source template or no-template rationale
388
+ - hook promise the body must repay
140
389
 
141
390
  Reject hooks that are accurate but do not reveal the premise's tension or value.
391
+ Reject hooks that create a promise the selected viral-post outline cannot repay.
142
392
 
143
393
  ## Body Relationship
144
394
 
@@ -155,5 +405,6 @@ body outline:
155
405
  7. close returns to the premise without summarizing
156
406
  ```
157
407
 
158
- If this outline cannot be filled without inventing proof, return to premise
159
- development.
408
+ Replace this generic outline with the selected viral-post outline when a source
409
+ template is available. If the outline cannot be filled without inventing proof,
410
+ return to premise development.
@@ -0,0 +1,9 @@
1
+ {
2
+ "parallelMode": "wide",
3
+ "agentCount": 6,
4
+ "maxToolCallsPerAgent": 2,
5
+ "senderMaxAgents": 2,
6
+ "senderMaxToolCallsPerAgent": 3,
7
+ "progressMode": true,
8
+ "debugMode": true
9
+ }