500 Skills, Zero Fine-Tuning: LinkedIn's Playbook for AI Agents — Ajay Prakash, LinkedIn

Read the talk

500 Skills, Zero Fine-Tuning: LinkedIn's Playbook for AI Agents

Ajay Prakash explains how LinkedIn gives coding agents internal knowledge through searchable tools and reusable playbooks, loads instructions only when needed, and turns discoveries from individual sessions into reviewed improvements.

From a talk by Ajay Prakash

At a glance

Ideas worth remembering

  • Internal tools supplied access and examples; playbooks supplied the procedures needed to complete jobs across those tools.

  • Keep playbooks specific, and split large procedures into reusable referenced pieces so instructions enter context only when needed.

  • Agent discoveries became shared procedural improvements through playbook PRs that required approval.

  • Search, Get Schema, and Execute let agents discover a large capability catalog without carrying every capability's details from the start.

  • Correctness, code quality, and reliability shaped the infrastructure from the beginning; enterprise knowledge had to accompany the coding agents.

From an error alert to mitigation and a repair PR

An error spike arrives while an engineer is on call. The engineer gives the alert link to Claude Code or GitHub Copilot, and the agent starts investigating in the background. Ajay Prakash, a software engineer at LinkedIn, opens with this workflow to explain what his team's Contextual Agent Playbooks and Tools system makes possible: an agent can follow the company's debugging procedures rather than ask the engineer to reconstruct them in a prompt.

The investigation narrows in stages. Company-level instructions help identify the affected service. Service-specific instructions then tell the agent how to investigate that service, including fetching logs and metrics. Those observations support a diagnosis and a proposed mitigation. The alert has become something the engineer can act on: a summary of the error, its cause, and the steps needed to reduce its immediate impact.

Human confirmation separates the proposed mitigation from execution. Once the engineer confirms, the agent takes the mitigation actions, updates the incident management system with details, metrics, and dashboards, and checks out the code to create a PR addressing the underlying cause. Mitigation handles the immediate incident; the repair PR handles the defect that produced it. Prakash describes teams using this workflow in a few minutes instead of the hours manual work could take, an operational account rather than a measured speedup across incidents.

Where does the agent acquire enough knowledge to move from an alert to a useful proposal? The flow below makes the narrowing visible: general procedures lead to service procedures, which lead to observations and a diagnosis. Confirmation comes before mitigation, while incident documentation and a repair PR extend the work beyond the immediate response.

Instructions narrow the incident investigation

Alert linkThe engineer supplies the error-spike alert.
Company debugging instructionsIdentify the affected service.
Service-specific instructionsGuide collection of logs and metrics.
Diagnosis and mitigation proposalUse observations to explain the issue and propose steps.
Engineer confirmationConfirmation precedes mitigation.
MitigateExecute the confirmed actions.
Incident update and repair PRRecord findings and propose a code fix for the root cause.
The agent gathers increasingly specific context before proposing action; the engineer confirms mitigation before execution.
Read the diagram as text
  • Alert link. The engineer supplies the error-spike alert.
  • Company debugging instructions. Identify the affected service.
  • Service-specific instructions. Guide collection of logs and metrics.
  • Diagnosis and mitigation proposal. Use observations to explain the issue and propose steps.
  • Engineer confirmation. Confirmation precedes mitigation.
  • Mitigate. Execute the confirmed actions.
  • Incident update and repair PR. Record findings and propose a code fix for the root cause.
  • Alert link → Company debugging instructions: Begin investigation.
  • Company debugging instructions → Service-specific instructions: Identify service.
  • Service-specific instructions → Diagnosis and mitigation proposal: Fetch and interpret logs and metrics.
  • Diagnosis and mitigation proposal → Engineer confirmation: Present proposed actions.
  • Engineer confirmation → Mitigate: Confirm.
  • Mitigate → Incident update and repair PR: Document and address underlying cause.
0:120:40
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:12 · section reference included

Public coding knowledge did not explain LinkedIn's stack

The early rollout of coding agents produced a less encouraging result. Agents lacked context about LinkedIn's mature codebases, internal frameworks, and internal systems. They hallucinated, stalled, or invented incorrect details. Engineers then had to prompt them toward the right implementation, sometimes spending longer on corrections than manual coding would have taken. Some returned to writing the code themselves.

The missing context was substantial. LinkedIn had over a thousand repositories supporting thousands of microservices and apps, built on internal frameworks and libraries. Its custom infrastructure included databases, experimentation and tracking, and configuration management. New engineers spent a week-long boot camp becoming familiar with these systems. General coding ability offered no reason to expect an agent to know those local practices.

The target became specific: make coding agents understand the internal system well enough to ship code engineers could trust. Trust meant both correctness and code quality comparable to an engineer's work. That requirement shaped the infrastructure that followed; generating code quickly would be of little use if people still had to repair its assumptions.

3:233:53
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

3:23 · section reference included

Access to information still left three workflow problems

Tools helped agents answer basic questions and find examples, but slightly more complex jobs still failed to finish reliably. Knowing where information could be found did not supply the procedure for using it. Debugging a particular error, for example, required practical knowledge scattered across documents, wikis, and old conversations.

  • Scattered and stale procedures: Duplicate or outdated documents made it difficult to choose the right instructions, even when the agent could reach every source.
  • Context overload: Each tool output consumed context space. As the session grew, compaction could lose information the agent needed, forcing it to repeat earlier investigation.
  • Repeated discovery: A successful session had no way to retain its procedural findings for the next request. Another engineer asking for the same task could send the agent back to the beginning.
8:278:58
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

8:27 · section reference included

Playbooks returned instructions through the tool interface

Playbooks made instructions available through MCP alongside operational tools. A playbook had a name and description, and the agent could select and invoke it like another tool. Its output was the instructions and context for performing a task. This reused the agent's tool-selection mechanism to fetch procedural knowledge.

Consider the request to set up an Airflow DAG at LinkedIn. The agent first selected the playbook for that task and fetched its instructions. It then followed those instructions and called the relevant tools. Internal setup knowledge entered the session before the agent attempted the work, instead of being rediscovered across unrelated sources. Anyone at LinkedIn could author a playbook, check it into a repository, and make it available to others.

Two authoring rules kept that growing library usable:

  • Give each playbook one specific task. An Airflow DAG setup playbook should contain the instructions for that task. A narrow purpose makes it easier for the agent to match a request to the right procedure.
  • Split large procedures into referenced pieces. A larger playbook can refer to smaller, self-contained playbooks. Those pieces can be reused by several procedures, and the agent can read them only when needed.

The second rule directly addressed context overload. A reference preserved access to a procedure without immediately loading all of its contents. The agent could progressively discover context as the task developed. Prakash connects this to Skills: both approaches make task expertise available on demand. LinkedIn's implementation served that expertise through its internal MCP system.

10:3811:08
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

10:38 · section reference included

A session's discoveries became proposed playbook edits

A repository of instructions could become as stale as the wikis it replaced. The maintenance loop therefore used the agents doing the work. At the end of a session, agents were encouraged to identify outdated information, discrepancies, or missing steps in the playbooks they had used.

The agent could check out the playbook repository, propose an improvement, and open a PR. Approval then updated the shared playbook. The learning persisted in an editable procedure that future sessions could retrieve. This is the concrete mechanism behind the self-improving loop: experience produces a proposed text change, and review determines whether that change becomes shared guidance.

14:2314:52
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

14:23 · section reference included

One local server combined central and repository-specific knowledge

The system ran through a local MCP server preinstalled on LinkedIn laptops. Updates to the server, tools, and playbooks arrived automatically every hour. That distribution mechanism made the shared infrastructure available without requiring each engineer to assemble a separate setup.

  • Central playbooks: Cross-cutting procedures applied to multiple repositories and lived in the shared collection.
  • Local playbooks: Repository-specific procedures were checked in with their code. They were automatically picked up only when the coding agent worked in that repository, allowing teams to maintain local knowledge without changing the central repository.

One MCP server served both the tools and playbooks. This provided a common place to handle authentication and collect telemetry that could inform improvements to the ecosystem. The knowledge could be authored locally while access and observation used shared infrastructure.

15:3416:04
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

15:34 · section reference included

Search, Get Schema, and Execute kept the visible interface small

A growing library created another scaling problem: exposing every tool and playbook directly to the agent. Prakash reports degradation beyond roughly 30 or 40 tools in the team's experience; that is an observation about agent context and performance, not a hard limit imposed by MCP. LinkedIn replaced the directly exposed catalog with three meta tools.

  • Search: Find relevant tools and playbooks using keywords and tags.
  • Get Schema: Retrieve the details of a selected tool or playbook after discovery.
  • Execute: Invoke the selected capability once its details are available.

How can thousands of capabilities remain accessible through three tools? The diagram shows the two outcomes of execution. An operational tool performs work; a playbook returns instructions that guide subsequent tool calls. Discovery and detailed loading happen before either outcome, so the agent does not need the complete catalog in context at the start. Preconfigured system instructions teach each coding agent how to use this search sequence efficiently.

This extended progressive discovery to the catalog itself. Small referenced playbooks controlled how much procedural text entered context; the meta tools controlled which capability details entered it. At the time of the talk, Prakash reported over 1,300 tools, over 600 playbooks, and over 8,000 daily users. Use extended beyond engineers to product managers, designers, and TPMs bringing playbooks for their own workflows.

Discover a capability before loading and invoking it

Searchmeta-tools — Find relevant capabilities by keywords and tags.
Get Schemameta-tools — Load details for the selected capability.
Executemeta-tools — Invoke the chosen tool or playbook.
Playbook instructionsoutcomes — Return task context and procedural guidance.
Operational tool calloutcomes — Use a tool to carry out work.
The same discovery sequence reaches operational tools and instruction-returning playbooks. Playbook instructions then guide further tool use.
Read the diagram as text
  • Search. meta-tools — Find relevant capabilities by keywords and tags.
  • Get Schema. meta-tools — Load details for the selected capability.
  • Execute. meta-tools — Invoke the chosen tool or playbook.
  • Playbook instructions. outcomes — Return task context and procedural guidance.
  • Operational tool call. outcomes — Use a tool to carry out work.
  • Search → Get Schema: Select relevant capability.
  • Get Schema → Execute: Retrieve details, then invoke.
  • Execute → Playbook instructions: If a playbook.
  • Execute → Operational tool call: If an operational tool.
  • Playbook instructions → Operational tool call: Guide relevant tool use.
17:1617:46
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

17:16 · section reference included

Quality and reliability set the direction from day one

The closing lesson returns to the original definition of trust. Quality and reliability were design goals before the MCP server existed. The system needed to remain useful as the team moved quickly and added capabilities. Productivity depended on agents producing work engineers could rely on, rather than shifting the effort into correction.

Giving an enterprise the latest tools and models did not by itself give agents a way to operate inside it. LinkedIn's response was to build that environment: access to internal examples and systems, retrievable task procedures, selective loading, automatic distribution, and reviewed improvements. The on-call workflow at the beginning depended on this accumulated infrastructure. Its useful unit of knowledge was a procedure another session could find and follow.

5:496:19
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

19:05 · section reference included

Resources

Transcript & slides

Loading transcript and slides…

Transcript download