Skip to content
Back to skills

Ai Pa

ASecurity

AI Personal Assistant network skill. Use when: contacting another PA, coordinating with peer agents, scheduling meetings between owners, broadcasting messages, looking up contacts from the local PA directory, or performing any cross-PA task. Reads contact data from data/pa-directory.json in the workspace. Does NOT contain hardcoded contact data — each PA maintains their own directory file.

  • 6 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 11, 2026
ai-agentspythongobashapi

Works with

  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 11, 2026

npx -y skills add netanel-abergel/pa-skills --skill ai-pa --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ai Pa?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ai Pa
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/netanel-abergel-ai-pa-4fd745d3/badge)](https://www.skillsdirectory.com/skills/netanel-abergel-ai-pa-4fd745d3)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ai-pa
description: AI Personal Assistant network skill. Use when: contacting another PA, coordinating with peer agents, scheduling meetings between owners, broadcasting messages, looking up contacts from the local PA directory, or performing any cross-PA task. Reads contact data from data/pa-directory.json in the workspace. Does NOT contain hardcoded contact data — each PA maintains their own directory file.
---

# AI-PA Network Skill

Operational guide for AI Personal Assistants working within a multi-agent PA network.

---

## Directory Setup

This skill reads contact data from a local file. Before using, ensure the file exists:

```
data/pa-directory.json
```

If it doesn't exist, create it using the schema below. Each PA maintains their own copy with their own network's data.

### Directory Schema

```json
{
  "pas": [
    {
      "name": "PA Name",
      "phone": "+972XXXXXXXXX",
      "owner": "Owner Full Name",
      "owner_phone": "+972XXXXXXXXX",
      "owner_role": "VP Product",
      "owner_email": "owner@company.com",
      "status": "active",
      "notes": ""
    }
  ],
  "groups": [
    {
      "name": "Group Name",
      "jid": "XXXXXXXXXXX@g.us",
      "purpose": "PA coordination / leadership / family"
    }
  ],
  "owners": [
    {
      "name": "Owner Name",
      "phone": "+972XXXXXXXXX",
      "role": "CTPO",
      "email": "owner@company.com",
      "pa": "PA Name",
      "pa_phone": "+972XXXXXXXXX",
      "contact_preference": "pa_only"
    }
  ]
}
```

### Loading the Directory

```bash
cat data/pa-directory.json | python3 -c "
import sys, json
d = json.load(sys.stdin)
for pa in d['pas']:
    print(f\"{pa['name']} → {pa['owner']} ({pa['phone']})\")
"
```

---

## Core Rules

### When to Contact a PA vs Owner

**Always contact the PA** for:
- Scheduling meetings between owners
- Passing messages between leadership
- Coordination tasks, follow-ups

**Contact the owner directly** only when:
- Their PA is unavailable or unresponsive
- Urgent matter that cannot wait
- Explicitly instructed by your own owner

**Never contact an owner directly** if their `contact_preference` is `"pa_only"`.

---

## Task Templates

### Schedule a Meeting

```
1. Identify the other party's PA from pa-directory.json
2. Message the PA (not the owner):
   "Hey [PA], [your owner] would like to meet with [their owner].
    Are they available [proposed time]? Or what works best?"
3. Confirm time with your owner
4. Create calendar event:
   gog calendar create primary \
     --summary "Meeting: [Owner A] + [Owner B]" \
     --start "YYYY-MM-DDTHH:MM:SS+TZ" \
     --end "YYYY-MM-DDTHH:MM:SS+TZ" \
     --attendees "owner@company.com"
5. Confirm with both PAs
```

### Broadcast to All PAs

```
1. Find group JID with purpose "pa_coordination" in pa-directory.json
2. Send to group — do not DM individually unless personal message is needed
3. For follow-ups, DM each PA individually using their phone number
```

### Send Email on Owner's Behalf

```bash
GOG_ACCOUNT=owner@company.com gog gmail send \
  --to "recipient@company.com" \
  --subject "Subject" \
  --body "Body"
```

Always confirm with owner before sending external emails.

### Find a PA's Contact

```bash
cat data/pa-directory.json | python3 -c "
import sys, json
d = json.load(sys.stdin)
name = 'owner name to search'
matches = [p for p in d['pas'] if name.lower() in p['owner'].lower()]
for m in matches:
    print(f\"PA: {m['name']} | Phone: {m['phone']}\")
"
```

---

## Operational Protocols

### Billing Error
When a peer PA or your own agent reports a billing error:
1. Notify your owner immediately
2. Contact the admin/budget owner (whoever manages API keys for your organization)
3. Workaround: switch to a non-paid model temporarily in agent settings
4. Do NOT share API keys between agents

### New PA Onboarding
Full flow:
1. Agent signup at the organization's agent platform (e.g. monday.com/agents-signup)
2. Set up messaging channel (WhatsApp Business recommended)
3. Connect calendar (requires owner to share their calendar with write permissions)
4. Add to pa-directory.json with all fields
5. Announce in PA coordination group

### PA Is Unresponsive
1. Try messaging their phone number directly
2. If no response in reasonable time → contact their owner with context
3. Note the issue in your memory files

---

## Communication Style Between PAs

- Be direct and concise — PAs are agents, not humans
- State the request clearly: what you need, from whom, by when
- No small talk needed, but be collegial
- If you're relaying a message from your owner, say so: "My owner [name] asked me to..."
- Confirm receipt when you receive a coordination request

---

## Updating the Directory

Add a new PA:
```bash
python3 -c "
import json
with open('data/pa-directory.json', 'r') as f:
    d = json.load(f)
d['pas'].append({
    'name': 'New PA',
    'phone': '+972XXXXXXXXX',
    'owner': 'Owner Name',
    'owner_phone': '+972XXXXXXXXX',
    'owner_role': 'Role',
    'owner_email': 'owner@company.com',
    'status': 'active',
    'notes': ''
})
with open('data/pa-directory.json', 'w') as f:
    json.dump(d, f, indent=2, ensure_ascii=False)
print('Done')
"
```

---

## Quick Reference

| Task | Action |
|---|---|
| Find a PA's phone | Check pa-directory.json → pas → name/owner |
| Schedule a meeting | Contact other PA, agree time, create calendar event |
| Broadcast message | Use PA coordination group JID |
| Billing issue | Notify owner + budget admin |
| New PA added | Update pa-directory.json + announce in group |
| Owner prefers no PA contact | Check contact_preference field |

Files in this skill

  • SKILL.md5.5 KB
  • data/pa-directory.example.json1.2 KB
  • pa-directory.example.json809 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.