Repository navigation
feat(work-items): read issue-body skeletons from the org issue-body contract - #15453
Conversation
…ontract track add, decompose, the agent brief and bugs:write now take their issue-body headings from the issue-body contract the standards sync delivers into each plugin's reference/ directory, the same record the org issue forms are generated from. triage checks an issue body against the contract with scripts/check-body.mjs, which accepts a field under a ## or ### heading and treats a form's skipped answer as empty. The tidy deferred-item body follows the task type. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
Spoke files are read as raw bytes, so the contract link in track add's
action file and the bugs:write template uses a relative path instead of
${CLAUDE_PLUGIN_ROOT}. The changelog fragments no longer start a line
with a heading marker.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
Keeps the triage SKILL.md under its line cap: the hub names the script and points at context/body-check.md for the steps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
The standards sync delivers the contract once, to docs/contracts/issue-body/contract.json. sync-shared-copies.sh now copies a JSON canonical byte for byte (JSON has no comment syntax for a header) and generates plugins/bugs and plugins/work-items reference/issue-body-contract.json from it; the cross-plugin registry records the cluster. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0c789afd8b
ℹ️ 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".
|
claude-security-review reviewed Security review: PR #15453 (incremental, cb3a459 → 1afd906)I found no security issues. critical-findings: 0 Scope: I read every hunk of the 4 files in the incremental scope. None of them matches a Blocking only: this lane already reviewed an earlier head, so this review would have reported only CRITICAL or IMPORTANT findings. There were none. What I checked
|
|
claude-review reviewed Code review (incremental, blocking only):
|
check-body.mjs replaced the open ## section when a ### heading appeared, so a field answered under a sub-heading read as empty. Keep a stack of open sections and give each prose line to every section still open. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
plan-test-lanes.sh failed select-tests because check-body.test.mjs had no sibling .test.sh and no Node package in the test-node lane holds it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
check-vocabulary read "contract" near "brief" as the retired planning Brief sense. Allow the named issue-body contract, and name it on the two lines that said only "contract". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
No related issue: owner-approved design (org issue and PR template interview, Q34 and Q36-Q38, 2026-11-11)
Summary
The org issue forms are now generated in
melodic-software/standardsfrom one issue-body contract, and the standards sync delivers that contract here atdocs/contracts/issue-body/contract.json(#15429). This PR makes the skills that write or check issue bodies read their skeletons from it, so a skill-filed issue and a form-filed issue carry the same headings.Fix
scripts/sync-shared-copies.shcopies a JSON canonical byte for byte (JSON has no comment syntax for a generated-file header) and generatesplugins/bugs/reference/issue-body-contract.jsonandplugins/work-items/reference/issue-body-contract.json;shared-copies.txtandcross-plugin-source-registry.txtregister the cluster. Tests cover the JSON copy and drift./work-items:track add: the body's sections come from the contract type matching the resolved issue type (bug,feature,task), oragent-ready; the inline Context / Proposed work / Acceptance criteria / References skeleton is gone. Metadata and Recurring stay as appended sections.reference/agent-brief.md): fields are the contract'sagent-readytype, written as###headings under## Agent Brief, the same level the agent-ready form renders./work-items:decompose: its required sections are the contract'sdecomposed-itemtype; the contract wins where they disagree./work-items:triage: step 1 checks an issue body against the contract with the newscripts/check-body.mjs(accepts##and###, treats a form's_No response_as empty, ignores fenced code and HTML comments); steps incontext/body-check.md./bugs:write: the template's sections are the contract'sbugfields in order (Severity and Suggested fix location become sections, matching the form)./code-tidying:tidy: the deferred-item body follows thetasktype's required headings.reference/dogfood-filing.mdpoints at the contract instead of restating the skeleton.Verification
node --test plugins/work-items/skills/triage/scripts/check-body.test.mjs: 8 pass; the CLI on a form-shaped bug body against the real contract returns no gaps forbugand names the three missingtaskfields.bash scripts/sync-shared-copies.test.sh: 99 pass;sync-shared-copies.sh --check: all 804 copies match.scripts/check-cross-plugin-source-drift.sh --check: no unregistered or drifted clusters.scripts/check-changed-skills.sh: 5 skills pass (triage held under its 500-line cap by moving the steps to a context file).scripts/check-affected.sh: passes.Related
🤖 Generated with Claude Code
https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe