Repository navigation
feat(vibe): Offer visual QA, check precedent and plugin version - #304
Merged
Merged
Conversation
- Every $vibe start compares the installed vibe with claude-plugins main (scripts/plugin-version.mjs), asks keep going or update when it is older, runs the harness's update commands on the person's choice and asks for a reopen; an unreachable check carries on and says so - Product questions go through a precedent check first: Asana, then another established app with the same flow, then public help centers (scripts/precedent-check.mjs, a headless claude --chrome run in Claude Code, the in-app Browser in Codex), with safety rules for test data and the source recorded in the session decision table - Visual QA is offered at each visible milestone and runs on a polish request, against the acceptance criteria when the ticket or PRD has them and the design pack's best-practice review otherwise; the build loop is otherwise unchanged - vibe 1.0.53, contract tests, script tests and 15 eval cases Testing: pytest plugins/ (2352 passed), node --test over plugins/ (412 pass), ruff and pyright clean, plugin-manifests tests; new eval cases pass in Claude and Codex Risks: the update path runs plugin commands, only on the person's explicit choice
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Operator rulings, 2026-10-16, from a product meeting. Three additions to vibe sessions, in Claude Code and Codex alike:
/visual-qa,$visual-qaagainst.claude/design/soul.md).$vibestart checks the plugin version, asks "keep going or update" when it is outdated, helps with the update, then asks for a reopen. It never blocks when the check cannot run.What changed
skills/vibe/scripts/plugin-version.mjs, vibe skill section 1 "Plugin version"). It compares the running plugin's own manifest (.codex-pluginin Codex,.claude-pluginin Claude Code) with the same file on claude-pluginsmain. Outdated prints the update commands:claude plugin marketplace update closedloop-aiandclaude plugin update vibe@closedloop-aiin Claude Code. In Codex it isplugin marketplace upgrade closedloop-aithenplugin addfor vibe and closedloop-core, orgit pull --ff-onlyfor a local folder marketplace, asINSTALL.mdalready documents. Commands were checked against both CLIs'--help. Any failure to learn the latest version (no network, 404, garbled, a 5 second timeout, a missing manifest) isunknownwith exit 0, and the session carries on and says so.guardrails.md"Plugins and tooling" allows exactly this person-chosen update. The question runs once per conversation, outsidesession-questions.mjs.skills/vibe/scripts/precedent-check.mjs,quality-loop.md"Precedent before asking"). One research brief and its safety rules for both harnesses.claude -p --chrome --allowedTools "mcp__claude-in-chrome__*,WebFetch,WebSearch,Read,Write"run, because a session's Chrome tools are bound when it starts.vibe-requirements-workergains a precedent mode for the help centers when no browser can look.zz vibe precedent check (temp)project withzz testtasks that is deleted and confirmed gone, and connect, invite, share, pay and settings flows are canceled at their confirmation step. Every state is verified before it is recorded, direct observation is kept apart from help centers, and an unsettled situation is reportedundocumented.quality-loop.mdnew section). The offer comes at visible milestones, with exact wording for each basis and avisual-qa:<request ID>key insession-questions.mjs. A polish request runs it without asking, and a decline skips it. It runs between requests after a deploy, never inside a request's build, and its findings go to the same writer as one fix request. The handoff skill's visual QA uses the same basis.guardrails.md, the change worker and the README. The reference check stays the loop's one exception. The communication rules now list the version check and the visual QA offer as allowed messages.Conflicts with existing rules (resolved by following the literal ruling)
test_vibe_test_repair_lean_loop_contract.pyfollows: "run at$handoff, never during the loop", and the QA skill names stay out of the lean loop section.Commands run
plugin-version.test.mjs(8 cases) andprecedent-check.test.mjs(6 cases) cover outdated, current, newer and unreachable installs, both harnesses and the brief's rules.test_vibe_visual_qa_precedent_version_contract.py(11 cases): all 11 fail on 1.0.52.Evals: 15 new cases tagged
precedent,visual-qaandversion-check. They use Claude (claude plugin eval, Sonnet) and Codex (evals/codex/run.py), and the Codex count test moves to 48.