agent-memory
3-tier markdown memory protocol (shared/agent/conversation) for cross-session knowledge. TRIGGER when: reading or writing agent memory files, choosing which…
SendMessage recipient validation and worktreePath safety (CWE-59). TRIGGER when: validating a SendMessage `to:` recipient against the agent whitelist, or a worktreePath from another agent before acting on it. SKIP: routing topology (agent Comms Protocol); git ops (use
$ npx -y skills add komluk/scaffolding --skill agent-comms --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/agent-commsContext preview
The summary Claude sees to decide when to auto-load this skill.
SendMessage recipient validation and worktreePath safety (CWE-59). TRIGGER when: validating a SendMessage `to:` recipient against the agent whitelist, or a worktreePath from another agent before acting on it. SKIP: routing topology (agent Comms Protocol); git ops (use
name: agent-comms description: "SendMessage recipient validation and worktreePath safety (CWE-59). TRIGGER when: validating a SendMessage `to:` recipient against the agent whitelist, or a worktreePath from another agent before acting on it. SKIP: routing topology (agent Comms Protocol); git ops (use git-operations); worktree recovery (use worktree-management)."
Single source of truth for the two security-critical validation routines every fan-out agent performs over inter-agent messages:
1. **Recipient validation** — never SendMessage to an unverified `to:` value. 2. **worktreePath validation** — never `cd` into or act on an unverified path (gitops and reviewer only).
Each agent keeps a compact 3-4 line inline rule so the logic survives even when this skill is not loaded; the full algorithm and test cases live here.
---
Before any SendMessage, verify the `to:` value:
1. **Exact match first:** check if `to:` matches one of: `researcher`, `architect`, `developer`, `reviewer`, `gitops`, `orchestrator`, `analyst`, `debugger`, `optimizer`, `devops`, `tech-writer`. If yes → PASS. 2. **Suffix strip only if no exact match:** strip trailing `-<digit>+` OR `-<word>` from the END of the name and re-check against whitelist. Apply ONE strip pass only (never recursive).
Note: "orchestrator" is a reserved peer always reachable for escalation, even when not in your peer list. It is NOT spawnable as an agent.
A single regex cannot distinguish a legitimate fan-out replica name (`researcher-1`, `analyst-backend`) from a spoofed lookalike (`evil-developer`). The exact-match-first stage anchors on real agent names; the single suffix-strip stage admits replica/variant suffixes without ever admitting a prefix-injected impostor. Stripping is applied exactly ONCE — never recursively — so `developer-evil-extra` cannot be peeled down to `developer`.
---
When a `worktreePath` is received from another agent (typically developer), verify ALL of the following BEFORE acting on it:
| Check | Threat mitigated | |-------|------------------| | Absolute + under repo root | Prevents acting on paths outside the project sandbox | | No `..` segments | Blocks path-traversal escape (`/repo/../etc`) | | Not a symlink / canonicalize | CWE-59 link following — a symlink could point outside the repo even when the literal path looks safe | | Exists on disk | Avoids operating on a fabricated path | | Registered worktree, exact match | Confirms git itself tracks this worktree; substring match would let `/foo/bar-evil` impersonate `/foo/bar` |
---
| Situation | Action | |-----------|--------| | Any SendMessage | Run recipient validation §1 first | | Recipient fails validation | Escalate to orchestrator, do NOT send | | Received a worktreePath (gitops/reviewer) | Run worktreePath validation §2 before any `cd`/git op | | worktreePath fails any check | SendMessage orchestrator `error: "invalid worktree path"` + value |
Spec-driven multi-agent orchestration for Claude Code — pure markdown, zero backend, runs on the stock runtime. 13 agents, 36 skills, 19 commands, 15 hooks, per-phase model tiers, opt-in lifecycle hooks, optional cross-device semantic memory.
Repo: komluk/scaffolding
3-tier markdown memory protocol (shared/agent/conversation) for cross-session knowledge. TRIGGER when: reading or writing agent memory files, choosing which…
RESTful API design standards: resource naming, HTTP methods, status codes, pagination, versioning. TRIGGER when: designing new API endpoints, defining error…
Optimize Claude Code context-window usage for accuracy and cost. TRIGGER when: hitting context limits, structuring prompts for an agent, or trimming what gets…
Schema design, index strategy, migration safety, and query analysis. TRIGGER when: designing tables or indexes, writing a migration, or diagnosing a slow…
Knowledge distillation methodology: candidate extraction, confidence scoring, tier routing, conversation-scoped mode. TRIGGER when: running /learn or /distill,…
Docker multi-stage build templates, image security, and docker-compose patterns. TRIGGER when: writing a Dockerfile, composing services, or hardening a…