{ "listing": { "skills": [ { "path": "skills/scrape/SKILL.md", "name": "scrape", "description": "Build a full-site or multi-page Scrapy spider to get structured data from a website, in a new project or added to an existing one. Do not use for analyzing locally saved HTML, fixing or debugging an existing spider, schema-only or existing-spec work, Scrapy Cloud operations, or advisory questions.", "files": { "skills/scrape/SKILL.md": "62df384b9df2c02611d0f646458034f642ec6a63a81cba21f1ac6e10bd088aed", "skills/scrape/meta.json": "b06c0db827c3027c8c022e824a8a109c3478b321b0fcd28cce53dc7c02cbe7ff", "skills/scrape/references/docs-access.md": "405e1e8017a6e5d655989a9d14070dfc6a5abfa569222b73a3d7d840b870256e", "skills/scrape/references/extraction-spec.md": "6e5340a9583eb5d1c83398db6a11a5fe6c220ce11cdaac11814fa06e50bbd35b", "skills/scrape/references/python-environments.md": "d474c786394ad4dbb54126386b5512cf8553410581e3d81e581049e6977d1727", "skills/scrape/scripts/detect_projects.py": "b825fccb2321aad59506d796be0feb586053e68ed5db6463fc00695989477578", "skills/scrape/scripts/feedback_state.py": "f5a9f8e28d3fc0e25a77bf28ecf1277079c11b1c1de2379b41909968e691b200" } }, { "path": "skills/scrape-analyze-page/SKILL.md", "name": "scrape-analyze-page", "description": "Extract structured data (all available fields with values) from a page saved locally as an HTML file, optionally following a schema. Do not invoke when the user provides a URL. When invoking, pass the user's full request verbatim as args — do not pre-parse file paths and don't rephrase it.", "files": { "skills/scrape-analyze-page/SKILL.md": "4ab618699717abb9408933495fa1eb3e691d310ed90f58fe438a56fc520ea3fd", "skills/scrape-analyze-page/scripts/clean_html.py": "cac81f88ef65492d281a3cf1d729bcb03f41f45f1d2a8c71098c7ae3389a3edf", "skills/scrape-analyze-page/scripts/extract_metadata.py": "c7a384d599668c88062a6be39911f2b3255fcb6bda5f097eeba6deda3642691a", "skills/scrape-analyze-page/scripts/summarize.py": "1a210238d26f4ecf834ce87547f071bc32fa536c8cf6b648b5cbdc640b09407f" } }, { "path": "skills/scrape-plan/SKILL.md", "name": "scrape-plan", "description": "Plan a web scrape and author a validated extraction spec — explore a detail page, discover fields, confirm the schema, then validate it with more pages, HTML-variant comparison, extracted values, and an optional browser review, and present the plan for approval.", "files": { "skills/scrape-plan/SKILL.md": "70b9fde84241a1b89ed59fa393eae31fb3a1a6f6d1a0d7bafaf9ea22d47f884a", "skills/scrape-plan/assets/review.html": "5cf520f89f693287e481325d2aad7cae816fc523f4276ae6600c49c4559923e9", "skills/scrape-plan/assets/review.js": "80b53a7d54e26533b1920435725088668ec133ebc786fe85045824e7f6014fda", "skills/scrape-plan/assets/style.css": "3fda4c023b61286596425c3712426c79935df24ccac6b16b6ca6ab0b02964757", "skills/scrape-plan/references/explore-site.md": "df83601c3a8d2dd89b6dfd7b23988ccbf1517f55dce9c9ef7163e54f2c6daba9", "skills/scrape-plan/scripts/apply_classification.py": "8c8c0b45b82a5be9184ee207a5997394c53dd14f16c1c2042a023cec46d0012e", "skills/scrape-plan/scripts/download.py": "ce0d535abfe6746728c4fa57905ceafb9d38ecd04ec9f837805f643c37709a5d", "skills/scrape-plan/scripts/extract_links.py": "6f7b104e1a2c39b7b4bf152a476d890c4e01572b48295cf34835374b76e4f734", "skills/scrape-plan/scripts/extract_nav_values.py": "fe9dde176941d4950d73d799d87e9ea8281825a4bc298fa459c0958664ac94e8", "skills/scrape-plan/scripts/extract_values.py": "5b3afbea00428426a9dae7a420e05a4cd2344c8448565b25e165a23c17362efe", "skills/scrape-plan/scripts/make_fixtures.py": "881adb44e6fc6e6ff42d3424f5f244fe61622a65552f787613b633ae64dfe0e6", "skills/scrape-plan/scripts/run_review.py": "394496e3a232a7d3134c18b510432a28947576c4dfe467d48d350c23e7625519" } }, { "path": "skills/scrapy-extra/SKILL.md", "name": "scrapy-extra", "description": "Read this BEFORE writing, modifying, debugging, or explaining any Scrapy or web-poet code — spiders, page objects, pipelines, settings, selectors — down to a one-line fix, or scaffolding/configuring a Scrapy project, scrapy-poet, scrapy-zyte-api, or browser rendering. These libraries moved on since your training cutoff; invoke this FIRST. NOT for building a scraper for a given site (scrape), a saved HTML file (scrape-analyze-page), or Scrapy Cloud deploy/jobs (zyte).", "files": { "skills/scrapy-extra/SKILL.md": "64c225aa604553fa473357405b1df74400f394d94eebf67b2797591c1427d5b5", "skills/scrapy-extra/assets/project-template/cookiecutter.json": "1e8c46f4667f174d968db5aa3b2ad8987fdaf02d621960daffe34552789b0167", "skills/scrapy-extra/assets/project-template/{{cookiecutter.project_name}}/fixtures/.gitkeep": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "skills/scrapy-extra/assets/project-template/{{cookiecutter.project_name}}/pyproject.toml": "cdec83eac58714ebe8775580f7aaecba621bd94aebe2265c57dbaf63ac37f41b", "skills/scrapy-extra/assets/project-template/{{cookiecutter.project_name}}/scrapy.cfg": "e53d156e511ef198acfca001279e1bd957cf9f16c0a0e92927b663117e26edb4", "skills/scrapy-extra/assets/project-template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "skills/scrapy-extra/assets/project-template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/items.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "skills/scrapy-extra/assets/project-template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/pages/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "skills/scrapy-extra/assets/project-template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/settings.py": "aa713a1b34fd1e65105c30b2d1496a154f07acad9fb1ada959f9fb4707d2867d", "skills/scrapy-extra/assets/project-template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/spiders/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "skills/scrapy-extra/references/scrapy-poet.md": "a8494b6b63cf0e97b0d551b43235ce5e41aeaa727d0eab34e902c58d314121f4", "skills/scrapy-extra/references/scrapy-zyte-api.md": "22cf1b882d0e9963d2ee9052aa2438e3710884a474927c3d68f6ed9db6bee2a0", "skills/scrapy-extra/references/scrapy.md": "52f00ac4aeaabaf16751e1cb4a1938c865e1c2a6ad8e0823c726772b64e7da47", "skills/scrapy-extra/references/web-poet.md": "cf3d3e24a5c5fda47a0fa5bc1f58806347f54d4980de4261c41cdf6e99250ffc" } }, { "path": "skills/zyte/SKILL.md", "name": "zyte", "description": "Zyte APIs and cloud services: credentials (set up, log in, get an API key, or a blocked site); Scrapy Cloud (deploy, schedule or run a spider, manage cron jobs, list/stop jobs, inspect items and logs); recorded API usage (spend, requests, response times, status codes) and pricing (plans, tiers, discounts, cost estimates); how-to and docs questions about any Zyte product or account/billing, from docs.zyte.com. NOT for writing/debugging spiders locally (scrapy-extra) or estimating spend from code instead of recorded stats.", "files": { "skills/zyte/SKILL.md": "05fb2d2e74c5a11346447ed795ecdd0e841adb402c68772ff6db275623628e76", "skills/zyte/references/credentials.md": "d0f8b429fac5135deb8ea4bd56fe79a8047b29948b1d86bcced169394aa020a0", "skills/zyte/references/deployment.md": "47ab506b6f634af9ef92c73960693decca012d6557604ff7537dd7d0b8a97aaf", "skills/zyte/references/items-and-logs.md": "d1d3a281d10d39039915a67be227f8e2d74a201a8b8a73a87a37a00865adbefa", "skills/zyte/references/job-validation.md": "aafdd699feee085259ccb0311cdd0c439509133f0d6ad865491b3866bcb6c071", "skills/zyte/references/jobs.md": "08dc53261a06f55545a06e1311542225b74a51f5a5fd7969a36c5285e8f38820", "skills/zyte/references/periodic-jobs.md": "e685df6289ae2e987f68308fe34e30eee48dd1f035e58bca278fccba55566550", "skills/zyte/references/pricing.md": "932e679831c2862d234316c3ad09355111c6ffdf8f0549f3b9dd7491707844f8", "skills/zyte/references/scrapy-cloud.md": "ce91514246533a933c65531df94a911efcac2e50ee2153a0f17f66673f28c126", "skills/zyte/references/usage-stats.md": "10870b3bf1418deb669f295bf7bd49ad90bc3291cff952ac1e2a548732fd0d57", "skills/zyte/scripts/auth.py": "cbd314bd6ecc0f932179d331d00bfd6478772c7dc10aa390a4963a6a27958efb", "skills/zyte/scripts/env_keys.py": "5f89d4ed968b76dc50f04327d37edf36c208ce8e282b1d2d2321d0c487a552a6", "skills/zyte/scripts/oauth.py": "2ac970e4550c5b2f9ca3d2c69146ae3a640cac223b15ff0a3e62070f420476ef", "skills/zyte/scripts/project_org_lookup.py": "bb1811a264af722046eebdf764cb557753f7cd94c5c9ce980cc8a5dc10ec6ce7", "skills/zyte/scripts/scrapy_cloud_api.py": "0523e0f9a74ef0c01c61167be749b539406f0c1440bac856b1dc6daa5a191972", "skills/zyte/scripts/stack_tags.py": "f195151a5ab6fd3660031510a914d646039ffbfed4bae089f31a402337f043c1", "skills/zyte/scripts/wait_for_job.py": "dd3b3bfb9378fcca027c65dcd5e540b19a350ee1773a26fd94cfc6fd920a3f56", "skills/zyte/scripts/zyte_api_stats.py": "a738b25717f2a0ce2f21d34d686dcd567d82c6a94b9cb96cdf3628be2bb6c185" } } ], "hooks": [ { "path": "hooks/hooks.json", "sha256": "cfee65a2afa5cd9a68b07998767096cc47fc3f51efa604c6819de15d05b79829", "event": "Stop", "matcher": "*", "declaration": { "type": "command", "command": "uv", "args": [ "run", "--no-project", "${CLAUDE_PLUGIN_ROOT}/skills/scrape/scripts/feedback_state.py", "hook", "--source", "claude_code" ] }, "executed": false } ], "executions": [] } }