<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Scotty G</title>
    <description>The latest articles on DEV Community by Scotty G (@sg-prime).</description>
    <link>https://dev.to/sg-prime</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3883499%2Fbe47a7d6-f913-48b0-a4bc-f6eeec73df8b.png</url>
      <title>DEV Community: Scotty G</title>
      <link>https://dev.to/sg-prime</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sg-prime"/>
    <language>en</language>
    <item>
      <title>Composable Agent Specs: Spec Delegation and the OAS Registry</title>
      <dc:creator>Scotty G</dc:creator>
      <pubDate>Mon, 20 Apr 2026 00:31:19 +0000</pubDate>
      <link>https://dev.to/sg-prime/composable-agent-specs-spec-delegation-and-the-oas-registry-8h2</link>
      <guid>https://dev.to/sg-prime/composable-agent-specs-spec-delegation-and-the-oas-registry-8h2</guid>
      <description>&lt;p&gt;Most agent frameworks solve reuse the way libraries do: write a class, import it, hope the abstractions line up. That works inside one codebase. Between teams or across organisations? It breaks down fast.&lt;/p&gt;

&lt;p&gt;Open Agent Spec 1.4 takes a different approach.One agent spec can &lt;strong&gt;delegate&lt;/strong&gt; a task to another spec, loaded from a local path, a URL, or a public registry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;summarise&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oa://prime-vector/summariser@1.0.0&lt;/span&gt;   &lt;span class="c1"&gt;# version-pinned, from registry&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;summarise&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One line. Version-pinned. No copy-paste. Your pipeline gets a battle-tested summariser without importing anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why spec composition matters
&lt;/h2&gt;

&lt;p&gt;An agent that fits in one YAML file is easy. But as soon as you build a second agent that needs the same summarisation step, or the same sentiment classifier, or the same document-extraction task — you start copy-pasting.&lt;/p&gt;

&lt;p&gt;The usual fix is to wrap the shared logic in a Python function. But now the &lt;em&gt;agent definition&lt;/em&gt; is split across YAML and Python, the function drifts from the spec over time, and you're back to the problem OAS was meant to solve: agent logic spread across framework abstractions you can't review in a PR diff.&lt;/p&gt;

&lt;p&gt;Spec composition keeps the contract in YAML.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three ways to delegate
&lt;/h2&gt;

&lt;p&gt;A delegated task declares &lt;code&gt;spec:&lt;/code&gt; + &lt;code&gt;task:&lt;/code&gt; instead of its own prompts and output schema. The runtime loads the referenced spec, runs the target task, and surfaces the result transparently.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Local file
&lt;/h3&gt;

&lt;p&gt;For intra-repo reuse:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;summarise&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;./specs/summariser.yaml&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;summarise&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The path resolves relative to the calling spec's directory. Useful when you have a shared specs directory in a monorepo.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. HTTP/HTTPS URL
&lt;/h3&gt;

&lt;p&gt;For cross-repo reuse without a registry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;summarise&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://raw.githubusercontent.com/your-org/agents/main/summariser.yaml&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;summarise&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any spec reachable over HTTP works. Good for internal GitHub-hosted specs behind SSO.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Registry reference (&lt;code&gt;oa://&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;For public, versioned reuse:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;summarise&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oa://prime-vector/summariser@1.0.0&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;summarise&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;oa://namespace/name&lt;/code&gt; expands to &lt;code&gt;https://openagentspec.dev/registry/namespace/name/latest/spec.yaml&lt;/code&gt;. With &lt;code&gt;@version&lt;/code&gt;, it pins to an exact version. Drop the version for "latest" semantics — useful in development, risky in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  What lives on the registry
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://openagentspec.dev/registry" rel="noopener noreferrer"&gt;OAS registry&lt;/a&gt; is open for community contributions. A handful of Prime Vector-authored specs are already published as a baseline:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Reference&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;oa://prime-vector/summariser&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Document summarisation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;oa://prime-vector/classifier&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Multi-class document classification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;oa://prime-vector/sentiment&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sentiment analysis with confidence scores&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;oa://prime-vector/keyword-extractor&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Key phrase extraction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;oa://prime-vector/code-reviewer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Code review task for PR diffs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;oa://prime-vector/memory-retriever&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Retrieve relevant context from a memory store&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can compose these into your own pipelines without writing the prompts yourself. Each is a single YAML file with a typed output schema — so when you call it, you know exactly what you're going to get back.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzih04gvpe9rcrxihc8h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzih04gvpe9rcrxihc8h.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Composing delegated tasks with &lt;code&gt;depends_on&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Delegation stacks with &lt;code&gt;depends_on&lt;/code&gt;. You can chain multiple delegated tasks together:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;open_agent_spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1.4.0"&lt;/span&gt;

&lt;span class="na"&gt;agent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;document-processor&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Extract,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;summarise,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;classify&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;document"&lt;/span&gt;

&lt;span class="na"&gt;intelligence&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;llm&lt;/span&gt;
  &lt;span class="na"&gt;engine&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;openai&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o&lt;/span&gt;

&lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;extract_keywords&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oa://prime-vector/keyword-extractor@1.0.0&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;extract&lt;/span&gt;

  &lt;span class="na"&gt;summarise&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oa://prime-vector/summariser@1.0.0&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;summarise&lt;/span&gt;
    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;extract_keywords&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

  &lt;span class="na"&gt;classify&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oa://prime-vector/classifier@1.0.0&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;classify&lt;/span&gt;
    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;summarise&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three delegated tasks. Three different authors possible. One pipeline. The runtime handles the load → run → merge flow, and the result envelope tells you exactly which spec each task delegated to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"task"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"classify"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"delegated_to"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"oa://prime-vector/classifier@1.0.0#classify"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"output"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"technical-documentation"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.94&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Safety: cycle detection
&lt;/h2&gt;

&lt;p&gt;One risk with delegation: A delegates to B which delegates to A. An infinite loop waiting to happen.&lt;/p&gt;

&lt;p&gt;The runtime detects this before any model call is made and raises &lt;code&gt;DELEGATION_CYCLE_ERROR&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Circular spec delegation detected: './summariser.yaml' is already in the delegation stack"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"DELEGATION_CYCLE_ERROR"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"stage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"delegation"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"task"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"summarise"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is &lt;a href="https://github.com/prime-vector/open-agent-spec/blob/main/spec/open-agent-spec-1.4.md" rel="noopener noreferrer"&gt;specified in the formal OAS standard&lt;/a&gt; as a MUST requirement — any conforming runtime has to detect cycles before spending tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Version pinning: why you should care
&lt;/h2&gt;

&lt;p&gt;The registry supports both floating (&lt;code&gt;oa://.../summariser&lt;/code&gt;) and pinned (&lt;code&gt;oa://.../summariser@1.0.0&lt;/code&gt;) references.&lt;/p&gt;

&lt;p&gt;In production, pin your versions. Same reason you pin npm or PyPI packages. A spec author can update prompts, tighten schemas, or change defaults in ways that look like minor improvements but subtly alter your pipeline's output.&lt;/p&gt;

&lt;p&gt;Semantic Versioning applies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Patch bumps&lt;/strong&gt; (&lt;code&gt;1.0.0&lt;/code&gt; → &lt;code&gt;1.0.1&lt;/code&gt;) — prompt tweaks, typo fixes, no schema changes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minor bumps&lt;/strong&gt; (&lt;code&gt;1.0.0&lt;/code&gt; → &lt;code&gt;1.1.0&lt;/code&gt;) — added optional output fields, expanded input acceptance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Major bumps&lt;/strong&gt; (&lt;code&gt;1.0.0&lt;/code&gt; → &lt;code&gt;2.0.0&lt;/code&gt;) — schema changes, prompt overhauls, model swaps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For CI agents or anything that fans out to production data, pin. Always.&lt;/p&gt;

&lt;h2&gt;
  
  
  Publishing your own
&lt;/h2&gt;

&lt;p&gt;The registry is open for contributions. If you build a well-scoped agent spec that others could reuse — a good test generator, a bug-triager, a changelog writer — open a PR to add it.&lt;/p&gt;

&lt;p&gt;Specs that make good registry citizens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single-responsibility&lt;/strong&gt; — do one thing, not five&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stable I/O schema&lt;/strong&gt; — typed inputs, typed outputs, documented fields&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Engine-agnostic&lt;/strong&gt; — work across OpenAI, Claude, Grok, or local models&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimal prompts&lt;/strong&gt; — the less cleverness, the less breakage&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;Add a delegated task to any existing spec:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tasks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;summarise&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;oa://prime-vector/summariser@1.0.0&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;summarise&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oa run &lt;span class="nt"&gt;--spec&lt;/span&gt; .agents/my-pipeline.yaml &lt;span class="nt"&gt;--task&lt;/span&gt; summarise &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--input&lt;/span&gt; &lt;span class="s1"&gt;'{"document":"..."}'&lt;/span&gt; &lt;span class="nt"&gt;--quiet&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The runtime resolves the registry reference, loads the spec, runs the delegated task, and returns the result. No extra install. No framework to adopt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://openagentspec.dev/registry" rel="noopener noreferrer"&gt;OAS Registry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/prime-vector/open-agent-spec/blob/main/spec/open-agent-spec-1.4.md" rel="noopener noreferrer"&gt;Formal specification — Section 7.3, Spec Delegation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/prime-vector/open-agent-spec" rel="noopener noreferrer"&gt;GitHub: prime-vector/open-agent-spec&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Also in this series:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="//./01-multi-agent-pipelines-yaml.md"&gt;The Sidecar Agent: Add AI to Any Project Without a Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="//./02-zero-sdk-agents.md"&gt;Why Your AI Agent Sidecar Shouldn't Have SDK Dependencies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="//./03-formal-spec-conformance.md"&gt;We Published a Formal Spec for Our Agent Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="//./05-testing-agents-oa-test.md"&gt;Testing AI Agents Like Code: the &lt;code&gt;oa test&lt;/code&gt; Harness&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Open Agent Spec is MIT-licensed and maintained by &lt;a href="https://www.primevector.com.au" rel="noopener noreferrer"&gt;Prime Vector&lt;/a&gt;. The registry is open — we'd love to see what you build.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
