plugins/scrapin-aint-easy/SKILL.md
Documentation intelligence engine with graph-based API docs, algorithm library, and drift detection
npx skillsauth add markus41/claude plugins/scrapin-aint-easyInstall 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.
Documentation intelligence engine, algorithm library, and codebase/agent drift detection system.
# Semantic search across all indexed content
scrapin_search(query: "useQuery mutation", limit: 10, label_filter: "Symbol")
# For long result sets, page deterministically:
scrapin_search(query: "useQuery mutation", page_size: 5, cursor: "<next_cursor>")
# Graph traversal from a known node
scrapin_graph_query(start_id: "react-query:useQuery", hops: 2, include_siblings: true)
# Cypher equivalent: MATCH (s:Symbol {id: 'react-query:useQuery'})-[*1..2]-(n) RETURN n
# LSP-style hover lookup
scrapin_lsp_hover(symbol: "PaymentIntent", package_hint: "stripe")
# Search algorithms by description
scrapin_algo_search(query: "find shortest path in weighted graph", category: "graph", language: "ts")
# Get full detail for one algorithm
scrapin_algo_detail(name: "dijkstra")
# Returns: description, time/space complexity, TypeScript + Python code, related algos
# Trigger crawl for a source
scrapin_crawl_source(source_key: "stripe", force: true)
# Show changes since last crawl
scrapin_diff(source_key: "anthropic")
# Register a new source
scrapin_add_source(key: "fastify", name: "Fastify", base_url: "https://fastify.dev/docs", package_aliases: ["fastify"])
# Register a new algorithm source
scrapin_add_algo_source(key: "leetcode-patterns", url: "https://seanprashad.com/leetcode-patterns", type: "single_page")
# Scan codebase for API drift
scrapin_code_drift_scan(project_root: "/path/to/project")
# Get latest code drift report
scrapin_code_drift_report()
# Check all agents for drift
scrapin_agent_drift_status(page_size: 20)
# Get detail for one agent
scrapin_agent_drift_detail(agent_id: "backend-architect")
# Acknowledge intentional drift
scrapin_agent_drift_acknowledge(agent_id: "backend-architect", notes: "Updated for v2 API")
# Show exact diff since baseline
scrapin_agent_drift_diff(agent_id: "backend-architect")
# Graph statistics
scrapin_graph_stats()
# Cron job status
scrapin_cron_status()
scrapin_graph_query(start_id: "stripe:payments", hops: 1, edge_types: ["BELONGS_TO"])
# Cypher: MATCH (s:Symbol)-[:BELONGS_TO]->(m:Module {id: 'stripe:payments'}) RETURN s
scrapin_search(query: "deprecated", label_filter: "Symbol")
# Then for each: scrapin_graph_query(start_id: id, hops: 1, edge_types: ["SUPERSEDES"])
# Cypher: MATCH (old:Symbol {deprecated: true})-[:SUPERSEDES]->(new:Symbol) RETURN old, new
scrapin_graph_query(start_id: "my-lib:sortUsers", hops: 1, edge_types: ["USES_ALGO"])
# Cypher: MATCH (s:Symbol {id: 'my-lib:sortUsers'})-[:USES_ALGO]->(a:AlgoNode) RETURN a
scrapin_algo_search(query: "sort array of objects by multiple keys", category: "sorting")
scrapin_algo_search(query: "detect cycle in directed graph", category: "graph")
scrapin_algo_search(query: "longest common subsequence", category: "dynamic-programming")
scrapin_algo_search(query: "observer pattern event handling", category: "design-patterns")
scrapin_algo_search(query: "circuit breaker retry", category: "architectural-patterns")
scrapin_code_drift_scan()scrapin_add_source() + scrapin_crawl_source()scrapin_graph_query() with edge_types: ["SUPERSEDES"] to find replacementsscrapin_agent_drift_status()scrapin_agent_drift_detail(agent_id)scrapin_agent_drift_diff(agent_id)scrapin_agent_drift_acknowledge(agent_id, notes: "reason")When looking up a specific symbol, always include siblings for context:
# Don't do this (missing context):
scrapin_graph_query(start_id: "stripe:PaymentIntent.create", hops: 1)
# Do this (includes sibling methods on the same page):
scrapin_graph_query(start_id: "stripe:PaymentIntent.create", hops: 1, include_siblings: true)
Siblings are symbols defined on the same documentation page — they're almost always related.
@config/rate-limits.yaml for per-source settings| Job | Cron | Human-Readable |
|---|---|---|
| full-sweep | 0 3 * * * | Daily 3am |
| staleness-check | */30 * * * * | Every 30 min |
| missing-doc-scan | 0 */6 * * * | Every 6 hours |
| openapi-sync | 0 1 * * 1 | Monday 1am |
| embedding-rebuild | 0 4 * * 0 | Sunday 4am |
| algo-sweep | 0 2 * * 0 | Sunday 2am |
| code-drift-scan | 0 */4 * * * | Every 4 hours |
| agent-drift-scan | */15 * * * * | Every 15 min |
When using this plugin to set up a new project's Claude Code configuration, the
scrapin_setup_interview prompt template enforces a thorough, interactive discovery
process. Key rules:
development
Enhanced plan-authoring skill with Pre-Writing context gathering, task metadata, non-TDD templates, Red Flags, telemetry, and an automated plan linter. Use when you have a spec or requirements for a multi-step task, before touching code.
tools
Ultraplan cloud planning — kick off a plan in the cloud from your terminal, review and revise in the browser, then execute remotely or send back to CLI
tools
--- name: mcp description: Configure MCP servers for Claude Code — stdio vs HTTP, authentication, Tools/Resources/Prompts distinction, channels (CI webhook, mobile relay, Discord bridge, fakechat), and cost of always-loaded tools. Use this skill whenever adding an MCP server, debugging connection issues, choosing between MCP Tools vs Prompts vs Resources, installing channel servers, or managing .mcp.json. Triggers on: "MCP server", "mcp config", "add Obsidian MCP", "install context7", "channels"
tools
Design, install, and debug Claude Code hooks across the full lifecycle (PreToolUse, PostToolUse, PostToolUseFailure, UserPromptSubmit, Notification, Stop, SessionStart, SessionEnd, PreCompact, SubagentStart, SubagentStop, TeammateIdle, PermissionRequest, Setup). Use this skill whenever a user asks to "install hooks", "add a pre-tool hook", "format on save", "block dangerous commands", "protect sensitive files", "restore context after compact", "enforce tests before stop", capture subagent telemetry, or runs /cc-hooks. Also triggers on "hooks not firing", "hook keeps blocking", or any configuration of .claude/settings.json hook sections.