skills/fc-local/SKILL.md
Local web scraping & search tool. ⚠️ MUST use when: (1) Scrape/crawl web pages to Markdown, (2) Web search, (3) Batch scrape multiple URLs, (4) Generate LLMs.txt. 🔴 Trigger when user mentions URL scraping, site crawling, web search, or content extraction. 🔄 If anti-crawling blocks fc-local, auto-switch to CDP fallback (scrape-cdp.sh).
npx skillsauth add sampx/agent-tools fc-localInstall 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.
CLI wrapper for web scraping and crawling.
| Command | Description |
|---------|-------------|
| fc-cli | CLI for scrape/crawl operations |
| my-fc | Service manager (start/stop/status/health/logs) |
| chrome_remote | Chrome CDP manager (for anti-crawling fallback) |
my-fc status # Check container health
my-fc health # Full check (API + scrape test)
my-fc start # Start Docker services
my-fc logs api 100 # View API logs
chrome_remote -b # Start Chrome with remote debugging
chrome_remote status # Check CDP status
chrome_remote stop # Stop Chrome CDP
Verify dependencies:
which fc-cli my-fc chrome_remote agent-browser jq
| Need | Command | Options |
|------|---------|---------|
| Single page | scrape <url> | --format, --clean🤖, --prompt🤖 |
| Entire site | crawl <url> | --limit, --wait, --clean🤖 |
| Multiple URLs | batch <file> | --wait |
| Link discovery | map <url> | --limit, --filter |
| Web search | search <query> | --limit |
| LLMs.txt | llmstxt <path> | --full |
| Job status | *-status <id> | --wait |
🤖 = AI feature, high cost. Use only when user explicitly requests.
fc-cli scrape <url> [-o .wopal-space/INBOX/docs/scraped/<name>.md] [--format markdown|html|links] [--clean] [--prompt <text>]
-o: Output file path (default: .wopal-space/INBOX/docs/scraped/<name>.md)--format: Output format (default: markdown)--clean🤖: AI removes nav, ads, sidebars--prompt🤖: Custom AI processing (implies --clean)fc-cli crawl <url> --limit <n> --wait [-o .wopal-space/INBOX/docs/scraped/<site>] [--clean] [--prompt <text>]
--limit: Max pages to crawl--wait: Wait for completion-o: Output directory (default: .wopal-space/INBOX/docs/scraped/<site>)--clean🤖: AI content cleaning--prompt🤖: Custom AI processingOutput: Directory structure with .md files per page.
# Input: one URL per line or JSON array
fc-cli batch urls.txt --wait [-o results.json]
fc-cli map <url> [--limit <n>] [--filter <pattern>]
--filter: Wildcard pattern (*api*, */docs/v1/*)# From URL
fc-cli llmstxt https://example.com
# From local directory
fc-cli llmstxt ./crawl-output [--full]
Most commands return job ID immediately. Use --wait for sync execution:
# Async
fc-cli crawl https://example.com
# Returns: job_abc123
# Check status
fc-cli crawl-status job_abc123
# Or sync mode
fc-cli crawl https://example.com --wait
Status commands: crawl-status, batch-status
| Option | Description |
|--------|-------------|
| --api-url <url> | Override API URL |
| -o, --output <file> | Save to file/directory |
| -v, --verbose | Detailed logging |
🔴 NEVER use AI options (--clean, --prompt) unless user EXPLICITLY requests them.
| User says | Interpretation | Your action |
|-----------|----------------|-------------|
| "抓取这个页面" | Plain scrape | fc-cli scrape <url> |
| "结构化获取" | Markdown output (already structured) | fc-cli scrape <url> |
| "爬取整个网站" | Plain crawl | fc-cli crawl <url> |
| "用 AI 清理内容" | Explicit AI request | fc-cli scrape <url> --clean ✅ |
Key principle: scrape already returns structured Markdown. "结构化" ≠ AI extraction.
AI options consume credits and are slower. Default to plain scrape/crawl.
.wopal-space/INBOX/docs/scraped/ using -o option--limit firstWhen fc-local fails due to anti-crawling (page keeps navigating, 403/500, captcha, empty content), use agent-browser with user's Chrome CDP.
Anti-crawling indicators:
page is navigating and changing the content# From skill directory:
./scripts/scrape-cdp.sh "<url>" [-o .wopal-space/INBOX/docs/scraped/<name>.md]
The script automatically:
chrome_remote if not running# 1. Start Chrome CDP
chrome_remote -b
# 2. Navigate and extract
agent-browser --cdp 9222 open "<url>"
agent-browser --cdp 9222 wait --load networkidle
agent-browser --cdp 9222 get text body > .wopal-space/INBOX/docs/scraped/<name>.md
# 3. Cleanup
chrome_remote stop
Why this works: chrome_remote uses user's real Chrome profile with cookies/login state, bypassing anti-bot detection.
When commands fail or return unexpected results:
# Quick diagnostics
my-fc status # Container health
my-fc health # Full API test
my-fc logs api 100 # Recent API logs
my-fc logs playwright-service 50 # Playwright errors
Common issues:
my-fc restart--timeout or check site speed👉 Full guide: references/TROUBLESHOOTING.md
references/API_REFERENCE.mdreferences/EXAMPLES.mdreferences/TROUBLESHOOTING.mdtools
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
testing
Master specification for WopalSpace. [MUST LOAD FIRST] — Load this skill when Wopal is uncertain how to proceed, task intent is ambiguous, or performing ontology/space maintenance. Triggers: Ambiguous task intent, "what workflow to use", "what skill to load", skill management (install/remove/search), space maintenance (worktrees, sync, PR contribution, promote), multi-space management. [CRITICAL] MUST LOAD whenever interacting with ontology repo operations (update/sync/contribute/promote/PR), even if the user does not explicitly say "upstream sync".
development
Workspace-level Git worktree management — create, list, remove, and prune isolated development environments. Use this skill whenever the user needs to create a worktree, set up an isolated workspace, work on multiple features in parallel, list existing worktrees, check what worktrees exist, remove or delete a worktree, clean up stale worktrees, or manage git working trees in any way. Triggers include "create worktree", "new worktree", "list worktrees", "show worktrees", "remove worktree", "delete worktree", "clean up worktree", "prune worktree", "isolated environment", "parallel development", "worktree for <project>", or any request involving git worktree operations.
development
Issue/Plan-driven development workflow. Tasks must be backed by a GitHub Issue or Plan. Trigger: issue references like #14, creating issues, creating plans, implementing plans, executing plans, checking plans, verifying plans, Plan lifecycle transitions (approve/complete/verify/archive), decomposing PRDs into Issues. Skip: spec-driven workflows, research/discussion/explanation only, small ad-hoc changes that don't need an Issue or Plan.