notifications
Threads by month
- ----- 2026 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
September 2026
- 1 participants
- 2854 discussions
[[email protected]][Issue] Updates for XWIKI-24770: Upgrade mantine to 9.5.2
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
1
0
[xwiki-contrib/application-releasenotes] 185910: RN-93: The text inputs of the release note, change...
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
Branch: refs/heads/RN-93
Home: https://github.com/xwiki-contrib/application-releasenotes
Commit: 1859102ae4749ca8b0012bc454996771bbd86f76
https://github.com/xwiki-contrib/application-releasenotes/commit/1859102ae4…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M application-releasenotes-ui/src/main/resources/ReleaseNotes/Code/Change/ChangeSheet.xml
M application-releasenotes-ui/src/main/resources/ReleaseNotes/Code/ContributorsSheet.xml
M application-releasenotes-ui/src/main/resources/ReleaseNotes/Code/EntryVelocityMacros.xml
M application-releasenotes-ui/src/main/resources/ReleaseNotes/Code/HomeCustomReport.xml
M application-releasenotes-ui/src/main/resources/ReleaseNotes/Code/HomeReleaseChanges.xml
M application-releasenotes-ui/src/main/resources/ReleaseNotes/Code/HomeReleaseNotes.xml
M application-releasenotes-ui/src/main/resources/ReleaseNotes/Code/Translations.xml
A application-releasenotes-ui/src/test/java/org/xwiki/releasenotes/ChangeSheetPageTest.java
A application-releasenotes-ui/src/test/java/org/xwiki/releasenotes/ContributorsSheetPageTest.java
M application-releasenotes-ui/src/test/java/org/xwiki/releasenotes/HomeCustomReportPageTest.java
A application-releasenotes-ui/src/test/java/org/xwiki/releasenotes/HomeReleaseChangesPageTest.java
A application-releasenotes-ui/src/test/java/org/xwiki/releasenotes/HomeReleaseNotesPageTest.java
Log Message:
-----------
RN-93: The text inputs of the release note, change and report forms have no accessible name
* Bind a label to every text input of the release note creation form, the change creation form and
the custom report form, and to the report layout selector, with the label text coming from the
translation bundle.
* Move the prompt of those inputs from their value attribute to a placeholder attribute, so that an
untouched field submits nothing instead of submitting its own prompt.
* Mark the two version fields required, neither a release note nor a change being creatable without
one.
* Hold the field label of the change and contributors sheets in a label element bound to the input
XWiki generates, through a new #displayEntryField macro shared by both sheets.
* Add page tests covering the labelling of the three forms and of the two sheets.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki-contrib/application-releasenotes/settings/notifica…
1
0
01 Sep '26
Branch: refs/heads/master
Home: https://github.com/xwiki/xwiki-platform
Commit: c306ebc650d3ca141802bd8db05630c953c21189
https://github.com/xwiki/xwiki-platform/commit/c306ebc650d3ca141802bd8db056…
Author: Manuel Leduc <manuel.leduc(a)xwiki.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M pnpm-lock.yaml
M pnpm-workspace.yaml
M pom.xml
Log Message:
-----------
XWIKI-24775: Upgrade to vue 3.5.42
Commit: e36434db30baffe793e9288082c3048cd353905c
https://github.com/xwiki/xwiki-platform/commit/e36434db30baffe793e9288082c3…
Author: Manuel Leduc <manuel.leduc(a)xwiki.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M pnpm-lock.yaml
M pnpm-workspace.yaml
Log Message:
-----------
[Misc] Update dependency @vue/compiler-dom to v3.5.42
Commit: 7087a3590d2747bfd37ce7c763dc38c82235a67b
https://github.com/xwiki/xwiki-platform/commit/7087a3590d2747bfd37ce7c763dc…
Author: Manuel Leduc <manuel.leduc(a)xwiki.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M pnpm-lock.yaml
M pnpm-workspace.yaml
Log Message:
-----------
[Misc] Update dependency vitest to v4.1.11
Commit: e72caa6ef7462ac9fef48a0fb659e6095cc514e8
https://github.com/xwiki/xwiki-platform/commit/e72caa6ef7462ac9fef48a0fb659…
Author: Manuel Leduc <manuel.leduc(a)xwiki.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M pnpm-lock.yaml
M pnpm-workspace.yaml
Log Message:
-----------
[Misc] Update dependency postcss to v8.5.26
Commit: f98944c576a7ceb882165beb1932e6c8fb08cc82
https://github.com/xwiki/xwiki-platform/commit/f98944c576a7ceb882165beb1932…
Author: Manuel Leduc <manuel.leduc(a)xwiki.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M pnpm-lock.yaml
M pnpm-workspace.yaml
Log Message:
-----------
[Misc] Update dependency nx to v23.1.2
Commit: abaed09842a49ea1bafda84456e8cca61f2849a0
https://github.com/xwiki/xwiki-platform/commit/abaed09842a49ea1bafda84456e8…
Author: Manuel Leduc <manuel.leduc(a)xwiki.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M pnpm-lock.yaml
M pnpm-workspace.yaml
Log Message:
-----------
[Misc] Update dependency @vitest/eslint-plugin to v1.6.27
Commit: cfaf97b85df514b4a118ec409c4586ed43568774
https://github.com/xwiki/xwiki-platform/commit/cfaf97b85df514b4a118ec409c45…
Author: Manuel Leduc <manuel.leduc(a)xwiki.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M pnpm-lock.yaml
M pnpm-workspace.yaml
Log Message:
-----------
[Misc] Update dependency @types/react to v19.2.18
Commit: 1a4d41302638aaa3e46be2400dbe1340e3eb8c7d
https://github.com/xwiki/xwiki-platform/commit/1a4d41302638aaa3e46be2400dbe…
Author: Manuel Leduc <manuel.leduc(a)xwiki.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M pnpm-lock.yaml
M pnpm-workspace.yaml
Log Message:
-----------
[Misc] Update dependency @types/react-dom to v19.2.5
Compare: https://github.com/xwiki/xwiki-platform/compare/24fed466e911...1a4d41302638
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-platform/settings/notifications
1
0
[[email protected]][Issue] Updates for XWIKI-24775: Upgrade to vue 3.5.42
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
1
0
Branch: refs/heads/feat/follow-dir-conventions
Home: https://github.com/xwiki/xwiki-dev-llm
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
Branch: refs/heads/xwiki-ui-before-after-skill
Home: https://github.com/xwiki/xwiki-dev-llm
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
[xwiki/xwiki-dev-llm] 5b249e: [Misc] Record that an AllIT container class takes ...
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
Branch: refs/heads/okf-data-migrations
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: 5b249e2945e686ca1c1dc7d3ae06d48bb124a277
https://github.com/xwiki/xwiki-dev-llm/commit/5b249e2945e686ca1c1dc7d3ae06d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-23 (Sun, 23 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
Log Message:
-----------
[Misc] Record that an AllIT container class takes a bare @UITest
* Add a durable rule to okf/testing/strategy.md: the Docker framework merges the @UITest
configuration of the container class and of every nested class (walking each nested class's
superclass chain), so properties/extraJARs declared on an individual *IT class already apply
when it runs nested, and repeating a conflicting scalar aborts the run.
* Update the OKF map entry and the file summary accordingly.
* Bump the plugin version to 1.1.8.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 271185ea0c47110cab81c75d5cea7246ee02065d
https://github.com/xwiki/xwiki-dev-llm/commit/271185ea0c47110cab81c75d5cea7…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-23 (Sun, 23 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
Log Message:
-----------
[Misc] Record that an AllIT container class takes a bare @UITest
Commit: be1e8474c958a2b17a688ec61884e5c3b64630b8
https://github.com/xwiki/xwiki-dev-llm/commit/be1e8474c958a2b17a688ec61884e…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Drop xmvn's JDK-discovery internals from the build skill
* Following review feedback on PR #68: how xmvn locates JDKs is
implementation detail that rots as the tool improves, so the guidance
now states only the contract — use xmvn when available, otherwise pick
the JDK yourself — plus the symptom to recover from if xmvn did not
switch the JDK.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 6a8a47b767d04c3fc69570986d42ed1de7259998
https://github.com/xwiki/xwiki-dev-llm/commit/6a8a47b767d04c3fc69570986d42e…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/index.md
Log Message:
-----------
[Misc] Narrow the S5993 SonarQube denylist entry to non-internal packages
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 4d05de2e792e32692fa81c51b3636250d89149c7
https://github.com/xwiki/xwiki-dev-llm/commit/4d05de2e792e32692fa81c51b3636…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/index.md
Log Message:
-----------
[Misc] Narrow the S5993 SonarQube denylist entry to non-internal packages
Commit: 3bbd58260400aa800e61f424b42ce4e2a43d5ebe
https://github.com/xwiki/xwiki-dev-llm/commit/3bbd58260400aa800e61f424b42ce…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/dead-code-rules.md
Log Message:
-----------
[Misc] Correct the S1130 "src/main is a permanent drop" rule to non-private
* The drop line for java:S1130 is the member's visibility, not the source
root: a private src/main method cannot be overridden and cannot be called
from outside its file, exactly like the private test helpers the same entry
already carves out.
* Also records the unreachable-catch cascade and the bucketing trap (Sonar
attributes the issue to the throws line, which is often a continuation line
with no modifier on it).
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 64cdf8f6019ab7aa0eedb411e2efa47e4a28e6d5
https://github.com/xwiki/xwiki-dev-llm/commit/64cdf8f6019ab7aa0eedb411e2efa…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/dead-code-rules.md
Log Message:
-----------
[Misc] Correct the S1130 "src/main is a permanent drop" rule to non-private
Commit: 707cdb63c1c72152a80abdc5954bd9f606d7e18d
https://github.com/xwiki/xwiki-dev-llm/commit/707cdb63c1c72152a80abdc5954bd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/sonarqube/constant-and-resource-rules.md
M xwiki/okf/sonarqube/dead-code-rules.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/modernization-rules.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/okf/sonarqube/syntax-rules.md
M xwiki/okf/sonarqube/test-code-rules.md
Log Message:
-----------
[Misc] Drop the duplicated rule-key lists and stale anecdotes from the sonarqube OKF
* Collapse the rule-key lists to one authoritative copy: sonarqube/index.md's
rule map. The three other copies had all drifted — okf/index.md's per-family
bullets were missing 24 of the 69 keys (test-code-rules advertised 4 of 9,
simplification 12 of 21), and each family file's frontmatter summary and
"S1116 · S1124 · …" subtitle line were missing 14 between them. A stale list
makes a rule read as undocumented and the fix get applied past the trap the
file exists to describe. The summaries now describe the traps instead of
enumerating keys, which is what a family file is chosen on.
* Remove the "used to be on the denylist" notes for S3252 and S6355 and the same
framing on S3252's own section. The current placement already says it, and
okf/conventions/code-comments.md rules out justifying by history.
* Generalise six one-off batch statistics (site counts, "18 of the 22", "one
site in six") that sonarqube/index.md's own policy excludes as volatile. The
durable signal — near-zero drops, near-100% drops, permanent drop — is kept.
* Delete the S8924 "not yet established" note; its actionable half is already
step 1 of that same list.
* Verified before the edit that all 69 documented keys and the 33 denylist keys
are still present and status=READY in SonarCloud's Java ruleset for the xwiki
org, so nothing here documents a retired rule.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: c4388f99cf42edcd47d6e9235de7525c0a421a19
https://github.com/xwiki/xwiki-dev-llm/commit/c4388f99cf42edcd47d6e9235de75…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Record that a functional test is a scenario with a single fixture
* Add the scenario rule to okf/testing/strategy.md: a *IT pays a wiki start, a browser start and a
page load per navigation, so the number of fixtures drives its runtime, not the number of
assertions. Write as few @Test methods as the scenario allows, extend an existing method or *IT
rather than rebuilding the same fixture, and note that @Order fixes execution order without
sharing a fixture so it is not a substitute. Sourced from the dev wiki's functional-testing best
practices, which the plugin only linked and never stated.
* Add the matching procedural bullet to the xwiki-test-guidelines skill, so the rule applies when
writing a test and not only when reviewing one.
* Add the check to the xwiki-review Tests angle: a new @Test method or *IT class that rebuilds a
fixture an existing one already builds is a finding.
* Update the strategy summary and the OKF map entry, and bump the plugin version.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 63d3343a254b846586abcdc75652f160c676698a
https://github.com/xwiki/xwiki-dev-llm/commit/63d3343a254b846586abcdc75652f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Pivot the scenario rule from method count to duplicate fixtures
* Restated the rule as "no two @Test methods build the same fixture" instead of "as few methods as
possible, one if you can". The defect the rule targets is a second method paying for a fixture an
existing one already builds, not method count in itself, and the previous wording read as a push
towards a single method however long it grew.
* Added the counterweight: a method nobody can follow end to end, or one whose failure no longer
says which behaviour broke, has been merged too far. A distinct fixture justifies a distinct
method, a merely distinct assertion does not.
* Mirrored the change in the xwiki-test-guidelines bullet, the strategy summary and the OKF map.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: f2679a39ede9629ffd5aea87e0587668cc8fd8fc
https://github.com/xwiki/xwiki-dev-llm/commit/f2679a39ede9629ffd5aea87e0587…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Record that a functional test is a scenario with a single fixture
Commit: bf16d86babdc4865bb99fc5e41f1061f9127684f
https://github.com/xwiki/xwiki-dev-llm/commit/bf16d86babdc4865bb99fc5e41f10…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/servers/index.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Record that rewriting a flagged line re-dates the other findings on it
* okf/sonarqube/verification.md: a mechanical fix can turn the master quality gate red without
introducing a defect, because the gate only measures new code and SonarCloud re-dates a finding it
can no longer match after a rewrite. Also record that javabugs:* findings are computed server-side,
so no local build confirms one gone, and how to read the analyzer's own dataflow path.
* skills/xwiki-fix-sonarqube-issue: check what else the lines being rewritten already carry, before
committing to a candidate.
* okf/sonarqube/index.md: add the one mechanical javabugs:S2259 shape (a nullable-parameter default
helper fed the default constant by its own overload), and drop the two pool-size claims from that
bullet, which the same file says are deliberately absent because they are volatile.
* okf/servers/index.md: the SonarCloud read API needs no token for the public xwiki org, and the MCP
has no quality-gate tool.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 04f75c2c644ef5ad0878d693350cdc8e9645b07d
https://github.com/xwiki/xwiki-dev-llm/commit/04f75c2c644ef5ad0878d693350cd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/servers/index.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Record that rewriting a flagged line re-dates the other findings on it
Commit: 5834089626fdc9f6bed9b5e52b856cd1511d311d
https://github.com/xwiki/xwiki-dev-llm/commit/5834089626fdc9f6bed9b5e52b856…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Run a SonarCloud PR analysis on every PR that changes Java
* skills/xwiki-pull-request: run a SonarCloud PR analysis on any PR that changes Java, not only on a
Sonar cleanup. It applies the same quality gate as the branch and is the only pre-merge check for
the rules computed server-side. Measured on xwiki-commons: about two minutes, with no tests, no
quality profile and no coverage.
* okf/sonarqube/verification.md: correct what the previous change said about confirming a javabugs
finding. A local build still proves nothing, but a PR analysis confirms it before merge, so the
next analysis of the branch is not the only confirmation. Also record that a re-dated finding
reaches the PR report only when the rewrite broke issue matching there too.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: ca7908ed4e683f55b01314e14fd56d865b65a3db
https://github.com/xwiki/xwiki-dev-llm/commit/ca7908ed4e683f55b01314e14fd56…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Run a SonarCloud PR analysis on every PR that changes Java
Commit: b5d68f9ab6ae56660f970bf7a5b961634f7a6f17
https://github.com/xwiki/xwiki-dev-llm/commit/b5d68f9ab6ae56660f970bf7a5b96…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Record the xwiki.org Cloudflare User-Agent block and the doc-tooling traps found while migrating a release-notes doc
* okf/servers/index.md: record that www.xwiki.org and extensions.xwiki.org sit behind Cloudflare, which
answers 403 to a browser-like User-Agent (and to none at all) on /xwiki/rest — only a curl-style UA
passes. The trap was documented for ci.xwiki.org only, so a script written against the doc site hit a
403 that reads as an auth failure. Verified live: browser UA 403, curl UA 200.
* okf/servers/jenkins.md: cross-link the two homes of the same Cloudflare trap and cut its section from
twelve lines to six — it stated one rule three times.
* skills/xwiki-rest-api/SKILL.md: add the same rule as one bullet where the curl commands get written.
The skill's /xwiki/rest prefix and nested-space path rules already covered the rest of what the
session needed, so nothing was duplicated there.
* okf/conventions/documentation.md, skills/xwiki-doc-writing/SKILL.md: the naming checker applies the
page-name rules to attachment names too, stop-word removal included — change-in-release-note.png was
rejected for change-release-note.png. The OKF said "attachment names follow the page-name rules"
without saying the checker enforces it, so the rule read as advisory.
* skills/xwiki-doc-writing/tools/docpages.py: lint's "attachment referenced but not declared" check ran
on the raw content, so a reference="..." inside a {{code}} block was mistaken for a real attachment
reference. Run it on strip_verbatim(content), as the other content checks already do.
* skills/xwiki-doc-writing/tools/README.md: never scroll to reach content below the fold —
agent-browser screenshot <element> ignores the scroll offset and captures the document region matching
the element's viewport rect, silently saving the wrong part of the page. Enlarge the viewport instead.
* skills/xwiki-doc-writing/tools/README.md, xwikidoc.py: correct the User-Agent note, which said only
that a request with no UA is rejected — a browser UA is rejected too, which is the counter-intuitive
half.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: fd564dc38661de2d1dc796f92e1b08f7d74d7c7d
https://github.com/xwiki/xwiki-dev-llm/commit/fd564dc38661de2d1dc796f92e1b0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Give the Cloudflare User-Agent block a single home
* State the rule once, in okf/servers/index.md, as a farm-wide rule covering the doc sites and
ci.xwiki.org alike.
* Cut okf/servers/jenkins.md down to the ci-specific consequence and a cross-reference, instead of
restating the mechanism a second time.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 983d9b8a5f11ab37b61dfaf89fd21991a9c328d4
https://github.com/xwiki/xwiki-dev-llm/commit/983d9b8a5f11ab37b61dfaf89fd21…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Record the xwiki.org Cloudflare User-Agent block and the doc-tooling traps found while migrating a release-notes doc
Commit: 698dc68b2224c0a40fe4781d19e0256ef04dc436
https://github.com/xwiki/xwiki-dev-llm/commit/698dc68b2224c0a40fe4781d19e02…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan of one-session tasks
* Add xwiki/skills/xwiki-doc-convert/references/conversion-plan.md: the on-disk plan
layout (conversion/PLAN.md, tasks/, source/), the PLAN.md and task-file templates,
the standard task set, the resume protocol and the checkpoint rules
* Make xwiki-doc-convert plan first and execute one task per session, so a conversion
that does not fit in one context window survives across sessions
* Persist the legacy source and an inventory of its atomic material to
conversion/source/, since the final "nothing lost" audit runs long after the
original page has been stripped
* Decompose from the inventories rather than the raw legacy text, and reuse a single
Change Request recorded in PLAN.md
* Bump the plugin version to 1.1.17
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 730649738e3c43c74508944685ee1bbc82e09f2e
https://github.com/xwiki/xwiki-dev-llm/commit/730649738e3c43c74508944685ee1…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan of one-session tasks
Commit: 3ce1455232b8bdd0a8d52b9fa8235728b566bb1b
https://github.com/xwiki/xwiki-dev-llm/commit/3ce1455232b8bdd0a8d52b9fa8235…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Publish a documentation conversion once, at the end, instead of page by page
* xwiki.org is public and a conversion runs for weeks, so a page saved the moment it is drafted is
live with red links to the siblings and hubs that do not exist yet, usually under a missing parent,
carrying any defect until someone happens to look. Observed on a real conversion in flight.
* Make the `page-*` tasks preparation tasks: they draft into `pages.py`, capture screenshots and lint
offline, and no longer call `docpages.py save`.
* Add a single `publish` task at the end of the standard task set. It saves the whole set in one
pass, parents before children, then runs `verify` and absorbs the live doc checker's findings.
* Say that a Change Request stays the preferred vehicle and why, and that choosing to save direct
changes nothing about the timing.
* Spell out the two consequences for the drafting tasks: the offline lint becomes their only gate, so
what the live checker would have caught has to move into it; and the publish task reads back what
it wrote rather than assuming the syntax rendered.
* Record the rule in the OKF, in documentation-migration, so it survives the skill.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 9eb910a33ece54a7d9534efc3411067f18809b07
https://github.com/xwiki/xwiki-dev-llm/commit/9eb910a33ece54a7d9534efc34110…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan, and publish it only at the end
Commit: cc0d76f4947c9747309aefac69d66ce483b28613
https://github.com/xwiki/xwiki-dev-llm/commit/cc0d76f4947c9747309aefac69d66…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/scripts/inject-org-instructions.mjs
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
Log Message:
-----------
[Misc] Put every cross-session work file in one work directory
* Plans, handoffs, extracted source, drafts and notes were being written to
the repo root, the system temp directory and the home directory, so they
were neither findable later nor cleanable.
* Add a "Work files" rule to the org-wide conventions: state that outlives a
session goes under $XWIKI_LLM_WORK (default ~/.xwiki-llm/work), one
<work>/<repo>/<date>-<slug>/ directory per piece of work. Session-only
files stay in the host's own scratch directory.
* Have the SessionStart hook append the resolved absolute path, which the
model cannot compute itself. Nothing is created up front, so a session that
writes no work file leaves no trace, and mkdir -p at first use also repairs
a directory the developer has deleted.
* Derive the working directory in xwiki-doc-convert and xwiki-doc-writing
instead of asking the developer for it on every conversion.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 16338678f1eb8af156826df4fad4f82d45ea075a
https://github.com/xwiki/xwiki-dev-llm/commit/16338678f1eb8af156826df4fad4f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/scripts/inject-org-instructions.mjs
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
Log Message:
-----------
[Misc] Put every cross-session work file in one work directory
Commit: 15a42edfd245c821b23da319ddc2aa001acde2fc
https://github.com/xwiki/xwiki-dev-llm/commit/15a42edfd245c821b23da319ddc2a…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/servers/jira.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Show the visible result of a change in the PR and on the JIRA issue
* Widen the "Screenshots & Video" rule of the xwiki-pull-request skill: a screenshot is not only for
a defect being fixed. Whenever the change has a visible result — a new feature, an improvement or
a fix — show it, so that a reviewer can judge the result without building the branch, with a
"before" as well when the issue reports a regression. The same image goes on the JIRA issue, where
it serves whoever reads the issue or writes the release note later.
* Record the attachment mechanics in okf/servers/jira.md, where the other JIRA access facts live:
attaching is REST-only since jira-cli has no attach command, Atlassian requires the
X-Atlassian-Token: no-check header, and the returned attachment URL is also what a PR body has to
reference, gh being unable to upload an image.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 97e9acc9e357de45caeafbd8ac57b8f96e500575
https://github.com/xwiki/xwiki-dev-llm/commit/97e9acc9e357de45caeafbd8ac57b…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/servers/jira.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Show the visible result of a change in the PR and on the JIRA issue
Commit: 3a39634b4fde1d85b77d61746b5ebc0b079d995d
https://github.com/xwiki/xwiki-dev-llm/commit/3a39634b4fde1d85b77d61746b5eb…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M README.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
Don't mark a SonarCloud issue Accepted when a PR fixes it
* SonarCloud closes such an issue as FIXED by itself at the next branch analysis after the merge, so
the transition buys nothing and hides a real defect from the quality gate if the PR never lands.
* Reserve the falsepositive/accept transitions for findings the code keeps as they are.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 236b759489bda9d271bfd663a747dd9255908fe2
https://github.com/xwiki/xwiki-dev-llm/commit/236b759489bda9d271bfd663a747d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M README.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Don't mark a SonarCloud issue Accepted when a PR fixes it
Commit: d763630e4e3892977e29a56f43f21b3288ca6c52
https://github.com/xwiki/xwiki-dev-llm/commit/d763630e4e3892977e29a56f43f21…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
Log Message:
-----------
[Misc] Cut the per-session cost of a documentation conversion
Measured across the 58 past sessions that converted or wrote xwiki.org documentation (the LaTeX,
Release Notes and AntiSpam conversions): 1.44B billed context tokens, of which 96-99% is cache reads
— a session costs roughly turns x context, so the levers are fewer turns and a smaller context.
22% of all those tokens were spent re-orienting before the first authoring action of the session,
and ~17% on the screenshot shoot/look/adjust loop.
* Add `docplan.py` to the doc-writing tools: `status` prints a conversion's whole orientation in one
call — the current task's full brief, the Setup answers, the recent Decisions and Open questions,
and what comes next — replacing PLAN.md read by hand in five to thirteen `sed` chunks per session
(76 KB re-read, against a 19 KB digest). `start` / `done` / `block` write the status and the
Outcome to both PLAN.md's row and the task file, which is also the pair that otherwise drifts
apart. Decisions and Open questions are trimmed to their most recent *whole* entries with a count
of what was dropped: a real plan accumulates tens of thousands of characters of them, and the
recent ones are the ones a session would otherwise re-litigate.
* Make `docshot.sh` run `checkredbox.py` on the shot it just took whenever a box selector was given,
and fail if the box is broken. A capture now reports its own verdict, so there is never a reason
to open the PNG to find out whether it worked — an image read into a session stays in context for
every later turn, which is what turns a screenshot into a shoot/look/adjust loop. `CHECK=0` opts
out; a shot with no box is skipped.
* Point the `xwiki-doc-convert` resume protocol at `docplan.py` in both the skill and the plan
reference, and add the three habits that decide whether a task fits in one session: one call
rather than a conversation for anything mechanical, never open a screenshot to check a capture,
and read the inventory rather than the raw legacy source.
* Add a rule to keep Decisions and Open questions to entries that still bind a future session, since
the digest shows the recent ones and a decision buried under fifty later ones is one a session
will not see.
Version bumped 1.2.1 -> 1.3.0 (minor — the skills now depend on a newly shipped tool).
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 7c94843af4a7c4bd9360d022682bfd9b9eea1c55
https://github.com/xwiki/xwiki-dev-llm/commit/7c94843af4a7c4bd9360d022682bf…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
Log Message:
-----------
[Misc] Cut the per-session cost of a documentation conversion
Commit: e9378ecfb25eb341ef1950d2b1d16f2b41da7fe5
https://github.com/xwiki/xwiki-dev-llm/commit/e9378ecfb25eb341ef1950d2b1d16…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Document how a stylesheet extension reads the colour theme
* Record in okf/conventions/frontend.md that CSS ships as a Skin Extension, and that reading
colour-theme values from one needs contentType LESS: $theme is not bound in wiki-page Velocity, so
a parse=1 SSX that reaches for it compiles and silently emits only its fallbacks.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 8ed7f4c90785cd13f7745da5f961bbb445644417
https://github.com/xwiki/xwiki-dev-llm/commit/8ed7f4c90785cd13f7745da5f961b…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Document how a stylesheet extension reads the colour theme
Commit: 777f8c82bedb7c99b00e424aecfbe397f349ce39
https://github.com/xwiki/xwiki-dev-llm/commit/777f8c82bedb7c99b00e424aecfbe…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Add a Develocity MCP server
* Add the `develocity` MCP server to all three host manifests, pointing at ge.xwiki.org, XWiki's
Develocity instance: build failures with stack traces, test outcomes and flaky-test history,
build timings, cache effectiveness and build-to-build diffs.
* Configure it as a remote streamable-HTTP server on every host, so nothing runs locally: Claude
Code and opencode interpolate the access key into an Authorization header, while Kimi Code uses
its bearerTokenEnvVar field, which reads the token from the environment rather than the config.
* Read the key from DEVELOCITY_MCP_ACCESS_KEY rather than DEVELOCITY_ACCESS_KEY. The two hold the
same Develocity access key but cannot hold the same value: the Maven and Gradle extensions
require DEVELOCITY_ACCESS_KEY to be host-scoped (`ge.xwiki.org=<key>`, so a key cannot be sent to
a server it was not issued for), whereas a Bearer header needs the bare key. A separate name lets
a developer authenticate both their local build and the MCP server.
* Leave the key optional: unset, Claude Code and Kimi Code skip the server. Develocity validates
the key on every request including tool listing, so a keyless server would error each session
instead of degrading to read-only, as the discourse one does.
* Record the server in okf/servers/index.md, whose map still described ge.xwiki.org as having no
MCP, and point okf/servers/jenkins.md at it for why a build failed, Jenkins remaining the
authority on whether it did.
* Bump the plugin version to 1.4.0 (minor: a capability change).
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 20383936600743b4b2e5dcd126fddbe341177a17
https://github.com/xwiki/xwiki-dev-llm/commit/20383936600743b4b2e5dcd126fdd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Add a Develocity MCP server
Commit: efa6436d29d0b3506c598ab1aea267c5712631fd
https://github.com/xwiki/xwiki-dev-llm/commit/efa6436d29d0b3506c598ab1aea26…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Point the Develocity MCP server at community.develocity.cloud
* ge.xwiki.org has been decommissioned: it still resolves in DNS (to a
Gradle-hosted ELB) but resets the connection at the TLS handshake, so the
develocity MCP server failed to load with ECONNRESET and exposed no tools.
* Update the endpoint to https://community.develocity.cloud/mcp in the three
MCP configurations (Claude Code, Kimi Code, opencode).
* Update the OKF server map and Jenkins page, and the README setup steps: the
access-keys page is now /settings/access-keys, and the host-scoped key prefix
the Maven/Gradle extensions need is community.develocity.cloud=.
* Record that this is Gradle's shared community instance, so XWiki's build
scans are scoped by the project ID xwiki from .mvn/develocity.xml.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 5a33efc139d461c2f3d8b950b3d8369593c87386
https://github.com/xwiki/xwiki-dev-llm/commit/5a33efc139d461c2f3d8b950b3d83…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Bump the plugin version to 1.4.1
* The previous commit changes files under xwiki/, so installed plugins only pull
it once the version increases (validate.mjs invariant 6).
* Bump all five manifest locations in lockstep: the marketplace metadata and its
xwiki plugin entry, the Claude plugin.json, kimi.plugin.json, and the
opencode.jsonc version comment.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 073d3fa1d73ab8dcbc7ef905fe4da1b918af35a7
https://github.com/xwiki/xwiki-dev-llm/commit/073d3fa1d73ab8dcbc7ef905fe4da…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Point the Develocity MCP server at community.develocity.cloud
Commit: 1088b62d92f299c8b4642945ffa49eb1d8ce327c
https://github.com/xwiki/xwiki-dev-llm/commit/1088b62d92f299c8b4642945ffa49…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
Log Message:
-----------
[Misc] Catch a wiki macro halved by an f-string in a docpages page set
* A `{{macro}}` written inside an f-string field of a `pages.py` arrives in the
value as `{macro}`: Python treats `{{` as an escaped literal brace. The page
then renders the macro as literal text, and nothing reports it — the doc
checker creates no violation object and the rendered page has no error box, so
the defect reaches a live page looking like prose.
* Worse, the halving hits lines the author never meant to touch: a field
converted to an f-string for one interpolation silently corrupts every
existing macro in it.
* Add the check to `lint`: a `{/` not preceded by a brace, or a `/}` not
followed by one, is a halved macro and is invalid XWiki syntax anywhere
outside the verbatim blocks `strip_verbatim` already blanks.
* Note it in the tools README's `lint` list, beside the other traps that produce
a plausible-looking page rather than an error.
* Bump the plugin version so installed plugins pull the change.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 79dd0e576832460af55e1a0efac8520f14402403
https://github.com/xwiki/xwiki-dev-llm/commit/79dd0e576832460af55e1a0efac85…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
Log Message:
-----------
[Misc] Catch a wiki macro halved by an f-string in a docpages page set
Commit: af5589c0f04afbd38067da7591e9ce80d6b490f6
https://github.com/xwiki/xwiki-dev-llm/commit/af5589c0f04afbd38067da7591e9c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Add an OKF topic for stored data in a wiki application
* New `okf/architecture/wiki-application-data.md`. Three traps that a review of a
real XClass+wiki-page application hit, none of which had an OKF home:
- A list property that is neither `multiSelect` nor large storage is stored as a
`StringProperty` (`ListClass.newProperty`) in `xwikistrings.XWS_VALUE`, a
VARCHAR, so HQL/XWQL range filters on it compare text. Single-character codes
sort as intended, which is what hides it until values differ in length.
- A generated `Entry001` name derived from the pages that already exist races
for the whole editing session, because the page appears only on save.
- A wiki-page migration is idempotent for free if it drops the object it
matched on; what it still needs is a completion count.
Plus the entry-template trap: a template missing the marker class its queries
use produces entries invisible to every query.
* Grounded in platform source (`ListClass`, `xwiki.hbm.xml`), verified rather than
extrapolated from the one application reviewed.
* Cross-reference `[[performance]]` for bounding the migration instead of
restating its pagination rule, so the batching rule keeps one home.
* `okf/conventions/frontend.md`: the WCAG 2.2 AA bullet stated the commitment but
no operational rule, so add the three traps for markup emitted from a wiki page
— naming a control (a `<dt>` term and a prompt in `value` are not names, and a
prompt in `value` also submits as data), `[[image:]]` alt text defaulting to the
filename, and `col-xs-*` not being a responsive layout. Accessibility already
lives here, so this extends that entry rather than adding a second home.
* `skills/xwiki-review`: stop the accessibility brief asserting a WCAG version of
its own. It claimed the OKF had no accessibility topic and named WCAG 2.1, while
`frontend.md` has covered accessibility at 2.2 — so a reviewer was being told to
cite criteria against a standard the project does not hold. It now reads the
level from `frontend.md` and is told never to state it from memory, which is
what keeps it from drifting again on the next re-commit.
* `skills/xwiki-review`: the data & migration angle claimed the stored-data rules
had no OKF home, which this commit makes false, and its routing fired only on
`*.hbm.xml`, migrator classes, Solr schema and store code — so it could never
run on a XAR-only extension, the very place the new topic applies. Add the
XClass / generated-name / wiki-page-migration trigger and cite the new file;
narrow the remaining skill-owned marker to Java store and mapping changes.
* Describe both OKF changes in `okf/index.md`; add the topic name only to the
always-on map in `instructions/xwiki-org.md` (+1 line, routing only).
* Bump the plugin version so installed plugins pull the change.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 2cbc3577e39832532172c606a224d9d2dfe54b15
https://github.com/xwiki/xwiki-dev-llm/commit/2cbc3577e39832532172c606a224d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Add an OKF topic for stored data in a wiki application
Commit: c029e81967fa776c09cd9ba318ee08bcdf2b5b0f
https://github.com/xwiki/xwiki-dev-llm/commit/c029e81967fa776c09cd9ba318ee0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/okf/index.md
A xwiki/okf/testing/running-docker-its.md
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Cap concurrent Docker IT runs and record how to run them on a developer machine
Running -Pdocker,integration-tests is a machine-wide operation, and nothing serialised it: several
agents in sibling worktrees launching one at the same time starve the Docker daemon, which surfaces
as a failure in beforeAll that reads like a product bug.
* Add scripts/xwiki-it-slot.mjs, a wrapper capping concurrent functional-test runs (2 by default,
--max N or XWIKI_LLM_IT_SLOTS). Slots are claimed atomically, released however the command ends,
and reclaimed when their holder died; --status names the current holders.
* Add okf/testing/running-docker-its.md: how the browser container reaches XWiki under each servlet
engine (host-gateway /etc/hosts entry versus the xwikiweb alias over Docker DNS), why the two
configurations therefore exercise different networking and when the containerised one is
mandatory, the setup-failure symptom table, and what several agents on one machine contend for.
* Rework the Docker IT section of xwiki-build around it: pre-flight, the never-stop-an-instance
rule, the engine choice, the slot wrapper, and the rule that a beforeAll failure is never
evidence about the change under test.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: d54c4766637b8f40c6cd0666a3dcbbec516bdd77
https://github.com/xwiki/xwiki-dev-llm/commit/d54c4766637b8f40c6cd0666a3dcb…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/okf/index.md
A xwiki/okf/testing/running-docker-its.md
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Cap concurrent Docker IT runs and record how to run them on a developer machine
Commit: 7808c17ff57e1545de5548c55732c2960ab3caf4
https://github.com/xwiki/xwiki-dev-llm/commit/7808c17ff57e1545de5548c55732c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
* Add scripts/release.mjs: the only thing that writes a version field. It sets all five (marketplace
metadata + plugin entry, plugin.json, kimi.plugin.json, the opencode.jsonc comment), commits
"[Misc] Release X.Y.Z" and tags vX.Y.Z. The tag is how the next run knows what already shipped;
before the first tag it falls back to the commit that introduced the current version, so the
bootstrap needs no manual step. It exits having done nothing when no file under xwiki/ changed.
* Derive the segment rather than ask for it, since the rule was already mechanical: minor when the
capability inventory changes between the last release and HEAD (a skill, an MCP server, a hook or
an opencode plugin added or removed), patch for anything else under xwiki/, major never derived.
A "Release-Bump: minor|major" commit trailer overrides it for a change whose significance the file
list cannot show — unlike a version field, two branches never conflict on a commit message.
* Invert validate.mjs invariant 6: a branch must now NOT change any version field, compared base ->
working tree so a stray bump is caught before it is even committed. Skipped on master, where
release.mjs legitimately moves it. Invariant 3 (the five agree) is unchanged; the extraction of
the five fields is parameterised by a reader so both invariants read the same thing.
* Add .github/workflows/release.yml, running release.mjs --push on every push to master that touches
xwiki/, plus workflow_dispatch with an explicit segment, serialised by a release concurrency group.
* Flip the xwiki-knowledge EXTEND flow from "bump all five fields" to "never touch the version", and
document the release in CLAUDE.md and README.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: c768ac3c736c8dae120e331febeb837735bc78e8
https://github.com/xwiki/xwiki-dev-llm/commit/c768ac3c736c8dae120e331febeb8…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
Commit: 422a726b2d2ee7845a020061204615a481ed7a04
https://github.com/xwiki/xwiki-dev-llm/commit/422a726b2d2ee7845a02006120461…
Author: github-actions[bot] <41898282+github-actions[bot](a)users.noreply.github.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Release 1.5.1
* content edits only (no capability added or removed)
Commit: 322aaacea57d486e7d2e5b4924e31305a6cdf099
https://github.com/xwiki/xwiki-dev-llm/commit/322aaacea57d486e7d2e5b4924e31…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M scripts/validate.mjs
Log Message:
-----------
[Misc] Compare a branch's plugin version against its merge base, not master's tip
* Invariant 6 asked whether the branch's version differed from origin/master's tip, which answers the
wrong question now that master keeps releasing while a branch is open: a branch that forked at
1.1.7 and never touched a version field still differs from a master that has reached 1.5.1, so
every long-lived PR was told to revert a bump it never made. Compare against the merge base
instead, which is what "did this branch change the version?" actually means.
* Name the merge base and its version in the failure message, so the fix is unambiguous on a branch
whose fork point is far behind.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 8b7f693ae14f6866b429cd980624897a36803ba0
https://github.com/xwiki/xwiki-dev-llm/commit/8b7f693ae14f6866b429cd9806248…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M scripts/validate.mjs
Log Message:
-----------
[Misc] Compare a branch's plugin version against its merge base, not master's tip
Commit: ead72f824502f34e2c05a7ae847b0451a83876d5
https://github.com/xwiki/xwiki-dev-llm/commit/ead72f824502f34e2c05a7ae847b0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
A .github/workflows/release.yml
M CLAUDE.md
M README.md
M kimi.plugin.json
M opencode.jsonc
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/conventions/documentation.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/okf/servers/jira.md
M xwiki/okf/sonarqube/constant-and-resource-rules.md
M xwiki/okf/sonarqube/dead-code-rules.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/modernization-rules.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/okf/sonarqube/syntax-rules.md
M xwiki/okf/sonarqube/test-code-rules.md
M xwiki/okf/sonarqube/verification.md
A xwiki/okf/testing/running-docker-its.md
M xwiki/okf/testing/strategy.md
M xwiki/scripts/inject-org-instructions.mjs
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
M xwiki/skills/xwiki-knowledge/SKILL.md
M xwiki/skills/xwiki-pull-request/SKILL.md
M xwiki/skills/xwiki-rest-api/SKILL.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
Merge remote-tracking branch 'origin/master' into okf-data-migrations
# Conflicts:
# xwiki/instructions/xwiki-org.md
Compare: https://github.com/xwiki/xwiki-dev-llm/compare/2216f632d722...ead72f824502
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
[xwiki/xwiki-dev-llm] 7808c1: [Misc] Cut the plugin release on master instead of...
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
Branch: refs/heads/misc-dependency-upgrade-commit-prefix
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: 7808c17ff57e1545de5548c55732c2960ab3caf4
https://github.com/xwiki/xwiki-dev-llm/commit/7808c17ff57e1545de5548c55732c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
* Add scripts/release.mjs: the only thing that writes a version field. It sets all five (marketplace
metadata + plugin entry, plugin.json, kimi.plugin.json, the opencode.jsonc comment), commits
"[Misc] Release X.Y.Z" and tags vX.Y.Z. The tag is how the next run knows what already shipped;
before the first tag it falls back to the commit that introduced the current version, so the
bootstrap needs no manual step. It exits having done nothing when no file under xwiki/ changed.
* Derive the segment rather than ask for it, since the rule was already mechanical: minor when the
capability inventory changes between the last release and HEAD (a skill, an MCP server, a hook or
an opencode plugin added or removed), patch for anything else under xwiki/, major never derived.
A "Release-Bump: minor|major" commit trailer overrides it for a change whose significance the file
list cannot show — unlike a version field, two branches never conflict on a commit message.
* Invert validate.mjs invariant 6: a branch must now NOT change any version field, compared base ->
working tree so a stray bump is caught before it is even committed. Skipped on master, where
release.mjs legitimately moves it. Invariant 3 (the five agree) is unchanged; the extraction of
the five fields is parameterised by a reader so both invariants read the same thing.
* Add .github/workflows/release.yml, running release.mjs --push on every push to master that touches
xwiki/, plus workflow_dispatch with an explicit segment, serialised by a release concurrency group.
* Flip the xwiki-knowledge EXTEND flow from "bump all five fields" to "never touch the version", and
document the release in CLAUDE.md and README.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: c768ac3c736c8dae120e331febeb837735bc78e8
https://github.com/xwiki/xwiki-dev-llm/commit/c768ac3c736c8dae120e331febeb8…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
Commit: 422a726b2d2ee7845a020061204615a481ed7a04
https://github.com/xwiki/xwiki-dev-llm/commit/422a726b2d2ee7845a02006120461…
Author: github-actions[bot] <41898282+github-actions[bot](a)users.noreply.github.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Release 1.5.1
* content edits only (no capability added or removed)
Commit: e229d5e6b8043a30368c2c8e53b08b934b849967
https://github.com/xwiki/xwiki-dev-llm/commit/e229d5e6b8043a30368c2c8e53b08…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
A .github/workflows/release.yml
M CLAUDE.md
M README.md
M kimi.plugin.json
M opencode.jsonc
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
Merge remote-tracking branch 'origin/master' into misc-dependency-upgrade-commit-prefix
Compare: https://github.com/xwiki/xwiki-dev-llm/compare/bacffc9163f0...e229d5e6b804
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
[xwiki/xwiki-dev-llm] be1e84: [Misc] Drop xmvn's JDK-discovery internals from th...
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
Branch: refs/heads/claude/cool-tesla-6a1n0j
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: be1e8474c958a2b17a688ec61884e5c3b64630b8
https://github.com/xwiki/xwiki-dev-llm/commit/be1e8474c958a2b17a688ec61884e…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Drop xmvn's JDK-discovery internals from the build skill
* Following review feedback on PR #68: how xmvn locates JDKs is
implementation detail that rots as the tool improves, so the guidance
now states only the contract — use xmvn when available, otherwise pick
the JDK yourself — plus the symptom to recover from if xmvn did not
switch the JDK.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 6a8a47b767d04c3fc69570986d42ed1de7259998
https://github.com/xwiki/xwiki-dev-llm/commit/6a8a47b767d04c3fc69570986d42e…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/index.md
Log Message:
-----------
[Misc] Narrow the S5993 SonarQube denylist entry to non-internal packages
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 4d05de2e792e32692fa81c51b3636250d89149c7
https://github.com/xwiki/xwiki-dev-llm/commit/4d05de2e792e32692fa81c51b3636…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/index.md
Log Message:
-----------
[Misc] Narrow the S5993 SonarQube denylist entry to non-internal packages
Commit: 3bbd58260400aa800e61f424b42ce4e2a43d5ebe
https://github.com/xwiki/xwiki-dev-llm/commit/3bbd58260400aa800e61f424b42ce…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/dead-code-rules.md
Log Message:
-----------
[Misc] Correct the S1130 "src/main is a permanent drop" rule to non-private
* The drop line for java:S1130 is the member's visibility, not the source
root: a private src/main method cannot be overridden and cannot be called
from outside its file, exactly like the private test helpers the same entry
already carves out.
* Also records the unreachable-catch cascade and the bucketing trap (Sonar
attributes the issue to the throws line, which is often a continuation line
with no modifier on it).
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 64cdf8f6019ab7aa0eedb411e2efa47e4a28e6d5
https://github.com/xwiki/xwiki-dev-llm/commit/64cdf8f6019ab7aa0eedb411e2efa…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/dead-code-rules.md
Log Message:
-----------
[Misc] Correct the S1130 "src/main is a permanent drop" rule to non-private
Commit: 707cdb63c1c72152a80abdc5954bd9f606d7e18d
https://github.com/xwiki/xwiki-dev-llm/commit/707cdb63c1c72152a80abdc5954bd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/sonarqube/constant-and-resource-rules.md
M xwiki/okf/sonarqube/dead-code-rules.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/modernization-rules.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/okf/sonarqube/syntax-rules.md
M xwiki/okf/sonarqube/test-code-rules.md
Log Message:
-----------
[Misc] Drop the duplicated rule-key lists and stale anecdotes from the sonarqube OKF
* Collapse the rule-key lists to one authoritative copy: sonarqube/index.md's
rule map. The three other copies had all drifted — okf/index.md's per-family
bullets were missing 24 of the 69 keys (test-code-rules advertised 4 of 9,
simplification 12 of 21), and each family file's frontmatter summary and
"S1116 · S1124 · …" subtitle line were missing 14 between them. A stale list
makes a rule read as undocumented and the fix get applied past the trap the
file exists to describe. The summaries now describe the traps instead of
enumerating keys, which is what a family file is chosen on.
* Remove the "used to be on the denylist" notes for S3252 and S6355 and the same
framing on S3252's own section. The current placement already says it, and
okf/conventions/code-comments.md rules out justifying by history.
* Generalise six one-off batch statistics (site counts, "18 of the 22", "one
site in six") that sonarqube/index.md's own policy excludes as volatile. The
durable signal — near-zero drops, near-100% drops, permanent drop — is kept.
* Delete the S8924 "not yet established" note; its actionable half is already
step 1 of that same list.
* Verified before the edit that all 69 documented keys and the 33 denylist keys
are still present and status=READY in SonarCloud's Java ruleset for the xwiki
org, so nothing here documents a retired rule.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: c4388f99cf42edcd47d6e9235de7525c0a421a19
https://github.com/xwiki/xwiki-dev-llm/commit/c4388f99cf42edcd47d6e9235de75…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Record that a functional test is a scenario with a single fixture
* Add the scenario rule to okf/testing/strategy.md: a *IT pays a wiki start, a browser start and a
page load per navigation, so the number of fixtures drives its runtime, not the number of
assertions. Write as few @Test methods as the scenario allows, extend an existing method or *IT
rather than rebuilding the same fixture, and note that @Order fixes execution order without
sharing a fixture so it is not a substitute. Sourced from the dev wiki's functional-testing best
practices, which the plugin only linked and never stated.
* Add the matching procedural bullet to the xwiki-test-guidelines skill, so the rule applies when
writing a test and not only when reviewing one.
* Add the check to the xwiki-review Tests angle: a new @Test method or *IT class that rebuilds a
fixture an existing one already builds is a finding.
* Update the strategy summary and the OKF map entry, and bump the plugin version.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 63d3343a254b846586abcdc75652f160c676698a
https://github.com/xwiki/xwiki-dev-llm/commit/63d3343a254b846586abcdc75652f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Pivot the scenario rule from method count to duplicate fixtures
* Restated the rule as "no two @Test methods build the same fixture" instead of "as few methods as
possible, one if you can". The defect the rule targets is a second method paying for a fixture an
existing one already builds, not method count in itself, and the previous wording read as a push
towards a single method however long it grew.
* Added the counterweight: a method nobody can follow end to end, or one whose failure no longer
says which behaviour broke, has been merged too far. A distinct fixture justifies a distinct
method, a merely distinct assertion does not.
* Mirrored the change in the xwiki-test-guidelines bullet, the strategy summary and the OKF map.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: f2679a39ede9629ffd5aea87e0587668cc8fd8fc
https://github.com/xwiki/xwiki-dev-llm/commit/f2679a39ede9629ffd5aea87e0587…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Record that a functional test is a scenario with a single fixture
Commit: bf16d86babdc4865bb99fc5e41f1061f9127684f
https://github.com/xwiki/xwiki-dev-llm/commit/bf16d86babdc4865bb99fc5e41f10…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/servers/index.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Record that rewriting a flagged line re-dates the other findings on it
* okf/sonarqube/verification.md: a mechanical fix can turn the master quality gate red without
introducing a defect, because the gate only measures new code and SonarCloud re-dates a finding it
can no longer match after a rewrite. Also record that javabugs:* findings are computed server-side,
so no local build confirms one gone, and how to read the analyzer's own dataflow path.
* skills/xwiki-fix-sonarqube-issue: check what else the lines being rewritten already carry, before
committing to a candidate.
* okf/sonarqube/index.md: add the one mechanical javabugs:S2259 shape (a nullable-parameter default
helper fed the default constant by its own overload), and drop the two pool-size claims from that
bullet, which the same file says are deliberately absent because they are volatile.
* okf/servers/index.md: the SonarCloud read API needs no token for the public xwiki org, and the MCP
has no quality-gate tool.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 04f75c2c644ef5ad0878d693350cdc8e9645b07d
https://github.com/xwiki/xwiki-dev-llm/commit/04f75c2c644ef5ad0878d693350cd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/servers/index.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Record that rewriting a flagged line re-dates the other findings on it
Commit: 5834089626fdc9f6bed9b5e52b856cd1511d311d
https://github.com/xwiki/xwiki-dev-llm/commit/5834089626fdc9f6bed9b5e52b856…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Run a SonarCloud PR analysis on every PR that changes Java
* skills/xwiki-pull-request: run a SonarCloud PR analysis on any PR that changes Java, not only on a
Sonar cleanup. It applies the same quality gate as the branch and is the only pre-merge check for
the rules computed server-side. Measured on xwiki-commons: about two minutes, with no tests, no
quality profile and no coverage.
* okf/sonarqube/verification.md: correct what the previous change said about confirming a javabugs
finding. A local build still proves nothing, but a PR analysis confirms it before merge, so the
next analysis of the branch is not the only confirmation. Also record that a re-dated finding
reaches the PR report only when the rewrite broke issue matching there too.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: ca7908ed4e683f55b01314e14fd56d865b65a3db
https://github.com/xwiki/xwiki-dev-llm/commit/ca7908ed4e683f55b01314e14fd56…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Run a SonarCloud PR analysis on every PR that changes Java
Commit: b5d68f9ab6ae56660f970bf7a5b961634f7a6f17
https://github.com/xwiki/xwiki-dev-llm/commit/b5d68f9ab6ae56660f970bf7a5b96…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Record the xwiki.org Cloudflare User-Agent block and the doc-tooling traps found while migrating a release-notes doc
* okf/servers/index.md: record that www.xwiki.org and extensions.xwiki.org sit behind Cloudflare, which
answers 403 to a browser-like User-Agent (and to none at all) on /xwiki/rest — only a curl-style UA
passes. The trap was documented for ci.xwiki.org only, so a script written against the doc site hit a
403 that reads as an auth failure. Verified live: browser UA 403, curl UA 200.
* okf/servers/jenkins.md: cross-link the two homes of the same Cloudflare trap and cut its section from
twelve lines to six — it stated one rule three times.
* skills/xwiki-rest-api/SKILL.md: add the same rule as one bullet where the curl commands get written.
The skill's /xwiki/rest prefix and nested-space path rules already covered the rest of what the
session needed, so nothing was duplicated there.
* okf/conventions/documentation.md, skills/xwiki-doc-writing/SKILL.md: the naming checker applies the
page-name rules to attachment names too, stop-word removal included — change-in-release-note.png was
rejected for change-release-note.png. The OKF said "attachment names follow the page-name rules"
without saying the checker enforces it, so the rule read as advisory.
* skills/xwiki-doc-writing/tools/docpages.py: lint's "attachment referenced but not declared" check ran
on the raw content, so a reference="..." inside a {{code}} block was mistaken for a real attachment
reference. Run it on strip_verbatim(content), as the other content checks already do.
* skills/xwiki-doc-writing/tools/README.md: never scroll to reach content below the fold —
agent-browser screenshot <element> ignores the scroll offset and captures the document region matching
the element's viewport rect, silently saving the wrong part of the page. Enlarge the viewport instead.
* skills/xwiki-doc-writing/tools/README.md, xwikidoc.py: correct the User-Agent note, which said only
that a request with no UA is rejected — a browser UA is rejected too, which is the counter-intuitive
half.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: fd564dc38661de2d1dc796f92e1b08f7d74d7c7d
https://github.com/xwiki/xwiki-dev-llm/commit/fd564dc38661de2d1dc796f92e1b0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Give the Cloudflare User-Agent block a single home
* State the rule once, in okf/servers/index.md, as a farm-wide rule covering the doc sites and
ci.xwiki.org alike.
* Cut okf/servers/jenkins.md down to the ci-specific consequence and a cross-reference, instead of
restating the mechanism a second time.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 983d9b8a5f11ab37b61dfaf89fd21991a9c328d4
https://github.com/xwiki/xwiki-dev-llm/commit/983d9b8a5f11ab37b61dfaf89fd21…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Record the xwiki.org Cloudflare User-Agent block and the doc-tooling traps found while migrating a release-notes doc
Commit: 698dc68b2224c0a40fe4781d19e0256ef04dc436
https://github.com/xwiki/xwiki-dev-llm/commit/698dc68b2224c0a40fe4781d19e02…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan of one-session tasks
* Add xwiki/skills/xwiki-doc-convert/references/conversion-plan.md: the on-disk plan
layout (conversion/PLAN.md, tasks/, source/), the PLAN.md and task-file templates,
the standard task set, the resume protocol and the checkpoint rules
* Make xwiki-doc-convert plan first and execute one task per session, so a conversion
that does not fit in one context window survives across sessions
* Persist the legacy source and an inventory of its atomic material to
conversion/source/, since the final "nothing lost" audit runs long after the
original page has been stripped
* Decompose from the inventories rather than the raw legacy text, and reuse a single
Change Request recorded in PLAN.md
* Bump the plugin version to 1.1.17
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 730649738e3c43c74508944685ee1bbc82e09f2e
https://github.com/xwiki/xwiki-dev-llm/commit/730649738e3c43c74508944685ee1…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan of one-session tasks
Commit: 3ce1455232b8bdd0a8d52b9fa8235728b566bb1b
https://github.com/xwiki/xwiki-dev-llm/commit/3ce1455232b8bdd0a8d52b9fa8235…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Publish a documentation conversion once, at the end, instead of page by page
* xwiki.org is public and a conversion runs for weeks, so a page saved the moment it is drafted is
live with red links to the siblings and hubs that do not exist yet, usually under a missing parent,
carrying any defect until someone happens to look. Observed on a real conversion in flight.
* Make the `page-*` tasks preparation tasks: they draft into `pages.py`, capture screenshots and lint
offline, and no longer call `docpages.py save`.
* Add a single `publish` task at the end of the standard task set. It saves the whole set in one
pass, parents before children, then runs `verify` and absorbs the live doc checker's findings.
* Say that a Change Request stays the preferred vehicle and why, and that choosing to save direct
changes nothing about the timing.
* Spell out the two consequences for the drafting tasks: the offline lint becomes their only gate, so
what the live checker would have caught has to move into it; and the publish task reads back what
it wrote rather than assuming the syntax rendered.
* Record the rule in the OKF, in documentation-migration, so it survives the skill.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 9eb910a33ece54a7d9534efc3411067f18809b07
https://github.com/xwiki/xwiki-dev-llm/commit/9eb910a33ece54a7d9534efc34110…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan, and publish it only at the end
Commit: cc0d76f4947c9747309aefac69d66ce483b28613
https://github.com/xwiki/xwiki-dev-llm/commit/cc0d76f4947c9747309aefac69d66…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/scripts/inject-org-instructions.mjs
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
Log Message:
-----------
[Misc] Put every cross-session work file in one work directory
* Plans, handoffs, extracted source, drafts and notes were being written to
the repo root, the system temp directory and the home directory, so they
were neither findable later nor cleanable.
* Add a "Work files" rule to the org-wide conventions: state that outlives a
session goes under $XWIKI_LLM_WORK (default ~/.xwiki-llm/work), one
<work>/<repo>/<date>-<slug>/ directory per piece of work. Session-only
files stay in the host's own scratch directory.
* Have the SessionStart hook append the resolved absolute path, which the
model cannot compute itself. Nothing is created up front, so a session that
writes no work file leaves no trace, and mkdir -p at first use also repairs
a directory the developer has deleted.
* Derive the working directory in xwiki-doc-convert and xwiki-doc-writing
instead of asking the developer for it on every conversion.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 16338678f1eb8af156826df4fad4f82d45ea075a
https://github.com/xwiki/xwiki-dev-llm/commit/16338678f1eb8af156826df4fad4f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/scripts/inject-org-instructions.mjs
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
Log Message:
-----------
[Misc] Put every cross-session work file in one work directory
Commit: 15a42edfd245c821b23da319ddc2aa001acde2fc
https://github.com/xwiki/xwiki-dev-llm/commit/15a42edfd245c821b23da319ddc2a…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/servers/jira.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Show the visible result of a change in the PR and on the JIRA issue
* Widen the "Screenshots & Video" rule of the xwiki-pull-request skill: a screenshot is not only for
a defect being fixed. Whenever the change has a visible result — a new feature, an improvement or
a fix — show it, so that a reviewer can judge the result without building the branch, with a
"before" as well when the issue reports a regression. The same image goes on the JIRA issue, where
it serves whoever reads the issue or writes the release note later.
* Record the attachment mechanics in okf/servers/jira.md, where the other JIRA access facts live:
attaching is REST-only since jira-cli has no attach command, Atlassian requires the
X-Atlassian-Token: no-check header, and the returned attachment URL is also what a PR body has to
reference, gh being unable to upload an image.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 97e9acc9e357de45caeafbd8ac57b8f96e500575
https://github.com/xwiki/xwiki-dev-llm/commit/97e9acc9e357de45caeafbd8ac57b…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/servers/jira.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Show the visible result of a change in the PR and on the JIRA issue
Commit: 3a39634b4fde1d85b77d61746b5ebc0b079d995d
https://github.com/xwiki/xwiki-dev-llm/commit/3a39634b4fde1d85b77d61746b5eb…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M README.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
Don't mark a SonarCloud issue Accepted when a PR fixes it
* SonarCloud closes such an issue as FIXED by itself at the next branch analysis after the merge, so
the transition buys nothing and hides a real defect from the quality gate if the PR never lands.
* Reserve the falsepositive/accept transitions for findings the code keeps as they are.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 236b759489bda9d271bfd663a747dd9255908fe2
https://github.com/xwiki/xwiki-dev-llm/commit/236b759489bda9d271bfd663a747d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M README.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Don't mark a SonarCloud issue Accepted when a PR fixes it
Commit: d763630e4e3892977e29a56f43f21b3288ca6c52
https://github.com/xwiki/xwiki-dev-llm/commit/d763630e4e3892977e29a56f43f21…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
Log Message:
-----------
[Misc] Cut the per-session cost of a documentation conversion
Measured across the 58 past sessions that converted or wrote xwiki.org documentation (the LaTeX,
Release Notes and AntiSpam conversions): 1.44B billed context tokens, of which 96-99% is cache reads
— a session costs roughly turns x context, so the levers are fewer turns and a smaller context.
22% of all those tokens were spent re-orienting before the first authoring action of the session,
and ~17% on the screenshot shoot/look/adjust loop.
* Add `docplan.py` to the doc-writing tools: `status` prints a conversion's whole orientation in one
call — the current task's full brief, the Setup answers, the recent Decisions and Open questions,
and what comes next — replacing PLAN.md read by hand in five to thirteen `sed` chunks per session
(76 KB re-read, against a 19 KB digest). `start` / `done` / `block` write the status and the
Outcome to both PLAN.md's row and the task file, which is also the pair that otherwise drifts
apart. Decisions and Open questions are trimmed to their most recent *whole* entries with a count
of what was dropped: a real plan accumulates tens of thousands of characters of them, and the
recent ones are the ones a session would otherwise re-litigate.
* Make `docshot.sh` run `checkredbox.py` on the shot it just took whenever a box selector was given,
and fail if the box is broken. A capture now reports its own verdict, so there is never a reason
to open the PNG to find out whether it worked — an image read into a session stays in context for
every later turn, which is what turns a screenshot into a shoot/look/adjust loop. `CHECK=0` opts
out; a shot with no box is skipped.
* Point the `xwiki-doc-convert` resume protocol at `docplan.py` in both the skill and the plan
reference, and add the three habits that decide whether a task fits in one session: one call
rather than a conversation for anything mechanical, never open a screenshot to check a capture,
and read the inventory rather than the raw legacy source.
* Add a rule to keep Decisions and Open questions to entries that still bind a future session, since
the digest shows the recent ones and a decision buried under fifty later ones is one a session
will not see.
Version bumped 1.2.1 -> 1.3.0 (minor — the skills now depend on a newly shipped tool).
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 7c94843af4a7c4bd9360d022682bfd9b9eea1c55
https://github.com/xwiki/xwiki-dev-llm/commit/7c94843af4a7c4bd9360d022682bf…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
Log Message:
-----------
[Misc] Cut the per-session cost of a documentation conversion
Commit: e9378ecfb25eb341ef1950d2b1d16f2b41da7fe5
https://github.com/xwiki/xwiki-dev-llm/commit/e9378ecfb25eb341ef1950d2b1d16…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Document how a stylesheet extension reads the colour theme
* Record in okf/conventions/frontend.md that CSS ships as a Skin Extension, and that reading
colour-theme values from one needs contentType LESS: $theme is not bound in wiki-page Velocity, so
a parse=1 SSX that reaches for it compiles and silently emits only its fallbacks.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 8ed7f4c90785cd13f7745da5f961bbb445644417
https://github.com/xwiki/xwiki-dev-llm/commit/8ed7f4c90785cd13f7745da5f961b…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Document how a stylesheet extension reads the colour theme
Commit: 777f8c82bedb7c99b00e424aecfbe397f349ce39
https://github.com/xwiki/xwiki-dev-llm/commit/777f8c82bedb7c99b00e424aecfbe…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Add a Develocity MCP server
* Add the `develocity` MCP server to all three host manifests, pointing at ge.xwiki.org, XWiki's
Develocity instance: build failures with stack traces, test outcomes and flaky-test history,
build timings, cache effectiveness and build-to-build diffs.
* Configure it as a remote streamable-HTTP server on every host, so nothing runs locally: Claude
Code and opencode interpolate the access key into an Authorization header, while Kimi Code uses
its bearerTokenEnvVar field, which reads the token from the environment rather than the config.
* Read the key from DEVELOCITY_MCP_ACCESS_KEY rather than DEVELOCITY_ACCESS_KEY. The two hold the
same Develocity access key but cannot hold the same value: the Maven and Gradle extensions
require DEVELOCITY_ACCESS_KEY to be host-scoped (`ge.xwiki.org=<key>`, so a key cannot be sent to
a server it was not issued for), whereas a Bearer header needs the bare key. A separate name lets
a developer authenticate both their local build and the MCP server.
* Leave the key optional: unset, Claude Code and Kimi Code skip the server. Develocity validates
the key on every request including tool listing, so a keyless server would error each session
instead of degrading to read-only, as the discourse one does.
* Record the server in okf/servers/index.md, whose map still described ge.xwiki.org as having no
MCP, and point okf/servers/jenkins.md at it for why a build failed, Jenkins remaining the
authority on whether it did.
* Bump the plugin version to 1.4.0 (minor: a capability change).
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 20383936600743b4b2e5dcd126fddbe341177a17
https://github.com/xwiki/xwiki-dev-llm/commit/20383936600743b4b2e5dcd126fdd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Add a Develocity MCP server
Commit: efa6436d29d0b3506c598ab1aea267c5712631fd
https://github.com/xwiki/xwiki-dev-llm/commit/efa6436d29d0b3506c598ab1aea26…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Point the Develocity MCP server at community.develocity.cloud
* ge.xwiki.org has been decommissioned: it still resolves in DNS (to a
Gradle-hosted ELB) but resets the connection at the TLS handshake, so the
develocity MCP server failed to load with ECONNRESET and exposed no tools.
* Update the endpoint to https://community.develocity.cloud/mcp in the three
MCP configurations (Claude Code, Kimi Code, opencode).
* Update the OKF server map and Jenkins page, and the README setup steps: the
access-keys page is now /settings/access-keys, and the host-scoped key prefix
the Maven/Gradle extensions need is community.develocity.cloud=.
* Record that this is Gradle's shared community instance, so XWiki's build
scans are scoped by the project ID xwiki from .mvn/develocity.xml.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 5a33efc139d461c2f3d8b950b3d8369593c87386
https://github.com/xwiki/xwiki-dev-llm/commit/5a33efc139d461c2f3d8b950b3d83…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Bump the plugin version to 1.4.1
* The previous commit changes files under xwiki/, so installed plugins only pull
it once the version increases (validate.mjs invariant 6).
* Bump all five manifest locations in lockstep: the marketplace metadata and its
xwiki plugin entry, the Claude plugin.json, kimi.plugin.json, and the
opencode.jsonc version comment.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 073d3fa1d73ab8dcbc7ef905fe4da1b918af35a7
https://github.com/xwiki/xwiki-dev-llm/commit/073d3fa1d73ab8dcbc7ef905fe4da…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Point the Develocity MCP server at community.develocity.cloud
Commit: 1088b62d92f299c8b4642945ffa49eb1d8ce327c
https://github.com/xwiki/xwiki-dev-llm/commit/1088b62d92f299c8b4642945ffa49…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
Log Message:
-----------
[Misc] Catch a wiki macro halved by an f-string in a docpages page set
* A `{{macro}}` written inside an f-string field of a `pages.py` arrives in the
value as `{macro}`: Python treats `{{` as an escaped literal brace. The page
then renders the macro as literal text, and nothing reports it — the doc
checker creates no violation object and the rendered page has no error box, so
the defect reaches a live page looking like prose.
* Worse, the halving hits lines the author never meant to touch: a field
converted to an f-string for one interpolation silently corrupts every
existing macro in it.
* Add the check to `lint`: a `{/` not preceded by a brace, or a `/}` not
followed by one, is a halved macro and is invalid XWiki syntax anywhere
outside the verbatim blocks `strip_verbatim` already blanks.
* Note it in the tools README's `lint` list, beside the other traps that produce
a plausible-looking page rather than an error.
* Bump the plugin version so installed plugins pull the change.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 79dd0e576832460af55e1a0efac8520f14402403
https://github.com/xwiki/xwiki-dev-llm/commit/79dd0e576832460af55e1a0efac85…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
Log Message:
-----------
[Misc] Catch a wiki macro halved by an f-string in a docpages page set
Commit: af5589c0f04afbd38067da7591e9ce80d6b490f6
https://github.com/xwiki/xwiki-dev-llm/commit/af5589c0f04afbd38067da7591e9c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Add an OKF topic for stored data in a wiki application
* New `okf/architecture/wiki-application-data.md`. Three traps that a review of a
real XClass+wiki-page application hit, none of which had an OKF home:
- A list property that is neither `multiSelect` nor large storage is stored as a
`StringProperty` (`ListClass.newProperty`) in `xwikistrings.XWS_VALUE`, a
VARCHAR, so HQL/XWQL range filters on it compare text. Single-character codes
sort as intended, which is what hides it until values differ in length.
- A generated `Entry001` name derived from the pages that already exist races
for the whole editing session, because the page appears only on save.
- A wiki-page migration is idempotent for free if it drops the object it
matched on; what it still needs is a completion count.
Plus the entry-template trap: a template missing the marker class its queries
use produces entries invisible to every query.
* Grounded in platform source (`ListClass`, `xwiki.hbm.xml`), verified rather than
extrapolated from the one application reviewed.
* Cross-reference `[[performance]]` for bounding the migration instead of
restating its pagination rule, so the batching rule keeps one home.
* `okf/conventions/frontend.md`: the WCAG 2.2 AA bullet stated the commitment but
no operational rule, so add the three traps for markup emitted from a wiki page
— naming a control (a `<dt>` term and a prompt in `value` are not names, and a
prompt in `value` also submits as data), `[[image:]]` alt text defaulting to the
filename, and `col-xs-*` not being a responsive layout. Accessibility already
lives here, so this extends that entry rather than adding a second home.
* `skills/xwiki-review`: stop the accessibility brief asserting a WCAG version of
its own. It claimed the OKF had no accessibility topic and named WCAG 2.1, while
`frontend.md` has covered accessibility at 2.2 — so a reviewer was being told to
cite criteria against a standard the project does not hold. It now reads the
level from `frontend.md` and is told never to state it from memory, which is
what keeps it from drifting again on the next re-commit.
* `skills/xwiki-review`: the data & migration angle claimed the stored-data rules
had no OKF home, which this commit makes false, and its routing fired only on
`*.hbm.xml`, migrator classes, Solr schema and store code — so it could never
run on a XAR-only extension, the very place the new topic applies. Add the
XClass / generated-name / wiki-page-migration trigger and cite the new file;
narrow the remaining skill-owned marker to Java store and mapping changes.
* Describe both OKF changes in `okf/index.md`; add the topic name only to the
always-on map in `instructions/xwiki-org.md` (+1 line, routing only).
* Bump the plugin version so installed plugins pull the change.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 2cbc3577e39832532172c606a224d9d2dfe54b15
https://github.com/xwiki/xwiki-dev-llm/commit/2cbc3577e39832532172c606a224d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Add an OKF topic for stored data in a wiki application
Commit: c029e81967fa776c09cd9ba318ee08bcdf2b5b0f
https://github.com/xwiki/xwiki-dev-llm/commit/c029e81967fa776c09cd9ba318ee0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/okf/index.md
A xwiki/okf/testing/running-docker-its.md
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Cap concurrent Docker IT runs and record how to run them on a developer machine
Running -Pdocker,integration-tests is a machine-wide operation, and nothing serialised it: several
agents in sibling worktrees launching one at the same time starve the Docker daemon, which surfaces
as a failure in beforeAll that reads like a product bug.
* Add scripts/xwiki-it-slot.mjs, a wrapper capping concurrent functional-test runs (2 by default,
--max N or XWIKI_LLM_IT_SLOTS). Slots are claimed atomically, released however the command ends,
and reclaimed when their holder died; --status names the current holders.
* Add okf/testing/running-docker-its.md: how the browser container reaches XWiki under each servlet
engine (host-gateway /etc/hosts entry versus the xwikiweb alias over Docker DNS), why the two
configurations therefore exercise different networking and when the containerised one is
mandatory, the setup-failure symptom table, and what several agents on one machine contend for.
* Rework the Docker IT section of xwiki-build around it: pre-flight, the never-stop-an-instance
rule, the engine choice, the slot wrapper, and the rule that a beforeAll failure is never
evidence about the change under test.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: d54c4766637b8f40c6cd0666a3dcbbec516bdd77
https://github.com/xwiki/xwiki-dev-llm/commit/d54c4766637b8f40c6cd0666a3dcb…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/okf/index.md
A xwiki/okf/testing/running-docker-its.md
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Cap concurrent Docker IT runs and record how to run them on a developer machine
Commit: 7808c17ff57e1545de5548c55732c2960ab3caf4
https://github.com/xwiki/xwiki-dev-llm/commit/7808c17ff57e1545de5548c55732c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
* Add scripts/release.mjs: the only thing that writes a version field. It sets all five (marketplace
metadata + plugin entry, plugin.json, kimi.plugin.json, the opencode.jsonc comment), commits
"[Misc] Release X.Y.Z" and tags vX.Y.Z. The tag is how the next run knows what already shipped;
before the first tag it falls back to the commit that introduced the current version, so the
bootstrap needs no manual step. It exits having done nothing when no file under xwiki/ changed.
* Derive the segment rather than ask for it, since the rule was already mechanical: minor when the
capability inventory changes between the last release and HEAD (a skill, an MCP server, a hook or
an opencode plugin added or removed), patch for anything else under xwiki/, major never derived.
A "Release-Bump: minor|major" commit trailer overrides it for a change whose significance the file
list cannot show — unlike a version field, two branches never conflict on a commit message.
* Invert validate.mjs invariant 6: a branch must now NOT change any version field, compared base ->
working tree so a stray bump is caught before it is even committed. Skipped on master, where
release.mjs legitimately moves it. Invariant 3 (the five agree) is unchanged; the extraction of
the five fields is parameterised by a reader so both invariants read the same thing.
* Add .github/workflows/release.yml, running release.mjs --push on every push to master that touches
xwiki/, plus workflow_dispatch with an explicit segment, serialised by a release concurrency group.
* Flip the xwiki-knowledge EXTEND flow from "bump all five fields" to "never touch the version", and
document the release in CLAUDE.md and README.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: c768ac3c736c8dae120e331febeb837735bc78e8
https://github.com/xwiki/xwiki-dev-llm/commit/c768ac3c736c8dae120e331febeb8…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
Commit: 422a726b2d2ee7845a020061204615a481ed7a04
https://github.com/xwiki/xwiki-dev-llm/commit/422a726b2d2ee7845a02006120461…
Author: github-actions[bot] <41898282+github-actions[bot](a)users.noreply.github.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Release 1.5.1
* content edits only (no capability added or removed)
Commit: 322aaacea57d486e7d2e5b4924e31305a6cdf099
https://github.com/xwiki/xwiki-dev-llm/commit/322aaacea57d486e7d2e5b4924e31…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M scripts/validate.mjs
Log Message:
-----------
[Misc] Compare a branch's plugin version against its merge base, not master's tip
* Invariant 6 asked whether the branch's version differed from origin/master's tip, which answers the
wrong question now that master keeps releasing while a branch is open: a branch that forked at
1.1.7 and never touched a version field still differs from a master that has reached 1.5.1, so
every long-lived PR was told to revert a bump it never made. Compare against the merge base
instead, which is what "did this branch change the version?" actually means.
* Name the merge base and its version in the failure message, so the fix is unambiguous on a branch
whose fork point is far behind.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 8b7f693ae14f6866b429cd980624897a36803ba0
https://github.com/xwiki/xwiki-dev-llm/commit/8b7f693ae14f6866b429cd9806248…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M scripts/validate.mjs
Log Message:
-----------
[Misc] Compare a branch's plugin version against its merge base, not master's tip
Commit: 3ec80f445aa8c2365b2baa2c7b39c26c374a8820
https://github.com/xwiki/xwiki-dev-llm/commit/3ec80f445aa8c2365b2baa2c7b39c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
A .github/workflows/release.yml
M CLAUDE.md
M README.md
M kimi.plugin.json
M opencode.jsonc
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/conventions/documentation.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/okf/servers/jira.md
M xwiki/okf/sonarqube/constant-and-resource-rules.md
M xwiki/okf/sonarqube/dead-code-rules.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/modernization-rules.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/okf/sonarqube/syntax-rules.md
M xwiki/okf/sonarqube/test-code-rules.md
M xwiki/okf/sonarqube/verification.md
A xwiki/okf/testing/running-docker-its.md
M xwiki/okf/testing/strategy.md
M xwiki/scripts/inject-org-instructions.mjs
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
M xwiki/skills/xwiki-knowledge/SKILL.md
M xwiki/skills/xwiki-pull-request/SKILL.md
M xwiki/skills/xwiki-rest-api/SKILL.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Merge master to pick up the merge-base version check
* The branch was failing `validate` because it ran its own stale copy of
scripts/validate.mjs, which still required a bump above master's tip; master
now requires the opposite — a pull request must not touch the version at
all, since the release is cut on master.
* No version bump here: the manifests take master's 1.5.1 unchanged.
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Compare: https://github.com/xwiki/xwiki-dev-llm/compare/eb967d47a9ad...3ec80f445aa8
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
01 Sep '26
Branch: refs/heads/misc-dependency-upgrade-commit-prefix
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: bacffc9163f026712bf82ad1e91c44e0cda9c2b4
https://github.com/xwiki/xwiki-dev-llm/commit/bacffc9163f026712bf82ad1e91c4…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Drop the plugin version bump
* Five manifests carry one version, so every concurrent pull request conflicted with every other one
on those same five lines, over something that was never part of either change. The release is now
cut on master after the merge by scripts/release.mjs, and scripts/validate.mjs fails a branch that
touches a version field.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0