본문으로 건너뛰기
cccskills
무료GitHub에 공개

website-health

Audit a live website across 7 dimensions — SEO, performance, links, privacy, accessibility, security, content — with PASS/WARN/FAIL gates. Use when checking a deployed site's health or quality. Trigger on "audit my website", "site health", "check SEO", "is my site accessible", "website-health <url>".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(17)

  • SKILL.md19.5 KB
  • templates/a11y/patterns.md2.5 KB
  • templates/a11y/summary.md1.3 KB
  • templates/content/patterns.md3.7 KB
  • templates/content/summary.md755 B
  • templates/links/patterns.md5.1 KB
  • templates/links/summary.md914 B
  • templates/overview.md2.6 KB
  • templates/performance/patterns.md4.3 KB
  • templates/performance/summary.md807 B
  • templates/privacy/patterns.md5.3 KB
  • templates/privacy/summary.md825 B
  • templates/report-template.md1.2 KB
  • templates/security/patterns.md3.3 KB
  • templates/security/summary.md1.2 KB
  • templates/seo/patterns.md5.5 KB
  • templates/seo/summary.md737 B

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

/website-health — Website Health Audit

Orchestrates a cross-cutting website audit across 7 dimensions. Designed for periodic invocation against live sites.

Architecture — hybrid orchestrator:

  • Native checks (new lib scripts): seo, performance, links, privacy, content
  • Pure delegation (existing sub-skill owns the logic): a11y → /frontend a11y, security → /security-verify dast

Quick Start

/website-health <url>                      # quick summary, all 7 dimensions (L1)
/website-health full <url>                 # deep audit, all dimensions (L2+)
/website-health seo <url>                  # single dimension
/website-health performance <url>          # single dimension
/website-health links <url>                # single dimension
/website-health privacy <url>              # single dimension
/website-health a11y <url>                 # delegates to /frontend a11y + pa11y
/website-health security <url>             # delegates to /security-verify dast + extras
/website-health content <url>              # single dimension
/website-health report <url>               # full audit + persistent markdown report
/website-health patterns <dimension>       # show fix recipes (seo, performance, links, privacy, a11y, security, content)

Workflow

Step 1: Parse Arguments

Parse $ARGUMENTS for subcommand, URL, and optional flags (--stack <name>).

Stack auto-detection (when no URL is provided, check in order):

StackMarkerbaseURL extraction
Astro Starlightastro.config.mjs / astro.config.ts + @astrojs/starlight in package.jsonsite: field in astro config, or SITE env var
Astroastro.config.mjs / astro.config.tssite: field in astro config, or SITE env var
Hugohugo.toml or config.toml with baseURLbaseURL value
Netlifynetlify.tomlfrom underlying framework config
Next.jsnext.config.js or next.config.tsNEXT_PUBLIC_SITE_URL env or localhost
Gatsbygatsby-config.js with siteMetadata.siteUrlsiteUrl value
Genericpackage.json with homepagehomepage value
# Astro config extraction
if [ -f astro.config.mjs ] || [ -f astro.config.ts ]; then
  ASTRO_SITE=$(grep -E "^\s*site:" astro.config.mjs astro.config.ts 2>/dev/null | head -1 | sed "s/.*site:\s*['\"]//;s/['\"].*//" || echo "")
  STARLIGHT=$(grep -l "@astrojs/starlight" package.json 2>/dev/null)
  STACK="astro"
  [ -n "$STARLIGHT" ] && STACK="astro-starlight"
fi

Stack-specific behavior:

  • astro-starlight: activates Starlight-specific content checks (see Dimension: Content — Starlight Mode)

  • astro: standard checks + Astro build output validation

  • All other stacks: standard 7-dimension audit

  • If no URL and no marker: report error "No URL provided and no website project detected. Run: /website-health <url>"

  • If no subcommand: read and show templates/overview.md

  • If full: run all 7 dimensions at deep depth

  • If report: run all 7 dimensions + write report to docs/website-health/report-YYYY-MM-DD.md

Step 2: Check Tool Availability

bash "$HOME/.claude/skills/website-health/lib/tool-check.sh"

Note which tools are available. Each dimension adapts its checks based on available tools. Always report tool availability at the start of output.

Step 3: Connectivity Pre-check

HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 "$URL" 2>/dev/null || true)

If 000: report unreachable and exit. Otherwise proceed.

Step 4: Route to Dimension(s)

Run the requested dimension(s). For summary/full modes, run all 7 sequentially.

Dimension execution order (for full and summary):

  1. SEO
  2. Performance
  3. Links
  4. Privacy
  5. Accessibility
  6. Security
  7. Content

Step 5: Produce Report

Use the uniform output format (see below). For report mode, additionally write to disk using templates/report-template.md as scaffold.


Dimension: SEO

Technical on-page SEO audit. Replaces Ahrefs Site Audit for meta analysis.

Run:

bash "$HOME/.claude/skills/website-health/lib/seo-checker.sh" "$URL" [--depth N] [--sample N]

Checks:

CheckPASSWARNFAIL
Title tag50-60 chars, unique per page<50 or >60 charsMissing
Meta description150-160 chars, uniqueLength offMissing
H1 tagExactly 1 per page>1 H1Missing
OG + Twitter CardsAll 4 OG + twitter:cardPartial (>2)<2 present
robots.txtNot blocking critical pathsBlocks non-sensitiveMissing or blocks sitemap
sitemap.xmlValid XML, URLs 200Some 3xx/4xxMissing or invalid
Canonical URLsSelf-referencing, presentPresent but wrongMissing >50%
Hreflang (bilingual)IT/EN cross-refs validAsymmetricMissing on bilingual pages
Structured data (JSON-LD)Present on key pagesIncompleteMissing entirely
RSS/Atom feedValid, recent entriesStale >90 daysMissing

Templates:

  • L1: Read templates/seo/summary.md
  • L2: Read templates/seo/patterns.md (fix examples, Hugo-specific tips)

Dimension: Performance

Core Web Vitals and server-side performance.

Run:

bash "$HOME/.claude/skills/website-health/lib/performance-checker.sh" "$URL"

Primary tool: lighthouse CLI. Fallback: curl-only header checks.

Checks:

CheckPASSWARNFAIL
Lighthouse Performance>=90>=50<50
Lighthouse Best Practices>=90>=50<50
LCP<2.5s<4s>=4s
CLS<0.1<0.25>=0.25
INP<200ms<500ms>=500ms
Page weight<1MB<3MB>=3MB
Compressionbrotli or gzipgzip onlyNone
Cache headersCache-Control + ETagCache-Control onlyNone
Image optimizationWebP/AVIF, lazy-loadPartialNone
Font loadingfont-display:swap, preloadPresentRender-blocking

Templates:

  • L1: Read templates/performance/summary.md
  • L2: Read templates/performance/patterns.md

Dimension: Links

Link health audit — broken links, redirect chains, orphan pages.

Run:

python3 "$HOME/.claude/skills/website-health/lib/link-crawler.py" "$URL" --depth 3 --timeout 5 --output json

Checks:

CheckPASSWARNFAIL
Broken internal (4xx)01-5>5
Broken external (4xx/5xx)01-10>10
Redirect chains (>2 hops)01-3>3
Orphan pages01-3>3
Max link depth<=34-5>5
Nofollow on internal links01-2>2

Templates:

  • L1: Read templates/links/summary.md
  • L2: Read templates/links/patterns.md

Dimension: Privacy

GDPR and privacy compliance audit.

Run:

bash "$HOME/.claude/skills/website-health/lib/privacy-checker.sh" "$URL"

Optional: playwright-cli for cookie consent interaction testing.

Checks:

CheckPASSWARNFAIL
Cookie consent bannerPresent, opt-in, 3 actionsPresent but opt-outMissing
Pre-consent cookies0 non-essential1-2 tracking>2 or analytics
Privacy policy linkFooter + cookie bannerFooter onlyMissing
Cookie policyExists, lists categoriesIncompleteMissing
HTTPS redirectHTTP->HTTPS 301302No redirect
Set-Cookie flagsSecure+HttpOnly+SameSiteMissing SameSiteMissing Secure/HttpOnly
Third-party trackersAll declaredSome undeclaredUndeclared trackers

Templates:

  • L1: Read templates/privacy/summary.md
  • L2: Read templates/privacy/patterns.md

Dimension: Accessibility (DELEGATES)

Delegates to existing skills. Do NOT reimplement accessibility checks.

Delegation chain:

  1. Invoke /frontend a11y with the URL — full WCAG 2.1 AA audit
  2. If pa11y is installed: pa11y "$URL" --standard WCAG2AA --reporter json
  3. Cross-reference Lighthouse accessibility score if performance was already run

Templates:

  • L1: Read templates/a11y/summary.md (documents delegation)
  • L2: Read templates/a11y/patterns.md

Dimension: Security (DELEGATES)

Delegates to existing skills plus additional checks.

Delegation:

  1. Invoke /security-verify dast "$URL" — OWASP HTTP headers, CORS, TLS, info disclosure
  2. Parse dast output and merge into report

Additional checks (not in dast-runner.sh):

CheckToolPASSWARNFAIL
Cert expiryopenssl/curl -v>30 days7-30 days<7 days
SRI on CDN scriptspython3All CDN scripts have integrity>50% have SRI<50%
Mixed contentpython30 HTTP on HTTPS1-2 non-critical>2 or script/iframe

Templates:

  • L1: Read templates/security/summary.md
  • L2: Read templates/security/patterns.md

Dimension: Content

Content quality analysis.

Run:

python3 "$HOME/.claude/skills/website-health/lib/content-analyzer.py" "$URL" --output json

Checks:

CheckPASSWARNFAIL
Duplicate content (SHA-256)01-3 near-dupes>3
Thin content (<300 words)01-5 thin>5
Missing alt text01-5 missing>5
Heading hierarchyProper H1→H2→H3Minor skipsH1 missing/major gaps
Language consistency<5% foreign words5-15%>15%
Stale content (>1yr)01-5 pages>5
Readability (Flesch)InformationalInformationalN/A

Templates:

  • L1: Read templates/content/summary.md
  • L2: Read templates/content/patterns.md

Dimension: Content — Starlight Mode

Active only when --stack astro-starlight is passed (auto-set by stack detection). Runs IN ADDITION to the standard Content checks.

Starlight-specific checks:

CheckPASSWARNFAIL
Sidebar config coverageAll src/content/docs/**/*.md referenced in sidebar<20% uncovered>20% orphan pages (not in sidebar)
Search indexPagefind / built-in search enabledSearch present but staleNo search configured
i18n translation parity (IT↔EN)IT and EN page counts match ±5%6-20% gap>20% gap or default lang missing
Frontmatter completenesstitle, description present on all pages<5% missing description>5% missing title or description
prev/next navigationDefined or auto-inferred for all doc pagesMissing on >10% of pagesBroken prev/next links
Versioned docs (if present)All versions have redirect from /docs/ rootMissing redirect for 1 version>1 version unreachable
Draft pages in production0 pages with draft: true served—Any draft: true page served live

Detection of Starlight structure:

# Verify expected Starlight directories exist
ls src/content/docs/ 2>/dev/null
grep -r "sidebar" astro.config.mjs astro.config.ts 2>/dev/null | head -5
# Check for i18n
grep -E "locales|defaultLocale" astro.config.mjs astro.config.ts 2>/dev/null

Output Format

All dimensions use this uniform structure:

## Website Health — <domain> — <date>

### <Dimension> [PASS|WARN|FAIL]
- ✓ <passing finding>
- ⚠ <warning finding>
- ✗ <failing finding>
- [SKIP] <skipped check> — <tool> not installed

### ...

Overall: [PASS|WARN|FAIL]

Gate logic: FAIL if any dimension FAIL. WARN if any WARN. PASS only if all pass. Skipped checks do not affect the gate.


Post-Audit: Recommendations

After presenting dimension results, ALWAYS generate a Recommendations section by triaging findings.

Triage Rules

Quick Wins (suggest fixing immediately — <5 min each):

  • Missing meta tags (title, description, OG) → one-line template edit
  • Missing HTTP headers (Cache-Control, ETag, SameSite) → config file edit
  • Missing alt text on small number of images → content edit
  • HTTPS redirect issues → server/CDN config
  • Single broken internal links → content fix
  • Missing canonical URLs → template one-liner

Tech Debt (suggest GitHub issue via /health issues):

  • Structural SEO gaps (missing JSON-LD, incomplete hreflang across all pages)
  • Multiple broken external links (needs manual review of replacements)
  • Content quality issues (thin content, stale pages — needs writing)
  • Missing cookie consent categories (needs legal review)
  • Performance optimization requiring code changes (image format migration, font subsetting)
  • Accessibility issues requiring template refactoring

Install to Unlock (informational):

  • Any [SKIP] findings from missing tools → show install command

Output Format

After the dimension results and Overall gate, generate:

## Recommendations

### Quick Wins (fix now)
- [Dimension] <what to fix> — <where/how, 1 line>

### Tech Debt (create issues)
- [Dimension] <what to fix> — <why it's bigger>

### Install to Unlock
- `<install command>` — <what it enables>

If no quick wins: "No quick wins — all findings require deeper investigation." If no tech debt: "No tech debt items — all findings are quick wins or informational."

Next Steps

After Recommendations, show actionable next steps:

## Next Steps

- **Quick Wins**: Fix the items listed above — small config/template edits
- **Fix Recipes**: `/website-health patterns <dimension>` for code examples
- **Create Issues**: `/health issues` to open GitHub BACKLOG issues for tech debt
- **Full Project Audit**: `/health full` to add code health dimensions

The "Full Project Audit" line only shows when running standalone /website-health. When invoked from within /health full, omit it (already running everything).


Subcommand: patterns

Show L2 fix recipes for a specific dimension.

/website-health patterns seo
/website-health patterns performance
/website-health patterns links
/website-health patterns privacy
/website-health patterns a11y
/website-health patterns security
/website-health patterns content

Steps:

  1. Read templates/<dimension>/patterns.md
  2. Present content to user

Use after an audit to get detailed fix examples for a specific dimension.


Graceful Degradation

The lib/tool-check.sh script runs at the start. Each dimension adapts:

Tool MissingFallback
lighthousecurl-only: compression, cache, page weight (no CWV)
pa11y/frontend a11y alone
xmllintPython lxml or skip sitemap validation
playwright-clicurl-only cookie/banner analysis
beautifulsoup4Python html.parser (stdlib)
opensslcurl -v for cert info

Minimum viable: curl + python3 only. All 7 dimensions produce output.


What We Cannot Check (Ahrefs Proprietary)

These require Ahrefs' proprietary crawl index — no free tool replicates them:

  • Historical backlink index (third-party links pointing TO you)
  • Organic traffic estimates per page
  • Domain Rating / URL Rating
  • Keyword rankings and search volume

Use Ahrefs CSV exports for baseline comparison when available.


Integration

Two entry points, same outcome (quick wins + tech debt issues):

  • /health full (recommended for website projects) — runs all project dimensions including website, then offers /health issues for everything. Context from /website-health is preserved because it runs in the same conversation.
  • /website-health standalone — runs 7 website dimensions, shows recommendations, points to /health issues for issue creation. Context is already in the conversation.

Key: /health issues doesn't re-run checks. It reads findings already in the conversation and proposes gh issue create commands. Works after either entry point.

  • Skill is stateless — designed for periodic invocation via /loop or future headless cron

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Validate WCAG 2.1 Level AA compliance and accessibility best practices. Use when performing accessibility audits and WCAG certification.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

matteocervelli/llms252026년 5월 22일 업데이트

analysis

무료

Analyze feature requirements, dependencies, and security considerations. Use when starting feature implementation from GitHub issues to understand scope, technical feasibility, and risks.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

matteocervelli/llms252026년 5월 22일 업데이트

analytics

무료

Run SQL queries against psql, BigQuery, or MySQL from the terminal, including natural-language-to-SQL and schema exploration. Use when analyzing data, inspecting DB state, or debugging tables. Trigger on "query the database", "SQL", "show me data from", "explore table".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

matteocervelli/llms252026년 5월 22일 업데이트

Design REST APIs or function contracts with clear request/response specifications, error handling patterns, authentication strategies, and comprehensive documentation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

matteocervelli/llms252026년 5월 22일 업데이트

Generate comprehensive API endpoint tests for REST and GraphQL APIs. Creates tests for all HTTP methods, status codes, authentication, and validation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

matteocervelli/llms252026년 5월 22일 업데이트

Design component architecture and module structure using established architectural patterns for clean, maintainable, and scalable systems.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

matteocervelli/llms252026년 5월 22일 업데이트

matteocervelli의 스킬 모두 보기

이 스킬의 문제 신고