Skip to content
Back to skills

Awareness Report

ASecurity

Assess the live v5.1 awareness loop from thoughts, delivered posts, stream coverage, tool traces, and errors

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
ai-agentsgosqldatabase

Works with

  • cursor

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add jthingelstad/elixir-bot --skill awareness-report --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Awareness Report?

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

Security grade badge for Awareness Report
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jthingelstad-awareness-report/badge)](https://www.skillsdirectory.com/skills/jthingelstad-awareness-report)

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: awareness-report
description: Assess the live v5.1 awareness loop from thoughts, delivered posts, stream coverage, tool traces, and errors
---

# Awareness Report

Read `/Users/otto/Projects/clash-royale/elixir-bot/elixir-v51.db` and assess whether the
single live awareness loop is making good editorial decisions. This is a
read-only report. It answers “is Elixir making good calls?”; `log-triage`
answers “is the runtime alive?”

Production evidence lives in:

- `awareness_thoughts`: one deliberation or gated silence per loop, including
  plan, reason, model, and tool trace.
- `awareness_posts`: confirmed deliveries, destination lane, Discord message
  id, and covered signal keys.
- `stream_cursors`: the durable awareness positions.
- `runtime_job_status`: scheduler health. Failures themselves are in
  `logs/elixir-error.log` (the `runtime_incidents` ledger was dropped in V20 --
  it never recorded a row).

`awareness_ticks` was deleted at the v5.1 clean break. Never query it from the
operational database.

## Scope

Default to the last 7 days. If the available history is under 24 hours, say so
and stop rather than over-interpreting a bootstrap window. Timestamps are UTC.

```sql
SELECT MIN(at) AS first_loop, MAX(at) AS last_loop, COUNT(*) AS loops
FROM awareness_thoughts;
```

## Queries

Run these against `elixir-v51.db` with read-only SQLite access.

### 1. Loop outcomes

```sql
SELECT COUNT(*) AS loops,
       SUM(chose_silence) AS deliberate_silences,
       SUM(post_count) AS posts_planned,
       SUM(CASE WHEN skipped_reason LIKE '⚠️ tick failed:%' THEN 1 ELSE 0 END) AS failed_loops,
       SUM(CASE WHEN model LIKE 'gate:%' THEN 1 ELSE 0 END) AS gated_loops
FROM awareness_thoughts
WHERE datetime(at) >= datetime('now', '-7 days');
```

### 2. Delivered lanes and signal coverage

```sql
SELECT lane, COUNT(*) AS posts,
       COUNT(DISTINCT discord_message_id) AS confirmed_messages,
       SUM(json_array_length(covers_json)) AS covered_signals,
       MAX(posted_at) AS last_post
FROM awareness_posts
WHERE datetime(posted_at) >= datetime('now', '-7 days')
GROUP BY lane
ORDER BY posts DESC;
```

### 3. Silence reasons

```sql
SELECT COALESCE(skipped_reason, '(none)') AS reason, COUNT(*) AS loops
FROM awareness_thoughts
WHERE datetime(at) >= datetime('now', '-7 days') AND chose_silence = 1
GROUP BY reason
ORDER BY loops DESC
LIMIT 12;
```

### 4. Tool use and failures

```sql
SELECT json_extract(tool.value, '$.tool') AS tool,
       COUNT(*) AS calls,
       SUM(json_extract(tool.value, '$.allowed') = 0) AS denied,
       SUM(json_extract(tool.value, '$.result') NOT LIKE 'ok%') AS non_ok
FROM awareness_thoughts AS thought,
     json_each(COALESCE(thought.tool_trace_json, '[]')) AS tool
WHERE datetime(thought.at) >= datetime('now', '-7 days')
GROUP BY tool
ORDER BY calls DESC;
```

Also inspect failed thoughts, posts without a linked loop number, awareness
errors in `logs/elixir-error.log`, and the `awareness_loop` row in
`runtime_job_status`. Use exact thought loop
numbers, post ids, Discord message ids, and timestamps as evidence.

## Interpretation

Prioritize:

1. Failed loops, cursor stalls, live errors in `logs/elixir-error.log`, or a
   long gap since the last confirmed post.
2. Hard-post signals repeatedly resurfacing without delivery.
3. Tool denials/errors or unusually large tool-call fan-out.
4. Repetitive lane use, low-value copy, or silence reasons that contradict the
   actual read.

Deliberate silence is healthy when the reason matches the situation. A missing
post is not automatically a defect; distinguish editorial silence from a failed
turn or failed delivery.

## Output

Keep a healthy report under 40 lines:

```text
## Awareness Report — <window>

Summary: <one sentence>

Headline
- <loops, silence, planned and confirmed posts, covered signals>

Priority issues
1. <exact signature and evidence>

Patterns worth noting
- <lane, tool, coverage, or silence pattern>
```

Do not edit code or prompts. Report evidence and recommend a specific next
inspection target. If healthy, say so in one sentence and stop.

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…