Skip to content
Back to skills

Fulcra Agent Presence

ASecurity

Add presence + liveness to a fulcra-agent-teams space: agents heartbeat a presence shard, and deterministic folds answer who's live/idle/stale, what each agent is working on, and who a broadcast must reach.

  • 10 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added August 31, 2026
ai-agentsgobashgit

Security analysis

A100/100

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

Scanned September 20, 2026

npx -y skills add ashfulcra/fulcra-tools --skill fulcra-agent-presence --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fulcra Agent Presence?

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

Security grade badge for Fulcra Agent Presence
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/ashfulcra-fulcra-agent-presence/badge)](https://www.skillsdirectory.com/skills/ashfulcra-fulcra-agent-presence)

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: fulcra-agent-presence
description: "Add presence + liveness to a fulcra-agent-teams space: agents heartbeat a presence shard, and deterministic folds answer who's live/idle/stale, what each agent is working on, and who a broadcast must reach."
homepage: "https://github.com/ashfulcra/fulcra-tools"
license: "MIT"
user-invocable: true
metadata: { "openclaw": { "emoji": "πŸ“‘" } }
---

# Fulcra Agent Presence

Enhances [`fulcra-agent-teams`](https://github.com/fulcradynamics/agent-skills). Teams knows who its
*members* are (prose in `index.md`) but not who is **alive right now**. This skill adds a presence
heartbeat + deterministic liveness folds β€” the roster that directives' broadcast semantics, the operator
digest, and role-vacancy escalation all build on. Optional: without it, everything else still works;
broadcasts just degrade to "acked-by-me hides it for me".

## Where to start β€” the re-entrancy probes

Before beating or reading the roster, probe how far this session already got. Enter at the **first probe
that fails** (per the repo's skill-quality pattern, `docs/skill-quality-pattern.md`); every step here is
safely re-runnable (a beat is a single-file overwrite, a claim is a refresh):

| Probe (run in order) | Command | Passes when | If it fails, enter at |
|---|---|---|---|
| Engine usable? | `coord-engine doctor <team>` | exits 0 and the last line is exactly `doctor: healthy` | fix engine/auth first (see fulcra-agent-reconcile) β€” do NOT beat against a broken engine |
| Own shard live? | `coord-engine presence show <team>` | a row for your agent id shows liveness `[live ]` (the `<1h` bucket) | **Beat** β€” run `presence beat <team>` (see Usage) to write/refresh your shard |
| If identity=role, lease held? | `coord-engine roles status <team> <role>` | prints `role <role> in team/<team>: HELD` for the role you act as | **Claim** β€” run `roles claim <team> <role>` (skip this probe entirely if you are not acting under a role identity) |

All probes pass β†’ you are present and (if role-scoped) holding your lease; just keep beating on your
cadence. A brand-new session fails the first or second probe and enters at Beat.

## How it works
- **Beat** (single-file write, safe as a command): `presence beat` writes/refreshes your shard
  `team/<team>/presence/<agent-key>.md` (collision-safe key) (OKF `type: Presence`: agent, workstreams, summary, timestamp).
  Beat whenever you start work, on heartbeat/cron ticks, and when your focus changes.
- **Folds** (deterministic, engine-side β€” never eyeball timestamps):
  - `presence show` β€” roster with `live` (<1h) / `idle` (<24h) / `stale` per agent.
  - `agents` β€” cross-agent digest: each agent's liveness, summary, and open work by status
    (union of presence βˆͺ task owners/assignees from the reconcile aggregate).
  - Roles: `roles claim <team> <role>` writes/refreshes your lease shard; `roles release` deletes it;
    `roles status` folds HELD/VACANT/CONTESTED (see fulcra-agent-roles).

## Usage
```bash
coord-engine presence beat <team> [--agent X] [-w workstream]... [-s "one-liner"]
coord-engine presence show <team> [--json]
coord-engine agents <team> [--json]
coord-engine roles claim <team> <role> [--agent X]     # refresh = re-run
coord-engine roles release <team> <role> [--agent X]
```
`--agent` defaults to `$FULCRA_COORD_AGENT` (or a derived host id). Stale shards drop out of the
presence fold's `[live]` view by age; the shard FILES are not currently garbage-collected (reconcile's
GC covers ack and health shards only). A stale agent reappears by simply beating again.

## Pick your identity by ROLE, not by folder

Set `FULCRA_COORD_AGENT` to the role you are acting as (`maintainer`, `preferences-maintainer`,
`release-reviewer`), not a host/cwd-derived string. Folder-derived ids collide the moment two sessions
share a directory (shared inbox, clobbered presence, ambiguous acks) and rot when a hostname or checkout
path changes; a role-based id survives both and is what teammates actually want to address. Two rules
make it safe:

1. **Claim the role's lease while you act as it** (`roles claim <team> <role>`; see
   fulcra-agent-roles). An `exclusive` role turns two sessions acting as the same role under
   DIFFERENT ids into a visible CONTESTED state. It cannot see two sessions sharing one id string
   (same lease shard, last write wins) β€” see the roles skill's "Role-as-identity" guard matrix for
   the procedural check that covers that case.
2. **Session/host details are metadata, not address.** Put them in the presence `-s` summary or the
   lease body if useful; never in the agent id.

The derived host id remains only as a fallback for throwaway/anonymous sessions that never take
assignments β€” and note it is per-HOST, not per-session (`coord-reconcile:<hostname>`), so two env-less
sessions on one machine still share an id and clobber each other's shards. Any session that acts on the
bus should set an explicit role id.

Files in this skill

  • SKILL.md4.9 KB
  • references/presence-cli.md1.3 KB

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.