{"id":"54830ae2-9075-4a27-a800-ac2d7234e4e4","shortId":"qJ8Ry8","kind":"skill","title":"servicenow","tagline":"Interact with ServiceNow instances via the jsn CLI. Use when working with ServiceNow\ndevelopment, administration, or data exploration. Handles tables, records, business rules,\nflows, script includes, ACLs, update sets, and more. Triggered by ServiceNow URLs\n(service-now.com, serv","description":"# Jace's ServiceNow CLI\n\nExplore and manage ServiceNow instances. Works standalone or with AI agents.\n\n## Discovery\n\nCommands are self-documenting. Use these to learn what's available:\n\n```bash\njsn --help                # Root help with all top-level commands\njsn <command> --help        # Detailed usage, flags, and examples for any command\njsn dev                     # Shows categorized dev subcommands\n```\n\n## Agent Rules\n\n1. **Output modes** — `--json` when parsing data; `--md` when presenting to humans; `--agent` for automation\n2. **Use sys_id for updates** — All update/delete operations require sys_id\n3. **Check auth first** — Run `jsn auth status` before operations\n4. **NEVER logout** — Only run `jsn auth logout` if the user explicitly asks\n5. **Use `--profile <name>`** to target a specific instance, or `jsn profiles use <name>` to change default\n6. **Before using `eval` or `rest`** — Ask yourself: *\"Have I checked if there's a more specific jsn command?\"* Verify `jsn records --table <name> create` won't work first. Prefer specific over generic over escape hatch over eval.\n7. **CONFIRM before destructive operations** — Always show the user exactly what will be created, updated, or deleted and ask for explicit confirmation before executing. Never run `create`, `update`, `delete`, `set`, or `remove` commands without user approval.\n\n## ⚠️ Destructive Operations Require Confirmation\n\n**jsn does not have a `--confirm` or `--dry-run` flag.** It assumes you mean what you type. This means **YOU** (the agent) are the safety layer.\n\n**Before any write operation, you MUST:**\n\n1. **Show the user what you found** — Run a `list` or `show` command first\n2. **Present the exact command you plan to run** — Include the sys_id, table name, and data\n3. **Wait for explicit approval** — \"Proceed? [y/N]\" or similar\n\n**Examples of destructive commands that require confirmation:**\n- `jsn records --table <name> create`\n- `jsn records --table <name> update <sys_id>`\n- `jsn records --table <name> delete <sys_id>`\n- `jsn dev updatesets set <name>`\n- `jsn profiles remove <name>`\n- Any `delete`, `update`, `create`, `set`, or `remove` subcommand\n\n**Good pattern:**\n```\nUser: \"Delete that incident\"\nAgent: \"Found: INC0010001 'Server down' (sys_id: abc123...)\n       Command: jsn records --table incident delete abc123...\n       Proceed? [y/N]\"\nUser: \"y\"\nAgent: [runs command]\n```\n\n**Bad pattern:**\n```\nUser: \"Delete that incident\"\nAgent: [immediately runs jsn records --table incident delete ...]\n```\n\n## ⚠️ AVOID `jsn eval` for Record Creation\n\n**Why:** `jsn eval` runs server-side JavaScript in the global scope. It returns HTTP 200 even when:\n- The insert fails due to ACL violations\n- Mandatory fields are missing\n- The record lands in the wrong scope\n- Logic errors prevent the insert entirely\n\n**The AI trap:** Agents see \"success\" and assume the record was created. It wasn't.\n\n**Always use instead:** `jsn records --table <name> create` — it returns the created record with sys_id or an explicit validation error.\n\n**Only use `eval` when:** No specific command exists, `records` lacks required fields, and `rest` doesn't work. This is rare.\n\n## Command Hierarchy\n\nPick the most specific tool for the job. **Never default to eval** — it's the last resort:\n\n1. **Specific commands** — `jsn flows`, `jsn rules`, `jsn jobs`, etc. — curated views with domain-aware formatting and validation\n2. **`jsn records --table <name>`** — generic CRUD on any table (the workhorse, preferred for record creation)\n3. **`jsn rest`** — raw Table API escape hatch when records command lacks required fields\n4. **`jsn eval`** — ⚠️ **LAST RESORT ONLY** — server-side script execution when no other option exists\n5. **Ask the human** — if none of the above work. Never generate standalone GlideRecord scripts as a fallback.\n\n## JSON Envelope\n\nAll commands support `--json`. The envelope structure:\n\n```json\n{\n  \"ok\": true,\n  \"data\": [ ... ],\n  \"summary\": \"5 records\",\n  \"breadcrumbs\": [\n    {\"action\": \"show\", \"cmd\": \"jsn records --table incident <sys_id>\", \"description\": \"View details\"}\n  ]\n}\n```\n\nBreadcrumbs suggest next commands — follow them for navigation.\n\n## Configuration\n\n```\n~/.config/servicenow/\n├── config.json               # Profiles and settings\n└── credentials.json          # Auth tokens (fallback)\n\n.servicenow/                  # Per-repo config (optional)\n└── config.json               # Project-specific settings\n```\n\n**Environment variables:**\n- `SERVICENOW_TOKEN` — Override stored token\n- `SERVICENOW_INSTANCE` — Override instance URL","tags":["servicenow","jsn","jacebenson","agent-skills","cli"],"capabilities":["skill","source-jacebenson","skill-servicenow","topic-agent-skills","topic-cli","topic-servicenow"],"categories":["jsn"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/jacebenson/jsn/servicenow","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add jacebenson/jsn","source_repo":"https://github.com/jacebenson/jsn","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 6 github stars · SKILL.md body (4,553 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:14:42.389Z","embedding":null,"createdAt":"2026-05-18T13:22:32.285Z","updatedAt":"2026-05-18T19:14:42.389Z","lastSeenAt":"2026-05-18T19:14:42.389Z","tsv":"'/.config/servicenow':627 '1':96,271,509 '2':111,285,528 '200':408 '3':123,302,543 '4':133,557 '5':146,573,605 '6':161 '7':198 'abc123':358,365 'acl':28,416 'action':608 'administr':16 'agent':53,94,108,260,351,370,379,438 'ai':52,436 'alway':203,450 'api':548 'approv':233,306 'ask':145,167,216,574 'assum':250,442 'auth':125,129,139,633 'autom':110 'avail':66 'avoid':387 'awar':524 'bad':373 'bash':67 'breadcrumb':607,618 'busi':23 'categor':91 'chang':159 'check':124,171 'cli':9,42 'cmd':610 'command':55,77,87,179,230,283,289,314,359,372,476,490,511,553,594,621 'config':640 'config.json':628,642 'configur':626 'confirm':199,219,237,243,317 'creat':184,211,224,321,340,446,456,460 'creation':392,542 'credentials.json':632 'crud':533 'curat':519 'data':18,102,301,603 'default':160,501 'delet':214,226,329,338,348,364,376,386 'descript':615 'destruct':201,234,313 'detail':80,617 'dev':89,92,331 'develop':15 'discoveri':54 'document':59 'doesn':484 'domain':523 'domain-awar':522 'dri':246 'dry-run':245 'due':414 'entir':434 'envelop':592,598 'environ':647 'error':430,469 'escap':194,549 'etc':518 'eval':164,197,389,395,472,503,559 'even':409 'exact':207,288 'exampl':84,311 'execut':221,567 'exist':477,572 'explicit':144,218,305,467 'explor':19,43 'fail':413 'fallback':590,635 'field':419,481,556 'first':126,188,284 'flag':82,248 'flow':25,513 'follow':622 'format':525 'found':277,352 'generat':584 'generic':192,532 'gliderecord':586 'global':403 'good':345 'handl':20 'hatch':195,550 'help':69,71,79 'hierarchi':491 'http':407 'human':107,576 'id':114,122,297,357,464 'immedi':380 'inc0010001':353 'incid':350,363,378,385,614 'includ':27,294 'insert':412,433 'instanc':5,47,153,655,657 'instead':452 'interact':2 'jace':39 'javascript':400 'job':499,517 'jsn':8,68,78,88,128,138,155,178,181,238,318,322,326,330,334,360,382,388,394,453,512,514,516,529,544,558,611 'json':99,591,596,600 'lack':479,554 'land':424 'last':507,560 'layer':264 'learn':63 'level':76 'list':280 'logic':429 'logout':135,140 'manag':45 'mandatori':418 'md':103 'mean':252,257 'miss':421 'mode':98 'must':270 'name':299 'navig':625 'never':134,222,500,583 'next':620 'none':578 'ok':601 'oper':119,132,202,235,268 'option':571,641 'output':97 'overrid':651,656 'pars':101 'pattern':346,374 'per':638 'per-repo':637 'pick':492 'plan':291 'prefer':189,539 'present':105,286 'prevent':431 'proceed':307,366 'profil':148,156,335,629 'project':644 'project-specif':643 'rare':489 'raw':546 'record':22,182,319,323,327,361,383,391,423,444,454,461,478,530,541,552,606,612 'remov':229,336,343 'repo':639 'requir':120,236,316,480,555 'resort':508,561 'rest':166,483,545 'return':406,458 'root':70 'rule':24,95,515 'run':127,137,223,247,278,293,371,381,396 'safeti':263 'scope':404,428 'script':26,566,587 'see':439 'self':58 'self-docu':57 'serv':38 'server':354,398,564 'server-sid':397,563 'service-now.com':37 'servicenow':1,4,14,35,41,46,636,649,654 'set':30,227,333,341,631,646 'show':90,204,272,282,609 'side':399,565 'similar':310 'skill' 'skill-servicenow' 'source-jacebenson' 'specif':152,177,190,475,495,510,645 'standalon':49,585 'status':130 'store':652 'structur':599 'subcommand':93,344 'success':440 'suggest':619 'summari':604 'support':595 'sys':113,121,296,356,463 'tabl':21,183,298,320,324,328,362,384,455,531,536,547,613 'target':150 'token':634,650,653 'tool':496 'top':75 'top-level':74 'topic-agent-skills' 'topic-cli' 'topic-servicenow' 'trap':437 'trigger':33 'true':602 'type':255 'updat':29,116,212,225,325,339 'update/delete':118 'updateset':332 'url':36,658 'usag':81 'use':10,60,112,147,157,163,451,471 'user':143,206,232,274,347,368,375 'valid':468,527 'variabl':648 'verifi':180 'via':6 'view':520,616 'violat':417 'wait':303 'wasn':448 'without':231 'won':185 'work':12,48,187,486,582 'workhors':538 'write':267 'wrong':427 'y':369 'y/n':308,367","prices":[{"id":"860a8c5e-bb17-4c80-97c2-9612016f0753","listingId":"54830ae2-9075-4a27-a800-ac2d7234e4e4","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"jacebenson","category":"jsn","install_from":"skills.sh"},"createdAt":"2026-05-18T13:22:32.285Z"}],"sources":[{"listingId":"54830ae2-9075-4a27-a800-ac2d7234e4e4","source":"github","sourceId":"jacebenson/jsn/servicenow","sourceUrl":"https://github.com/jacebenson/jsn/tree/main/skills/servicenow","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:32.285Z","lastSeenAt":"2026-05-18T19:14:42.389Z"}],"details":{"listingId":"54830ae2-9075-4a27-a800-ac2d7234e4e4","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"jacebenson","slug":"servicenow","github":{"repo":"jacebenson/jsn","stars":6,"topics":["agent-skills","cli","servicenow"],"license":null,"html_url":"https://github.com/jacebenson/jsn","pushed_at":"2026-05-17T05:25:07Z","description":null,"skill_md_sha":"900fe168b80cd6390de7aade0b55b0ac09c71cca","skill_md_path":"skills/servicenow/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/jacebenson/jsn/tree/main/skills/servicenow"},"layout":"multi","source":"github","category":"jsn","frontmatter":{"name":"servicenow","license":"MIT","description":"Interact with ServiceNow instances via the jsn CLI. Use when working with ServiceNow\ndevelopment, administration, or data exploration. Handles tables, records, business rules,\nflows, script includes, ACLs, update sets, and more. Triggered by ServiceNow URLs\n(service-now.com, servicenow.com) or when the user mentions ServiceNow, jsn, servicenow,\nor related terms like tables, records, business rules, flows, script includes, ACLs,\nupdate sets, or encoded queries.","compatibility":"Requires jsn CLI (github.com/jacebenson/jsn). Install via:\ncurl -fsSL https://jsn.jace.pro/install | bash\nWorks with Claude Code, OpenCode, Cursor, and agentskills-compatible tools.\n\nWindows users: Download from GitHub releases. If jsn is not in your PATH, the setup\ncommand will automatically detect its location and show the correct command path\n(e.g., `.\\jsn.exe tables list` instead of `jsn tables list`)."},"skills_sh_url":"https://skills.sh/jacebenson/jsn/servicenow"},"updatedAt":"2026-05-18T19:14:42.389Z"}}