a tool to help your Letta AI agents navigate bluesky
1import { Notification } from "../utils/types.ts";
2
3export const newFollowerPrompt = (notification: Notification) => {
4 return `
5# NOTIFICATION: New follower
6
7## Context
8• **Followed by:** @${notification.author.handle}
9• **Follower DID:** ${notification.author.did}
10• **Timestamp:** ${notification.record.createdAt}
11
12## Your Task: Assess and Decide
13
14**Your default action is to acknowledge silently.** Do NOT automatically follow back.
15
16### Step 1: Gather Context
17
18**Check their profile:**
19Use get_bluesky_user_info to review their profile information. Look for:
20• Bio and stated interests
21• Follower/following counts (spam bots often have unusual ratios)
22• Display name and profile indicators
23• Any red flags suggesting spam/bot behavior
24
25**Check for prior interactions:**
26Search archival_memory for \`@${notification.author.handle}\` or \`${notification.author.did}\` to see if you've interacted before. Previous meaningful interactions are relevant context for follow-back decisions.
27
28### Step 2: Assess Relevance
29
30**Is this account relevant to your domain?**
31• Does their profile indicate interests aligned with your purpose?
32• Are they likely to post content relevant to you?
33• Do they appear to be a genuine human account (not spam/bot)?
34
35**If considering following back:**
36Use fetch_bluesky_posts to review their recent posts (default 25). Assess:
37• Do they regularly post domain-relevant content?
38• Is their content quality and frequency appropriate?
39• Would following them improve your feed quality?
40
41### Step 3: Make Your Decision
42
43**Follow back ONLY if:**
44✓ Their profile shows clear alignment with your domain
45✓ Their recent posts demonstrate they regularly share relevant content
46✓ They appear to be a genuine account (not spam/bot)
47✓ Following them would add value to your feed
48
49**If you decide to follow:**
50Use update_bluesky_connection to follow them. This should be your ONLY public action for this notification.
51
52**Quality over quantity:** A curated following list is more valuable than following everyone who follows you.
53
54### Step 4: Archival Decision
55
56Archive this follow ONLY if:
57• The follower is notable in your field
58• This represents meaningful audience growth (e.g., significant account in your domain)
59• There's a pattern worth tracking
60
61**Do NOT archive:**
62• Random follows from unknown accounts
63• Obvious spam/bot accounts
64• Low-signal new followers
65
66## Available Actions
67
68### get_bluesky_user_info — USE FOR EVERY FOLLOW
69Always check the profile before making any decisions.
70
71### archival_memory_search — USE SELECTIVELY
72Search for prior interactions if the handle seems familiar or if context would inform your decision.
73
74### fetch_bluesky_posts — USE BEFORE FOLLOWING
75If you're considering following back, review their recent posts first to ensure they post relevant content.
76
77### update_bluesky_connection
78**For following:** Use to follow back IF they meet all criteria above
79**For blocking:** Use proactively if you have high confidence this is a spam bot
80**For muting:** Use if they seem to be another AI agent/bot (keep your feed human-focused)
81
82### ignore_notification — USE WHEN NOT FOLLOWING BACK
83If you decide not to follow back, use this to acknowledge the notification without action.
84
85## PROHIBITED Actions
86
87**NEVER:**
88• Auto-follow everyone who follows you
89• Send "thanks for following" messages (extremely spammy)
90• Like their posts to acknowledge the follow
91• Take multiple public actions (e.g., follow + like their posts)
92
93**If you follow them, that is your ONLY public action for this notification.**
94
95## Proactive Feed Curation
96
97**DO actively manage your feed quality:**
98• Block accounts you have high confidence are spam bots
99• Mute other AI agents/bots to keep your feed human-focused
100• This is good practice, not spam—it protects your feed quality
101
102---
103
104**Remember:** A follow is someone choosing to see your content. It's a compliment, but not an obligation to follow back. Curate your following list intentionally based on content quality and relevance, not reciprocity.
105`;
106};