...
Itential Platform Pricing Explore flexible plans and options for your team
Itential logo
Blogs

Bring Your Own Coding Agent: Itential Builder Skills Now Run in Claude Code, Codex, Copilot & Cursor

Headshot of Ankit Bhansali, Principal Architect of AI Solutions and Strategy at Itential, designing automation and orchestration solutions for complex networking challenges.
Ankit Bhansali
Principal Architect – AI Solutions & Strategy
Last updated October 22, 2026

Key Takeaways

    • Itential Builder Skills now run in five coding harnesses from one open-source repo: Claude Code, Codex CLI, GitHub Copilot CLI, GitHub Copilot in VS Code, and Cursor.
    • The lifecycle also grew to six stages, with a dedicated qa-agent that owns Test and As-Built.
    • The skills, the stage gates, and the artifacts are identical in every harness, so teams can standardize how automation gets delivered without standardizing which coding agent everyone uses.
    • 17 skills. Eight delivery skills and nine platform skills, including new ones for documentation, JSON Forms, and Itential Gateway 4 to Gateway 5 migration readiness.
    • Every skill now has org, team, and dev override folders that survive plugin updates.

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.

What’s Changed

  • Cross-harness support
    Five supported harnesses from a single repository, built on the open Agent Skills convention.
  • A sixth stage
    Test is now its own stage, owned by a new qa-agent that also owns As-Built.
  • 17 skills
    Eight delivery skills and nine platform skills, including new ones for documentation, JSON Forms, and Itential Gateway 4 to Gateway 5 migration readiness.
  • Customization layers
    Every skill now has org, team, and dev override folders that survive plugin updates.

How One Repo Serves Five Harnesses

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.

AGENTS.md Is What Makes It Portable

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:

  • A skill router that is a hard gate.
    Before the agent authors a workflow, template, or project payload, it loads the matching skill. Not as a suggestion. As a precondition.
  • A pre-flight checklist before every create or save call.
    Check the helper library for a worked example, confirm the exact task name in tasks.json, pull the task schema, and never invent an endpoint, field name, or enum value.
  • A repeat-failure circuit breaker.
    The same class of schema error twice in a row means stop, read the actual schema, and ask. No third guess from memory.
  • Platform rules learned from live builds.
    Task IDs are hex-only. Adapter tasks need error transitions or jobs hang. Importing over an existing project ID is a destructive full replace, not a merge.

None of that is specific to Claude, or Copilot, or Cursor. It’s specific to the Itential Platform. That’s exactly why it ports.

Install It in Your Harness

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.

Claude Code

/plugin marketplace add itential/builder-skills
/plugin install itential-builder@itential-builder

Restart Claude Code after install.

  1. Check it worked: /plugin lists itential-builder, or type /itential-builder: to see the skills.
  2. Run a skill: /itential-builder:spec-agent
  3. Update: automatic, or /plugin update itential-builder@itential-builder and restart.

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 CLI

codex plugin marketplace add itential/builder-skills && \
  codex plugin add itential-builder@itential-builder
  1. Check it worked: in Codex, type /skills. The skills are listed as itential-builder:<skill>.
  2. Run a skill: $itential-builder:spec-agent
  3. Update:
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 /.

GitHub Copilot CLI

gh skill install itential/builder-skills --agent github-copilot --all
  1. Check it worked: copilot skill list
  2. Run a skill: /spec-agent
  3. Update: run the same install command with –force.

gh skill needs a recent GitHub CLI. If the subcommand isn’t recognized, upgrade gh first.

GitHub Copilot in VS Code

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).

  1. Check it worked: in Copilot Chat, type /, or open Configure Skills.
  2. Run a skill: /spec-agent
  3. Update: VS Code checks for plugin updates every 24 hours when extension auto-update is on. To update now, run Extensions: Check for Extension Updates. If you installed from a clone, git pull.

Cursor

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
  1. Check it worked: in chat, type /.
  2. Run a skill: /spec-agent
  3. Update: rerun the install command with –force. From a clone, git pull first, then rerun with –force.

At a glance

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.

Your First Delivery, in Any Harness

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.

Six Stages, Four Agents

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

Why Test Got Its Own Stage

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:

  • Plans from the approved criteria.
    It drafts test-plan.md from the acceptance criteria in customer-spec.md and the criteria-to-test mapping in solution-design.md. Every acceptance criterion gets exactly one test-plan entry.
  • Asks for real test data.
    Acceptance tests run real jobs with real side effects: pushing config to a device, opening a ServiceNow ticket, allocating an IP. The agent asks which targets are safe and never invents a device name, ticket number, or IP block.
  • Waits for approval.
    Nothing runs live until the engineer approves the plan. Same gate discipline as spec, feasibility, and design.
  • Runs static checks first.
    They’re cheap. POST /workflow_engine/workflows/validate (Platform 6.5.2 and later) catches non-hex task IDs, missing required fields, wrong adapter app values, and dangling references. Local jq checks cover what the endpoint doesn’t, like missing error transitions and invalid evaluation operators. It checks warnings, not just isValid.
  • Runs acceptance cases against the delivered build.
    Real jobs through Operations Manager, with results checked in each task’s own output, not just the job status.
  • Hands failures back.
    On a failed case, it reports the evidence and returns the work to builder-agent. It never edits a workflow itself.
  • Writes the record last.
    Once tests pass, it produces as-built.md, backed by the test evidence.

“It works” is a claim. test-report.md is evidence.

Customize Without Forking

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:

  1. “No workflow may ever call runAutoRemediation” belongs in org/. It’s a policy line that would be wrong for even one team to cross.
  2. “Our team names workflows NETAUTO_<usecase>” belongs in team/.
  3. “My sandbox Gateway cluster is cluster_dev_ankit” belongs in dev/. It’s a fact about my environment, not a convention.

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.

Differences Worth Knowing

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.

  • Invocation syntax.
    /itential-builder:spec-agent in Claude Code, $itential-builder:spec-agent in Codex, /spec-agent in Copilot and Cursor.
  • Update mechanics.
    Claude Code updates automatically. Codex upgrades the marketplace and re-adds the plugin. gh skill installs need –force. Clones need git pull.
  • The model is your choice.
    The harness decides which model runs the skill. The gates don’t change, but the quality of a feasibility report or solution design still depends on the model reasoning over your platform data. Use a strong one for feasibility and design.

The gates guarantee the process. They don’t guarantee the judgment. That’s what the human approvals are for.

What’s Next

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.

Headshot of Ankit Bhansali, Principal Architect of AI Solutions and Strategy at Itential, designing automation and orchestration solutions for complex networking challenges.
Ankit Bhansali is a Principal Architect - AI Solutions & Strategy at Itential. Drawing on a strong research background in software and networking, he designs innovative solutions to address the industry’s most complex challenges. His strategic approach empowers businesses to achieve transformative growth through robust automation and end to end orchestration.
Keep Learning

The Latest in Agentic Operations

Get Started

Agentic infrastructure operations starts here.

See how Itential connects AI reasoning to governed execution across your entire infrastructure.