claude-plugin-wordpress-manager 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +5 -3
- package/CHANGELOG.md +16 -0
- package/agents/wp-monitoring-agent.md +184 -0
- package/agents/wp-performance-optimizer.md +1 -0
- package/agents/wp-security-auditor.md +1 -0
- package/agents/wp-site-manager.md +1 -0
- package/package.json +6 -3
- package/skills/wordpress-router/references/decision-tree.md +4 -2
- package/skills/wp-audit/SKILL.md +1 -0
- package/skills/wp-monitoring/SKILL.md +121 -0
- package/skills/wp-monitoring/references/alerting-strategies.md +205 -0
- package/skills/wp-monitoring/references/content-integrity.md +188 -0
- package/skills/wp-monitoring/references/performance-baseline.md +169 -0
- package/skills/wp-monitoring/references/reporting-templates.md +207 -0
- package/skills/wp-monitoring/references/security-scanning.md +168 -0
- package/skills/wp-monitoring/references/uptime-checks.md +140 -0
- package/skills/wp-monitoring/scripts/monitoring_inspect.mjs +259 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wordpress-manager",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "Unified WordPress management plugin for Claude Code. Orchestrates Hostinger MCP (infrastructure), WP REST API bridge (81 tools incl. WooCommerce + Multisite), and WordPress.com MCP (hosted sites) with
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Unified WordPress management plugin for Claude Code. Orchestrates Hostinger MCP (infrastructure), WP REST API bridge (81 tools incl. WooCommerce + Multisite), and WordPress.com MCP (hosted sites) with 11 specialized agents, 28 skills, and security hooks. Includes site monitoring (uptime, performance baseline, security scanning, content integrity, alerting), CI/CD pipeline automation (GitHub Actions, GitLab CI, Bitbucket), WordPress Multisite network management, WooCommerce store management, local dev environment support, development, testing, security, i18n, accessibility, headless, and operations.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "vinmor",
|
|
7
7
|
"email": "morreale.v@gmail.com"
|
|
@@ -23,7 +23,9 @@
|
|
|
23
23
|
"multisite",
|
|
24
24
|
"network",
|
|
25
25
|
"ci-cd",
|
|
26
|
-
"github-actions"
|
|
26
|
+
"github-actions",
|
|
27
|
+
"monitoring",
|
|
28
|
+
"uptime"
|
|
27
29
|
],
|
|
28
30
|
"mcpServers": "./.mcp.json"
|
|
29
31
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to the WordPress Manager plugin for Claude Code.
|
|
4
4
|
|
|
5
|
+
## [2.1.0] - 2026-02-28
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **WordPress monitoring support** — new skill and agent for ongoing site observability
|
|
9
|
+
- **New skill**: `wp-monitoring` with 6 reference files (uptime checks, performance baseline, security scanning, content integrity, alerting strategies, reporting templates)
|
|
10
|
+
- **New agent**: `wp-monitoring-agent` (color: teal) — read-only monitoring, health reports, anomaly detection, baseline comparison
|
|
11
|
+
- **Detection script**: `monitoring_inspect.mjs` — detects existing monitoring setup (uptime, performance, security, logging, content integrity)
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- Router decision-tree.md upgraded to v8 with monitoring keywords and routing
|
|
15
|
+
- `wp-audit` skill: added monitoring cross-reference
|
|
16
|
+
- `wp-security-auditor` agent: added periodic scanning cross-reference to wp-monitoring
|
|
17
|
+
- `wp-performance-optimizer` agent: added trend tracking cross-reference to wp-monitoring
|
|
18
|
+
- `wp-site-manager` agent: added monitoring delegation row
|
|
19
|
+
- Plugin now has 11 agents and 28 skills
|
|
20
|
+
|
|
5
21
|
## [2.0.0] - 2026-02-28
|
|
6
22
|
|
|
7
23
|
### Added
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wp-monitoring-agent
|
|
3
|
+
color: teal
|
|
4
|
+
description: |
|
|
5
|
+
Use this agent when the user needs ongoing WordPress site monitoring — uptime checks, performance trend analysis, security scanning, content integrity verification, or generating health reports. This agent is read-only and does not modify the site.
|
|
6
|
+
|
|
7
|
+
<example>
|
|
8
|
+
Context: User wants to set up monitoring for their WordPress site.
|
|
9
|
+
user: "Set up monitoring for my opencactus.com site"
|
|
10
|
+
assistant: "I'll use the wp-monitoring-agent to establish a monitoring baseline and configure health checks."
|
|
11
|
+
<commentary>Monitoring setup requires running detection, establishing baselines, and configuring checks.</commentary>
|
|
12
|
+
</example>
|
|
13
|
+
|
|
14
|
+
<example>
|
|
15
|
+
Context: User wants a health report for their site.
|
|
16
|
+
user: "Give me a health report for my WordPress site"
|
|
17
|
+
assistant: "I'll use the wp-monitoring-agent to run uptime, performance, security, and content checks and generate a comprehensive report."
|
|
18
|
+
<commentary>Health reports combine data from multiple monitoring areas into a structured report.</commentary>
|
|
19
|
+
</example>
|
|
20
|
+
|
|
21
|
+
<example>
|
|
22
|
+
Context: User wants to track performance trends over time.
|
|
23
|
+
user: "Is my site getting slower? Can you check the performance trend?"
|
|
24
|
+
assistant: "I'll use the wp-monitoring-agent to analyze performance metrics and compare with the baseline."
|
|
25
|
+
<commentary>Performance trend analysis requires collecting current metrics and comparing with historical data.</commentary>
|
|
26
|
+
</example>
|
|
27
|
+
model: inherit
|
|
28
|
+
tools: Read, Grep, Glob, Bash, WebFetch, WebSearch
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# WordPress Monitoring Agent
|
|
32
|
+
|
|
33
|
+
You are a WordPress monitoring specialist. You perform comprehensive site health assessments across uptime, performance, security, and content integrity. You generate structured reports and surface anomalies. **You are read-only — you do not modify the site.**
|
|
34
|
+
|
|
35
|
+
## Available Tools
|
|
36
|
+
|
|
37
|
+
### WP REST Bridge (`mcp__wp-rest-bridge__*`)
|
|
38
|
+
- **Multi-site**: `get_active_site`, `list_sites` — identify target site
|
|
39
|
+
- **Content**: `list_content` — monitor content changes, detect unauthorized modifications
|
|
40
|
+
- **Plugins**: `list_plugins` — track plugin versions, detect outdated/vulnerable plugins
|
|
41
|
+
- **Users**: `list_users` — audit user accounts, detect anomalies
|
|
42
|
+
- **Comments**: `list_comments` — monitor spam levels and moderation queue
|
|
43
|
+
- **Media**: `list_media` — track media volume and integrity
|
|
44
|
+
- **Discovery**: `discover_content_types` — verify API health
|
|
45
|
+
|
|
46
|
+
### Hostinger MCP (`mcp__hostinger-mcp__*`)
|
|
47
|
+
- **Hosting**: `hosting_listWebsites` — check hosting status and resources
|
|
48
|
+
- **DNS**: `DNS_getDNSRecordsV1` — verify DNS records and email auth (SPF, DKIM, DMARC)
|
|
49
|
+
|
|
50
|
+
### External Tools
|
|
51
|
+
- **Bash**: Run health-check scripts, SSL checks, Lighthouse CLI, file integrity scans
|
|
52
|
+
- **WebFetch**: Fetch PageSpeed Insights, check external URLs, verify sitemap
|
|
53
|
+
- **WebSearch**: Research plugin CVEs, check vulnerability databases
|
|
54
|
+
|
|
55
|
+
## Monitoring Procedures
|
|
56
|
+
|
|
57
|
+
### Procedure 1: Detection — Assess Current Monitoring State
|
|
58
|
+
|
|
59
|
+
1. Run the detection script:
|
|
60
|
+
```bash
|
|
61
|
+
node skills/wp-monitoring/scripts/monitoring_inspect.mjs [--cwd=/path/to/project]
|
|
62
|
+
```
|
|
63
|
+
2. Review findings: which areas have existing monitoring, which have gaps
|
|
64
|
+
3. Present summary of current monitoring coverage
|
|
65
|
+
4. Recommend areas that need monitoring setup
|
|
66
|
+
|
|
67
|
+
### Procedure 2: Baseline Establishment
|
|
68
|
+
|
|
69
|
+
Run a full assessment to create a monitoring baseline:
|
|
70
|
+
|
|
71
|
+
1. **Uptime baseline**: Check HTTP response, SSL expiry, WP-Cron status
|
|
72
|
+
2. **Performance baseline**: Run Lighthouse audit, record CWV, measure TTFB
|
|
73
|
+
3. **Security baseline**: Verify core checksums, list plugins with versions, count admin users
|
|
74
|
+
4. **Content baseline**: Count published posts/pages, record media count, check comments
|
|
75
|
+
5. **Save baseline**: Record all metrics with timestamp for future comparison
|
|
76
|
+
|
|
77
|
+
### Procedure 3: Uptime Check
|
|
78
|
+
|
|
79
|
+
1. Verify HTTP status via Bash: `curl -sL -o /dev/null -w "%{http_code} %{time_total}s" <site-url>`
|
|
80
|
+
2. Check SSL expiry: `openssl s_client` command
|
|
81
|
+
3. Verify REST API: `discover_content_types` via WP REST Bridge
|
|
82
|
+
4. Check WP-Cron: verify last execution timestamp
|
|
83
|
+
5. Report with response times and any failures
|
|
84
|
+
|
|
85
|
+
### Procedure 4: Performance Scan
|
|
86
|
+
|
|
87
|
+
1. Run Lighthouse audit (if CLI available): `lighthouse <url> --output=json`
|
|
88
|
+
2. Measure TTFB via Bash: `curl -sL -o /dev/null -w "%{time_starttransfer}"`
|
|
89
|
+
3. Check PageSpeed Insights via WebFetch (if site is public)
|
|
90
|
+
4. Count active plugins via `list_plugins` — flag if > 20
|
|
91
|
+
5. Compare with baseline — flag regressions > 20%
|
|
92
|
+
6. Report CWV values with trend arrows
|
|
93
|
+
|
|
94
|
+
### Procedure 5: Security Scan
|
|
95
|
+
|
|
96
|
+
1. List plugins via `list_plugins` — check for updates and known CVEs
|
|
97
|
+
2. Count admin users via `list_users` — compare with baseline
|
|
98
|
+
3. Check WordPress core version — flag if update available
|
|
99
|
+
4. Verify file integrity (if SSH access): `wp core verify-checksums`
|
|
100
|
+
5. Check DNS records: SPF, DKIM, DMARC via `DNS_getDNSRecordsV1`
|
|
101
|
+
6. Check SSL configuration via Bash
|
|
102
|
+
7. Report findings with severity classification
|
|
103
|
+
|
|
104
|
+
### Procedure 6: Content Audit
|
|
105
|
+
|
|
106
|
+
1. List recent content via `list_content` with `orderby: "modified"` — check for unexpected changes
|
|
107
|
+
2. Check comments: `list_comments` with `status: "hold"` and `status: "spam"` — report queue size
|
|
108
|
+
3. Verify sitemap via WebFetch: check HTTP status and URL count
|
|
109
|
+
4. Check robots.txt via WebFetch: verify no unexpected rules
|
|
110
|
+
5. Report content changes, spam levels, and SEO health
|
|
111
|
+
|
|
112
|
+
## Report Generation
|
|
113
|
+
|
|
114
|
+
After completing relevant procedures, generate a report following the templates in `references/reporting-templates.md`:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
## WordPress Health Report — [site-name]
|
|
118
|
+
**Date:** [date] | **Scope:** [full / uptime / performance / security / content]
|
|
119
|
+
|
|
120
|
+
### Overall Status: [✅ Healthy / ⚠️ Degraded / ❌ Critical]
|
|
121
|
+
|
|
122
|
+
### Summary
|
|
123
|
+
| Area | Status | Key Finding |
|
|
124
|
+
|------|--------|-------------|
|
|
125
|
+
| Uptime | [✅/⚠️/❌] | [brief note] |
|
|
126
|
+
| Performance | [✅/⚠️/❌] | [brief note] |
|
|
127
|
+
| Security | [✅/⚠️/❌] | [brief note] |
|
|
128
|
+
| Content | [✅/⚠️/❌] | [brief note] |
|
|
129
|
+
|
|
130
|
+
### Findings (by Severity)
|
|
131
|
+
|
|
132
|
+
#### Critical
|
|
133
|
+
[findings or "None"]
|
|
134
|
+
|
|
135
|
+
#### High
|
|
136
|
+
[findings or "None"]
|
|
137
|
+
|
|
138
|
+
#### Medium
|
|
139
|
+
[findings or "None"]
|
|
140
|
+
|
|
141
|
+
#### Low / Info
|
|
142
|
+
[findings or "None"]
|
|
143
|
+
|
|
144
|
+
### Trend vs Baseline
|
|
145
|
+
| Metric | Baseline | Current | Delta | Status |
|
|
146
|
+
|--------|----------|---------|-------|--------|
|
|
147
|
+
| TTFB | Xms | Xms | [+/-X%] | [✅/⚠️/❌] |
|
|
148
|
+
| LCP | X.Xs | X.Xs | [+/-X%] | [✅/⚠️/❌] |
|
|
149
|
+
| Active plugins | X | X | [+/-X] | [✅/⚠️] |
|
|
150
|
+
| Admin users | X | X | [+/-X] | [✅/⚠️] |
|
|
151
|
+
|
|
152
|
+
### Recommendations (Priority Order)
|
|
153
|
+
1. [Most urgent action]
|
|
154
|
+
2. [Second priority]
|
|
155
|
+
3. [Third priority]
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Safety Rules
|
|
159
|
+
|
|
160
|
+
- **NEVER modify any site data** — this agent is strictly read-only
|
|
161
|
+
- **NEVER deactivate plugins**, update WordPress, or change any configuration
|
|
162
|
+
- **NEVER expose credentials** or API tokens in reports
|
|
163
|
+
- **ALWAYS verify site identity** before running checks (confirm with user)
|
|
164
|
+
- **ALWAYS report anomalies** immediately — don't wait for the full report
|
|
165
|
+
- If an active security incident is detected, **immediately alert the user** and recommend delegation to `wp-security-auditor` + `wp-security-hardener`
|
|
166
|
+
|
|
167
|
+
## Delegation
|
|
168
|
+
|
|
169
|
+
For issues found during monitoring:
|
|
170
|
+
|
|
171
|
+
| Issue Found | Delegate To |
|
|
172
|
+
|-------------|------------|
|
|
173
|
+
| Security vulnerability or incident | `wp-security-auditor` agent (assessment) → `wp-security-hardener` agent (remediation) |
|
|
174
|
+
| Performance degradation | `wp-performance-optimizer` agent |
|
|
175
|
+
| Content or SEO issues | `wp-content-strategist` agent |
|
|
176
|
+
| Plugin/deployment issues | `wp-deployment-engineer` agent |
|
|
177
|
+
| Infrastructure/hosting issues | `wp-site-manager` agent |
|
|
178
|
+
|
|
179
|
+
## Related Skills
|
|
180
|
+
|
|
181
|
+
- **`wp-monitoring` skill** — monitoring strategies, reference files, and decision tree
|
|
182
|
+
- **`wp-audit` skill** — one-time comprehensive audit (security + performance + SEO)
|
|
183
|
+
- **`wp-security` skill** — security hardening procedures
|
|
184
|
+
- **`wp-performance` skill** — backend profiling and optimization
|
|
@@ -208,3 +208,4 @@ Use both tool sets together for a complete picture — WP REST Bridge tells you
|
|
|
208
208
|
|
|
209
209
|
- **`wp-performance` skill** — backend profiling with WP-CLI doctor/profile, query optimization, database analysis
|
|
210
210
|
- **`wp-audit` skill** — performance audit checklists and scoring framework
|
|
211
|
+
- **`wp-monitoring` skill** — for ongoing performance trend tracking and baseline comparison (via `wp-monitoring-agent`)
|
|
@@ -179,3 +179,4 @@ This checks wp-config constants, file permissions, .htaccess rules, and active s
|
|
|
179
179
|
|
|
180
180
|
- **`wp-security` skill** — comprehensive hardening references (filesystem, headers, auth, API, incident response)
|
|
181
181
|
- **`wp-audit` skill** — security/performance/SEO audit checklists and scoring
|
|
182
|
+
- **`wp-monitoring` skill** — for scheduled periodic security scans and trend tracking (via `wp-monitoring-agent`)
|
|
@@ -149,3 +149,4 @@ For domain-specific tasks, delegate to specialized agents:
|
|
|
149
149
|
| WooCommerce store management | `wp-ecommerce-manager` | Products, orders, customers, coupons, analytics |
|
|
150
150
|
| Multisite network management | `wp-site-manager` (this agent) | Sub-sites, network plugins, Super Admin — see section above |
|
|
151
151
|
| CI/CD pipeline setup and troubleshooting | `wp-cicd-engineer` | GitHub Actions, GitLab CI, Bitbucket, quality gates |
|
|
152
|
+
| Site monitoring and health reports | `wp-monitoring-agent` | Uptime, performance trends, security scanning, content integrity |
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-plugin-wordpress-manager",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "Unified WordPress management and development plugin for Claude Code. Orchestrates Hostinger MCP, WP REST API bridge (81 tools incl. 30 WooCommerce + 10 Multisite), and WordPress.com MCP with
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Unified WordPress management and development plugin for Claude Code. Orchestrates Hostinger MCP, WP REST API bridge (81 tools incl. 30 WooCommerce + 10 Multisite), and WordPress.com MCP with 28 skills, 11 agents, and security hooks. v2.1.0 adds site monitoring: uptime checks, performance baseline, security scanning, content integrity, alerting strategies, and reporting templates.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "vinmor",
|
|
7
7
|
"email": "morreale.v@gmail.com"
|
|
@@ -30,7 +30,10 @@
|
|
|
30
30
|
"network",
|
|
31
31
|
"ci-cd",
|
|
32
32
|
"github-actions",
|
|
33
|
-
"gitlab-ci"
|
|
33
|
+
"gitlab-ci",
|
|
34
|
+
"monitoring",
|
|
35
|
+
"uptime",
|
|
36
|
+
"health-check"
|
|
34
37
|
],
|
|
35
38
|
"repository": {
|
|
36
39
|
"type": "git",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Router decision tree (
|
|
1
|
+
# Router decision tree (v8 — development + local environment + operations + multisite + CI/CD + monitoring)
|
|
2
2
|
|
|
3
3
|
This routing guide covers WordPress **development**, **local environment**, and **operations** workflows.
|
|
4
4
|
|
|
@@ -14,7 +14,7 @@ Keywords that indicate **local environment**:
|
|
|
14
14
|
local site, Studio, LocalWP, Local by Flywheel, wp-env, local WordPress, start site, stop site, create local site, local development, symlink plugin, local database, switch PHP version, localhost, local preview, detect environment, WASM, SQLite local
|
|
15
15
|
|
|
16
16
|
Keywords that indicate **operations**:
|
|
17
|
-
deploy, push to production, audit, security check, backup, restore, migrate, move site, create post, manage content, site status, check plugins, performance check, SEO audit, WooCommerce, prodotto, ordine, coupon, negozio, catalogo, inventario, vendite, carrello, multisite, network, sub-site, sub-sito, domain mapping, super admin, network activate
|
|
17
|
+
deploy, push to production, audit, security check, backup, restore, migrate, move site, create post, manage content, site status, check plugins, performance check, SEO audit, WooCommerce, prodotto, ordine, coupon, negozio, catalogo, inventario, vendite, carrello, multisite, network, sub-site, sub-sito, domain mapping, super admin, network activate, monitor, uptime, health report, trend, scansione periodica, alerting, performance baseline
|
|
18
18
|
|
|
19
19
|
Keywords that indicate **development**:
|
|
20
20
|
create block, block.json, theme.json, register_rest_route, plugin development, hooks, PHPStan, build, test, scaffold, i18n, translation, accessibility, a11y, headless, decoupled, WPGraphQL, CI, CD, pipeline, GitHub Actions, GitLab CI, deploy automatico, workflow, quality gate
|
|
@@ -92,6 +92,8 @@ Priority: `gutenberg` > `wp-core` > `wp-site` > `wp-block-theme` > `wp-block-plu
|
|
|
92
92
|
→ `wp-woocommerce` skill + `wp-ecommerce-manager` agent
|
|
93
93
|
- **Multisite / network / sub-sites / domain mapping / super admin / network activate**
|
|
94
94
|
→ `wp-multisite` skill + `wp-site-manager` agent
|
|
95
|
+
- **Monitor / uptime / health report / trend / scansione periodica / alerting / performance baseline / ongoing checks**
|
|
96
|
+
→ `wp-monitoring` skill + `wp-monitoring-agent` agent
|
|
95
97
|
|
|
96
98
|
## Step 2c: route by local environment intent (keywords)
|
|
97
99
|
|
package/skills/wp-audit/SKILL.md
CHANGED
|
@@ -117,3 +117,4 @@ Combine findings into a unified report with:
|
|
|
117
117
|
## Related skills
|
|
118
118
|
|
|
119
119
|
- `wp-security` — Deep security hardening, filesystem permissions, HTTP headers, incident response procedures
|
|
120
|
+
- `wp-monitoring` — For ongoing monitoring (uptime, performance trends, security scanning, content integrity) beyond one-time audits
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wp-monitoring
|
|
3
|
+
description: This skill should be used when the user asks to "monitor my site", "set up
|
|
4
|
+
uptime checks", "performance baseline", "health report", "security scanning schedule",
|
|
5
|
+
"content integrity check", "alerting", "reporting", "trend analysis", "is my site up",
|
|
6
|
+
"site health over time", or mentions any form of ongoing WordPress monitoring and
|
|
7
|
+
observability. Orchestrates uptime, performance, security, and content monitoring.
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# WordPress Monitoring Skill
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
|
|
15
|
+
Provides strategies and procedures for continuous WordPress monitoring across five areas: uptime, performance, security, content integrity, and alerting. Combines WP REST Bridge tools, hosting APIs, Bash scripts, and external services for comprehensive observability.
|
|
16
|
+
|
|
17
|
+
## When to Use
|
|
18
|
+
|
|
19
|
+
- User wants ongoing site health monitoring (not a one-time audit)
|
|
20
|
+
- User asks about uptime checks, performance trends, or scheduled security scans
|
|
21
|
+
- User wants alerting when something goes wrong
|
|
22
|
+
- User needs a periodic health report
|
|
23
|
+
- User wants to track performance over time (baselines, trends)
|
|
24
|
+
|
|
25
|
+
## Monitoring vs Audit
|
|
26
|
+
|
|
27
|
+
| Need | Skill |
|
|
28
|
+
|------|-------|
|
|
29
|
+
| One-time assessment | `wp-audit` |
|
|
30
|
+
| Ongoing monitoring | `wp-monitoring` (this skill) |
|
|
31
|
+
| Security hardening | `wp-security` |
|
|
32
|
+
| Performance optimization | `wp-performance` |
|
|
33
|
+
|
|
34
|
+
## Decision Tree
|
|
35
|
+
|
|
36
|
+
1. **What to monitor?**
|
|
37
|
+
- "uptime" / "is it up" / "response time" → Uptime checks (Section 1)
|
|
38
|
+
- "performance" / "speed trend" / "CWV over time" → Performance baseline (Section 2)
|
|
39
|
+
- "security scan" / "vulnerability check" / "malware" → Security scanning (Section 3)
|
|
40
|
+
- "content changed" / "broken links" / "spam" → Content integrity (Section 4)
|
|
41
|
+
- "alert me" / "notify" / "threshold" → Alerting strategies (Section 5)
|
|
42
|
+
- "report" / "weekly summary" / "dashboard" → Reporting templates (Section 6)
|
|
43
|
+
- "full monitoring" / "set up everything" → All sections, start with detection
|
|
44
|
+
|
|
45
|
+
2. **Run detection first:**
|
|
46
|
+
```bash
|
|
47
|
+
node skills/wp-monitoring/scripts/monitoring_inspect.mjs [--cwd=/path/to/project]
|
|
48
|
+
```
|
|
49
|
+
This identifies existing monitoring setup and gaps.
|
|
50
|
+
|
|
51
|
+
## Monitoring Areas
|
|
52
|
+
|
|
53
|
+
### Section 1: Uptime Checks
|
|
54
|
+
See `references/uptime-checks.md`
|
|
55
|
+
- HTTP probe configuration
|
|
56
|
+
- SSL certificate expiry monitoring
|
|
57
|
+
- WP REST API health endpoint
|
|
58
|
+
- Cron job scheduling
|
|
59
|
+
- Response time thresholds
|
|
60
|
+
|
|
61
|
+
### Section 2: Performance Baseline
|
|
62
|
+
See `references/performance-baseline.md`
|
|
63
|
+
- Core Web Vitals baseline capture
|
|
64
|
+
- Lighthouse CI scheduled runs
|
|
65
|
+
- TTFB trend tracking
|
|
66
|
+
- Database query performance
|
|
67
|
+
- Plugin impact over time
|
|
68
|
+
|
|
69
|
+
### Section 3: Security Scanning
|
|
70
|
+
See `references/security-scanning.md`
|
|
71
|
+
- Plugin vulnerability checks (CVE database)
|
|
72
|
+
- File integrity monitoring
|
|
73
|
+
- User account anomaly detection
|
|
74
|
+
- Malware scanning
|
|
75
|
+
- WordPress core version tracking
|
|
76
|
+
|
|
77
|
+
### Section 4: Content Integrity
|
|
78
|
+
See `references/content-integrity.md`
|
|
79
|
+
- Unauthorized content change detection
|
|
80
|
+
- Broken link checking
|
|
81
|
+
- Comment spam monitoring
|
|
82
|
+
- Media file integrity
|
|
83
|
+
- SEO health indicators
|
|
84
|
+
|
|
85
|
+
### Section 5: Alerting Strategies
|
|
86
|
+
See `references/alerting-strategies.md`
|
|
87
|
+
- Severity thresholds and escalation
|
|
88
|
+
- Notification channels (email, Slack, webhook)
|
|
89
|
+
- Alert fatigue prevention
|
|
90
|
+
- On-call rotation patterns
|
|
91
|
+
- Incident response triggers
|
|
92
|
+
|
|
93
|
+
### Section 6: Reporting Templates
|
|
94
|
+
See `references/reporting-templates.md`
|
|
95
|
+
- Daily health summary
|
|
96
|
+
- Weekly performance report
|
|
97
|
+
- Monthly security report
|
|
98
|
+
- Quarterly trend analysis
|
|
99
|
+
- Executive dashboard format
|
|
100
|
+
|
|
101
|
+
## Reference Files
|
|
102
|
+
|
|
103
|
+
| File | Content |
|
|
104
|
+
|------|---------|
|
|
105
|
+
| `references/uptime-checks.md` | HTTP probe, SSL, health endpoints, cron |
|
|
106
|
+
| `references/performance-baseline.md` | CWV baseline, Lighthouse CI, TTFB trends |
|
|
107
|
+
| `references/security-scanning.md` | CVE checks, file integrity, malware scanning |
|
|
108
|
+
| `references/content-integrity.md` | Change detection, link checking, spam |
|
|
109
|
+
| `references/alerting-strategies.md` | Thresholds, escalation, notification channels |
|
|
110
|
+
| `references/reporting-templates.md` | Daily/weekly/monthly report templates |
|
|
111
|
+
|
|
112
|
+
## Recommended Agent
|
|
113
|
+
|
|
114
|
+
**`wp-monitoring-agent`** — executes monitoring procedures, generates reports, and surfaces anomalies. Read-only: does not modify the site.
|
|
115
|
+
|
|
116
|
+
## Related Skills
|
|
117
|
+
|
|
118
|
+
- **`wp-audit`** — one-time security/performance/SEO assessment (complements ongoing monitoring)
|
|
119
|
+
- **`wp-security`** — hardening procedures triggered by monitoring alerts
|
|
120
|
+
- **`wp-performance`** — optimization actions based on performance trends
|
|
121
|
+
- **`wp-cicd`** — CI/CD quality gates that complement monitoring (pre-deploy checks)
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Alerting Strategies
|
|
2
|
+
|
|
3
|
+
## Severity Levels
|
|
4
|
+
|
|
5
|
+
| Level | Criteria | Response Time | Example |
|
|
6
|
+
|-------|----------|--------------|---------|
|
|
7
|
+
| **P0 — Critical** | Site down or data breach | Immediate (< 15 min) | HTTP 500, malware detected, admin account compromised |
|
|
8
|
+
| **P1 — High** | Major degradation | Within 1 hour | TTFB > 5s, SSL expires in < 7 days, plugin with critical CVE |
|
|
9
|
+
| **P2 — Medium** | Performance regression | Within 24 hours | CWV degradation > 20%, outdated plugins, spam spike |
|
|
10
|
+
| **P3 — Low** | Informational | Next maintenance window | Minor CWV change, new WordPress version, content audit findings |
|
|
11
|
+
|
|
12
|
+
## Alert Threshold Configuration
|
|
13
|
+
|
|
14
|
+
### Uptime Thresholds
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
uptime:
|
|
18
|
+
http_check:
|
|
19
|
+
warning: response_time > 3s
|
|
20
|
+
critical: response_time > 10s OR http_code != 200
|
|
21
|
+
consecutive_failures_before_alert: 3
|
|
22
|
+
ssl_expiry:
|
|
23
|
+
warning: days_remaining < 30
|
|
24
|
+
critical: days_remaining < 7
|
|
25
|
+
wp_cron:
|
|
26
|
+
warning: last_run > 30min
|
|
27
|
+
critical: last_run > 2h
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Performance Thresholds
|
|
31
|
+
|
|
32
|
+
```yaml
|
|
33
|
+
performance:
|
|
34
|
+
lcp:
|
|
35
|
+
warning: value > 2500ms
|
|
36
|
+
critical: value > 4000ms
|
|
37
|
+
cls:
|
|
38
|
+
warning: value > 0.1
|
|
39
|
+
critical: value > 0.25
|
|
40
|
+
ttfb:
|
|
41
|
+
warning: value > 800ms
|
|
42
|
+
critical: value > 1800ms
|
|
43
|
+
lighthouse_score:
|
|
44
|
+
warning: score < 70
|
|
45
|
+
critical: score < 50
|
|
46
|
+
regression:
|
|
47
|
+
warning: delta > 20% from baseline
|
|
48
|
+
critical: delta > 50% from baseline
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Security Thresholds
|
|
52
|
+
|
|
53
|
+
```yaml
|
|
54
|
+
security:
|
|
55
|
+
plugin_updates:
|
|
56
|
+
warning: outdated_count >= 3
|
|
57
|
+
critical: security_update_available == true
|
|
58
|
+
admin_accounts:
|
|
59
|
+
warning: count > baseline + 1
|
|
60
|
+
critical: unknown_admin_detected == true
|
|
61
|
+
file_integrity:
|
|
62
|
+
critical: core_files_modified == true
|
|
63
|
+
critical: php_in_uploads == true
|
|
64
|
+
malware_patterns:
|
|
65
|
+
critical: suspicious_code_detected == true
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Content Thresholds
|
|
69
|
+
|
|
70
|
+
```yaml
|
|
71
|
+
content:
|
|
72
|
+
spam_comments:
|
|
73
|
+
warning: count_24h > 50
|
|
74
|
+
critical: count_24h > 200
|
|
75
|
+
broken_links:
|
|
76
|
+
warning: count > 5
|
|
77
|
+
critical: count > 20 OR homepage_links_broken == true
|
|
78
|
+
unauthorized_changes:
|
|
79
|
+
warning: modified_outside_hours == true
|
|
80
|
+
critical: admin_content_modified_by_unknown == true
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Notification Channels
|
|
84
|
+
|
|
85
|
+
### Email Alerts
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
#!/bin/bash
|
|
89
|
+
# send-alert.sh — Unified alert sender
|
|
90
|
+
|
|
91
|
+
SEVERITY="$1" # P0, P1, P2, P3
|
|
92
|
+
SUBJECT="$2"
|
|
93
|
+
BODY="$3"
|
|
94
|
+
ALERT_EMAIL="admin@example.com"
|
|
95
|
+
|
|
96
|
+
case "$SEVERITY" in
|
|
97
|
+
P0) PREFIX="🔴 CRITICAL" ;;
|
|
98
|
+
P1) PREFIX="🟠 HIGH" ;;
|
|
99
|
+
P2) PREFIX="🟡 MEDIUM" ;;
|
|
100
|
+
P3) PREFIX="🔵 INFO" ;;
|
|
101
|
+
esac
|
|
102
|
+
|
|
103
|
+
echo "$BODY" | mail -s "[$PREFIX] $SUBJECT" "$ALERT_EMAIL"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Slack Webhook
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
#!/bin/bash
|
|
110
|
+
# slack-alert.sh — Send alert to Slack channel
|
|
111
|
+
|
|
112
|
+
WEBHOOK_URL="$SLACK_WEBHOOK_URL"
|
|
113
|
+
SEVERITY="$1"
|
|
114
|
+
MESSAGE="$2"
|
|
115
|
+
|
|
116
|
+
case "$SEVERITY" in
|
|
117
|
+
P0) COLOR="#FF0000"; ICON=":red_circle:" ;;
|
|
118
|
+
P1) COLOR="#FF8C00"; ICON=":large_orange_circle:" ;;
|
|
119
|
+
P2) COLOR="#FFD700"; ICON=":large_yellow_circle:" ;;
|
|
120
|
+
P3) COLOR="#4169E1"; ICON=":large_blue_circle:" ;;
|
|
121
|
+
esac
|
|
122
|
+
|
|
123
|
+
curl -s -X POST "$WEBHOOK_URL" \
|
|
124
|
+
-H 'Content-type: application/json' \
|
|
125
|
+
-d "{
|
|
126
|
+
\"attachments\": [{
|
|
127
|
+
\"color\": \"$COLOR\",
|
|
128
|
+
\"text\": \"$ICON $MESSAGE\",
|
|
129
|
+
\"footer\": \"WordPress Monitor | $(date -u +%Y-%m-%dT%H:%M:%SZ)\"
|
|
130
|
+
}]
|
|
131
|
+
}"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Generic Webhook
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
#!/bin/bash
|
|
138
|
+
# webhook-alert.sh — Send alert to any webhook endpoint
|
|
139
|
+
|
|
140
|
+
WEBHOOK_URL="$1"
|
|
141
|
+
PAYLOAD=$(jq -n \
|
|
142
|
+
--arg severity "$2" \
|
|
143
|
+
--arg site "$3" \
|
|
144
|
+
--arg message "$4" \
|
|
145
|
+
--arg timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
146
|
+
'{severity: $severity, site: $site, message: $message, timestamp: $timestamp}')
|
|
147
|
+
|
|
148
|
+
curl -s -X POST "$WEBHOOK_URL" \
|
|
149
|
+
-H 'Content-type: application/json' \
|
|
150
|
+
-d "$PAYLOAD"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Alert Fatigue Prevention
|
|
154
|
+
|
|
155
|
+
### Deduplication
|
|
156
|
+
|
|
157
|
+
- **Same alert suppression**: Don't re-alert for the same issue within the cooldown period
|
|
158
|
+
- **Cooldown periods**: P0 = 5 min, P1 = 30 min, P2 = 4h, P3 = 24h
|
|
159
|
+
- **Recovery notification**: Send "resolved" when condition clears
|
|
160
|
+
|
|
161
|
+
### Aggregation
|
|
162
|
+
|
|
163
|
+
- **Batch P3 alerts**: Collect low-priority alerts and send as a daily digest
|
|
164
|
+
- **Group related alerts**: If multiple plugins need updates, send one alert listing all
|
|
165
|
+
- **Threshold escalation**: If P2 persists for 24h without resolution, escalate to P1
|
|
166
|
+
|
|
167
|
+
### Noise Reduction Rules
|
|
168
|
+
|
|
169
|
+
```yaml
|
|
170
|
+
noise_reduction:
|
|
171
|
+
# Don't alert during known maintenance windows
|
|
172
|
+
maintenance_window:
|
|
173
|
+
day: sunday
|
|
174
|
+
start: "02:00"
|
|
175
|
+
end: "06:00"
|
|
176
|
+
suppress: [P2, P3]
|
|
177
|
+
|
|
178
|
+
# Ignore brief transient failures
|
|
179
|
+
consecutive_checks_required:
|
|
180
|
+
P0: 2 # Alert after 2 consecutive failures (10 min)
|
|
181
|
+
P1: 3 # Alert after 3 consecutive failures (15 min)
|
|
182
|
+
|
|
183
|
+
# Don't alert on performance during traffic spikes
|
|
184
|
+
suppress_performance_during_high_traffic: true
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Escalation Procedures
|
|
188
|
+
|
|
189
|
+
### Escalation Matrix
|
|
190
|
+
|
|
191
|
+
| Time Since Alert | P0 Action | P1 Action |
|
|
192
|
+
|------------------|-----------|-----------|
|
|
193
|
+
| 0 min | Notify primary on-call + Slack channel | Notify primary on-call |
|
|
194
|
+
| 15 min | Escalate to secondary on-call | — |
|
|
195
|
+
| 30 min | Escalate to team lead + phone call | Escalate to secondary |
|
|
196
|
+
| 1 hour | Escalate to management | Escalate to team lead |
|
|
197
|
+
|
|
198
|
+
### Incident Response Triggers
|
|
199
|
+
|
|
200
|
+
When monitoring detects a P0 condition, automatically:
|
|
201
|
+
1. Create incident record with timestamp and evidence
|
|
202
|
+
2. Notify on-call via all channels (email + Slack + webhook)
|
|
203
|
+
3. Capture current state: `wp plugin list`, `wp core version`, server logs
|
|
204
|
+
4. **Delegate to `wp-security-auditor`** for security incidents
|
|
205
|
+
5. **Delegate to `wp-security-hardener`** for immediate containment (if compromised)
|