Skip to content
Back to skills

Feedback Observing 0xhoneyjar Construct Beehive

ASecurity

Read agent interaction logs across packs and detect operational patterns. Emits state-transition FeedbackEvents for degradation/recovery.

  • 666 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 2, 2026
ai-agentsbash

Security analysis

A100/100

Scanned September 2, 2026

npx -y skills add majiayu000/claude-skill-registry --skill feedback-observing-0xhoneyjar-construct-beehive --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Feedback Observing 0xhoneyjar Construct Beehive?

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

Security grade badge for Feedback Observing 0xhoneyjar Construct Beehive
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-feedback-observing-0xhoneyjar-construct-beehive/badge)](https://www.skillsdirectory.com/skills/majiayu000-feedback-observing-0xhoneyjar-construct-beehive)

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: feedback-observing
description: Read agent interaction logs across packs and detect operational patterns. Emits state-transition FeedbackEvents for degradation/recovery.
user-invocable: true
allowed-tools: Read, Write, Glob, Grep, Bash
---

# Feedback Observing

Read agent interaction logs across all packs, detect operational patterns (error rates, duration outliers, zero-invocation skills), and emit state-transition FeedbackEvents when patterns change.

This skill closes the agent feedback loop — agents report back what worked and what failed.

---

## Core Principle

**State-transition only emission.** Only emit FeedbackEvents when a skill's operational state *changes* (healthy → concerning, concerning → healthy). This prevents recursive signal inflation from repeated analysis of the same stable state.

---

## Triggers

```
/feedback-observe                    # Analyze all packs' agent logs
/feedback-observe --pack observer    # Specific pack only
/feedback-observe --since 7d         # Time range (default: 30d)
```

---

## When to Use

- Periodically to check agent health across packs
- After deploying new skills or modifying existing ones
- When suspecting a skill is silently failing
- As part of a daily/weekly maintenance routine

---

## Workflow

### Phase 1: Collect Logs

```
Glob: grimoires/*/agent-logs/*.jsonl

For each JSONL file:
  Parse each line (skip malformed lines, log warning)
  Filter by --pack if specified
  Filter by --since if specified (compare ts field)

Collect all log entries into a unified dataset.
```

**If no log files found**: Report "No agent logs found. Skills need to emit logs — see agent-log-format.md" and exit.

### Phase 2: Detect Patterns

Group entries by `pack` and `skill`, then compute:

```
For each (pack, skill) pair:

  1. ERROR RATE
     error_count = entries where status="error"
     total_count = all entries
     error_rate = error_count / total_count

     IF error_rate > 0.20 → state = "concerning"
     IF error_rate <= 0.10 → state = "healthy"
     IF 0.10 < error_rate <= 0.20 → state = "warning"

  2. DURATION OUTLIERS
     Compute median duration_ms across all entries for this skill
     IF any entry has duration_ms > 2x median → flag as outlier

     IF outlier_count / total_count > 0.20 → state = "slow"

  3. ZERO-INVOCATION SKILLS
     Compare skills found in logs against manifest.json skills arrays
     Skills in manifest but NOT in logs → "dormant" (potential discoverability problem)

  4. RETRY PATTERNS
     Detect same skill invoked 3+ times within 5 minutes → "friction"

  5. MISSING ARTIFACT PATTERNS
     Entries where error contains "not found" or "missing" → "missing dependency"
```

### Phase 3: Compare with Previous Report

```
Read previous report: grimoires/observer/agent-feedback/report-latest.md

IF previous report exists:
  Parse previous state per skill
  Compare current state with previous state

  ONLY emit FeedbackEvents for STATE TRANSITIONS:
    - healthy → concerning (degradation)
    - concerning → healthy (recovery)
    - new skill appeared as "dormant"
    - skill crossed duration outlier threshold for first time

  DO NOT re-emit for unchanged states.

IF no previous report:
  Treat all current states as new (emit for any non-healthy state)
```

### Phase 4: Emit State-Transition FeedbackEvents

For each state transition detected, emit via the Loa event bus:

```bash
source .claude/scripts/lib/event-bus.sh

emit_event "observer.state_transition" \
  '{
    "domain": "code",
    "target": {
      "type": "artifact",
      "selector": "{pack}/{skill}"
    },
    "signal": {
      "direction": "{negative for degradation, positive for recovery}",
      "weight": 0.5,
      "specificity": 0.7,
      "content": "{state_transition}: {description}",
      "kind": "behavioral"
    },
    "fingerprint": "{sha256 of '{pattern_type}:{pack}:{skill}:{window_start}:{window_end}'}"
  }' \
  "observer/feedback-observing" \
  "" "" \
  "{pack}/{skill}"
```

The bus auto-generates `id`, `time`, `specversion` in the CloudEvents envelope.

**Fingerprint deduplication**: The `fingerprint` field maps to the bus idempotency key. Same fingerprint = same finding for the same time window. The bus `.idempotency/` store prevents duplicate processing.

### Phase 5: Generate Report

Write to `grimoires/observer/agent-feedback/report-{YYYY-MM-DD}.md`:

```markdown
---
type: agent-feedback-report
generated: "{RFC 3339 UTC}"
period: "{start} to {end}"
packs_analyzed: {N}
skills_analyzed: {N}
transitions_detected: {N}
---

# Agent Feedback Report: {date}

## Skill Health Matrix

| Pack | Skill | Invocations | Error Rate | Median Duration | State |
|------|-------|-------------|-----------|-----------------|-------|
| observer | observing-users | 12 | 8% | 340ms | healthy |
| artisan | inscribing-taste | 5 | 40% | 120ms | concerning |
| ... | ... | ... | ... | ... | ... |

## State Transitions (since last report)

| Skill | Previous | Current | Evidence |
|-------|----------|---------|----------|
| artisan/inscribing-taste | healthy | concerning | Error rate 8% → 40% |

## Duration Analysis

| Skill | Median | P95 | Outliers |
|-------|--------|-----|----------|
| ... | ... | ... | ... |

## Dormant Skills

| Pack | Skill | In Manifest | Invocations |
|------|-------|-------------|-------------|
| ... | ... | yes | 0 |

## Suggested Actions

- {actionable recommendation per concerning skill}
```

Also copy to `grimoires/observer/agent-feedback/report-latest.md` (overwrite).

Create `grimoires/observer/agent-feedback/` directory if it doesn't exist.

---

## Error Handling

| Error | Resolution |
|-------|------------|
| No log files found | Report empty state, exit 0 |
| Malformed JSONL line | Skip line, log warning, continue |
| No previous report | Treat all states as new |
| Manifest not found | Skip dormant skill detection |
| `--pack` not found in logs | Report "No logs for pack {name}" |

---

## Integration Points

- **Reads**: `grimoires/*/agent-logs/*.jsonl`, `grimoires/observer/agent-feedback/report-latest.md`
- **Writes**: `grimoires/observer/agent-feedback/report-{date}.md`, `grimoires/shared/feedback/events/{date}.jsonl`
- **Depends on**: Skills emitting agent logs (Task 1.7)
- **Consumed by**: `/artisan-patterns` cross-domain analysis, `/stale` confidence system

---

## Validation

- [ ] Reads all packs' agent logs via glob
- [ ] Correctly computes error rate, duration outliers
- [ ] Only emits FeedbackEvents on state transitions
- [ ] Fingerprint prevents duplicate emissions for same window
- [ ] Report includes all analyzed skills
- [ ] `report-latest.md` is updated
- [ ] `--pack` filter works correctly
- [ ] `--since` filter works correctly
- [ ] Handles empty/missing log directories gracefully

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.