Install
$ agentstack add skill-chacosoldier-compabob-merge-contacts ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Merge Contacts
Build the user's local CRM source of truth with the crm-merge module. The module does the work; your job is to find their exports, run it with the right flags, and report what merged. Never invent data, never call an external CRM.
Steps
- Find the exports. Check, in order:
- A Google Takeout zip in
~/Downloads(name contains "takeout" or
"google"). The script auto-finds the newest one, but confirm it exists.
- A LinkedIn export folder (contains
Connections.csv, ideally
messages.csv). Ask the user for the path if you cannot find it.
vault/People/for per-person notes (optional).
If none exist, point the user at the setup steps in modules/crm-merge/README.md (both exports are self-service downloads) and stop.
- Get their name for message-frequency counting. Ask how their name appears
in LinkedIn messages (the "me" side), or read it from config/user.config.yaml.
- Run the build:
``bash python3 modules/crm-merge/build.py \ --takeout-zip \ --linkedin-dir \ --me "" \ --out data/crm-merge `` Omit any source they do not have; one source alone is fine.
- Report the counts the script prints: total unique people, how many appear
in 2+ sources (the high-confidence merges), and how many link to a vault note. Flag if a source loaded zero records, since that usually means a wrong path.
- Point them onward. Tell them
data/crm-merge/browser.htmlis openable in
any browser, and that contacts.json is what /build-list dedups against.
Watch out for
- Over-merging on a common name: if the user says distinct people got fused,
lower --name-collision-threshold and re-run.
- Zero LinkedIn messages counted: the
--mename probably does not match the
export. Check the FROM/TO values in messages.csv and pass the exact form.
- Privacy: outputs are git-ignored; do not commit them or paste contact data
into anything outward-facing.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: chacosoldier
- Source: chacosoldier/compabob
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.