.claude/skills/web-to-docs/SKILL.md
Convert a website or page with related links into a local collection of Markdown files with an index. Follows project docs conventions (ua/en bilingual structure). Uses WebFetch — no external dependencies. Triggers on: "web to docs", "website to markdown", "save docs locally", "convert site", "download docs", "fetch docs", "scrape to markdown".
npx skillsauth add nmdimas/ai-community-platform web-to-docsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fetch a web page and its related links, convert each to Markdown, and save
them as a local collection with an automatically generated index.
Follows this project's documentation conventions — bilingual folder structure
with ua/ and en/ subdirectories.
docs/ directoryIMPORTANT: Before writing files, read skills/documentation/SKILL.md —
it is the single source of truth for folder structure, language rules,
INDEX.md format, and all documentation conventions. This skill MUST follow
those rules for Steps 6-7 (writing files and generating indexes).
WebFetch tool. No external CLI (no wget, curl, puppeteer).Ask the user or infer from context:
| Parameter | Default | Description |
|-----------|---------|-------------|
| url | (required) | The starting URL to fetch |
| output_dir | ./docs/fetched/<domain-slug>/ | Base directory (lang subfolders created automatically) |
| lang | auto-detect | Source language: en, ua, or both. Auto-detected from page content. |
| scope | path-prefix | path-prefix = links under the same URL path prefix; same-domain = any link on the same host |
| depth | 1 | 1 = only links on the starting page; 2 = also links found on those pages |
| max_pages | 30 | Maximum number of pages to fetch |
If the user just provides a URL, proceed with all defaults. Do NOT ask for parameters unless the user's intent is ambiguous.
WebFetch with the starting URL.
.md file).From the WebFetch response for the starting page:
[text](url) patterns and bare URLs).#section).?page=N).https://docs.example.com/v2/guide/intro → prefix https://docs.example.com/v2/guide/. Links like .../v2/guide/setup pass; .../blog/news does not..pdf, .zip, .png, .jpg, .gif, .svg, .css, .js, .xml, .json, .woff, .ttf).Present the discovered links as a numbered list:
Found 12 related pages under https://docs.example.com/v2/guide/:
1. /v2/guide/setup — "Getting Started"
2. /v2/guide/config — "Configuration"
3. /v2/guide/deployment — "Deployment"
...
Enter numbers to include (e.g., "1,3,5-8"), "all", or "none":
max_pages.For each selected URL (respecting max_pages):
WebFetch with the URL.
depth == 2, extract links from this page using the same rules as Step 3. Queue newly discovered links (do NOT recurse further).Parallelism: issue up to 5 WebFetch calls simultaneously where possible.
After all depth-2 discoveries (if applicable), present NEW links to the user for another confirmation round (same as Step 4), then fetch those.
For each fetched page, create a .md file inside the appropriate language subfolder:
<output_dir>/<lang>/ (e.g., docs/fetched/a2a-protocol-org/en/).references/filename-rules.md. Quick rules:
-, lowercase, replace special chars with -.-2, -3, etc..md.---
source: <original URL>
fetched: <YYYY-MM-DD>
lang: <en|ua>
---
<output_dir>/<lang>/<filename>.md using the Write tool.Create three index/README files following references/index-template.md:
<output_dir>/<lang>/README.md# <Site or Section Title>
> Fetched from [<starting URL>](<starting URL>) on YYYY-MM-DD.
> Generated by the `web-to-docs` skill.
## Pages
- [**<Page Title>**](./<filename>.md)
<First 1-2 sentences, ~150 chars max>
- [**<Page Title>**](./<filename>.md)
<First 1-2 sentences, ~150 chars max>
# heading from the Markdown, or link text, or filename.<output_dir>/README.md# <Site or Section Title>
> Source: [<starting URL>](<starting URL>)
> Fetched: YYYY-MM-DD | Generated by `web-to-docs`
## Languages
- [English](./en/README.md)
- [Українська](./ua/README.md) *(if bilingual)*
## Language Rule
- `ua/` — канонічна українська версія
- `en/` — English version
This root README links to language-specific READMEs and follows the project
convention used in docs/specs/, docs/agents/, docs/product/.
Print a summary:
Done! Saved X pages to <output_dir>/<lang>/:
README.md — Table of contents
getting-started.md — "Getting Started with FooBar"
configuration.md — "Configuration Reference"
...
Structure:
<output_dir>/
├── README.md — Root index with language links
└── en/
├── README.md — English section index
├── what-is-a2a.md
└── ...
Skipped (errors): Y pages
- https://example.com/broken (404)
| Scenario | Behavior |
|----------|----------|
| Redirect to different host | Inform user, ask whether to follow |
| Fetch fails on starting page | Report error, stop entirely |
| Fetch fails on subsequent page | Log warning, skip, continue |
| Max pages reached | Inform user, stop fetching, save what was fetched |
| No links discovered | Save only starting page + minimal index |
| All links filtered out by scope | Inform user, suggest same-domain scope |
| Output directory has existing .md files | Ask user: overwrite, merge, or new directory |
development
Convert a website or page with related links into a local collection of Markdown files with an index. Follows project docs conventions (ua/en bilingual structure). Uses WebFetch — no external dependencies. Triggers on: "web to docs", "website to markdown", "save docs locally", "convert site", "download docs", "fetch docs", "scrape to markdown".
documentation
Translation agent for ua/en bilingual content. Handles UI labels, help text, error messages, docs, and agent/system prompts. Finds translatable elements, detects supported languages, translates by context, maintains term consistency. Triggers on: "translate", "translation", "i18n", "missing translations", "mirror docs", "sync languages".
development
Security review agent for PHP/Symfony codebase. Performs manual-style security review with OWASP ASVS 5.0 category mapping, severity ratings, and PHP/Symfony-specific checklist. Triggers on: "security review", "security audit", "vulnerability check", "OWASP review", "pentest review", "security scan".
development
Auto-bump pipeline monitor version when builder/monitor/pipeline-monitor.sh is modified. Triggers automatically as a post-edit convention — not user-invocable directly. When any change is made to pipeline-monitor.sh, increment the patch version in the "# Version:" header comment. Triggers on: "pipeline-monitor", "monitor version", "bump monitor".