crm
Personal CRM - add, log, radar, find, update contacts
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Personal CRM - add, log, radar, find, update contacts
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
| name | crm |
| x-heading-requires | ["email"] |
| description | Personal CRM - add, log, radar, find, update contacts |
| metadata | {"author":"Misha Hanin","email":"misha.hanin@odinix.com","version":"1.3"} |
| argument-hint | [add|log|radar|find|update|next] [contact] [details] |
| allowed-tools | Read, Write, Edit, Glob |
| model | sonnet |
| x-heading-orchestration | {"parallel_safe":"partial","shared_state":["crm/contacts/","context/people.md","config/routing-map.yaml"],"triggers":["crm add","crm log","crm radar","crm find","crm update","crm next","check CRM","contact health"]} |
| x-heading-capability | {"what":"The personal CRM - add contacts, log interactions, update records, find people, and surface a health radar of who has gone overdue across your relationship base.\n","how":"Run /crm <add|log|radar|find|update|next> <contact> <details>. Writes to crm/contacts/ and keeps context/people.md in sync.\n","when":"Use to record or query a relationship. For drafting nudges to many overdue contacts use /cold-sweep; for Google address book use /google-contacts.\n"} |
| x-heading-routing | {"category":"CRM","triggers":["crm add","crm log","crm radar","crm find","crm update","check CRM","contact health"],"exclusions":["N/A"],"compound":"No","router":"auto"} |
Manage contacts, log interactions, track relationship health, and surface follow-up priorities.
This skill works across both CEO and exec workspaces. On startup, read .workspace-identity.json from the workspace root to determine workspace type.
| Resource | CEO Workspace | Exec Workspace |
|---|---|---|
| Personal contacts | crm/contacts/ | personal/crm/contacts/ |
| Tribe contacts (shared) | crm/contacts/ (type: tribe*) | corporate/crm/contacts/ (read-only) |
| CRM config | crm/config.md | corporate/crm/config.md |
| People index | context/people.md | context/people.md (personal root) |
All path references below (e.g., crm/contacts/) should be resolved using this mapping based on the detected workspace type.
Tribe contacts are corporate-wide. In exec workspaces, Tribe member contacts live in corporate/crm/contacts/ (read-only, synced from CEO workspace). When searching or displaying contacts, always check BOTH personal and corporate CRM directories. When logging interactions for Tribe members in exec workspaces, log to the personal copy if it exists, otherwise note that the contact is read-only corporate.
$ARGUMENTS — Subcommand and parameters. Format: [action] [details]Parse the first word of $ARGUMENTS to determine the action:
radar (default — also runs when no arguments provided)Display the relationship health dashboard.
Run python scripts/crm-health.py to get the health report
Present the output organized by urgency:
For each RED contact, suggest a specific action (email, call, meeting)
Company-Wide Radar (admin only): If .workspace-identity.json has role: "admin":
a. Run python scripts/aggregate-crm.py to refresh aggregated data
b. Read the following from ../31c-crm-central/aggregated/:
company-radar.md - all contacts with health status across all execsshared-contacts.md - contacts tracked by multiple execsownership-map.md - who owns which relationships
c. Present Company-Wide View after personal radar:Full CRM View (admin only): If the user says "full CRM view" or "CRM dashboard":
a. Run python scripts/generate-crm-dashboard.py to produce the HTML dashboard
b. Present the output path and a summary of what's in it
After surfacing radar output, suggest: Run /crm next to see the top 3 follow-ups with drafts ready for review.
nextSurface the top-3 priority follow-ups with checking-in drafts ready for manual review and send. v0 of this subcommand presents drafts; the CEO decides per-draft and sends manually via send-email.py. Auto-send-on-approval is a Phase 3 follow-up.
python3 scripts/crm_next.py to generate today's queue. (Note: filename is snake_case for Python importability — crm_next.py, not crm-next.py.)outputs/operations/crm/next-{TODAY}.md).python3 scripts/send-email.py --to <addr> --subject "<subject>" --body "<body>" using the draft body. The auto-log hook in send-email.py (Phase 1) handles the last_touch bump + interaction log entry automatically.addCreate a new contact. Two-tier model: address book entity (corporate) + relationship record (exec-private).
firstname-lastname (kebab-case).crm/address-book/{slug}.md.
personal/.sync/pending-address-book.jsonl for CEO promotion. Proceed with relationship record creation using the slug; entity will resolve once CEO promotes.alex-riveramisha-haninmisha-haninmisha-haninlee-parkcrm/contacts/{slug}.md (CEO) or personal/crm/contacts/{slug}.md (exec) with:
entity_ref: {slug}, relationship_type, last_touch: today, created: today. Optional fields per user input: cadence, source, pipeline_company.knowledge/odin-brain/ exists AND relationship_type is a deal-bearing/external type (NOT tribe/tribe-leadership/inactive), also stamp an optional relevant_principles: YAML list by running python scripts/odin-principles.py --type {relationship_type} [--stage {stage}] --json and taking the top slugs. Internal types and exec workspaces (no brain): skip silently, never write the field, never error.type is tribe or tribe-leadership, also add a corporate rule for the file to config/routing-map.yaml (CEO only; execs surface a note).email contains @31c.io AND type is NOT tribe/tribe-leadership, surface a warning: "This contact has a @31c.io email but is not classified as tribe. Update type to 'tribe' if they are a Tribe member."context/people.md radar table.logLog an interaction for an existing contact.
crm/contacts/ for the matching contact file (match against filename or frontmatter name field)/crm add### YYYY-MM-DD | Type | Brief Title
Description of the interaction.
**Next:** What happens next (if applicable).
last_touch in the YAML frontmatter to today's datefindSearch across all CRM contact files.
crm/contacts/ for matches in:
context/people.md for contacts not yet migratedupdateUpdate a contact's profile information.
log)type, recalculate cadence from crm/config.md defaults (unless cadence was manually set)relationship_type or pipeline_company changed AND knowledge/odin-brain/ exists AND the type is deal-bearing/external (NOT tribe/tribe-leadership/inactive), re-derive relevant_principles via python scripts/odin-principles.py --type {relationship_type} [--stage {stage}] --json. Skip silently on exec workspaces or internal types.Read .workspace-identity.json first to determine workspace type, then load these files using the resolved paths from the Workspace-Aware Paths table above:
crm/config.md, exec: corporate/crm/config.mdcontext/people.md — quick-reference index (from personal root)context/pipeline.md — deal context (when logging deal-related interactions)crm/contacts/America/New_York, America/Winnipeg, Asia/Jerusalem). If the user does not explicitly define a different operating timezone, omit operating_timezone from the YAML - it defaults to timezone.owner field in contact frontmatter is auto-injected by the CRM sync script. Execs should never set it manually - it is populated automatically during sync based on the workspace identity.Backup the entire workspace to GitHub. EXPLICIT INVOCATION ONLY - never auto-trigger from natural language.
CEO-only: Push all workspace updates to all executives. Single command that commits, classifies, publishes to corporate repo, bumps BUILD.json, pushes CRM, aggregates CRM, syncs exec workspaces, and reports. EXPLICIT INVOCATION ONLY - never auto-trigger.
Manually trigger workspace sync - git pull of the code/data clones, then a push-all backup. EXPLICIT INVOCATION ONLY - never auto-trigger.
Pre-implementation gate: recommended structured checkpoint between plan approval and /implement. Use before any non-trivial implementation: combines success-criteria definition, an inline contrarian stress-test (the /devil discipline), an optional /council architecture review with Kimi as devil's advocate, harness gap audit, and test-contract writing. Produces a GO/NO-GO artifact with a ready-to-paste /implement prompt. Skip for trivial one-liner fixes, typo corrections, and config-only changes.
Ultrathink principal-engineer review gate. Runs a Validate-Identify-Improve-Adjust (VIIA) pass over a target - a plan awaiting approval, just-executed work, a specific file or directory, or the entire workspace - then runs an adversarial refutation layer (Phase 2.5) with cross-family judge rotation (Claude and Kimi k3) and optional two-agent debate on BLOCKER + HIGH findings before presenting findings with concrete proposed fixes for batched approval. Blocks forward progress until approved. Triggers on "scrutinize", "stress-test this", "principal review", "validate and improve", "review the plan before I approve", "audit what you just did", "ultrathink review". Do NOT trigger for artifact grading alone (use /evaluate), fact-checking drafts (use /validate), or strategic reasoning (use /deep-think). Usage: /scrutinize [plan | execution | file:<path> | dir:<path> | workspace | trajectory:<run_id>] [--relentless] [--no-refute] [--include-low-confidence] [--include-ambiguous]
Second-opinion advisor. Default roster is Kimi k3 alongside Claude's own view; Gemini and Grok are opt-in via --gemini / --grok / --all. Two modes: independent (the models see the problem only, reason fresh) and critique (they stress-test a draft). Distinct from /deep-think (Claude reasoning structured, alone) and /odin (Claude + the curated knowledge brain). Trigger when the user says: "council", "/council", "second opinion on", "consult the council", "what would Gemini/Grok/Kimi say about", "stress-test this with Gemini/Grok/Kimi", "council vote".