Perplexity API Platform skills
Perplexity‘s official Agent Skills repo — “Official Perplexity API Platform skills, published as portable Agent Skills” — Apache-2.0, created 2026-07-15, last pushed 2026-07-23, 71★ (verified via the GitHub API). T1: the vendor’s own repo.
Two skills ship. migrate-sonar-to-agent-api rewrites a codebase off Perplexity’s Sonar
chat-completions API onto the Agent API (endpoints, params, model slugs, response parsing, streaming,
citations). pplx-cli installs and drives Perplexity’s pplx CLI for live search and page fetch.
Two things here go past the usual vendor-repo note: what the flagship skill is for, and how its eval is built.
Migration as a skill
The flagship skill’s job is to move developers off the vendor’s own deprecated API. Its documented triggers are the symptoms of a botched migration: “replacing deprecated sonar-pro / sonar-reasoning models, or fixing 400 unknown-field errors and missing citations after a migration attempt.”
That’s a use of agent-skills the corpus hasn’t seen. The vertical skills here have been about adding domain expertise (agentic-seo-skill, cybersecurity-skills) or shaping output (ponytail, i-have-adhd). This one is a vendor absorbing its own breaking change — the cost of deprecation, normally paid by every customer reading a migration guide, packaged as something an agent executes. Whether that becomes standard practice for API vendors is the thing to watch; it’s a cheaper apology than a long support window.
The eval design
evals/migrate-sonar-to-agent-api/ is a real harness, and it answers several problems
agent-evals has been circling.
The fixture is a working app, not a toy. Two versions of the same application — raw-HTTP
(requests against /chat/completions) and official-SDK — each “verified against production on
2026-07-09” and each deliberately loaded with the classic hazards: top-level citations and
search_results, top-level search filters, max_tokens, delta.content streaming with the [DONE]
sentinel, return_related_questions, response_format. The repo instructs contributors not to tidy
them: “their fixtures intentionally contain legacy API patterns - do not ‘fix’ a fixture.”
Nondeterminism is handled correctly. Reference migrations produced by the skill in live runs are
included, and explicitly disqualified as answer keys: “Model output is nondeterministic, so treat
these as examples, not golden diff targets. Grade with check.sh, not by comparing to these
directories.” That is exactly this wiki’s nondeterminism problem, given the right
answer — grade the properties of the output, never a diff against one lucky run.
The grader is mechanical. check.sh runs leftover-pattern greps (no chat/completions, no
choices[0], no max_tokens, no [DONE], no top-level citations reads), required-pattern greps
(/v1/agent, max_output_tokens, a web_search tool, search_results output-item handling, a
status check), and with --live, actually runs all three scripts against production. Tally computed
by script, not asserted by a model — the property agent-evals identifies as the escape from a
model grading itself.
Prompt-leakage is controlled. “Code in fixtures and references is intentionally comment-free, so agents must work from the code itself rather than comment hints.”
And it documents the A/B against itself. Step 5 of the runbook: reset the scratch copy, repeat the migration “in a session WITHOUT the plugin, then grade both.” A vendor publishing the procedure for measuring whether its own skill beats no skill. Compare i-have-adhd, which ships a rubric and gate but no baseline procedure, and jetbrains-ponytail-tested, where an outsider had to build the A/B themselves.
Where it admits the grader can be cheesed
The rubric’s last section is titled “Judged by eye (not greppable)”, and names two things:
the related-questions feature must be “preserved via a workaround rather than silently dropped,” and
the streaming consumer must exit “on every terminal event, not only response.completed.”
Both are exactly the moves a greppable rubric rewards. “No return_related_questions in the source”
passes trivially if the agent deletes the feature; “handles terminal events” passes if it handles the
one that usually fires. This is constraint-evading-behavior anticipated by the people writing the
check, and their answer is to route the un-greppable parts to a human rather than pretend the script
covers them. It’s the practical reply to agent-evals‘s “a gate you can
cheese isn’t a gate”: you can’t grep your way out, so name the residue.
Recorded limit: like every eval in this corpus except the JetBrains one, no results are published. The harness is hand-runnable and nobody has shown a score.
Distribution, and two conventions resolving
The install matrix is the widest agentskills-spec evidence to date. The repo is simultaneously a
Claude Code plugin marketplace (/plugin marketplace add), a Codex plugin marketplace, and a
plain skills directory; npx skills add perplexityai/api-platform-developers reportedly “fans out to
~70 agents”, gh skill add supports version pinning, and there’s a zero-install path — “Any agent
that can fetch a URL can use a skill directly.” One repo, no symlinks, no separate plugins/ tree.
It also bundles a docs MCP server (https://docs.perplexity.ai/mcp) in
the root .mcp.json, so the agent can search live API documentation while migrating. Skills for
procedure, MCP for current facts, shipped as one install — the skills×MCP pairing this wiki keeps
noting, here as a single artifact.
Small detail with a point: the repo’s CLAUDE.md contains exactly one line — AGENTS.md. The
vendor-specific convention (claude-md) reduced to a pointer at the cross-tool one (agents-md).
Related
agent-skills · agentskills-spec · agent-evals · constraint-evading-behavior · i-have-adhd · jetbrains-ponytail-tested · agents-md · claude-md · model-context-protocol · perplexity · synthesis