feedback-observing

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

16 stars

Best use case

feedback-observing is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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

Teams using feedback-observing should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/feedback-observing/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/data-ai/feedback-observing/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/feedback-observing/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How feedback-observing Compares

Feature / Agentfeedback-observingStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 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

Related Skills

addressing-pr-feedback

16
from diegosouzapw/awesome-omni-skill

Fetches, organizes, and addresses PR review comments from GitHub. Use when user asks to review PR comments, fix PR feedback, check what reviewers said, address review comments, or handle bot suggestions on a pull request. Triggers on "review PR", "fix comments", "PR feedback", "what did reviewers say", "address PR feedback", "check PR comments".

Async Feedback Loop

16
from diegosouzapw/awesome-omni-skill

Enables mid-stream course correction by monitoring a FEEDBACK.md file for user interventions. Allows the agent to incorporate new instructions without restarting the task.

ai-orchestration-feedback-loop

16
from diegosouzapw/awesome-omni-skill

Multi-AI engineering loop orchestrating Claude, Codex, and Gemini for comprehensive validation. USE WHEN (1) mission-critical features requiring multi-perspective validation, (2) complex architectural decisions needing diverse AI viewpoints, (3) security-sensitive code requiring deep analysis, (4) user explicitly requests multi-AI review or triple-AI loop. DO NOT USE for simple features or single-file changes. MODES - Triple-AI (full coverage), Dual-AI Codex-Claude (security/logic), Dual-AI Gemini-Claude (UX/creativity).

bgo

10
from diegosouzapw/awesome-omni-skill

Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.

Coding & Development

mcp-create-declarative-agent

16
from diegosouzapw/awesome-omni-skill

Skill converted from mcp-create-declarative-agent.prompt.md

MCP Architecture Expert

16
from diegosouzapw/awesome-omni-skill

Design and implement Model Context Protocol servers for standardized AI-to-data integration with resources, tools, prompts, and security best practices

mathem-shopping

16
from diegosouzapw/awesome-omni-skill

Automatiserar att logga in på Mathem.se, söka och lägga till varor från en lista eller recept, hantera ersättningar enligt policy och reservera leveranstid, men lämnar varukorgen redo för manuell checkout.

math-modeling

16
from diegosouzapw/awesome-omni-skill

本技能应在用户要求"数学建模"、"建模比赛"、"数模论文"、"数学建模竞赛"、"建模分析"、"建模求解"或提及数学建模相关任务时使用。适用于全国大学生数学建模竞赛(CUMCM)、美国大学生数学建模竞赛(MCM/ICM)等各类数学建模比赛。

matchms

16
from diegosouzapw/awesome-omni-skill

Mass spectrometry analysis. Process mzML/MGF/MSP, spectral similarity (cosine, modified cosine), metadata harmonization, compound ID, for metabolomics and MS data processing.

managing-traefik

16
from diegosouzapw/awesome-omni-skill

Manages Traefik reverse proxy for local development. Use when routing domains to local services, configuring CORS, checking service health, or debugging connectivity issues.

managing-skills

16
from diegosouzapw/awesome-omni-skill

Install, find, update, and manage agent skills. Use when the user wants to add a new skill, search for skills that do something, check if skills are up to date, or update existing skills. Triggers on: install skill, add skill, get skill, find skill, search skill, update skill, check skills, list skills.

manage-agents

16
from diegosouzapw/awesome-omni-skill

Create, modify, and manage Claude Code subagents with specialized expertise. Use when you need to "work with agents", "create an agent", "modify an agent", "set up a specialist", "I need an agent for [task]", or "agent to handle [domain]". Covers agent file format, YAML frontmatter, system prompts, tool restrictions, MCP integration, model selection, and testing.