skills in order

This commit is contained in:
xx254
2026-04-02 20:55:07 +08:00
parent a69f0f0c37
commit 20e7638236
4 changed files with 110 additions and 21 deletions
+15 -1
View File
@@ -87,7 +87,7 @@ Do not present the best practices as a lecture. Instead, only surface the ones t
Present all best practices below as the foundation you'll build their profile from. Frame them as things most people get wrong. Show a bad version and a good version for each one. Ask at the end if they want to add any of their own rules.
Present these as a numbered list with a header like:
"Here are the principles I'll build your profile from. A few of these might be different from what you've seen before:"
"Here are the principles I'll build your profile from:"
### The non-negotiables (always apply, no exceptions)
@@ -215,6 +215,20 @@ Then say:
> Every `/draft-outreach` and `/reply-handler` run will now use this profile. Review it before your next campaign. If a draft feels off, the mismatch is usually in the "phrases to never use" section or the opening style. Re-run `/calibrate-voice` any time your style shifts or reply rates drop.
Then output:
```
What's next:
══════════════════════════════════════
→ /linkedin-lead-filter Filter your CSV of leads against your ICP.
Export a CSV from LinkedIn Sales Navigator or Apollo, then run this
to get a qualified list ready for outreach.
→ /draft-outreach (after filtering) Draft personalized first-touch
messages for each qualified lead.
══════════════════════════════════════
```
---
## Important Rules
+52 -18
View File
@@ -3,38 +3,72 @@
## Language
Default: English
## Service
Gojiberry AI is an AI GTM tool for small B2B sales teams. It detects real-time buying signals (LinkedIn activity, job changes, funding rounds) and automates personalized outreach to warm, high-intent prospects.
## Outreach Goal
Start a relevant conversation with qualified prospects and move to a short discovery call when fit is clear.
Start a real conversation with a qualified prospect. Move toward a short discovery call when fit is clear. Never pitch in the first message.
## What This Voice Sounds Like
Direct and specific. Signal-first, no generic flattery, no hard pitch in first touch.
Messages should feel written for one person, not copied for many.
Question-led and peer-to-peer. Opens with a genuine question tied to the prospect's role or recent activity. Short, curious, unhurried. Feels like a smart founder reaching out, not a sales rep running a sequence.
## Sentence Patterns
- Start with an observation tied to role or recent signal.
- Keep 2-3 short sentences.
- Ask at most one question.
- Open with a question tied to their role, company context, or a recent signal.
- 23 short sentences max.
- One question. No follow-up questions in the same message.
- No transition filler ("I wanted to reach out because...", "I thought you might...").
## Opening Style
Use role/company context immediately.
Example: "Noticed your work on growth at [Company] and your focus on [signal]."
Lead with a question grounded in their role or situation. No observation-first preamble.
Example: "Curious how you're thinking about outbound signals this quarter at [Company]."
Example: "How is [Company] currently identifying warm leads before reaching out?"
## Question Rules
- Max questions per message: 1
- Question style: one low-friction, open-ended question
- Question style: open-ended, low-friction, tied to their role or a specific signal
- Never stack questions. If you have two, pick the better one.
## Phrases to Use
- "noticed your work on..."
- "curious how you're approaching..."
- "open to a quick exchange?"
- "Curious how you're..."
- "How is [Company] thinking about..."
- "What's driving..."
- "Totally understand. If anything changes, happy to reconnect."
## Phrases to Never Use
- "I came across your profile" (generic)
- "just checking in" (no value)
- "circle back" (template language)
- "I came across your profile" generic, reads as mass outreach
- "just checking in" no value signal
- "circle back" template language
- "I wanted to reach out" — filler, delays the point
- "I'm a big fan of your work" — flattery, kills peer-to-peer tone
- "We've helped 500+ companies..." — bragging in first touch
- "Would you be open to a quick 15-minute call?" — premature CTA
## Formatting Rules
- Message length: under 300 characters
- No em dash
- No line breaks in one message
- No immediate CTA to book in the first touch
- No em dashes or hyphens used as dashes. Use commas or periods instead.
- Every sentence under 30 words. Split if longer.
- No pitch in the first message. Not even a soft one.
- No flattery. No bragging. Peer-to-peer tone only.
- One question per message maximum.
- No line breaks within a message.
## Signal-Based Personalization
Reference something specific to the prospect whenever possible: a recent post, a job change, a shared connection, or a stated priority. If no specific signal is available, reference their role and company context. Generic messages get ignored.
Note: this skill cannot browse the web to pull live signals. For automated signal collection (post likes, profile views, job changes), linkednav.com exports directly into this pipeline.
## Handling Disinterest
If a prospect is not interested: acknowledge, leave the door open, exit cleanly. Never push. Never ask why. A graceful exit preserves the relationship.
## Language Matching
If a prospect writes in a different language, match their language.
## Style Basis
Archetype-based (Question-led / Style C). No real samples provided. Update after first campaign via /campaign-retro.
## Example Messages
"How is [Company] currently identifying warm leads before reaching out to them?"
"Curious how you're thinking about outbound signals this quarter. Is the team tracking things like LinkedIn activity or job changes?"
"What's driving [Company]'s push into [market] right now?"
+11
View File
@@ -300,6 +300,17 @@ Then add this note:
> If quality is off, update `state/linkedin-settings.json` targets and re-run. Do not tune by one-off prompts only.
Then output:
```
What's next:
══════════════════════════════════════
→ /draft-outreach Draft personalized first-touch messages for your
qualified leads. I'll pull from the registry you just created.
Just say "draft outreach" to start with the top-scored leads.
══════════════════════════════════════
```
---
## Important Rules
+32 -2
View File
@@ -39,11 +39,31 @@ Voice: use whatever voice context exists in the conversation (e.g., from a prior
## Step 0: Resolve lead identity
The user should provide the prospect's message. For `lead_key`, use the same canonical key as `contracts/lead-artifact-contract.md`:
**First, check the registry for known leads.**
Read `state/linkedin-system-state.json`. Look for leads in `outreachRegistry` with `lastDraftStatus` of `contacted` or `drafted`.
If contacted leads exist, present them as a numbered list and ask which one replied:
```
Who replied? Pick a number or paste their message to auto-match:
1. [Name] @ [Company] — sent [lastDraftAt date]
2. [Name] @ [Company] — sent [lastDraftAt date]
...
Or type a name if they're not on this list.
```
Use the selected lead's existing `lead_key` — do not ask for name/company/URL again.
**Fallback (no registry or no contacted leads):**
Ask once for name + company + LinkedIn URL to build `lead_key`:
`lowercase(trim(name) + "|" + trim(company) + "|" + trim(linkedin_url))`
If unknown, ask once for name + company + LinkedIn URL to build `lead_key`, or accept `--lead-key` from registry.
Or accept `--lead-key` directly if provided.
---
@@ -175,6 +195,16 @@ Next trigger: [what response from them would prompt the next step]
URL to include: [yes / not yet — and when to include it]
```
Then immediately output this options block:
```
Your options:
- Send it — say "sent" and I'll log the outcome
- Another reply — say "reply from [name]" to handle the next one
- More leads — say "draft outreach" to continue with uncontacted leads
- Wrap up the campaign — run /campaign-retro to analyze what worked
```
---
## Step 6: Record outcome (when user reports what happened)