Content
88%Weight 40%Scale 1-5Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
A highly actionable, well-sequenced audit procedure: executable commands with every required flag, explicit validation checkpoints (rule presence, uncovered endpoints, attack-vs-blocked traffic), error recovery, and a properly referenced bundled script. The only deductions are minor: hardcoded example dates and a few self-evident error-table rows cost conciseness, and the CLI gotchas are inlined rather than split into a reference file.
Suggestions
Replace the hardcoded dates in the time-series examples ('--from=2026-08-01T00:00:00Z --to=2026-08-08T00:00:00Z') with guidance on computing a recent range (e.g., last 7 days relative to run time), since copied commands will silently query stale windows.
Trim the Error Handling rows whose fixes Claude already knows ('jq is not installed' → install jq; 'curl is not installed') and keep only the non-obvious cases (token scope 403, FASTLY_API_KEY precedence).
Move the time-series 'get vs list' behavioral differences (output shape, bucket size, zero handling) into a references/ file (e.g., references/timeseries.md), keeping a one-line pointer in Step 5, to shorten the main SKILL.md.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The body is dense and operational — it never explains what a WAF, jq, or curl is, and the time-series 'get vs list' gotchas (output shape, bucket size, zero handling) are exactly the non-obvious knowledge Claude lacks. Not 5: hardcoded time-sensitive example dates ('--from=2026-08-01T00:00:00Z') sit outside any old-patterns section, and a few Error Handling rows ('jq is not installed' → 'brew install jq') state fixes Claude already knows — minor over-explanation that could be trimmed. Not 3: nothing is concept over-explanation and nearly every sentence carries skill-specific information. | 4 / 5 |
Actionability | Every step ships a complete, copy-paste-ready command with all required flags — 'fastly ngwaf workspace list --json | jq -r '.[].id'', the fully encoded curl URL for the requests API, and time-series invocations specifying '--metrics', '--granularity', and RFC 3339 timestamps — plus a bundled runnable script ('bash "$NGWAF_SKILL_DIR/scripts/assess_ngwaf_rules.sh"') covering the common case. Matches anchor 5: fully executable commands covering the common cases; no pseudocode or missing-key-detail gaps. | 5 / 5 |
Workflow Clarity | A clearly sequenced 5-step workflow where steps 3–5 are themselves validation checkpoints, each with an interpretation rule ('If empty, NGWAF is not configured', 'When LOGINATTEMPT is missing or disabled, search recent request logs', 'Report it even when every rule checks out'), plus an Error Handling table for recovery and Expected Output healthy/unhealthy examples. The audit is read-only, so the destructive/batch validation cap does not apply. Not 4: checkpoints are explicit at every step, not merely present. | 5 / 5 |
Progressive Disclosure | The single bundle file (scripts/assess_ngwaf_rules.sh) is real and clearly signaled in Quick Start with its exact invocation path, one level deep with no nesting, and the design is sound — run the bundled script as the primary path, manual steps inline as fallback. Not 5: all reference material lives inline in the ~175-line body (time-series get/list gotchas, expected-output examples) with no references/ split, so 'content appropriately split' is only partially met. Not 3: structure is good, the existing reference is clearly signaled rather than buried, and navigation via section headers is easy. | 4 / 5 |
Total | 18 / 20 Passed |