When we put Builder Skills in the Anthropic Marketplace, the first question from almost every team was some version of the same thing: does it work in Copilot? Then Cursor. Then Codex.
That question says a lot about how engineering teams actually work. Nobody standardized on one coding agent. The network architect lives in Claude Code. The platform team is licensed on GitHub Copilot. Someone on the automation team switched to Cursor last quarter and is not going back. Asking all of them to change tools so they can follow the same delivery process is a non-starter.
So we stopped asking. As of version 2.0, Builder Skills runs in five harnesses: Claude Code, Codex CLI, GitHub Copilot CLI, GitHub Copilot in VS Code, and Cursor. Same repo. Same 17 skills. Same six-stage lifecycle. Same artifacts at the end.
Standardize the delivery model, not the editor. The harness is where the engineer types. The skills are where the Itential knowledge lives.
This post covers how that works under the hood, how to install it in each harness, what changed in the lifecycle, and the handful of differences worth knowing before you start.
Every skill follows the open Agent Skills convention: a folder containing a SKILL.md file, which opens with YAML frontmatter holding a name and a description. Every harness we support reads that format.
---
name: qa-agent
description: Use this skill when a build is complete and needs to be
verified before customer sign-off. Trigger it for phrases like "the
build is done, let's test it", "run acceptance tests", ...
--- That description isn’t documentation for humans. It’s the routing signal. When an engineer types “the build is done, let’s test it,” the harness matches the request against skill descriptions and loads the right one. That’s why you can call a skill by name or just describe what you need. We run trigger evaluations against the highest-conflict skills, 20 queries each (10 that should trigger the skill and 10 that shouldn’t), to keep that routing accurate as descriptions evolve.
There is one copy of every skill, in the repo’s skills/ folder. Each harness installs from it through its own small manifest:
| Harness | Installs through |
|---|---|
| Claude Code | Its plugin marketplace (.claude-plugin/) |
| Codex CLI | Its plugin marketplace (.agents/plugins/marketplace.json and plugin.json) |
| GitHub Copilot CLI | gh skill install |
| GitHub Copilot in VS Code | Chat: Install Plugin From Source (reads plugin.json) |
| Cursor | gh skill install, or a Cursor Team Marketplace (.cursor-plugin/) |
We didn’t want copies of every skill drifting apart, so there are no per-harness copies. And every skill is self-contained: the templates, reference projects, spec library, and platform rules it uses are bundled into its own folder, so it works the same in every harness.
The skills carry the domain knowledge. AGENTS.md carries the discipline. It’s bundled into every skill, so the rules travel with the skill into every harness, and it holds the rules that keep an agent from improvising against a live platform:
None of that is specific to Claude, or Copilot, or Cursor. It’s specific to the Itential Platform. That’s exactly why it ports.
Prerequisites are the same everywhere: Itential Platform 6.x for every skill, and Itential Gateway 5 only if you use the iag skill. Pick your harness below. Each path ends in the same place.
/plugin marketplace add itential/builder-skills
/plugin install itential-builder@itential-builder Restart Claude Code after install.
Note the namespace. Claude Code scopes plugin skills under the plugin name, which is why it’s /itential-builder:spec-agent here and /spec-agent in most other harnesses.
codex plugin marketplace add itential/builder-skills && \
codex plugin add itential-builder@itential-builder codex plugin marketplace upgrade itential-builder && \
codex plugin add itential-builder@itential-builder Codex registers the repo through its own manifest at .agents/plugins/marketplace.json and invokes skills with $, not /.
gh skill install itential/builder-skills --agent github-copilot --all gh skill needs a recent GitHub CLI. If the subcommand isn’t recognized, upgrade gh first.
Open the Command Palette (⇧⌘P on Mac, Ctrl+Shift+P on Windows), run Chat: Install Plugin From Source, and enter itential/builder-skills. Or install from a clone:
git clone https://github.com/itential/builder-skills.git Then run Chat: Install Plugin From Source and enter the clone’s path as a file:/// URI (for example, file:///Users/you/builder-skills).
gh skill install itential/builder-skills --agent cursor --all
# or, from a clone
gh skill install /path/to/builder-skills --from-local --agent cursor --all | Harness | Install | Invoke spec-agent | Update |
|---|---|---|---|
| Claude Code | Itential marketplace plugin | /itential-builder:spec-agent | Automatic or /plugin update |
| Codex CLI | Codex marketplace plugin | $itential-builder:spec-agent | marketplace upgrade + plugin add |
| Copilot CLI | gh skill install | /spec-agent | Reinstall with –force |
| Copilot in VS Code | Install Plugin From Source | /spec-agent | Automatic, or check for updates |
| Cursor | gh skill install | /spec-agent | Rerun with –force |
Natural language works in all five. Describe the task and the harness routes to the right skill.
After install, setup is identical regardless of harness. Create a working folder with a .env holding your platform credentials:
mkdir my-use-case && cd my-use-case
cat > .env <<'EOF'
PLATFORM_URL=https://your-instance.itential.io
AUTH_METHOD=oauth
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secret
EOF On a local or dev platform, use AUTH_METHOD=password with USERNAME and PASSWORD instead of the client ID and secret. Then start a delivery with spec-agent, using your harness’s invocation from the table above.
Authentication happens once. The first skill that needs the platform, usually explore or solution-arch-agent at feasibility, authenticates and writes the token to .auth.json. Every skill after that reuses it, and on a 401 or 403 it re-authenticates silently from .env instead of stopping to ask. OAuth tokens go in a bearer header. Local /login tokens go in a query parameter. Never commit either file.
Each use case gets its own workspace, and everything the agents know about the delivery lives there:
use-cases//
├── .env credentials (never commit)
├── .auth.json live token (auto-refreshed, never commit)
├── tasks.json task catalog, pulled fresh at feasibility
├── apps.json adapter type names
├── adapters.json adapter instances and state
├── openapi.json full API reference
├── task-schemas.json fetched on demand during build
├── use-case-memory.md IDs, decisions, gotchas, test log, open items
└── customer-spec.md feasibility.md solution-design.md
test-plan.md test-cases.json test-report.md as-built.md The workspace is plain files. That’s what makes the harness interchangeable, even mid-delivery.
Because state lives in files and not in a chat session, a delivery can change hands. use-case-memory.md carries a Stage field, and every skill updates it before handing off. When a session resumes, the skill checks that field against the artifacts that actually exist. If they disagree, the files win. One engineer can take a use case from requirements through an approved solution-design.md in Claude Code, and a teammate can pick up the build in Cursor from exactly that point.
Every delivery follows the same path. Each stage produces a named artifact, and nothing moves forward without the engineer’s sign-off.
| Stage | Skill | Artifact | Engineer gate |
|---|---|---|---|
| Requirements | spec-agent | customer-spec.md | Approves the spec |
| Feasibility | solution-arch-agent | feasibility.md | Approves the feasibility decision |
| Design | solution-arch-agent | solution-design.md | Approves the design |
| Build | builder-agent | Deployed assets | Reviews and accepts the delivery |
| Test | qa-agent | test-plan.md, test-report.md | Approves the test plan before anything runs live |
| As-Built | qa-agent | as-built.md | Signs off |
In the original five-stage model, builder-agent built the assets, tested them, and wrote the as-built record. It worked. But it put the same agent in charge of building something and certifying it. We wouldn’t accept that from a human team, so we stopped accepting it from agents.
qa-agent now owns verification, and it works like this:
“It works” is a claim. test-report.md is evidence.
Multi-harness teams hit the next problem fast. Everyone wants the skills to follow their conventions: naming standards, security policy, the sandbox they test against. Editing SKILL.md is the wrong answer. Those files are Itential-owned and get overwritten on the next update.
Instead, every skill has a custom/ folder with three layers, read automatically before the skill acts:
skills//
├── SKILL.md foundational, Itential-owned: never edit
└── custom/
├── org/ company-wide rules
├── team/ your team's rules
└── dev/ your own local overrides and drafts More specific wins: dev overrides team, which overrides org, which overrides the foundational skill. Non-conflicting additions from every layer still apply. The organizing question is who needs to agree to a rule for it to be safe:
Every override has to state the original rule, the replacement, and why, so the layers stay auditable as they grow. To share rules across the organization, keep a private copy of the repo, commit them under custom/org and custom/team, and have everyone install from that copy. Every harness installs the copy it’s pointed at, rules included. When Itential publishes a release, merge it in: Itential ships custom/ empty, so your rules never conflict. dev/ rules are personal and never committed. Working from a clone, keep them in the skill’s custom/dev/ folder. With a plugin install there’s no local copy, so use your tool’s own personal instructions instead, such as ~/.claude/CLAUDE.md or ~/.codex/AGENTS.md.
One thing worth being honest about: runs in five harnesses doesn’t mean behaves identically in five harnesses. The skills and the gates are the same. The edges aren’t.
The gates guarantee the process. They don’t guarantee the judgment. That’s what the human approvals are for.
The spec library is at 23 use cases across networking, operations, security, and infrastructure, and it will keep growing. So will the platform skills. If a harness you use isn’t on the list yet, something behaves differently than this post describes, or you have a use case you want in the spec library, open an issue. Contributions are welcome under the repo’s contributor license agreement.
The repo is public at github.com/itential/builder-skills, and setup for every harness lives on the Itential Builder Skills page.
Pick the harness your team already uses. The delivery model comes with it.
See how Itential connects AI reasoning to governed execution across your entire infrastructure.