notifications
Threads by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
September 2026
- 1 participants
- 2199 discussions
Branch: refs/heads/xwiki-ui-before-after-skill
Home: https://github.com/xwiki/xwiki-dev-llm
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
[xwiki/xwiki-dev-llm] 5b249e: [Misc] Record that an AllIT container class takes ...
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
Branch: refs/heads/okf-data-migrations
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: 5b249e2945e686ca1c1dc7d3ae06d48bb124a277
https://github.com/xwiki/xwiki-dev-llm/commit/5b249e2945e686ca1c1dc7d3ae06d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-23 (Sun, 23 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
Log Message:
-----------
[Misc] Record that an AllIT container class takes a bare @UITest
* Add a durable rule to okf/testing/strategy.md: the Docker framework merges the @UITest
configuration of the container class and of every nested class (walking each nested class's
superclass chain), so properties/extraJARs declared on an individual *IT class already apply
when it runs nested, and repeating a conflicting scalar aborts the run.
* Update the OKF map entry and the file summary accordingly.
* Bump the plugin version to 1.1.8.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 271185ea0c47110cab81c75d5cea7246ee02065d
https://github.com/xwiki/xwiki-dev-llm/commit/271185ea0c47110cab81c75d5cea7…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-23 (Sun, 23 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
Log Message:
-----------
[Misc] Record that an AllIT container class takes a bare @UITest
Commit: be1e8474c958a2b17a688ec61884e5c3b64630b8
https://github.com/xwiki/xwiki-dev-llm/commit/be1e8474c958a2b17a688ec61884e…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Drop xmvn's JDK-discovery internals from the build skill
* Following review feedback on PR #68: how xmvn locates JDKs is
implementation detail that rots as the tool improves, so the guidance
now states only the contract — use xmvn when available, otherwise pick
the JDK yourself — plus the symptom to recover from if xmvn did not
switch the JDK.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 6a8a47b767d04c3fc69570986d42ed1de7259998
https://github.com/xwiki/xwiki-dev-llm/commit/6a8a47b767d04c3fc69570986d42e…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/index.md
Log Message:
-----------
[Misc] Narrow the S5993 SonarQube denylist entry to non-internal packages
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 4d05de2e792e32692fa81c51b3636250d89149c7
https://github.com/xwiki/xwiki-dev-llm/commit/4d05de2e792e32692fa81c51b3636…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/index.md
Log Message:
-----------
[Misc] Narrow the S5993 SonarQube denylist entry to non-internal packages
Commit: 3bbd58260400aa800e61f424b42ce4e2a43d5ebe
https://github.com/xwiki/xwiki-dev-llm/commit/3bbd58260400aa800e61f424b42ce…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/dead-code-rules.md
Log Message:
-----------
[Misc] Correct the S1130 "src/main is a permanent drop" rule to non-private
* The drop line for java:S1130 is the member's visibility, not the source
root: a private src/main method cannot be overridden and cannot be called
from outside its file, exactly like the private test helpers the same entry
already carves out.
* Also records the unreachable-catch cascade and the bucketing trap (Sonar
attributes the issue to the throws line, which is often a continuation line
with no modifier on it).
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 64cdf8f6019ab7aa0eedb411e2efa47e4a28e6d5
https://github.com/xwiki/xwiki-dev-llm/commit/64cdf8f6019ab7aa0eedb411e2efa…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/dead-code-rules.md
Log Message:
-----------
[Misc] Correct the S1130 "src/main is a permanent drop" rule to non-private
Commit: 707cdb63c1c72152a80abdc5954bd9f606d7e18d
https://github.com/xwiki/xwiki-dev-llm/commit/707cdb63c1c72152a80abdc5954bd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/sonarqube/constant-and-resource-rules.md
M xwiki/okf/sonarqube/dead-code-rules.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/modernization-rules.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/okf/sonarqube/syntax-rules.md
M xwiki/okf/sonarqube/test-code-rules.md
Log Message:
-----------
[Misc] Drop the duplicated rule-key lists and stale anecdotes from the sonarqube OKF
* Collapse the rule-key lists to one authoritative copy: sonarqube/index.md's
rule map. The three other copies had all drifted — okf/index.md's per-family
bullets were missing 24 of the 69 keys (test-code-rules advertised 4 of 9,
simplification 12 of 21), and each family file's frontmatter summary and
"S1116 · S1124 · …" subtitle line were missing 14 between them. A stale list
makes a rule read as undocumented and the fix get applied past the trap the
file exists to describe. The summaries now describe the traps instead of
enumerating keys, which is what a family file is chosen on.
* Remove the "used to be on the denylist" notes for S3252 and S6355 and the same
framing on S3252's own section. The current placement already says it, and
okf/conventions/code-comments.md rules out justifying by history.
* Generalise six one-off batch statistics (site counts, "18 of the 22", "one
site in six") that sonarqube/index.md's own policy excludes as volatile. The
durable signal — near-zero drops, near-100% drops, permanent drop — is kept.
* Delete the S8924 "not yet established" note; its actionable half is already
step 1 of that same list.
* Verified before the edit that all 69 documented keys and the 33 denylist keys
are still present and status=READY in SonarCloud's Java ruleset for the xwiki
org, so nothing here documents a retired rule.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: c4388f99cf42edcd47d6e9235de7525c0a421a19
https://github.com/xwiki/xwiki-dev-llm/commit/c4388f99cf42edcd47d6e9235de75…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Record that a functional test is a scenario with a single fixture
* Add the scenario rule to okf/testing/strategy.md: a *IT pays a wiki start, a browser start and a
page load per navigation, so the number of fixtures drives its runtime, not the number of
assertions. Write as few @Test methods as the scenario allows, extend an existing method or *IT
rather than rebuilding the same fixture, and note that @Order fixes execution order without
sharing a fixture so it is not a substitute. Sourced from the dev wiki's functional-testing best
practices, which the plugin only linked and never stated.
* Add the matching procedural bullet to the xwiki-test-guidelines skill, so the rule applies when
writing a test and not only when reviewing one.
* Add the check to the xwiki-review Tests angle: a new @Test method or *IT class that rebuilds a
fixture an existing one already builds is a finding.
* Update the strategy summary and the OKF map entry, and bump the plugin version.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 63d3343a254b846586abcdc75652f160c676698a
https://github.com/xwiki/xwiki-dev-llm/commit/63d3343a254b846586abcdc75652f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Pivot the scenario rule from method count to duplicate fixtures
* Restated the rule as "no two @Test methods build the same fixture" instead of "as few methods as
possible, one if you can". The defect the rule targets is a second method paying for a fixture an
existing one already builds, not method count in itself, and the previous wording read as a push
towards a single method however long it grew.
* Added the counterweight: a method nobody can follow end to end, or one whose failure no longer
says which behaviour broke, has been merged too far. A distinct fixture justifies a distinct
method, a merely distinct assertion does not.
* Mirrored the change in the xwiki-test-guidelines bullet, the strategy summary and the OKF map.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: f2679a39ede9629ffd5aea87e0587668cc8fd8fc
https://github.com/xwiki/xwiki-dev-llm/commit/f2679a39ede9629ffd5aea87e0587…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Record that a functional test is a scenario with a single fixture
Commit: bf16d86babdc4865bb99fc5e41f1061f9127684f
https://github.com/xwiki/xwiki-dev-llm/commit/bf16d86babdc4865bb99fc5e41f10…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/servers/index.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Record that rewriting a flagged line re-dates the other findings on it
* okf/sonarqube/verification.md: a mechanical fix can turn the master quality gate red without
introducing a defect, because the gate only measures new code and SonarCloud re-dates a finding it
can no longer match after a rewrite. Also record that javabugs:* findings are computed server-side,
so no local build confirms one gone, and how to read the analyzer's own dataflow path.
* skills/xwiki-fix-sonarqube-issue: check what else the lines being rewritten already carry, before
committing to a candidate.
* okf/sonarqube/index.md: add the one mechanical javabugs:S2259 shape (a nullable-parameter default
helper fed the default constant by its own overload), and drop the two pool-size claims from that
bullet, which the same file says are deliberately absent because they are volatile.
* okf/servers/index.md: the SonarCloud read API needs no token for the public xwiki org, and the MCP
has no quality-gate tool.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 04f75c2c644ef5ad0878d693350cdc8e9645b07d
https://github.com/xwiki/xwiki-dev-llm/commit/04f75c2c644ef5ad0878d693350cd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/servers/index.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Record that rewriting a flagged line re-dates the other findings on it
Commit: 5834089626fdc9f6bed9b5e52b856cd1511d311d
https://github.com/xwiki/xwiki-dev-llm/commit/5834089626fdc9f6bed9b5e52b856…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Run a SonarCloud PR analysis on every PR that changes Java
* skills/xwiki-pull-request: run a SonarCloud PR analysis on any PR that changes Java, not only on a
Sonar cleanup. It applies the same quality gate as the branch and is the only pre-merge check for
the rules computed server-side. Measured on xwiki-commons: about two minutes, with no tests, no
quality profile and no coverage.
* okf/sonarqube/verification.md: correct what the previous change said about confirming a javabugs
finding. A local build still proves nothing, but a PR analysis confirms it before merge, so the
next analysis of the branch is not the only confirmation. Also record that a re-dated finding
reaches the PR report only when the rewrite broke issue matching there too.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: ca7908ed4e683f55b01314e14fd56d865b65a3db
https://github.com/xwiki/xwiki-dev-llm/commit/ca7908ed4e683f55b01314e14fd56…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Run a SonarCloud PR analysis on every PR that changes Java
Commit: b5d68f9ab6ae56660f970bf7a5b961634f7a6f17
https://github.com/xwiki/xwiki-dev-llm/commit/b5d68f9ab6ae56660f970bf7a5b96…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Record the xwiki.org Cloudflare User-Agent block and the doc-tooling traps found while migrating a release-notes doc
* okf/servers/index.md: record that www.xwiki.org and extensions.xwiki.org sit behind Cloudflare, which
answers 403 to a browser-like User-Agent (and to none at all) on /xwiki/rest — only a curl-style UA
passes. The trap was documented for ci.xwiki.org only, so a script written against the doc site hit a
403 that reads as an auth failure. Verified live: browser UA 403, curl UA 200.
* okf/servers/jenkins.md: cross-link the two homes of the same Cloudflare trap and cut its section from
twelve lines to six — it stated one rule three times.
* skills/xwiki-rest-api/SKILL.md: add the same rule as one bullet where the curl commands get written.
The skill's /xwiki/rest prefix and nested-space path rules already covered the rest of what the
session needed, so nothing was duplicated there.
* okf/conventions/documentation.md, skills/xwiki-doc-writing/SKILL.md: the naming checker applies the
page-name rules to attachment names too, stop-word removal included — change-in-release-note.png was
rejected for change-release-note.png. The OKF said "attachment names follow the page-name rules"
without saying the checker enforces it, so the rule read as advisory.
* skills/xwiki-doc-writing/tools/docpages.py: lint's "attachment referenced but not declared" check ran
on the raw content, so a reference="..." inside a {{code}} block was mistaken for a real attachment
reference. Run it on strip_verbatim(content), as the other content checks already do.
* skills/xwiki-doc-writing/tools/README.md: never scroll to reach content below the fold —
agent-browser screenshot <element> ignores the scroll offset and captures the document region matching
the element's viewport rect, silently saving the wrong part of the page. Enlarge the viewport instead.
* skills/xwiki-doc-writing/tools/README.md, xwikidoc.py: correct the User-Agent note, which said only
that a request with no UA is rejected — a browser UA is rejected too, which is the counter-intuitive
half.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: fd564dc38661de2d1dc796f92e1b08f7d74d7c7d
https://github.com/xwiki/xwiki-dev-llm/commit/fd564dc38661de2d1dc796f92e1b0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Give the Cloudflare User-Agent block a single home
* State the rule once, in okf/servers/index.md, as a farm-wide rule covering the doc sites and
ci.xwiki.org alike.
* Cut okf/servers/jenkins.md down to the ci-specific consequence and a cross-reference, instead of
restating the mechanism a second time.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 983d9b8a5f11ab37b61dfaf89fd21991a9c328d4
https://github.com/xwiki/xwiki-dev-llm/commit/983d9b8a5f11ab37b61dfaf89fd21…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Record the xwiki.org Cloudflare User-Agent block and the doc-tooling traps found while migrating a release-notes doc
Commit: 698dc68b2224c0a40fe4781d19e0256ef04dc436
https://github.com/xwiki/xwiki-dev-llm/commit/698dc68b2224c0a40fe4781d19e02…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan of one-session tasks
* Add xwiki/skills/xwiki-doc-convert/references/conversion-plan.md: the on-disk plan
layout (conversion/PLAN.md, tasks/, source/), the PLAN.md and task-file templates,
the standard task set, the resume protocol and the checkpoint rules
* Make xwiki-doc-convert plan first and execute one task per session, so a conversion
that does not fit in one context window survives across sessions
* Persist the legacy source and an inventory of its atomic material to
conversion/source/, since the final "nothing lost" audit runs long after the
original page has been stripped
* Decompose from the inventories rather than the raw legacy text, and reuse a single
Change Request recorded in PLAN.md
* Bump the plugin version to 1.1.17
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 730649738e3c43c74508944685ee1bbc82e09f2e
https://github.com/xwiki/xwiki-dev-llm/commit/730649738e3c43c74508944685ee1…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan of one-session tasks
Commit: 3ce1455232b8bdd0a8d52b9fa8235728b566bb1b
https://github.com/xwiki/xwiki-dev-llm/commit/3ce1455232b8bdd0a8d52b9fa8235…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Publish a documentation conversion once, at the end, instead of page by page
* xwiki.org is public and a conversion runs for weeks, so a page saved the moment it is drafted is
live with red links to the siblings and hubs that do not exist yet, usually under a missing parent,
carrying any defect until someone happens to look. Observed on a real conversion in flight.
* Make the `page-*` tasks preparation tasks: they draft into `pages.py`, capture screenshots and lint
offline, and no longer call `docpages.py save`.
* Add a single `publish` task at the end of the standard task set. It saves the whole set in one
pass, parents before children, then runs `verify` and absorbs the live doc checker's findings.
* Say that a Change Request stays the preferred vehicle and why, and that choosing to save direct
changes nothing about the timing.
* Spell out the two consequences for the drafting tasks: the offline lint becomes their only gate, so
what the live checker would have caught has to move into it; and the publish task reads back what
it wrote rather than assuming the syntax rendered.
* Record the rule in the OKF, in documentation-migration, so it survives the skill.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 9eb910a33ece54a7d9534efc3411067f18809b07
https://github.com/xwiki/xwiki-dev-llm/commit/9eb910a33ece54a7d9534efc34110…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan, and publish it only at the end
Commit: cc0d76f4947c9747309aefac69d66ce483b28613
https://github.com/xwiki/xwiki-dev-llm/commit/cc0d76f4947c9747309aefac69d66…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/scripts/inject-org-instructions.mjs
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
Log Message:
-----------
[Misc] Put every cross-session work file in one work directory
* Plans, handoffs, extracted source, drafts and notes were being written to
the repo root, the system temp directory and the home directory, so they
were neither findable later nor cleanable.
* Add a "Work files" rule to the org-wide conventions: state that outlives a
session goes under $XWIKI_LLM_WORK (default ~/.xwiki-llm/work), one
<work>/<repo>/<date>-<slug>/ directory per piece of work. Session-only
files stay in the host's own scratch directory.
* Have the SessionStart hook append the resolved absolute path, which the
model cannot compute itself. Nothing is created up front, so a session that
writes no work file leaves no trace, and mkdir -p at first use also repairs
a directory the developer has deleted.
* Derive the working directory in xwiki-doc-convert and xwiki-doc-writing
instead of asking the developer for it on every conversion.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 16338678f1eb8af156826df4fad4f82d45ea075a
https://github.com/xwiki/xwiki-dev-llm/commit/16338678f1eb8af156826df4fad4f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/scripts/inject-org-instructions.mjs
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
Log Message:
-----------
[Misc] Put every cross-session work file in one work directory
Commit: 15a42edfd245c821b23da319ddc2aa001acde2fc
https://github.com/xwiki/xwiki-dev-llm/commit/15a42edfd245c821b23da319ddc2a…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/servers/jira.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Show the visible result of a change in the PR and on the JIRA issue
* Widen the "Screenshots & Video" rule of the xwiki-pull-request skill: a screenshot is not only for
a defect being fixed. Whenever the change has a visible result — a new feature, an improvement or
a fix — show it, so that a reviewer can judge the result without building the branch, with a
"before" as well when the issue reports a regression. The same image goes on the JIRA issue, where
it serves whoever reads the issue or writes the release note later.
* Record the attachment mechanics in okf/servers/jira.md, where the other JIRA access facts live:
attaching is REST-only since jira-cli has no attach command, Atlassian requires the
X-Atlassian-Token: no-check header, and the returned attachment URL is also what a PR body has to
reference, gh being unable to upload an image.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 97e9acc9e357de45caeafbd8ac57b8f96e500575
https://github.com/xwiki/xwiki-dev-llm/commit/97e9acc9e357de45caeafbd8ac57b…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/servers/jira.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Show the visible result of a change in the PR and on the JIRA issue
Commit: 3a39634b4fde1d85b77d61746b5ebc0b079d995d
https://github.com/xwiki/xwiki-dev-llm/commit/3a39634b4fde1d85b77d61746b5eb…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M README.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
Don't mark a SonarCloud issue Accepted when a PR fixes it
* SonarCloud closes such an issue as FIXED by itself at the next branch analysis after the merge, so
the transition buys nothing and hides a real defect from the quality gate if the PR never lands.
* Reserve the falsepositive/accept transitions for findings the code keeps as they are.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 236b759489bda9d271bfd663a747dd9255908fe2
https://github.com/xwiki/xwiki-dev-llm/commit/236b759489bda9d271bfd663a747d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M README.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Don't mark a SonarCloud issue Accepted when a PR fixes it
Commit: d763630e4e3892977e29a56f43f21b3288ca6c52
https://github.com/xwiki/xwiki-dev-llm/commit/d763630e4e3892977e29a56f43f21…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
Log Message:
-----------
[Misc] Cut the per-session cost of a documentation conversion
Measured across the 58 past sessions that converted or wrote xwiki.org documentation (the LaTeX,
Release Notes and AntiSpam conversions): 1.44B billed context tokens, of which 96-99% is cache reads
— a session costs roughly turns x context, so the levers are fewer turns and a smaller context.
22% of all those tokens were spent re-orienting before the first authoring action of the session,
and ~17% on the screenshot shoot/look/adjust loop.
* Add `docplan.py` to the doc-writing tools: `status` prints a conversion's whole orientation in one
call — the current task's full brief, the Setup answers, the recent Decisions and Open questions,
and what comes next — replacing PLAN.md read by hand in five to thirteen `sed` chunks per session
(76 KB re-read, against a 19 KB digest). `start` / `done` / `block` write the status and the
Outcome to both PLAN.md's row and the task file, which is also the pair that otherwise drifts
apart. Decisions and Open questions are trimmed to their most recent *whole* entries with a count
of what was dropped: a real plan accumulates tens of thousands of characters of them, and the
recent ones are the ones a session would otherwise re-litigate.
* Make `docshot.sh` run `checkredbox.py` on the shot it just took whenever a box selector was given,
and fail if the box is broken. A capture now reports its own verdict, so there is never a reason
to open the PNG to find out whether it worked — an image read into a session stays in context for
every later turn, which is what turns a screenshot into a shoot/look/adjust loop. `CHECK=0` opts
out; a shot with no box is skipped.
* Point the `xwiki-doc-convert` resume protocol at `docplan.py` in both the skill and the plan
reference, and add the three habits that decide whether a task fits in one session: one call
rather than a conversation for anything mechanical, never open a screenshot to check a capture,
and read the inventory rather than the raw legacy source.
* Add a rule to keep Decisions and Open questions to entries that still bind a future session, since
the digest shows the recent ones and a decision buried under fifty later ones is one a session
will not see.
Version bumped 1.2.1 -> 1.3.0 (minor — the skills now depend on a newly shipped tool).
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 7c94843af4a7c4bd9360d022682bfd9b9eea1c55
https://github.com/xwiki/xwiki-dev-llm/commit/7c94843af4a7c4bd9360d022682bf…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
Log Message:
-----------
[Misc] Cut the per-session cost of a documentation conversion
Commit: e9378ecfb25eb341ef1950d2b1d16f2b41da7fe5
https://github.com/xwiki/xwiki-dev-llm/commit/e9378ecfb25eb341ef1950d2b1d16…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Document how a stylesheet extension reads the colour theme
* Record in okf/conventions/frontend.md that CSS ships as a Skin Extension, and that reading
colour-theme values from one needs contentType LESS: $theme is not bound in wiki-page Velocity, so
a parse=1 SSX that reaches for it compiles and silently emits only its fallbacks.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 8ed7f4c90785cd13f7745da5f961bbb445644417
https://github.com/xwiki/xwiki-dev-llm/commit/8ed7f4c90785cd13f7745da5f961b…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Document how a stylesheet extension reads the colour theme
Commit: 777f8c82bedb7c99b00e424aecfbe397f349ce39
https://github.com/xwiki/xwiki-dev-llm/commit/777f8c82bedb7c99b00e424aecfbe…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Add a Develocity MCP server
* Add the `develocity` MCP server to all three host manifests, pointing at ge.xwiki.org, XWiki's
Develocity instance: build failures with stack traces, test outcomes and flaky-test history,
build timings, cache effectiveness and build-to-build diffs.
* Configure it as a remote streamable-HTTP server on every host, so nothing runs locally: Claude
Code and opencode interpolate the access key into an Authorization header, while Kimi Code uses
its bearerTokenEnvVar field, which reads the token from the environment rather than the config.
* Read the key from DEVELOCITY_MCP_ACCESS_KEY rather than DEVELOCITY_ACCESS_KEY. The two hold the
same Develocity access key but cannot hold the same value: the Maven and Gradle extensions
require DEVELOCITY_ACCESS_KEY to be host-scoped (`ge.xwiki.org=<key>`, so a key cannot be sent to
a server it was not issued for), whereas a Bearer header needs the bare key. A separate name lets
a developer authenticate both their local build and the MCP server.
* Leave the key optional: unset, Claude Code and Kimi Code skip the server. Develocity validates
the key on every request including tool listing, so a keyless server would error each session
instead of degrading to read-only, as the discourse one does.
* Record the server in okf/servers/index.md, whose map still described ge.xwiki.org as having no
MCP, and point okf/servers/jenkins.md at it for why a build failed, Jenkins remaining the
authority on whether it did.
* Bump the plugin version to 1.4.0 (minor: a capability change).
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 20383936600743b4b2e5dcd126fddbe341177a17
https://github.com/xwiki/xwiki-dev-llm/commit/20383936600743b4b2e5dcd126fdd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Add a Develocity MCP server
Commit: efa6436d29d0b3506c598ab1aea267c5712631fd
https://github.com/xwiki/xwiki-dev-llm/commit/efa6436d29d0b3506c598ab1aea26…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Point the Develocity MCP server at community.develocity.cloud
* ge.xwiki.org has been decommissioned: it still resolves in DNS (to a
Gradle-hosted ELB) but resets the connection at the TLS handshake, so the
develocity MCP server failed to load with ECONNRESET and exposed no tools.
* Update the endpoint to https://community.develocity.cloud/mcp in the three
MCP configurations (Claude Code, Kimi Code, opencode).
* Update the OKF server map and Jenkins page, and the README setup steps: the
access-keys page is now /settings/access-keys, and the host-scoped key prefix
the Maven/Gradle extensions need is community.develocity.cloud=.
* Record that this is Gradle's shared community instance, so XWiki's build
scans are scoped by the project ID xwiki from .mvn/develocity.xml.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 5a33efc139d461c2f3d8b950b3d8369593c87386
https://github.com/xwiki/xwiki-dev-llm/commit/5a33efc139d461c2f3d8b950b3d83…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Bump the plugin version to 1.4.1
* The previous commit changes files under xwiki/, so installed plugins only pull
it once the version increases (validate.mjs invariant 6).
* Bump all five manifest locations in lockstep: the marketplace metadata and its
xwiki plugin entry, the Claude plugin.json, kimi.plugin.json, and the
opencode.jsonc version comment.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 073d3fa1d73ab8dcbc7ef905fe4da1b918af35a7
https://github.com/xwiki/xwiki-dev-llm/commit/073d3fa1d73ab8dcbc7ef905fe4da…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Point the Develocity MCP server at community.develocity.cloud
Commit: 1088b62d92f299c8b4642945ffa49eb1d8ce327c
https://github.com/xwiki/xwiki-dev-llm/commit/1088b62d92f299c8b4642945ffa49…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
Log Message:
-----------
[Misc] Catch a wiki macro halved by an f-string in a docpages page set
* A `{{macro}}` written inside an f-string field of a `pages.py` arrives in the
value as `{macro}`: Python treats `{{` as an escaped literal brace. The page
then renders the macro as literal text, and nothing reports it — the doc
checker creates no violation object and the rendered page has no error box, so
the defect reaches a live page looking like prose.
* Worse, the halving hits lines the author never meant to touch: a field
converted to an f-string for one interpolation silently corrupts every
existing macro in it.
* Add the check to `lint`: a `{/` not preceded by a brace, or a `/}` not
followed by one, is a halved macro and is invalid XWiki syntax anywhere
outside the verbatim blocks `strip_verbatim` already blanks.
* Note it in the tools README's `lint` list, beside the other traps that produce
a plausible-looking page rather than an error.
* Bump the plugin version so installed plugins pull the change.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 79dd0e576832460af55e1a0efac8520f14402403
https://github.com/xwiki/xwiki-dev-llm/commit/79dd0e576832460af55e1a0efac85…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
Log Message:
-----------
[Misc] Catch a wiki macro halved by an f-string in a docpages page set
Commit: af5589c0f04afbd38067da7591e9ce80d6b490f6
https://github.com/xwiki/xwiki-dev-llm/commit/af5589c0f04afbd38067da7591e9c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Add an OKF topic for stored data in a wiki application
* New `okf/architecture/wiki-application-data.md`. Three traps that a review of a
real XClass+wiki-page application hit, none of which had an OKF home:
- A list property that is neither `multiSelect` nor large storage is stored as a
`StringProperty` (`ListClass.newProperty`) in `xwikistrings.XWS_VALUE`, a
VARCHAR, so HQL/XWQL range filters on it compare text. Single-character codes
sort as intended, which is what hides it until values differ in length.
- A generated `Entry001` name derived from the pages that already exist races
for the whole editing session, because the page appears only on save.
- A wiki-page migration is idempotent for free if it drops the object it
matched on; what it still needs is a completion count.
Plus the entry-template trap: a template missing the marker class its queries
use produces entries invisible to every query.
* Grounded in platform source (`ListClass`, `xwiki.hbm.xml`), verified rather than
extrapolated from the one application reviewed.
* Cross-reference `[[performance]]` for bounding the migration instead of
restating its pagination rule, so the batching rule keeps one home.
* `okf/conventions/frontend.md`: the WCAG 2.2 AA bullet stated the commitment but
no operational rule, so add the three traps for markup emitted from a wiki page
— naming a control (a `<dt>` term and a prompt in `value` are not names, and a
prompt in `value` also submits as data), `[[image:]]` alt text defaulting to the
filename, and `col-xs-*` not being a responsive layout. Accessibility already
lives here, so this extends that entry rather than adding a second home.
* `skills/xwiki-review`: stop the accessibility brief asserting a WCAG version of
its own. It claimed the OKF had no accessibility topic and named WCAG 2.1, while
`frontend.md` has covered accessibility at 2.2 — so a reviewer was being told to
cite criteria against a standard the project does not hold. It now reads the
level from `frontend.md` and is told never to state it from memory, which is
what keeps it from drifting again on the next re-commit.
* `skills/xwiki-review`: the data & migration angle claimed the stored-data rules
had no OKF home, which this commit makes false, and its routing fired only on
`*.hbm.xml`, migrator classes, Solr schema and store code — so it could never
run on a XAR-only extension, the very place the new topic applies. Add the
XClass / generated-name / wiki-page-migration trigger and cite the new file;
narrow the remaining skill-owned marker to Java store and mapping changes.
* Describe both OKF changes in `okf/index.md`; add the topic name only to the
always-on map in `instructions/xwiki-org.md` (+1 line, routing only).
* Bump the plugin version so installed plugins pull the change.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 2cbc3577e39832532172c606a224d9d2dfe54b15
https://github.com/xwiki/xwiki-dev-llm/commit/2cbc3577e39832532172c606a224d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Add an OKF topic for stored data in a wiki application
Commit: c029e81967fa776c09cd9ba318ee08bcdf2b5b0f
https://github.com/xwiki/xwiki-dev-llm/commit/c029e81967fa776c09cd9ba318ee0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/okf/index.md
A xwiki/okf/testing/running-docker-its.md
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Cap concurrent Docker IT runs and record how to run them on a developer machine
Running -Pdocker,integration-tests is a machine-wide operation, and nothing serialised it: several
agents in sibling worktrees launching one at the same time starve the Docker daemon, which surfaces
as a failure in beforeAll that reads like a product bug.
* Add scripts/xwiki-it-slot.mjs, a wrapper capping concurrent functional-test runs (2 by default,
--max N or XWIKI_LLM_IT_SLOTS). Slots are claimed atomically, released however the command ends,
and reclaimed when their holder died; --status names the current holders.
* Add okf/testing/running-docker-its.md: how the browser container reaches XWiki under each servlet
engine (host-gateway /etc/hosts entry versus the xwikiweb alias over Docker DNS), why the two
configurations therefore exercise different networking and when the containerised one is
mandatory, the setup-failure symptom table, and what several agents on one machine contend for.
* Rework the Docker IT section of xwiki-build around it: pre-flight, the never-stop-an-instance
rule, the engine choice, the slot wrapper, and the rule that a beforeAll failure is never
evidence about the change under test.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: d54c4766637b8f40c6cd0666a3dcbbec516bdd77
https://github.com/xwiki/xwiki-dev-llm/commit/d54c4766637b8f40c6cd0666a3dcb…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/okf/index.md
A xwiki/okf/testing/running-docker-its.md
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Cap concurrent Docker IT runs and record how to run them on a developer machine
Commit: 7808c17ff57e1545de5548c55732c2960ab3caf4
https://github.com/xwiki/xwiki-dev-llm/commit/7808c17ff57e1545de5548c55732c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
* Add scripts/release.mjs: the only thing that writes a version field. It sets all five (marketplace
metadata + plugin entry, plugin.json, kimi.plugin.json, the opencode.jsonc comment), commits
"[Misc] Release X.Y.Z" and tags vX.Y.Z. The tag is how the next run knows what already shipped;
before the first tag it falls back to the commit that introduced the current version, so the
bootstrap needs no manual step. It exits having done nothing when no file under xwiki/ changed.
* Derive the segment rather than ask for it, since the rule was already mechanical: minor when the
capability inventory changes between the last release and HEAD (a skill, an MCP server, a hook or
an opencode plugin added or removed), patch for anything else under xwiki/, major never derived.
A "Release-Bump: minor|major" commit trailer overrides it for a change whose significance the file
list cannot show — unlike a version field, two branches never conflict on a commit message.
* Invert validate.mjs invariant 6: a branch must now NOT change any version field, compared base ->
working tree so a stray bump is caught before it is even committed. Skipped on master, where
release.mjs legitimately moves it. Invariant 3 (the five agree) is unchanged; the extraction of
the five fields is parameterised by a reader so both invariants read the same thing.
* Add .github/workflows/release.yml, running release.mjs --push on every push to master that touches
xwiki/, plus workflow_dispatch with an explicit segment, serialised by a release concurrency group.
* Flip the xwiki-knowledge EXTEND flow from "bump all five fields" to "never touch the version", and
document the release in CLAUDE.md and README.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: c768ac3c736c8dae120e331febeb837735bc78e8
https://github.com/xwiki/xwiki-dev-llm/commit/c768ac3c736c8dae120e331febeb8…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
Commit: 422a726b2d2ee7845a020061204615a481ed7a04
https://github.com/xwiki/xwiki-dev-llm/commit/422a726b2d2ee7845a02006120461…
Author: github-actions[bot] <41898282+github-actions[bot](a)users.noreply.github.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Release 1.5.1
* content edits only (no capability added or removed)
Commit: 322aaacea57d486e7d2e5b4924e31305a6cdf099
https://github.com/xwiki/xwiki-dev-llm/commit/322aaacea57d486e7d2e5b4924e31…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M scripts/validate.mjs
Log Message:
-----------
[Misc] Compare a branch's plugin version against its merge base, not master's tip
* Invariant 6 asked whether the branch's version differed from origin/master's tip, which answers the
wrong question now that master keeps releasing while a branch is open: a branch that forked at
1.1.7 and never touched a version field still differs from a master that has reached 1.5.1, so
every long-lived PR was told to revert a bump it never made. Compare against the merge base
instead, which is what "did this branch change the version?" actually means.
* Name the merge base and its version in the failure message, so the fix is unambiguous on a branch
whose fork point is far behind.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 8b7f693ae14f6866b429cd980624897a36803ba0
https://github.com/xwiki/xwiki-dev-llm/commit/8b7f693ae14f6866b429cd9806248…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M scripts/validate.mjs
Log Message:
-----------
[Misc] Compare a branch's plugin version against its merge base, not master's tip
Commit: ead72f824502f34e2c05a7ae847b0451a83876d5
https://github.com/xwiki/xwiki-dev-llm/commit/ead72f824502f34e2c05a7ae847b0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
A .github/workflows/release.yml
M CLAUDE.md
M README.md
M kimi.plugin.json
M opencode.jsonc
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/conventions/documentation.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/okf/servers/jira.md
M xwiki/okf/sonarqube/constant-and-resource-rules.md
M xwiki/okf/sonarqube/dead-code-rules.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/modernization-rules.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/okf/sonarqube/syntax-rules.md
M xwiki/okf/sonarqube/test-code-rules.md
M xwiki/okf/sonarqube/verification.md
A xwiki/okf/testing/running-docker-its.md
M xwiki/okf/testing/strategy.md
M xwiki/scripts/inject-org-instructions.mjs
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
M xwiki/skills/xwiki-knowledge/SKILL.md
M xwiki/skills/xwiki-pull-request/SKILL.md
M xwiki/skills/xwiki-rest-api/SKILL.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
Merge remote-tracking branch 'origin/master' into okf-data-migrations
# Conflicts:
# xwiki/instructions/xwiki-org.md
Compare: https://github.com/xwiki/xwiki-dev-llm/compare/2216f632d722...ead72f824502
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
[xwiki/xwiki-dev-llm] 7808c1: [Misc] Cut the plugin release on master instead of...
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
Branch: refs/heads/misc-dependency-upgrade-commit-prefix
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: 7808c17ff57e1545de5548c55732c2960ab3caf4
https://github.com/xwiki/xwiki-dev-llm/commit/7808c17ff57e1545de5548c55732c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
* Add scripts/release.mjs: the only thing that writes a version field. It sets all five (marketplace
metadata + plugin entry, plugin.json, kimi.plugin.json, the opencode.jsonc comment), commits
"[Misc] Release X.Y.Z" and tags vX.Y.Z. The tag is how the next run knows what already shipped;
before the first tag it falls back to the commit that introduced the current version, so the
bootstrap needs no manual step. It exits having done nothing when no file under xwiki/ changed.
* Derive the segment rather than ask for it, since the rule was already mechanical: minor when the
capability inventory changes between the last release and HEAD (a skill, an MCP server, a hook or
an opencode plugin added or removed), patch for anything else under xwiki/, major never derived.
A "Release-Bump: minor|major" commit trailer overrides it for a change whose significance the file
list cannot show — unlike a version field, two branches never conflict on a commit message.
* Invert validate.mjs invariant 6: a branch must now NOT change any version field, compared base ->
working tree so a stray bump is caught before it is even committed. Skipped on master, where
release.mjs legitimately moves it. Invariant 3 (the five agree) is unchanged; the extraction of
the five fields is parameterised by a reader so both invariants read the same thing.
* Add .github/workflows/release.yml, running release.mjs --push on every push to master that touches
xwiki/, plus workflow_dispatch with an explicit segment, serialised by a release concurrency group.
* Flip the xwiki-knowledge EXTEND flow from "bump all five fields" to "never touch the version", and
document the release in CLAUDE.md and README.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: c768ac3c736c8dae120e331febeb837735bc78e8
https://github.com/xwiki/xwiki-dev-llm/commit/c768ac3c736c8dae120e331febeb8…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
Commit: 422a726b2d2ee7845a020061204615a481ed7a04
https://github.com/xwiki/xwiki-dev-llm/commit/422a726b2d2ee7845a02006120461…
Author: github-actions[bot] <41898282+github-actions[bot](a)users.noreply.github.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Release 1.5.1
* content edits only (no capability added or removed)
Commit: e229d5e6b8043a30368c2c8e53b08b934b849967
https://github.com/xwiki/xwiki-dev-llm/commit/e229d5e6b8043a30368c2c8e53b08…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
A .github/workflows/release.yml
M CLAUDE.md
M README.md
M kimi.plugin.json
M opencode.jsonc
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
Merge remote-tracking branch 'origin/master' into misc-dependency-upgrade-commit-prefix
Compare: https://github.com/xwiki/xwiki-dev-llm/compare/bacffc9163f0...e229d5e6b804
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
[xwiki/xwiki-dev-llm] be1e84: [Misc] Drop xmvn's JDK-discovery internals from th...
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
Branch: refs/heads/claude/cool-tesla-6a1n0j
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: be1e8474c958a2b17a688ec61884e5c3b64630b8
https://github.com/xwiki/xwiki-dev-llm/commit/be1e8474c958a2b17a688ec61884e…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-25 (Tue, 25 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Drop xmvn's JDK-discovery internals from the build skill
* Following review feedback on PR #68: how xmvn locates JDKs is
implementation detail that rots as the tool improves, so the guidance
now states only the contract — use xmvn when available, otherwise pick
the JDK yourself — plus the symptom to recover from if xmvn did not
switch the JDK.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 6a8a47b767d04c3fc69570986d42ed1de7259998
https://github.com/xwiki/xwiki-dev-llm/commit/6a8a47b767d04c3fc69570986d42e…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/index.md
Log Message:
-----------
[Misc] Narrow the S5993 SonarQube denylist entry to non-internal packages
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 4d05de2e792e32692fa81c51b3636250d89149c7
https://github.com/xwiki/xwiki-dev-llm/commit/4d05de2e792e32692fa81c51b3636…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-26 (Wed, 26 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/index.md
Log Message:
-----------
[Misc] Narrow the S5993 SonarQube denylist entry to non-internal packages
Commit: 3bbd58260400aa800e61f424b42ce4e2a43d5ebe
https://github.com/xwiki/xwiki-dev-llm/commit/3bbd58260400aa800e61f424b42ce…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/dead-code-rules.md
Log Message:
-----------
[Misc] Correct the S1130 "src/main is a permanent drop" rule to non-private
* The drop line for java:S1130 is the member's visibility, not the source
root: a private src/main method cannot be overridden and cannot be called
from outside its file, exactly like the private test helpers the same entry
already carves out.
* Also records the unreachable-catch cascade and the bucketing trap (Sonar
attributes the issue to the throws line, which is often a continuation line
with no modifier on it).
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Commit: 64cdf8f6019ab7aa0eedb411e2efa47e4a28e6d5
https://github.com/xwiki/xwiki-dev-llm/commit/64cdf8f6019ab7aa0eedb411e2efa…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/dead-code-rules.md
Log Message:
-----------
[Misc] Correct the S1130 "src/main is a permanent drop" rule to non-private
Commit: 707cdb63c1c72152a80abdc5954bd9f606d7e18d
https://github.com/xwiki/xwiki-dev-llm/commit/707cdb63c1c72152a80abdc5954bd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/sonarqube/constant-and-resource-rules.md
M xwiki/okf/sonarqube/dead-code-rules.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/modernization-rules.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/okf/sonarqube/syntax-rules.md
M xwiki/okf/sonarqube/test-code-rules.md
Log Message:
-----------
[Misc] Drop the duplicated rule-key lists and stale anecdotes from the sonarqube OKF
* Collapse the rule-key lists to one authoritative copy: sonarqube/index.md's
rule map. The three other copies had all drifted — okf/index.md's per-family
bullets were missing 24 of the 69 keys (test-code-rules advertised 4 of 9,
simplification 12 of 21), and each family file's frontmatter summary and
"S1116 · S1124 · …" subtitle line were missing 14 between them. A stale list
makes a rule read as undocumented and the fix get applied past the trap the
file exists to describe. The summaries now describe the traps instead of
enumerating keys, which is what a family file is chosen on.
* Remove the "used to be on the denylist" notes for S3252 and S6355 and the same
framing on S3252's own section. The current placement already says it, and
okf/conventions/code-comments.md rules out justifying by history.
* Generalise six one-off batch statistics (site counts, "18 of the 22", "one
site in six") that sonarqube/index.md's own policy excludes as volatile. The
durable signal — near-zero drops, near-100% drops, permanent drop — is kept.
* Delete the S8924 "not yet established" note; its actionable half is already
step 1 of that same list.
* Verified before the edit that all 69 documented keys and the 33 denylist keys
are still present and status=READY in SonarCloud's Java ruleset for the xwiki
org, so nothing here documents a retired rule.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: c4388f99cf42edcd47d6e9235de7525c0a421a19
https://github.com/xwiki/xwiki-dev-llm/commit/c4388f99cf42edcd47d6e9235de75…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Record that a functional test is a scenario with a single fixture
* Add the scenario rule to okf/testing/strategy.md: a *IT pays a wiki start, a browser start and a
page load per navigation, so the number of fixtures drives its runtime, not the number of
assertions. Write as few @Test methods as the scenario allows, extend an existing method or *IT
rather than rebuilding the same fixture, and note that @Order fixes execution order without
sharing a fixture so it is not a substitute. Sourced from the dev wiki's functional-testing best
practices, which the plugin only linked and never stated.
* Add the matching procedural bullet to the xwiki-test-guidelines skill, so the rule applies when
writing a test and not only when reviewing one.
* Add the check to the xwiki-review Tests angle: a new @Test method or *IT class that rebuilds a
fixture an existing one already builds is a finding.
* Update the strategy summary and the OKF map entry, and bump the plugin version.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 63d3343a254b846586abcdc75652f160c676698a
https://github.com/xwiki/xwiki-dev-llm/commit/63d3343a254b846586abcdc75652f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Pivot the scenario rule from method count to duplicate fixtures
* Restated the rule as "no two @Test methods build the same fixture" instead of "as few methods as
possible, one if you can". The defect the rule targets is a second method paying for a fixture an
existing one already builds, not method count in itself, and the previous wording read as a push
towards a single method however long it grew.
* Added the counterweight: a method nobody can follow end to end, or one whose failure no longer
says which behaviour broke, has been merged too far. A distinct fixture justifies a distinct
method, a merely distinct assertion does not.
* Mirrored the change in the xwiki-test-guidelines bullet, the strategy summary and the OKF map.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: f2679a39ede9629ffd5aea87e0587668cc8fd8fc
https://github.com/xwiki/xwiki-dev-llm/commit/f2679a39ede9629ffd5aea87e0587…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/testing/strategy.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Record that a functional test is a scenario with a single fixture
Commit: bf16d86babdc4865bb99fc5e41f1061f9127684f
https://github.com/xwiki/xwiki-dev-llm/commit/bf16d86babdc4865bb99fc5e41f10…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/servers/index.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Record that rewriting a flagged line re-dates the other findings on it
* okf/sonarqube/verification.md: a mechanical fix can turn the master quality gate red without
introducing a defect, because the gate only measures new code and SonarCloud re-dates a finding it
can no longer match after a rewrite. Also record that javabugs:* findings are computed server-side,
so no local build confirms one gone, and how to read the analyzer's own dataflow path.
* skills/xwiki-fix-sonarqube-issue: check what else the lines being rewritten already carry, before
committing to a candidate.
* okf/sonarqube/index.md: add the one mechanical javabugs:S2259 shape (a nullable-parameter default
helper fed the default constant by its own overload), and drop the two pool-size claims from that
bullet, which the same file says are deliberately absent because they are volatile.
* okf/servers/index.md: the SonarCloud read API needs no token for the public xwiki org, and the MCP
has no quality-gate tool.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 04f75c2c644ef5ad0878d693350cdc8e9645b07d
https://github.com/xwiki/xwiki-dev-llm/commit/04f75c2c644ef5ad0878d693350cd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/servers/index.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Record that rewriting a flagged line re-dates the other findings on it
Commit: 5834089626fdc9f6bed9b5e52b856cd1511d311d
https://github.com/xwiki/xwiki-dev-llm/commit/5834089626fdc9f6bed9b5e52b856…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Run a SonarCloud PR analysis on every PR that changes Java
* skills/xwiki-pull-request: run a SonarCloud PR analysis on any PR that changes Java, not only on a
Sonar cleanup. It applies the same quality gate as the branch and is the only pre-merge check for
the rules computed server-side. Measured on xwiki-commons: about two minutes, with no tests, no
quality profile and no coverage.
* okf/sonarqube/verification.md: correct what the previous change said about confirming a javabugs
finding. A local build still proves nothing, but a PR analysis confirms it before merge, so the
next analysis of the branch is not the only confirmation. Also record that a re-dated finding
reaches the PR report only when the rewrite broke issue matching there too.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: ca7908ed4e683f55b01314e14fd56d865b65a3db
https://github.com/xwiki/xwiki-dev-llm/commit/ca7908ed4e683f55b01314e14fd56…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-27 (Thu, 27 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/sonarqube/verification.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Run a SonarCloud PR analysis on every PR that changes Java
Commit: b5d68f9ab6ae56660f970bf7a5b961634f7a6f17
https://github.com/xwiki/xwiki-dev-llm/commit/b5d68f9ab6ae56660f970bf7a5b96…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Record the xwiki.org Cloudflare User-Agent block and the doc-tooling traps found while migrating a release-notes doc
* okf/servers/index.md: record that www.xwiki.org and extensions.xwiki.org sit behind Cloudflare, which
answers 403 to a browser-like User-Agent (and to none at all) on /xwiki/rest — only a curl-style UA
passes. The trap was documented for ci.xwiki.org only, so a script written against the doc site hit a
403 that reads as an auth failure. Verified live: browser UA 403, curl UA 200.
* okf/servers/jenkins.md: cross-link the two homes of the same Cloudflare trap and cut its section from
twelve lines to six — it stated one rule three times.
* skills/xwiki-rest-api/SKILL.md: add the same rule as one bullet where the curl commands get written.
The skill's /xwiki/rest prefix and nested-space path rules already covered the rest of what the
session needed, so nothing was duplicated there.
* okf/conventions/documentation.md, skills/xwiki-doc-writing/SKILL.md: the naming checker applies the
page-name rules to attachment names too, stop-word removal included — change-in-release-note.png was
rejected for change-release-note.png. The OKF said "attachment names follow the page-name rules"
without saying the checker enforces it, so the rule read as advisory.
* skills/xwiki-doc-writing/tools/docpages.py: lint's "attachment referenced but not declared" check ran
on the raw content, so a reference="..." inside a {{code}} block was mistaken for a real attachment
reference. Run it on strip_verbatim(content), as the other content checks already do.
* skills/xwiki-doc-writing/tools/README.md: never scroll to reach content below the fold —
agent-browser screenshot <element> ignores the scroll offset and captures the document region matching
the element's viewport rect, silently saving the wrong part of the page. Enlarge the viewport instead.
* skills/xwiki-doc-writing/tools/README.md, xwikidoc.py: correct the User-Agent note, which said only
that a request with no UA is rejected — a browser UA is rejected too, which is the counter-intuitive
half.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: fd564dc38661de2d1dc796f92e1b08f7d74d7c7d
https://github.com/xwiki/xwiki-dev-llm/commit/fd564dc38661de2d1dc796f92e1b0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Give the Cloudflare User-Agent block a single home
* State the rule once, in okf/servers/index.md, as a farm-wide rule covering the doc sites and
ci.xwiki.org alike.
* Cut okf/servers/jenkins.md down to the ci-specific consequence and a cross-reference, instead of
restating the mechanism a second time.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 983d9b8a5f11ab37b61dfaf89fd21991a9c328d4
https://github.com/xwiki/xwiki-dev-llm/commit/983d9b8a5f11ab37b61dfaf89fd21…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
[Misc] Record the xwiki.org Cloudflare User-Agent block and the doc-tooling traps found while migrating a release-notes doc
Commit: 698dc68b2224c0a40fe4781d19e0256ef04dc436
https://github.com/xwiki/xwiki-dev-llm/commit/698dc68b2224c0a40fe4781d19e02…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan of one-session tasks
* Add xwiki/skills/xwiki-doc-convert/references/conversion-plan.md: the on-disk plan
layout (conversion/PLAN.md, tasks/, source/), the PLAN.md and task-file templates,
the standard task set, the resume protocol and the checkpoint rules
* Make xwiki-doc-convert plan first and execute one task per session, so a conversion
that does not fit in one context window survives across sessions
* Persist the legacy source and an inventory of its atomic material to
conversion/source/, since the final "nothing lost" audit runs long after the
original page has been stripped
* Decompose from the inventories rather than the raw legacy text, and reuse a single
Change Request recorded in PLAN.md
* Bump the plugin version to 1.1.17
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 730649738e3c43c74508944685ee1bbc82e09f2e
https://github.com/xwiki/xwiki-dev-llm/commit/730649738e3c43c74508944685ee1…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan of one-session tasks
Commit: 3ce1455232b8bdd0a8d52b9fa8235728b566bb1b
https://github.com/xwiki/xwiki-dev-llm/commit/3ce1455232b8bdd0a8d52b9fa8235…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Publish a documentation conversion once, at the end, instead of page by page
* xwiki.org is public and a conversion runs for weeks, so a page saved the moment it is drafted is
live with red links to the siblings and hubs that do not exist yet, usually under a missing parent,
carrying any defect until someone happens to look. Observed on a real conversion in flight.
* Make the `page-*` tasks preparation tasks: they draft into `pages.py`, capture screenshots and lint
offline, and no longer call `docpages.py save`.
* Add a single `publish` task at the end of the standard task set. It saves the whole set in one
pass, parents before children, then runs `verify` and absorbs the live doc checker's findings.
* Say that a Change Request stays the preferred vehicle and why, and that choosing to save direct
changes nothing about the timing.
* Spell out the two consequences for the drafting tasks: the offline lint becomes their only gate, so
what the live checker would have caught has to move into it; and the publish task reads back what
it wrote rather than assuming the syntax rendered.
* Record the rule in the OKF, in documentation-migration, so it survives the skill.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 9eb910a33ece54a7d9534efc3411067f18809b07
https://github.com/xwiki/xwiki-dev-llm/commit/9eb910a33ece54a7d9534efc34110…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
Log Message:
-----------
[Misc] Run a documentation conversion as a resumable plan, and publish it only at the end
Commit: cc0d76f4947c9747309aefac69d66ce483b28613
https://github.com/xwiki/xwiki-dev-llm/commit/cc0d76f4947c9747309aefac69d66…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/scripts/inject-org-instructions.mjs
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
Log Message:
-----------
[Misc] Put every cross-session work file in one work directory
* Plans, handoffs, extracted source, drafts and notes were being written to
the repo root, the system temp directory and the home directory, so they
were neither findable later nor cleanable.
* Add a "Work files" rule to the org-wide conventions: state that outlives a
session goes under $XWIKI_LLM_WORK (default ~/.xwiki-llm/work), one
<work>/<repo>/<date>-<slug>/ directory per piece of work. Session-only
files stay in the host's own scratch directory.
* Have the SessionStart hook append the resolved absolute path, which the
model cannot compute itself. Nothing is created up front, so a session that
writes no work file leaves no trace, and mkdir -p at first use also repairs
a directory the developer has deleted.
* Derive the working directory in xwiki-doc-convert and xwiki-doc-writing
instead of asking the developer for it on every conversion.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 16338678f1eb8af156826df4fad4f82d45ea075a
https://github.com/xwiki/xwiki-dev-llm/commit/16338678f1eb8af156826df4fad4f…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-29 (Sat, 29 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/scripts/inject-org-instructions.mjs
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
Log Message:
-----------
[Misc] Put every cross-session work file in one work directory
Commit: 15a42edfd245c821b23da319ddc2aa001acde2fc
https://github.com/xwiki/xwiki-dev-llm/commit/15a42edfd245c821b23da319ddc2a…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/servers/jira.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Show the visible result of a change in the PR and on the JIRA issue
* Widen the "Screenshots & Video" rule of the xwiki-pull-request skill: a screenshot is not only for
a defect being fixed. Whenever the change has a visible result — a new feature, an improvement or
a fix — show it, so that a reviewer can judge the result without building the branch, with a
"before" as well when the issue reports a regression. The same image goes on the JIRA issue, where
it serves whoever reads the issue or writes the release note later.
* Record the attachment mechanics in okf/servers/jira.md, where the other JIRA access facts live:
attaching is REST-only since jira-cli has no attach command, Atlassian requires the
X-Atlassian-Token: no-check header, and the returned attachment URL is also what a PR body has to
reference, gh being unable to upload an image.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 97e9acc9e357de45caeafbd8ac57b8f96e500575
https://github.com/xwiki/xwiki-dev-llm/commit/97e9acc9e357de45caeafbd8ac57b…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/index.md
M xwiki/okf/servers/jira.md
M xwiki/skills/xwiki-pull-request/SKILL.md
Log Message:
-----------
[Misc] Show the visible result of a change in the PR and on the JIRA issue
Commit: 3a39634b4fde1d85b77d61746b5ebc0b079d995d
https://github.com/xwiki/xwiki-dev-llm/commit/3a39634b4fde1d85b77d61746b5eb…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M README.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
Don't mark a SonarCloud issue Accepted when a PR fixes it
* SonarCloud closes such an issue as FIXED by itself at the next branch analysis after the merge, so
the transition buys nothing and hides a real defect from the quality gate if the PR never lands.
* Reserve the falsepositive/accept transitions for findings the code keeps as they are.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 236b759489bda9d271bfd663a747dd9255908fe2
https://github.com/xwiki/xwiki-dev-llm/commit/236b759489bda9d271bfd663a747d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M README.md
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
[Misc] Don't mark a SonarCloud issue Accepted when a PR fixes it
Commit: d763630e4e3892977e29a56f43f21b3288ca6c52
https://github.com/xwiki/xwiki-dev-llm/commit/d763630e4e3892977e29a56f43f21…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
Log Message:
-----------
[Misc] Cut the per-session cost of a documentation conversion
Measured across the 58 past sessions that converted or wrote xwiki.org documentation (the LaTeX,
Release Notes and AntiSpam conversions): 1.44B billed context tokens, of which 96-99% is cache reads
— a session costs roughly turns x context, so the levers are fewer turns and a smaller context.
22% of all those tokens were spent re-orienting before the first authoring action of the session,
and ~17% on the screenshot shoot/look/adjust loop.
* Add `docplan.py` to the doc-writing tools: `status` prints a conversion's whole orientation in one
call — the current task's full brief, the Setup answers, the recent Decisions and Open questions,
and what comes next — replacing PLAN.md read by hand in five to thirteen `sed` chunks per session
(76 KB re-read, against a 19 KB digest). `start` / `done` / `block` write the status and the
Outcome to both PLAN.md's row and the task file, which is also the pair that otherwise drifts
apart. Decisions and Open questions are trimmed to their most recent *whole* entries with a count
of what was dropped: a real plan accumulates tens of thousands of characters of them, and the
recent ones are the ones a session would otherwise re-litigate.
* Make `docshot.sh` run `checkredbox.py` on the shot it just took whenever a box selector was given,
and fail if the box is broken. A capture now reports its own verdict, so there is never a reason
to open the PNG to find out whether it worked — an image read into a session stays in context for
every later turn, which is what turns a screenshot into a shoot/look/adjust loop. `CHECK=0` opts
out; a shot with no box is skipped.
* Point the `xwiki-doc-convert` resume protocol at `docplan.py` in both the skill and the plan
reference, and add the three habits that decide whether a task fits in one session: one call
rather than a conversation for anything mechanical, never open a screenshot to check a capture,
and read the inventory rather than the raw legacy source.
* Add a rule to keep Decisions and Open questions to entries that still bind a future session, since
the digest shows the recent ones and a decision buried under fifty later ones is one a session
will not see.
Version bumped 1.2.1 -> 1.3.0 (minor — the skills now depend on a newly shipped tool).
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 7c94843af4a7c4bd9360d022682bfd9b9eea1c55
https://github.com/xwiki/xwiki-dev-llm/commit/7c94843af4a7c4bd9360d022682bf…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
Log Message:
-----------
[Misc] Cut the per-session cost of a documentation conversion
Commit: e9378ecfb25eb341ef1950d2b1d16f2b41da7fe5
https://github.com/xwiki/xwiki-dev-llm/commit/e9378ecfb25eb341ef1950d2b1d16…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Document how a stylesheet extension reads the colour theme
* Record in okf/conventions/frontend.md that CSS ships as a Skin Extension, and that reading
colour-theme values from one needs contentType LESS: $theme is not bound in wiki-page Velocity, so
a parse=1 SSX that reaches for it compiles and silently emits only its fallbacks.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 8ed7f4c90785cd13f7745da5f961bbb445644417
https://github.com/xwiki/xwiki-dev-llm/commit/8ed7f4c90785cd13f7745da5f961b…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
Log Message:
-----------
[Misc] Document how a stylesheet extension reads the colour theme
Commit: 777f8c82bedb7c99b00e424aecfbe397f349ce39
https://github.com/xwiki/xwiki-dev-llm/commit/777f8c82bedb7c99b00e424aecfbe…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Add a Develocity MCP server
* Add the `develocity` MCP server to all three host manifests, pointing at ge.xwiki.org, XWiki's
Develocity instance: build failures with stack traces, test outcomes and flaky-test history,
build timings, cache effectiveness and build-to-build diffs.
* Configure it as a remote streamable-HTTP server on every host, so nothing runs locally: Claude
Code and opencode interpolate the access key into an Authorization header, while Kimi Code uses
its bearerTokenEnvVar field, which reads the token from the environment rather than the config.
* Read the key from DEVELOCITY_MCP_ACCESS_KEY rather than DEVELOCITY_ACCESS_KEY. The two hold the
same Develocity access key but cannot hold the same value: the Maven and Gradle extensions
require DEVELOCITY_ACCESS_KEY to be host-scoped (`ge.xwiki.org=<key>`, so a key cannot be sent to
a server it was not issued for), whereas a Bearer header needs the bare key. A separate name lets
a developer authenticate both their local build and the MCP server.
* Leave the key optional: unset, Claude Code and Kimi Code skip the server. Develocity validates
the key on every request including tool listing, so a keyless server would error each session
instead of degrading to read-only, as the discourse one does.
* Record the server in okf/servers/index.md, whose map still described ge.xwiki.org as having no
MCP, and point okf/servers/jenkins.md at it for why a build failed, Jenkins remaining the
authority on whether it did.
* Bump the plugin version to 1.4.0 (minor: a capability change).
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 20383936600743b4b2e5dcd126fddbe341177a17
https://github.com/xwiki/xwiki-dev-llm/commit/20383936600743b4b2e5dcd126fdd…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Add a Develocity MCP server
Commit: efa6436d29d0b3506c598ab1aea267c5712631fd
https://github.com/xwiki/xwiki-dev-llm/commit/efa6436d29d0b3506c598ab1aea26…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Point the Develocity MCP server at community.develocity.cloud
* ge.xwiki.org has been decommissioned: it still resolves in DNS (to a
Gradle-hosted ELB) but resets the connection at the TLS handshake, so the
develocity MCP server failed to load with ECONNRESET and exposed no tools.
* Update the endpoint to https://community.develocity.cloud/mcp in the three
MCP configurations (Claude Code, Kimi Code, opencode).
* Update the OKF server map and Jenkins page, and the README setup steps: the
access-keys page is now /settings/access-keys, and the host-scoped key prefix
the Maven/Gradle extensions need is community.develocity.cloud=.
* Record that this is Gradle's shared community instance, so XWiki's build
scans are scoped by the project ID xwiki from .mvn/develocity.xml.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 5a33efc139d461c2f3d8b950b3d8369593c87386
https://github.com/xwiki/xwiki-dev-llm/commit/5a33efc139d461c2f3d8b950b3d83…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Bump the plugin version to 1.4.1
* The previous commit changes files under xwiki/, so installed plugins only pull
it once the version increases (validate.mjs invariant 6).
* Bump all five manifest locations in lockstep: the marketplace metadata and its
xwiki plugin entry, the Claude plugin.json, kimi.plugin.json, and the
opencode.jsonc version comment.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 073d3fa1d73ab8dcbc7ef905fe4da1b918af35a7
https://github.com/xwiki/xwiki-dev-llm/commit/073d3fa1d73ab8dcbc7ef905fe4da…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
[Misc] Point the Develocity MCP server at community.develocity.cloud
Commit: 1088b62d92f299c8b4642945ffa49eb1d8ce327c
https://github.com/xwiki/xwiki-dev-llm/commit/1088b62d92f299c8b4642945ffa49…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
Log Message:
-----------
[Misc] Catch a wiki macro halved by an f-string in a docpages page set
* A `{{macro}}` written inside an f-string field of a `pages.py` arrives in the
value as `{macro}`: Python treats `{{` as an escaped literal brace. The page
then renders the macro as literal text, and nothing reports it — the doc
checker creates no violation object and the rendered page has no error box, so
the defect reaches a live page looking like prose.
* Worse, the halving hits lines the author never meant to touch: a field
converted to an f-string for one interpolation silently corrupts every
existing macro in it.
* Add the check to `lint`: a `{/` not preceded by a brace, or a `/}` not
followed by one, is a halved macro and is invalid XWiki syntax anywhere
outside the verbatim blocks `strip_verbatim` already blanks.
* Note it in the tools README's `lint` list, beside the other traps that produce
a plausible-looking page rather than an error.
* Bump the plugin version so installed plugins pull the change.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 79dd0e576832460af55e1a0efac8520f14402403
https://github.com/xwiki/xwiki-dev-llm/commit/79dd0e576832460af55e1a0efac85…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
Log Message:
-----------
[Misc] Catch a wiki macro halved by an f-string in a docpages page set
Commit: af5589c0f04afbd38067da7591e9ce80d6b490f6
https://github.com/xwiki/xwiki-dev-llm/commit/af5589c0f04afbd38067da7591e9c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Add an OKF topic for stored data in a wiki application
* New `okf/architecture/wiki-application-data.md`. Three traps that a review of a
real XClass+wiki-page application hit, none of which had an OKF home:
- A list property that is neither `multiSelect` nor large storage is stored as a
`StringProperty` (`ListClass.newProperty`) in `xwikistrings.XWS_VALUE`, a
VARCHAR, so HQL/XWQL range filters on it compare text. Single-character codes
sort as intended, which is what hides it until values differ in length.
- A generated `Entry001` name derived from the pages that already exist races
for the whole editing session, because the page appears only on save.
- A wiki-page migration is idempotent for free if it drops the object it
matched on; what it still needs is a completion count.
Plus the entry-template trap: a template missing the marker class its queries
use produces entries invisible to every query.
* Grounded in platform source (`ListClass`, `xwiki.hbm.xml`), verified rather than
extrapolated from the one application reviewed.
* Cross-reference `[[performance]]` for bounding the migration instead of
restating its pagination rule, so the batching rule keeps one home.
* `okf/conventions/frontend.md`: the WCAG 2.2 AA bullet stated the commitment but
no operational rule, so add the three traps for markup emitted from a wiki page
— naming a control (a `<dt>` term and a prompt in `value` are not names, and a
prompt in `value` also submits as data), `[[image:]]` alt text defaulting to the
filename, and `col-xs-*` not being a responsive layout. Accessibility already
lives here, so this extends that entry rather than adding a second home.
* `skills/xwiki-review`: stop the accessibility brief asserting a WCAG version of
its own. It claimed the OKF had no accessibility topic and named WCAG 2.1, while
`frontend.md` has covered accessibility at 2.2 — so a reviewer was being told to
cite criteria against a standard the project does not hold. It now reads the
level from `frontend.md` and is told never to state it from memory, which is
what keeps it from drifting again on the next re-commit.
* `skills/xwiki-review`: the data & migration angle claimed the stored-data rules
had no OKF home, which this commit makes false, and its routing fired only on
`*.hbm.xml`, migrator classes, Solr schema and store code — so it could never
run on a XAR-only extension, the very place the new topic applies. Add the
XClass / generated-name / wiki-page-migration trigger and cite the new file;
narrow the remaining skill-owned marker to Java store and mapping changes.
* Describe both OKF changes in `okf/index.md`; add the topic name only to the
always-on map in `instructions/xwiki-org.md` (+1 line, routing only).
* Bump the plugin version so installed plugins pull the change.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 2cbc3577e39832532172c606a224d9d2dfe54b15
https://github.com/xwiki/xwiki-dev-llm/commit/2cbc3577e39832532172c606a224d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
[Misc] Add an OKF topic for stored data in a wiki application
Commit: c029e81967fa776c09cd9ba318ee08bcdf2b5b0f
https://github.com/xwiki/xwiki-dev-llm/commit/c029e81967fa776c09cd9ba318ee0…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/okf/index.md
A xwiki/okf/testing/running-docker-its.md
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Cap concurrent Docker IT runs and record how to run them on a developer machine
Running -Pdocker,integration-tests is a machine-wide operation, and nothing serialised it: several
agents in sibling worktrees launching one at the same time starve the Docker daemon, which surfaces
as a failure in beforeAll that reads like a product bug.
* Add scripts/xwiki-it-slot.mjs, a wrapper capping concurrent functional-test runs (2 by default,
--max N or XWIKI_LLM_IT_SLOTS). Slots are claimed atomically, released however the command ends,
and reclaimed when their holder died; --status names the current holders.
* Add okf/testing/running-docker-its.md: how the browser container reaches XWiki under each servlet
engine (host-gateway /etc/hosts entry versus the xwikiweb alias over Docker DNS), why the two
configurations therefore exercise different networking and when the containerised one is
mandatory, the setup-failure symptom table, and what several agents on one machine contend for.
* Rework the Docker IT section of xwiki-build around it: pre-flight, the never-stop-an-instance
rule, the engine choice, the slot wrapper, and the rule that a beforeAll failure is never
evidence about the change under test.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: d54c4766637b8f40c6cd0666a3dcbbec516bdd77
https://github.com/xwiki/xwiki-dev-llm/commit/d54c4766637b8f40c6cd0666a3dcb…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/okf/index.md
A xwiki/okf/testing/running-docker-its.md
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
Log Message:
-----------
[Misc] Cap concurrent Docker IT runs and record how to run them on a developer machine
Commit: 7808c17ff57e1545de5548c55732c2960ab3caf4
https://github.com/xwiki/xwiki-dev-llm/commit/7808c17ff57e1545de5548c55732c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
* Add scripts/release.mjs: the only thing that writes a version field. It sets all five (marketplace
metadata + plugin entry, plugin.json, kimi.plugin.json, the opencode.jsonc comment), commits
"[Misc] Release X.Y.Z" and tags vX.Y.Z. The tag is how the next run knows what already shipped;
before the first tag it falls back to the commit that introduced the current version, so the
bootstrap needs no manual step. It exits having done nothing when no file under xwiki/ changed.
* Derive the segment rather than ask for it, since the rule was already mechanical: minor when the
capability inventory changes between the last release and HEAD (a skill, an MCP server, a hook or
an opencode plugin added or removed), patch for anything else under xwiki/, major never derived.
A "Release-Bump: minor|major" commit trailer overrides it for a change whose significance the file
list cannot show — unlike a version field, two branches never conflict on a commit message.
* Invert validate.mjs invariant 6: a branch must now NOT change any version field, compared base ->
working tree so a stray bump is caught before it is even committed. Skipped on master, where
release.mjs legitimately moves it. Invariant 3 (the five agree) is unchanged; the extraction of
the five fields is parameterised by a reader so both invariants read the same thing.
* Add .github/workflows/release.yml, running release.mjs --push on every push to master that touches
xwiki/, plus workflow_dispatch with an explicit segment, serialised by a release concurrency group.
* Flip the xwiki-knowledge EXTEND flow from "bump all five fields" to "never touch the version", and
document the release in CLAUDE.md and README.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: c768ac3c736c8dae120e331febeb837735bc78e8
https://github.com/xwiki/xwiki-dev-llm/commit/c768ac3c736c8dae120e331febeb8…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
A .github/workflows/release.yml
M CLAUDE.md
M README.md
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/skills/xwiki-knowledge/SKILL.md
Log Message:
-----------
[Misc] Cut the plugin release on master instead of bumping the version in every PR
Commit: 422a726b2d2ee7845a020061204615a481ed7a04
https://github.com/xwiki/xwiki-dev-llm/commit/422a726b2d2ee7845a02006120461…
Author: github-actions[bot] <41898282+github-actions[bot](a)users.noreply.github.com>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Release 1.5.1
* content edits only (no capability added or removed)
Commit: 322aaacea57d486e7d2e5b4924e31305a6cdf099
https://github.com/xwiki/xwiki-dev-llm/commit/322aaacea57d486e7d2e5b4924e31…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M scripts/validate.mjs
Log Message:
-----------
[Misc] Compare a branch's plugin version against its merge base, not master's tip
* Invariant 6 asked whether the branch's version differed from origin/master's tip, which answers the
wrong question now that master keeps releasing while a branch is open: a branch that forked at
1.1.7 and never touched a version field still differs from a master that has reached 1.5.1, so
every long-lived PR was told to revert a bump it never made. Compare against the merge base
instead, which is what "did this branch change the version?" actually means.
* Name the merge base and its version in the failure message, so the fix is unambiguous on a branch
whose fork point is far behind.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 8b7f693ae14f6866b429cd980624897a36803ba0
https://github.com/xwiki/xwiki-dev-llm/commit/8b7f693ae14f6866b429cd9806248…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M scripts/validate.mjs
Log Message:
-----------
[Misc] Compare a branch's plugin version against its merge base, not master's tip
Commit: 3ec80f445aa8c2365b2baa2c7b39c26c374a8820
https://github.com/xwiki/xwiki-dev-llm/commit/3ec80f445aa8c2365b2baa2c7b39c…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
A .github/workflows/release.yml
M CLAUDE.md
M README.md
M kimi.plugin.json
M opencode.jsonc
A scripts/release.mjs
M scripts/validate.mjs
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/conventions/documentation.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/okf/servers/jira.md
M xwiki/okf/sonarqube/constant-and-resource-rules.md
M xwiki/okf/sonarqube/dead-code-rules.md
M xwiki/okf/sonarqube/index.md
M xwiki/okf/sonarqube/modernization-rules.md
M xwiki/okf/sonarqube/simplification-rules.md
M xwiki/okf/sonarqube/syntax-rules.md
M xwiki/okf/sonarqube/test-code-rules.md
M xwiki/okf/sonarqube/verification.md
A xwiki/okf/testing/running-docker-its.md
M xwiki/okf/testing/strategy.md
M xwiki/scripts/inject-org-instructions.mjs
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
M xwiki/skills/xwiki-knowledge/SKILL.md
M xwiki/skills/xwiki-pull-request/SKILL.md
M xwiki/skills/xwiki-rest-api/SKILL.md
M xwiki/skills/xwiki-review/SKILL.md
M xwiki/skills/xwiki-test-guidelines/SKILL.md
Log Message:
-----------
[Misc] Merge master to pick up the merge-base version check
* The branch was failing `validate` because it ran its own stale copy of
scripts/validate.mjs, which still required a bump above master's tip; master
now requires the opposite — a pull request must not touch the version at
all, since the release is cut on master.
* No version bump here: the manifests take master's 1.5.1 unchanged.
Co-Authored-By: Vincent Massol <vincent(a)massol.net>
Compare: https://github.com/xwiki/xwiki-dev-llm/compare/eb967d47a9ad...3ec80f445aa8
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
01 Sep '26
Branch: refs/heads/misc-dependency-upgrade-commit-prefix
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: bacffc9163f026712bf82ad1e91c44e0cda9c2b4
https://github.com/xwiki/xwiki-dev-llm/commit/bacffc9163f026712bf82ad1e91c4…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Drop the plugin version bump
* Five manifests carry one version, so every concurrent pull request conflicted with every other one
on those same five lines, over something that was never part of either change. The release is now
cut on master after the merge by scripts/release.mjs, and scripts/validate.mjs fails a branch that
touches a version field.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
[xwiki/xwiki-dev-llm] 799318: [Misc] Follow platform conventions for the default...
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
Branch: refs/heads/feat/follow-dir-conventions
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: 799318ece839a44be848a24f09b18d1d266c1b36
https://github.com/xwiki/xwiki-dev-llm/commit/799318ece839a44be848a24f09b18…
Author: ClementEXWiki <clement.eraud(a)xwiki.com>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/scripts/inject-org-instructions.mjs
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
Log Message:
-----------
[Misc] Follow platform conventions for the default work directory
* Default work-directory root is now $XDG_STATE_HOME/xwiki-llm (falling
back to ~/.local/state/xwiki-llm) on Linux/macOS, and
%LOCALAPPDATA%\xwiki-llm on Windows, instead of the unconditional
~/.xwiki-llm/work used on every OS. XWIKI_LLM_WORK still overrides it.
* Update README.md, xwiki-org.md and the two skill docs that restated
the old default.
* Bump the plugin version to 1.4.2.
Commit: 7b59f33076aa9a2f947c2f344be257e92379dde0
https://github.com/xwiki/xwiki-dev-llm/commit/7b59f33076aa9a2f947c2f344be25…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M CLAUDE.md
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
A xwiki/okf/architecture/wiki-application-data.md
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
A xwiki/okf/testing/running-docker-its.md
M xwiki/scripts/inject-org-instructions.mjs
A xwiki/scripts/state-dir.mjs
A xwiki/scripts/xwiki-it-slot.mjs
M xwiki/skills/xwiki-build/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
M xwiki/skills/xwiki-review/SKILL.md
Log Message:
-----------
Merge master into the default-work-directory change
* Resolve the plugin-version conflicts on master's 1.5.0, bumped to 1.5.1 for this change.
* Resolve the platform state root in a single place, xwiki/scripts/state-dir.mjs, and use it from
both the SessionStart hook (work directory) and xwiki-it-slot.mjs (IT slot files), so the plugin
owns one root per machine and the platform rules are written down once.
* Add the fallbacks the rule was missing: ~/.local/state/xwiki-llm/work when XDG_STATE_HOME is
unset, and %USERPROFILE%\AppData\Local\xwiki-llm\work when LOCALAPPDATA is unset.
* Stop restating those rules in xwiki-org.md and the two skill docs — the hook injects the resolved
absolute path (state-dir.mjs prints it for opencode, which has no hook), and README.md's
XWIKI_LLM_WORK table row is the one human-readable copy.
* Tell the developer, once per session for as long as anything is still there, to move what the
pre-1.5.1 default left in ~/.xwiki-llm/work.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: d380e8ad87f1bdac125a205fa48db6982d43da77
https://github.com/xwiki/xwiki-dev-llm/commit/d380e8ad87f1bdac125a205fa48db…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Drop the plugin version bump
* Five manifests carry one version, so every concurrent pull request conflicted with every other one
on those same five lines, over something that was never part of either change. The release is now
cut on master after the merge by scripts/release.mjs, and scripts/validate.mjs fails a branch that
touches a version field.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Compare: https://github.com/xwiki/xwiki-dev-llm/compare/799318ece839%5E...d380e8ad87…
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] 338d33: [Misc] Add the xwiki-ui-before-after skill
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
Branch: refs/heads/xwiki-ui-before-after-skill
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: 338d33075b7fe714e365083296b8699384128e52
https://github.com/xwiki/xwiki-dev-llm/commit/338d33075b7fe714e365083296b86…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-28 (Fri, 28 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/index.md
M xwiki/skills/xwiki-deploy-extension/SKILL.md
A xwiki/skills/xwiki-ui-before-after/SKILL.md
A xwiki/skills/xwiki-ui-before-after/build-comparison-3col.py
A xwiki/skills/xwiki-ui-before-after/build-comparison.py
A xwiki/skills/xwiki-ui-before-after/element-screenshot.js
A xwiki/skills/xwiki-ui-before-after/expand-and-shoot.js
A xwiki/skills/xwiki-ui-before-after/export-to-png.js
A xwiki/skills/xwiki-ui-before-after/references/gotchas.md
A xwiki/skills/xwiki-ui-before-after/references/release-notes-comparison.md
A xwiki/skills/xwiki-ui-before-after/setup-class-object.js
A xwiki/skills/xwiki-ui-before-after/setup-instance.sh
A xwiki/skills/xwiki-ui-before-after/setup-xar-instance.sh
A xwiki/skills/xwiki-ui-before-after/sync-static-resource.sh
A xwiki/skills/xwiki-ui-before-after/xwiki-login.js
Log Message:
-----------
[Misc] Add the xwiki-ui-before-after skill
Contributes the before/after UI comparison procedure and its helper scripts as a plugin skill:
build a UI change's pre-fix and post-fix code, run both against a local XWiki instance, and
export one side-by-side PNG. Personal paths are replaced by $XWIKI_UI_SKILL (resolved from the
per-host plugin root) and $XWIKI_TEST_INSTANCES_DIR, and the gotchas and release-notes variant
move into references/ so SKILL.md stays the decision path.
Commit: bb0194e98c6ef3b7b2ce22e0717a67bd84641993
https://github.com/xwiki/xwiki-dev-llm/commit/bb0194e98c6ef3b7b2ce22e0717a6…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-ui-before-after/SKILL.md
M xwiki/skills/xwiki-ui-before-after/references/gotchas.md
M xwiki/skills/xwiki-ui-before-after/sync-static-resource.sh
Log Message:
-----------
[Misc] Cover skin templates in the xwiki-ui-before-after skill
Adds a --target-root flag to sync-static-resource.sh so it can deploy a pom-packaged skin
module's .vm and .less files under webapps/xwiki/skins/, documents that neither path needs a
Maven build or a restart, and requires the capture script to log the compared property in both
states, since --verify has no equivalent when the deploy is a file copy.
Commit: b66aca645878b202f9b44b2e20f9a7fba1ef28ad
https://github.com/xwiki/xwiki-dev-llm/commit/b66aca645878b202f9b44b2e20f9a…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-ui-before-after/SKILL.md
M xwiki/skills/xwiki-ui-before-after/build-comparison-3col.py
M xwiki/skills/xwiki-ui-before-after/build-comparison.py
Log Message:
-----------
[Misc] Pair the context shot with the detail crop in xwiki-ui-before-after
Adds an optional "context" key to each cell of both comparison builders, rendering the wider
shot above the detail crop inside the same panel, and states that a scenario is a state or
interaction rather than a zoom level, so the same element is never compared twice in two rows.
Commit: 884c2818982625949346d3fd6dd38b5666f82af7
https://github.com/xwiki/xwiki-dev-llm/commit/884c2818982625949346d3fd6dd38…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-ui-before-after/SKILL.md
M xwiki/skills/xwiki-ui-before-after/references/gotchas.md
M xwiki/skills/xwiki-ui-before-after/setup-instance.sh
M xwiki/skills/xwiki-ui-before-after/setup-xar-instance.sh
Log Message:
-----------
[Misc] Delegate deploy, Maven and instance rules to the existing skills
Sends the XAR deploy to xwiki-deploy-extension, keeping setup-xar-instance.sh only as the
fallback for the version-drift InstallException that route cannot handle. Builds through xmvn
when it is available, per xwiki-build, since this skill builds old commits that may target an
older Java than the machine default. Replaces the oldcore-specific weaving lecture with
xwiki-build's general rule, keeping only the consequence for a jar swap. Adds a port check and
the never-stop-an-instance-you-did-not-start rule to step 0. Sets the plugin version to 1.1.14.
Commit: 556193e7ec5b375a60be12809090aa0a8073d626
https://github.com/xwiki/xwiki-dev-llm/commit/556193e7ec5b375a60be12809090a…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-ui-before-after/SKILL.md
M xwiki/skills/xwiki-ui-before-after/references/gotchas.md
M xwiki/skills/xwiki-ui-before-after/references/release-notes-comparison.md
Log Message:
-----------
[Misc] Restructure the xwiki-ui-before-after procedure around one state at a time
Splits the 137-line capture step into deploy-one-state and capture-one-state, so the before, after
and restore runs are three invocations of the same pair instead of one step plus a "same as above".
Leads the fixture step with finding a page that already exercises the change, demoting the
PropertyClass helpers to a sub-case they always were. Adds a worked example, a prerequisites
preflight, the XWIKI_BASE_URL/ADMIN_USER/ADMIN_PASS variables the JS helpers already read, a
copyable --verify invocation, and the note that only the jar and xar paths need the instance
version to match the branch.
Commit: a49e7ba519fd1a52c1eacc7134064c0af44ed4f9
https://github.com/xwiki/xwiki-dev-llm/commit/a49e7ba519fd1a52c1eacc7134064…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-ui-before-after/SKILL.md
M xwiki/skills/xwiki-ui-before-after/build-comparison-3col.py
M xwiki/skills/xwiki-ui-before-after/build-comparison.py
M xwiki/skills/xwiki-ui-before-after/element-screenshot.js
M xwiki/skills/xwiki-ui-before-after/xwiki-login.js
Log Message:
-----------
[Misc] Correct the xwiki-ui-before-after assertion, login and context-shot advice
A clean-room run of the skill found its own example snippets unusable. The assertion selector
addressed a hidden input that never changes, so it produced the same value in both states - the
signal step 4 tells you to read as a failed deploy; it now addresses the button by name and the
document says why positional selectors bite here. login() took a base URL with the /xwiki suffix
and requested /xwiki/xwiki/..., silently leaving the session logged out; it now accepts either
form, defaults from the environment, and fails loudly when no form appears rather than gating on
the 401 that XWiki serves the login page with. screenshotElement grew a maxHeight cap so a context
shot can be a band of page ending below the element, which is what the guidance asks for and what
padding cannot express. Also: states that every path needs a running instance and how to wait for
one, adds the grep and md5sum checks that catch a bad deploy and a crop that misses the change,
documents that repro is raw HTML while captions are escaped, and replaces the worked example's
invented log lines with captured ones.
Commit: 23a7cc140c4c0b455e2b4a9d8d8dd224e29c470c
https://github.com/xwiki/xwiki-dev-llm/commit/23a7cc140c4c0b455e2b4a9d8d8dd…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-ui-before-after/SKILL.md
M xwiki/skills/xwiki-ui-before-after/setup-instance.sh
M xwiki/skills/xwiki-ui-before-after/setup-xar-instance.sh
Log Message:
-----------
[Misc] Fix the worktree path, usage output and pixel-diff advice in xwiki-ui-before-after
A second clean-room run, on a webjar module in a linked git worktree, broke on two script bugs.
Both setup scripts derived the throwaway worktree from $REPO_ROOT/.git, which is a file rather
than a directory in a linked worktree, so building any non-HEAD ref failed outright; they now use
--git-common-dir, which resolves correctly from a main checkout and a linked worktree alike. Both
also died on an unbound variable when run with no arguments, which the procedure told the reader
to do for the flag docs; they now print their own header as usage, for --help and for a missing
argument. Replaces the md5sum check added in the previous commit, which is unsound because a live
instance's screenshots are not byte-reproducible, with compare -metric AE plus a noise-floor
method instead of invented thresholds. Adds webjar to the packaging list, a branch for fixes that
are semantic rather than visual, the detached run recipe for builds that outlive a tool timeout,
and the note that a context band anchors towards the chrome, which is not always upwards.
Commit: 99ba9315b9ea83ddafc64a1de9b313a60066c5a6
https://github.com/xwiki/xwiki-dev-llm/commit/99ba9315b9ea83ddafc64a1de9b31…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-ui-before-after/SKILL.md
A xwiki/skills/xwiki-ui-before-after/references/design-comparison.md
M xwiki/skills/xwiki-ui-before-after/references/gotchas.md
Log Message:
-----------
[Misc] Trim xwiki-ui-before-after back to the decision path
SKILL.md had accumulated diagnostic detail that belongs beside the gotchas rather than inside the
procedure: why a positional selector picks the wrong node in the skin templates, how --verify
matches an artifactId, both anchoring directions for a context band, measured pixel-diff
magnitudes, the CSRF root-cause note and the login page's 401. Those move to references/gotchas.md,
leaving the rule and the command in each step. The 3-column design-prototype variant, which applies
only when a mockup exists, moves to references/design-comparison.md. Drops the layout-constraints
list duplicated verbatim from build-comparison.py's docstring, a backgrounding paragraph made
obsolete by the detached-run recipe, and the restatements of the before-ref rule and the git-safety
anecdote.
Commit: 9cee22546cd7571f7fd53fbc43ae217245ae388c
https://github.com/xwiki/xwiki-dev-llm/commit/9cee22546cd7571f7fd53fbc43ae2…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-ui-before-after/SKILL.md
M xwiki/skills/xwiki-ui-before-after/references/gotchas.md
Log Message:
-----------
[Misc] Cut the xwiki-ui-before-after gotchas to what is actually XWiki-specific
Drops the generic cost-discipline checklist, which was four bullets of advice any careful reader
already follows, down to one paragraph. Drops two entries that no longer apply to this skill: the
AppWithinMinutes class-editor save button, whose own text concedes the selector is rarely the
problem and whose wizard the procedure tells you not to automate, and ApplicationClassEditPage,
which belongs to the Java functional-test framework this skill does not use. Merges the two
"selector matches but the element is not usable" entries, which described one failure with two
causes, and compresses the pstree and --verify entries to their nugget.
Commit: 73ea17680257924f646316fb752d5f3ef70ee0fa
https://github.com/xwiki/xwiki-dev-llm/commit/73ea17680257924f646316fb752d5…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/instructions/xwiki-org.md
M xwiki/okf/conventions/documentation-migration.md
M xwiki/okf/conventions/documentation.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/okf/servers/jira.md
M xwiki/scripts/inject-org-instructions.mjs
M xwiki/skills/xwiki-doc-convert/SKILL.md
A xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/SKILL.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
M xwiki/skills/xwiki-doc-writing/tools/docpages.py
M xwiki/skills/xwiki-doc-writing/tools/xwikidoc.py
M xwiki/skills/xwiki-pull-request/SKILL.md
M xwiki/skills/xwiki-rest-api/SKILL.md
Log Message:
-----------
Merge branch 'master' into pr-81
# Conflicts:
# .claude-plugin/marketplace.json
# kimi.plugin.json
# opencode.jsonc
# xwiki/.claude-plugin/plugin.json
Commit: 54b7dffca2575704a377ac905c44d273d9b56c05
https://github.com/xwiki/xwiki-dev-llm/commit/54b7dffca2575704a377ac905c44d…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-08-30 (Sun, 30 Aug 2026)
Changed paths:
M README.md
M xwiki/okf/index.md
A xwiki/skills/xwiki-capture-ui-change/SKILL.md
A xwiki/skills/xwiki-capture-ui-change/common.sh
A xwiki/skills/xwiki-capture-ui-change/element-screenshot.js
A xwiki/skills/xwiki-capture-ui-change/references/gotchas.md
A xwiki/skills/xwiki-capture-ui-change/setup-class-object.js
A xwiki/skills/xwiki-capture-ui-change/setup-instance.sh
A xwiki/skills/xwiki-capture-ui-change/setup-xar-instance.sh
A xwiki/skills/xwiki-capture-ui-change/sync-static-resource.sh
A xwiki/skills/xwiki-capture-ui-change/xwiki-login.js
M xwiki/skills/xwiki-deploy-extension/SKILL.md
M xwiki/skills/xwiki-pull-request/SKILL.md
R xwiki/skills/xwiki-ui-before-after/SKILL.md
R xwiki/skills/xwiki-ui-before-after/build-comparison-3col.py
R xwiki/skills/xwiki-ui-before-after/build-comparison.py
R xwiki/skills/xwiki-ui-before-after/element-screenshot.js
R xwiki/skills/xwiki-ui-before-after/expand-and-shoot.js
R xwiki/skills/xwiki-ui-before-after/export-to-png.js
R xwiki/skills/xwiki-ui-before-after/references/design-comparison.md
R xwiki/skills/xwiki-ui-before-after/references/gotchas.md
R xwiki/skills/xwiki-ui-before-after/references/release-notes-comparison.md
R xwiki/skills/xwiki-ui-before-after/setup-class-object.js
R xwiki/skills/xwiki-ui-before-after/setup-instance.sh
R xwiki/skills/xwiki-ui-before-after/setup-xar-instance.sh
R xwiki/skills/xwiki-ui-before-after/sync-static-resource.sh
R xwiki/skills/xwiki-ui-before-after/xwiki-login.js
Log Message:
-----------
[Misc] Narrow the UI-capture skill to the "before" screenshot, and gate it behind approval
Renames xwiki-ui-before-after to xwiki-capture-ui-change and reframes it around the one thing it
uniquely provides: the "before" screenshot the branch can no longer produce, because the fix is
already in the working tree. Everything else it did was either already available elsewhere or not
worth its cost.
* Scopes it to a fix to EXISTING UI whose visual difference is too subtle to see in a single
screenshot, and rules out new features, redesigns and anything visible at a glance - those need
no "before" at all. Requires the user's explicit approval before running, since a run costs a
Maven build and two instance restarts.
* Drops the composite-image machinery (both comparison builders, the PNG export, the design and
release-notes variants). Two images at native resolution, side by side in a markdown table, show
a subtle difference better than one wide composite that the reader's client scales down.
* Ends the procedure where the deliverable lands: attached to the JIRA issue, referenced from the
PR body by its attachment URL, per okf/servers/jira.md.
* Points the xwiki-pull-request "Screenshots & Video" rule at it, behind that same approval gate,
so the skill is reachable from the convention that asks for the image without ever running
unprompted.
* Removes the duplication a lean skill should not carry: the two setup scripts' shared usage,
Maven and worktree code moves to common.sh, setup-class-object.js uses the xwiki-login helper
instead of its own copy of the login boilerplate, and SKILL.md drops to 14KB from 32KB.
* Fixes what the review found broken: setsid is Linux-only (the jar path never started an instance
on macOS), the usage sed one-liner and mktemp --suffix are GNU-only, the jar path assumed
groupId org.xwiki.platform and ~/.m2/repository, sync-static-resource.sh died on an unbound
variable with no arguments, mvn ran without -B -ntp, and XWIKI_BASE_URL was ignored by the very
scripts step 0 exports it for.
* Sets the plugin version to 1.3.0 (minor: the plugin gains a skill).
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 91b29a3cb34d7ec740ec127c81a5ffacd4325ead
https://github.com/xwiki/xwiki-dev-llm/commit/91b29a3cb34d7ec740ec127c81a5f…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M .claude-plugin/marketplace.json
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
M xwiki/.mcp.json
M xwiki/okf/conventions/frontend.md
M xwiki/okf/index.md
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
M xwiki/skills/xwiki-doc-convert/SKILL.md
M xwiki/skills/xwiki-doc-convert/references/conversion-plan.md
M xwiki/skills/xwiki-doc-writing/tools/README.md
A xwiki/skills/xwiki-doc-writing/tools/docplan.py
M xwiki/skills/xwiki-doc-writing/tools/docshot.sh
M xwiki/skills/xwiki-fix-sonarqube-issue/SKILL.md
Log Message:
-----------
Merge remote-tracking branch 'origin/master' into xwiki-ui-before-after-skill
# Conflicts:
# .claude-plugin/marketplace.json
# kimi.plugin.json
# opencode.jsonc
# xwiki/.claude-plugin/plugin.json
Commit: 4584044c7960d627ddf27aed72b8c78ee606cc09
https://github.com/xwiki/xwiki-dev-llm/commit/4584044c7960d627ddf27aed72b8c…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-capture-ui-change/common.sh
Log Message:
-----------
[Misc] Let the capture skill's worktree cleanup succeed when there is nothing to remove
* Made remove_worktree an `if` rather than a `[ -d ... ] && git ...` one-liner, so it no longer
returns 1 on the HEAD path, where no worktree is ever created. Under the callers' `set -e` that
status aborted setup-instance.sh before it restarted the instance, and setup-xar-instance.sh
before it ran its --verify checks.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 7417e6b4dd7aad07a0f40fd42091fce58c4ef212
https://github.com/xwiki/xwiki-dev-llm/commit/7417e6b4dd7aad07a0f40fd42091f…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-capture-ui-change/SKILL.md
Log Message:
-----------
[Misc] Make the capture skill's pixel count optional rather than a hidden prerequisite
* Reworded step 4 so counting differing pixels is an optional cross-check guarded by
`command -v compare`, since the assertion log lines are already the authority and ImageMagick is
not listed in the skill's prerequisites.
* Bounded the two documented wait loops, which polled forever if the instance or the detached
setup-instance.sh died without writing the marker they grep for, and widened the second one's
pattern to the failure markers the script actually prints.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 0533e836f101f7278b1ef71b2d08f33cee69f9d4
https://github.com/xwiki/xwiki-dev-llm/commit/0533e836f101f7278b1ef71b2d08f…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-capture-ui-change/common.sh
M xwiki/skills/xwiki-capture-ui-change/setup-instance.sh
M xwiki/skills/xwiki-capture-ui-change/setup-xar-instance.sh
Log Message:
-----------
[Misc] Cut the Maven lookups the capture skill's jar and xar swaps repeat
* Resolved settings.localRepository once per run into LOCAL_REPO instead of per module, and passed
the caller's already-resolved artifactId and version into artifact_path.
* Built the XAR file name in setup-xar-instance.sh from the module's coordinates directly, since it
reads the XAR from the module's target/ and needs neither the groupId nor the repository root.
* Listed sync-static-resource.sh among common.sh's consumers in its header comment.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: d7185aeda760ac3b4c36d4b61654f425f012cc54
https://github.com/xwiki/xwiki-dev-llm/commit/d7185aeda760ac3b4c36d4b61654f…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M README.md
M kimi.plugin.json
M opencode.jsonc
M xwiki/.mcp.json
M xwiki/okf/servers/index.md
M xwiki/okf/servers/jenkins.md
Log Message:
-----------
Merge remote-tracking branch 'origin/master' into xwiki-ui-before-after-skill
# Conflicts:
# .claude-plugin/marketplace.json
# kimi.plugin.json
# opencode.jsonc
# xwiki/.claude-plugin/plugin.json
Commit: 6bf0540712e04cc77700cd922da1bf0920a037dd
https://github.com/xwiki/xwiki-dev-llm/commit/6bf0540712e04cc77700cd922da1b…
Author: LucasC <lucas.charpentier(a)xwiki.com>
Date: 2026-08-31 (Mon, 31 Aug 2026)
Changed paths:
M xwiki/skills/xwiki-capture-ui-change/common.sh
M xwiki/skills/xwiki-capture-ui-change/setup-instance.sh
M xwiki/skills/xwiki-capture-ui-change/setup-xar-instance.sh
Log Message:
-----------
[Misc] Clean up the capture skill's worktree on every exit path, and honour the admin credentials
* Installed remove_worktree as an EXIT trap in setup-instance.sh and setup-xar-instance.sh instead
of calling it after the swap and import loops, which a failed --verify exited past, leaving the
throwaway worktree registered. Combined it with the existing cookie-jar trap in the xar script,
since a second `trap ... EXIT` replaces rather than adds.
* Made remove_worktree tolerate an unset WORKTREE_DIR, so a trap armed before resolve_repo runs is
safe under `set -u`.
* Defaulted setup-xar-instance.sh's Basic credentials to XWIKI_ADMIN_USER and XWIKI_ADMIN_PASS,
which SKILL.md step 0 exports, keeping Admin:admin as the fallback and --user as the override.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: c51ad4a466bef82cd4b80e50fc4a7ca759cd61a0
https://github.com/xwiki/xwiki-dev-llm/commit/c51ad4a466bef82cd4b80e50fc4a7…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Drop the plugin version bump
* Five manifests carry one version, so every concurrent pull request conflicted with every other one
on those same five lines, over something that was never part of either change. The release is now
cut on master after the merge by scripts/release.mjs, and scripts/validate.mjs fails a branch that
touches a version field.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Compare: https://github.com/xwiki/xwiki-dev-llm/compare/338d33075b7f%5E...c51ad4a466…
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
Branch: refs/heads/fix-version-check-merge-base
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
01 Sep '26
Branch: refs/heads/claude/cool-tesla-6a1n0j
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: eb967d47a9ad01b7e01c9228c9756ecae6b73b20
https://github.com/xwiki/xwiki-dev-llm/commit/eb967d47a9ad01b7e01c9228c9756…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M .claude-plugin/marketplace.json
M kimi.plugin.json
M opencode.jsonc
M xwiki/.claude-plugin/plugin.json
Log Message:
-----------
[Misc] Drop the plugin version bump
* Five manifests carry one version, so every concurrent pull request conflicted with every other one
on those same five lines, over something that was never part of either change. The release is now
cut on master after the merge by scripts/release.mjs, and scripts/validate.mjs fails a branch that
touches a version field.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0
[xwiki/xwiki-dev-llm] 322aaa: [Misc] Compare a branch's plugin version against i...
by XWiki Notifications 01 Sep '26
by XWiki Notifications 01 Sep '26
01 Sep '26
Branch: refs/heads/master
Home: https://github.com/xwiki/xwiki-dev-llm
Commit: 322aaacea57d486e7d2e5b4924e31305a6cdf099
https://github.com/xwiki/xwiki-dev-llm/commit/322aaacea57d486e7d2e5b4924e31…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M scripts/validate.mjs
Log Message:
-----------
[Misc] Compare a branch's plugin version against its merge base, not master's tip
* Invariant 6 asked whether the branch's version differed from origin/master's tip, which answers the
wrong question now that master keeps releasing while a branch is open: a branch that forked at
1.1.7 and never touched a version field still differs from a master that has reached 1.5.1, so
every long-lived PR was told to revert a bump it never made. Compare against the merge base
instead, which is what "did this branch change the version?" actually means.
* Name the merge base and its version in the failure message, so the fix is unambiguous on a branch
whose fork point is far behind.
Co-Authored-By: Claude Opus 5 (1M context) <noreply(a)anthropic.com>
Commit: 8b7f693ae14f6866b429cd980624897a36803ba0
https://github.com/xwiki/xwiki-dev-llm/commit/8b7f693ae14f6866b429cd9806248…
Author: Vincent Massol <vincent(a)massol.net>
Date: 2026-09-01 (Tue, 01 Sep 2026)
Changed paths:
M scripts/validate.mjs
Log Message:
-----------
[Misc] Compare a branch's plugin version against its merge base, not master's tip
Compare: https://github.com/xwiki/xwiki-dev-llm/compare/422a726b2d2e...8b7f693ae14f
To unsubscribe from these emails, change your notification settings at https://github.com/xwiki/xwiki-dev-llm/settings/notifications
1
0