diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json new file mode 100644 index 0000000..6b2d172 --- /dev/null +++ b/.agents/plugins/marketplace.json @@ -0,0 +1,20 @@ +{ + "name": "apify-agent-skills", + "interface": { + "displayName": "Apify Agent Skills" + }, + "plugins": [ + { + "name": "apify-agent-skills", + "source": { + "source": "local", + "path": "./" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_INSTALL" + }, + "category": "Data" + } + ] +} diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json new file mode 100644 index 0000000..12172c6 --- /dev/null +++ b/.codex-plugin/plugin.json @@ -0,0 +1,30 @@ +{ + "name": "apify-agent-skills", + "version": "2.0.0", + "description": "Official Apify agent skills for web scraping, data extraction, actor development, and automation.", + "author": { + "name": "Apify", + "email": "support@apify.com", + "url": "https://apify.com" + }, + "homepage": "https://github.com/apify/agent-skills", + "repository": "https://github.com/apify/agent-skills", + "license": "Apache-2.0", + "keywords": ["apify", "scraping", "automation", "actors", "data-extraction", "agent-skills"], + "skills": "./skills/", + "interface": { + "displayName": "Apify Agent Skills", + "shortDescription": "Scraping and automation skills for agents.", + "longDescription": "Apify Agent Skills help agents scrape sites, build and deploy Actors, actorize existing code, generate output schemas, and integrate with the Apify API.", + "developerName": "Apify", + "category": "Data", + "capabilities": ["Search", "Automation", "Code"], + "websiteURL": "https://apify.com", + "defaultPrompt": [ + "Scrape this market into a CSV.", + "Create an Apify Actor from this script.", + "Generate an Actor output schema." + ], + "brandColor": "#20A34E" + } +} diff --git a/README.md b/README.md index 797f5c2..ed8086d 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,15 @@ These skills ship with `agents/AGENTS.md` (auto-generated index) and `gemini-ext git clone https://github.com/apify/agent-skills ``` +The repository also includes Codex plugin metadata for installing the same +skills as a plugin: + +```bash +codex plugin marketplace add https://github.com/apify/agent-skills +``` + +Then install **Apify Agent Skills** from the Codex Plugins UI. + ### Any other agent that reads Markdown Reference the skill files directly: @@ -149,6 +158,20 @@ Reference the skill files directly: Apify Actors use pay-per-result or pay-per-event pricing, set independently by each Actor. Free tier credits are included with every account. Check individual Actor pricing on the [Apify Store](https://apify.com/store). +## Evals and production telemetry + +The `evals/apify-agent-skills/` directory contains a small human-review eval set +covering the Ultimate Scraper, Actor development, and output-schema workflows. +The cases are harness-neutral so the same plugin behavior can be checked in +Claude Code, Codex, Gemini CLI, or another agent workspace. + +If you publish the plugin through Telvine, keep runtime telemetry metadata-only: +`skill.invocation.start`, `skill.invocation.end`, and `skill.invocation.error` +for skill behavior, plus `plugin.component.invoked` and +`plugin.component.error` for non-skill components. Do not emit prompts, scraped +records, API tokens, connector payloads, tool arguments, browser captures, or +model outputs. + --- ## Support diff --git a/evals/apify-agent-skills/cases.jsonl b/evals/apify-agent-skills/cases.jsonl new file mode 100644 index 0000000..57575ca --- /dev/null +++ b/evals/apify-agent-skills/cases.jsonl @@ -0,0 +1,3 @@ +{"id":"ultimate-scraper-leads","input":"Find Italian restaurants in Brooklyn rated under 4 stars on Google Maps, collect website URLs, and outline a CSV schema for outreach.","expected_outcome":"Uses the Ultimate Scraper skill, selects appropriate Apify Actors or fallback search, includes fields for source attribution, and avoids claiming data was collected unless an Actor run occurred."} +{"id":"actor-development","input":"Create a minimal JavaScript Apify Actor that accepts a startUrl input, crawls one page, and pushes title plus URL to the dataset.","expected_outcome":"Uses Actor.init/exit or current SDK patterns, defines input/output expectations, handles missing input, and includes a runnable file structure."} +{"id":"output-schema","input":"Given actor output objects with title, url, price, rating, and scrapedAt, generate an Apify dataset schema.","expected_outcome":"Uses the output schema skill, assigns appropriate field types, marks required fields thoughtfully, and keeps schema compatible with Apify conventions."} diff --git a/evals/apify-agent-skills/rubric.md b/evals/apify-agent-skills/rubric.md new file mode 100644 index 0000000..3d3e0b6 --- /dev/null +++ b/evals/apify-agent-skills/rubric.md @@ -0,0 +1,27 @@ +# Apify Agent Skills eval rubric + +Score each case from 1-5. + +## Skill routing + +- 5: Selects the right Apify skill for scraping, actor development, actorization, schema generation, or SDK integration. +- 3: Uses Apify concepts but needs extra prompting to choose the right path. +- 1: Ignores the available Apify skills. + +## Apify correctness + +- 5: Uses current Apify CLI, SDK, Actor, dataset, and schema conventions. +- 3: Mostly correct with minor naming or setup issues. +- 1: Suggests APIs or files that do not fit Apify. + +## Output quality + +- 5: Produces implementation-ready steps, schemas, or data plans with clear assumptions. +- 3: Provides useful but incomplete guidance. +- 1: Produces vague scraping or automation advice. + +## Privacy and data boundaries + +- 5: Avoids collecting credentials, private data, prompts, tool arguments, or model outputs beyond the requested task. +- 3: Includes unnecessary data fields without sensitive content. +- 1: Suggests unsafe scraping, secret handling, or private data exposure.