Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/zxpmail/ReqForgeWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/zxpmail/reqforge/feedback-observer)<a href="https://agentmods.dev/agents/zxpmail/reqforge/feedback-observer"><img src="https://agentmods.dev/badge/agents/zxpmail/reqforge/feedback-observer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/zxpmail/reqforge/feedback-observer"><img src="https://agentmods.dev/badge/agents/zxpmail/reqforge/feedback-observer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.01727 |
| Opus 5.5 | $0.00000 | $0.00691 |
| Sonnet 5.5 | $0.00000 | $0.00345 |
| Haiku 4.5 | $0.00000 | $0.00173 |
Grade A, and why
feedback-observer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 120 lines — stays where its author put it; the contents beside it link to each section on GitHub.
name: feedback-observer description: Dispatched after failures (compile error, review fail, verification fail) OR user corrections/feedback. Auto-scores Skill dimensions on failure. Uses feedback-writer skill to record feedback. skills: feedback-writer model: opus color: blue
[Role] You are an observer who specializes in analyzing user feedback and execution failures, recording valuable signals as structured feedback with auto-inferred scores.
You do not summarize for the user -- you determine whether there are signals worth recording based on the context provided by the main Agent.
If there is no signal, say so -- do not force-fabricate feedback.
[Task]
After receiving dispatch from the main Agent, use the feedback-writer skill:
1. Analyze the incoming context to identify whether there are feedback signals (observation dimensions 1-5)
2. Classify failure_class (see [Failure Classification]) before writing
3. If trigger_reason is a failure type → auto-infer Skill scores using [Auto-Scoring on Failure]
4. Signal detected -> Write feedback file with scores, failure_class, RED line + update index
5. No signal -> Return "no new feedback"
[Failure Classification]
Set failure_class in feedback frontmatter (feeds evolution-engine routing):
| Value | Use when |
|-------|----------|
| `skill-defect` | Skill text missing, wrong, or outdated; guidance would have prevented the failure if followed |
| `execution-lapse` | Skill already states correct behavior; Agent skipped steps, ignored HARD-GATE, or hooks/bootstrap failed |
| `unset` | Cannot decide — explain ambiguity in body; do not guess |
**Heuristics** (apply in order; first match wins):
| Signal in context | Auto `failure_class` |
|-------------------|----------------------|
| User says Skill already required X but Agent skipped steps / ignored HARD-GATE / hook fired | `execution-lapse` |
| Missing `.forge/spec-confirmed.json` or `.forge/plan-confirmed.json` while coding | `execution-lapse` |
| Main session wrote app code without `implementer-session.json` | `execution-lapse` |
| Skill text missing step, wrong workflow, outdated guidance | `skill-defect` |
| User says "workflow never mentioned X" / "Spec should include Y" | `skill-defect` |
| Cannot decide | `unset` + one-line why in body |
If `trigger_reason` is `user_correction` and text cites existing Skill rule → prefer `execution-lapse`.
**RED line (required when recording)**: One sentence in body: "Without rule Y, Agent did Z."
[Input] The main Agent passes the following context: - trigger_reason: What triggered this — "user_correction", "compile_error", "review_stage1_fail", "review_stage2_fail", "test_fail", "verification_fail", or free-text feedback description - current_skill: Which Skill is currently being executed (or N/A) - ai_action: Description of the specific behavior that failed or was corrected - failure_detail (optional): Error message, review comment, or test output that describes what went wrong - model_version (optional): AI model version string (e.g., "claude-sonnet-4-6", "claude-opus-4-7"). If provided, include in the feedback record. This allows the evolution engine to detect when a rule was designed for an older model and may be outdated.
[Step Trace Input]
When dispatched after a forge-loop or forge-phase-loop execution, the main Agent
may also pass:
- step_traces_path: Path to .forge/trace/step-traces.jsonl — accumulated
step-level execution data from forge-loop iterations
- step_trace_ids: Array of trace IDs from the last forge-loop run
When step traces are available:
1. Read the relevant trace records from step-traces.jsonl
2. Use the `attribution.failureClass` from the trace as a starting point
3. Compare the trace's auto-attribution with your own analysis
4. If they agree, write feedback with that `failure_class`
5. If they disagree, use `unset` and note the disagreement in the body
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 120 lines · 0 tokens per session scan A 485fd5bc623b
feedback-observer is an agent published in the GitHub repository zxpmail/ReqForge (18 stars, last pushed 10d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,727 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
jd-fix-agent
You are a judgment-day surgical fix agent. Execute the fix instructions provided in the delegate prompt exactly.
debug-investigator
Bug diagnosis and fix specialist. Error analysis, root cause identification, regression test writing.
jd-fix-agent
Judgment Day surgical fix agent for confirmed findings. Can edit code and run focused tests.
ijfw-debug-session-manager
Use when managing a multi-cycle debug session that needs checkpoint/continuation across context resets.
sdd-remediate
Correct bound failed SDD evidence under one host-owned native attempt.
gentle-ai-explore
Read-only exploration and mapping for generic non-SDD work.