fix(development-productivity): Opus 5 migration -- resolve doc-agent verification contradiction, remove invented numbers - #573
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
● Reviewed · 2026-08-05 23:47 UTC · 2 reviews · view run ↗
Rewrites the development-productivity prompts for Opus 5: removes the documentation second-pass verification, replaces invented numeric scores with qualitative reporting, splits the parameter guidance by provider, and prefixes cross-plugin agent references; bumps the plugin 2.4.1 → 2.5.0. AssessmentThe sampling-parameter rule is now stated unconditionally at both sites, and the Suggestions
|
📚 Documentation Check ✅Verdict: Passed Version bump satisfied. Documentation Review for PR #573. Version bump (blocking check): PASS. plugin.json for development-productivity went 2.4.1 to 2.5.0, and the root CLAUDE.md version table was updated to match. No new skills, agents, or commands were added (only content and behavior fixes to existing ones), so a minor bump is defensible even though patch would also be reasonable; either way the bump requirement is satisfied. Plugin CLAUDE.md is up to date: new bullet points reflect the PR's substance (inline verification replacing the requires_verification/fact-checker handoff, the numbers-require-measured-input rule, sequential claude-init-plus generation). File stays under the plugin's 200-line budget (108 lines). plugin.json skills/agents/commands arrays still match directories/files on disk. README.md needs no update: none of the changed concepts (requires_verification, quality_score, coverage percentages, renamed agent references, sampling-parameter guidance) appear in it. Non-blocking observation: agents/prompt-engineer.md still has pre-existing sections (clarity_metrics 0-10 scale, Background Information 0-100 percent completeness, Accuracy/Relevance/Completeness/Coherence Score 0-100 percent) that were not touched by this diff but now sit near the newly added measured-input language in the same file, creating an internal inconsistency worth a follow-up pass. No changelog entry, but that is informational only per review config. ✨ No Documentation Updates NeededAll documentation appears to be up to date with the code changes. 🤖 Generated by Claude Documentation Validator | Mode: |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7845227f07
ℹ️ 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".
| plugin and needs no prefix. | ||
|
|
||
| Invoke it to coordinate: | ||
| **If `development-codebase-tools:agent-orchestrator-agent` is available**, invoke it to coordinate: |
There was a problem hiding this comment.
Allow the orchestration agent before invoking it
For complex /generate-tests runs such as multiple-file, integration/e2e, or --type all, this newly documented path tells the skill to invoke development-codebase-tools:agent-orchestrator-agent, but the allowed tool lists only permit test-writer-agent and development-codebase-tools:context-loader-agent here, and the parent SKILL.md also omits the orchestrator and performance-analyzer-agent used just below. With restricted tools, the model cannot follow the advertised orchestration path for those complex cases; either add the referenced agents to allowed-tools or remove these instructions.
Useful? React with 👍 / 👎.
|
|
||
| `frequency_penalty` and `presence_penalty` are OpenAI-only. The Anthropic Messages API rejects | ||
| them, so never recommend them for a Claude target. On the Claude 5 family, `temperature` is also | ||
| rejected when extended thinking is enabled — which is the common configuration for exactly the |
There was a problem hiding this comment.
temperature, top_p, and top_k are rejected with a 400 on any request — not only when thinking is enabled. Line 344 then recommends temperature: 0.7-0.9 # valid only when thinking is disabled for creative tasks, so an agent following this table emits a request that fails outright. Drop the creative_tasks temperature row and state the rule unconditionally.
| - Temperature/parameter tuning | ||
| - Sampling parameter tuning — parameters are provider-specific. `frequency_penalty` and | ||
| `presence_penalty` are OpenAI-only and are rejected by the Anthropic Messages API. On the | ||
| Claude 5 family, `temperature` is rejected when extended thinking is enabled, and |
There was a problem hiding this comment.
agents/prompt-engineer.md:315: sampling parameters (temperature/top_p/top_k) are rejected unconditionally on the Claude 5 family, not just when extended thinking is enabled.
| Claude 5 family, `temperature` is rejected when extended thinking is enabled, and | |
| Claude 5 family, `temperature`/`top_p`/`top_k` are rejected on any request regardless of | |
| thinking configuration, and `budget_tokens` is not accepted (use `thinking: {type: "adaptive"}`). |
| --- | ||
| description: Generate comprehensive tests for code. Use when user says "write tests for this function", "add unit tests to this file", "generate integration tests for the API", "I need test coverage for this module", or "create e2e tests for the checkout flow". | ||
| allowed-tools: Read, Grep, Glob, Task(subagent_type:test-writer-agent), Task(subagent_type:context-loader-agent), Task(subagent_type:security-analyzer-agent) | ||
| allowed-tools: Read, Grep, Glob, Task(subagent_type:test-writer-agent), Task(subagent_type:development-codebase-tools:context-loader-agent), Task(subagent_type:development-codebase-tools:security-analyzer-agent) |
There was a problem hiding this comment.
🔵 info · consistency — allowed-tools grants test-writer-agent, development-codebase-tools:context-loader-agent, and :security-analyzer-agent, but gen-tests-guide.md (lines 83, 88) instructs invoking development-codebase-tools:agent-orchestrator-agent and :performance-analyzer-agent, which aren't in the allowlist. The guide's own frontmatter (line 4) disagrees further, omitting the security analyzer too — the two files should agree on what this skill may dispatch.
There was a problem hiding this comment.
Caution
…gent names, widen test allowed-tools Address PR #573 review feedback: - prompt-engineer.md / optimize-prompt: temperature, top_p, and top_k are rejected on Claude 5 requests unconditionally, not only when thinking is enabled. The conditional phrasing told a caller who leaves thinking off that temperature was safe, which 400s. Also replace the creative_tasks row that recommended a temperature value for a Claude target. - gen-tests-guide.md: qualify context-loader-agent and security-analyzer-agent in the Orchestration Strategy with their development-codebase-tools prefix. The same file already states the unprefixed form will not resolve cross-plugin. - generate-tests: allowed-tools omitted agent-orchestrator-agent and performance-analyzer-agent that the guide instructs invoking, and the guide's frontmatter disagreed with SKILL.md. Both now grant the same full set. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
7845227 to
427385c
Compare
|
Addressed the review feedback. All four items were real; rebased onto Findings 1 & 2 -- the temperature rule had a wrong condition. Both sites said
Swept both files for any other place presenting sampling params as conditionally allowed; the OpenAI-target block is the only remaining one, which is correct. Kept the existing accurate facts: Finding 3 -- bare agent names contradicted the same file. Suggestion -- allowed-tools was narrower than the instructions. No version bump -- still 2.5.0, since these are fixes to that same unreleased change. One thing left alone deliberately: |
| - **prompt**: The prompt text to analyze or optimize | ||
| - **task_type**: The category of task (e.g., "generation", "analysis", "extraction", "classification", "reasoning", "coding") | ||
| - **target_model**: The LLM or agent that will receive the prompt (e.g., "gpt-4", "claude-3", "llama-2") | ||
| - **target_model**: The LLM or agent that will receive the prompt (e.g., "opus", "sonnet", "haiku", "gpt-5.2", "gemini-3-pro"). For Anthropic models prefer the bare aliases (`opus`, `sonnet`, `haiku`), which track the current release, over pinned ids like `claude-opus-5`. |
There was a problem hiding this comment.
opus/sonnet/haiku are Claude Code /model shorthands, not Anthropic API model ids — sent as model they return 404. And claude-opus-5 isn't a pinned id; it's the undated alias that already tracks the current release. This line steers the agent toward the invalid form in the file this PR exists to correct.
| - **target_model**: The LLM or agent that will receive the prompt (e.g., "opus", "sonnet", "haiku", "gpt-5.2", "gemini-3-pro"). For Anthropic models prefer the bare aliases (`opus`, `sonnet`, `haiku`), which track the current release, over pinned ids like `claude-opus-5`. | |
| - **target_model**: The LLM or agent that will receive the prompt (e.g., "claude-opus-5", "claude-sonnet-5", "claude-haiku-4-5", "gpt-5.2", "gemini-3-pro"). For Anthropic models use the exact alias from the models table — never append a date suffix, and never send a bare `opus`/`sonnet`/`haiku`, which is a Claude Code shorthand rather than an API model id. |
There was a problem hiding this comment.
Note
✅ Approved — see full review in the sticky comment ↑
…gent names, widen test allowed-tools Address PR #573 review feedback: - prompt-engineer.md / optimize-prompt: temperature, top_p, and top_k are rejected on Claude 5 requests unconditionally, not only when thinking is enabled. The conditional phrasing told a caller who leaves thinking off that temperature was safe, which 400s. Also replace the creative_tasks row that recommended a temperature value for a Claude target. - gen-tests-guide.md: qualify context-loader-agent and security-analyzer-agent in the Orchestration Strategy with their development-codebase-tools prefix. The same file already states the unprefixed form will not resolve cross-plugin. - generate-tests: allowed-tools omitted agent-orchestrator-agent and performance-analyzer-agent that the guide instructs invoking, and the guide's frontmatter disagreed with SKILL.md. Both now grant the same full set. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
427385c to
24e8a28
Compare
…iction for Opus 5 documentation.md said verification is an internal phase, never a separate agent call; claude-docs-initializer.md mandated a documentation-agent second pass per batch and set requires_verification: true. Keeps documentation.md's inline posture and fixes the initializer. - initializer: drop the mandated documentation-agent second pass and the requires_verification flag; replace with per-file unverified_claims flagging - documentation.md: remove the machinery that still implemented the old behavior (quality_score, quality_analysis 0-100 fields, accuracy_score, the verified/total*100 formula, the <70% gates, the 25%x4 scoring section) -- every one demanded a number with no measured input - retarget the accuracy gate at CRITICAL claims being wrong or unconfirmed - HIGH tier no longer reads "verify when time permits" (recall filter) - drop the completeness/consistency self-review checklists; keep the accuracy checks that ground claims against the codebase - bound coordinationContext at 200 words (it feeds another agent's context) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ters from agents
prompt-engineer:
- target_model examples were gpt-4/claude-3/llama-2; claude-3 was never a valid
API model id. Replaced with current ids and a note preferring the bare
opus/sonnet/haiku aliases, which self-update.
- frequency_penalty and presence_penalty are OpenAI-only and 400 against the
Anthropic Messages API. Split the parameter table by provider and noted that
temperature is rejected alongside thinking on Claude 5 -- exactly the
analytical/reasoning case where the old table recommended it. Points at
thinking: {type: "adaptive"}; budget_tokens is not accepted on Claude 5.
- expected_impact was a required percentage for a prompt that has not been run;
now prose unless a cited measurement exists. Same for clarity_score and
effectiveness_prediction. Gated the Effectiveness Measurement section on
supplied performance_data or an executed test run.
- added a coverage-first instruction to identified_issues (report every finding,
mark severity/confidence, filter downstream).
researcher:
- comparison_matrix, migration_complexity, and total_cost_ownership invited
invented scores, person-weeks, and dollar totals; each now requires a cited
source or an explicit "unestimated".
- Comparative Analysis Framework only computes weighted totals over cited
measurements.
- added a coverage instruction and an 800-word bound on the report.
agent-tester:
- coverage percentages had unknowable denominators; now counts against an
enumerated list plus named untested gaps.
- AgentQualityScorecard 0-100 overall_score and dimension_scores replaced with
per-dimension findings and an explicit not_tested state.
- added a coverage instruction and a 600-word bound on narrative sections.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… test-writer claude-init-plus: - added an explicit instruction against one-subagent-per-package fan-out. Its Hierarchy Deduplication rule requires knowing what was written at every other level, and a subagent cannot see what a sibling wrote -- so the fan-out breaks it silently, with every individual file still looking correct. - replaced the trailing 4-item verify checklist (and the block restating the same items as failure conditions) with the two conditions that are actually checkable after the fact. update-claude-md: - fixed a dangling sentence fragment at line 16 left by a bad edit. - dropped the Step 10 post-write re-read; deduplication and the no-TODO rule are constraints on the write, and the 200-line case is already in Error Handling. generate-tests: - gen-tests-guide required coverage: number, but its allowed-tools contain no Bash, so it cannot run a coverage tool. Now coverage | 'not_measured' with a coverageSource field. - SKILL.md claimed "Write test files with full coverage" with no Write tool and no Bash; now returns artifacts and names untested behaviors. - context-loader/security-analyzer/performance-analyzer/agent-orchestrator all live in development-codebase-tools; qualified every reference with the cross-plugin prefix, including in allowed-tools where a bare name would not resolve. - added a when-NOT-to-delegate note; the agent list is a menu, not a sequence. optimize-prompt: "GPT-4 best practices" replaced with provider-neutral guidance plus the concrete Anthropic parameter constraints. test-writer: 400-word cap on prose fields (test bodies and enumerated lists are data, not covered); added a coverage instruction for untested behaviors. CLAUDE.md: documented the inline-verification posture, the measured-inputs rule, and the sequential-generation constraint. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…gent names, widen test allowed-tools Address PR #573 review feedback: - prompt-engineer.md / optimize-prompt: temperature, top_p, and top_k are rejected on Claude 5 requests unconditionally, not only when thinking is enabled. The conditional phrasing told a caller who leaves thinking off that temperature was safe, which 400s. Also replace the creative_tasks row that recommended a temperature value for a Claude target. - gen-tests-guide.md: qualify context-loader-agent and security-analyzer-agent in the Orchestration Strategy with their development-codebase-tools prefix. The same file already states the unprefixed form will not resolve cross-plugin. - generate-tests: allowed-tools omitted agent-orchestrator-agent and performance-analyzer-agent that the guide instructs invoking, and the guide's frontmatter disagreed with SKILL.md. Both now grant the same full set. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
24e8a28 to
a102345
Compare
Headline: the documentation-agent verification contradiction
agents/documentation.mdandagents/claude-docs-initializer.mdgave opposite instructions about who verifies generated documentation:documentation.mdstated verification is an internal phase, never a separate agent call.claude-docs-initializer.mdmandated invokingdocumentation-agentas a second-pass verifier per 1-2 file batch, and setrequires_verification: trueso callers kept invoking the fact-checker regardless of what the other file's prose said.Resolution: keep
documentation.md's inline posture, fix the initializer.documentation-agentsecond pass (Mission, Steps 2-3 of batch execution, and theMANDATORY VERIFICATIONconstraint).requires_verification: trueflag from the batch-execution output schema.unverified_claims: the agent flags each claim it could not confirm, inline, with the check it attempted.The related incomplete fix in
documentation.mdAn earlier pass rewrote that file's prose to say verification is inline but left the machinery implementing the old behavior. A prompt's behavior lives in its output schema as much as in its instructions, so all of it is now gone:
quality_score: number # 0-100quality_analysis: {completeness, accuracy, consistency}, each# 0-100unverified_claims+known_gapsaccuracy_scorein the CLAUDE.md output blockcritical_claims_confirmed: boolean+unverifiedlist(verified_claims / total_claims) * 100plus severity-point deductionsaccuracy < 70%gate (both occurrences)Quality Scoring (0-100)with 25%/25%/25%/25% weightsReporting QualityEvery one of those demanded a number the model has no measured input for. It fills the required field, fabricates a score, and the score then reads as evidence while being none.
Changes by delta
Delta 1 — Opus 5 self-verifies
claude-docs-initializer.md: second-agent verification pass removed (above).documentation.md: dropped theCompleteness AssessmentandConsistency Checkssubsections (8 bullets re-reading just-written prose). KeptAccuracy Verification— link validation and code-sync checks ground claims against the codebase, which is not the same as re-reading your own work. Retitled to say so.commands/claude-init-plus.md: replaced the trailing 4-item verify checklist, plus the block restating the same four items as failure conditions, with the two conditions actually checkable after the fact.commands/update-claude-md.md: dropped the Step 10 post-write re-read. Deduplication (Step 6) and the no-[TODO]rule are constraints on the write; the 200-line overflow case was already covered under Error Handling.Delta 2 — delegation
commands/claude-init-plus.md: added an explicit instruction against one-subagent-per-package fan-out, naming the reason. The command's Hierarchy Deduplication rule requires knowing what was written at every other level; a subagent cannot see what a sibling wrote, so each one independently decides a repo-wide convention is worth stating and writes it. Nothing reports a failure, because every individual file still looks correct. Discovery is read-only and explicitly still parallelizable; generation is not.skills/generate-tests/*: added when-NOT-to-delegate guidance. The agent list is a menu of what is available, not a sequence to work through.Delta 3 — recall filters
documentation.md:HIGH (verify when time permits)reads to Opus 5 as license to skip. NowHIGH (verify; if you cannot, flag the claim inline), same for theLOWtier, and the matrix header says it sets work order rather than granting permission to skip a tier.agents/agent-tester.md,agents/prompt-engineer.md: neither had any coverage instruction in its findings section. Both now say to report every genuine finding, mark severity and confidence, and not drop the uncertain or low-severity ones. Added the same toagents/researcher.mdandagents/test-writer.md.CRITICAL:/MANDATORYemphasis where it was not load-bearing.Delta 4 — unbounded deliverables
claude-docs-initializer.md:coordinationContextcapped at 200 words — the highest-cost one here, since it feeds another agent's context.agents/researcher.md(800 words),agents/agent-tester.md(600 words, narrative sections only),agents/test-writer.md(400 words). Each bound explicitly excludes data (test bodies, logs, enumerated lists) so it does not cause dropped findings.Invented numbers
skills/generate-tests/gen-tests-guide.mdcoverage: numberin a skill whoseallowed-toolshas no Bashcoverage | 'not_measured'pluscoverageSource; reported only when a coverage tool actually ranskills/generate-tests/SKILL.mdagents/prompt-engineer.mdexpected_impact: <percentage_improvement>,clarity_score,effectiveness_predictionperformance_dataor an executed run; the whole Effectiveness Measurement section is gated on measured inputagents/researcher.mdtotal_cost_ownership,migration_complexity, scoredcomparison_matrixagents/agent-tester.mdoverall_score: 0-100;dimension_scoresnot_testedstateStale facts
prompt-engineer.md:18:target_modelexamples were"gpt-4","claude-3","llama-2".claude-3was never a valid API model id. Replaced, with a note preferring the bareopus/sonnet/haikualiases since they self-update.prompt-engineer.md:frequency_penaltyandpresence_penaltyare OpenAI-only and 400 against the Anthropic Messages API. The parameter table is now split by provider. Also flagged thattemperatureis rejected alongside thinking on Claude 5 — precisely the analytical/reasoning case where the old table recommended a low temperature — pointing atthinking: {type: "adaptive"}, and notedbudget_tokensis not accepted on Claude 5.skills/optimize-prompt/SKILL.md:47: "GPT-4 best practices" replaced with provider-neutral guidance plus those concrete constraints.Broken references
context-loader-agent,security-analyzer-agent,performance-analyzer-agent, andagent-orchestrator-agentall live in development-codebase-tools, butgenerate-testsreferenced them bare — including insideallowed-tools, where a bare name does not resolve cross-plugin. All now usedevelopment-codebase-tools:<agent-name>. Verified every agent name in this plugin against frontmattername:on disk; the rest resolve correctly.Out-of-scope defect fixed in passing
commands/update-claude-md.md:16— a dangling sentence fragment (constraint, or workflow decision.duplicated from the line above) left by a bad edit.Findings in the brief that did not exist
Reported rather than worked around:
skills/mermaid-diagram,skills/diagram-excalidraw,skills/daily-standup— none exist in this plugin. Its six skills areaudit-dependencies,generate-document,generate-tests,optimize-prompt,research-topic,update-claude-docs. The verification-ceremony findings for those three could not be acted on here.skills/claude-init-plus,skills/update-claude-md— these are commands (commands/*.md), not skills. Fixed at their real paths.skills/update-claude-md/SKILL.md:16dangling fragment — no such file. The fragment is real but lives atcommands/update-claude-md.md:16; fixed there.agents/documentation.md"12 items" — there was no 12-item trailing checklist. The closest match was three 4-bullet Quality Analysis subsections; two were self-review and were removed, one was grounding and was kept.researcher.md"TCO in dollars and migration effort in person-weeks" — the file never names those units; the fields aretotal_cost_ownership: TCO analysis including hidden costsandmigration_complexity: Effort required to switch technologies. The defect is real (both invite unmeasured figures) but the brief's wording overstated what the file says.Version bump
packages/plugins/development-productivity/.claude-plugin/plugin.json2.4.1 -> 2.5.0 (MINOR), and the matching row in the rootCLAUDE.md. The two agreed at 2.4.1 before this change — no drift here, unlike the sibling plugin.Test plan
The lefthook pre-commit gate ran on all three commits:
Every agent name referenced in this plugin was checked against frontmatter
name:on disk:The diff is entirely prompt text plus one version field — no executable behavior in this repo changes.