From noticed-skills
Draft a follow-up message to someone the user recently met IRL. Figures out new vs existing in their network, picks the right channel (email, linkedin, whatsapp, telegram, sms), suggests an angle from context, drafts in the user's voice with something actionable in it. Returns the text to copy/paste (subject too, for email) plus a link to open the chat. Logs the touchpoint only after the user confirms it went out. Use whenever the user says "follow up with X", "draft a message to X", "thank X for the meeting", "send X our deck", or similar.
How this skill is triggered — by the user, by Claude, or both
Slash command
/noticed-skills:follow-upThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Draft a follow-up to one person the user recently met IRL. One person at a time. Resolve identity, channel, and angle before writing a word.
Draft a follow-up to one person the user recently met IRL. One person at a time. Resolve identity, channel, and angle before writing a word.
Person resolution is shared with remember-person — same own → ask order. No web enrichment, no public scope.
Resolve the person. search_people own, multi-word names AND-joined. Strong match → use it. Multiple/no match → surface candidates, never default to new silently. On "new", get a linkedin before drafting so they can be added after the send is confirmed.
Read recent context. get_person({ include: "dossier" }). If nothing logged in ~2 weeks and notes are thin, ask "what was the meeting about?" and wait.
Pick the channel from what's on the record (linkedin_username, a stored email, a stored phone/handle). One usable → use it. Multiple → ask. Nothing stored → ask how they want to reach them. If linkedin, resolve the mode first (it sets the char budget).
Suggest an angle, don't just ask. Read the context and propose the angle(s) that fit ("looks like the natural next step is sending the deck you mentioned — want that, or a quick thank-you?"). Fall back to an open "what's the angle?" only when there's no context. Wait.
Draft:
All channels are copy/paste. The skill produces text the user sends; it doesn't send anything or depend on a connected mail/DM tool.
https://wa.me/<phone>?text=<urlencoded> (pre-fills).https://t.me/<username> (no pre-fill).sms:<phone>?body=<urlencoded> (mobile).Never log until the user confirms "sent it". Then:
log_interaction(kind: "emailed", payload: { channel, angle, summary }).log_interaction(kind: "messaged", payload: { channel, angle, summary }); for LinkedIn note the mode in the summary so the timeline shows whether the user is now connected.Brand-new contact: add_to_network fires with the first log_interaction after "sent it", not before. Then read back what was logged (and added).
No default_notes writes, no memory_save calls — interaction-only.
noticed: search_people, get_person, add_to_network (only on a confirmed brand-new contact), log_interactionscope: "public" searches; writing to default_notes (interaction-only).Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub noticedso/skills --plugin noticed-skills