Skip to content

Claude/agent z zuplo skills vwiv3t - #15

Open
mosch wants to merge 2 commits into
mainfrom
claude/agent-z-zuplo-skills-vwiv3t
Open

mosch wants to merge 2 commits into
mainfrom
claude/agent-z-zuplo-skills-vwiv3t

Conversation

@mosch

@mosch mosch commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

No description provided.

These two flows lived only in agent-z (the Zuplo Portal assistant) as
TypeScript prompt fragments, so coding agents working in a Zuplo repo had
no access to them and any fix had to be made twice. Move the product truth
here — the setup order and the two halves of a GraphQL endpoint — so there
is one copy for every host to read.

Both are written host-neutral: they say what to configure and in what
order, and leave how a choice is presented or a build is run to the host.
agent-z now vendors these files instead of carrying its own wording.

Registered in the zuplo-skills bundle by sync-skill-metadata.sh. The
plugin-validation smoke test asserts the bundle's skill roster verbatim,
so its grep moves from 3 skills to 5.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTQhJZC5BzmfPVBYYSwRSg
The AI Gateway guidance lived in agent-z's base system prompt, so it reached
the Portal assistant and nothing else — an agent wiring an app against a
gateway in a repo had none of it. The facts that actually cost people time are
here now: that models are addressed `providerLabel/model` and the prefix is the
provider configuration's name rather than the vendor, that an app's request URL
comes from the app and must not be constructed, that the policy chain order is
load-bearing, and that gateway and team budgets apply to an app with no budget
policy of its own.

Grounded in the AI Gateway docs rather than the Portal's own wording, and
deliberately silent on the two gateway generations: the public docs describe
only the per-app URL shape, so the skill says to read the URL from the app —
which is the advice that holds either way — instead of publishing a
generational claim the docs do not support.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTQhJZC5BzmfPVBYYSwRSg
Copilot AI balanced review requested due to automatic review settings September 9, 2026 14:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds three new Zuplo-focused agent skills (project setup, GraphQL endpoints, and AI Gateway) and wires them into the repository’s documentation and Claude marketplace/plugin validation so they ship and validate alongside existing skills.

Changes:

  • Add new skills: zuplo-project-setup, zuplo-graphql, and zuplo-ai-gateway.
  • Update skill catalogs/docs (README.md, AGENTS.md) and Claude marketplace metadata to include the new skills.
  • Update CI plugin validation to assert the expanded Zuplo skill set is installed.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
skills/zuplo-project-setup/SKILL.md New step-by-step setup skill for bootstrapping a gateway and adding core policies.
skills/zuplo-graphql/SKILL.md New skill for configuring GraphQL routes plus Zudoku GraphQL portal plugin.
skills/zuplo-ai-gateway/SKILL.md New skill describing AI Gateway concepts, policy chains, usage limits, and client calling patterns.
README.md Adds the new skills to the repository’s listed inventory.
AGENTS.md Updates repository structure table to include the new skill directories.
.github/workflows/plugin-validation.yaml Updates validation expectations from 3 to 6 Zuplo skills.
.claude-plugin/marketplace.json Adds the new skill directories to the Claude marketplace plugin’s skills list.
Suppressed comments (2)

skills/zuplo-graphql/SKILL.md:22

  • This section refers to routes.oas.json, but the actual file path used throughout the repo is config/routes.oas.json. Keeping the path consistent reduces the chance users try editing a non-existent file.
**The developer portal does not document GraphQL automatically the way it
documents OpenAPI routes.** OpenAPI operations come from `routes.oas.json`,
which the portal already reads; a GraphQL schema lives behind the endpoint and

skills/zuplo-ai-gateway/SKILL.md:80

  • The curl example also hard-codes openai/gpt-5-mini, which may not be routable in a given gateway. Using a placeholder here aligns with the earlier guidance to read supported model IDs from the catalog.
  -d '{
    "model": "openai/gpt-5-mini",
    "messages": [{ "role": "user", "content": "Hello, world!" }]
  }'

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +46 to +49
**The prefix is the name given to the provider configuration, not the vendor.**
A provider labelled `openai` yields `openai/gpt-5-mini`; label the same vendor
`openai-eu` and its models are `openai-eu/gpt-5-mini`. Two configurations of one
vendor — different keys, regions or accounts — are told apart by exactly this.
Comment on lines +102 to +105
**The recommended order is Model Filtering → Fallback Model → Budgets and Costs
→ Semantic Cache, and the order is load-bearing:** budgets after the fallback so
an exceeded budget can route to the fallback model instead of failing, and the
cache after budgets so cache hits still count toward request limits.
Comment on lines +2 to +4
name: zuplo-graphql
description: "Use when adding or fixing a GraphQL endpoint on a Zuplo API gateway, which always means two things together — a proxy route in routes.oas.json marked x-graphql so GraphQL-aware policies apply, and the Zudoku GraphQL plugin registered in the developer portal config so the schema and playground are documented. Covers the route handlers, the plugin options, and the GraphQL-specific policies."
license: MIT
Comment on lines +104 to +109
3. Add the policy definition under `policies.policies` in
`config/routes.oas.json`.
4. **Reference it from the routes.** A policy that is defined but not listed in
a route's `policies.inbound` array does nothing — this is the single most
common setup mistake. Add the reference to every route that should enforce
it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants