@sellable/mcp 0.1.250 → 0.1.252
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.
- package/agents/post-find-leads-message-scout.md +14 -0
- package/dist/index-dev.js +0 -0
- package/dist/index.js +0 -0
- package/dist/tools/prompts.js +2 -2
- package/package.json +1 -1
- package/skills/create-campaign-v2/SKILL.md +6 -0
- package/skills/create-campaign-v2/SOUL.md +4 -0
- package/skills/interview/SKILL.md +6 -4
|
@@ -47,6 +47,15 @@ sample rows as the drafting sample. Reject the task as `blocked` if the
|
|
|
47
47
|
campaign id, workspace, `selectedLeadListId`, `workflowTableId`, or non-empty
|
|
48
48
|
campaign-table execution slice does not match the branch input.
|
|
49
49
|
|
|
50
|
+
Do not block just because filters were chosen and `leadScoringRubrics` are not
|
|
51
|
+
yet visible in the campaign read. On the filters path, the parent thread is
|
|
52
|
+
saving and approving rubrics in parallel while this branch drafts from the
|
|
53
|
+
initial imported execution slice. Missing saved rubrics, a `filter-rules`
|
|
54
|
+
current step, or pending Filter Leads work means filter setup is still parent
|
|
55
|
+
owned; it is not a Message Drafting blocker. If campaign/list/table identity and
|
|
56
|
+
the non-empty execution slice match, continue drafting and return `status:
|
|
57
|
+
ready` with `basisStatus: usable_initial`.
|
|
58
|
+
|
|
50
59
|
Never inspect or reconstruct state from local artifacts in normal runs:
|
|
51
60
|
|
|
52
61
|
- do not require, read, hunt for, or mention `brief.md`
|
|
@@ -176,6 +185,11 @@ recommendation usable and report `status: ready` with `basisStatus:
|
|
|
176
185
|
offer the user a choice to keep the initial draft or rewrite with enriched/filter
|
|
177
186
|
data, but the rewrite must be explicit user opt-in.
|
|
178
187
|
|
|
188
|
+
If the parent chose filters but the branch read happens before `save_rubrics`
|
|
189
|
+
commits, do not wait, retry, or return `blocked`. The parent already waits for
|
|
190
|
+
both saved-filter approval and a message recommendation before message review,
|
|
191
|
+
so this branch should finish the reusable template from the initial sample.
|
|
192
|
+
|
|
179
193
|
Retry or regenerate without asking only when the initial recommendation is
|
|
180
194
|
missing, failed, structurally invalid, unsafe, or mismatched on campaign id,
|
|
181
195
|
selected source, `selectedLeadListId`, `workflowTableId`, or execution-slice
|
package/dist/index-dev.js
CHANGED
|
File without changes
|
package/dist/index.js
CHANGED
|
File without changes
|
package/dist/tools/prompts.js
CHANGED
|
@@ -359,12 +359,12 @@ export function getPostFindLeadsScoutRegistry() {
|
|
|
359
359
|
"outputHash",
|
|
360
360
|
"error or retry detail",
|
|
361
361
|
],
|
|
362
|
-
reusePolicy: "The first completed Message Drafting recommendation remains the default review candidate. Later Lead Fit Builder, Filter Leads, enrichment, or rubric completion may make an enriched rewrite available, but does not automatically retry or replace the initial draft unless campaign/brief/source/list/table/execution-slice identity mismatches or the initial output failed. User copy feedback before approve-message is an explicit Message Drafting revision and must be routed back through the message branch with the current recommendation and basis.",
|
|
362
|
+
reusePolicy: "The first completed Message Drafting recommendation remains the default review candidate. Later Lead Fit Builder, Filter Leads, enrichment, or rubric completion may make an enriched rewrite available, but does not automatically retry or replace the initial draft unless campaign/brief/source/list/table/execution-slice identity mismatches or the initial output failed. If filters were chosen but leadScoringRubrics are not yet visible when the branch reads campaign state, Message Drafting must not wait, retry, or return blocked; missing saved rubrics are parent-owned filter setup, and the branch should return status ready with basisStatus usable_initial when campaign/list/table identity and the non-empty execution slice match. User copy feedback before approve-message is an explicit Message Drafting revision and must be routed back through the message branch with the current recommendation and basis.",
|
|
363
363
|
},
|
|
364
364
|
usage: {
|
|
365
365
|
codex: "After confirm_lead_list copies source rows and the initial campaign-table execution slice exists, ask the filter-choice question immediately. Do not spawn anything before that question. After the answer, launch only Message Drafting whenever Codex agent-launch policy is satisfied. The registry lookup is not a launch: after get_post_find_leads_scout_registry, immediately invoke Task/spawn_agent or the host background-agent mechanism before loading filter-leads.md or saving rubrics. If filters are chosen, the parent stays on Filter Rules and drafts/saves rubrics with MCP tools while Message Drafting runs in the background. If filters are skipped, move to Messages/message review after Message Drafting is ready. Treat YOLO/autonomous mode as campaign-scoped permission for this single post-import worker; do not ask for another permission click in YOLO. If the user has not enabled YOLO and has not explicitly asked for background agents/subagents/parallel agents/delegation/message bg agent in this campaign, ask once before loading the long message prompt in the parent. If permission is granted and the named Message Drafting custom agent is unavailable, spawn a generic gpt-5.5 xhigh Message Drafting background agent with the same lean campaign/table basis. If no background-agent tool is callable, start the same full message branch inline before filter drafting, or return blocked/retry-needed; do not wait until filters are saved and then call the registry.",
|
|
366
366
|
claude: "After confirm_lead_list copies source rows and the initial campaign-table execution slice exists, ask the filter-choice question immediately. Do not invoke any Task/Agent before that question. After the answer, invoke only Message Drafting. If filters are chosen, parent drafts/saves rubrics with MCP tools while Message Drafting runs, asks filter approval, then joins Message Drafting. If filters are skipped, invoke only Message Drafting and move to Messages/message review.",
|
|
367
|
-
parentThreadRule: 'Named agents are optional acceleration, but message drafting is not optional. The only normal background worker is Message Drafting. YOLO/autonomous mode counts as campaign-scoped permission for this single post-import worker; do not ask for another permission click in YOLO. If a named agent is unavailable after permission, use a generic gpt-5.5 xhigh Message Drafting background agent. source work and filter work stay in the parent thread with MCP tools. If post-find-leads-message-scout is available, run it as the background Message Draft Builder after the filter-choice answer. The registry lookup is not a launch: get_post_find_leads_scout_registry only identifies the worker, and Message Drafting counts as started only after Task/spawn_agent or the host background-agent tool is invoked, or after the parent begins the same full message branch inline because no background-agent tool is callable. This launch must happen before loading filter-leads.md, save_rubrics, or filter approval. If post-find-leads-message-scout is absent, do not customer-surface install status. Do not silently fall back to parent-thread message drafting; the main thread must execute the same message branch from CampaignOffer state, selected source state, workflowTableId, and initial campaign-table execution slice rows. If no background-agent tool is callable, start that same full message branch inline before filter drafting, or return blocked/retry-needed; do not wait until filters are saved and then call the registry. The Message Drafting handoff must be lean. Do not paste copied row counts, brief hashes, review-batch hashes, full reviewBatchRowIds, broad row data, or local debug artifacts into the spawn prompt. Local markdown/json files are not normal-path inputs. The filter-choice question is the first post-import user gate; do not load post-lead registries or filter references before it. Message drafting starts after the filter-choice answer, must load get_subskill_prompt({ subskillName: "generate-messages" }), and must load every required message asset named by generate-messages Mode 0 through get_subskill_asset before drafting. Reference Asset Loading means loading the required pre-draft reference pack before drafting; return blocked/retry-needed if required assets cannot be loaded; load ai-tells.md because it is never optional. The branch loads the full generate-messages prompt and every referenced asset through get_subskill_asset. After generating/revising the candidate and before returning ready, must load get_subskill_prompt({ subskillName: "create-campaign-v2-validation" }) as the final internal validation gate, must read live campaign table state through scoped MCP/product tools, and must reject mismatched selectedLeadListId/workflowTableId/campaign/workspace input. Do not use any alternate, local-artifact, or examples-only message prompt. User copy feedback, message QA, or rewrite requests before approve-message must be routed back to Message Drafting with the current recommendation, lean campaign/table basis, and latest user text; the parent must not rewrite or QA the template from memory and must not call update_campaign_brief before approve-message. The worker validates internally and returns only templateRecommendation, tokenFillRules, renderedGoodSample, status, approveOrReviseRecommendation, validationStatus, outputAt, outputHash, and blocked/retry detail. Do not render renderedFallbackSample, risk notes, or a qaReceipt on the normal happy path. On the filter path, save_rubrics keeps the browser on Filter Rules after save_rubrics so the user can approve the saved criteria; only then move to Filter Leads, show `Filters saved + waiting for message approval`, and wait there for message approval. Enrichment, filtering, Generate Message cells, sender setup, sequence attach, and launch wait for template approval on the Use Template path. On the skip path, move to Messages/message review and wait for message approval before enrichment or Settings. Do not render message review from checklist or shortcut instructions; message review requires a messageDraftRecommendation whose basis proves the generate-messages prompt, required message assets, and validation gate ran for the current campaign/table execution slice. Do not automatically rerun Message Drafting after filters/enrichment finish; show the initial draft by default and offer an enriched rewrite only with explicit user opt-in. Handoff and recommendation output are Markdown with labeled fields, not raw JSON.',
|
|
367
|
+
parentThreadRule: 'Named agents are optional acceleration, but message drafting is not optional. The only normal background worker is Message Drafting. YOLO/autonomous mode counts as campaign-scoped permission for this single post-import worker; do not ask for another permission click in YOLO. If a named agent is unavailable after permission, use a generic gpt-5.5 xhigh Message Drafting background agent. source work and filter work stay in the parent thread with MCP tools. If post-find-leads-message-scout is available, run it as the background Message Draft Builder after the filter-choice answer. The registry lookup is not a launch: get_post_find_leads_scout_registry only identifies the worker, and Message Drafting counts as started only after Task/spawn_agent or the host background-agent tool is invoked, or after the parent begins the same full message branch inline because no background-agent tool is callable. This launch must happen before loading filter-leads.md, save_rubrics, or filter approval. If post-find-leads-message-scout is absent, do not customer-surface install status. Do not silently fall back to parent-thread message drafting; the main thread must execute the same message branch from CampaignOffer state, selected source state, workflowTableId, and initial campaign-table execution slice rows. If no background-agent tool is callable, start that same full message branch inline before filter drafting, or return blocked/retry-needed; do not wait until filters are saved and then call the registry. The Message Drafting handoff must be lean. Do not paste copied row counts, brief hashes, review-batch hashes, full reviewBatchRowIds, broad row data, or local debug artifacts into the spawn prompt. Local markdown/json files are not normal-path inputs. The filter-choice question is the first post-import user gate; do not load post-lead registries or filter references before it. Message drafting starts after the filter-choice answer, must load get_subskill_prompt({ subskillName: "generate-messages" }), and must load every required message asset named by generate-messages Mode 0 through get_subskill_asset before drafting. Reference Asset Loading means loading the required pre-draft reference pack before drafting; return blocked/retry-needed if required assets cannot be loaded; load ai-tells.md because it is never optional. The branch loads the full generate-messages prompt and every referenced asset through get_subskill_asset. After generating/revising the candidate and before returning ready, must load get_subskill_prompt({ subskillName: "create-campaign-v2-validation" }) as the final internal validation gate, must read live campaign table state through scoped MCP/product tools, and must reject mismatched selectedLeadListId/workflowTableId/campaign/workspace input. Do not block when filters were chosen but leadScoringRubrics are not yet visible in the branch read; the parent owns save_rubrics and filter approval in parallel, so Message Drafting should return status ready with basisStatus usable_initial when the campaign/list/table and non-empty execution slice match. Do not use any alternate, local-artifact, or examples-only message prompt. User copy feedback, message QA, or rewrite requests before approve-message must be routed back to Message Drafting with the current recommendation, lean campaign/table basis, and latest user text; the parent must not rewrite or QA the template from memory and must not call update_campaign_brief before approve-message. The worker validates internally and returns only templateRecommendation, tokenFillRules, renderedGoodSample, status, approveOrReviseRecommendation, validationStatus, outputAt, outputHash, and blocked/retry detail. Do not render renderedFallbackSample, risk notes, or a qaReceipt on the normal happy path. On the filter path, save_rubrics keeps the browser on Filter Rules after save_rubrics so the user can approve the saved criteria; only then move to Filter Leads, show `Filters saved + waiting for message approval`, and wait there for message approval. Enrichment, filtering, Generate Message cells, sender setup, sequence attach, and launch wait for template approval on the Use Template path. On the skip path, move to Messages/message review after Message Drafting is ready and wait for message approval before enrichment or Settings. Do not render message review from checklist or shortcut instructions; message review requires a messageDraftRecommendation whose basis proves the generate-messages prompt, required message assets, and validation gate ran for the current campaign/table execution slice. Do not automatically rerun Message Drafting after filters/enrichment finish; show the initial draft by default and offer an enriched rewrite only with explicit user opt-in. Handoff and recommendation output are Markdown with labeled fields, not raw JSON.',
|
|
368
368
|
},
|
|
369
369
|
};
|
|
370
370
|
}
|
package/package.json
CHANGED
|
@@ -299,6 +299,12 @@ After filter choice, the only normal background worker is Message Drafting (`pos
|
|
|
299
299
|
|
|
300
300
|
The parent thread is the orchestrator and the filter writer. On the filters path, start Message Drafting, then load `references/filter-leads.md`, save rubrics, and ask users to approve saved criteria. Keep `currentStep` on Filter Rules and show `Filters saved + waiting for message approval`; do not queue cells until message approval. Tell the user Message Drafting is preparing the template in the background.
|
|
301
301
|
|
|
302
|
+
Message Drafting must not wait for `save_rubrics` or require
|
|
303
|
+
`leadScoringRubrics` to be visible before returning a reusable template. The
|
|
304
|
+
parent waits for both saved-filter approval and the message recommendation
|
|
305
|
+
before review, so missing saved rubrics in the branch read means "filters still
|
|
306
|
+
owned by parent," not `blocked`.
|
|
307
|
+
|
|
302
308
|
Keep the handoff lean: `campaignId`, `workflowTableId`, concise brief/source summary, source-use rule, and 3-5 sample rows (`rowId`, name, title, company, signal). Do not paste copied row counts, hashes, full row IDs, broad row data, or local debug artifacts.
|
|
303
309
|
|
|
304
310
|
Route user copy feedback before `approve-message` back to Message Drafting; parent does not rewrite. The branch loads the full `generate-messages` prompt, every required asset, then `get_subskill_prompt({ subskillName: "create-campaign-v2-validation" })`; do not render `renderedFallbackSample`, concerns, or `qaReceipt` in the happy path. Generic fallback is `gpt-5.5` / `xhigh` Message Drafting. Handoff is labeled Markdown, not raw JSON.
|
|
@@ -308,6 +308,10 @@ browser to Filter Leads and join/wait for Message Drafting. The join gate is
|
|
|
308
308
|
saved-filter approval or a resolved skip-filter choice, plus a message
|
|
309
309
|
recommendation grounded in the same campaign/table basis. Enrichment, filtering,
|
|
310
310
|
and Generate Message cells wait for template approval on the Use Template path.
|
|
311
|
+
Message Drafting does not wait for `save_rubrics`: if filters were chosen but
|
|
312
|
+
saved `leadScoringRubrics` are not visible yet, it should still return the
|
|
313
|
+
initial reusable template from the campaign-table execution slice with
|
|
314
|
+
`basisStatus: usable_initial`.
|
|
311
315
|
|
|
312
316
|
Keep the Message Drafting handoff lean: `campaignId`, `workflowTableId`, concise
|
|
313
317
|
brief summary, concise source summary/source-use rule, and 3-5 sample
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: interview
|
|
3
3
|
description: Core identity/company memory interview for personal voice, company truth, reusable answers, references, transcripts, and anti-AI writing rules.
|
|
4
|
-
visibility:
|
|
4
|
+
visibility: public
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Core Identity Interview
|
|
@@ -70,9 +70,11 @@ as a post idea, offer to bridge that item into the content library with
|
|
|
70
70
|
|
|
71
71
|
Do not move or mirror core identity/proof/story material into
|
|
72
72
|
`~/.sellable/content/**`. The content bridge is only for post ideas and
|
|
73
|
-
content-specific calibration notes.
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
content-specific calibration notes. Core identity, proof, stories, answer-bank entries, transcripts, references, and raw archives must stay
|
|
74
|
+
under core memory and interview archives. `story-bank.md`, `proof-ledger.md`,
|
|
75
|
+
`answer-bank.md`,
|
|
76
|
+
transcripts, references, and raw interview archives remain the source of truth
|
|
77
|
+
for stories and proof.
|
|
76
78
|
</content_bridge>
|
|
77
79
|
|
|
78
80
|
<modes>
|