The Problem

AI coding agents need production-grade web scraping and automation capabilities on the Apify platform, but wiring together Actor selection, input shaping, run management, and result formatting requires significant domain knowledge. This repository provides pre-packaged skills so agents can execute Apify platform tasks without custom integration code.

What This Does

This repo delivers 5 Apify skills through markdown-defined skill files in skills/. The core orchestration lives in scripts/generate_agents.py, which defines 7 functions including main, load_template, parse_frontmatter, collect_skills, render, and validate_marketplace. These functions read skill definitions and generate agent-ready configurations. The skills themselves are stored as markdown files: skills/apify-ultimate-scraper/SKILL.md provides a universal scraper with 130+ curated Actors across Instagram, Facebook, TikTok, YouTube, X, LinkedIn, Google Maps, and more, with fallback to the Apify Store; skills/apify-actor-development/ covers Actor creation and debugging in JavaScript, TypeScript, or Python; skills/apify-actorization/ converts existing code into runnable Actors; skills/apify-generate-output-schema/ auto-derives dataset and output schemas; and skills/apify-ultimate-scraper/ (appears to be the primary scraper skill). The .claude-plugin/plugin.json and .claude-plugin/marketplace.json enable one-command installation into Claude Code and compatible agents.

How It Is Wired

Execution starts at main in scripts/generate_agents.py:116, which reaches 5 functions and is called from 1 place. The internal call graph has 6 resolved edges: main calls load_template, collect_skills, render, and validate_marketplace; collect_skills calls parse_frontmatter. main -> load_template touches the filesystem via TEMPLATE_PATH.read_text. No import edges exist between repository modules, and 0 modules are inside circular dependencies. The widest blast radius belongs to scripts/generate_agents.py, which defines all entry-point-adjacent functions and carries the orchestration logic for the entire skill generation pipeline.

How To Use It

Setup: Add the marketplace plugin via https://github.com/apify/agent-skills and install the apify-ultimate-scraper skill. The .claude-plugin/plugin.json and .claude-plugin/marketplace.json files support this integration.

Configuration: No environment variables or secret configuration is required within the repository itself. Skills operate against the Apify platform using the agent's existing authentication.

Running it: Invoke through the host agent (Claude Code, Cursor, Windsurf, Codex, or Gemini CLI) by requesting a skill by name, e.g., "Scrape the top 50 results for 'AI coding tools' from Google Maps and save them to a CSV." The scripts/generate_agents.py entry point handles the orchestration internally when triggered by the agent host.

Real-World Use

An AI agent running in Claude Code can install the plugin once, then execute: "Use the apify-ultimate-scraper skill to monitor price changes for sneakers on StockX and store results in a dataset." The skill handles Actor selection from the 130+ curated options, shapes the input, manages the run, and returns formatted results. If the desired platform lacks a curated Actor, the skill falls back to searching the 25,000+ Apify Store Actors automatically.

Code Health & Issues

The static analysis found 3 findings across the SDLC:

  • HIGH - Pin third-party GitHub Actions to a commit SHA: .github/workflows/generate-agents.yml references astral-sh/setup-uv@v4. A tag can be moved, so the action running with your token and secrets is whatever its owner last pushed; this is how tj-actions/changed-files leaked secrets from thousands of repos. Fix: replace @vN with the 40-character commit SHA, keep # vN as a comment, and let Dependabot bump the SHAs.
  • MEDIUM - Declare least-privilege permissions for GITHUB_TOKEN: 1 workflow declares no permissions. Without declaration the token inherits the repository default, so any injected step can push commits or mint releases from inside your own CI. Fix: add permissions: contents: read at the top of the workflow and widen per job only where needed.
  • LOW - Set timeout-minutes on the workflow jobs: 1 workflow declares no job timeout. A wedged step runs to the six-hour platform default, which on a two-hourly schedule means three runs overlap behind it. Fix: add timeout-minutes with a realistic bound to each job.

The Bottom Line

This repo successfully packages Apify platform expertise into consumable skills for AI agents, with the orchestration logic clearly mapped in scripts/generate_agents.py. The three SDLC findings are addressable—the Action pinning and permission declarations are the highest priorities for production use. Teams already invested in the Apify ecosystem and using agent frameworks like Claude Code will see immediate value; others may need to evaluate whether the skill format aligns with their agent platform.