
Wp Project Triage
Inspect an unfamiliar WordPress plugin, theme, block theme, or core-adjacent repo and get a structured JSON report of project kind, tooling, tests, and version hints before you edit or run commands.
Overview
WP Project Triage is an agent skill most often used in Build (also Ship, Operate) that runs a filesystem detector and returns structured JSON describing WordPress project kind, tooling, tests, and version hints before yo
Install
npx skills add https://github.com/wordpress/agent-skills --skill wp-project-triageWhat is this skill?
- Runs `node skills/wp-project-triage/scripts/detect_wp_project.mjs` to emit deterministic JSON to stdout
- Output contract documented in `references/triage.schema.json` with `project.kind`, `signals`, and `tooling`
- Classifies plugin, theme, block theme, WP core, Gutenberg, or full-site shapes from filesystem signals
- Surfaces PHP/Node tooling, test presence, and version hints to pick the right follow-on workflow
- Explicit failure guidance: fix `unknown` at repo root or extend the detector instead of guessing
- JSON output must include project.kind, signals, and tooling per the skill verification section
- Compatibility stated for WordPress 6.9+ (PHP 7.2.24+)
- Detector entrypoint: detect_wp_project.mjs with triage.schema.json contract
Adoption & trust: 1.7k installs on skills.sh; 1.6k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You opened a WordPress repo and do not know whether it is a plugin, theme, block theme, or toolchain mix—or which test and build commands are safe to run.
Who is it for?
Solo builders onboarding to inherited WordPress plugins, themes, or block libraries who want agent-readable repo metadata before edits.
Skip if: Greenfield apps with no WordPress layout, or teams that already maintain an up-to-date internal repo map and do not need filesystem detection.
When should I use this skill?
You need a deterministic inspection of a WordPress repository (plugin/theme/block theme/WP core/Gutenberg/full site) including tooling/tests/version hints, and a structured JSON report to guide workflows and guardrails.
What do I get? / Deliverables
You get a schema-backed JSON triage report you can use to choose WordPress workflows and guardrails instead of guessing project structure.
- Structured JSON triage report on stdout
- Identified project kind and tooling signals for downstream workflows
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Build is the canonical shelf because triage is meant to run at repo entry before implementation, scaffolding, or refactors on WordPress code. Integrations fits CMS extension repos (plugins, themes, Gutenberg blocks) where agents must align with PHP/Node tooling and project-specific guardrails.
Where it fits
Run triage on a new client plugin repo to see PHP CS tooling and block.json before implementing a feature.
Confirm a checkout is a block theme with Node build scripts before editing templates or `theme.json`.
Check whether PHPUnit or Playwright configs are present so you know which test commands to run pre-release.
Re-run detection after a monorepo restructure added Gutenberg packages so agent guardrails stay current.
How it compares
Use instead of ad-hoc `ls` and README skimming when you need a consistent JSON contract for agent workflows.
Common Questions / FAQ
Who is wp-project-triage for?
Solo and indie developers using Claude Code, Cursor, or similar agents on WordPress plugin, theme, or Gutenberg repos who need deterministic structure before coding.
When should I use wp-project-triage?
Use it at the start of Build work on a WP extension repo, before Ship when you need to see if tests exist, and during Operate when tooling or `theme.json`/`block.json` layout changed and guardrails must be refreshed.
Is wp-project-triage safe to install?
It runs local filesystem inspection via bash and Node; review the Security Audits panel on this Prism page before trusting it on sensitive client codebases.
SKILL.md
READMESKILL.md - Wp Project Triage
# WP Project Triage ## When to use Use this skill to quickly understand what kind of WordPress repo you’re in and what commands/conventions to follow before making changes. ## Inputs required - Repo root (current working directory). ## Procedure 1. Run the detector (prints JSON to stdout): - `node skills/wp-project-triage/scripts/detect_wp_project.mjs` 2. If you need the exact output contract, read: - `skills/wp-project-triage/references/triage.schema.json` 3. Use the report to select workflow guardrails: - project kind(s) - PHP/Node tooling present - tests present - version hints and sources 4. If the report is missing signals you need, update the detector rather than guessing. ## Verification - The JSON should parse and include: `project.kind`, `signals`, and `tooling`. - Re-run after changes that affect structure/tooling (adding `theme.json`, `block.json`, build config). ## Failure modes / debugging - If it reports `unknown`, check whether the repo root is correct. - If scanning is slow, add/extend ignore directories in the script. { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://agentskills.local/wp-project-triage/triage.schema.json", "title": "WP Project Triage Report", "type": "object", "required": ["tool", "project", "signals", "tooling"], "properties": { "tool": { "type": "object", "required": ["name", "version"], "properties": { "name": { "type": "string", "const": "detect_wp_project" }, "version": { "type": "string" } }, "additionalProperties": true }, "project": { "type": "object", "required": ["kind"], "properties": { "kind": { "type": "array", "items": { "type": "string", "enum": [ "unknown", "wp-plugin", "wp-mu-plugin", "wp-theme", "wp-block-theme", "wp-block-plugin", "wp-site", "wp-core", "gutenberg" ] } }, "primary": { "type": "string" }, "notes": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": true }, "signals": { "type": "object", "required": ["paths"], "properties": { "paths": { "type": "object", "properties": { "repoRoot": { "type": "string" }, "wpContent": { "type": "string" }, "pluginsDir": { "type": "string" }, "themesDir": { "type": "string" } }, "additionalProperties": true } , "usesInteractivityApi": { "type": "boolean" }, "usesAbilitiesApi": { "type": "boolean" }, "usesInnerBlocks": { "type": "boolean" }, "usesWpCli": { "type": "boolean" }, "performanceHints": { "type": "object", "additionalProperties": true }, "interactivityHints": { "type": "object", "additionalProperties": true }, "abilitiesHints": { "type": "object", "additionalProperties": true }, "innerBlocksHints": { "type": "object", "additionalProperties": true }, "wpCliHints": { "type": "object", "additionalProperties": true } }, "additionalProperties": true }, "tooling": { "type": "object", "required": ["php", "node", "tests"], "properties": { "php": { "type": "object", "properties": { "hasComposerJson": { "type": "boolean" }, "hasVendorDir": {