chat-history
Search past WhatsApp/chat conversations stored in the audit log PostgreSQL database.
Skill by netanel-abergel
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/netanel-abergel-chat-history
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/chat-history
What's inside
- Skill name
chat-history- Description
- Search past WhatsApp/chat conversations stored in the audit log PostgreSQL database. Use when the user asks about past conversations, what was discussed, what someone said, finding a specific message, or referencing previous discussions. Also use to reply to or quote specific past messages.
- License
- MIT
- Instructions
- 155 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: "chat-history" does not match folder "chat-history-local"
Files (1)
- SKILL.md
SKILL.md (first lines)
# Chat History Skill
Search past WhatsApp messages stored in the audit log DB (`messages` table), with file-based fallback when DB is unavailable.
## Minimum Model
Any model. Operations are lookup/query based.
---
## Step 1: Detect PA_DB_URL availability
```python
import os, sys
def get_db_conn():
url = os.environ.get('PA_DB_URL') or os.environ.get('HELENI_DB_URL')
if not url:
return None
try:
import psycopg2
conn = psycopg2.connect(url)
return conn
except Exception:
return None
conn = get_db_conn()
DB_AVAILABLE = conn is not None
```
---
## DB Mode (PA_DB_URL available)
All queries against the `messages` table. Output format: `timestamp | sender | chat | body`.
### Full-text search
```python
import os, psycopg2
url = os.environ.get('PA_DB_URL') or os.environ.get('HELENI_DB_URL')
conn = psycopg2.connect(url)
cur = conn.cursor()
search_term = "budget" # replace with actual term
cur.execute("""
SELECT ts, sender_name, chat_name, body
FROM messages
WHERE body ILIKE %s
ORDER BY ts DESC
LIMIT 20
""", (f'%{search_term}%',))
for ts, sender, chat, body in cur.fetchall():
print(f"{ts} | {sender} | {chat} | {body[:100]}")
conn.close()
```
### Search by contact name or phone
```python
cur.execute("""
SELECT ts, sender_name, chat_name, body
FROM messages
WHERE sender_name ILIKE %s OR sender_phone ILIKE %s OR chat_name ILIKE %s
ORDER BY ts DESC
LIMIT 20
""", (f'%{contact}%', f'%{contact}%', f'%{contact}%'))
```
### Search by date range
```python
cur.execute("""
SELECT ts, sender_name, chat_name, body
FROM messages
WHERE ts BETWEEN %s AND %s
ORDER BY ts ASC
LIMIT 100
""", ('2026-04-01', '2026-04-07'))
```
### Find recent unanswered messages (last 24h)
```python
cur.execute("""
SELECT chat_id, chat_name, MAX(ts) as last_msg, COUNT(*) as msg_count
FROM messages
WHERE is_from_me = false
AND ts > NOW() - INTERVAL '24 hours'
AND chat_id NOT IN (
SELECT DISTINCT chat_id FROM messages
WHERE is_from_me = true
AND ts > NOW() - INTERVAL '24 hours'
)
GROUP BY chat_id, chat_name
ORDER BY last_msg DESC
""")
for chat_id, chat_name, last_msg, count in cur.fetchall():
print(f"{last_msg} | {chat_name or chat_id} | {count} unanswered")
```
### DB stats (quick overview)
```python
cur.execute("""
SELECT
COUNT(*) as total,
COUNT(*) FILTER (WHERE ts > NOW() - INTERVAL '1 day') as today,
MIN(ts) as first_msg,
MAX(ts) as last_msg
FROM messages
""")
row = cur.fetchone()
print(f"Total: {row[0]} | Today: {row[1]} | Range: {row[2]} → {row[3]}")
```
---
## File Fallback (no DB)From netanel-abergel/pa-skills, MIT.
More from netanel-abergel/pa-skills
- 0.537score
knowledge-graph
netanel-abergel
Knowledge graph and smart memory management using graphify + Obsidian-inspired patterns.
SkillCFreshness: C★ 6Claude Code +9 - 0.534score
commitment-graph
netanel-abergel
Turns data/commitments.jsonl (flat list) into a who-owes-what-to-whom graph.
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
auto-skill-creator
netanel-abergel
Automatically creates new skills from complex problem-solving sessions.
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
devprocess
netanel-abergel
Structured build workflow: branch, delegate to coding agent, test, screenshot, and commit.
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
ai-pa
netanel-abergel
Route and execute inter-PA coordination tasks in the OpenClaw multi-agent PA network.
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
commitment-tracker
netanel-abergel
Enforce immediate execution of any commitment made in a reply.
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
contact-list
netanel-abergel
Single source of truth for all contacts, PAs, and WhatsApp groups.
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
deep-recall
netanel-abergel
4-layer recall procedure (durable → semantic → PostgreSQL → daily notes) before claiming "no context".
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
eval
netanel-abergel
Evaluate everything the PA agent manages — tasks, skills, PA network health, billing, calendar connections, and memory quality.
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
calendar-setup
netanel-abergel
Step-by-step setup and troubleshooting for connecting an owner's Google Calendar to an OpenClaw agent with read and write access.
SkillCFreshness: C★ 6Claude Code +9 - 0.529score
incident-responder
netanel-abergel
Runbook skill for failures: cron error, PA failure, cascade, gateway disconnect, semantic DB stale.
SkillCFreshness: C★ 6Claude Code +9 - 0.529score
hot-graduator
netanel-abergel
Scans HOT.md and proposes which rules should graduate to SOUL.md (untouched 30+ days) or be removed entirely.
SkillCFreshness: C★ 6Claude Code +9
Signals
- Stars
- 6
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- May 9, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/netanel-abergel/pa-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from netanel-abergel
- 0.537score
knowledge-graph
netanel-abergel
Knowledge graph and smart memory management using graphify + Obsidian-inspired patterns.
SkillCFreshness: C★ 6Claude Code +9 - 0.534score
commitment-graph
netanel-abergel
Turns data/commitments.jsonl (flat list) into a who-owes-what-to-whom graph.
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
ai-pa
netanel-abergel
Route and execute inter-PA coordination tasks in the OpenClaw multi-agent PA network.
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
auto-skill-creator
netanel-abergel
Automatically creates new skills from complex problem-solving sessions.
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
calendar-setup
netanel-abergel
Step-by-step setup and troubleshooting for connecting an owner's Google Calendar to an OpenClaw agent with read and write access.
SkillCFreshness: C★ 6Claude Code +9 - 0.532score
commitment-tracker
netanel-abergel
Enforce immediate execution of any commitment made in a reply.
SkillCFreshness: C★ 6Claude Code +9
Cite this page
chat-history skill. Agent Mart. https://agentmart.dev/skills/netanel-abergel-chat-history (last updated 2026-10-24)