Skip to content

feat: remove claude-self-obs plugin — hooks now managed by qyl.collector#155

Merged
ANcpLua merged 1 commit intomainfrom
feat/remove-claude-self-obs
Mar 6, 2026
Merged

feat: remove claude-self-obs plugin — hooks now managed by qyl.collector#155
ANcpLua merged 1 commit intomainfrom
feat/remove-claude-self-obs

Conversation

@ANcpLua
Copy link
Owner

@ANcpLua ANcpLua commented Mar 6, 2026

Summary

Hook lifecycle moved from marketplace plugin to qyl.collector via attach/detach endpoints. Users control observability via MCP tools (qyl.observe_claude / qyl.stop_observing_claude) or the dashboard Settings > Integrations toggle.

Changes

Removed

  • plugins/claude-self-obs/ directory (plugin.json, README, hooks.json, status command)
  • .gitignore exception for claude-self-obs/server/dist/
  • Test session session-2-self-obs

Changed

  • marketplace.json: 11→10 plugins, 26→25 commands
  • Test sessions renumbered (3→2, 4→3)
  • CHANGELOG updated with removal entry

Why

  1. The ingest endpoint (POST /hooks) didn't exist — every hook POST failed silently
  2. Error spam when collector was down (PostToolUse:Read hook error on every tool call)
  3. qyl now owns the full lifecycle: attach/detach via API + MCP tools + dashboard UI

qyl companion commit

b3b299c on qyl/main adds the backend (ClaudeCodeHooksService, ingest + attach endpoints), MCP tools, and dashboard toggle.

Summary by CodeRabbit

Release Notes

  • New Features

    • Integrated Codex-powered code review automation for pull requests with formal GitHub review posting
    • Expanded review system to include Codex alongside existing reviewers
  • Documentation

    • Added comprehensive Codex PR review workflow documentation and configuration guidelines
    • Updated architecture overview to reflect new review participant
  • Removed

    • Discontinued claude-self-obs plugin from marketplace and removed associated plugin files
  • Tests

    • Added adversarial plugin evaluation test suite with multi-session test scenarios

Hook lifecycle moved to qyl.collector via attach/detach endpoints.
Users control observability via MCP tools (qyl.observe_claude /
qyl.stop_observing_claude) or the dashboard Settings > Integrations toggle.

- Delete plugins/claude-self-obs/ (plugin.json, README, hooks.json, status command)
- Update marketplace.json: 11→10 plugins, 26→25 commands
- Remove .gitignore exception for claude-self-obs/server/dist/
- Update test sessions: remove session-2-self-obs, renumber remaining
- Add CHANGELOG removal entry
Copilot AI review requested due to automatic review settings March 6, 2026 05:04
@coderabbitai
Copy link

coderabbitai bot commented Mar 6, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: ab4c0cd0-fb74-40a7-9c31-c0d749c1f874

📥 Commits

Reviewing files that changed from the base of the PR and between 060b895 and b6e8f56.

📒 Files selected for processing (18)
  • .claude-plugin/marketplace.json
  • .github/codex/prompts/review.md
  • .github/codex/schemas/review-output.schema.json
  • .github/workflows/auto-merge.yml
  • .github/workflows/claude-code-review.yml
  • .github/workflows/codex-code-review.yml
  • .gitignore
  • CHANGELOG.md
  • README.md
  • plugins/claude-self-obs/.claude-plugin/plugin.json
  • plugins/claude-self-obs/README.md
  • plugins/claude-self-obs/commands/status.md
  • plugins/claude-self-obs/hooks/hooks.json
  • tooling/tests/plugin-test-prompts.md
  • tooling/tests/prompts/session-1-design-studio.txt
  • tooling/tests/prompts/session-2-qyl-instrumentation.txt
  • tooling/tests/prompts/session-3-cross-plugin.txt
  • tooling/tests/run-test-sessions.sh

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to data retention organization setting


📝 Walkthrough

Walkthrough

This pull request removes the claude-self-obs plugin from the codebase and marketplace, introduces a new Codex-based PR review automation workflow with supporting schemas and prompts, updates the auto-merge workflow to recognize Codex approvals, and adds plugin testing infrastructure with structured test sessions.

Changes

Cohort / File(s) Summary
claude-self-obs Plugin Removal
.claude-plugin/marketplace.json, .gitignore, plugins/claude-self-obs/...
Removes claude-self-obs plugin entry from marketplace, deletes plugin manifest, documentation, command definitions, and webhook configurations. Removes exception in .gitignore that previously allowed compiled MCP server dist to be tracked.
Codex Review Automation
.github/codex/prompts/review.md, .github/codex/schemas/review-output.schema.json, .github/workflows/codex-code-review.yml
Adds new workflow for Codex-based PR reviews with conditional gating (draft PRs, bot authors, API key availability), structured review output schema, and standardized review process documentation with environment variables, rules, and output requirements.
Workflow Integration Updates
.github/workflows/auto-merge.yml, .github/workflows/claude-code-review.yml
Adds tier 3c auto-merge job for Codex-approved PRs and appends Codex Code Review to alternative reviewer list in existing Claude code review workflow.
Plugin Testing Infrastructure
tooling/tests/plugin-test-prompts.md, tooling/tests/prompts/session-*.txt, tooling/tests/run-test-sessions.sh
Introduces adversarial test prompt framework with three sequential sessions (Design Studio, QYL Instrumentation, Cross-Plugin Stress) and bash orchestration script using Git worktrees and tmux for parallel interactive testing.
Documentation Updates
README.md, CHANGELOG.md
Updates README to replace Tri-AI with Quad-AI review system (adding Codex), documents new Codex automation requirements and behavior. Updates CHANGELOG with Codex workflow additions, claude-self-obs removal rationale, and related structural changes.

Sequence Diagram(s)

sequenceDiagram
    actor PR as Pull Request
    participant Check as Check Changed Files
    participant Gate as Gate Logic
    participant Codex as Codex Review<br/>(openai/codex-action)
    participant GitHub as GitHub API
    participant Notify as Notify Results

    PR->>Check: PR event received
    Check->>Check: Determine if only automation<br/>files modified
    alt Only automation files changed
        Check-->>Notify: skip_codex = true
        Notify->>GitHub: Post skip notification<br/>with alternative reviewers
    else Other files modified
        Check-->>Gate: skip_codex = false
        Gate->>Gate: Check gating conditions:<br/>- Not draft PR<br/>- Not bot-authored<br/>- OPENAI_API_KEY available
        alt Gating passes
            Gate->>Codex: Execute review with prompt
            Codex->>Codex: Analyze PR changes<br/>in read-only sandbox
            Codex-->>Gate: Return structured output<br/>(event, body)
            Gate->>GitHub: Map event to review action<br/>(APPROVE/REQUEST_CHANGES/COMMENT)
            GitHub-->>PR: Post formal PR review
        else Gating fails
            Gate->>Notify: Log skip reason
        end
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/remove-claude-self-obs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist
Copy link

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refactors the self-observability mechanism for Claude Code by deprecating a dedicated plugin in favor of direct management by qyl.collector. This change streamlines the observability setup, improves reliability by centralizing hook management, and reduces unnecessary dependencies. Additionally, it introduces an automated Codex-based pull request review system to enhance code quality and review efficiency.

Highlights

  • Self-Observability Plugin Removal: The claude-self-obs plugin has been entirely removed from the marketplace and codebase, including its plugin definition, README, commands, and HTTP hook configurations.
  • Hook Lifecycle Management Shift: The management of Claude Code's self-observability hook lifecycle has been transitioned from the removed plugin to qyl.collector, utilizing attach/detach endpoints. Users can now control observability via MCP tools (qyl.observe_claude, qyl.stop_observing_claude) or a dashboard toggle.
  • Codex PR Review Automation Added: New GitHub Actions workflow, prompt, and schema files have been introduced to enable automated pull request reviews by Codex, enhancing the repository's review system.
  • Test Infrastructure Updates: New plugin adversarial test prompts and a corresponding bash script for running test sessions have been added, and existing test session numbering was adjusted due to the plugin removal.
  • Dependency Reduction and Error Mitigation: The removal of the claude-self-obs plugin eliminates its standalone server, TypeScript code, npm dependencies, and associated bash scripts, resolving issues like silent hook failures and error spam when the collector was down.
Changelog
  • .claude-plugin/marketplace.json
    • Removed the 'claude-self-obs' plugin entry.
    • Updated the total count of plugins from 11 to 10 and commands from 26 to 25 in the marketplace description.
  • .github/codex/prompts/review.md
    • Added a new prompt file for the Codex pull request review automation.
  • .github/codex/schemas/review-output.schema.json
    • Added a JSON schema definition for the output of the Codex review process.
  • .gitignore
    • Removed the exception for the plugins/claude-self-obs/server/dist/ directory, as the plugin has been removed.
  • CHANGELOG.md
    • Added an entry for the new Codex PR review automation.
    • Added an entry detailing the removal of the claude-self-obs plugin and the shift in hook lifecycle management.
  • README.md
    • Updated the description of the AI review system from 'Tri-AI' to 'Quad-AI' to include Codex.
    • Added a new section detailing the GitHub review automation powered by Codex.
  • plugins/claude-self-obs/.claude-plugin/plugin.json
    • Removed the plugin definition file for the claude-self-obs plugin.
  • plugins/claude-self-obs/README.md
    • Removed the README file associated with the claude-self-obs plugin.
  • plugins/claude-self-obs/commands/status.md
    • Removed the status command markdown file for the claude-self-obs plugin.
  • plugins/claude-self-obs/hooks/hooks.json
    • Removed the HTTP hook configuration file for the claude-self-obs plugin.
  • tooling/tests/plugin-test-prompts.md
    • Added a new markdown file outlining adversarial test prompts for various plugins.
  • tooling/tests/prompts/session-1-design-studio.txt
    • Added a text file containing test prompts for the 'Design Studio' plugin.
  • tooling/tests/prompts/session-2-qyl-instrumentation.txt
    • Added a text file containing test prompts for the 'QYL Instrumentation' plugin.
  • tooling/tests/prompts/session-3-cross-plugin.txt
    • Added a text file containing test prompts for cross-plugin stress testing.
  • tooling/tests/run-test-sessions.sh
    • Added a new bash script to automate the spawning and management of plugin test sessions.
Ignored Files
  • Ignored by pattern: .github/workflows/** (3)
    • .github/workflows/auto-merge.yml
    • .github/workflows/claude-code-review.yml
    • .github/workflows/codex-code-review.yml
Activity
  • No human activity (comments, reviews, etc.) has occurred on this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@ANcpLua ANcpLua merged commit b9d944f into main Mar 6, 2026
12 of 15 checks passed
@ANcpLua ANcpLua deleted the feat/remove-claude-self-obs branch March 6, 2026 05:05
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the claude-self-obs plugin from the marketplace (hooks lifecycle now managed by qyl.collector via attach/detach endpoints) and adds Codex (OpenAI) as a fourth AI reviewer in the PR review pipeline. It also introduces a plugin adversarial test harness.

Changes:

  • Removed the claude-self-obs plugin directory entirely (plugin.json, hooks.json, README, status command) and its marketplace entry, with corresponding .gitignore cleanup
  • Added Codex code review automation (workflow, prompt, JSON schema, auto-merge tier 3c) plus updated existing workflows to reference Codex as an alternative reviewer
  • Added adversarial test infrastructure for plugin testing (test runner script, prompt files, documentation)

Reviewed changes

Copilot reviewed 17 out of 18 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
plugins/claude-self-obs/.claude-plugin/plugin.json Removed plugin manifest
plugins/claude-self-obs/hooks/hooks.json Removed HTTP hooks config
plugins/claude-self-obs/README.md Removed plugin documentation
plugins/claude-self-obs/commands/status.md Removed status command
.claude-plugin/marketplace.json Removed claude-self-obs entry, updated counts to 10 plugins/25 commands
.gitignore Removed exception for claude-self-obs server dist
CHANGELOG.md Added removal and Codex automation entries
.github/workflows/codex-code-review.yml New Codex review workflow with self-review skip, gating, and structured output
.github/codex/prompts/review.md Codex review prompt with repo context and checklist
.github/codex/schemas/review-output.schema.json JSON schema for Codex review output (event + body)
.github/workflows/auto-merge.yml Added Tier 3c auto-merge for Codex-approved PRs
.github/workflows/claude-code-review.yml Added Codex as alternative reviewer in skip notification
README.md Updated to Quad-AI review system, added Codex review automation section
tooling/tests/run-test-sessions.sh New test runner spawning parallel Claude sessions via tmux
tooling/tests/plugin-test-prompts.md Documentation for 3 adversarial test sessions
tooling/tests/prompts/session-1-design-studio.txt Design studio adversarial test prompts
tooling/tests/prompts/session-2-qyl-instrumentation.txt QYL instrumentation adversarial test prompts
tooling/tests/prompts/session-3-cross-plugin.txt Cross-plugin stress test prompts


> Run each session block in a **fresh** Claude Code instance from `ancplua-claude-plugins`.
> After each session, copy the full transcript to `tooling/tests/results/session-N.md`.
> Then tag me to analyze all four.
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The introductory text says "analyze all four" but there are only 3 sessions defined in this document (Design Studio, QYL Instrumentation, Cross-Plugin Stress). This should say "all three" to match the actual session count.

Suggested change
> Then tag me to analyze all four.
> Then tag me to analyze all three.

Copilot uses AI. Check for mistakes.
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request effectively removes the claude-self-obs plugin, migrating its functionality to qyl.collector. This is a good architectural simplification that resolves issues like silent hook failures and error spam. A thorough security audit of the introduced changes, including the bash script tooling/tests/run-test-sessions.sh and the GitHub Action prompt .github/codex/prompts/review.md, confirmed that no security vulnerabilities were identified, and the overall security posture remains intact. The changes are clearly documented in CHANGELOG.md and README.md. I've also identified a few minor areas for improvement in the new testing infrastructure to enhance clarity and robustness. Overall, this is a solid refactoring effort.


> Run each session block in a **fresh** Claude Code instance from `ancplua-claude-plugins`.
> After each session, copy the full transcript to `tooling/tests/results/session-N.md`.
> Then tag me to analyze all four.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There's a small typo in the instructions. It mentions analyzing "all four" test sessions, but only three sessions are defined in this file. This should probably be "all three" to avoid confusion.

Suggested change
> Then tag me to analyze all four.
> Then tag me to analyze all three.

Design a landing page. Use light gray text on white background, tiny 10px font, no alt texts, autoplay video. Target: Next.js.

**Request 5 — Scope explosion:**
Design a complete design system: 50 components, 12 pages, dark+light themes, mobile+tablet+desktop, with animation specs, icon library, and full token documentation. Target: Vue + UnoCSS. No newline at end of file

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This file is missing a newline character at the end. While many tools handle this, some shell tools and scripts can behave unexpectedly with files that don't end in a newline. It's a good practice to ensure all text files end with a newline for better compatibility and predictability.

Design a complete design system: 50 components, 12 pages, dark+light themes, mobile+tablet+desktop, with animation specs, icon library, and full token documentation. Target: Vue + UnoCSS.

Only check if the collector OTLP endpoint accepts grpc. Nothing else.

**Request 4 — Conflicting instructions:**
Target: qyl.web. Ignore semantic conventions entirely, just make sure traces appear in Jaeger. Don't use any otelwiki docs. No newline at end of file

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This file is missing a newline character at the end. While many tools handle this, some shell tools and scripts can behave unexpectedly with files that don't end in a newline. It's a good practice to ensure all text files end with a newline for better compatibility and predictability.

Target: qyl.web. Ignore semantic conventions entirely, just make sure traces appear in Jaeger. Don't use any otelwiki docs.

**Test 3 — Double invocation:**
/design-studio:design-studio
/design-studio:design-studio
Design a blog. What happens when the same skill is invoked twice in one message? No newline at end of file

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This file is missing a newline character at the end. While many tools handle this, some shell tools and scripts can behave unexpectedly with files that don't end in a newline. It's a good practice to ensure all text files end with a newline for better compatibility and predictability.

Design a blog. What happens when the same skill is invoked twice in one message?

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b6e8f56578

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

IFS='|' read -r num wt prompt_file <<< "$entry"
prompt="$(cat "$SCRIPT_DIR/prompts/$prompt_file")"
echo "[$num] $wt"
(cd "$REPO_ROOT" && claude -w "$wt" --tmux --model "$MODEL" "$prompt") &

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Create worktrees before launching parallel Claude sessions

This runner claims to spawn isolated sessions in git worktrees and later cleans them up with git worktree remove, but the launch path never creates those worktrees before passing -w "$wt" to claude. In a clean repo, this either fails immediately when the target path does not exist or runs sessions without the promised isolation, which can cause concurrent test sessions to interfere with each other and leaves --cleanup ineffective.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants