Install
$ agentstack add skill-astralune-ai-dunbar-contacts-event ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →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:
$DUNBAR_ROOTenvironment variable- Current working directory if it has
contacts.csvand at least one0N_*circle folder - 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
- 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.
- 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.
- 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.
- 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.
- 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
# ·
> **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
# · 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:
- grep
contacts.csvfor^Sam,→ found → use Sam's folder. - Create
2026-01-20_flatmate-money-dispute.md(event dossier) +Sam_chronology_2026-01-20.md. - 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.
- 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").
- Unknowns — the amount, the recipient's real name, who called the police — go under "to confirm" (⬜).
- 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.
- Add one line to Sam's profile interactions pointing to the dossier;
[[Sam]]back-links from the dossier. - 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
- Source: Astralune-ai/dunbar
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.