$npx -y skills add getnao/sylph --skill customer-reportBuild a comprehensive report on a single client by pulling structured data from Twenty CRM and conversational context from Gmail, Slack, Notion, Granola, and LinkedIn.
| 1 | # Customer Report (360) |
| 2 | |
| 3 | Build a comprehensive report on a single client by pulling structured data from Twenty CRM and conversational context from Gmail, Slack, Notion, Granola, and LinkedIn. |
| 4 | |
| 5 | ## MCP connectors |
| 6 | |
| 7 | | Connector | Purpose | |
| 8 | |-----------|---------| |
| 9 | | CRM | Pull customer data and deal history | |
| 10 | | Notion | Read project notes and meeting logs | |
| 11 | | LinkedIn (TalkToHumans) | Search contacts, pull DM history and connection status | |
| 12 | |
| 13 | ## When to use |
| 14 | |
| 15 | - "Everything we know about [client]" |
| 16 | - Pre-meeting brief |
| 17 | - Account health check |
| 18 | - Renewal or upsell prep |
| 19 | |
| 20 | ## Data sources |
| 21 | |
| 22 | | Source | What to pull | |
| 23 | |--------|-------------| |
| 24 | | **Twenty CRM** | Company record, contacts, deal stage, ARR, contract dates, tags | |
| 25 | | **LinkedIn (TalkToHumans)** | Connection status, last DM date, conversation highlights, pending invitations | |
| 26 | | **Gmail** | Last 10 threads with the client domain - key topics, tone, open asks | |
| 27 | | **Slack** | Mentions of the client name in relevant channels - support issues, internal notes | |
| 28 | | **Granola** | Meeting transcripts with the client in last 90 days - decisions, commitments, sentiment | |
| 29 | | **Notion** | Any client-specific pages or project boards | |
| 30 | |
| 31 | ## Process |
| 32 | |
| 33 | 1. **Identify the client** - resolve the name to a CRM record; confirm if ambiguous |
| 34 | 2. **Pull CRM data** - company, contacts, deal, contract, ARR, tags |
| 35 | 3. **Pull LinkedIn data (TalkToHumans)** - search contacts, pull DM history, connection status |
| 36 | 4. **Pull email threads** - summarize last 10 threads, flag open asks |
| 37 | 5. **Pull Slack mentions** - summarize relevant messages, flag unresolved issues |
| 38 | 6. **Pull meeting notes** - summarize last 3 meetings, extract commitments |
| 39 | 7. **Pull Notion pages** - link any client-specific docs |
| 40 | 8. **Reconcile** - flag contacts in LinkedIn/Gmail/Slack not in CRM, flag stage mismatches, flag commitments without tasks |
| 41 | 9. **Synthesize** - identify patterns, risks, opportunities |
| 42 | 10. **Output the report** using the template below |
| 43 | |
| 44 | ## Output template |
| 45 | |
| 46 | ```markdown |
| 47 | # [Client Name] - 360 Report |
| 48 | Generated: YYYY-MM-DD |
| 49 | |
| 50 | ## Quick facts |
| 51 | - **Stage**: [deal stage] |
| 52 | - **ARR**: [amount] |
| 53 | - **Contract**: [start] to [end] |
| 54 | - **Primary contact**: [name, role] |
| 55 | - **Health**: [green/yellow/red] - [one-line reason] |
| 56 | |
| 57 | ## Recent activity (last 90 days) |
| 58 | - LinkedIn: connection status, last DM <date>, conversation summary |
| 59 | - Gmail: <N> threads, last inbound <date>, last outbound <date> |
| 60 | - Slack: <N> mentions, channel: #<name> if any |
| 61 | - Granola: <N> meetings, most recent <date> with <attendees> |
| 62 | |
| 63 | ## Timeline (last 90 days) |
| 64 | - [date] - [event summary] |
| 65 | - ... |
| 66 | |
| 67 | ## Open items |
| 68 | - [ ] [item from email/Slack/meetings] |
| 69 | - ... |
| 70 | |
| 71 | ## Internal context |
| 72 | [What we've discussed internally about this client - from Slack and Notion] |
| 73 | |
| 74 | ## Recommended next step |
| 75 | [One clear action with owner and deadline] |
| 76 | ``` |
| 77 | |
| 78 | ## Guardrails |
| 79 | |
| 80 | - **Read-only** - never modify CRM records, send emails, or post messages |
| 81 | - **Flag data gaps** - if a source returns nothing, say so explicitly |
| 82 | - **No speculation** - report what the data shows; flag inferences clearly |
| 83 | - **Respect PII** - the report is internal-only; still avoid unnecessary personal details |
| 84 | - **Ask for confirmation** if the client name is ambiguous or matches multiple records |
| 85 | |
| 86 | ## Self-improvement |
| 87 | |
| 88 | After the CAO reviews a customer report: |
| 89 | |
| 90 | 1. Diff what was drafted vs what the CAO found useful vs what she cut - identify patterns |
| 91 | 2. Update `customer-success/_insights.md` with what sections added value and which were noise |
| 92 | 3. If the CAO consistently skips a data source or section, note it (may not be worth pulling) |
| 93 | 4. If she adds context the report missed, add that source or check to the Data sources table |
| 94 | 5. If a report format works well for a specific use case (e.g. pre-meeting vs renewal), save it to `customer-success/_examples/` as a reference template |