A small set of agentic AI skills I use for local development.
Warning
These skills are meant for local development only. They are NOT secure; quite the opposite.
These skills can be used as a Claude plugin — both with Claude Code (as local skills) and with Claude Desktop (via the Cowork feature) — and also with Codex and Qwen Code.
Many of those skills use Akeeba extensions or are written for the same. This repository is not affiliated with or endorsed by Akeeba Ltd.
Create or reset a local MySQL database and a matching local user with the same name and password.
- Example: "Create a local database named
mytest" - Action: Provisions database
mytest, creates user'mytest'@'localhost'with passwordmytest, and grants all privileges.
Download and install a specific or the latest stable version of Joomla 5+ into a local directory.
- Example: "Install Joomla 5 in
~/Sites/joomlatest" - Example: "Install Joomla 6.0.2 in
mysite" (will be installed in~/Sites/mysite) - Action: Downloads Joomla, extracts it, provisions a matching database (if not provided), and runs the CLI installation.
Take a backup of a local Joomla or WordPress site using Akeeba Backup.
- Example: "Take a backup of the site in
/var/www/html/mysite" - Example: "Run a backup for
~/Sites/joomlatestusing profile ID 2" - Action: Detects the CMS, verifies Akeeba Backup, and runs the CLI backup command.
Restore a Joomla or WordPress site from an Akeeba Backup archive using Akeeba Kickstart.
- Example: "Restore
site-backup.jpainto~/Sites/restoredsite" - Action: Extracts the archive using Kickstart, provisions a database (if not provided), and runs the restoration script.
Unblock localhost access (127.0.0.1 and ::1) in Admin Tools for Joomla or WordPress.
- Example: "Unblock me in
/var/www/html/mysite" - Action: Runs the Admin Tools CLI unblock commands for both IPv4 and IPv6 localhost addresses.
Retrieve a valid Joomla API token from a local development site.
- Example: "Get a Joomla API token for
~/Sites/joomlatest" - Action: Safely executes a script on the local site to retrieve an active Super User's API token.
These skills use the Joomla Web Services API and are restricted to local development sites only.
Manage Joomla's Global Configuration and component configurations.
- Example: "Get the global config for
~/Sites/mysite" - Example: "Update the debug setting on
~/Sites/mysite"
Manage Joomla content articles (list, get, create, update, delete).
- Example: "List all articles on
~/Sites/mysite"
Manage Joomla content categories.
- Example: "List content categories on
~/Sites/mysite"
Manage version history of Joomla content articles.
- Example: "Show version history for article 5 on
~/Sites/mysite"
Manage Joomla custom fields.
- Example: "List custom fields for
com_content.articleon~/Sites/mysite"
Manage Joomla custom field groups.
- Example: "List field groups for
com_content.articleon~/Sites/mysite"
Manage Joomla banners.
- Example: "List all banners on
~/Sites/mysite"
Manage Joomla banner categories.
- Example: "Create a banner category on
~/Sites/mysite"
Manage Joomla banner clients.
- Example: "List banner clients on
~/Sites/mysite"
Manage Joomla contacts and submit contact forms.
- Example: "List contacts on
~/Sites/mysite"
Manage Joomla contacts categories.
- Example: "List contacts categories on
~/Sites/mysite"
List and inspect installed Joomla extensions.
- Example: "List all extensions on
~/Sites/mysite"
Manage Joomla plugins (list, get, enable, disable).
- Example: "List all plugins on
~/Sites/mysite"
Manage Joomla core updates.
- Example: "Check for Joomla updates on
~/Sites/mysite" - Example: "Update Joomla on
~/Sites/mysite"
Manage Joomla content languages.
- Example: "List content languages on
~/Sites/mysite"
Manage Joomla language string overrides.
- Example: "List language overrides for
en-GB(site) on~/Sites/mysite"
List and install Joomla language packages.
- Example: "Install the French language pack on
~/Sites/mysite"
Manage Joomla media files and folders.
- Example: "List media adapters on
~/Sites/mysite" - Example: "Upload a file to
~/Sites/mysite"
Manage Joomla site menus.
- Example: "List site menus on
~/Sites/mysite"
Manage Joomla site menu items.
- Example: "List menu items in the main menu on
~/Sites/mysite"
Manage Joomla administrator menus.
- Example: "List administrator menus on
~/Sites/mysite"
Manage Joomla administrator menu items.
- Example: "List admin menu items on
~/Sites/mysite"
Manage Joomla private messages between users.
- Example: "List private messages on
~/Sites/mysite"
Manage Joomla site modules.
- Example: "List site modules on
~/Sites/mysite"
Manage Joomla administrator modules.
- Example: "List admin modules on
~/Sites/mysite"
Manage Joomla newsfeeds.
- Example: "List newsfeeds on
~/Sites/mysite"
Manage Joomla newsfeed categories.
- Example: "List newsfeed categories on
~/Sites/mysite"
Manage Joomla tags.
- Example: "List tags on
~/Sites/mysite"
Manage Joomla privacy (GDPR) requests and user consent records.
- Example: "List privacy requests on
~/Sites/mysite" - Example: "Export request 3 on
~/Sites/mysite"
Manage Joomla URL redirects.
- Example: "List redirects on
~/Sites/mysite"
Create a Joomla 5 Cassiopeia child template, with optional automatic OS-preference dark/light mode support via prefers-color-scheme.
- Example: "Create a child template called
cassiopeia_mythemefor~/Sites/mysite" - Example: "Create a Cassiopeia child template with dark mode support for
~/Sites/mysite" - Action: Scaffolds the child template directory, writes
templateDetails.xml, registers the template, and creates auser.csswith brand colour variables and an optional dark mode block.
Manage Joomla template styles.
- Example: "List site template styles on
~/Sites/mysite"
Manage Joomla users, user groups, and viewing access levels.
- Example: "List users on
~/Sites/mysite" - Example: "Create a user group on
~/Sites/mysite"
These skills use the Joomla CLI (cli/joomla.php) and are preferred over API skills when working on local sites.
Manage a local Joomla site via CLI — take it online/offline, clean cache, rebuild Smart Search index, check the database, and run session garbage collection.
- Example: "Take
~/Sites/mysiteoffline" - Example: "Clear the cache for
~/Sites/mysite"
Read or set Joomla Global Configuration options via the Joomla CLI.
- Example: "Get the config for
~/Sites/mysite" - Example: "Enable debug mode on
~/Sites/mysite"
Manage Joomla core updates via the CLI — check for updates, set update channel, perform update, and manage the automated update service registration.
- Example: "Check for Joomla updates on
~/Sites/mysite" - Example: "Update Joomla on
~/Sites/mysite"
Export or import the Joomla database via the CLI (SQL files or ZIP archive).
- Example: "Export the database of
~/Sites/mysitetobackup.sql" - Example: "Import
backup.sqlinto~/Sites/mysite"
Manage Joomla extensions via the CLI — list, install from path or URL, remove, discover, and install discovered extensions.
- Example: "List extensions on
~/Sites/mysite" - Example: "Install
/tmp/myextension.zipon~/Sites/mysite"
Manage Joomla users via the CLI — list, add, delete, reset passwords, and manage groups.
- Example: "Add user
johnto~/Sites/mysite" - Example: "Reset password for
adminon~/Sites/mysite"
Manage and run Joomla scheduled tasks via the CLI — list tasks, run due tasks, and enable/disable/trash tasks.
- Example: "Run due scheduled tasks on
~/Sites/mysite" - Example: "List all scheduled tasks on
~/Sites/mysite"
These skills use the Joomla CLI to manage specific third-party Akeeba extensions.
Retrieve or reset the Akeeba Panopticon API connection token for a Joomla Super User.
- Example: "Get the Panopticon token for
adminon~/Sites/mysite" - Example: "Reset the Panopticon token for
adminon~/Sites/mysite"
Regenerate Akeeba DocImport category content from DocBook 5+ XML sources.
- Example: "Regenerate all DocImport categories on
~/Sites/mysite" - Example: "Force-regenerate DocImport category 3 on
~/Sites/mysite"
Manage Akeeba Ticket System (ATS) — view/change config and run CRON tasks.
- Example: "Show ATS config on
~/Sites/mysite" - Example: "Run ATS CRON tasks on
~/Sites/mysite"
Manage GDPR-compliant user account deletion and lifecycle notifications via Akeeba DataCompliance.
- Example: "Delete user
johnfrom~/Sites/mysitein compliance with GDPR" - Example: "Send lifecycle notifications on
~/Sites/mysite"
Manage Admin Tools for Joomla — WAF config, IP block/allow lists, bad words, server config file generation, and security scanning.
- Example: "Run a security scan on
~/Sites/mysite" - Example: "Show the WAF rules for
~/Sites/mysite"
Manage Akeeba Backup for Joomla — take backups, manage backup records, profiles, filters, logs, and settings. Preferred over the backup skill for local Joomla sites.
- Example: "Take a backup of
~/Sites/mysite" - Example: "List backup records for
~/Sites/mysite"
Before building the plugin, copy env.sample to .env and fill in your own values:
cp env.sample .envThe .env file is used by package.sh to substitute placeholders in the skill definitions at build time, so the generated plugin contains your actual settings.
| Variable | Description |
|---|---|
MYSQL_ADMIN_USER |
Username for an admin-capable MySQL/MariaDB account used to create databases and users. This is usually (but not necessarily) the root account. |
MYSQL_ADMIN_PASSWORD |
Password for the admin-capable MySQL/MariaDB account above. |
JOOMLA_SITES_DIR |
Path to the directory where local Joomla sites are created, e.g. ~/Sites. Used as the default parent directory when installing Joomla or working with sites. |
JOOMLA_SITE_DOMAIN |
The local domain suffix for your development sites, e.g. example.test. Used to construct site URLs such as http://mysite.example.test. |
JOOMLA_ADMIN_NAME |
Full display name for the Joomla Super Administrator account created during installation, e.g. Jane Doe. |
JOOMLA_ADMIN_USERNAME |
Username for the Joomla Super Administrator account, e.g. janedoe. |
JOOMLA_ADMIN_PASSWORD |
Password for the Joomla Super Administrator account. |
JOOMLA_ADMIN_EMAIL |
Email address for the Joomla Super Administrator account. |
Note
The .env file is listed in .gitignore and is never included in the built plugin ZIP. It stays local to your machine.
Prerequisites: bash, rsync, zip.
# 1. Configure your environment
cp env.sample .env
# Edit .env with your values
# 2. Build
bash package.shThis produces devskills.zip in the project root. The build process:
- Loads your
.envvalues. - Copies the skill files into a temporary staging directory.
- Substitutes all
{{VARIABLE}}placeholders in eachSKILL.mdwith your values. - Zips the result (excluding
.env,env.sample, and other source-only files).
The skill files contain {{VARIABLE}} placeholders that must be substituted before use. Claude Code does not install plugins directly from ZIP files, so the installer builds the plugin and extracts it into a local plugin marketplace for you.
./install-claude.shThis rebuilds devskills.zip, extracts it into ~/.claude-plugins/devskills/, registers it in a local
Claude Code plugin marketplace (~/.claude-plugins/.claude-plugin/marketplace.json), and installs/updates
the plugin via the claude CLI. Run /reload-plugins in Claude Code afterwards (or restart it).
Rerun ./install-claude.sh after every edit — it rebuilds from source each time.
To load it for a single session instead, without installing it permanently:
bash package.sh
mkdir -p ~/claude-plugins/devskills
unzip devskills.zip -d ~/claude-plugins/devskills
claude --plugin-dir ~/claude-plugins/devskills./install-codex.shThis rebuilds devskills.zip, installs a clean copy under ~/plugins/devskills/, registers it in your
personal Codex plugin marketplace (~/.agents/plugins/marketplace.json), and installs it via the
codex CLI. Start a new Codex conversation to load it.
Rerun ./install-codex.sh after every edit.
./install-qwen.shThis rebuilds devskills.zip, extracts it into ~/.qwen-plugins/devskills/, and links that directory
into Qwen Code via qwen extensions link. Restart Qwen Code to pick up the link.
Rerun ./install-qwen.sh after every edit — the linked directory is a build output, not the source
tree, since the source SKILL.md files still contain unsubstituted {{VARIABLE}} placeholders.
Claude Desktop supports uploading a custom plugin ZIP via the Cowork feature.
- Build the plugin ZIP:
bash package.sh
- Open Claude Desktop.
- Navigate to Cowork (or the plugins/integrations settings panel).
- Choose Upload custom plugin and select the
devskills.zipfile produced by the build step. - Claude will load the skills from the plugin and make them available in your conversations.
Warning
The built ZIP embeds your .env values (admin credentials, site paths, domain). Do not share the ZIP with others.