Insights · Playbook

How to Build a NetSuite AI Skill That Gives the Same Answer Every Time

LH

Luke HoodOctober 12, 2026

11 min read

At a glance

How to write a NetSuite AI skill, for Ask Oracle or Claude, that returns the same report every time.

Netsuite AI LuxUniversity

Left to themselves, Ask Oracle and Claude will answer a NetSuite question differently each run. A skill fixes that. This is how we write one that returns the same report every time: the description that gets it picked, the data and rules that fix the result, and the tests we run before a team gets it.

Ask NetSuite's AI the same question twice and you can get two different answers. Ask how long customers take to pay and one run starts the clock at the invoice, the next at the sales order. Both numbers look plausible. Neither is the one your finance team agreed on, so neither goes in the board deck.

The model isn't being flaky. It's answering an underspecified question against a very large database, and it fills the gaps differently each time. The fix is a skill: a short document the AI reads before it answers, which names the data source, defines the terms, fixes the scope and the shape of the output, and says what not to do. Given the same skill and the same data you get the same definitions, scope and output shape, and a number you can test against last month's. That's as close to the same report as a model gets.

We build these for NetSuite customers, and we walked through the method in our LUXUniversity session on AI skills, with live builds in Ask Oracle and in Claude.

Where a skill runs

Inside NetSuite, Ask Oracle is the assistant built into NetSuite Next, Oracle's new interface, which is rolling out to customers in phases. Outside it, you bring your own AI, Claude or ChatGPT, through the NetSuite AI Connector Service, the MCP connector we covered in an earlier LUXUniversity session. Ask Oracle is one of four places AI shows up in NetSuite; the whole map is in what NetSuite AI actually does in 2026. Skills work in both places, and the method below is the same in both. The differences are about who sets it up, what data it can reach and what it costs.

Ask Oracle or your own AI

What differsAsk OracleYour own AI through the connector

Model

Oracle's

Claude or ChatGPT (any MCP client, per Oracle)

Runs as

Your NetSuite role

Your NetSuite role, with connector permissions granted per role

What it can reach

Reports, saved searches, records

Reports, saved searches, records, plus read-only SuiteQL. The standard tools can also create and update records, within the role

Cost

NetSuite AI units

Your AI provider's plan; the connector isn't a paid feature

Skills

Oracle's core skills plus your own

Your own, plus the skills Oracle publishes for the connector

Sources: Oracle's NetSuite AI Connector Service FAQ and Ask Oracle core skills pages.

Permissions follow the role in both cases, and in both cases nothing is granted to a role by default. An admin enables Ask Oracle access per role under Setup > Company > AI, and sets NetSuite Next access on the same page. For the connector, an admin grants the connector permissions to each role that should use it. One wrinkle from Oracle's docs: you can't run the connector as Administrator or as a role with full permissions, so plan on a dedicated role. The bigger one is that the connector is not read-only. Alongside reports, saved searches and read-only SuiteQL, the MCP Standard Tools SuiteApp ships tools that create and update records, bounded by the role it runs as. So the role you hand the connector is the real control on what an AI client can change inside your books, and it deserves the same review as any integration user.

On data, Oracle's own instruction skill for the connector sets a priority order: reports first, then saved searches, then records, then SuiteQL as a last resort. We write skills the same way. A report that finance already signs off on is the closest thing NetSuite has to an agreed definition of a number, and a skill that starts from one starts from a number people have already agreed on.

On cost, Ask Oracle is metered in AI units. Oracle provisions 1,000 units per General Access user license for each month of the contract term, loaded upfront into an account wide pool, and unused units expire when the term ends. Each sandbox gets a separate pool of the same size, so building and testing in sandbox doesn't touch production's balance. Oracle's estimates run from about 10 units for a simple question, 10 to 50 for an analysis question, and 50 to 200 for a research question. Usage shows under Setup > Company > View Billing Information. The connector itself doesn't consume AI units. Oracle's FAQ says the MCP Standard Tools SuiteApp is free and the connector isn't a paid feature, and what you pay for is your Claude or ChatGPT subscription.

What is inside a skill

A skill is documentation the model reads. Mechanically it is a folder with a markdown file called SKILL.md at the top, and the first lines of that file are a name and a description. Anthropic published the format as an open standard, and the same SKILL.md format now works in Claude, in ChatGPT, which follows the same open standard, and in NetSuite's own agent skill records, where the folder lives in the File Cabinet. Each product packages, permissions and runs it differently, so a skill moves between them as a draft, not a drop-in.

In the session we used a recipe analogy. Your NetSuite data is the ingredients. The skill is the recipe, and a recipe that says "some flour, bake until done" produces a different loaf every time. So a working skill carries more than the one file.

  • Step by step instructions for what to do when the skill is invoked, in order.
  • References. Definitions of every term, the queries or saved searches to run, report templates.
  • Assets, such as a logo for the report header.
  • In Claude or ChatGPT, helper scripts. A Python script that does the arithmetic, validates the result and formats it for the template is the most dependable thing in the kit, because the model can run it instead of reasoning its way to a number, so long as the skill tells it to and checks that it did. Anthropic's own docs make the point that code is deterministic, so a scripted step repeats in a way a prompted one doesn't.

In the Agent Skills format only the name and description are loaded up front. The rest is read once the skill is picked, which is why the description matters more than its length suggests.

The description is what gets a skill picked

The description is also how Ask Oracle decides whether your skill applies to the question in the chat box, or at least it was in our session. You can pick a skill by hand, from the plus menu in Ask Oracle or with a slash command in Claude. If you want it to show up on its own, the description has to give the model something to match on.

The weak version, from the session:

Helps with customer order analysis.

No trigger, no output, no boundaries. Ask Oracle has nothing to hook onto, so it has no reason to pick the skill, and even when you invoke it by hand the model has to guess what "analysis" means.

The version we actually use for the order-to-cash skill:

Use when the user asks how long order-to-cash takes from sales order to shipment to invoice to payment, which customer takes longest to pay, or which stage is the bottleneck. Returns median days per stage, per customer, compared with a prior period. Read-only. Do not use for picking, packing or shipping timing; use the NS fulfillment performance insights skill for that.

Look at what that version carries. When to use it, in the words a person would type. What it returns, so the model doesn't improvise a format. What not to do, including the pointer to a different skill for the adjacent question. "Read-only" sits on top of the role's own permissions. A skill can never do more than the role it runs as, but it can be told to do less, and that is worth writing down.

A weak description next to a strong one

The two descriptions side by side on one slide, with each line of the strong one marked for what it does: the trigger, the return, the read-only guardrail and the handoff to a pre-built skill.

Watch the full episode

Right data, fixed rules

A skill only stops the drift if it takes away the model's room to choose. Every skill we write goes through the rules below, and you'll see most of them in both demos from the session.

  1. Name the source. A specific saved search, report or SuiteQL query, by name, not "look at the sales orders." Through the connector you can go one step further. NetSuite's custom tool scripts let you wrap a SuiteQL query or scripting logic in a SuiteScript 2.1 tool with a defined JSON-RPC schema, deployed with SDF as a toolset object, so the call and the shape of the response are the same across every run. The values still move with the data, which is the point.
  2. Define the terms. If order-to-cash starts at the sales order date and ends when payment is applied, say so. If days-to-pay is a median rather than a mean, say that too. Every term the report uses gets a definition in the skill's references.
  3. Fix the scope. The same filter criteria you'd set on the report: date range, subsidiary, customer, status. Leave one out and the model picks one for you.
  4. Fix the shape. Which columns, in what order, table or not, sorted by what. A template is the easiest way to do this. The model fills it instead of designing it.
  5. Say what you're not looking for. Give good and bad examples. "Do not include fulfillment timing" is as useful as "include invoice date."
  6. Guard against made-up values. A missing date is the classic case. Without a rule the model may estimate one so the arithmetic works. Our rule: never estimate a missing date, mark the row as an exception and report how many there were.
  7. Make the numbers balance. Have the skill reconcile its own result a second way, say totals by stage against totals by customer. It catches most join and arithmetic mistakes while you're still developing the skill, and it keeps catching them after.

This is the part people skip, because it feels like writing a spec rather than talking to an AI. It's a spec. The context NetSuite gives the model is structured data, which is the best thing you have going for you, and the job is handing it the right slice with instructions on how to read it.

The seven rules for a repeatable result

One slide, seven rules: name the source, define the terms, fix the scope, fix the shape, say what you don't want, never estimate a missing value, make the numbers balance.

Watch the full episode

Test it before you share it

Before a skill goes to a team we run the same tests every time.

  • Ask the question with the skill applied and then without it. If the answers match, the skill isn't adding anything yet.
  • Ask it five different ways. The definitions should hold whatever the phrasing.
  • Ask something the skill shouldn't answer, like the fulfillment timing question from the description above, and check that it declines or redirects.
  • Run it against a question where you already know the right number, usually last month's version of the report, and compare.
  • Fix what the tests turned up, run them again, and only then widen who can use it.

None of this is quick. The access part at least only happens once: an admin grants Ask Oracle access per role, or for Claude or ChatGPT installs the MCP Standard Tools SuiteApp, grants the connector permissions to a role, and adds the NetSuite connector in the AI client. The writing part has help too. Anthropic ships a skill for building skills, called skill-creator. It interviews you about the workflow, writes the SKILL.md, drafts test prompts, and runs them with and without the skill so you can compare. ChatGPT has its own skill-creator that does the same job. You still have to know your data and your definitions. The tooling only speeds up the writing and the bench testing.

Two worked examples

Order-to-cash Lag in Ask Oracle

The question: where is our order-to-cash cycle stalling? Ask Oracle sits in the bottom right of NetSuite Next. The bar at the top is global search, and people mix the two up. The plus button in chat attaches exported data, adds context such as a record type, saved search or report, or applies a skill. The skill list includes Oracle's core skills, whose identifiers start with ns-, and in this account our own "Lux order-to-cash lag" skill.

The prompt asked it to compare sales orders from June through August 2026 with March through May, and to show the result in a canvas. The skill decided what data to pull, how to pull it and how to process it, then fed the result into a template. The canvas it returned was interactive, exported to PDF, and its rows linked back to the underlying NetSuite records. Without the skill, the same answer is several saved searches or reports and an afternoon inside Excel.

Lot Traceability in Claude

The second build runs outside NetSuite, in Claude, through the connector, and it answers a traceability question: for a given lot, where did it go? A custom tool applies recursive logic over inventory assignment numbers to trace where the lot was consumed in manufacturing and where the finished goods shipped.

Invoke the skill by slash command and Claude loads the skill folder before it does anything else. In this one: the goal, an HTML report template, a logo, a Python script that does the arithmetic and validates the trace, a definitions file covering every term in the report, step-by-step instructions, and rules. Then it calls the custom tool, runs the script, and fills the template. A couple of minutes later there's an interactive report with shipments and production orders linked to their NetSuite transactions.

The report also included things nobody asked for. The demo account has some odd data, builds with transaction dates later than the item fulfillments that consumed them, and Claude flagged those rows as anomalies instead of quietly including them. And at the end it ran the reconciliation from rule seven, tracing the lot a second way and showing both totals. Both came from the rules in the skill, not from anything in the prompt.

The lot trace build in Claude, end to end

From the slash command through the loaded skill files to the finished report: the HTML template, the validation script, the anomalies Claude flagged in the demo data, and the two-way reconciliation at the end.

Watch the full episode

Getting started this week

  • Pick one question your team asks every week, or one report that takes manual extraction across several sources.
  • Write the description first. When to use it, what it returns, what not to do.
  • Name the data source and define every term before you write a single instruction step.
  • As an admin, check which roles have Ask Oracle access and connector permissions, and look at the AI unit balance under Setup > Company > View Billing Information so you know what a question costs.
  • Try Oracle's core skills in Ask Oracle before you build your own. Oracle lists twenty of them as of October 2026, and running a few will show you what a finished skill looks like.
  • If you want Claude or ChatGPT, install the free MCP Standard Tools SuiteApp and grant a dedicated non admin role the connector permissions.

Questions from the session

Not usually. Start from a report you already run and the context you already pull out of NetSuite. If you can write down how you'd explain that report to a new hire, which search, which filters, what each column means, what to do with a blank, you can write the skill. Skill-creator in Claude or ChatGPT walks you through the draft and the bench tests. Expect to iterate a few times before you hand it to the team.

In NetSuite Next, system notes carry an AI Used column that shows Ask Oracle or the AI Connector Service, with Set By showing the user who started it, so a change made through either shows on the record like any other edit. Everything the assistant or the connector reads is bounded by the role it runs as.

A skill in NetSuite is an agent skill record that points at a File Cabinet folder holding the SKILL.md and its supporting files. SDF supports the agentskill object, so the folder moves with your other customizations in a deployment, and Oracle's Copy to Account tool covers SDF-supported objects. Build and test in sandbox, which has its own AI unit pool, and promote when the golden answer test passes.

Bring us the question your team asks every week

Start with what your team already asks for. Usually it's the report someone spends a morning pulling from three saved searches and an Excel pass, or the number two departments calculate differently. That's the skill to build first, because you already know what the right answer looks like, which means you can test it.

If you'd rather not start from a blank Markdown file, tell us the question and we'll scope the skill with you, in Ask Oracle or in your own AI through the connector. The full recording of the session includes both demos end to end, and LUXUniversity has more sessions like it.

Tell us the question
All insights