Skip to content
Back to skills

Build Ability

ASecurity

Generate a complete ability through an interview-driven workflow

  • 28 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 12, 2026
toolsphpbashfrontendbackend

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add pluginslab/wp-agentic-admin --skill build-ability --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Build Ability?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Build Ability
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/pluginslab-build-ability/badge)](https://www.skillsdirectory.com/skills/pluginslab-build-ability)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: build-ability
description: Generate a complete ability through an interview-driven workflow
argument-hint: "<ability-name>"
allowed-tools: "Bash(npm *), Bash(npx *), Bash(composer *), Read, Write, Edit, Grep, Glob"
---

# Build Ability

Generate a complete WP-Agentic-Admin ability (PHP backend + JS frontend + index + tests) through an interview-driven workflow. If the user provides an ability name with the command (e.g., `/build-ability theme-list`), use it directly.

## Workflow

### Phase 1: Gather Requirements

If no ability name was provided, ask for it (kebab-case format).

Then ask these questions (batch into 1-2 messages, skip any already answered):

1. **What does this ability do?** (one sentence)
2. **What would a user say to trigger it?** (3-5 natural language examples)
3. **Operation type?**
   - Read-only (just reads data, e.g. list plugins)
   - Write (modifies something reversible, e.g. flush cache)
   - Destructive (may lose data or break things, e.g. deactivate plugin)
4. **Does it need input parameters?** If yes, what are they? Which are required vs optional?
5. **Is this a WordPress core wrapper?** (JS-only, no PHP — for `core/*` abilities)
6. **Does it belong to a family?** (e.g., another plugin-* or user-* ability with existing shared helpers)

Derive from the answers:
- `readonly`, `destructive`, `idempotent` annotations
- Whether `requiresConfirmation` is needed
- Whether `parseIntent` is needed (if input comes from natural language)
- Whether shared helpers should be created or reused
- The `permission_callback` capability (default: `manage_options`)

### Phase 2: Read Existing Patterns

Before generating code, read these files to match project conventions:

1. An existing ability closest to the new one's type:
   - Read-only: `src/extensions/abilities/plugin-list.js` + `includes/abilities/plugin-list.php`
   - Write: `src/extensions/abilities/cache-flush.js` + `includes/abilities/cache-flush.php`
   - Destructive: `src/extensions/abilities/revision-cleanup.js` + `includes/abilities/revision-cleanup.php`
   - With parseIntent: `src/extensions/abilities/revision-cleanup.js`
   - With shared helpers: `src/extensions/abilities/plugin-activate.js` + `src/extensions/abilities/shared/plugin-helpers.js`
2. `src/extensions/abilities/index.js` — to see current registration pattern
3. `tests/abilities/core-abilities.test.js` — to see test case format

Also read the full patterns reference: [references/ability-patterns.md](references/ability-patterns.md)

### Phase 3: Generate Files

Create files in this order:

#### 1. PHP Backend (skip for core wrappers)

File: `includes/abilities/{name}.php`

Rules:
- Function names: `agentic_admin_register_{snake}` and `agentic_admin_execute_{snake}`
- Always include `permission_callback`
- Always include `input_schema` with top-level `default` for optional/no-input abilities
- Always include `output_schema`
- Set `annotations` matching the operation type
- Return `array( 'success' => bool, 'message' => string, ... )`
- Use WordPress spacing: `array( 'key' => 'value' )` not `array('key'=>'value')`
- Use tabs for indentation

#### 2. JS Frontend

File: `src/extensions/abilities/{name}.js`

Rules:
- Export function: `register{PascalCase}`
- `label` and `description` must be **string literals** (test loader uses regex)
- `label`: action-oriented, for LLM system prompt (e.g., "List installed plugins with status")
- `description`: one sentence under 30 words, explains when to use this tool
- `keywords`: array of lowercase trigger words
- `summarize()`: human-readable summary, handle error case (`!result.success`)
- `interpretResult()`: plain-English for LLM, concise single-line format preferred
- `execute()`: call `executeAbility()` with the ability ID and params
- `requiresConfirmation`: true for destructive, false otherwise
- Use WordPress spacing: `registerAbility( 'id', { ... } )` not `registerAbility('id', {...})`
- Use tabs for indentation, single quotes

#### 3. Index Registration

File: `src/extensions/abilities/index.js`

Add:
- Import statement (grouped with other WP-Agentic-Admin or core abilities)
- Re-export statement
- Call inside `registerAllAbilities()`

#### 4. Test Cases

File: `tests/abilities/core-abilities.test.js`

Add 2-3 test cases with different phrasings to the `tests` array.

#### 5. Shared Helpers (if applicable)

If the ability belongs to a family with existing helpers, import and use them.
If creating a new family, create:
- `includes/abilities/shared/{domain}-helpers.php`
- `src/extensions/abilities/shared/{domain}-helpers.js`

### Phase 4: Validate

Run these commands:

```bash
npx wp-scripts lint-js src/extensions/abilities/{name}.js
composer lint -- includes/abilities/{name}.php
npm run build
```

Fix any lint errors before finishing.

### Phase 5: Summary

Print a summary:
- Files created/modified
- Ability ID
- Operation type (readonly/write/destructive)
- How to test: `npm run test:abilities -- --file tests/abilities/core-abilities.test.js`
- Reminder: test in browser chat with natural language prompts from the user's examples

Files in this skill

  • SKILL.md5 KB
  • references/ability-patterns.md3.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.