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:
tools
Build Teams-native agents with the Teams SDK (formerly Teams AI Library v2) — App class, activity routing, adaptive cards, streaming, AI-generated labels, feedback, message extensions, Teams-as-MCP-server, and the bring-your-own-AI pattern with Agent Framework.
tools
Run agents on Microsoft Foundry (formerly Azure AI Foundry) Agent Service — prompt agents vs hosted agents, threads/runs and the Responses API, built-in tools (Bing grounding, code interpreter, file search, MCP, OpenAPI, A2A), connected agents, Entra agent identity, SDKs, and observability/evaluations.
tools
Build and host custom engine agents with the Microsoft 365 Agents SDK — AgentApplication, the Activity protocol, channel reach via Azure Bot Service, hosting Agent Framework or Semantic Kernel engines, and the Agents Toolkit/Playground workflow. Successor to the Bot Framework SDK.
tools
Design, govern, and extend Microsoft Copilot Studio agents — topics, generative orchestration, knowledge, tools and MCP, agent flows, autonomous triggers, publishing channels, Copilot Credits pricing, and solution-based ALM on Power Platform.