quaid-alerts
Monitors project brain state and surfaces alerts for issues like stale data or embedding drift.
Install
mkdir -p .claude/skills/quaid-alerts && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/14409" && unzip -o skill.zip -d .claude/skills/quaid-alerts && rm skill.zipInstalls to .claude/skills/quaid-alerts
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
|Key capabilities
- →Detect new contradictions in project state
- →Identify resolved gaps in knowledge
- →Flag stale project pages
- →Check for embedding model drift
- →Output structured JSON alerts to stdout
- →Deduplicate alerts within a suppression window
How it works
The skill orchestrates `quaid` commands to check for specific conditions in the project state and then synthesizes the results into structured JSON alerts. It uses a deduplication log to prevent repeated alerts.
Inputs & outputs
When to use quaid-alerts
- →Monitor for documentation drift
- →Check for knowledge contradictions
- →Detect stale project pages
About this skill
Alerts Skill
Overview
The alerts skill monitors brain state and surfaces actionable notifications.
It is designed to be called periodically (e.g., on a cron schedule or after
memory_put / memory_link operations) rather than interactively.
Alerts are written to stdout as structured JSON — one alert object per line — so they can be piped to any downstream handler (logger, MCP client, dashboard).
Alert Types and Priority Levels
| Alert Type | Priority | Trigger Condition |
|---|---|---|
contradiction_new | high | quaid check --all returns a contradiction not seen in the previous run |
gap_resolved | low | A gap transitions from resolved_at IS NULL to resolved_at IS NOT NULL |
page_stale | medium | Page has timeline_updated_at > truth_updated_at by 30+ days AND has > 5 inbound links |
embedding_drift | low | Any page_embeddings row references a model_id that is not the current active model |
Priority ladder (highest to lowest): critical → high → medium → low.
Currently no trigger reaches critical; reserve that level for future use
(e.g., data corruption detected by quaid validate).
Commands
The alerts skill orchestrates existing commands. There is no standalone quaid alerts
command; the agent runs these and synthesises results.
# Check for new contradictions
quaid check --all --json
# Check for recently resolved gaps (compare against last known state)
# `--resolved` is a bare boolean flag: present = list resolved gaps, absent = unresolved.
quaid gaps --resolved --json
# List pages for stale-risk check
quaid list --json
quaid graph <slug> --depth 1 --json # check inbound link count per candidate page
# Check embedding model consistency
quaid validate --embeddings --json
Alert Object Schema
Each alert is a JSON object with this structure:
{
"type": "contradiction_new",
"priority": "high",
"slug": "people/alice",
"message": "Contradiction on predicate 'role' between 'engineer' and 'manager'",
"detected_at": "2026-04-17T09:00:00Z",
"dedup_key": "contradiction_new::people/alice::role"
}
Fields:
type— one of the alert types in the table abovepriority—critical/high/medium/lowslug— the page or resource affected (empty string if not page-scoped)message— human-readable descriptiondetected_at— ISO-8601 UTC timestampdedup_key— opaque string used for suppression (see Deduplication)
Deduplication Rules
The agent MUST maintain a deduplication log (a simple key-value store, a brain page, or a local file). The default suppression window is 24 hours.
Rule: If an alert with the same dedup_key was emitted within the suppression window,
do NOT emit it again. Discard silently.
Dedup key construction:
| Alert Type | Dedup Key Pattern |
|---|---|
contradiction_new | contradiction_new::<slug>::<predicate> |
gap_resolved | gap_resolved::<gap_id> |
page_stale | page_stale::<slug> |
embedding_drift | embedding_drift::global |
If a contradiction is resolved and then re-detected, the dedup key changes because the predicate value pair changes — it will fire again. This is intentional.
Detection Workflows
Contradiction alerts
1. Run: quaid check --all --json
2. For each contradiction in the response:
a. Compute dedup_key = "contradiction_new::<slug>::<predicate>"
b. Check suppression log for key within last 24h
c. If NOT suppressed: emit alert, record key + timestamp in log
Stale page alerts
1. Run: quaid list --json
2. Filter pages where:
(now - timeline_updated_at > 30 days) AND (truth_updated_at < timeline_updated_at)
3. For each candidate slug:
a. Run: quaid graph <slug> --depth 1 --json
b. Count inbound links (edges where target == slug)
c. If inbound_links > 5:
- Compute dedup_key = "page_stale::<slug>"
- Check suppression log; if NOT suppressed: emit medium alert
Gap resolved alerts
1. Run: quaid gaps --resolved --json
2. For each gap with resolved_at != null:
a. Compute dedup_key = "gap_resolved::<gap_id>"
b. If NOT in suppression log: emit low alert, record key
Embedding drift alerts
1. Run: quaid validate --embeddings --json
2. Parse "passed" field
3. If passed == false:
a. Compute dedup_key = "embedding_drift::global"
b. If NOT suppressed within 24h: emit low alert with message "Re-embed recommended"
Suppression Configuration
Agents may configure the suppression window per alert type:
suppression_windows:
contradiction_new: 24h
gap_resolved: 72h # gaps resolve slowly; don't spam
page_stale: 168h # stale pages don't change fast; suppress for 7 days
embedding_drift: 24h
These are agent-side configuration values, not binary flags.
Output Delivery
Write one JSON alert object per line to stdout:
{"type":"contradiction_new","priority":"high","slug":"people/alice",...}
{"type":"page_stale","priority":"medium","slug":"companies/acme",...}
There is no quaid alerts command — the agent itself synthesises this
stream from the orchestrated check / gaps / validate calls above and
writes it to stdout (or a file). Downstream handlers consume that stream.
Assuming the agent has written its alerts to alerts.jsonl:
- Log to a brain page:
quaid put logs/alerts-$(date +%F) < alerts.jsonl - Filter by priority:
jq 'select(.priority == "high")' alerts.jsonl - Count today's alerts:
jq -s 'length' alerts.jsonl
Failure Modes
| Condition | Behaviour |
|---|---|
quaid check --all DB error | Emit one critical-priority alert with type: "check_failed" and the error message |
quaid validate --embeddings fails to run | Skip embedding drift check; log warning to stderr |
| Suppression log unreadable | Emit all alerts (fail open — missing suppression is safer than missing alerts) |
| No brain pages exist | All checks return empty; emit no alerts |
When not to use it
- →When interactive, real-time feedback is needed
- →When a `critical` priority alert is expected from current triggers
Limitations
- →No trigger currently reaches `critical` priority
- →The agent must maintain a deduplication log
- →The skill does not have a standalone `quaid alerts` command
How it compares
This skill provides automated, structured alerts for project inconsistencies, which differs from manual checks or unstructured logging by providing machine-readable output and deduplication.
Compared to similar skills
quaid-alerts side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| quaid-alerts (this skill) | 0 | 2mo | Review | Intermediate |
| distributed-tracing | 5 | 2mo | No flags | Intermediate |
| service-mesh-observability | 5 | 2mo | No flags | Advanced |
| observability-engineer | 12 | 4mo | No flags | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
distributed-tracing
wshobson
Implement distributed tracing with Jaeger and Tempo to track requests across microservices and identify performance bottlenecks. Use when debugging microservices, analyzing request flows, or implementing observability for distributed systems.
service-mesh-observability
wshobson
Implement comprehensive observability for service meshes including distributed tracing, metrics, and visualization. Use when setting up mesh monitoring, debugging latency issues, or implementing SLOs for service communication.
observability-engineer
sickn33
Build production-ready monitoring, logging, and tracing systems. Implements comprehensive observability strategies, SLI/SLO management, and incident response workflows. Use PROACTIVELY for monitoring infrastructure, performance optimization, or production reliability.
prometheus-configuration
wshobson
Set up Prometheus for comprehensive metric collection, storage, and monitoring of infrastructure and applications. Use when implementing metrics collection, setting up monitoring infrastructure, or configuring alerting systems.
langfuse
davila7
Expert in Langfuse - the open-source LLM observability platform. Covers tracing, prompt management, evaluation, datasets, and integration with LangChain, LlamaIndex, and OpenAI. Essential for debugging, monitoring, and improving LLM applications in production. Use when: langfuse, llm observability, llm tracing, prompt management, llm evaluation.
slo-implementation
wshobson
Define and implement Service Level Indicators (SLIs) and Service Level Objectives (SLOs) with error budgets and alerting. Use when establishing reliability targets, implementing SRE practices, or measuring service performance.