Feature Overview

Dynamic Skills

Dynamic skills use server composition of text fragments to produce adaptive agent skills.

Summary

File-system owned skills have several challenges:

  • Because they are static, they do not compose and cannot be assembled without a client-side build process at install; they cannot factor in customization by project, by user
  • They require synchronization and updating on the client side
  • It is difficult to monitor telemetry without client-side hooks

Zeeq dynamic skills are delivered as MCP prompts that allow assembly of standard templates into a single skill.

FeatureSKILL.mdZeeq Dynamic Skill
Static text
Dynamic text per repository
Telemetry on usage by user
Easily deployed across all projects
Automatically updated instantly
Automatically delivered to all connected clients

The common use case is an agent skill that is 80% identical across the organization (for example, a standard research skill), but 20% specialized per repository. Instead of managing two separate skill files that will drift, Zeeq dynamic skills make it easy for enterprise teams to share common skill bases and compose with per-repository fragments.

This allows ease of updating behaviors across skills, developers and teams to share skills yet still be able to personalize them, and low-friction updates to skills without having to re-deploy or re-install them.

Codex currently does not support MCP prompts so dynamic skills are not available for Codex.

Designating documents as dynamic skills

Any document in a document library can be designated as a dynamic skill by selecting Use as organization skill or toggling the document from Used as content to Used as skill.

When a document is designated as a dynamic skill, it is excluded from code reviews. Skills are considered operator initiated actions as opposed to agent initiated tools.

When a document is designated as a dynamic skill, it will show up in the harness as an operator invoked skill:

Using fragments

The power of dynamic skills comes from fragments.

The skill can leave zero or more placeholders in the file:

A placeholder is an XML fragment like:

<zeeq_placeholder
  name="a-placeholder-name"
  label="Optional display label"
  description="Optional description for configuration">
  Default value if none supplied (can be empty)
</zeeq_placeholder>

In this case, the prompt will render with 5 as the default value:

---
name: hello-world
description: Eager greeter that says hello world!
keywords: hello world
---

# Hello, World!

Say hello world.

Language count=5

languages and include the flag emoji for the country.

In the repo configuration, setting a value for the placeholder with a fragment will cause the skill to be rendered dynamically:

The fragment value is:

5 latin languages, 5 asian languages

This allows this repository to customize the skill and use the same skill to produce 10 greetings instead.

Agent harness

Now in Claude:

And Cursor as another example:

Telemetry and observability

A key reason for enterprises to adopt dynamic skills is to track usage and observability across the organization:

This lets enterprise teams understand the high leverage skills and their activation rates by users and across harnesses.

Harness configuration

To enable dynamic skills to resolve the fragments to apply, the harness must supply the repository identifier as a header x-zeeq-prompts-repo.

The value should match your repository identifier like zeeq-ai/zeeq-app or my-org/my-repo.

Unlike the other MCP calls, this call is not agent initiated so the agent cannot provide the library or the repo information; therefore, it must be configured explicitly in the header to receive the scope for the fragment resolution.

Claude Code

.mcp.json
{
  "mcpServers": {
    "zeeq": {
      "type": "http",
      "url": "https://app.zeeq.ai/mcp",
      "timeout": 120000,
      "headers": {
        "x-zeeq-prompts-repo": "zeeq-ai/zeeq-app"
      }
    }
  }
}

Cursor

.cursor/mcp.json
{
  "mcpServers": {
    "zeeq": {
      "url": "https://app.zeeq.ai/mcp",
      "auth": {
        "scopes": ["mcp:tools"]
      },
      "headers": {
        "x-zeeq-prompts-repo": "zeeq-ai/zeeq-app"
      }
    }
  }
}

OpenCode

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "experimental": {
    "mcp_timeout": 300000
  },
  "mcp": {
    "zeeq": {
      "type": "remote",
      "enabled": true,
      "url": "https://app.zeeq.ai/mcp",
      "headers": {
        "x-zeeq-prompts-repo": "zeeq-ai/zeeq-app"
      }
    }
  }
}

VS Code Copilot

.vscode/mcp.json
{
  "servers": {
    "zeeq": {
      "type": "http",
      "url": "https://app.zeeq.ai/mcp",
      "headers": {
        "x-zeeq-prompts-repo": "zeeq-ai/zeeq-app"
      }
    }
  }
}

Conceptual design

The high level conceptual design of how dynamic skills work:

Dynamic skills served as MCP prompts