Repository navigation
Fix checker defects, promote XML/PO checks to blocking CI; add agent skills - #25
Conversation
Installed via 'npx skills add mattpocock/skills' so the /wayfinder, /grilling, /prototype and related skills referenced by docs/agents/issue-tracker.md are available in fresh sessions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Resolves the cleanups agreed in #20 (executed as #23): - Escape raw & / < and un-glue attributes in 11 malformed XML files (theredwizard settings.xml + 10 skin files); fix the mis-scoped comment that swallowed an </item> in SettingsProfile.xml - Make all 5 skin strings.po files parse: escape inner double quotes, space-normalize comment lines, restore a lost msgstr (#40195) and a mangled msgstr (#31295) in it_it - Self-close the empty xbmc.service extensions in both service addons - Drop the start="startup" attribute (removed in Kodi 19) from mp3streams and gratisred service declarations - Add lang attributes to mp3streams summary/description - Migrate mp3streams resources/language/english/strings.xml to resource.language.en_gb/strings.po (17 strings, IDs unchanged) - Give redlight a real <license> (GPL-2.0-or-later, repo convention) - Rescale chainsliveplayer fanart 1365x768 -> 1280x720 - Bump versions of all eight touched addons Verified: every .xml parses, every strings.po parses via polib, py_compile clean, build_repo.py clean; advisory checker now reports only the permanently-accepted noise plus the mp3streams asset paths owned by the open PR #22. Note: mp3streams addon.xml version line will conflict trivially with PR #22 (bumped here to 2026.07.07, above #22's 2026.07.06). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Extends the blocking tier per the decision in #20 (executed as #24): - The addon.xml well-formedness step now parses every .xml under each addon dir (159 files) instead of only the ten addon.xml manifests - New PO validity step parses every strings.po with polib (9 files) - The permanently-accepted advisory noise is documented above the advisory job so future readers know those findings are deliberate kodi-addon-checker itself stays advisory; both new steps are green on the sources fixed in the previous commit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
bf6b2e6 to
6aebcb2
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bf6b2e6ac0
ℹ️ 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".
| sys.exit(1 if bad else 0) | ||
| EOF | ||
|
|
||
| - name: PO validity (polib) |
There was a problem hiding this comment.
Gate releases with the new PO validation
I checked .github/workflows/release.yml: its release job runs on tag pushes and workflow_dispatch, performs an independent Blocking validation before Build bundle/Publish GitHub Release, but that validation still only parses */addon.xml and runs py_compile. Because this new PO check lives only in the separate CI workflow, a manual or tag release can still publish a bundle with a malformed strings.po even while CI fails separately; please either share this validation with the release workflow or gate release on the validate job.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Good catch — fixed in d401a2e. The full check set (all addon-dir XML, strings.po via polib, py_compile) now lives in tools/validate_sources.py, and both ci.yml and release.yml call it, so the two gates can't drift apart again.
Generated by Claude Code
Codex review on PR #25 caught that release.yml still ran its own validation covering only addon.xml + py_compile, so a tag release could publish a bundle that the promoted CI gates would reject. Extract the full check set (all addon-dir XML, strings.po via polib, py_compile) into tools/validate_sources.py and call it from both workflows so the gates cannot drift apart again. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three changes on this branch:
Checker cleanups (resolves #23, decisions from #20)
&/<escaped, glued attributes separated (type="button"id="556"→type="button" id="556") inplugin.program.theredwizard/resources/settings.xmland 10 skin files; plus the mis-scoped comment inSettingsProfile.xmlthat swallowed an</item>.strings.pofiles now parse — inner double quotes escaped, comment lines space-normalized for polib, and two genuine data bugs init_itrepaired (lostmsgstrfor#40195, mangledmsgstrfor#31295). This also clears the checker's bogus "default language en_gb not present" error.<extension point="xbmc.service">elements self-closed (schema requires empty content).start="startup"removed from mp3streams and gratisred service declarations (attribute removed in Kodi 19; services always start at login).langattributes added to summary/description; legacyresources/language/english/strings.xmlmigrated toresource.language.en_gb/strings.po(17 strings, IDs unchanged).<license/>filled withGPL-2.0-or-later(repo convention).The advisory checker now reports only the permanently-accepted noise documented on #20 (skin 1024×600 screenshots, repository
<dir minversion/maxversion>, complex-entry-point warnings,.xbtendings) plus the mp3streams asset paths owned by #22.plugin.audio.mp3streams/addon.xmlwill conflict trivially with #22 on the version line (this PR bumps to2026.07.07, above #22's2026.07.06). Whichever merges second resolves by keeping2026.07.07and both news entries.CI promotion (resolves #24)
Stacked on the cleanups so the fixes and the checks that gate them land atomically:
.xmlunder each addon dir (159 files), not just the tenaddon.xmlmanifests.strings.powith polib (9 files).kodi-addon-checkerstays advisory.Both new steps are green in CI on this branch.
Agent skills
Adds the skill set from
mattpocock/skillsunder.agents/skills/plusskills-lock.json, so/wayfinder,/grilling,/prototypeetc. referenced bydocs/agents/issue-tracker.mdand the wayfinder map (#12) are available in fresh sessions. No addon behavior affected.🤖 Generated with Claude Code