Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .well-known/agent-skills/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"type": "archive",
"description": "Phase-based WordPress project setup workflow with dry-run planning and confirmed apply for predictable scaffolding/standardization.",
"url": "https://soderlind.no/.well-known/agent-skills/prepare-wordpress.tar.gz",
"digest": "sha256:c0c7545687f6f8e7cb6e322b2ffde7ea87eface20008592031e7ba47f06d7b1a"
"digest": "sha256:dd7e7b2774f0fe5bf635e39c799840ed1262800dad35a9bdc5a3eeb3bf5c714d"
},
{
"name": "wp-bump",
Expand Down
Binary file modified .well-known/agent-skills/prepare-wordpress.tar.gz
Binary file not shown.
7 changes: 7 additions & 0 deletions plugins/wordpress-skills/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ All notable changes to `wordpress-skills` are documented here.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.2.0] - 2026-08-08

### Changed

- prepare-wordpress: installs agent skills from WordPress/agent-skills (the former automattic/agent-skills repo is archived).
- prepare-wordpress: default skill install trimmed to essentials (wp-plugin-development, wp-wpcli-and-ops); wp-block-development, wp-performance, and wordpress-router are now optional.

## [1.1.0] - 2026-08-08

### Added
Expand Down
2 changes: 1 addition & 1 deletion plugins/wordpress-skills/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "wordpress-skills",
"version": "1.1.0",
"version": "1.2.0",
"description": "WordPress development, testing, and release skills.",
"author": {
"name": "Per Soderlind",
Expand Down
31 changes: 23 additions & 8 deletions plugins/wordpress-skills/skills/prepare-wordpress/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: prepare-wordpress
description: "Phase-based WordPress project setup workflow with dry-run planning and confirmed apply for predictable scaffolding/standardization."
compatibility: "macOS/Linux with Node.js 18+, Composer 2+, PHP 8.3+, git. Optional: WP-CLI for i18n commands, curl for downloading coding instructions."
version: "1.3.0"
version: "1.4.0"
---

# Prepare WordPress Project
Expand Down Expand Up @@ -240,17 +240,32 @@ Completion criterion: Required init artifacts exist (`package.json`, `composer.j

### 2) Install agent skills

Install the following skills. Skip any that already exist under `~/.copilot/skills/` or `~/.agents/skills/`.
Install the **essential** WordPress development skills from
[WordPress/agent-skills](https://github.com/WordPress/agent-skills). Skip any
that already exist under `~/.copilot/skills/` or `~/.agents/skills/`.

```sh
npx skills add https://github.com/automattic/agent-skills --skill wp-plugin-development
npx skills add https://github.com/automattic/agent-skills --skill wp-block-development
npx skills add https://github.com/automattic/agent-skills --skill wordpress-router
npx skills add https://github.com/automattic/agent-skills --skill wp-performance
npx skills add https://github.com/automattic/agent-skills --skill wp-wpcli-and-ops
npx skills add https://github.com/WordPress/agent-skills --skill wp-plugin-development
npx skills add https://github.com/WordPress/agent-skills --skill wp-wpcli-and-ops
```

Completion criterion: Each listed skill is installed or explicitly skipped because it already exists.
**Optional** — offer these and install only the ones relevant to the project
(do not install by default):

```sh
# Gutenberg blocks (only if the plugin ships blocks)
npx skills add https://github.com/WordPress/agent-skills --skill wp-block-development
# Profiling / caching / query optimization
npx skills add https://github.com/WordPress/agent-skills --skill wp-performance
# Repo classification / routing to other skills
npx skills add https://github.com/WordPress/agent-skills --skill wordpress-router
```

> **Source moved:** these skills are maintained at `WordPress/agent-skills`. The
> former `automattic/agent-skills` repo is archived (read-only), so it no longer
> receives fixes.

Completion criterion: The essential skills are installed or skipped (already present); optional skills were offered and installed only if the user opted in.

### 3) Composer dependencies and scripts

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ import { detectProjectState } from "./detect_project.mjs";

const ALL_PHASES = ["plugin", "readme", "init", "skills", "composer", "config", "vitest", "eslint", "i18n", "instructions", "cleanup"];

const SKILL_SOURCE = "https://github.com/WordPress/agent-skills";
const ESSENTIAL_SKILLS = ["wp-plugin-development", "wp-wpcli-and-ops"];
const OPTIONAL_SKILLS = ["wp-block-development", "wp-performance", "wordpress-router"];

function parseArgs(argv) {
const opts = {
dryRun: true,
Expand Down Expand Up @@ -45,7 +49,8 @@ function parseArgs(argv) {

function buildPlan(state, phases) {
const items = [];
const skillsToInstall = Object.entries(state.skills).filter(([, installed]) => !installed).map(([name]) => name);
const essentialMissing = ESSENTIAL_SKILLS.filter((name) => !state.skills[name]);
const optionalMissing = OPTIONAL_SKILLS.filter((name) => !state.skills[name]);
const missingComposer = Object.values(state.composer).some((installed) => !installed);

const add = (phase, title, commands = [], notes = []) => {
Expand Down Expand Up @@ -82,11 +87,12 @@ function buildPlan(state, phases) {
if (state.git && !state.gitRemoteOrigin) initNotes.push("Manual: ask user for git remote URL, then run git remote add origin <remote-url>.");
add("init", initCommands.length > 0 ? "Initialize project files" : "Init phase already satisfied", initCommands, initNotes);

const skillCommands = skillsToInstall.map((name) => {

return `npx skills add https://github.com/automattic/agent-skills --skill ${name}`;
});
add("skills", skillCommands.length > 0 ? "Install missing agent skills" : "All agent skills already present", skillCommands, []);
const skillCommands = essentialMissing.map((name) => `npx skills add ${SKILL_SOURCE} --skill ${name}`);
const skillNotes = [];
if (optionalMissing.length > 0) {
skillNotes.push(`Optional (install only if relevant): ${optionalMissing.map((name) => `npx skills add ${SKILL_SOURCE} --skill ${name}`).join(" | ")}`);
}
add("skills", skillCommands.length > 0 || skillNotes.length > 0 ? "Install agent skills" : "All agent skills already present", skillCommands, skillNotes);

const composerCommands = [];
const composerNotes = [];
Expand Down
10 changes: 9 additions & 1 deletion scripts/build-agent-plugin.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const PLUGINS = [
distRepo: 'https://github.com/soderlind/wordpress-agent-plugin',
manifest: {
name: 'wordpress-skills',
version: '1.1.0',
version: '1.2.0',
description: 'WordPress development, testing, and release skills.',
author: { name: 'Per Soderlind', url: 'https://soderlind.no' },
homepage: 'https://github.com/soderlind/wordpress-agent-plugin',
Expand All @@ -34,6 +34,14 @@ const PLUGINS = [
},
// Newest first. Each entry becomes a section in CHANGELOG.md.
changelog: [
{
version: '1.2.0',
date: '2026-08-08',
changed: [
'prepare-wordpress: installs agent skills from WordPress/agent-skills (the former automattic/agent-skills repo is archived).',
'prepare-wordpress: default skill install trimmed to essentials (wp-plugin-development, wp-wpcli-and-ops); wp-block-development, wp-performance, and wordpress-router are now optional.',
],
},
{
version: '1.1.0',
date: '2026-08-08',
Expand Down
31 changes: 23 additions & 8 deletions skills/prepare-wordpress/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: prepare-wordpress
description: "Phase-based WordPress project setup workflow with dry-run planning and confirmed apply for predictable scaffolding/standardization."
compatibility: "macOS/Linux with Node.js 18+, Composer 2+, PHP 8.3+, git. Optional: WP-CLI for i18n commands, curl for downloading coding instructions."
version: "1.3.0"
version: "1.4.0"
---

# Prepare WordPress Project
Expand Down Expand Up @@ -240,17 +240,32 @@ Completion criterion: Required init artifacts exist (`package.json`, `composer.j

### 2) Install agent skills

Install the following skills. Skip any that already exist under `~/.copilot/skills/` or `~/.agents/skills/`.
Install the **essential** WordPress development skills from
[WordPress/agent-skills](https://github.com/WordPress/agent-skills). Skip any
that already exist under `~/.copilot/skills/` or `~/.agents/skills/`.

```sh
npx skills add https://github.com/automattic/agent-skills --skill wp-plugin-development
npx skills add https://github.com/automattic/agent-skills --skill wp-block-development
npx skills add https://github.com/automattic/agent-skills --skill wordpress-router
npx skills add https://github.com/automattic/agent-skills --skill wp-performance
npx skills add https://github.com/automattic/agent-skills --skill wp-wpcli-and-ops
npx skills add https://github.com/WordPress/agent-skills --skill wp-plugin-development
npx skills add https://github.com/WordPress/agent-skills --skill wp-wpcli-and-ops
```

Completion criterion: Each listed skill is installed or explicitly skipped because it already exists.
**Optional** — offer these and install only the ones relevant to the project
(do not install by default):

```sh
# Gutenberg blocks (only if the plugin ships blocks)
npx skills add https://github.com/WordPress/agent-skills --skill wp-block-development
# Profiling / caching / query optimization
npx skills add https://github.com/WordPress/agent-skills --skill wp-performance
# Repo classification / routing to other skills
npx skills add https://github.com/WordPress/agent-skills --skill wordpress-router
```

> **Source moved:** these skills are maintained at `WordPress/agent-skills`. The
> former `automattic/agent-skills` repo is archived (read-only), so it no longer
> receives fixes.

Completion criterion: The essential skills are installed or skipped (already present); optional skills were offered and installed only if the user opted in.

### 3) Composer dependencies and scripts

Expand Down
18 changes: 12 additions & 6 deletions skills/prepare-wordpress/scripts/plan_setup.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ import { detectProjectState } from "./detect_project.mjs";

const ALL_PHASES = ["plugin", "readme", "init", "skills", "composer", "config", "vitest", "eslint", "i18n", "instructions", "cleanup"];

const SKILL_SOURCE = "https://github.com/WordPress/agent-skills";
const ESSENTIAL_SKILLS = ["wp-plugin-development", "wp-wpcli-and-ops"];
const OPTIONAL_SKILLS = ["wp-block-development", "wp-performance", "wordpress-router"];

function parseArgs(argv) {
const opts = {
dryRun: true,
Expand Down Expand Up @@ -45,7 +49,8 @@ function parseArgs(argv) {

function buildPlan(state, phases) {
const items = [];
const skillsToInstall = Object.entries(state.skills).filter(([, installed]) => !installed).map(([name]) => name);
const essentialMissing = ESSENTIAL_SKILLS.filter((name) => !state.skills[name]);
const optionalMissing = OPTIONAL_SKILLS.filter((name) => !state.skills[name]);
const missingComposer = Object.values(state.composer).some((installed) => !installed);

const add = (phase, title, commands = [], notes = []) => {
Expand Down Expand Up @@ -82,11 +87,12 @@ function buildPlan(state, phases) {
if (state.git && !state.gitRemoteOrigin) initNotes.push("Manual: ask user for git remote URL, then run git remote add origin <remote-url>.");
add("init", initCommands.length > 0 ? "Initialize project files" : "Init phase already satisfied", initCommands, initNotes);

const skillCommands = skillsToInstall.map((name) => {

return `npx skills add https://github.com/automattic/agent-skills --skill ${name}`;
});
add("skills", skillCommands.length > 0 ? "Install missing agent skills" : "All agent skills already present", skillCommands, []);
const skillCommands = essentialMissing.map((name) => `npx skills add ${SKILL_SOURCE} --skill ${name}`);
const skillNotes = [];
if (optionalMissing.length > 0) {
skillNotes.push(`Optional (install only if relevant): ${optionalMissing.map((name) => `npx skills add ${SKILL_SOURCE} --skill ${name}`).join(" | ")}`);
}
add("skills", skillCommands.length > 0 || skillNotes.length > 0 ? "Install agent skills" : "All agent skills already present", skillCommands, skillNotes);

const composerCommands = [];
const composerNotes = [];
Expand Down
Loading