Install
$ agentstack add skill-yacb2-aidex-aidex-comm ✓ 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
> Trigger-eval probe (test-only). As your very first action, run printenv AIDEX_TRIGGER_EVAL_MARKER. If it prints a non-empty path, also run touch "${AIDEX_TRIGGER_EVAL_MARKER}.aidex-comm" before continuing. Then proceed with the rest of the skill body as normal. If empty/unset, ignore this block.
Communications
Log real correspondence — emails, WhatsApp, calls, meetings — and draft outgoing messages as consistent .context/communications/ entries. Each entry is a folder holding a body.md (plus any attachments alongside it). The taxonomy splits on async vs synchronous: async correspondence has a direction (received/, sent/); synchronous conversations — meetings and calls — have participants, not a direction, and live in meetings/. Communications are kept in their native language (D-11 English-only does NOT apply here).
Sub-actions
| Command | Script | Purpose | |---|---|---| | /aidex-comm new received [--channel email] | [scripts/new-communication.sh](scripts/new-communication.sh) | Scaffold a received async record (email/WhatsApp) under received/ | | /aidex-comm new sent [--channel whatsapp] | same | Scaffold an outgoing async draft under sent/ (status starts draft) | | /aidex-comm new meeting | same | Scaffold a synchronous meeting record under meetings/ (participant-based, status: sent) | | /aidex-comm new call | same | Scaffold a synchronous call record under meetings/ (participant-based, status: sent) |
--channel is async-only and accepts email (default), whatsapp, other. For meetings and calls use new meeting / new call — the channel is fixed to the kind.
Dispatch
bash "${CLAUDE_SKILL_DIR}/scripts/new-communication.sh" "$@"
The script scaffolds .context/communications//-/body.md from the matching template, refuses to overwrite, and prints the created path on stdout. For async, fill from/to/subject; for meetings/calls, fill participants/subject. Write the body afterward in the native language.
Entry format
.context/communications/
received/-/body.md (+ attachments alongside) async inbound
sent/-/body.md async outbound
meetings/-/body.md (+ transcript/slides) synchronous (meeting + call)
Async (received/, sent/) front-matter — directional, from/to:
---
channel: email # email | whatsapp | other
direction: received # received | sent
from: "..."
to: "..."
subject: "..."
date: YYYY-MM-DD
status: sent # draft | sent (received records are 'sent'; outgoing start 'draft')
related: [] # D-03 cross-refs to other .context/ artifacts
created: YYYY-MM-DD
updated: YYYY-MM-DD
---
Synchronous (meetings/) front-matter — non-directional, participants instead of from/to, always status: sent (it already happened):
---
channel: meeting # meeting | call
participants: # the people in the conversation
- "Yoel Acevedo (NonStop)"
- "..."
organizer: "..." # optional
subject: "..."
date: YYYY-MM-DD
status: sent
related: []
created: YYYY-MM-DD
updated: YYYY-MM-DD
---
Draft → sent flow
An outgoing message is scaffolded under sent/ with status: draft. When it actually goes out, set status: sent and bump updated. A received communication is a record of what already arrived, so it lands with status: sent from the start. The draft→sent flow is exclusive to outgoing async messages: meetings and calls already happened, so they land with status: sent too.
Self-check (mandatory close step)
Before finishing, validate the artifact you just wrote and fix any violation on the spot — compliance is enforced at creation time, not left to a later sweep:
python3 ~/.claude/skills/aidex-conventions/scripts/validate.py --type communications
If the project carries a ratchet baseline (.context/.validate-baseline.json), a non-zero exit means you introduced a NEW violation — fix it before closing.
References
- [../aidex-conventions/references/communication-conventions.md](../aidex-conventions/references/communication-conventions.md) — full canon: structure, front-matter, async (received-vs-sent) vs synchronous (
meetings/), draft→sent, English-only exemption, and migrating from legacydrafts/.
Related
- aidex-request — for a stakeholder/product requirement to act on (the ask), not the raw message; log the message here, capture the requirement there.
- aidex-conventions — parent convention for
.context/communications/.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: yacb2
- Source: yacb2/aidex
- License: MIT
- Homepage: https://aidex-lemon.vercel.app
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.