Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

People Relationship Map

v0.1.0

Personal CRM and relationship graph for OpenClaw. Tracks people, their connections to each other, and what you know about them. Stores everything as Obsidian...

1· 385·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for gobiraj/people-relationship-map.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "People Relationship Map" (gobiraj/people-relationship-map) from ClawHub.
Skill page: https://clawhub.ai/gobiraj/people-relationship-map
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required binaries: python3
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install people-relationship-map

ClawHub CLI

Package manager switcher

npx clawhub@latest install people-relationship-map
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
Name/description align with code and instructions: the Python CLI manipulates a local people/ folder and _graph.json, renders Obsidian-friendly Markdown, supports add/link/note/query/stale/mermaid. Required binary (python3) is appropriate and sufficient.
Instruction Scope
SKILL.md instructs the agent to run the included CLI and to auto-capture mentions from conversation (potentially running touch/note/link commands). Auto-capture is within the stated CRM purpose but does grant the agent discretion to persist user-provided conversational content to disk; the SKILL.md advises asking when intent is ambiguous, but this behavior is a privacy consideration the user should be aware of.
Install Mechanism
No install spec; this is instruction+code only. The code is included in the skill bundle and uses only Python standard libraries — no remote downloads or package installs are requested.
Credentials
The skill declares no required env vars and only needs python3. The script reads OPENCLAW_WORKSPACE (falling back to ~/.openclaw/workspace) to locate its storage; this env var is not listed as required in metadata but is optional and reasonable. No credentials or external service tokens are requested.
Persistence & Privilege
always is false and the skill does not request elevated or cross-skill configuration changes. It writes files under the user's workspace (its normal scope). Autonomous invocation is allowed by platform default; combined with auto-capture note above, this is a usability/privacy tradeoff rather than a coherence/integrity problem.
Assessment
This skill stores personal contact data and notes as plaintext files under your OpenClaw workspace (default: ~/.openclaw/workspace/people). Before enabling auto-capture or a cron digest: (1) confirm you want the agent to silently write conversation-extracted notes to disk, (2) consider where that workspace is synced (Obsidian cloud, other backups) and whether you need encryption or tighter file permissions, (3) check the OPENCLAW_WORKSPACE env var if you want files placed elsewhere, and (4) review and run the included Python script locally to ensure it behaves as you expect. There are no network calls or secret/external-credential requests in the bundled code, but treat the weekly digest/cron guidance as platform integration guidance — the skill itself does not implement external messaging.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

Binspython3
latestvk97b08xvr6javaj1kgggc8y1098233c7
385downloads
1stars
1versions
Updated 3h ago
v0.1.0
MIT-0

People Relationship Map

A lightweight personal CRM that tracks people as nodes and their connections as edges. Everything is stored as Obsidian-compatible Markdown files (one per person) with a JSON graph index for fast querying.

Workspace layout

<workspace>/people/
├── _graph.json          # Node + edge index (source of truth for connections)
├── _alex-chen.md        # One Markdown file per person
├── _jordan-lee.md
└── ...

Each person file uses this template:

# Alex Chen

- **Tags:** #colleague #engineering
- **Org:** Acme Corp
- **Role:** Staff Engineer
- **Met:** 2025-06-15
- **Last contact:** 2026-02-20
- **Tier:** close

## Notes
- 2026-02-20 — Mentioned looking for a new apartment in Brooklyn
- 2026-01-10 — Helped me debug the auth migration

## Connections
- [[Jordan Lee]] — same team at Acme
- [[Sam Patel]] — college roommates

The _graph.json file stores the machine-readable graph:

{
  "nodes": {
    "alex-chen": {
      "displayName": "Alex Chen",
      "tags": ["colleague", "engineering"],
      "org": "Acme Corp",
      "role": "Staff Engineer",
      "met": "2025-06-15",
      "lastContact": "2026-02-20",
      "tier": "close",
      "file": "_alex-chen.md"
    }
  },
  "edges": [
    {
      "from": "alex-chen",
      "to": "jordan-lee",
      "label": "same team at Acme"
    }
  ]
}

Commands

All commands go through the Python script. Run them via:

python3 {baseDir}/scripts/relmap.py <command> [options]

Add a person

python3 {baseDir}/scripts/relmap.py add \
  --name "Alex Chen" \
  --tags colleague,engineering \
  --org "Acme Corp" \
  --role "Staff Engineer" \
  --tier close \
  --note "Met at the offsite in Denver"

Tiers: close, regular, acquaintance (default: acquaintance).

Link two people

python3 {baseDir}/scripts/relmap.py link \
  --from "Alex Chen" \
  --to "Jordan Lee" \
  --label "same team at Acme"

Add a note to a person

python3 {baseDir}/scripts/relmap.py note \
  --person "Alex Chen" \
  --text "Mentioned looking for a new apartment in Brooklyn"

This also bumps lastContact to today.

Touch (update last contact without a note)

python3 {baseDir}/scripts/relmap.py touch --person "Alex Chen"

Query commands

# Show everything about a person
python3 {baseDir}/scripts/relmap.py show --person "Alex Chen"

# Find who is connected to a person
python3 {baseDir}/scripts/relmap.py connections --person "Alex Chen"

# Find all people at an org
python3 {baseDir}/scripts/relmap.py query --org "Acme Corp"

# Find by tag
python3 {baseDir}/scripts/relmap.py query --tag engineering

# Find by tier
python3 {baseDir}/scripts/relmap.py query --tier close

# Search notes for a keyword
python3 {baseDir}/scripts/relmap.py search --query "apartment"

# List all people
python3 {baseDir}/scripts/relmap.py list

Relationship staleness report

python3 {baseDir}/scripts/relmap.py stale \
  --close-days 14 \
  --regular-days 30 \
  --acquaintance-days 90 \
  --format message

Returns a ready-to-send digest of people you haven't contacted within their tier threshold.

Export graph as Mermaid (optional utility)

python3 {baseDir}/scripts/relmap.py mermaid

Prints a Mermaid graph LR diagram you can paste into any Markdown renderer.

Auto-capture behavior

When the user mentions a person in conversation and provides relational context, the agent SHOULD silently run the appropriate command:

  • "I just had coffee with Alex Chen" → touch --person "Alex Chen" + note --person "Alex Chen" --text "Had coffee together"
  • "Alex and Jordan work on the same team" → link --from "Alex" --to "Jordan" --label "same team"
  • "Remember that Sam's birthday is March 12" → note --person "Sam" --text "Birthday: March 12"

Only auto-capture when the intent is clear. If ambiguous, ask the user before persisting. Keep confirmations brief: "Noted for Alex ✓" style.

Cron — weekly relationship digest

A cron job should run the staleness report weekly and deliver results to the user's primary channel (WhatsApp/Telegram). Recommended schedule: every Sunday at 9:00 AM.

python3 {baseDir}/scripts/relmap.py stale --format message

The --format message flag produces a concise, chat-friendly digest.

Tips for the agent

  • Normalize names: "Alex", "Alex Chen", "alex chen" should all resolve to the same node. The script does fuzzy matching on the stored names.
  • When the user says "who do I know at [Company]?", use query --org.
  • When the user says "tell me about [Person]", use show --person.
  • When the user says "who is connected to [Person]?", use connections.
  • Before a meeting, offer to pull up the person's card with show.
  • The Markdown files are designed for Obsidian — wikilinks, tags, and frontmatter all work natively if the user syncs the people/ folder.

Comments

Loading comments...