From aurora
Cluster failure events by structural fingerprint and append to memory. Used by Diagnostician and Surgeon. A fingerprint is `<top-level-kind>/<refinement>` plus locality (workflow file or agent name). Clustering uses kNN over a structured-feature embedding stored in SQLite. Output is a cluster ID and confidence score; downstream agents use these to decide auto-fix vs HITL.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aurora:aurora-fingerprintThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Failures repeat. The first time SharePoint renames a folder, the swarm sees a novel `SelectorNotFoundException`. The fifth time, that same exception clusters with prior occurrences — and Surgeon's prior remediation is reusable.
Failures repeat. The first time SharePoint renames a folder, the swarm sees a novel SelectorNotFoundException. The fifth time, that same exception clusters with prior occurrences — and Surgeon's prior remediation is reusable.
This skill does the clustering. It writes one record per fault to a SQLite index, indexes it for similarity search, and on subsequent calls returns the matching cluster (or novel if no match).
kind: *_failed or kind: *_faulted event — Diagnostician calls this skill firstFingerprint index: ${AURORA_HOME}/fingerprints.db — SQLite, schema:
CREATE TABLE fingerprints (
id TEXT PRIMARY KEY, -- sha256 of structural features
cluster_id TEXT NOT NULL, -- short stable id
kind TEXT NOT NULL, -- selector-broken, auth-failed, ...
refinement TEXT, -- wnd-aaname-mismatch, token-expired, ...
locality TEXT, -- Workflows/GitHub/FetchLockfile.xaml
exception_type TEXT,
exception_message TEXT,
project_id TEXT,
first_seen TEXT,
last_seen TEXT,
occurrences INTEGER DEFAULT 1,
resolution_pr TEXT, -- gh PR url if Surgeon resolved
resolution_summary TEXT
);
CREATE INDEX idx_cluster ON fingerprints(cluster_id);
CREATE INDEX idx_kind ON fingerprints(kind);
Append-only learnings JSONL: ${AURORA_HOME}/learnings/<YYYY-MM-DD>.jsonl — one event per line, consumed nightly by aurora-compost.
python scripts/cluster.py classify --event-file <path-to-event.json>
# emits: { "cluster_id": "abc123", "novel": false, "size": 12, "confidence": 0.78,
# "prior_resolution": { "pr": "...", "summary": "..." } }
python scripts/cluster.py append --resolution --cluster <id> --pr <url> --summary "..."
# updates the cluster row with Surgeon's resolution
python scripts/cluster.py list --kind selector-broken --limit 20
# debug
A fingerprint is computed deterministically from these structural fields, NOT from the raw exception message text alone:
kind — top-level taxonomy (8 values; see below)refinement — second-level taxonomylocality — workflow file or agent name (normalized to a project-relative path)exception_type — fully-qualified class name (e.g., UiPath.Core.Activities.SelectorNotFoundException)message_skeleton — exception message with selectors, paths, IDs replaced by <token>. Example: "Could not find selector <selector> after <duration>ms".The kNN compares structural features by exact match for kind+refinement+exception_type, weighted edit distance for locality, and shingle overlap for message_skeleton. No LLM-based similarity — keep it deterministic, fast, cheap.
selector-broken — UI selector failed to find or matched > 1auth-failed — 401/403 from any external API or UiPath Identityexternal-api-drift — 4xx or 5xx from a previously-working API; schema change suspectednull-arg — null reference / missing argumenttiming — timeout (UI, HTTP, queue dequeue)data-quality — input shape unexpected; parser failednetwork — DNS / connectivity / TLSlicense — UiPath robot license unavailableIf you encounter a fault that doesn't fit, do NOT invent a new kind on the fly. Emit kind: novel-fault and let Conductor escalate. The compost step is where new kinds become canonical.
exception_type are different fingerprints.message_skeleton step replaces tokens that look like UUIDs, paths, URLs..aurora/triage/<ts>.md.npx claudepluginhub mlbrilliance/uipath-for-coding-agents --plugin auroraGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.