You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
apify agent setup: one command that detects the coding agents installed on a machine and connects each one to Apify at the highest tier it supports. An Apify plugin where one exists, otherwise skills plus the Apify MCP server, otherwise MCP only, otherwise printed instructions. A hint after CLI install points people and agents at it.
Today the pieces exist but the user has to assemble them. apify mcp install <client> requires naming the client and holding a token, has no detection, and covers 7 clients. Skills come from apify help --skill, which the docs describe as a snapshot the user must reinstall on every CLI upgrade. Plugins ship from 15 per-platform repos generated by apify/apify-plugins-internal, and nothing in the CLI knows they exist.
Inspiration: stripe agent setup (detect, plan, prompt, apply, with a tiered fallback to downloaded skills) and Vercel's vercel agent init plus vercel skills.
Repositories
apify/apify-cli: the apify agent command namespace, detection, plan, apply, state file, bundled catalog, and the post-install hint.
apify/apify-plugins-internal: publish a catalog.json built from the platform configs that already drive the per-platform plugin sync.
apify/agent-skills: drop the CLI command tables that duplicate apify help --skill.
Requirements
P0
apify agent setup detects installed clients, proposes a plan, confirms once, and applies it.
Tier ladder per client: plugin, then skills plus MCP, then MCP only, then manual instructions. The planner picks the highest tier the client supports and the catalog has an artifact for.
Non-interactive mode and --json output when stdin is not a TTY, so a local agent can drive it headless.
Idempotent: an already-configured client reports already_configured and exits 0.
State file next to auth.json recording what was installed, which client, and at which tier.
Catalog bundled in the CLI (plugin ids, marketplaces, skills repo, MCP URL), so the command needs no network call.
The MCP URL the CLI writes carries ?client=apify-cli, matching the ?client=claude+code+plugin tag the Claude plugin already uses.
apify mcp install <client> stays as the lower-level primitive that setup calls.
P1
apify agent status and apify agent uninstall, both reading the state file.
catalog.json fetched from apify/apify-plugins-internal as a best-effort upgrade. A failed fetch falls back to the bundled copy and exits 0 with skipped: offline.
Migration: when a client gains a plugin, remove the loose skills and the duplicate MCP entry the plugin replaces.
Post-install hint with the same wording on every surface: bundle install, apify upgrade, npm postinstall, the apify help footer (the only surface Homebrew users see), README, docs/installation.md, and docs/agent-skill.md.
Sandbox detection (CI, non-TTY stdin, known sandbox env vars): print instructions instead of writing files, because the harness config lives outside the container.
Remaining clients from the catalog: Copilot, OpenCode, Devin, Kimi, Factory, Qoder, ZCode, Grok Build, DeepSeek Harness, and MS 365 Copilot.
Generate the command list in skills/apify/SKILL.md from the command registry during pnpm run update-docs, the way docs/reference.md is already generated.
CI check in apify/agent-skills that fails when a skill contains a CLI command table.
Success metrics
Setup runs per week split by client, tier, and outcome (installed, already_configured, skipped: offline, error). Target: success rate above 90%.
Share of new installs that run setup within 7 days.
MCP sessions and Actor runs attributable to the ?client=apify-cli tag.
Duplicate configurations reported by apify agent status (a plugin plus loose skills, or two Apify MCP entries), trending to zero after migration ships.
Key unknowns / to be discussed
One umbrella Apify plugin per ecosystem, or one plugin per skill? apify/agent-skills publishes per skill today, the generated plugin repos publish one.
Does setup run apify login when there is no token, or only print the hint? Stripe does not touch auth, Vercel provisions a key inline.
Default skills scope: project or user? Stripe and skills.sh default to project, the CLI docs say user.
Keeping skills fresh without a plugin: npx skills add symlinks, a stub SKILL.md that loads current content on demand, or a hash-checked download.
Do we apply to claude-plugins-official and openai-curated? Membership is what makes Stripe's plugin tier self-updating, and Apify is in neither.
Unverified: whether the Apify MCP docs tools work fully anonymously, and how codex plugin add behaves for third-party git marketplaces.
apify agent setup: one command that detects the coding agents installed on a machine and connects each one to Apify at the highest tier it supports. An Apify plugin where one exists, otherwise skills plus the Apify MCP server, otherwise MCP only, otherwise printed instructions. A hint after CLI install points people and agents at it.Today the pieces exist but the user has to assemble them.
apify mcp install <client>requires naming the client and holding a token, has no detection, and covers 7 clients. Skills come fromapify help --skill, which the docs describe as a snapshot the user must reinstall on every CLI upgrade. Plugins ship from 15 per-platform repos generated byapify/apify-plugins-internal, and nothing in the CLI knows they exist.Inspiration:
stripe agent setup(detect, plan, prompt, apply, with a tiered fallback to downloaded skills) and Vercel'svercel agent initplusvercel skills.Repositories
apify/apify-cli: theapify agentcommand namespace, detection, plan, apply, state file, bundled catalog, and the post-install hint.apify/apify-plugins-internal: publish acatalog.jsonbuilt from the platform configs that already drive the per-platform plugin sync.apify/agent-skills: drop the CLI command tables that duplicateapify help --skill.Requirements
P0
apify agent setupdetects installed clients, proposes a plan, confirms once, and applies it.--jsonoutput when stdin is not a TTY, so a local agent can drive it headless.already_configuredand exits 0.auth.jsonrecording what was installed, which client, and at which tier.?client=apify-cli, matching the?client=claude+code+plugintag the Claude plugin already uses.apify mcp install <client>stays as the lower-level primitive that setup calls.P1
apify agent statusandapify agent uninstall, both reading the state file.catalog.jsonfetched fromapify/apify-plugins-internalas a best-effort upgrade. A failed fetch falls back to the bundled copy and exits 0 withskipped: offline.apify upgrade, npm postinstall, theapify helpfooter (the only surface Homebrew users see), README,docs/installation.md, anddocs/agent-skill.md.apify agent initwrites an Apify block into the project'sAGENTS.mdorCLAUDE.md, wrapped in markers so it can be re-applied without touching the rest of the file, followingvercel agent init. Content comes from theagentsmdplatform inapify/apify-plugins-internal. This replaces the hand-writtenapify help --skillpointer asked for in ts-crawlee-cheerio ships broken: optional deps stripped, CI needs an uncommitted lockfile actor-templates#941 (section 4) and Agent DX: three help strings route agents to the wrong tool #1424 (section 3).P2
skills/apify/SKILL.mdfrom the command registry duringpnpm run update-docs, the waydocs/reference.mdis already generated.apify/agent-skillsthat fails when a skill contains a CLI command table.Success metrics
installed,already_configured,skipped: offline,error). Target: success rate above 90%.?client=apify-clitag.apify agent status(a plugin plus loose skills, or two Apify MCP entries), trending to zero after migration ships.Key unknowns / to be discussed
apify/agent-skillspublishes per skill today, the generated plugin repos publish one.apify loginwhen there is no token, or only print the hint? Stripe does not touch auth, Vercel provisions a key inline.npx skills addsymlinks, a stubSKILL.mdthat loads current content on demand, or a hash-checked download.claude-plugins-officialandopenai-curated? Membership is what makes Stripe's plugin tier self-updating, and Apify is in neither.codex plugin addbehaves for third-party git marketplaces.References
stripe agent setup,vercel agent init, Vercel agent resourcesapify/apify-plugins-internalapify help --skillin theapify helpoutput #1301apify helpfooter edit with the post-install hint above) and ts-crawlee-cheerio ships broken: optional deps stripped, CI needs an uncommitted lockfile actor-templates#941 (section 4)Sub-issues to follow.