notifications
Threads by month
- ----- 2026 -----
- 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
- 1 participants
- 57463 discussions
[xwiki/xwiki-commons] 0c289e: [maven-release-plugin] prepare branch stable-18.7.x
by XWiki Notifications 19 Aug '26
by XWiki Notifications 19 Aug '26
19 Aug '26
Branch: refs/heads/master
Home: https://github.com/xwiki/xwiki-commons
Commit: 0c289efa1f16ce9ba5560fb3603c2cc55659c535
https://github.com/xwiki/xwiki-commons/commit/0c289efa1f16ce9ba5560fb3603c2…
Author: Manuel Leduc <manuel.leduc(a)xwiki.com>
Date: 2026-08-19 (Wed, 19 Aug 2026)
Changed paths:
M pom.xml
Log Message:
-----------
[maven-release-plugin] prepare branch stable-18.7.x
Commit: 1925d8c05cd38e97b76722b6bf338f32db78d0d1
https://github.com/xwiki/xwiki-commons/commit/1925d8c05cd38e97b76722b6bf338…
Author: Manuel Leduc <manuel.leduc(a)xwiki.com>
Date: 2026-08-19 (Wed, 19 Aug 2026)
Changed paths:
M pom.xml
M xwiki-commons-core/pom.xml
M xwiki-commons-core/xwiki-commons-blame/pom.xml
M xwiki-commons-core/xwiki-commons-blame/xwiki-commons-blame-api/pom.xml
M xwiki-commons-core/xwiki-commons-blame/xwiki-commons-blame-script/pom.xml
M xwiki-commons-core/xwiki-commons-cache/pom.xml
M xwiki-commons-core/xwiki-commons-cache/xwiki-commons-cache-api/pom.xml
M xwiki-commons-core/xwiki-commons-cache/xwiki-commons-cache-infinispan/pom.xml
M xwiki-commons-core/xwiki-commons-cache/xwiki-commons-cache-tests/pom.xml
M xwiki-commons-core/xwiki-commons-classloader/pom.xml
M xwiki-commons-core/xwiki-commons-classloader/xwiki-commons-classloader-api/pom.xml
M xwiki-commons-core/xwiki-commons-collection/pom.xml
M xwiki-commons-core/xwiki-commons-component/pom.xml
M xwiki-commons-core/xwiki-commons-component/xwiki-commons-component-api/pom.xml
M xwiki-commons-core/xwiki-commons-component/xwiki-commons-component-archetype/pom.xml
M xwiki-commons-core/xwiki-commons-component/xwiki-commons-component-default/pom.xml
M xwiki-commons-core/xwiki-commons-component/xwiki-commons-component-observation/pom.xml
M xwiki-commons-core/xwiki-commons-configuration/pom.xml
M xwiki-commons-core/xwiki-commons-configuration/xwiki-commons-configuration-api/pom.xml
M xwiki-commons-core/xwiki-commons-configuration/xwiki-commons-configuration-default/pom.xml
M xwiki-commons-core/xwiki-commons-context/pom.xml
M xwiki-commons-core/xwiki-commons-crypto/pom.xml
M xwiki-commons-core/xwiki-commons-crypto/xwiki-commons-crypto-cipher/pom.xml
M xwiki-commons-core/xwiki-commons-crypto/xwiki-commons-crypto-common/pom.xml
M xwiki-commons-core/xwiki-commons-crypto/xwiki-commons-crypto-password/pom.xml
M xwiki-commons-core/xwiki-commons-crypto/xwiki-commons-crypto-pkix/pom.xml
M xwiki-commons-core/xwiki-commons-crypto/xwiki-commons-crypto-signer/pom.xml
M xwiki-commons-core/xwiki-commons-crypto/xwiki-commons-crypto-store/pom.xml
M xwiki-commons-core/xwiki-commons-crypto/xwiki-commons-crypto-store/xwiki-commons-crypto-store-api/pom.xml
M xwiki-commons-core/xwiki-commons-crypto/xwiki-commons-crypto-store/xwiki-commons-crypto-store-filesystem/pom.xml
M xwiki-commons-core/xwiki-commons-diff/pom.xml
M xwiki-commons-core/xwiki-commons-diff/xwiki-commons-diff-api/pom.xml
M xwiki-commons-core/xwiki-commons-diff/xwiki-commons-diff-display/pom.xml
M xwiki-commons-core/xwiki-commons-diff/xwiki-commons-diff-script/pom.xml
M xwiki-commons-core/xwiki-commons-diff/xwiki-commons-diff-xml/pom.xml
M xwiki-commons-core/xwiki-commons-displayer/pom.xml
M xwiki-commons-core/xwiki-commons-environment/pom.xml
M xwiki-commons-core/xwiki-commons-environment/xwiki-commons-environment-api/pom.xml
M xwiki-commons-core/xwiki-commons-environment/xwiki-commons-environment-common/pom.xml
M xwiki-commons-core/xwiki-commons-environment/xwiki-commons-environment-servlet/pom.xml
M xwiki-commons-core/xwiki-commons-environment/xwiki-commons-environment-standard/pom.xml
M xwiki-commons-core/xwiki-commons-extension/pom.xml
M xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-api/pom.xml
M xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-handlers/pom.xml
M xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-handlers/xwiki-commons-extension-handler-jar/pom.xml
M xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-maven/pom.xml
M xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-repositories/pom.xml
M xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-repositories/xwiki-commons-extension-repository-http/pom.xml
M xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-repositories/xwiki-commons-extension-repository-maven-snapshots/pom.xml
M xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-repositories/xwiki-commons-extension-repository-maven/pom.xml
M xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-repositories/xwiki-commons-extension-repository-xwiki/pom.xml
M xwiki-commons-core/xwiki-commons-filter/pom.xml
M xwiki-commons-core/xwiki-commons-filter/xwiki-commons-filter-api/pom.xml
M xwiki-commons-core/xwiki-commons-filter/xwiki-commons-filter-events/pom.xml
M xwiki-commons-core/xwiki-commons-filter/xwiki-commons-filter-events/xwiki-commons-filter-event-extension/pom.xml
M xwiki-commons-core/xwiki-commons-filter/xwiki-commons-filter-streams/pom.xml
M xwiki-commons-core/xwiki-commons-filter/xwiki-commons-filter-streams/xwiki-commons-filter-stream-xml/pom.xml
M xwiki-commons-core/xwiki-commons-filter/xwiki-commons-filter-test/pom.xml
M xwiki-commons-core/xwiki-commons-filter/xwiki-commons-filter-xml/pom.xml
M xwiki-commons-core/xwiki-commons-groovy/pom.xml
M xwiki-commons-core/xwiki-commons-http/pom.xml
M xwiki-commons-core/xwiki-commons-jakartabridge/pom.xml
M xwiki-commons-core/xwiki-commons-jakartabridge/xwiki-commons-jakartabridge-common/pom.xml
M xwiki-commons-core/xwiki-commons-jakartabridge/xwiki-commons-jakartabridge-servlet/pom.xml
M xwiki-commons-core/xwiki-commons-javascript/pom.xml
M xwiki-commons-core/xwiki-commons-job/pom.xml
M xwiki-commons-core/xwiki-commons-job/xwiki-commons-job-api/pom.xml
M xwiki-commons-core/xwiki-commons-job/xwiki-commons-job-default/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-classloader/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-classloader/xwiki-commons-legacy-classloader-api/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-component/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-component/xwiki-commons-legacy-component-api/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-component/xwiki-commons-legacy-component-default/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-configuration/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-job/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-job/xwiki-commons-legacy-job-api/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-job/xwiki-commons-legacy-job-default/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-properties/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-velocity-tools/pom.xml
M xwiki-commons-core/xwiki-commons-legacy/xwiki-commons-legacy-velocity/pom.xml
M xwiki-commons-core/xwiki-commons-logging/pom.xml
M xwiki-commons-core/xwiki-commons-logging/xwiki-commons-logging-api/pom.xml
M xwiki-commons-core/xwiki-commons-logging/xwiki-commons-logging-common/pom.xml
M xwiki-commons-core/xwiki-commons-logging/xwiki-commons-logging-logback/pom.xml
M xwiki-commons-core/xwiki-commons-management/pom.xml
M xwiki-commons-core/xwiki-commons-netflux/pom.xml
M xwiki-commons-core/xwiki-commons-observation/pom.xml
M xwiki-commons-core/xwiki-commons-observation/xwiki-commons-observation-api/pom.xml
M xwiki-commons-core/xwiki-commons-observation/xwiki-commons-observation-local/pom.xml
M xwiki-commons-core/xwiki-commons-properties/pom.xml
M xwiki-commons-core/xwiki-commons-repository/pom.xml
M xwiki-commons-core/xwiki-commons-repository/xwiki-commons-repository-api/pom.xml
M xwiki-commons-core/xwiki-commons-repository/xwiki-commons-repository-model/pom.xml
M xwiki-commons-core/xwiki-commons-script/pom.xml
M xwiki-commons-core/xwiki-commons-stability/pom.xml
M xwiki-commons-core/xwiki-commons-store/pom.xml
M xwiki-commons-core/xwiki-commons-store/xwiki-commons-store-api/pom.xml
M xwiki-commons-core/xwiki-commons-store/xwiki-commons-store-blob/pom.xml
M xwiki-commons-core/xwiki-commons-store/xwiki-commons-store-blob/xwiki-commons-store-blob-api/pom.xml
M xwiki-commons-core/xwiki-commons-store/xwiki-commons-store-blob/xwiki-commons-store-blob-filesystem/pom.xml
M xwiki-commons-core/xwiki-commons-store/xwiki-commons-store-blob/xwiki-commons-store-blob-s3/pom.xml
M xwiki-commons-core/xwiki-commons-store/xwiki-commons-store-blob/xwiki-commons-store-blob-test/pom.xml
M xwiki-commons-core/xwiki-commons-store/xwiki-commons-store-blob/xwiki-commons-store-blob-test/xwiki-commons-store-blob-test-docker/pom.xml
M xwiki-commons-core/xwiki-commons-text/pom.xml
M xwiki-commons-core/xwiki-commons-velocity/pom.xml
M xwiki-commons-core/xwiki-commons-webjars/pom.xml
M xwiki-commons-core/xwiki-commons-websocket/pom.xml
M xwiki-commons-core/xwiki-commons-xml/pom.xml
M xwiki-commons-core/xwiki-commons-xstream/pom.xml
M xwiki-commons-pom/pom.xml
M xwiki-commons-tools/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-archiver/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-enforcers/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-enforcers/xwiki-commons-tool-enforcer-dependencies/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-extension-plugin/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-license-resources/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-pom/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-remote-resource-plugin/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-spoon/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-spoon/xwiki-commons-tool-spoon-checks/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-spoon/xwiki-commons-tool-spoon-tests/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-test/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-test/xwiki-commons-tool-test-component/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-test/xwiki-commons-tool-test-simple/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-verification-resources/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-webjar-handlers/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-webjar-node-handlers/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-xar/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-xar/xwiki-commons-tool-xar-handlers/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-xar/xwiki-commons-tool-xar-integration-tests/pom.xml
M xwiki-commons-tools/xwiki-commons-tool-xar/xwiki-commons-tool-xar-plugin/pom.xml
Log Message:
-----------
[maven-release-plugin] prepare for next development iteration
Commit: e57f51dd1bfc14b3cb9803d58e38fa17d2137183
https://github.com/xwiki/xwiki-commons/commit/e57f51dd1bfc14b3cb9803d58e38f…
Author: Manuel Leduc <manuel.leduc(a)xwiki.com>
Date: 2026-08-19 (Wed, 19 Aug 2026)
Changed paths:
M pom.xml
Log Message:
-----------
[branch] prepare for next development iteration (custom)
Compare: https://github.com/xwiki/xwiki-commons/compare/34dc1fae4c85...e57f51dd1bfc
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-commons/settings/notifications
1
0
[xwiki/xwiki-dev-llm] 87dd34: [Misc] Never force-push without naming the remote ...
by XWiki Notifications 19 Aug '26
by XWiki Notifications 19 Aug '26
19 Aug '26
Branch: refs/heads/explicit-push-refspec
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: 87dd341e5d223ba62b4879cd29b0d5e1fa3c136c
https://github.com/xwiki/xwiki-dev-llm/commit/87dd341e5d223ba62b4879cd29b0d…
Author: Thomas Mortagne <thomas.mortagne(a)gmail.com>
Date: 2026-08-19 (Wed, 19 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
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Never force-push without naming the remote and the branch
* Add a "Force-pushing" section to the org-wide instructions: `git push --force-with-lease origin
<branch>`, never a refspec-less force push.
* Explain the failure mode in the xwiki-pull-request skill, as part of the steps before opening a
PR: where `push.default=matching` is configured, a refspec-less push acts on every local branch
whose name also exists on the remote, so forcing rewinds them — a stale local master overwrites
the remote master. `--force-with-lease` does not prevent it, because its lease only checks that
the remote-tracking ref is current, which after a fetch it is. The push output is the check: it
must list only the intended ref.
* Bump the plugin version to 1.0.32 across all host manifests.
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
[xwiki/xwiki-dev-llm] c4773e: [Misc] Always push naming the remote and the branc...
by XWiki Notifications 19 Aug '26
by XWiki Notifications 19 Aug '26
19 Aug '26
Branch: refs/heads/explicit-push-refspec
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: c4773e03fb84a488eeec21214a076f511f9365ff
https://github.com/xwiki/xwiki-dev-llm/commit/c4773e03fb84a488eeec21214a076…
Author: Thomas Mortagne <thomas.mortagne(a)gmail.com>
Date: 2026-08-19 (Wed, 19 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
M xwiki/okf/processes/security-policy.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Always push naming the remote and the branch explicitly
* Add a "Pushing" section to the org-wide instructions: `git push -u origin <branch>`, never a bare
`git push`.
* Explain the failure mode in the xwiki-pull-request skill, as part of the steps before opening a
PR: where `push.default=matching` is configured, a bare push updates every local branch whose
name also exists on the remote, so a stale local master rewinds the remote one — and
`--force-with-lease` does not prevent it, because its lease only checks that the remote-tracking
ref is current, which it is. The push output is the check: it must list only the intended ref.
* Make the one remaining bare `git push` in the OKF explicit — the security-advisory merge recipe,
where the branch pushed to is a release branch.
* Bump the plugin version to 1.0.32 across all host manifests.
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
[xwiki/xwiki-dev-llm] acb5db: [Misc] Build with the JDK the branch targets, pref...
by XWiki Notifications 19 Aug '26
by XWiki Notifications 19 Aug '26
19 Aug '26
Branch: refs/heads/xmvn-when-available
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: acb5db207bd146042920979f6face03f4fce02ce
https://github.com/xwiki/xwiki-dev-llm/commit/acb5db207bd146042920979f6face…
Author: Thomas Mortagne <thomas.mortagne(a)gmail.com>
Date: 2026-08-19 (Wed, 19 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
M xwiki/skills/xwiki-build/SKILL.md
M xwiki/skills/xwiki-increase-test-coverage/SKILL.md
Log Message:
-----------
[Misc] Build with the JDK the branch targets, preferring xmvn
* Add the rule to the org-wide instructions: whenever `xmvn` (from xwiki-dev-tools) is on the PATH,
use it in place of `mvn` — it reads the target Java version from the pom and runs Maven with the
matching JDK, which is one command instead of a version lookup plus an explicit JAVA_HOME.
Without it, read `xwiki.java.version` from the root pom and set JAVA_HOME by hand.
* Document in the xwiki-build skill what xmvn actually does, why it is preferred over selecting the
JDK manually, and the failures a too-new JDK produces: JaCoCo aborting with "Unsupported class
file major version" (which breaks every -Pquality build) and the Spoon plugin failing to add a
URL to the system classloader. Both read as code or configuration problems and are neither.
* Record that `sonar:sonar` has a JDK floor of its own, higher than the branch's Java level on the
older lines, and that xmvn raises the version for it — so this is one more reason to prefer xmvn
over a hand-picked JDK. Point at xmvn and xwiki-jenkins-pipeline's vars/configureJavaTool.groovy
for the current floor rather than baking in a number that moves with the pinned
sonar-maven-plugin version.
* Point the xwiki-increase-test-coverage skill at xmvn too, since that is where the JaCoCo agent
failure bites: on a too-new JDK it produces no coverage at all.
* Bump the plugin version to 1.0.32 across all host manifests.
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
[xwiki/xwiki-dev-llm] 8603a9: [Misc] Move the SonarQube rule-fix knowledge into ...
by XWiki Notifications 19 Aug '26
by XWiki Notifications 19 Aug '26
19 Aug '26
Branch: refs/heads/master
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: 8603a9d0d1e4ba86805c96b9cede76b84508922a
https://github.com/xwiki/xwiki-dev-llm/commit/8603a9d0d1e4ba86805c96b9cede7…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-07-29 (Wed, 29 Jul 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/conventions/code-style.md
M xwiki/okf/index.md
A xwiki/okf/sonarqube/constant-and-resource-rules.md
A xwiki/okf/sonarqube/dead-code-rules.md
A xwiki/okf/sonarqube/index.md
A xwiki/okf/sonarqube/modernization-rules.md
A xwiki/okf/sonarqube/simplification-rules.md
A xwiki/okf/sonarqube/syntax-rules.md
A xwiki/okf/sonarqube/test-code-rules.md
A xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-build/SKILL.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Move the SonarQube rule-fix knowledge into a per-rule-family OKF topic
Distils the durable half of the sonarqube routine-memory repo into the OKF so
that fixing a Sonar issue is driven by knowing which sites to DROP, not just
what the transform is.
* Add okf/sonarqube/ — index (rule map, denylist, universal drop conditions)
plus six family files loaded lazily, one per rule group, and verification.md.
Pool sizes are excluded as volatile; the index gives a facet query instead.
* Record the @SuppressWarnings("java:SXXXX") + rationale-comment convention in
okf/conventions/code-style.md — retire a won't-fix in the code, not in
SonarCloud, so the next developer reads the reason next to the code.
* Add reactor-result semantics to the xwiki-build skill: a mid-reactor failure
skips every later module, and how to tell a pre-existing failure from yours.
* Rewrite the xwiki-fix-sonarqube-issue skill around the OKF: drop its inline
allow/denylist, add the load protocol and the safe-batch-application
procedure (assert-guarded script, match-count location, subagent
verification).
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: cf0671c9777d039fa59f8b6029b1bc60d69f7d05
https://github.com/xwiki/xwiki-dev-llm/commit/cf0671c9777d039fa59f8b6029b1b…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-07-29 (Wed, 29 Jul 2026)
Changed paths:
M xwiki/okf/sonarqube/index.md
Log Message:
-----------
[Misc] Add S2143, S2160 and S1141 to the SonarQube denylist
Missed from the previous commit. Like S3776 these are real design changes
rather than mechanical cleanups, so a Sonar sweep is the wrong vehicle.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 20bbe28ef8fd9634d3d7080801acaef30239886c
https://github.com/xwiki/xwiki-dev-llm/commit/20bbe28ef8fd9634d3d7080801aca…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-07-29 (Wed, 29 Jul 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 v1.0.0
Commit: b43f7529709b6d380fa5f490a51f7232ebb04155
https://github.com/xwiki/xwiki-dev-llm/commit/b43f7529709b6d380fa5f490a51f7…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-07-30 (Thu, 30 Jul 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
M xwiki/okf/sonarqube/modernization-rules.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/okf/sonarqube/syntax-rules.md
Log Message:
-----------
Document the S6397, S6485 and S6208 SonarQube rules in the OKF
* simplification-rules: S6397 (redundant single-character regex character class), including the
escaping to preserve and the \uXXXX source-text gotcha.
* modernization-rules: S6485 (collection factory methods instead of the sizing constructor) and the
S6201 shapes a scripted sweep misses (else-if chains, bare casts, array-index operands, array-type
patterns, acronym naming, name reuse across sibling blocks).
* syntax-rules: S6208 (merge fall-through case labels), including when the group must be dropped.
* index: rule-map rows for the three new rules, plus S6213 and S4144 added to the denylist.
* Bump the plugin version to 1.0.1 across all host manifests.
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 0758d0b81ec104b45d6777fdb914655092b5ee9b
https://github.com/xwiki/xwiki-dev-llm/commit/0758d0b81ec104b45d6777fdb9146…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-07-30 (Thu, 30 Jul 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
M xwiki/okf/sonarqube/modernization-rules.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/okf/sonarqube/syntax-rules.md
Log Message:
-----------
Document the S6397, S6485 and S6208 SonarQube rules in the OKF
Commit: 2f7214973471a73bdb7f521aa861be700f1edbbb
https://github.com/xwiki/xwiki-dev-llm/commit/2f7214973471a73bdb7f521aa861b…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-07-30 (Thu, 30 Jul 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
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/conventions/documentation.md
A xwiki/okf/conventions/page-deletion.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Require handling a page's backlinks before deleting it on xwiki.org
Deleting a page on xwiki.org breaks every link pointing at it, and the breakage
shows up on other pages that nothing in the delete flow names. Capture the rule
as a new OKF topic (conventions/page-deletion.md), generic to any page deletion
rather than tied to documentation authoring or conversion:
- what the deletion wizard does repoint ("New target" + "Update links", plus the
XWiki.RedirectClass redirect) and what it never does (a REST DELETE, links
written as absolute URLs, macro parameters without MacroRefactoring,
references held in xproperties);
- why the Information tab's Backlinks list must be completed with a farm-wide
search: an absolute URL is an external link, so it is not a backlink at all;
- the triage table, and the recovery path (restore from the trash to get the
list back) when a page was already deleted.
The doc-migration file keeps only its migration-specific triage and defers the
mechanics to the new topic; documentation.md and the xwiki-doc-writing,
xwiki-doc-convert and xwiki-rest-api skills point at it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 169cf67c10f3d071880913f3a5a6cd7f69c482ea
https://github.com/xwiki/xwiki-dev-llm/commit/169cf67c10f3d071880913f3a5a6c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-07-30 (Thu, 30 Jul 2026)
Changed paths:
M xwiki/instructions/xwiki-org.md
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/conventions/documentation.md
A xwiki/okf/conventions/page-deletion.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Require handling a page's backlinks before deleting it on xwiki.org
Commit: 9c4ea74d58482a42a86d4f163f7ff59ac9ec1315
https://github.com/xwiki/xwiki-dev-llm/commit/9c4ea74d58482a42a86d4f163f7ff…
Author: Thomas Mortagne <thomas.mortagne(a)gmail.com>
Date: 2026-07-30 (Thu, 30 Jul 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/versioning.md
M xwiki/skills/xwiki-backport-testneeded/SKILL.md
M xwiki/skills/xwiki-backport/SKILL.md
Log Message:
-----------
[Misc] Put @since on reusable code, including test tools (#29)
The versioning convention claimed that methods of page objects and test helpers never carry @since.
That is wrong: @since tells a caller when the thing it calls appeared, so it belongs on any reusable
class or member, whatever the module and whatever the visibility — internal code and the tools tests
are written with (page objects, test frameworks such as @UITest and its TestConfiguration, TestUtils)
included. Only the tests themselves, which nothing calls, carry none.
* fix the rule in okf/conventions/versioning.md
* align the two backport skills that restated it as an operative instruction
* bump the plugin version so installed plugins pull the fix
Co-authored-by: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 5e31dc7a632698ed519cc59513cd0c09e96b3f77
https://github.com/xwiki/xwiki-dev-llm/commit/5e31dc7a632698ed519cc59513cd0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-07-31 (Fri, 31 Jul 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/modernization-rules.md
Log Message:
-----------
[Misc] Record the doPrivileged ambiguity as an S1604 drop condition
An anonymous class names the functional interface it implements; an
implicitly-typed lambda cannot. When the target method is overloaded on two
functional interfaces with the same descriptor the converted call no longer
compiles, which makes every AccessController.doPrivileged() site a permanent
drop for java:S1604.
Co-authored-by: Vincent Massol <vincent(a)massol.net>
Commit: 718e6cad5a0e1aa1617d3e7751c7195593c83cb7
https://github.com/xwiki/xwiki-dev-llm/commit/718e6cad5a0e1aa1617d3e7751c71…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-07-31 (Fri, 31 Jul 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/modernization-rules.md
Log Message:
-----------
[Misc] Record the doPrivileged ambiguity as an S1604 drop condition
Commit: 2e65b28c7ebcd6b980c013790bb4463c61e97e62
https://github.com/xwiki/xwiki-dev-llm/commit/2e65b28c7ebcd6b980c013790bb44…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-01 (Sat, 01 Aug 2026)
Changed paths:
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] Document five more SonarQube rules and three instanceof scripting traps
* Add S6068 (useless Mockito eq()) to the test-code family, including why the
whole statement must be unwrapped and when eq() is genuinely required.
* Add S2209 to the syntax family and explain why it is safe where the denylisted
S3252 is not.
* Add S1264, S3012 and S3024 to the simplification family.
* Record the three traps that bite a scripted S6201 batch: the parenthesized cast
only owns its outer paren before a '.', brace counting must start at the '{' of
a "} else if" line, and \b does not match after an array type's ']'.
* Record the two extra S6126 drop conditions (\r\n, and a fixture with no content
line at the baseline indent) and that a whole module's pool can be one drop.
* Deny S6035 on public constants (Revapi constantValueChanged) and S3824 where the
guarded block does more than the put.
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: e58a2cc17dfb4408ea3a55a0adca0eb1bb1fc4b0
https://github.com/xwiki/xwiki-dev-llm/commit/e58a2cc17dfb4408ea3a55a0adca0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-01 (Sat, 01 Aug 2026)
Changed paths:
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] Document five more SonarQube rules and three instanceof scripting traps
Commit: bcfb1502ee42154478bea220a05872bd12668d0a
https://github.com/xwiki/xwiki-dev-llm/commit/bcfb1502ee42154478bea220a0587…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-01 (Sat, 01 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
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Record that prose for xwiki.org and the forum is never hard-wrapped
Add the convention to okf/conventions/documentation.md: content written for
xwiki.org pages and for forum.xwiki.org (Discourse) posts must not be
hard-wrapped — one paragraph, and each list item, is a single unbroken line.
Both surfaces reflow prose themselves, so manual breaks inside a paragraph gain
nothing, are painful to re-wrap in the web editor and can leak into the rendered
output. The 120-character limit is a Java-source rule enforced by Checkstyle;
applying it to prose bound for a web editor is a category error. Fenced and
{{code}} blocks keep their own line structure.
Sync the okf/index.md and instructions/xwiki-org.md maps, and bump the plugin
version to 1.0.4 so installed plugins pull the update.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: a1a6fa2ddb12f64887e2363983bb1ffcfb0abb0e
https://github.com/xwiki/xwiki-dev-llm/commit/a1a6fa2ddb12f64887e2363983bb1…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-01 (Sat, 01 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
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Record that prose for xwiki.org and the forum is never hard-wrapped
Commit: a97185e825cd0e2d80952f4fd03bf6dd92ae0ba1
https://github.com/xwiki/xwiki-dev-llm/commit/a97185e825cd0e2d80952f4fd03bf…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-03 (Mon, 03 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
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
A xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Record how to query ci.xwiki.org through the Jenkins REST API
The server map only said "WebFetch a job/build URL", which is misleading:
ci.xwiki.org sits behind Cloudflare and answers 403 to anything sending a
browser User-Agent, while plain curl gets 200. It also has a full anonymous
REST API that removes any need to scrape the UI.
Add okf/servers/jenkins.md with the endpoints that answer the questions that
actually come up (failing tests with messages, changesets, the exact commit
built, archived screenshots, consoleText), and the traps in reading a result:
FAILURE means it broke outside the tests while UNSTABLE means tests failed, a
test case's age/failedSince only counts builds that produced test results so
it is not a reliable first-failure, changeSets can be empty, and a UI test
that breaks with no source change is usually the parent pom moving
${platform.version}.
Correct the ci.xwiki.org row and the build-status verify recipe in
okf/servers/index.md accordingly, and register the topic in okf/index.md and
the injected mirror in instructions/xwiki-org.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 9cf9e8c673fb94caac9535c2203cf2b2b1c32c34
https://github.com/xwiki/xwiki-dev-llm/commit/9cf9e8c673fb94caac9535c2203cf…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-03 (Mon, 03 Aug 2026)
Changed paths:
M xwiki/instructions/xwiki-org.md
A xwiki/okf/conventions/logging.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Record that a log argument is an object, not text
A logging pass over commons and platform removed explicit toString() calls on log
arguments as "redundant, since SLF4J calls toString() itself". That reasoning is
wrong for XWiki, because SLF4J is not the only consumer of a log event:
AbstractJobStatus captures every warn/error on a job thread, the LogEvent keeps
the raw Object[], SafeMessageConverter XStream-serializes each argument as a full
object graph whenever XStreamUtils.isSerializable() accepts it (which defaults to
true), SafeArrayConverter turns any read failure into null, and consumers read
arguments by type -- the log displayers render references as links and Importer
casts getArgumentArray()[0] to EntityReference.
So both directions are wrong in different cases, which is what the new
conventions/logging.md records: the decision table for when to keep an argument
typed (references, extension ids, enums, components, collections) and when to
force an eager String (arbitrary sources, live resources such as a Hibernate
Session, mutable builders, requests, an object whose toString() is deliberately
narrower than its fields, a Class from an extension jar), plus the two wrong
justifications for removing a toString() and how java:S2629 actually behaves --
String-typed arguments only, no-arg getters and catch blocks exempt -- so that a
suppression is only added where one is really needed.
The always-on instructions only gain the topic name in the OKF map: this matters
when working on a logging call, which is when the OKF gets consulted, so it does
not belong in what every session pays for.
Co-authored-by: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: b2f268a97f81457046213a7e94616e49255622ae
https://github.com/xwiki/xwiki-dev-llm/commit/b2f268a97f81457046213a7e94616…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-03 (Mon, 03 Aug 2026)
Changed paths:
M xwiki/instructions/xwiki-org.md
A xwiki/okf/conventions/logging.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Record that a log argument is an object, not text
Commit: 1e2103e97ed80715e4cccfb4b667eedc82be55ac
https://github.com/xwiki/xwiki-dev-llm/commit/1e2103e97ed80715e4cccfb4b667e…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-03 (Mon, 03 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
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
A xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Record how to query ci.xwiki.org through the Jenkins REST API
Commit: 5615c8b7fb9c01d4e69ee66251432b00f722ddfb
https://github.com/xwiki/xwiki-dev-llm/commit/5615c8b7fb9c01d4e69ee66251432…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-03 (Mon, 03 Aug 2026)
Changed paths:
M .gitignore
Log Message:
-----------
[Misc] Add some more git ignores
Commit: dba678f7d1003df58d073d2110ac69536bd10928
https://github.com/xwiki/xwiki-dev-llm/commit/dba678f7d1003df58d073d2110ac6…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-03 (Mon, 03 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/logging.md
Log Message:
-----------
[Misc] Correct which log calls a job captures
conventions/logging.md said AbstractJobStatus captures "every warn/error
executed on a job thread". That is true but narrower than the mechanism, and
the gap matters.
AbstractJobStatus (line 203) builds a plain LoggerListener over the job's
LoggerTail, and LoggerListener.onEvent forwards any LogEvent it receives
without looking at its level. So the capture is level-agnostic: warn and error
are always captured only because those levels are always enabled with the
default configuration, and a debug call is captured just as fully whenever
debug is on.
Read as an exhaustive list, the old wording invites the conclusion that a debug
argument never reaches the job log and therefore needs none of the care the
rest of the file describes -- exactly backwards, since a debug call under an
isDebugEnabled() guard is the one case where the eager String is also the
performance-correct choice.
Co-authored-by: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 92fe0cdf997d8277b09dfe179f03d2187b8cae45
https://github.com/xwiki/xwiki-dev-llm/commit/92fe0cdf997d8277b09dfe179f03d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-03 (Mon, 03 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/logging.md
Log Message:
-----------
[Misc] Correct which log calls a job captures
Commit: fbfcbd7b499e6654befac592695a6a1af26ea5d5
https://github.com/xwiki/xwiki-dev-llm/commit/fbfcbd7b499e6654befac592695a6…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-04 (Tue, 04 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
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
Log Message:
-----------
[Misc] Add doc rules on result steps, visuals, verbosity and setup questions
* End a How-to/Tutorial with a step showing the result
* Show, don't only tell: screenshots for users/admins, code examples for
developers, architecture/concept diagrams for explanations - without
forcing a visual where it clarifies nothing
* Keep verbosity low and make hub pages link the pages they introduce
* Ask the developer up front about Change Request vs direct save, the
xwiki.org credentials, a running local instance for screenshots and its
credentials
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 3a20202bf45452d607f2e54d6bc8e38320132b05
https://github.com/xwiki/xwiki-dev-llm/commit/3a20202bf45452d607f2e54d6bc8e…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-04 (Tue, 04 Aug 2026)
Changed paths:
M CLAUDE.md
M README.md
M kimi.plugin.json
M opencode.jsonc
Log Message:
-----------
[Misc] Remove the sonarqube key error + commit missed files in the previous commit
Commit: 624fd0acc4933f6bf93460d0adf6c06b0cf054d2
https://github.com/xwiki/xwiki-dev-llm/commit/624fd0acc4933f6bf93460d0adf6c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-04 (Tue, 04 Aug 2026)
Changed paths:
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
Log Message:
-----------
[Misc] Added missed files from the previous commit
Commit: c6d698989552d7349dd0abfeae1031612940ebb3
https://github.com/xwiki/xwiki-dev-llm/commit/c6d698989552d7349dd0abfeae103…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-04 (Tue, 04 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/skills/xwiki-doc-writing/SKILL.md
Log Message:
-----------
[Misc] Correct the xwiki.org Technical Id format in the doc conventions
The OKF and the xwiki-doc-writing checklist stated the Technical Id as a bare
`<groupId>:<artifactId>`, citing the generic Apply Diataxis page. On xwiki.org the
value is prefixed by how the feature is distributed — `xwiki:<extension id>` or
`npm:<package id>` — and the prefix is what makes the Extension badge at the bottom
of the page resolve. The unprefixed form produces no badge.
This misstatement caused a documentation review to report all 21 conformant JIRA
extension pages as malformed, so the correction also records that an unprefixed id
is the defect rather than the norm.
Authority: Page Structure on xwiki.org, which the sources list now includes.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: aaa6309d8748de60e628e17621749388be39293f
https://github.com/xwiki/xwiki-dev-llm/commit/aaa6309d8748de60e628e17621749…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-04 (Tue, 04 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/skills/xwiki-doc-writing/SKILL.md
Log Message:
-----------
[Misc] Correct the xwiki.org Technical Id format in the doc conventions
Commit: 0a5d3489528681887ca2f2ee90662cc91016f42e
https://github.com/xwiki/xwiki-dev-llm/commit/0a5d3489528681887ca2f2ee90662…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-05 (Wed, 05 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/okf/servers/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Look up xwiki.org credentials in ~/.xwiki-credentials, ask setup questions via AskUserQuestion
The doc skills' setup questions are now asked with the AskUserQuestion tool
(clickable options) instead of prose, and the xwiki.org write credentials are
looked up in ~/.xwiki-credentials before being asked for.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: df0967cfcdaa3d108a11f461172fd9c8b1bfcbc4
https://github.com/xwiki/xwiki-dev-llm/commit/df0967cfcdaa3d108a11f461172fd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-05 (Wed, 05 Aug 2026)
Changed paths:
M README.md
M xwiki/okf/servers/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Look up xwiki.org credentials in ~/.xwiki-credentials, ask the doc setup questions via AskUserQuestion
Commit: 1eb84a3706202c0f3385d08311a7f2de949b7d92
https://github.com/xwiki/xwiki-dev-llm/commit/1eb84a3706202c0f3385d08311a7f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-05 (Wed, 05 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] Warn that `mvn checkstyle:check` does not run the CI ruleset
A CLI goal invocation takes the plugin-level <configuration>, which in the
XWiki parent POM points at checkstyle-blocker.xml; checkstyle.xml lives in the
`default` execution and checkstyle-test.xml in the `test` one. So a bare
`mvn checkstyle:check` reports BUILD SUCCESS on code that fails CI. Document
the `checkstyle:check@default checkstyle:check@test` form, plus the rule that a
multi-module change must be validated on every module it touched.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 1520dc1ccd9ffa4df2a196895c39d7946342c767
https://github.com/xwiki/xwiki-dev-llm/commit/1520dc1ccd9ffa4df2a196895c39d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-06 (Thu, 06 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/constant-and-resource-rules.md
M xwiki/okf/sonarqube/dead-code-rules.md
M xwiki/okf/sonarqube/index.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] Document eight more SonarQube rules in the OKF
* S4719 charset name -> StandardCharsets, including the unreachable-catch compile break
and when it is safe to retype the constant instead
* S1130 remove unthrowable throws — the src/test vs src/main split decides it entirely
* S1659, S6353, S1905, S4201, S1596, S2133 — transforms and drop conditions
* S1905 carries the general warning that an "unnecessary" cast on an argument of an
overloaded method can silently re-dispatch
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: a44aa46e5feb34c1d314ad98ea185c087186b766
https://github.com/xwiki/xwiki-dev-llm/commit/a44aa46e5feb34c1d314ad98ea185…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-06 (Thu, 06 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/constant-and-resource-rules.md
M xwiki/okf/sonarqube/dead-code-rules.md
M xwiki/okf/sonarqube/index.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] Document eight more SonarQube rules in the OKF
Commit: 3d2f658627c247b9ee0bb00fb063555291fd4b9a
https://github.com/xwiki/xwiki-dev-llm/commit/3d2f658627c247b9ee0bb00fb0635…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-06 (Thu, 06 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
M xwiki/okf/conventions/commit-messages.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Correct the commit-message convention: the summary line is the JIRA issue title
* The OKF, the always-injected org instructions and the xwiki-pull-request skill all documented
the format as `XWIKI-12345: <summary>`, which reads as an invitation to compose a new sentence.
The documented rule is `<JIRA ID>: <JIRA issue description>` — the issue title reproduced
verbatim — with what the individual commit does listed as `*` bullets in the body.
* Record why the body matters: it is the only thing distinguishing several commits that share one
issue, since their summary lines are identical by construction.
* Record the corollary that the title is reused on every commit and so must read well as a commit
summary, and must not be reworded casually afterwards.
* Scope `[Misc]` using the dev-wiki test ("does it affect any user or extension developer?") so a
behaviour-changing batch refactoring is not filed under it.
* Note that security fixes override the copy-the-title rule, since the title would disclose the
nature of the issue before it is released.
* Add the JIRA best-practices page, which actually carries the rule, to the entry's sources.
* Bump the plugin version to 1.0.13 so installed plugins pull the update.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 8b6e648b233a697c53d937394451913633185588
https://github.com/xwiki/xwiki-dev-llm/commit/8b6e648b233a697c53d9373944519…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-06 (Thu, 06 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
M xwiki/okf/conventions/commit-messages.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Correct the commit-message convention: the summary line is the JIRA issue title
Commit: 40b181a5dde8c9877d049daed598ceb56e660700
https://github.com/xwiki/xwiki-dev-llm/commit/40b181a5dde8c9877d049daed598c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-07 (Fri, 07 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
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/test-code-rules.md
Log Message:
-----------
Document SonarQube rules S125, S5778 and S8714, and narrow S1130's test-source rule
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: b1e94b49439a8d047c8d52f8c211260be4fb1cef
https://github.com/xwiki/xwiki-dev-llm/commit/b1e94b49439a8d047c8d52f8c2112…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-07 (Fri, 07 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
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/test-code-rules.md
Log Message:
-----------
[Misc] Document SonarQube rules S125, S5778 and S8714, and narrow S1130 test-source rule
Commit: 1e542363b2ca6a201e558cea912c21776dbdb719
https://github.com/xwiki/xwiki-dev-llm/commit/1e542363b2ca6a201e558cea912c2…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-07 (Fri, 07 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
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/test-code-rules.md
Log Message:
-----------
[Misc] Document S5783 as the checked-exception twin of S5778, and three drop conditions
* S5783 shares S5778's section and its fix; call out that it is the trap an S8714 conversion sets
for itself when the try body builds an argument inline.
* S5786: an @Override cannot have its visibility reduced, and a cross-package read of a constant
off a test class blocks making that class package-private.
* S1185: removing a public super-only override passes revapi, so "it is public API" is not by
itself a drop reason.
* S1144: a private member named as a string in a reflection test is used, not dead.
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 1d3e67b1df1d68cf39a32cfa31586289787774e5
https://github.com/xwiki/xwiki-dev-llm/commit/1d3e67b1df1d68cf39a32cfa31586…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-07 (Fri, 07 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
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/test-code-rules.md
Log Message:
-----------
[Misc] Document S5783 as the checked-exception twin of S5778, and three drop conditions
Commit: 60b90ee4a6ac281d7c11d21fb64dbf72c2f4ac23
https://github.com/xwiki/xwiki-dev-llm/commit/60b90ee4a6ac281d7c11d21fb64db…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-07 (Fri, 07 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/backward-compatibility.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-legacy/SKILL.md
Log Message:
-----------
[Misc] Record that Revapi coverage is not uniform per module, and fix the xwiki-legacy verification step
* Step 8 of xwiki-legacy claimed the main+legacy build "confirms your ignore". It cannot for a pair
like xwiki-platform-oldcore / xwiki-platform-legacy-oldcore: the main module sets xwiki.revapi.skip,
and the legacy weaver's own check is green by construction since its jar re-adds whatever the main
jar dropped. Following the step therefore produced a green build with no ignore at all, and the
break surfaced later on a downstream consumer. Point step 8 at a consumer module instead, run with
and without the ignore
* Step 5 now says to enumerate the ignore items from the diff rather than from the build, names the
platform ignore location next to the commons one, and shows the constructor signature form
* Record the underlying fact — Revapi compares transitive dependencies but only reports the classes
the primary artifact's API reaches, so a skipped module's break lands on an arbitrary consumer — in
the backward-compatibility OKF topic, which the skill now points to
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 99d9fa1393e256a26c8e6ccf3f1ad7c0e2fecee1
https://github.com/xwiki/xwiki-dev-llm/commit/99d9fa1393e256a26c8e6ccf3f1ad…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-07 (Fri, 07 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/backward-compatibility.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-legacy/SKILL.md
Log Message:
-----------
[Misc] Record that Revapi coverage is not uniform per module, and fix the xwiki-legacy verification step
Commit: fd0af24e73d2573b151c30d94f05821fbd46c921
https://github.com/xwiki/xwiki-dev-llm/commit/fd0af24e73d2573b151c30d94f058…
Author: elenicojocariu <cojocariu.eleni24(a)gmail.com>
Date: 2026-08-08 (Sat, 08 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
M xwiki/okf/conventions/documentation-mechanics.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Record the LandingPageClass xobject and the DocumentationClass sweep trap
* Landing pages on xwiki.org carry DocApp.Code.LandingPageClass instead of DocumentationClass, and no
DocumentationExtensionClass. Both kinds named by the DocGuide's Create Landing Pages use it: the
target landing pages (documentation.xs.user / .admin / .dev) and the Diataxis type landing pages
nested under each. The class was absent from the documentation-mechanics xobject table, which listed
only the three DocumentationClass-family ones.
* On a type landing page, type and target are the filter its table applies rather than a classification
of the page itself — it lists every page of that type for that audience across documentation.xs, so it
normally has no child pages of its own.
* Record the audit trap this sets: a sweep selecting pages by DocumentationClass silently skips every
landing page, and landing pages carry the tree's most visible Highlights. Auditing the Highlights of
documentation.xs.user that way reports "nothing to fix" while missing the one page that needed it —
the Explanations landing page, which lists 51 pages and had no Highlights at all.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: ca26e115d0c5c28ac63ac1522e659fe23a2d152d
https://github.com/xwiki/xwiki-dev-llm/commit/ca26e115d0c5c28ac63ac1522e659…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-08 (Sat, 08 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
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/simplification-rules.md
Log Message:
-----------
Document S2629 and S3358, and widen the S1130 safe set to private helpers
* S1130: a private helper in a test class cannot be overridden by a test-jar
consumer, so it is as safe as an annotated test method. Also add the XWiki
test-framework hooks (@BeforeComponent) to the safe annotation set.
* S2629: the only mechanical shape is a redundant toString() on an argument of
an already-parameterized SLF4J call; everything else needs an isXxxEnabled()
guard, which is a judgement call.
* S3358: extract the inner ternary; exact-negation branches collapse to one
local plus a unary minus. Ship it separately, it is a readability judgement.
* Denylist javabugs:S2259, S899/S4042, S1948 and S2386, with the reason each
looks mechanical but is not.
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: e3243c3ed428f0347b99be8e79b56b6c38197f87
https://github.com/xwiki/xwiki-dev-llm/commit/e3243c3ed428f0347b99be8e79b56…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-11 (Tue, 11 Aug 2026)
Changed paths:
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
Deny S2629 and route it to conventions/logging.md instead
The S2629 section added in the previous commit was wrong: it advised deleting a
redundant toString() from a parameterized log call, which contradicts
conventions/logging.md ("Never silently remove an explicit toString()"). In
XWiki a log argument is stored as an object and XStream-serialized into the job
log, so the eager String is usually a deliberate snapshot.
* Move S2629 out of the simplification family and into the index denylist, with
a pointer to conventions/logging.md.
* Tell the skill that a convention-owned rule's knowledge lives in
okf/conventions/, not okf/sonarqube/, so the pointer gets followed.
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 904b9d67c2c99333fbab6ae0a871585971a10ef7
https://github.com/xwiki/xwiki-dev-llm/commit/904b9d67c2c99333fbab6ae0a8715…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-11 (Tue, 11 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
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Document S2629 and S3358, and widen the S1130 safe set to private helpers
Commit: 6cba781ba94d1b99b4b0f1861da8fa37ad3d66f4
https://github.com/xwiki/xwiki-dev-llm/commit/6cba781ba94d1b99b4b0f1861da8f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-11 (Tue, 11 Aug 2026)
Changed paths:
M xwiki/instructions/xwiki-org.md
M xwiki/okf/conventions/documentation-mechanics.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Record the LandingPageClass xobject and the DocumentationClass sweep trapa
Commit: 42e47a95a94c21d4afbc47a67ac6b39643a8a496
https://github.com/xwiki/xwiki-dev-llm/commit/42e47a95a94c21d4afbc47a67ac6b…
Author: elenicojocariu <cojocariu.eleni24(a)gmail.com>
Date: 2026-08-11 (Tue, 11 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/index.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Never print ~/.xwiki-credentials — harden the credentials rule
* okf/servers/index.md (the single place the rule is stated in full): turn "don't read its contents"
into an explicit prohibition — Read/cat/head/less, an ls-then-dump of the directory, and "keys only"
probes are all named, because the format being documented there is precisely why opening the file
teaches nothing. State what to do instead (test -f for existence, an authenticated /rest GET for
validity, sourcing it inside each command so the value never reaches the transcript), and what to do
after a leak (disclose and rotate) — the transcript outlives the file.
* At the two points of use (xwiki-rest-api, xwiki-doc-writing), only the imperative clause
("never print it", source it inside each command) plus the pointer — no restated recipe.
* Nothing added to the always-injected org-wide conventions: the file only matters when writing to
xwiki.org (documentation work), not in every session.
Commit: eec5cd4a2b3cab7d454e53e4b4885c2b98d28c74
https://github.com/xwiki/xwiki-dev-llm/commit/eec5cd4a2b3cab7d454e53e4b4885…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-11 (Tue, 11 Aug 2026)
Changed paths:
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Never print ~/.xwiki-credentials — harden the credentials rule
Commit: 16b1bf9db8711fbb4726db8dde28d34b0dc6813e
https://github.com/xwiki/xwiki-dev-llm/commit/16b1bf9db8711fbb4726db8dde28d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-12 (Wed, 12 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M scripts/validate.mjs
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
A xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Add the xwiki-review skill for multi-angle change review
* Add `xwiki/skills/xwiki-review/SKILL.md`, a review procedure that fans out one specialist
reviewer per angle — conventions, architecture, backward compatibility, defensive conventions,
performance, tests, accessibility, i18n/UX, documentation, data & migration, and conformance to
the JIRA issue — over a PR, a commit range or the working tree, routing each angle in or out from
the changed-file profile.
* Keep the rules in the OKF rather than in the skill: each brief names the OKF files and skills to
load and what to look at, never what the rule says, so a rule has exactly one home. A paraphrase
would drift, and would fail silently — the skeptic in step 5 scores a finding 0 when the cited
file does not say what was claimed, so a stale copy makes an angle report nothing rather than
report wrongly. Checks with no OKF home are marked skill-owned, as a to-do list for the EXTEND
flow.
* Gate the output: deduplicate across angles, challenge each finding with an independent skeptic
that must open the cited rule and confirm it, drop everything below 80 confidence, cap the
report, and open every posted review with a disclaimer that it was generated by Claude Code, may
be wrong, and blocks nothing.
* Keep the defensive-conventions angle to the mechanisms `okf/conventions/security.md` requires and
ban security vocabulary in findings, reasoning and logs alike — public CI logs are public, so the
angle reports a missing mechanism and never an attack, per `okf/processes/security-policy.md`.
Hunting novel vulnerabilities is explicitly out of scope.
* Add invariant 5 to `scripts/validate.mjs`: every `okf/<dir>/<topic>.md` path a skill cites must
exist, so a renamed or deleted topic fails CI instead of leaving a reviewer pointing at nothing.
* Register the skill in `README.md` and `xwiki/okf/index.md`, and bump the plugin version to
1.0.18 across the Claude, Kimi and opencode manifests.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: d16f556c634e2492581b62fd6b620c62ff489682
https://github.com/xwiki/xwiki-dev-llm/commit/d16f556c634e2492581b62fd6b620…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-12 (Wed, 12 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M scripts/validate.mjs
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
A xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Add the xwiki-review skill for multi-angle change review
Commit: 72daccb50eea3b94f3ffdda86a74a2f70a047f01
https://github.com/xwiki/xwiki-dev-llm/commit/72daccb50eea3b94f3ffdda86a74a…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-12 (Wed, 12 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Make xwiki-review cite rules at their terminal source
* Reviewers must cite the file or page where the rule's words actually are, following pointer
skills to the page they link and citing both hops
* Reviewers must quote any clause that limits a rule's scope, so a truncated quote cannot make a
rule look broader than it is
* Skeptics follow one pointer hop before scoring a citation 0, and score the substance when a
finding quoted the right page but labelled it with the pointer's path
* Skeptics read the whole sentence around a quote, and score 0 when a scope clause the finding
omitted is what decides it
* The Tests brief names xwiki-test-guidelines as a pointer file and says to fetch the testing
strategy page before judging a test-level choice
Without this, an angle whose rules live behind a pointer file goes dark: the reviewer has nothing
to enforce, and any finding it does produce is scored 0 for a citation that was never checked at
its real source.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 09adbed3e5c8d3d96da882b2ef05736db58cb26e
https://github.com/xwiki/xwiki-dev-llm/commit/09adbed3e5c8d3d96da882b2ef057…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-12 (Wed, 12 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Make xwiki-review cite rules at their terminal source
Commit: 3d5f77a5e4a90eddcc21c5427dfa38e50c364e72
https://github.com/xwiki/xwiki-dev-llm/commit/3d5f77a5e4a90eddcc21c5427dfa3…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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-review/SKILL.md
Log Message:
-----------
[Misc] Make xwiki-review explicit-invocation only
* Rewrite the skill description so a plain "review this PR" / "review my
changes" request no longer matches it — the eleven-reviewer fan-out costs
far more tokens and time than a normal single-pass review, so it must be
asked for by name (/xwiki-review, "the full multi-angle review") or invoked
by a CI routine.
* Add an opt-in paragraph at the top of the skill body so it self-corrects if
loaded off a borderline match.
* Note the rule in the README skill list.
* Bump the plugin version to 1.0.19.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: cc7236856553ae334934dd6062e1fa3e377518f3
https://github.com/xwiki/xwiki-dev-llm/commit/cc7236856553ae334934dd6062e1f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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
M xwiki/okf/architecture/component-system.md
M xwiki/okf/conventions/backward-compatibility.md
M xwiki/okf/conventions/code-style.md
A xwiki/okf/conventions/dependencies.md
M xwiki/okf/conventions/documentation.md
A xwiki/okf/conventions/frontend.md
A xwiki/okf/conventions/naming.md
A xwiki/okf/conventions/translations.md
M xwiki/okf/index.md
A xwiki/okf/processes/module-lifecycle.md
M xwiki/okf/processes/security-policy.md
M xwiki/okf/servers/jira.md
Log Message:
-----------
[Misc] Capture the DevelopmentPractices knowledge in the OKF
* Add okf/conventions/naming.md — Maven groupId/artifactId + qualifier meanings, npm packages,
xwiki.properties properties, UIXP/UIX ids, skin bird names, icons.
* Add okf/conventions/frontend.md — AMD/RequireJS modules, WebJars/JSX, the Velocity-in-minified-JS
trap, compatibility.js deprecation, WCAG 2.2 AA.
* Add okf/conventions/translations.md — key lifecycle: en_US only, registering a bundle,
deprecating/renaming a key, never moving one.
* Add okf/conventions/dependencies.md — the checklist a new third-party dependency must pass.
* Add okf/processes/module-lifecycle.md — git subtree extract/merge-in, the xwiki-contrib
conversion rules, retiring to the Attic, top-level extensions.
* code-style: license-header syntax per file type, file-encoding rules, platform macros in Java.
* backward-compatibility: the Revapi <criticality> values, two-step deprecation, legacy module
locations, the checked-exception exception to default methods, @Unstable build enforcement.
* component-system: never grow oldcore, JMX MBeans via JMXBeanRegistration.
* servers/jira: fill the documentation and release-note fields when closing an issue.
* processes/security-policy: merging a security PR by hand from the advisory's private fork.
* documentation: what the rendered DOM does with an ||anchor="…" link parameter.
* Update the OKF map and its injected mirror; bump the plugin version to 1.0.20.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: bd12510a274c7d6ed5f311c840cb5a9dab1918c2
https://github.com/xwiki/xwiki-dev-llm/commit/bd12510a274c7d6ed5f311c840cb5…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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
Log Message:
-----------
[Misc] Correct the OKF section-anchor entry
* Anchors do reach the rendered href; drop the claim that the fragment is
only serialized alongside a queryString, and the workaround of putting the
section title in the label instead of linking to it
* State the two forms: xwiki/2.1 uses the ||anchor="H..." link parameter,
xwiki/2.0 appends #H... to the reference itself
* Keep the real trap, now scoped to 2.1 only: a #H... suffix on a 2.1
reference is parsed as part of the page name and yields a red link
* Note that a page's syntax must be read (REST syntax field) rather than
guessed, since the correct form depends on it
* Record that cross-wiki references keep their fragment too
* Add the XWikiSyntax 2.0 and 2.1 Links sources
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 9d29fe55ae84de569e555d34a9496eaeff128f60
https://github.com/xwiki/xwiki-dev-llm/commit/9d29fe55ae84de569e555d34a9496…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Correct the image-caption rule and add four documentation conventions
* Fix an actively wrong rule: the guide's WCAG page forbids using `caption` to
carry the version a screenshot was taken in, which the OKF recommended.
* Add the per-type content rules the guide's Apply Diataxis page states and the
OKF lacked: a How-to opens on a link to an Explanation, most of its steps
carry a screenshot (and the result step's is mandatory), a topic page is an
Explanation linking to its Extensions-wiki page, and several routes to one
goal means one How-to per route under a choosing Explanation.
* Require the page placement to be settled with the developer up front, as
concrete alternative page trees — it is the decision the rules
under-determine and the most expensive one to undo.
* Add the cross-wiki link trap: the xwiki.org subwikis are one farm, so an
absolute URL to extensions.xwiki.org renders as an external link and is never
indexed as a backlink.
* Add the red-box mechanics: an `outline` is clipped by an ancestor with
`overflow: hidden`, so the box must be a body-level overlay, and the saved PNG
must be checked for a closed rectangle.
* Titles must not repeat the audience, only the page type was covered.
* Fix the stale DocGuide/ApplyDiataxis URLs (the page moved under Diataxis/).
* Add a "Minimal" gate to the xwiki-knowledge EXTEND checklist: the OKF is read
into context, so every added line costs tokens in every session.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: b5e5d4814e35128a8ad12f3932d8fce0416b1578
https://github.com/xwiki/xwiki-dev-llm/commit/b5e5d4814e35128a8ad12f3932d8f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Correct the image-caption rule and add four documentation conventions
Commit: 05754327a7e8884c0f8c60007d4cac913eadfa14
https://github.com/xwiki/xwiki-dev-llm/commit/05754327a7e8884c0f8c60007d4ca…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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-writing/SKILL.md
A xwiki/skills/xwiki-doc-writing/tools/README.md
A xwiki/skills/xwiki-doc-writing/tools/checkredbox.py
A xwiki/skills/xwiki-doc-writing/tools/docpages.py
A xwiki/skills/xwiki-doc-writing/tools/docshot.sh
A xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Add documentation authoring tools to the xwiki-doc-writing skill
* Add tools/xwikidoc.py, a REST client for the farm that keeps a cookie jar
because the form token is session-bound, and whose write helpers read every
field back.
* Add tools/docpages.py with lint | save | pin | verify over a page set held as
a Python data module: the mechanical rules of documentation.md offline, an
idempotent publish, child-order pinning verified through the tree service, and
an audit covering both doc-checker surfaces.
* Add tools/docshot.sh and tools/checkredbox.py: capture at a `size` width with
the red box drawn as a body-level overlay, and prove the saved PNG holds a
closed rectangle.
* Add tools/README.md documenting the page-set contract and, per step, the
silent failure it protects against.
* Point xwiki-doc-convert and xwiki-rest-api at the tools, and drop the stale
advice in xwiki-doc-writing that the capture version belongs in an image
caption.
* Record that placement is confirmed with the developer as written-out page
trees before the first page is created.
Verified against the 11-page AntiSpam documentation tree: lint and verify report
0 problems, save is a no-op on an unchanged tree, pin reproduces the displayed
order, and checkredbox passes all 19 screenshots. A synthetic bad page set fires
every lint rule.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: e33d87f9f2e80a9e8a86ea76015921591c3a7cdf
https://github.com/xwiki/xwiki-dev-llm/commit/e33d87f9f2e80a9e8a86ea7601592…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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-writing/SKILL.md
A xwiki/skills/xwiki-doc-writing/tools/README.md
A xwiki/skills/xwiki-doc-writing/tools/checkredbox.py
A xwiki/skills/xwiki-doc-writing/tools/docpages.py
A xwiki/skills/xwiki-doc-writing/tools/docshot.sh
A xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Add documentation authoring tools to the xwiki-doc-writing skill
Commit: a89d7b51d8ba5c35c23eae1840059b78ce0dc25d
https://github.com/xwiki/xwiki-dev-llm/commit/a89d7b51d8ba5c35c23eae1840059…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Capture when an absolute xwiki.org URL is the correct form
* Qualify the "never link a farm page by URL" rule with the nine cases where
an absolute xwiki.org URL is right: outside-facing pages, extension-shipped
pages, third-party form values, verbatim records, the URL as subject matter,
verbatim/code blocks, non-page resources, non-view actions or query strings,
and targets that do not exist yet
* Record that a `url:` prefix on the target is not one of them — it is what
the WYSIWYG editor emits when a URL is pasted, on internal and external
links alike
* Keep the always-injected map addition to a short parenthetical
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: d7043b34e16ad2d59c2f5f6b89744b208547a0a0
https://github.com/xwiki/xwiki-dev-llm/commit/d7043b34e16ad2d59c2f5f6b89744…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Capture when an absolute xwiki.org URL is the correct form
Commit: ff1f7f8d15ce390eed2c7d7a4d11785398b5482b
https://github.com/xwiki/xwiki-dev-llm/commit/ff1f7f8d15ce390eed2c7d7a4d117…
Author: elenicojocariu <cojocariu.eleni24(a)gmail.com>
Date: 2026-08-13 (Thu, 13 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/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
Log Message:
-----------
[Misc] Add a documentation style rule against overusing em dashes
* okf/conventions/documentation.md: new "Documentation style" bullet. The em dash is not a
substitute for a comma, period, colon or parentheses; keep it for a sharp interruption or a
genuine aside. Exception: em dashes inside a direct quote stay verbatim. Frontmatter summary
extended to mention the rule, since that text decides whether the file gets read.
* skills/xwiki-doc-writing: added the rule to the step 7 style list, plus a Punctuation item in
the review checklist.
* skills/xwiki-doc-convert: added it to step 6, scoped to the sentences carried over from the
legacy page, plus a matching "Verify the conversion" bullet.
* Bumped the plugin version to 1.0.17 (patch, content edit) in all four host manifests.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 12eb3a1965c2a243d8907fe43b24b683a5e18408
https://github.com/xwiki/xwiki-dev-llm/commit/12eb3a1965c2a243d8907fe43b24b…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
Log Message:
-----------
[Misc] Add a documentation style rule against overusing em dashes
Commit: f4c48c7f6da38ea865709b045f97f55e5b98f65e
https://github.com/xwiki/xwiki-dev-llm/commit/f4c48c7f6da38ea865709b045f97f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Capture the page-object boundary rule for functional tests
* okf/testing/strategy.md: new "No getDriver() in a test" durable rule. A functional test drives the
UI only through page objects; needing getDriver() (or a raw findElement / By lookup / getCssValue
on top of it) in the test class means an API is missing from a page object. Which page object gets
it follows from what a page object is: it represents a real XWiki page and the actions that can be
performed on that page. So widen or add the method on the page object of the page under test
(widening an already-private helper to public counts) rather than creating a page object for a page
the test itself creates as a fixture. Test-specific data, such as the wiki content given to that
fixture page, stays in the test. Frontmatter summary extended, since that text decides whether the
file gets read.
* skills/xwiki-test-guidelines: added a one-line functional-test bullet pointing at the rule, since
that skill is what gets loaded when writing a test.
* okf/index.md: mentioned the rule in the testing/strategy line.
* Bumped the plugin version to 1.0.26 (patch, content edit) in all five synced fields.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 6527a0d3d83104423547d59cecf5f839c8b0e983
https://github.com/xwiki/xwiki-dev-llm/commit/6527a0d3d83104423547d59cecf5f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-13 (Thu, 13 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-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Capture the page-object boundary rule for functional tests
Commit: 5c91e0839ee6a2cb47bdb9facf42667b6850de3a
https://github.com/xwiki/xwiki-dev-llm/commit/5c91e0839ee6a2cb47bdb9facf426…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-14 (Fri, 14 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
M xwiki/okf/sonarqube/syntax-rules.md
Log Message:
-----------
[Misc] Correct the S3252 denylist entry: it is not an API change
* java:S3252 asks only that a static member be qualified with the class that
declares it. Nothing is declared, renamed or re-typed, so the previous
denylist reason (backward-compat-bearing public API) was wrong.
* Document it in syntax-rules next to its sibling S2209, with the two batch
mechanics it needs and the one real drop condition (the derived type being
an XWiki utility subclass such as org.xwiki.text.StringUtils).
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 3b99c44b4dd15b93488e3a03263fcdce1a9e6b56
https://github.com/xwiki/xwiki-dev-llm/commit/3b99c44b4dd15b93488e3a03263fc…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-14 (Fri, 14 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/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
Log Message:
-----------
[Misc] Capture how a documentation screenshot is framed
* okf/conventions/documentation.md: new durable rule next to the screenshot standards. A step's
screenshot carries the element to act on plus the nearest landmark that fixes its position (the
panel holding it, the screen title above it, the list it follows) and nothing else, the test being
whether a reader without the UI in front of them still knows where the action happens. Only a
procedure's entry step keeps the surrounding chrome. The `size` follows from the region framed
rather than the region being stretched to fill a size, and the existing capture-width bullet now
says the width comes from *cropping* a region, not from shrinking a wider capture — which is also
why a whole-window shot at `extra` is the blurriest of the options. The red box marks what the step
asks for: on a "review the listed accounts" step it belongs around the list, not around the button
under it.
* skills/xwiki-doc-writing: framing added to the attachment step and as its own review-checklist
item, since a page whose every step repeats the same window passes every other check.
* skills/xwiki-doc-writing/tools/docshot.sh: takes `x,y,w,h` as the capture target, so a region can
be shot at the exact `size` width without resampling; a narrower region is refused rather than
upscaled into blur. Two traps documented in tools/README.md, because both fail silently: the CLI
has no `--clip` (hence a transparent clip element) and macOS `sips -c` crops from the centre with
`--cropOffset` as a no-op, which saves a plausible PNG of the wrong part of the page. A box
selector may be prefixed `union:` for one box around several elements, and the box padding is now
symmetric — it used to sit flush against the element's right and bottom edges.
* Bumped the plugin version to 1.0.27 (patch, content edit) in all five synced fields.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 79d93f793524887ac27a5e7bf6e8046e3fcc7dd3
https://github.com/xwiki/xwiki-dev-llm/commit/79d93f793524887ac27a5e7bf6e80…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-14 (Fri, 14 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
Log Message:
-----------
[Misc] Centre a documentation screenshot's red box on the element it marks
* skills/xwiki-doc-writing/tools/docshot.sh: the box geometry was written for `content-box`, but
Bootstrap applies `border-box` to every element in XWiki, so the declared width was the outer
width and every box came out half a border off-centre: measured on a live page, a 4px gap on the
left and top and the border painted 2px *over* the content on the right and bottom, which sliced
the text it was meant to mark. `boxSizing` is now set rather than assumed and the width derives
from the gap, giving an equal margin on all four sides.
* The margin is `GAP` (default 6) and can be overridden per shot, because a target whose own box
already carries the clearance needs none: a row of a densely stacked list is a line box whose
leading holds the glyphs well inside it, and its neighbours touch it exactly, so adding to it puts
the border through the rows above and below. `GAP=0` there.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 017e8b76e310ec2f52c2fed552178644fba987ce
https://github.com/xwiki/xwiki-dev-llm/commit/017e8b76e310ec2f52c2fed552178…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-14 (Fri, 14 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/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
Log Message:
-----------
[Misc] Capture how a documentation screenshot is framed
Commit: a2d22fd6dfd99b5661c62447ed4cbc41a688cbe7
https://github.com/xwiki/xwiki-dev-llm/commit/a2d22fd6dfd99b5661c62447ed4cb…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-14 (Fri, 14 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/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
Log Message:
-----------
[Misc] Give duplicated documentation content a visible home, not a hidden one
* okf/conventions/documentation.md: the surviving copy of content repeated across pages wants a page of
the tree in its own right, not a hidden `{{display}}` fragment — a visible page is reachable from the
navigation panel and from search, answers a reader goal on its own, and cannot be re-duplicated by a
later author who fails to notice the content is shared. Which restructure achieves that depends on the
content: a navigation step every sibling How-to opens with becomes its own How-to that each links to,
a page whose section is repeated elsewhere splits into two smaller pages. `{{display}}` is now scoped
to the case where no such restructure exists. Repeated steps are called out as the ones to hunt first,
since a step drags its screenshot with it and the copies then drift apart. The guide states the
avoid-duplication rule and gives `{{display}}` as its mechanism but not this preference, which the
bullet says is worth adding upstream. The de-duplication bullet gains the two comparisons that need no
judgement: the siblings' step 1, and the tree's attachment names.
* skills/xwiki-doc-writing: those two comparisons open the de-duplication pass, and both are a
review-checklist item — a tree can duplicate one step four times and still pass every existing check.
* skills/xwiki-doc-writing/tools/docpages.py: two cross-page lint checks, since neither defect is
visible while linting one page at a time. A repeated opening step counts only when it carries a
screenshot: the one-line link that replaces it is meant to read identically on every page, so
matching on the text alone flags the fix as the defect.
* Bumped the plugin version to 1.0.28 (patch, content edit) in all five synced fields.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 38a02f8a110430bc0ba12d05980f616f525c4644
https://github.com/xwiki/xwiki-dev-llm/commit/38a02f8a110430bc0ba12d05980f6…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-14 (Fri, 14 Aug 2026)
Changed paths:
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/syntax-rules.md
Log Message:
-----------
[Misc] Correct the S3252 denylist entry: it is not an API change
Commit: 6bd027a35ba55942d9fe74d7f2585c836cda36b4
https://github.com/xwiki/xwiki-dev-llm/commit/6bd027a35ba55942d9fe74d7f2585…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-14 (Fri, 14 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/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
Log Message:
-----------
[Misc] Give duplicated documentation content a visible home, not a hidden one
Commit: 70f2afdc9dd44eb2279a486e4b111d9c1cf0bdc3
https://github.com/xwiki/xwiki-dev-llm/commit/70f2afdc9dd44eb2279a486e4b111…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-14 (Fri, 14 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] Document the host port clash when running Docker-based ITs
* Add a "Docker ITs" subsection to the xwiki-build skill: JETTY_STANDALONE
runs XWiki on the host and binds 8080/8079, so an XWiki already listening
there makes the test drive that instance and fail in beforeAll with a 401
while provisioning extensions. Only stop the instance when the session
started it; otherwise run the whole stack in Docker (tomcat + pgsql).
* Bump the plugin version to 1.0.29.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: a0a78a51286f2caba6669b3d0841cc35ebfa7206
https://github.com/xwiki/xwiki-dev-llm/commit/a0a78a51286f2caba6669b3d0841c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-14 (Fri, 14 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] Document the host port clash when running Docker-based ITs
Commit: 2fabf6bda43d8362231c6c7c868906a4a7ef8c76
https://github.com/xwiki/xwiki-dev-llm/commit/2fabf6bda43d8362231c6c7c86890…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-14 (Fri, 14 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
Log Message:
-----------
[Misc] Drop the unsupported figure/figureCaption documentation rule
* The "Tables and figures are wrapped in the figure + figureCaption macros" bullet was attributed
to the Documentation Guide's "Working with Attachments" page, which does not mention figures at
all; neither do DocumentationStyle, PageStructure or ApplyDiataxis.
* The documentation tree does not follow it either: of 300 pages sampled under documentation.*,
41 hold a table and 35 an image, and none uses the figure macros.
* It was reported as a review finding against a conforming page tree, so it costs a reviewer's
time and produces wrong findings.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: dfe76663221af25ea4b0ecd26b1d78090926409d
https://github.com/xwiki/xwiki-dev-llm/commit/dfe76663221af25ea4b0ecd26b1d7…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-14 (Fri, 14 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
Log Message:
-----------
[Misc] Drop the unsupported figure/figureCaption documentation rule
Commit: f1455de73227708dc9b36049c666e1bc173cdcbd
https://github.com/xwiki/xwiki-dev-llm/commit/f1455de73227708dc9b36049c666e…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-16 (Sun, 16 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/security.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Record which right each scripting language requires
* Only Velocity runs on Script Right; every other scripting language also requires Programming Right
of the script author, the exception being Groovy with the Secure Groovy Customizer enabled (off by
default).
* Note the trap that a script service is callable with Script Right alone, so exposing an operation
there puts it behind a lower bar than a Groovy macro.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 8fb7df39d6522b6985c21796cdf31f2ec364ef7f
https://github.com/xwiki/xwiki-dev-llm/commit/8fb7df39d6522b6985c21796cdf31…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-16 (Sun, 16 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/security.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Record which right each scripting language requires
Compare: https://github.com/xwiki/xwiki-dev-llm/compare/ba453dde6bc1...8fb7df39d652
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
Branch: refs/heads/master
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] cbc689: [Misc] Build with the JDK the branch targets, pref...
by XWiki Notifications 19 Aug '26
by XWiki Notifications 19 Aug '26
19 Aug '26
Branch: refs/heads/xmvn-when-available
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: cbc689ba8bfbaa339da2888fffefbaada3b36c75
https://github.com/xwiki/xwiki-dev-llm/commit/cbc689ba8bfbaa339da2888fffefb…
Author: Thomas Mortagne <thomas.mortagne(a)gmail.com>
Date: 2026-08-19 (Wed, 19 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
M xwiki/skills/xwiki-build/SKILL.md
M xwiki/skills/xwiki-increase-test-coverage/SKILL.md
Log Message:
-----------
[Misc] Build with the JDK the branch targets, preferring xmvn
* Add the rule to the org-wide instructions: whenever `xmvn` (from xwiki-dev-tools) is on the PATH,
use it in place of `mvn` — it reads the target Java version from the pom and runs Maven with the
matching JDK, which is one command instead of a version lookup plus an explicit JAVA_HOME.
Without it, read `xwiki.java.version` from the root pom and set JAVA_HOME by hand.
* Document in the xwiki-build skill what xmvn actually does, why it is preferred over selecting the
JDK manually, and the failures a too-new JDK produces: JaCoCo aborting with "Unsupported class
file major version" (which breaks every -Pquality build) and the Spoon plugin failing to add a
URL to the system classloader. Both read as code or configuration problems and are neither.
* Record that `sonar:sonar` has a JDK floor of its own, higher than the branch's Java level on the
older lines, and that xmvn raises the version for it — so this is one more reason to prefer xmvn
over a hand-picked JDK. Point at xmvn and xwiki-jenkins-pipeline's vars/configureJavaTool.groovy
for the current floor rather than baking in a number that moves with the pinned
sonar-maven-plugin version.
* Point the xwiki-increase-test-coverage skill at xmvn too, since that is where the JaCoCo agent
failure bites: on a too-new JDK it produces no coverage at all.
* Bump the plugin version to 1.0.32 across all host manifests.
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
[xwiki/xwiki-dev-tools] 5b0fdc: [Misc] Don't use a Java version lower than 11 when...
by XWiki Notifications 19 Aug '26
by XWiki Notifications 19 Aug '26
19 Aug '26
Branch: refs/heads/master
Home: https://github.com/xwiki/xwiki-dev-tools
Commit: 5b0fdc04cef1f79c35188020dc47a8618e5c4356
https://github.com/xwiki/xwiki-dev-tools/commit/5b0fdc04cef1f79c35188020dc4…
Author: Thomas Mortagne <thomas.mortagne(a)gmail.com>
Date: 2026-08-19 (Wed, 19 Aug 2026)
Changed paths:
M bash/xmvn
Log Message:
-----------
[Misc] Don't use a Java version lower than 11 when executing the Sonar Maven plugin
* Detect the execution of the Sonar Maven plugin in the xmvn command line
* Raise the Java version deduced from the pom to 11 when it's lower
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-tools/settings/notifications
1
0
[xwiki/xwiki-dev-llm] 903298: [Misc] Build with the JDK the branch targets, pref...
by XWiki Notifications 19 Aug '26
by XWiki Notifications 19 Aug '26
19 Aug '26
Branch: refs/heads/xmvn-when-available
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: 90329865eece1d30659338d583fff89c7a51c613
https://github.com/xwiki/xwiki-dev-llm/commit/90329865eece1d30659338d583fff…
Author: Thomas Mortagne <thomas.mortagne(a)gmail.com>
Date: 2026-08-19 (Wed, 19 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
M xwiki/skills/xwiki-build/SKILL.md
M xwiki/skills/xwiki-increase-test-coverage/SKILL.md
Log Message:
-----------
[Misc] Build with the JDK the branch targets, preferring xmvn
* Add the rule to the org-wide instructions: whenever `xmvn` (from xwiki-dev-tools) is on the PATH,
use it in place of `mvn` — it reads the target Java version from the pom and runs Maven with the
matching JDK, which is one command instead of a version lookup plus an explicit JAVA_HOME.
Without it, read `xwiki.java.version` from the root pom and set JAVA_HOME by hand.
* Document in the xwiki-build skill what xmvn actually does, why it is preferred over selecting the
JDK manually, and the failures a too-new JDK produces: JaCoCo aborting with "Unsupported class
file major version" (which breaks every -Pquality build) and the Spoon plugin failing to add a
URL to the system classloader. Both read as code or configuration problems and are neither.
* Note the `sonar:sonar` exception: the scanner has its own JDK floor, higher than the branch's
Java level on old branches, and xmvn does not know about it. Point at
xwiki-jenkins-pipeline's vars/configureJavaTool.groovy for the current floor rather than baking
in a number that moves with the pinned sonar-maven-plugin version.
* Point the xwiki-increase-test-coverage skill at xmvn too, since that is where the JaCoCo agent
failure bites: on a too-new JDK it produces no coverage at all.
* Bump the plugin version to 1.0.32 across all host manifests.
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
[[email protected]][Issue] Updates for CPARENT-30: Old style integration test don't run anymore with a 12.10 or 11.10 parent
by XWiki Notifications 19 Aug '26
by XWiki Notifications 19 Aug '26
19 Aug '26
1
0