Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Awwwards Doctor

BSecurity

Use when awwwards-mcp scraping or tools stop working — BlockedError, "layout may have changed" parser errors, empty results, failed captures, stale searches — or when the user reports the MCP behaving oddly. Guides running the doctor/drift/index scripts, applying their fixes, re-anchoring parsers after real awwwards.com drift, and recovering the in-flight task that surfaced the failure.

88 stars
0 votes
0 copies
0 views
Added 9/28/2026
ai-agentsbashsqlnodegitapi

Works with

cliapimcp

Security Analysis

B77/100
highPerforms destructive filesystem operations
mediumInstalls packages at runtime which could introduce malicious dependencies

Scanned 9/28/2026

Install to Claude Code

$npx -y skills add INSANE0777/Awwwards-mcp --skill awwwards-doctor --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Awwwards Doctor?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Awwwards Doctor
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/insane0777-awwwards-doctor-awwwards-mcp/badge)](https://www.skillsdirectory.com/skills/insane0777-awwwards-doctor-awwwards-mcp)

More formats (shields.io, HTML) on the badges page.

Files
SKILL.md
---
name: awwwards-doctor
description: Use when awwwards-mcp scraping or tools stop working — BlockedError, "layout may have changed" parser errors, empty results, failed captures, stale searches — or when the user reports the MCP behaving oddly. Guides running the doctor/drift/index scripts, applying their fixes, re-anchoring parsers after real awwwards.com drift, and recovering the in-flight task that surfaced the failure.
---

# Awwwards MCP Doctor

You are repairing the awwwards-mcp toolchain or working around it mid-task.
Work in this order: **diagnose → fix mechanically → fix parsers (if drift) →
recover the user's task**. Never delete user data; the only destructive step
(cache DB moved aside) preserves the old file in the OS temp dir.

## 1. Run the doctor (repo checkout)

```bash
npm run doctor             # diagnose only
npm run doctor -- --fix    # diagnose AND apply available fixes
npm run doctor -- --json   # machine-readable report
```

The doctor checks five things and knows how to fix the mechanical ones:

| Check | Failure meaning | What --fix does |
|---|---|---|
| network | awwwards.com blocked/challenged the request | nothing to fix locally — wait, retry later; never retry in a loop |
| parser-drift | awwwards.com markup changed under the parsers | captures the raw live page into `docs/drift-<timestamp>/` (gitignored) as the fixture for the fix |
| playwright-chromium / ffmpeg-static | optional capture deps missing or broken | installs them (dev deps + `npx playwright install chromium`) |
| cache | SQLite DB corrupt/locked, or index older than 30 days | moves an unreadable DB aside (kept in temp) and rebuilds via `npm run index` |
| boot | `dist/cli.js` doesn't start | `npm run build` |

Re-run the doctor after fixing; the verdict must be HEALTHY before you claim
the MCP is repaired.

## 2. Fixing real parser drift (the only code-level failure)

If the doctor reports parser-drift, the anchor probes say which parser broke.
Repair sequence — keep it mechanical, verify at each step:

1. **Capture the evidence**: the `--fix` snapshot in `docs/drift-*/` IS the
   new truth. (The daily GitHub Action also opens/updates a `parser-drift`
   tracking issue with the drifted anchor names.)
2. **Locate the new anchors**: open the captured HTML and find the markup
   that replaced the old anchor (search the old anchor's *purpose*, e.g. the
   card JSON blob, the Elements section heading, the og:image meta).
3. **Re-anchor the parsers** in `src/parsers.ts` — change the minimum needed
   (one split/indexOf/regex literal), not the surrounding logic.
4. **Update the probe list** in `scripts/parser-drift-probe.mjs`
   (`PROBE_GROUPS`) so the same failure is detectable next time.
5. **Refresh the fixture**: download the live page with the same UA the
   client uses and replace `test/fixtures/listing.html` (or the detail
   fixture). The offline tests run against fixtures only — a refreshed
   fixture proves the re-anchor against reality.
6. `npm run typecheck && npm test` — all tests must pass.
7. Commit as `fix: re-anchor <parser> after awwwards.com markup change`,
   reference the tracking issue.

## 3. End users (installed via npm, not a repo checkout)

The doctor scripts live in the repo, so for an npm-installed server:

1. Check the version notice: stderr at startup prints when a newer
   `awwwards-mcp` exists. Update with `npm install -g awwwards-mcp@latest`
   (or clear the npx cache) and restart the agent — a surprising share of
   "broken" reports are old parsers fixed in a newer release.
   `AWWWARDS_AUTO_UPDATE=1` in the MCP server env opts into background
   self-update on startup.
2. Reset local state: `rm -rf ~/.awwwards-mcp` is safe (cache + index +
   version-check state rebuild automatically; nothing user-authored lives
   there).
3. If it still fails, it's upstream (block or drift): open an issue at the
   awwwards-mcp repo attaching the raw HTML of the failing URL.

## 4. Recovering the in-flight task (the reason you noticed)

The user's build/research doesn't wait for the repair. Degrade gracefully:

- **Stale cache is your friend**: `search_sites`/`get_site_details` serve
  cached data when live fetches fail — say so in the reply ("7-day-old
  cached data").
- **BlockedError means stop, not retry**: the client never retries through
  blocks; tell the user and continue with cached/alternate data.
- **Capture tools down** (playwright missing): fall back to
  `get_site_details` screenshots (CDN-served, no browser needed) until
  `npm run doctor -- --fix` restores chromium.
- **Parser drift mid-task**: results may be partially empty (e.g. details
  without palette). Surface which part is missing; don't silently present
  degraded data as complete.
- After the MCP is healthy again, **re-run the failed calls** and reconcile
  with whatever the fallback produced.

## Close the flywheel

Repairs are the highest-value lessons — they were expensive to learn. After a successful diagnosis + fix:
`node scripts/skill-memory.mjs record --skill awwwards-doctor --phase repair --symptom "..." --rule "..." [--evidence <report path>]`. Distill folds recurring failure signatures into this installed copy so the next repair starts knowing them. When a rule proves out, `promote --skill awwwards-doctor` outputs it cleaned (no machine-local evidence paths) for the shipped-copy PR.

## Anti-patterns

- Retrying blocked requests in a loop — politeness rules and block
  detection exist precisely so this doesn't hammer awwwards.com.
- Diffing raw HTML to detect drift — cosmetic page changes would false-alarm
  daily; only parser-anchor probes matter.
- "Fixing" parsers by loosening them to return empty results quietly — a
  parse that can't find its anchors must error loudly (that is the drift
  signal).
- Treating the doctor's UNHEALTHY verdict as done because one check passed.

<!-- skill-memory:start -->
<!-- skill-memory:end -->

Attribution

INSANE0777INSANE0777
View sourceMore from INSANE0777 →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

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 (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

695601 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →