Agentic CRM Setup Skill
This skill turns the generic template into a user's assistant. It is intentionally a full onboarding, not a quick questionnaire.
Setup Principles
- Ask questions in small batches. If the user is on Telegram, stop after each batch and wait for their reply.
- Keep all user-specific information out of community template files until the user provides it.
- Use tool discovery before asking the user to type credentials.
- Never ask for secrets in chat. Ask the user to place credentials in agent
.env, org secrets.env, connector configuration, or the relevant tool's auth flow.
- Write every answer to the correct bootstrap or CRM file.
Tuning Knobs to Collect
Identity
- assistant name
- user preferred name
- user's role/context
- assistant tone
- message length and update style
- day/night hours
- timezone
Scope
- "personal assistant" scope: inbox, calendar, meetings, personal commitments, travel, errands, finance reminders, family/personal admin
- CRM scope: personal contacts, family/friends, professional network, customers/clients, investors, partners, creators/community, vendors, referrals
- excluded domains: anything the assistant should never touch
Privacy
- local CRM only vs external CRM sync
- what may be stored in memory
- what may be ingested into KB
- redaction requirements for outputs
- data retention preferences
Approval Rules
- external email/message send
- calendar event creation/update/delete
- purchases/bookings/cancellations
- data deletion
- financial actions
- exception contacts or domains
Tools
- email provider(s)
- calendar provider(s)
- meeting notes/transcript provider(s)
- contact source(s)
- external CRM, if any
- browser automation availability
- local CLI/MCP/connectors
Schedule and Crons
- inbox triage cadence
- morning calendar review time
- evening calendar review time
- pending-items digest time
- relationship review cadence
- meeting notes processing cadence
- quiet hours and emergency criteria
CRM Schema
- contact categories
- relationship strength scale
- health/staleness rules
- VIP list
- follow-up cadence by category
- interaction types
- required fields
- custom tags
Tool Discovery + Connect (do NOT hand-wave this)
This is the make-or-break step. Detecting a tool is not connecting it. For every
domain the user names a service for, run the full tool-discovery connect loop:
prefer a CLI, research that CLI live if you do not already know it, walk the user
through install + auth in the conversation, and verify with a real read before
moving on. See tool-discovery/SKILL.md for the loop; the short version:
- Detect what is already installed and authed.
- Per domain (email, calendar, contacts, meeting notes, messaging/iMessage,
external CRM): ask what service they use.
- Prefer CLI > connector/MCP > browser. If you do not know the CLI for the named
service, research it (WebSearch/WebFetch its install + auth docs, or read
<cli> --help) before instructing the user.
- Walk them through it on the fly — exact install command, then the exact auth
command they run themselves (e.g.
! gog login you@example.com). Secrets never
go in chat.
- Verify with a real action (
gog auth status + list today's calendar; list the
latest meeting note; a bounded iMessage read) and report the result in Telegram.
- Record each connected tool in
TOOLS.md with how it was verified. Loop.
Only create a [HUMAN] task if the user cannot complete an auth step right now
(e.g. needs an admin, a paid plan, or credentials they do not have). Make it
specific — the exact tool, the exact command, and where the credential goes — not
a generic "connect your tools":
cortextos bus create-task "[HUMAN] Finish <tool> auth for $CTX_AGENT_NAME" --desc "Run: <exact command>. Credential goes in <exact location>. Do not paste secrets in chat. Blocking: <which workflow this unblocks>."
File Writes
After gathering answers, update:
IDENTITY.md — assistant name, role, vibe, work style
USER.md — all user-specific preferences and tuning knobs
SOUL.md — approval rules, autonomy, day/night mode, communication
GOALS.md and goals.json — initial operational goals
SYSTEM.md — org, timezone, orchestrator, communication style
TOOLS.md — detected and configured commands
config.json — timezone, day mode, cron cadence
crm/contacts.json — seed contacts and categories
crm/relationship-health.json — review cadence defaults
crm/followups.jsonl — initial commitments if supplied
MEMORY.md — durable preferences only
Suggested Question Batches
Batch 1: Identity and Scope
Ask:
- What should I be called?
- What should I call you?
- What kind of personal assistant should I be for you?
- Which domains should I manage: inbox, calendar, meetings, CRM, personal reminders, travel, errands, finances, other?
- What should I never touch?
Batch 2: Tools
Ask which service they use per domain, then run the Tool Discovery + Connect loop
above for each one (research the CLI, walk them through auth, verify):
- Email + calendar — which provider (Gmail/Google, Outlook, other)?
- Meeting notes — Granola, Fathom, Fireflies, Zoom, other, none?
- Messaging — do you want me to read/handle iMessage or another messenger?
- Contacts — Google Contacts, phone export, an external CRM, none?
- External CRM — HubSpot/Pipedrive/Airtable/Notion/etc, or local files as source of truth?
Tell them up front: for each one they name, I will find the right CLI, walk you
through connecting it right here, and confirm it works before moving on. No secrets
in chat.
Batch 3: CRM
Ask:
- What relationship categories do you want?
- Who are the first VIPs I must never miss?
- What counts as a relationship going stale?
- What interaction types matter?
- What tags or custom fields matter in your life/business?
Batch 4: Schedule
Ask:
- Working hours and quiet hours?
- Protected time blocks?
- Preferred meeting windows and buffer rules?
- When should I send morning/evening/pending-items summaries?
- How often should I do relationship reviews?
Batch 5: Approval Rules
Ask:
- What may I do autonomously?
- What always requires approval?
- Are there contacts/domains I may message without approval?
- Should I create drafts automatically?
- Should I create calendar holds autonomously or only propose them?
Completion
When setup is complete:
mkdir -p "${CTX_ROOT}/state/${CTX_AGENT_NAME}"
touch "${CTX_ROOT}/state/${CTX_AGENT_NAME}/.onboarded"
cortextos bus update-heartbeat "setup complete; CRM assistant online"
cortextos bus log-event action onboarding_completed info --meta '{"agent":"'$CTX_AGENT_NAME'","template":"agentic-crm-assistant"}'
Send the user a concise summary:
- configured scope
- connected tools
- CRM source of truth
- cron schedule
- approval boundaries
- first three actions you will take
1---2name: agentic-crm-setup3description: Full interactive setup for the agentic CRM personal assistant template. Use at first boot or whenever the user asks to configure/reconfigure the assistant.4---56# Agentic CRM Setup Skill78This skill turns the generic template into a user's assistant. It is intentionally a full onboarding, not a quick questionnaire.910## Setup Principles1112- Ask questions in small batches. If the user is on Telegram, stop after each batch and wait for their reply.13- Keep all user-specific information out of community template files until the user provides it.14- Use tool discovery before asking the user to type credentials.15- Never ask for secrets in chat. Ask the user to place credentials in agent `.env`, org `secrets.env`, connector configuration, or the relevant tool's auth flow.16- Write every answer to the correct bootstrap or CRM file.1718## Tuning Knobs to Collect1920### Identity2122- assistant name23- user preferred name24- user's role/context25- assistant tone26- message length and update style27- day/night hours28- timezone2930### Scope3132- "personal assistant" scope: inbox, calendar, meetings, personal commitments, travel, errands, finance reminders, family/personal admin33- CRM scope: personal contacts, family/friends, professional network, customers/clients, investors, partners, creators/community, vendors, referrals34- excluded domains: anything the assistant should never touch3536### Privacy3738- local CRM only vs external CRM sync39- what may be stored in memory40- what may be ingested into KB41- redaction requirements for outputs42- data retention preferences4344### Approval Rules4546- external email/message send47- calendar event creation/update/delete48- purchases/bookings/cancellations49- data deletion50- financial actions51- exception contacts or domains5253### Tools5455- email provider(s)56- calendar provider(s)57- meeting notes/transcript provider(s)58- contact source(s)59- external CRM, if any60- browser automation availability61- local CLI/MCP/connectors6263### Schedule and Crons6465- inbox triage cadence66- morning calendar review time67- evening calendar review time68- pending-items digest time69- relationship review cadence70- meeting notes processing cadence71- quiet hours and emergency criteria7273### CRM Schema7475- contact categories76- relationship strength scale77- health/staleness rules78- VIP list79- follow-up cadence by category80- interaction types81- required fields82- custom tags8384## Tool Discovery + Connect (do NOT hand-wave this)8586This is the make-or-break step. Detecting a tool is not connecting it. For every87domain the user names a service for, run the full **`tool-discovery` connect loop**:88prefer a CLI, research that CLI live if you do not already know it, walk the user89through install + auth in the conversation, and **verify with a real read** before90moving on. See `tool-discovery/SKILL.md` for the loop; the short version:91921. Detect what is already installed and authed.932. Per domain (email, calendar, contacts, meeting notes, messaging/iMessage,94 external CRM): ask what service they use.953. Prefer CLI > connector/MCP > browser. If you do not know the CLI for the named96 service, research it (WebSearch/WebFetch its install + auth docs, or read97 `<cli> --help`) before instructing the user.984. Walk them through it on the fly — exact install command, then the exact auth99 command they run themselves (e.g. `! gog login you@example.com`). Secrets never100 go in chat.1015. Verify with a real action (`gog auth status` + list today's calendar; list the102 latest meeting note; a bounded iMessage read) and report the result in Telegram.1036. Record each connected tool in `TOOLS.md` with how it was verified. Loop.104105Only create a `[HUMAN]` task if the user cannot complete an auth step right now106(e.g. needs an admin, a paid plan, or credentials they do not have). Make it107specific — the exact tool, the exact command, and where the credential goes — not108a generic "connect your tools":109110```bash111cortextos bus create-task "[HUMAN] Finish <tool> auth for $CTX_AGENT_NAME" --desc "Run: <exact command>. Credential goes in <exact location>. Do not paste secrets in chat. Blocking: <which workflow this unblocks>."112```113114## File Writes115116After gathering answers, update:117118- `IDENTITY.md` — assistant name, role, vibe, work style119- `USER.md` — all user-specific preferences and tuning knobs120- `SOUL.md` — approval rules, autonomy, day/night mode, communication121- `GOALS.md` and `goals.json` — initial operational goals122- `SYSTEM.md` — org, timezone, orchestrator, communication style123- `TOOLS.md` — detected and configured commands124- `config.json` — timezone, day mode, cron cadence125- `crm/contacts.json` — seed contacts and categories126- `crm/relationship-health.json` — review cadence defaults127- `crm/followups.jsonl` — initial commitments if supplied128- `MEMORY.md` — durable preferences only129130## Suggested Question Batches131132### Batch 1: Identity and Scope133134Ask:1351361. What should I be called?1372. What should I call you?1383. What kind of personal assistant should I be for you?1394. Which domains should I manage: inbox, calendar, meetings, CRM, personal reminders, travel, errands, finances, other?1405. What should I never touch?141142### Batch 2: Tools143144Ask which service they use per domain, then run the Tool Discovery + Connect loop145above for each one (research the CLI, walk them through auth, verify):1461471. Email + calendar — which provider (Gmail/Google, Outlook, other)?1482. Meeting notes — Granola, Fathom, Fireflies, Zoom, other, none?1493. Messaging — do you want me to read/handle iMessage or another messenger?1504. Contacts — Google Contacts, phone export, an external CRM, none?1515. External CRM — HubSpot/Pipedrive/Airtable/Notion/etc, or local files as source of truth?152153Tell them up front: for each one they name, I will find the right CLI, walk you154through connecting it right here, and confirm it works before moving on. No secrets155in chat.156157### Batch 3: CRM158159Ask:1601611. What relationship categories do you want?1622. Who are the first VIPs I must never miss?1633. What counts as a relationship going stale?1644. What interaction types matter?1655. What tags or custom fields matter in your life/business?166167### Batch 4: Schedule168169Ask:1701711. Working hours and quiet hours?1722. Protected time blocks?1733. Preferred meeting windows and buffer rules?1744. When should I send morning/evening/pending-items summaries?1755. How often should I do relationship reviews?176177### Batch 5: Approval Rules178179Ask:1801811. What may I do autonomously?1822. What always requires approval?1833. Are there contacts/domains I may message without approval?1844. Should I create drafts automatically?1855. Should I create calendar holds autonomously or only propose them?186187## Completion188189When setup is complete:190191```bash192mkdir -p "${CTX_ROOT}/state/${CTX_AGENT_NAME}"193touch "${CTX_ROOT}/state/${CTX_AGENT_NAME}/.onboarded"194cortextos bus update-heartbeat "setup complete; CRM assistant online"195cortextos bus log-event action onboarding_completed info --meta '{"agent":"'$CTX_AGENT_NAME'","template":"agentic-crm-assistant"}'196```197198Send the user a concise summary:199200- configured scope201- connected tools202- CRM source of truth203- cron schedule204- approval boundaries205- first three actions you will take