SDF Gets a New Custom Object Type: agentskill for AI Skill Deployment
SDF now supports an agentskill custom object that pairs an XML definition with a SKILL.md file to define, validate, and deploy custom AI skills through SuiteCloud projects.
What changed
A new SDF custom object type, agentskill, lets you define and deploy custom AI skills entirely through SuiteCloud projects. Each skill is a pair of artifacts:
- An
agentskillXML definition (the metadata record). - A File Cabinet folder containing a
SKILL.mdfile (the skill's Markdown instructions/prompt body).
XML schema
The XML definition uses these elements:
scriptid(attribute) — unique identifier for the custom object, e.g.customskill_simple_test_skill.<name>— skill name. Must exactly match (case-sensitive) thenamevalue in theSKILL.mdfront matter.<description>— skill description. Must exactly match thedescriptionin theSKILL.mdfront matter.<skillfolder>— File Cabinet path to the folder holdingSKILL.md.<isinactive>—Ffor active,Tfor inactive.<ispublic>—Tmakes the skill invocable by other users. Only the Administrator role can set this toT.
Folder conventions by project type
- SuiteApp project — skill content lives under
/SuiteApps/<application_id>/<skill_folder>/. - Account Customization Project (ACP) — skill content lives under
/Skills/<skill_folder>/at the File Cabinet root.
Deployment validation
SDF validates the following during project deployment:
- The
skillfolderpath resolves to an existing folder in the project. - That folder contains a non-empty
SKILL.mdfile. - The
nameanddescriptionvalues in the XML definition match the corresponding SKILL.md front-matter values exactly (case-sensitive).
Deployment will fail if any of these checks do not pass.
Example
A minimal SuiteApp-based skill definition:
<agentskill scriptid="customskill_simple_test_skill">
<name>simple-test-skill</name>
<description>Tiny deterministic test skill for confirming skill discovery and invocation.</description>
<skillfolder>[/SuiteApps/com.netsuite.sdfskills/simple-test-skill/]</skillfolder>
<isinactive>F</isinactive>
<ispublic>F</ispublic>
</agentskill>What to do
- Create the SKILL.md file first. Write your skill instructions in Markdown with YAML front matter that includes
nameanddescriptionkeys. Place it in the correct folder for your project type. - Add the agentskill XML definition to your SuiteCloud project. Ensure the
nameanddescriptionstrings are identical (case-sensitive) between the XML and the SKILL.md front matter, or validation will reject the deploy. - Set
ispublicdeliberately. Only set toTif you intend other users to invoke the skill, and note that only the Administrator role can flip this flag. - Deploy with SDF. Run
suitecloud project:deploy(or equivalent IDE action). Watch for validation errors related to missing folders, missing SKILL.md, or name/description mismatches. - Source-control the SKILL.md alongside the XML. Since both artifacts must be in sync, treat them as a unit in version control to avoid drift between the prompt content and the object metadata.
Open questions
The source documentation does not clarify the following — verify in your target account:
- Whether there is a governance or size limit on the SKILL.md file content.
- What the full SKILL.md front-matter schema looks like beyond
nameanddescription. - How custom skills interact with NS Copilot or other agent runtimes at invocation time (trigger mechanism, context passing, output handling).
- Whether
agentskillobjects are searchable or scriptable viaN/recordorN/query.
Source: Oracle NetSuite Release Notes