feedback-observing
Read agent interaction logs across packs and detect operational patterns. Emits state-transition FeedbackEvents for degradation/recovery.
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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/feedback-observing/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How feedback-observing Compares
| Feature / Agent | feedback-observing | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/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 gracefullyRelated Skills
addressing-pr-feedback
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
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
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
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.
mcp-create-declarative-agent
Skill converted from mcp-create-declarative-agent.prompt.md
MCP Architecture Expert
Design and implement Model Context Protocol servers for standardized AI-to-data integration with resources, tools, prompts, and security best practices
mathem-shopping
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
本技能应在用户要求"数学建模"、"建模比赛"、"数模论文"、"数学建模竞赛"、"建模分析"、"建模求解"或提及数学建模相关任务时使用。适用于全国大学生数学建模竞赛(CUMCM)、美国大学生数学建模竞赛(MCM/ICM)等各类数学建模比赛。
matchms
Mass spectrometry analysis. Process mzML/MGF/MSP, spectral similarity (cosine, modified cosine), metadata harmonization, compound ID, for metabolomics and MS data processing.
managing-traefik
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
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
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.