| name | netsuite-application-developer-skill |
| description | Reviews NetSuite SuiteScript 2.x code, SuiteFlow workflows, SuiteBuilder customizations, and UIF SPA components against Application Developer Professional standards. Depends on netsuite-suitescript-records-reference (272 record types) and netsuite-uif-spa-reference (@uif-js API) as upstream Oracle UPL-1.0 reference contexts. TRIGGER when: user asks to review or write SuiteScript, design a SuiteFlow workflow, configure a custom record or field, build a UIF SPA component, or review a script deployment; phrases include 'client script', 'user event script', 'MapReduce script', 'scheduled script', 'Suitelet', 'RESTlet', 'SuiteFlow', 'custom record type', 'UIF component', '@uif-js', 'governance limits', 'script entry point'. DO NOT TRIGGER when: the request is about SDF project deployment or SuiteScript 1.0 migration (use netsuite-suitecloud-developer-skill), security code review for injection or XSS (use netsuite-suitescript-secure-code-review-skill), REST or SOAP API integration design (use netsuite-web-services-integration-skill), or live deployment execution. |
| license | UPL-1.0 |
| allowed-tools | Read Grep Glob |
| metadata | {"author":"github: Raishin","version":"0.1.0","updated":"2026-06-09","category":"platform","lifecycle":"experimental","execution_tier":"static-review","mcp_servers":[],"oauth_scopes":[],"run_as_permissions":{"required":[],"denied":[]}} |
NetSuite Application Developer Skill
Purpose
SuiteScript 2.x code quality, script-type correctness, SuiteFlow workflow logic, SuiteBuilder custom record and form design, and UIF SPA component architecture. Depends on netsuite-suitescript-records-reference and netsuite-uif-spa-reference as upstream reference skills (Oracle UPL-1.0). T0 static review — no NetSuite account connection required; output is a draft for human review.
When This Skill Owns the Task
- User asks to review or write a SuiteScript 2.x client script, user event script, scheduled script, map/reduce script, Suitelet, or RESTlet
- User needs to review a SuiteFlow workflow configuration including trigger, states, conditions, and actions
- User asks to design or validate a SuiteBuilder custom record type, custom field, or custom form layout
- User needs to review a UIF SPA component including DataGrid, Form, StackPanel, or store/state patterns
- User asks about governance limits, entry-point selection, or script deployment run-as configuration
Recommended Workflow
- Step 1 — Load netsuite-suitescript-records-reference as dependency context for field ID and record type validation; load netsuite-uif-spa-reference if UIF component review is in scope.
- Step 2 — Gather the SuiteScript file(s) with NS annotations, the deployment record configuration, and the record type binding.
- Step 3 — Validate script type selection, entry-point declarations, and module require() calls for correctness and least-privilege posture.
- Step 4 — Assess governance limit exposure: identify synchronous paths that risk exceeding account limits; flag unbounded search loops or excessive record loads.
- Step 5 — Review SuiteFlow or UIF component configuration if in scope; validate API correctness against the loaded reference contexts.
- Step 6 — Generate findings labeled [FACT] / [ASSUMPTION] / [INFERENCE]; rate each Critical / High / Medium / Low / Unknown.
- Step 7 — Produce a review artifact with findings, escalation pointers, and recommended next actions.
Evidence Hierarchy
LIVE_EVIDENCE > REPOSITORY_EVIDENCE > USER_PROVIDED > OFFICIAL_DOCUMENTATION > INFERENCE > UNVERIFIED > BLOCKED
Safety Checklist
- No live NetSuite connection, credentials, or session tokens used at any point
- netsuite-suitescript-records-reference loaded before asserting field ID or record type compatibility
- netsuite-uif-spa-reference loaded before asserting @uif-js API correctness
- Governance limit violations rated Critical when synchronous path can exhaust account limits
- SuiteScript 1.0 patterns escalated to netsuite-suitecloud-developer-agent, not handled here
Rules — Hard-Stop Constraints