Conversation
Closes #1. - Extract Editor API, Form Fields, Testing, and Common Gotchas from skills/joomla/SKILL.md into dedicated references/*.md files. Each in-file section becomes a short pointer stub. SKILL.md drops from 3594 to ~2434 lines without losing content. - Correct PHP requirement against manual.joomla.org for Joomla 6.x: minimum and supported = 8.3.0, recommended = 8.4. Update headline plus four code examples (changelog note, update-server XML, install-script $minimumPhp, composer.json) from 8.2 to 8.3. $minimumJoomla declares which Joomla versions an extension supports and is independent of $minimumPhp; a J6-native extension that also supports J5.x must still pin PHP to 8.3.0 (the J6.x floor). - Extend the Quick Start cross-reference list with the four new reference files. - CHANGELOG [Unreleased] documents the splits and the PHP correction.
The skill is generic Joomla 5+/6 guidance; it shouldn't lean on specific third-party extension code or naming conventions as canonical examples. - SKILL.md L507/L509/L2390: CwmBooking/cwmmessages/Cwm prefix → vendor-neutral AcmeBooking/bookings/<Vendor> placeholders. - references/module.md L278: Proclaim example → generic "larger Joomla projects". Joomla-Bible-Study/claude-skill-joomla in SKILL.md:38 stays — that's the canonical home of the skill itself, not borrowed code. CHANGELOG [Unreleased] gets a [Fixed] entry.
…l three gaps, fix typos (#9) Closes #2. Splits and shared extractions: - references/component-router.md — 304-line Router (SEF URLs) walkthrough. - references/install-script.md — install/update lifecycle (cross-cutting: component/module/plugin all use the same hooks; class names differ). - references/language-files.md — naming, key prefixes, plurals, .sys.ini vs .ini, Text::script() registration (cross-cutting). - references/service-provider.md — universal services/provider.php pattern (cross-cutting; per-type factories differ). - references/manifest.md — universal <extension> elements (cross-cutting; type-specific blocks delegated to each type's reference). component.md keeps stubs/cross-link intros at the same anchors. Content gaps closed: - Language Files section (was a complete gap — manifest declared <languages> but no .ini content shown). - Database Schema & Migrations (was a complete gap — manifest declared <install>/<schemas> but no SQL shown). Includes install.mysql.utf8.sql, per-version updates/mysql/X.Y.Z.sql, DDL-only/idempotent/no-rollback rules, #__schemas tracking. - Other View Types subsection (JsonView, RawView, FeedView). Cross-references between Install/Update Script and Database Schema & Migrations (the two halves of the install system) so neither section reads like an independent topic. Bug fixes: - Two @var type-hints used \Namespace\Component\Example\… (typo); changed to \Vendor\… so IDEs resolve. - CustomlistField example missing use Joomla\CMS\HTML\HTMLHelper. - Install-script $minimumPhp example bumped 8.2.0 → 8.3.0 (J6.x floor). CHANGELOG [Unreleased] updated.
) Joomla 6.1 deprecates passing DispatcherInterface to CMSPlugin::__construct (joomla-cms PR #46683). Old form still works but emits E_USER_DEPRECATED and will be removed in J7.0. - references/plugin.md service-provider example: single-arg instantiation, no DispatcherInterface import or lookup. Matches the migrated plg_captcha_powcaptcha provider in core. - New "Joomla 6.0 / 6.1 / 7.0 — dispatcher constructor change" callout with the verbatim deprecation message, a permalink to the upstream CMSPlugin.php on 6.1-dev, and the legacy-two-arg form documented for J5/J6.0 backward compat. - Dead use Joomla\Event\DispatcherInterface; removed from the plugin class example. - references/service-provider.md plugin row updated. Tracks #11.
… verification (#13) Closes #3. - Cross-references to all four shared refs added (manifest, language-files, service-provider, install-script). New Language Files section, new Install Script (Optional) section, intros on Manifest XML and Service Provider. - Web Asset Manager registration subsection inside Dispatcher (useStyle/ useScript against joomla.asset.json, Text::script() registration). - Caching section (default per-instance keying, URL- and session-state edge cases, no dispatcher-level public cache-key hook). - Joomla 6.1 capabilities section (Versions for Modules / UCM history, #__extensions.custom_data column). - Verified AbstractModuleDispatcher and mod_articles_news provider against joomla-cms 6.1-dev — both unchanged for 6.1; permalinks captured. - Module dispatchers don't extend CMSPlugin, so the J6.1 plugin-constructor deprecation (#12) does not affect modules. CHANGELOG [Unreleased] updated under issue #3 audit subsection.
…oloadLanguage, pitfalls, J6.1 verify (#14) Closes #4. Bug fixes: - Manifest <language> path was en-GB/plg_content_example.ini (legacy admin-installed naming). Fixed to en-GB/en-GB.plg_content_example.ini (locale-prefixed source-tree naming) per language-files.md. Added the missing .sys.ini line — most plugins ship both runtime and .sys.ini. - Plugin class example now declares protected $autoloadLanguage = true; Without it, runtime PLG_* keys render as raw strings. Cross-references to shared refs (cross-cutting principle from #2): - Manifest XML and Service Provider sections get cross-link intros. - New Language Files section: PLG_<GROUP>_<ELEMENT>_*, locale-prefix rule, $autoloadLanguage requirement, task-plugin _TITLE/_DESC suffix rule. - New Install Script (Optional) section pointer to install-script.md. New Common Pitfalls section covering seven highest-frequency plugin install/load failure modes. J6.1 verification (continuous): - getSubscribedEvents() shape verified against plg_content_pagebreak on 6.1-dev — string event-name keys, no class constants. - ContentEvent abstract base on 6.1-dev confirmed to deliberately NOT define ON_* constants. Typed event classes (ContentPrepareEvent etc.) exist only as handler-parameter types, not as keys for getSubscribedEvents(). - Initial audit flagged events-as-strings as drift; upstream verification shows the skill's pattern matches core. Docblock added explaining the distinction. Dispatcher-constructor change from PR #12 unchanged — that callout was already correct. CHANGELOG [Unreleased] updated under issue #4 audit subsection.
…all-script sections, J6.1 verify (#15) Closes #5. - Added Table of Contents (file had none) with cross-link annotations on each line that delegates to a shared reference (manifest, language-files, install-script). - Manifest XML: cross-link intro to manifest.md for universal <extension> elements; library-specific bits (<libraryname>, <files folder=...>) stay inline. Verified element handling against LibraryAdapter on 6.1-dev. - Language Files: replaced inline duplication with a stub delegating to language-files.md; preserved library-specific reminders (.sys.ini-only is common; locale-prefixed source filename). - New Versioning & Updates section: universal <version>/<updateservers> flow applies; <update><schemas> is component-only; PHP-level migrations belong in consuming extensions; <targetplatform> regex guidance. - New Install Script (Optional) section: libraries DO support <scriptfile> (verified via LibraryAdapter); class-naming Lib<Element>InstallerScript follows the shared pattern in install-script.md. J6.1 verification: LibraryAdapter on 6.1-dev unchanged; no items in the J6.1 milestone affect libraries. CHANGELOG [Unreleased] gets new Added / Verified entries under the issue #5 audit subsection.
…tplatform regex example (#16) Closes the remaining sections of #11. SKILL.md § Canonical sources: - 5.3-dev / 6.0-dev → 6.1-dev (default for new J6 code) + 6.2-dev + 5.4-dev + 7.0-dev. Verified against /branches on 2026-04-30 (post-J6.1). - All five tree/6.0-dev/... permalinks updated to tree/6.1-dev/... - Re-verification note added. SKILL.md frontmatter description: - Trigger keywords extended: Joomla 5.4 / 6.1 / 6.2 / 7 alongside the existing Joomla 5 / Joomla 6. Update-server <targetplatform> regex: - Primary example bumped 5\.[0-9]+ → 6\.[0-9]+ to align with the skill's natively-J6 framing. - Prose rewritten to show all three useful regexes (J6-only, J5-only, J5/J6 dual-support). CHANGELOG [Unreleased] gets a Changed (issue #11) subsection.
…stency (#17) Surface the five shared references (manifest.md, install-script.md, language-files.md, service-provider.md, component-router.md) in SKILL.md's index — they were extracted in PRs #9/#13/#14/#15 and linked from per-type files but never indexed in SKILL.md itself. Add deferral pointers at the head of SKILL.md's Service Provider, Language Files, Manifest XML, and Install/Update Script sections so shared content has one canonical home and the inline component-flavored examples are explicitly framed as type-specific. Harmonize SKILL.md's install-script preflight example with the canonical Log::add(..., 'jerror') pattern in install-script.md; was using \$adapter->getParent()->abort(...) which is also valid but is the kind of "same situation, two patterns" drift issue #6 is meant to catch. Verified (no changes needed): per-extension service-provider / install-script / language-files sections in component.md, module.md, plugin.md, library.md all defer correctly to the shared references. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Trigger-phrase audit (#6): expand frontmatter keyword coverage Brainstormed 15 realistic Joomla prompts and checked each against the current frontmatter description; misses concentrated in 5 areas: - J3 / J4 / J5 / J6 / J7 shorthand (substring of "Joomla 5" doesn't catch "J5") - install script / scriptfile - WAM / Web Asset Manager / joomla.asset.json / useScript / useStyle - layout override / template override - plugin subtypes: task plugin / scheduled tasks / webservices / finder / schemaorg / SubscriberInterface / CMSPlugin Added these inline; also added "Joomla libraries" (the library extension type was missing) and the SEF router contract. Two more example trigger phrases added to sentence 4. No restructuring — existing prose pattern preserved. Over-triggering risk on non-Joomla PHP work checked: every potentially-generic keyword (service providers, DI, MVC, manifest) appears with a Joomla qualifier in the same sentence, and the description repeats "Joomla" 22 times. No SKIP / negative-trigger sentence added — revisit if observed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Drop J3 / J4 from shorthand list — skill is Joomla 5+ only Listing J3 / J4 alongside J5 / J6 / J7 as a flat shorthand list signaled support for Joomla 3 and 4. The skill explicitly targets Joomla 5+ (natively J6, backward compatible with J5), so triggering on bare "J3" or "J4" prompts would mislead users into thinking the skill applies to those versions. Migration prompts like "migrate my J3 component to J5" still trigger via the J5 keyword, so realistic coverage isn't lost. Updated CHANGELOG entry to document the deliberate exclusion. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…or (#19) Comprehensive grep of SKILL.md and references/*.md for inadvertent uses of APIs the skill flags as "Never use". Found 3 real slips: - references/editor-api.md (×2) and references/component.md (×1) used filter="JComponentHelper::filterText" in form-field XML examples. Replaced with the FQCN form, "\Joomla\CMS\Component\ComponentHelper ::filterText", verified against joomla-cms 6.1-dev's article.xml in com_content (which uses the FQCN). The legacy J-prefix alias still resolves on J5/J6 but is slated for removal with the rest of the legacy class aliases. Also scoped the SKILL.md deprecation table entry for getError/setError to "on models (BaseDatabaseModel)". The previous unscoped entry could be misread to imply that Table::check()'s setError + return false validation pattern is also deprecated, but it isn't — verified against joomla-cms 6.1-dev's Joomla\CMS\Table\Content::check() which uses the exact same shape. Verified existing BC labels are clear (plugin constructor J6.1+, editor API legacy proxy). Sweep is not exhaustive across joomla-cms 6.2-dev / 7.0-dev — that's noted as a follow-up audit candidate. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Re-fetched every joomla/joomla-cms permalink cited in SKILL.md and references/*.md against 6.1-dev HEAD. Every URL resolves and every cited claim still matches. Verified: - 5 file-content claims (mod_articles_news service provider triple, AbstractModuleDispatcher constructor + getLayoutData shape, CMSPlugin J6.1 single-arg constructor + deprecation message text, LibraryAdapter parses libraryname/manifest_script, pagebreak getSubscribedEvents() string keys) - 3 release/PR/milestone references (PRs #46772, #46622, milestone 148 for Joomla 6.1.0 released 2026-04-14) - 6 tree-browse references (components, plugins, modules, libraries paths under 6.1-dev) No skill content changes — this is a pure verification pass. Findings documented in CHANGELOG with a per-citation matrix so the next sweep can run the same checks. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
) Compared the skill's plugin coverage against joomla-cms 6.1-dev's 24 plugin groups. The skill walks 10 in depth (content, system, finder, task, webservices, schemaorg, user, installer, editors, editors-xtd) and indirectly covers component-side workflow + form-field XML + JoomlaEditor JS API. The remaining 14 are niche enough that going deep on each would bloat the skill without serving the typical extension developer. Added a new "Other plugin groups (not covered in depth here)" subsection to plugin.md right after the common-groups table. Each of the 14 uncovered groups gets a one-line "what it's for" description so users can see at a glance what's in/out of scope and decide whether to file an issue requesting depth on a specific one. Also called out CLI / `joomla console` command authoring as out-of-scope for v0.x — it isn't a plugin group, but it's a common J5+ question that the skill currently doesn't address. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The Markdown source backing manual.joomla.org. Useful when grepping, fetching raw, or citing a permalink to a specific page; documentation corrections also go here as PRs. Paired with the existing rendered-site entry under SKILL.md § Canonical sources, and surfaced in the README's sources list. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
# Conflicts: # CHANGELOG.md # README.md # skills/joomla/SKILL.md
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bring the v0.2.0 — content audit milestone into
mainand realign the entire skill against the Joomla 6.1 release (released 2026-04-14,joomla-cms6.1-devis the new default reference branch). Closes the audit campaign that tracked through issues #1–#5, #6, and #11 across 14 merged PRs.Two things land together
1. Joomla 6.1 alignment (issue #11 + every per-section audit's verification step)
J6.1 was released 2026-04-14 — after this skill's v0.1.0 cut. The release ships:
6.1-dev) replacing6.0-devas the default reference branch.5.4-dev(current released J5 line),6.2-dev(next J6 minor),7.0-dev(next major) branch list —5.3-devand6.0-devare no longer active.CMSPlugin::__construct(DispatcherInterface, $config)deprecation: J6.1 single-arg form is now canonical, two-arg form emitsE_USER_DEPRECATEDand is removed in J7.0 (PR J6.1 plugin constructor: drop DispatcherInterface arg (deprecation) #12).#__ucm_history(PR #46772),#__extensions.custom_dataJSON column (PR #46622), both shipped in milestone 148.<targetplatform>regex examples updated for J5/J6/dual-support, frontmatter trigger phrasing extended to J6.1/J6.2/J7.Every example in
SKILL.mdand the 14 reference files is verified againstjoomla-cms6.1-devHEAD; PR #20 re-checked all 14 cited permalinks on 2026-04-30 and confirmed zero drift.2. Content audit (issue #6 meta + #1–#5 per-section)
Same skill, same scope, but every section walked end-to-end and the cross-cutting bits extracted into shared references. Token cost per skill load is meaningfully lower —
SKILL.mdshrunk by ~1180 lines as Editor API / Form Fields / Testing / Common Gotchas moved into on-demandreferences/*.md. No breaking changes.What landed in this release
Per-section audits
SKILL.mdaudit (issue Audit: SKILL.md (top-level guidance) #1)references/component.mdaudit (issue Audit: references/component.md #2): split router into its own reference, extract 4 cross-cutting shared refs (manifest.md,service-provider.md,language-files.md,install-script.md)references/module.mdaudit (issue Audit: references/module.md #3)references/plugin.mdaudit (issue Audit: references/plugin.md #4)references/library.mdaudit (issue Audit: references/library.md #5)Meta-audit (issue #6)
J5/J6/J7shorthand added;J3/J4deliberately excluded since the skill is Joomla 5+ only)\Joomla\CMS\Component\ComponentHelper::filterTextreplacesJComponentHelper::filterTextlegacy alias)joomla-cmsHEAD diff: zero drift across 14 cited permalinksplugin.mdsubsectionOther
github.com/joomla/Manual(Markdown source backingmanual.joomla.org) to Canonical sourcesmainintodevelopin this PR resolves the early-bootstrap PR Add canonical sources section to SKILL.md #7 that landed directly onmainbeforedevelopbecame the integration target. develop's expanded canonical-sources content was kept; main's older one-line description was superseded.Changelog
Full entry-by-entry list is in
CHANGELOG.mdunder[Unreleased]. After this PR merges, the release stamp commit onmainwill:[Unreleased]→[0.2.0] — 2026-04-30marketplace.jsonreffromv0.1.0→v0.2.0so/plugin updatedelivers the new versionv0.2.0, release workflow auto-publishesTest plan
bash scripts/validate.shpasses on every merged PRjoomla-cmspermalinks resolve and content matches (joomla-cms HEAD diff (#6): re-verify all 14 permalinks, zero drift #20)main, tagv0.2.0, release workflow auto-publishesCloses
Closes #1, closes #2, closes #3, closes #4, closes #5, closes #11.
(Issue #6 already closed; #7, #8, #9, #10, #12 → #16 are PR numbers, not issues.)
🤖 Generated with Claude Code