← Back to Skills Marketplace
terellison

iMessage & Signal Analyzer

by Terry Ellison · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
672
Downloads
0
Stars
1
Active Installs
1
Versions
Install in OpenClaw
/install imessage-signal-analyzer
Description
Analyze iMessage (macOS) and Signal conversation history to reveal relationship dynamics — message volume, initiation patterns, silence gaps, tone samples, a...
README (SKILL.md)

iMessage & Signal Analyzer

Analyze iMessage (macOS) and Signal conversations to produce relationship reports.

Prerequisites

macOS (iMessage)

iMessage data is stored locally on macOS. Depending on your security settings, you may need to grant Full Disk Access:

Option 1: Run the script directly with Python (no special permissions needed if you have read access to ~/Library/Messages/chat.db)

Option 2: If you get a permission error, grant Full Disk Access:

  • Open System Settings → Privacy & Security → Full Disk Access
  • Click + and add Python or your terminal app

Linux / Windows (Signal only)

  • iMessage is not available on Linux/Windows
  • Signal analysis works via exported JSON

Signal (All Platforms)

  • Install signal-cli: brew install signal-cli (macOS) or see https://github.com/AsamK/signal-cli
  • Link your device: signal-cli link and scan QR code
  • Export messages: signal-cli export --output ~/signal_export.json

Usage

iMessage Analysis

python3 skills/message-analyzer/scripts/analyze.py imessage \x3Cphone_or_handle>

Examples:

python3 skills/message-analyzer/scripts/analyze.py imessage "+15551234567"
python3 skills/message-analyzer/scripts/analyze.py imessage "+15551234567" --limit 500

Signal Analysis

First, export your Signal data (one-time):

signal-cli export --output ~/signal_export.json

Then analyze:

python3 skills/message-analyzer/scripts/analyze.py signal ~/signal_export.json \x3Cphone_or_name>

Examples:

python3 skills/message-analyzer/scripts/analyze.py signal ~/signal_export.json "+15551234567"
python3 skills/message-analyzer/scripts/analyze.py signal ~/signal_export.json "+15559876543"

Finding a Contact's Number

iMessage

If you have a name but not a number:

DB=$(ls ~/Library/Application\ Support/AddressBook/Sources/*/AddressBook-v22.abcddb 2>/dev/null | head -1)
sqlite3 "$DB" "SELECT ZFIRSTNAME, ZLASTNAME FROM ZABCDRECORD WHERE ZFIRSTNAME LIKE '%Name%';"

If AddressBook returns no results, ask the user for the number.

Signal

Signal exports include phone numbers in the JSON. Search by name or number.

Key Data Caveats

iMessage

  • Your sent messages may only exist from the current device's setup date — older sent messages are lost when switching devices. This skews initiation stats.
  • Binary messages (attributedBody) are partially decoded — some formatting artifacts like +@ prefixes may appear in samples; these are normal.
  • Multiple handles: One contact may have 2–3 duplicate handles (iMessage + SMS + RCS). The script aggregates them automatically.

Signal

  • Export required: You must export Signal data first using signal-cli export
  • Media: Exported JSON contains message text; media (images, files) is not included
  • Reactions: Emoji reactions are included as separate message entries

Analysis Output

The script produces:

  • Total message count (you vs. them)
  • Date range
  • Messages per year with volume bar
  • Conversation initiation breakdown (new convo = gap > 4 hours)
  • Notable silences (>30 days)
  • Sample messages by year
  • Most recent 10 messages

Interpreting Results

After running the script, synthesize findings conversationally:

  • Volume patterns: When was the friendship most active? Any notable surges or drops?
  • Initiation skew: Who reaches out first? (Note: your sent messages may be missing from old periods)
  • Gaps: Were long silences mutual drift or explainable (device switch, platform change, life event)?
  • Tone/content: What do the sample messages reveal about the relationship's energy?
  • Context from user: Always ask the user to fill in context gaps

Present the analysis conversationally, not just as raw numbers. Offer a genuine take on the relationship dynamic.

Usage Guidance
This skill appears to do exactly what it claims: local analysis of iMessage and Signal exports. It does require reading sensitive local files (~/Library/Messages/chat.db and your Address Book) and may need Full Disk Access for Python/Terminal on macOS; be careful about granting that. The included script does not make network calls or require external credentials, but review the script yourself if you can and run it locally rather than giving any remote agent blanket permission. If you want extra safety, export Signal data manually, run the script offline, avoid granting Full Disk Access to generic/unknown Python binaries, and disable autonomous invocation for this skill so it cannot run without your explicit command.
Capability Analysis
Type: OpenClaw Skill Name: imessage-signal-analyzer Version: 1.0.0 The skill is classified as suspicious due to a file path traversal vulnerability in `scripts/analyze.py`. The `analyze_signal` function takes a `json_path` argument directly from command-line input (`sys.argv[2]`) and uses `os.path.expanduser()` before opening the file. This allows an attacker to specify a path like `../../../etc/passwd` to read arbitrary files on the system, potentially exposing sensitive data. While this is a significant vulnerability, there is no clear evidence of intentional malicious behavior such as data exfiltration, persistence, or unauthorized remote control. The `SKILL.md` also contains a `sqlite3` command for AddressBook lookup that could be vulnerable to SQL injection if the AI agent's execution environment does not properly sanitize user input, but the prompt itself does not contain a malicious payload.
Capability Assessment
Purpose & Capability
Name/description, SKILL.md, and the included Python script all focus on analyzing iMessage (macOS) and Signal exports. The script reads ~/Library/Messages/chat.db and Signal export JSONs and performs local analysis; no unrelated services, binaries, or credentials are requested.
Instruction Scope
Runtime instructions are consistent with the task: grant Full Disk Access to read chat.db if needed, use signal-cli to export Signal data, and run the provided analyze.py script. The instructions and script only read local message/contact files and print analysis; they do not instruct sending data to external endpoints.
Install Mechanism
There is no install spec (instruction-only with a bundled script). The README suggests installing signal-cli via brew/GitHub, which is reasonable for Signal exports. No downloads or archive extraction are performed by the skill itself.
Credentials
The skill requires no environment variables, credentials, or config paths in metadata. It legitimately may require Full Disk Access on macOS to read the Messages DB and requires a user-run signal-cli export for Signal; these are proportionate to its stated functionality.
Persistence & Privilege
The skill is not set to always:true and does not request persistent system changes. However, it reads highly sensitive local data (messages/contacts). Because the agent can invoke skills autonomously by default, consider the privacy implications of allowing autonomous runs that could open the Messages DB if Full Disk Access is granted.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install imessage-signal-analyzer
  3. After installation, invoke the skill by name or use /imessage-signal-analyzer
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Clean release with fake example data
Metadata
Slug imessage-signal-analyzer
Version 1.0.0
License
All-time Installs 1
Active Installs 1
Total Versions 1
Frequently Asked Questions

What is iMessage & Signal Analyzer?

Analyze iMessage (macOS) and Signal conversation history to reveal relationship dynamics — message volume, initiation patterns, silence gaps, tone samples, a... It is an AI Agent Skill for Claude Code / OpenClaw, with 672 downloads so far.

How do I install iMessage & Signal Analyzer?

Run "/install imessage-signal-analyzer" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is iMessage & Signal Analyzer free?

Yes, iMessage & Signal Analyzer is completely free (open-source). You can download, install and use it at no cost.

Which platforms does iMessage & Signal Analyzer support?

iMessage & Signal Analyzer is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created iMessage & Signal Analyzer?

It is built and maintained by Terry Ellison (@terellison); the current version is v1.0.0.

💬 Comments