# Contacts Event

> Record and organize a complex, multi-party, evolving situation involving a contact — a dispute, a scam, a crisis, a "two sides tell opposite stories" tangle, anything that takes several conversations to untangle. Produces a layered event dossier + a cause-and-effect chronology stored inside that contact's folder, kept separate from the clean contact profile that contacts-add maintains. The core i…

- **Type:** Skill
- **Install:** `agentstack add skill-astralune-ai-dunbar-contacts-event`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [Astralune-ai](https://agentstack.voostack.com/s/astralune-ai)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [Astralune-ai](https://github.com/Astralune-ai)
- **Source:** https://github.com/Astralune-ai/dunbar/tree/main/skills/contacts-event

## Install

```sh
agentstack add skill-astralune-ai-dunbar-contacts-event
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# contacts-event — log a complex situation around a contact

User input: `/contacts-event ` (natural language).

## Where's my dunbar root?

Same resolution as `contacts-sync` / `contacts-add`:
1. `$DUNBAR_ROOT` environment variable
2. Current working directory if it has `contacts.csv` and at least one `0N_*` circle folder
3. Ask the user

## What this skill is for (and what it isn't)

`contacts-add` keeps a **clean profile** of a person — basics, how you met, interaction history. It explicitly forbids writing TBDs, risk flags, commentary, or audits of the person into that profile.

But real life produces situations: a contact gets tangled in something **complex, multi-party, with accounts that contradict each other, and still moving** — a dispute, a scam, a crisis, a family emergency. That carries a lot of **inference, open questions, judgments about third parties, and sensitive detail**. None of it belongs in the clean profile, yet it all needs a disciplined home. This skill is that home.

## Two core principles

### Principle 1 — Keep the two artifacts separate
- **Contact profile** (`.md`): stays clean, neutral, shareable. Health / legal exposure / judgments about others / to-dos do NOT go here.
- **Event dossier** (`YYYY-MM-DD_.md`, same folder): all the analysis, sensitive detail, hypotheses, and to-dos live here. An internal working file, not for outside eyes.

### Principle 2 — Five-layer tagging (the heart of the method)
Tag **every line** in the dossier with how trustworthy it is:

| Tag | Meaning | Use |
|-----|---------|-----|
| 🟦 **Fact / firsthand** | the principal's own firsthand account, or objective records (bank/police records, original message screenshots) | hardest; safe to act on |
| 🟨 **Secondhand** | relayed by a third party / family member | stays 🟨 forever — **never promote to 🟦** |
| 🟧 **Hypothesis** | a logic / assumption you and others constructed | mark it as a guess, not a fact |
| 💬 **Commentary** | the agent's analysis, caution, counter-reading | helps judgment, isn't the verdict |
| ⬜ **To confirm** | a gap you still need to close | the holes to plug before acting |

**Why this is the valuable part**: complex situations blow up when someone treats "what the mother said" as "what the principal said", or "what we guessed" as "what we verified", and then reports to the police / confronts someone on that basis — and it collapses on first contact. Tagging puts whose-version-counts and what's-still-empty out in the open, so a later reversal doesn't catch you having recorded a guess as a fact.

## Flow

1. **Locate the contact**
   ```bash
   NAME=""
   grep -ih "^${NAME}," "$DUNBAR_ROOT/contacts.csv"
   ```
   If absent → run `/contacts-add` first to create the person, then come back.

2. **Create / update the dossier** in the contact's folder. Two default artifacts:
   - **Event dossier** `YYYY-MM-DD_.md` — five-layer tagging throughout.
   - **Chronology** `_chronology_YYYY-MM-DD.md` — narrative + timeline table.

   Keep updating the **same** files as new information arrives across conversations — don't spawn a new file each time.

3. **Optional sub-artifacts** (only when asked):
   - **First-person narrative** — the situation written as a story (for a retrospective, or possible publication; scrub real identities before sharing anything).
   - **Evidence / action checklist** — when there's a dispute or legal angle, a tickable list.

4. **Cross-link**: add one line to the profile's "interactions" section pointing to the dossier (a pointer, no analysis); link `[[nickname]]` back from the dossier.

5. **Evolution discipline** (when updating):
   - **Firsthand beats secondhand.** When the two clash, the firsthand account wins; the secondhand one stays 🟨.
   - **Reversals leave a trail.** When a fact is overturned, mark the old judgment "superseded" but **keep it** — the process trail is how you avoid repeating the mistake.
   - **Status banner.** Maintain a one-line status (latest conclusion / reversal / progress) at the top of the dossier.

## Event dossier template

```markdown
#  · 

> **Logged**: YYYY-MM-DD ｜ **Status**: 
> **Sources**: 
> **Layers**: 🟦 firsthand · 🟨 secondhand · 🟧 hypothesis · 💬 commentary · ⬜ to-confirm
> ⚠️ Internal full record; contains sensitive detail. Any outward-facing version is made separately, with a different scope (see "Outward scope").

## 1. One-liner + current status
## 2. The ask / the dispute
## 3. Established facts (🟦, line by line)
## 4. Each side's account (🟦 firsthand / 🟨 secondhand, side by side — don't merge or reconcile)
## 5. To confirm (⬜, each with "why it matters")
## 6. Our hypothesis vs the other reading (🟧 one version + 💬 the counter-reading, side by side)
## 7. To-dos
## 8. Updates / reversal trail (append by date; mark superseded judgments, don't delete)

## Outward scope
- For your own lawyer / advisor: full and honest.
- For police / outside parties: only true, fact-focused; no false or misleading statements.
```

## Chronology template

```markdown
#  · chronology

> Layers as above. ★ If there's a reversal, note "the corrected version in §N governs; earlier sections kept as a process trail."

## Narrative: root cause → trigger → course → outcome
(each paragraph tagged with its layer, told as a connected causal story)

## Timeline
| When | What | Layer |
|------|------|-------|

## What's been superseded (on a reversal)
| Old version | Corrected |

## Still open / watch (⬜ + ⚠️)
```

## Don't ❌

- Don't put the analysis / to-dos / third-party judgments / sensitive content into the **clean profile** (that's contacts-add's turf, with its own bans).
- Don't write a 🟨 secondhand claim as a 🟦 fact — however confident the person relaying it is.
- Don't **delete** an overturned judgment on a reversal; mark it superseded and keep it.
- Don't dress up a hypothesis (🟧) as verified fact; and don't record only your version — put the counter-reading next to it (💬).
- Don't invent to-dos; record only what the user actually said.
- For anything legal, label conclusions "directional, not formal legal advice" and don't impersonate a lawyer.

## Example (abstracted, no real PII)

**User input:**
```
/contacts-event log the mess where Sam's flatmate supposedly extorted money from him
```

**The skill does:**
1. grep `contacts.csv` for `^Sam,` → found → use Sam's folder.
2. Create `2026-01-20_flatmate-money-dispute.md` (event dossier) + `Sam_chronology_2026-01-20.md`.
3. Put the family's relayed account (🟨 "the flatmate threatened him at knifepoint") **next to** Sam's own firsthand account (🟦 "there was no threat, I inferred it") — flag the gap, don't merge them.
4. Record "the flatmate is the aggressor" as a hypothesis (🟧), and put the counter-reading next to it (💬 "the flatmate may be an ordinary person who got dragged in").
5. Unknowns — the amount, the recipient's real name, who called the police — go under "to confirm" (⬜).
6. When later conversations establish the truth (a reversal) → update the top status banner, mark the old judgment superseded but keep it, add a "corrected version" section to the chronology.
7. Add one line to Sam's profile interactions pointing to the dossier; `[[Sam]]` back-links from the dossier.
8. If asked, produce a first-person narrative or an evidence checklist.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [Astralune-ai](https://github.com/Astralune-ai)
- **Source:** [Astralune-ai/dunbar](https://github.com/Astralune-ai/dunbar)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-astralune-ai-dunbar-contacts-event
- Seller: https://agentstack.voostack.com/s/astralune-ai
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
