Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Actorization converts existing software into reusable serverless applications compatible with the Apify platform. Actors are programs packaged as Docker images that accept well-defined JSON input, perform an action, and optionally produce structured JSON output.
.claude/skills/apify-actorization/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 51% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 79% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -25% | 0% |
Actorization converts existing software into reusable serverless applications compatible with the Apify platform. Actors are programs packaged as Docker images that accept well-defined JSON input, perform an action, and optionally produce structured JSON output.
apify init in project root.actor/input_schema.jsonapify run --input '{"key": "value"}'apify pushVerify apify CLI is installed:
bashapify --help
If not installed:
bashbrew install apify-cli # Or: npm install -g apify-cli # Or install from an official release package that your OS package manager verifies
Verify CLI is logged in:
bashapify info # Should return your username
If not logged in, check if APIFY_TOKEN environment variable is defined. If not, ask the user to generate one at https://console.apify.com/settings/integrations, add it to their shell or secret manager without putting the literal token in command history, then run:
bashapify login
Copy this checklist to track progress:
apify init to create Actor structure.actor/input_schema.json.actor/output_schema.json (if applicable).actor/actor.json metadataapify runapify pushBefore making changes, understand the project:
Run in the project root:
bashapify init
This creates:
.actor/actor.json - Actor configuration and metadata.actor/input_schema.json - Input definition for the Apify ConsoleDockerfile (if not present) - Container image definitionChoose based on your project's language:
| Language | Install | Wrap Code | |----------|---------|-----------| | JS/TS | npm install apify | await Actor.init() ... await Actor.exit() | | Python | pip install apify | async with Actor: | | Other | Use CLI in wrapper script | apify actor:get-input / apify actor:push-data |
See schemas-and-output.md for detailed configuration of:
.actor/input_schema.json).actor/output_schema.json).actor/actor.json)Validate schemas against @apify/json_schemas npm package.
Run the actor with inline input (for JS/TS and Python actors):
bashapify run --input '{"startUrl": "https://example.com", "maxItems": 10}'
Or use an input file:
bashapify run --input-file ./test-input.json
Important: Always use apify run, not npm start or python main.py. The CLI sets up the proper environment and storage.
bashapify push
This uploads and builds your actor on the Apify platform.
After deploying, you can monetize your actor in the Apify Store. The recommended model is Pay Per Event (PPE):
Configure PPE in the Apify Console under Actor > Monetization. Charge for events in your code with await Actor.charge('result').
Other options: Rental (monthly subscription) or Free (open source).
.actor/actor.json exists with correct name and description.actor/actor.json validates against @apify/json_schemas (actor.schema.json).actor/input_schema.json defines all required inputs.actor/input_schema.json validates against @apify/json_schemas (input.schema.json).actor/output_schema.json defines output structure (if applicable).actor/output_schema.json validates against @apify/json_schemas (output.schema.json)Dockerfile is present and builds successfullyActor.init() / Actor.exit() wraps main code (JS/TS)async with Actor: wraps main code (Python)Actor.getInput() / Actor.get_input()Actor.pushData() or key-value storeapify run executes successfully with test inputgeneratedBy is set in actor.json meta sectionIf MCP server is configured, use these tools for documentation:
search-apify-docs - Search documentationfetch-apify-docs - Get full doc pagesOtherwise, the MCP Server url: https://mcp.apify.com/?tools=docs.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 17,025 | 14,104 | -17% | 1 | 1 | 0% | 3,568 | 4,773 | +34% | 0 | 0 | — |
case-02 | fail→pass | 14,318 | 11,878 | -17% | 1 | 1 | 0% | 2,796 | 4,234 | +51% | 0 | 0 | — |
case-03 | fail→fail | 14,872 | 13,962 | -6% | 1 | 1 | 0% | 2,939 | 4,768 | +62% | 0 | 0 | — |
case-04 | pass→pass | 7,830 | 4,155 | -47% | 1 | 1 | 0% | 1,375 | 2,515 | +83% | 0 | 0 | — |
case-05 | pass→pass | 6,325 | 2,896 | -54% | 1 | 1 | 0% | 1,143 | 2,215 | +94% | 0 | 0 | — |
case-06 | pass→pass | 3,494 | 2,762 | -21% | 1 | 1 | 0% | 666 | 2,227 | +234% | 0 | 0 | — |
case-07 | pass→pass | 6,202 | 3,174 | -49% | 1 | 1 | 0% | 1,188 | 2,286 | +92% | 0 | 0 | — |
case-08 | fail→pass | 15,242 | 3,687 | -76% | 1 | 1 | 0% | 2,307 | 2,231 | -3% | 0 | 0 | — |
case-09 | fail→pass | 9,087 | 3,807 | -58% | 1 | 1 | 0% | 1,337 | 2,398 | +79% | 0 | 0 | — |
case-10 | fail→fail | 6,840 | 5,648 | -17% | 1 | 1 | 0% | 1,285 | 2,935 | +128% | 0 | 0 | — |
case-11 | pass→pass | 6,968 | 3,609 | -48% | 1 | 1 | 0% | 1,269 | 2,444 | +93% | 0 | 0 | — |
case-12 | fail→pass | 15,274 | 2,616 | -83% | 1 | 1 | 0% | 3,055 | 2,301 | -25% | 0 | 0 | — |
case-13 | pass→pass | 3,385 | 1,126 | -67% | 1 | 1 | 0% | 471 | 1,894 | +302% | 0 | 0 | — |
case-14 | fail→pass | 2,639 | 2,158 | -18% | 1 | 1 | 0% | 427 | 2,091 | +390% | 0 | 0 | — |
case-15 | fail→pass | 6,274 | 3,795 | -40% | 1 | 1 | 0% | 1,182 | 2,336 | +98% | 0 | 0 | — |
case-16 | pass→pass | 6,597 | 1,521 | -77% | 1 | 1 | 0% | 1,161 | 1,922 | +66% | 0 | 0 | — |
case-17 | fail→pass | 6,789 | 1,839 | -73% | 1 | 1 | 0% | 1,189 | 1,932 | +62% | 0 | 0 | — |
case-18 | pass→pass | 8,043 | 2,945 | -63% | 1 | 1 | 0% | 1,513 | 2,166 | +43% | 0 | 0 | — |
case-19 | fail→pass | 12,089 | 3,107 | -74% | 1 | 1 | 0% | 2,456 | 2,126 | -13% | 0 | 0 | — |
case-20 | pass→pass | 11,023 | 2,737 | -75% | 1 | 1 | 0% | 1,933 | 2,071 | +7% | 0 | 0 | — |
case-21 | pass→pass | 15,793 | 12,537 | -21% | 1 | 1 | 0% | 3,088 | 4,151 | +34% | 0 | 0 | — |
case-22 | pass→pass | 13,972 | 9,836 | -30% | 1 | 1 | 0% | 2,655 | 3,185 | +20% | 0 | 0 | — |
case-23 | pass→pass | 10,902 | 13,815 | +27% | 1 | 1 | 0% | 2,178 | 3,896 | +79% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +39 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 7/29/2026 | +45% |
Other measured skills in the registry, with their headline benchmark lift.