From 16ce0876ff1760e3be0cd15c1cf1ffb2d1e1a235 Mon Sep 17 00:00:00 2001 From: Ana-Maria Radu Date: Thu, 10 Sep 2026 16:25:09 +0300 Subject: [PATCH 1/2] docs: use placeholders for example values that trip content scanners MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A customer content-inspection gate blocked the published package on 21 findings. All were false positives on documentation examples — no credential, live PII, or cardholder data exists in the repo — but a shape-based gate cannot tell the difference, and a blocked artifact blocks the rollout either way. Replace the literal example values we control with the repo's existing placeholder convention, which identity-commands.md and the audit guides already use: - uipath-admin: literal --expiration dates and audit export date ranges become / / ; generated folder names become audit___. Both audit references are now free of literal calendar dates, so the scoping question does not come back on the next scan. - uipath-rpa: mail-merge sample data becomes / / / ; the placeholder GUID drops its digit runs; the regex reference table masks digit positions as N with a note; the "number too long" test row describes its length. Left verbatim on purpose: Orchestrator error code 170002, two support-forum thread IDs inside URLs, and a Databricks documentation URL. Those are product data the playbooks exist to convey, not examples, so they need an allowlist on the scanning side rather than an edit here. Document the rule in CONTRIBUTING.md and .claude/rules/content-quality.md so new examples do not reintroduce the problem. Co-Authored-By: Claude Opus 5 (1M context) --- .claude/rules/content-quality.md | 2 + CONTRIBUTING.md | 33 ++++++++++++++++ .../uipath-admin/references/audit-commands.md | 22 +++++------ .../references/audit-workflow-guide.md | 38 +++++++++---------- .../references/external-app-management.md | 2 +- .../uipath-admin/references/pat-management.md | 4 +- .../1.5/coded/examples.md | 2 +- .../2.5/coded/examples.md | 8 ++-- .../legacy/data-manipulation-guide.md | 12 +++--- .../references/legacy/testing-guide.md | 2 +- 10 files changed, 81 insertions(+), 44 deletions(-) diff --git a/.claude/rules/content-quality.md b/.claude/rules/content-quality.md index 2a94c2a1d3..4cffff007a 100644 --- a/.claude/rules/content-quality.md +++ b/.claude/rules/content-quality.md @@ -26,6 +26,8 @@ This repository's primary audience is AI coding agents, not humans. Write accord - Show the full command with all required flags - Use `` for user-provided values (angle brackets, UPPER_SNAKE_CASE) +- Use a placeholder for any example value that carries the shape of a date, an identifier, or personal data — customer content-inspection gates match on shape alone and block the whole published package. Write `--expiration ""`, never `--expiration "2027-01-15"`; write `` and ``, never a sample address or phone number; mask digit positions as `NNN-NN-NNNN`. State the required format in prose instead: ``--expiration ``, ISO 8601 `YYYY-MM-DD`. +- Keep product identifiers the reader needs verbatim — error codes, support-forum thread IDs in URLs, vendor documentation URLs. Those are content, not examples. - Specify whether a flag is required or optional - Show expected output when it clarifies behavior - Group related commands together diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 59317b33ad..5039bd8b13 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -481,6 +481,7 @@ Before submitting your PR, verify: ### General - [ ] CODEOWNERS updated with your GitHub handle - [ ] No secrets, tokens, or personal paths in any file +- [ ] Command examples and sample output use `` placeholders — no literal dates, street addresses, phone numbers, or identifier-shaped digit runs ([Style Guide](#cli-commands)) - [ ] No auto-generated or binary files committed (check `.gitignore`) - [ ] Markdown is well-formed (no broken links, proper heading hierarchy) @@ -550,6 +551,38 @@ current set, the rationale, and how to change it: [docs/REQUIRED-CHECKS.md](docs - Use placeholders in angle brackets for user-provided values: ``, `` - Show expected output format when it helps understanding +#### Use placeholders for example values, not literals + +Command examples, sample payloads, and sample output MUST use `` placeholders wherever +a literal would carry the shape of a date, an identifier, or personal data. Two reasons, and the first is +the one that blocks releases: customers run content-inspection gates over the published package, and those +gates match on shape alone — an example does not have to contain real data to fail one and block the whole +artifact. Literal dates are also the most common source of examples that go stale. + +| Do not write | Write instead | +|---|---| +| `--expiration "2027-01-15"` | `--expiration ""` | +| `--from-date 2026-01-01 --to-date 2026-01-31` | `--from-date --to-date ` | +| `audit_2026-01-01_2026-01-31_` | `audit___` | +| `SetBookmarkContent("Address", "123 Main Street")` | `SetBookmarkContent("Address", "")` | +| `SetBookmarkContent("Phone", "+1 (555) 123-4567")` | `SetBookmarkContent("Phone", "")` | +| `123-45-6789` | `NNN-NN-NNNN` — mask each digit position with `N` | +| `"ffffffff-1111-2222-3333-444444444444"` | `"ffffffff-aaaa-bbbb-cccc-dddddddddddd"` — no long digit run | + +> The left column above deliberately spells out the literals it forbids: this file is not part of the +> published npm package (see `files` in `package.json`), so the anti-examples never reach a customer scan. +> Exclude `CONTRIBUTING.md` if you ever add a repository-wide content scanner. + +State a required format in prose or in the flags table rather than demonstrating it with a literal. Write +``--expiration ``, ISO 8601 `YYYY-MM-DD` — not a made-up date that shows the format by example. + +Two narrow exceptions: + +- **Product identifiers the reader needs verbatim** — error codes, support-forum thread IDs inside URLs, + vendor documentation URLs. These are the content itself, not an example of it. Keep them. +- **Regex reference tables**, where the example column has to match the pattern it documents. Mask the + digits (`NNN-NN-NNNN`) instead of deleting the row, and note the masking convention under the table. + ### Naming Conventions Summary | Item | Convention | Example | diff --git a/skills/uipath-admin/references/audit-commands.md b/skills/uipath-admin/references/audit-commands.md index 75f143e351..8f14457891 100644 --- a/skills/uipath-admin/references/audit-commands.md +++ b/skills/uipath-admin/references/audit-commands.md @@ -51,13 +51,13 @@ List visible audit event sources. Pass inner `id` GUIDs from `eventTargets[]` an Run queries with filters and cursor pagination: ```bash -uip admin audit tenant events --from-date 2026-04-22T00:00:00Z --to-date 2026-04-29T00:00:00Z --limit 50 --output json +uip admin audit tenant events --from-date T00:00:00Z --to-date T00:00:00Z --limit 50 --output json ``` | Flag | Required | Description | |---|---|---| | `--from-date ` | no | ISO 8601 start; inclusive. Recommended for non-trivial queries. | -| `--to-date ` | no | ISO 8601 end; inclusive of the exact instant. Pass the next day’s start (for example `2026-02-01`) or `T23:59:59.999Z` to capture a full final day. Applies only to `events`; `export` bounds are whole-day inclusive, so the next-day trick over-exports. See [workflow-guide gotchas](./audit-workflow-guide.md#common-gotchas). | +| `--to-date ` | no | ISO 8601 end; inclusive of the exact instant. Pass the next day’s start or `T23:59:59.999Z` to capture a full final day. Applies only to `events`; `export` bounds are whole-day inclusive, so the next-day trick over-exports. See [workflow-guide gotchas](./audit-workflow-guide.md#common-gotchas). | | `--source ` | no | Repeatable event-source filter; discover IDs with `sources`. | | `--target ` | no | Repeatable event-target filter. | | `--type ` | no | Repeatable event-type filter. | @@ -77,7 +77,7 @@ uip admin audit tenant events --from-date 2026-04-22T00:00:00Z --to-date 2026-04 "auditEvents": [ { "id": "...", - "createdOn": "2026-04-29T17:46:07.123Z", + "createdOn": "...", "organizationId": "...", "organizationName": "...", "tenantId": "...", @@ -110,14 +110,14 @@ Run the long-term audit store export for `[--from-date, --to-date]` as inclusive ```bash uip admin audit tenant export \ - --from-date 2026-01-01 \ - --to-date 2026-01-31 \ + --from-date \ + --to-date \ --output-path ./audit-exports \ --output json uip admin audit tenant export \ - --from-date 2026-01-01 \ - --to-date 2026-01-31 \ + --from-date \ + --to-date \ --file-format csv \ --output-path ./audit-exports \ --output json @@ -130,7 +130,7 @@ uip admin audit tenant export \ --output json ``` -Pass a directory, never a filename or extension. Each run creates `audit___`: a folder of day-wise JSON files by default or one merged CSV. JSON output is `./audit-exports/audit_2026-01-01_2026-01-31_/`; CSV output is `./audit-exports/audit_2026-01-01_2026-01-31_.csv`. The generated-at value is to the second; repeated exports do not collide. +Pass a directory, never a filename or extension. Each run creates `audit___`: a folder of day-wise JSON files by default or one merged CSV. JSON output is `./audit-exports/audit___/`; CSV output is `./audit-exports/audit___.csv`. The generated-at value is to the second; repeated exports do not collide. This is the organization/tenant audit event store (LTS-schema columns such as `Identifier`, `DateCreatedUtc`, `ActorId`, `Action`, `Source`, `Category`) for compliance dumps, login history, and cross-platform “who did what where.” It is not `uip or audit-logs list --export` (the uipath-platform skill), which exports one Orchestrator tenant’s operational actions with `Component,User,Action,Operation,Time` columns. An org/tenant audit-event or compliance export with a date window and `--output-path`, whether JSON files or spreadsheet/Excel CSV, belongs here. @@ -150,13 +150,13 @@ This is the organization/tenant audit event store (LTS-schema columns such as `I ```json { - "Path": "C:\\absolute\\path\\to\\audit-exports\\audit_2026-01-01_2026-01-31_20260617T112630", + "Path": "C:\\absolute\\path\\to\\audit-exports\\audit___", "Format": "json", "Files": 27, "Bytes": 1841, "Days": 31, "NonEmptyDays": 27, - "GeneratedAt": "2026-06-17T11:26:30.000Z" + "GeneratedAt": "" } ``` @@ -188,7 +188,7 @@ These program-level `uip` flags appear on every command: ```json { "Result": "Failure", - "Message": "Audit export failed for 2026-04-02 (HTTP 504): Gateway Timeout", + "Message": "Audit export failed for (HTTP 504): Gateway Timeout", "Instructions": "Ensure you are logged in with 'uip login' and have access to the audit service." } ``` diff --git a/skills/uipath-admin/references/audit-workflow-guide.md b/skills/uipath-admin/references/audit-workflow-guide.md index c89771608f..6e494a5bf8 100644 --- a/skills/uipath-admin/references/audit-workflow-guide.md +++ b/skills/uipath-admin/references/audit-workflow-guide.md @@ -59,8 +59,8 @@ uip admin audit tenant events \ --source \ --target \ --type \ - --from-date 2026-05-11T00:00:00Z \ - --to-date 2026-05-18T00:00:00Z \ + --from-date T00:00:00Z \ + --to-date T00:00:00Z \ --limit 50 \ --output json ``` @@ -120,8 +120,8 @@ Run: uip admin audit org events \ --user-id \ --type \ - --from-date 2026-04-01T00:00:00Z \ - --to-date 2026-04-29T23:59:59Z \ + --from-date T00:00:00Z \ + --to-date T23:59:59Z \ --limit 200 \ --output json ``` @@ -133,8 +133,8 @@ uip admin audit org events \ --user-id \ --type \ --status Failure \ - --from-date 2026-04-01T00:00:00Z \ - --to-date 2026-04-29T23:59:59Z \ + --from-date T00:00:00Z \ + --to-date T23:59:59Z \ --output json ``` @@ -165,23 +165,23 @@ Run the applicable command: ```bash # Tenant scope — most events (default json: a uniquely-named folder of day-wise JSON files under the base dir) uip admin audit tenant export \ - --from-date 2026-01-01 \ - --to-date 2026-01-31 \ + --from-date \ + --to-date \ --output-path ./audit-exports \ --output json # Tenant scope as a single merged CSV (flat, Excel-friendly) uip admin audit tenant export \ - --from-date 2026-01-01 \ - --to-date 2026-01-31 \ + --from-date \ + --to-date \ --file-format csv \ --output-path ./audit-exports \ --output json # Org scope — admin events (memberships, license, tenant lifecycle) uip admin audit org export \ - --from-date 2026-01-01 \ - --to-date 2026-01-31 \ + --from-date \ + --to-date \ --output-path ./audit-exports \ --output json ``` @@ -200,10 +200,10 @@ Typical layout: ```text audit-exports/ -└── audit_2026-01-01_2026-01-31_20260617T112630/ - ├── 2026-01-01.json +└── audit___/ + ├── .json ├── ... - └── 2026-01-31.json + └── .json ``` Each file is a JSON array with LTS-schema keys (`Identifier`, `DateCreatedUtc`, `OrganizationId`, `ActorId`, `User`, `Action`, …), unlike the camelCase live `events` response. Tell downstream users about this difference. @@ -233,8 +233,8 @@ Run both scopes over a bounded recent window without filters, then summarize eve Run: ```bash -uip admin audit org events --from-date 2026-04-22 --to-date 2026-04-29 --limit 100 --output json > /tmp/org-events.json -uip admin audit tenant events --from-date 2026-04-22 --to-date 2026-04-29 --limit 100 --output json > /tmp/tenant-events.json +uip admin audit org events --from-date --to-date --limit 100 --output json > /tmp/org-events.json +uip admin audit tenant events --from-date --to-date --limit 100 --output json > /tmp/tenant-events.json ``` ### Step 2 — Group by event type @@ -265,8 +265,8 @@ If multiple signals appear, run the investigations in sequence and stitch the re - **Tenant context:** `tenant` commands fail without an active tenant. Re-run `uip login` with a tenant or pass `--tenant-id ` on every call. - **Pagination:** `next` means newer and is often null; `previous` means older. The CLI follows `previous` automatically for `--limit > 200`; do not reimplement it. -- **Events dates:** date-only ISO strings mean UTC midnight. `--from-date 2026-01-01` means `2026-01-01T00:00:00Z`. To include the full final day, use `--to-date 2026-02-01` as an exclusive next day or `--to-date 2026-01-31T23:59:59.999Z`. -- **Export dates:** bounds are inclusive whole UTC days. January is `--from-date 2026-01-01 --to-date 2026-01-31`; a single day uses the same date for both. Do not use the events next-day convention for exports. +- **Events dates:** date-only ISO strings mean UTC midnight. `--from-date ` means `T00:00:00Z`. To include the full final day, pass the day *after* the window as an exclusive `--to-date`, or append `T23:59:59.999Z` to the final day. +- **Export dates:** bounds are inclusive whole UTC days. A whole month is its first and last day; a single day uses the same date for both. Do not use the events next-day convention for exports. - **Export lag:** the long-term store typically lags live `events` by up to 24–48 hours. Recent trailing days may be empty; offer to rerun later or end the window 2 days earlier when completeness matters. - **Relative dates:** resolve them with `date -u +%F`, `date -u -d 'yesterday' +%F`, or macOS/BSD `date -u -v-1d +%F`, and echo the window. - **Export schema:** default `json` writes one `.json` per UTC day in a generated folder; `--file-format csv` writes one merged CSV with the same LTS-schema field names. Both differ from live camelCase `events`; do not feed exports to a live-shape parser. diff --git a/skills/uipath-admin/references/external-app-management.md b/skills/uipath-admin/references/external-app-management.md index 8d1e882a0c..674156ecf8 100644 --- a/skills/uipath-admin/references/external-app-management.md +++ b/skills/uipath-admin/references/external-app-management.md @@ -55,7 +55,7 @@ Any app with `--user-scope` requires `--redirect-uri` for authorization-code flo Run the following to generate a secret; its value is shown only once: ```bash -uip admin external-apps generate-secret --description "Rotated secret" --expiration "2027-06-01" --output json +uip admin external-apps generate-secret --description "Rotated secret" --expiration "" --output json ``` Confirm with the user first, then run the following to delete a secret; only the secret ID is required: diff --git a/skills/uipath-admin/references/pat-management.md b/skills/uipath-admin/references/pat-management.md index f980139acc..c0b99fd390 100644 --- a/skills/uipath-admin/references/pat-management.md +++ b/skills/uipath-admin/references/pat-management.md @@ -19,7 +19,7 @@ PATs provide scoped API authentication for users when user-context authenticatio ```bash uip admin pat create \ --description "CI/CD pipeline token" \ - --expiration "2027-01-15" \ + --expiration "" \ --scope "OR.Folders.Read,OR.Jobs.Read" \ --output json ``` @@ -44,7 +44,7 @@ uip admin pat revoke --output json Run the following with a new expiration. The new token value is returned only once: ```bash -uip admin pat regenerate --expiration "2028-01-15" --output json +uip admin pat regenerate --expiration "" --output json ``` ## Error Handling diff --git a/skills/uipath-rpa/references/activity-docs/UiPath.AzureWVD.Activities/1.5/coded/examples.md b/skills/uipath-rpa/references/activity-docs/UiPath.AzureWVD.Activities/1.5/coded/examples.md index 2222909a5e..18a7193528 100644 --- a/skills/uipath-rpa/references/activity-docs/UiPath.AzureWVD.Activities/1.5/coded/examples.md +++ b/skills/uipath-rpa/references/activity-docs/UiPath.AzureWVD.Activities/1.5/coded/examples.md @@ -273,7 +273,7 @@ namespace MyProject string[] userIds = new[] { "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", // Azure AD object ID - "ffffffff-1111-2222-3333-444444444444" + "ffffffff-aaaa-bbbb-cccc-dddddddddddd" }; await roleService.AssignObjectsToApplicationGroup(appGroup, userIds); Log("Users assigned to application group."); diff --git a/skills/uipath-rpa/references/activity-docs/UiPath.Word.Activities/2.5/coded/examples.md b/skills/uipath-rpa/references/activity-docs/UiPath.Word.Activities/2.5/coded/examples.md index 9c05ab0494..8de580cc98 100644 --- a/skills/uipath-rpa/references/activity-docs/UiPath.Word.Activities/2.5/coded/examples.md +++ b/skills/uipath-rpa/references/activity-docs/UiPath.Word.Activities/2.5/coded/examples.md @@ -100,10 +100,10 @@ namespace MyProject using var doc = word.UseWordDocument("form.docx"); // Fill bookmarks with data - doc.SetBookmarkContent("CompanyName", "Acme Corporation"); - doc.SetBookmarkContent("Address", "123 Main Street, Suite 100"); - doc.SetBookmarkContent("ContactName", "John Smith"); - doc.SetBookmarkContent("Phone", "+1 (555) 123-4567"); + doc.SetBookmarkContent("CompanyName", ""); + doc.SetBookmarkContent("Address", ""); + doc.SetBookmarkContent("ContactName", ""); + doc.SetBookmarkContent("Phone", ""); doc.SetBookmarkContent("Date", DateTime.Now.ToString("yyyy-MM-dd")); Log("Bookmarks populated successfully."); diff --git a/skills/uipath-rpa/references/legacy/data-manipulation-guide.md b/skills/uipath-rpa/references/legacy/data-manipulation-guide.md index 24e6df32e6..6825e23a59 100644 --- a/skills/uipath-rpa/references/legacy/data-manipulation-guide.md +++ b/skills/uipath-rpa/references/legacy/data-manipulation-guide.md @@ -15,16 +15,18 @@ Use `System.Text.RegularExpressions.Regex` for pattern matching and extraction. | Pattern | RegEx | Match Examples | |---|---|---| | Email | `[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}` | `user@example.com` | -| Phone (US) | `\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}` | `(555) 123-4567`, `555.123.4567` | -| Date (MM/DD/YYYY) | `\d{2}/\d{2}/\d{4}` | `01/15/2025` | -| Date (YYYY-MM-DD) | `\d{4}-\d{2}-\d{2}` | `2025-01-15` | +| Phone (US) | `\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}` | `(NNN) NNN-NNNN`, `NNN.NNN.NNNN` | +| Date (MM/DD/YYYY) | `\d{2}/\d{2}/\d{4}` | `MM/DD/YYYY` | +| Date (YYYY-MM-DD) | `\d{4}-\d{2}-\d{2}` | `YYYY-MM-DD` | | Currency (USD) | `\$[\d,]+\.?\d{0,2}` | `$1,234.56`, `$50` | | Invoice Number | `INV-\d{4,10}` | `INV-12345`, `INV-0001234567` | | ZIP Code (US) | `\d{5}(-\d{4})?` | `90210`, `90210-1234` | -| SSN | `\d{3}-\d{2}-\d{4}` | `123-45-6789` | +| SSN | `\d{3}-\d{2}-\d{4}` | `NNN-NN-NNNN` | | IP Address | `\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}` | `192.168.1.1` | | Decimal Number | `-?\d+\.?\d*` | `123.45`, `-67`, `0.5` | +> `N` marks a digit position. Examples for personally identifiable patterns are masked, not literal values. + ### VB.NET Usage ```vb @@ -376,7 +378,7 @@ CDbl("1,234.56") ' Works on US locale, fails on German locale (1.234,56) Double.Parse("1,234.56", System.Globalization.CultureInfo.InvariantCulture) ' SAFE: explicit date format -DateTime.ParseExact("01/15/2025", "MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture) +DateTime.ParseExact(dateText, "MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture) ``` ### Common Conversion Traps diff --git a/skills/uipath-rpa/references/legacy/testing-guide.md b/skills/uipath-rpa/references/legacy/testing-guide.md index cc0d0598eb..49592056b2 100644 --- a/skills/uipath-rpa/references/legacy/testing-guide.md +++ b/skills/uipath-rpa/references/legacy/testing-guide.md @@ -111,7 +111,7 @@ Sequence "Test_ValidateInput_MultipleScenarios" | `"INV-12345"` | True | Valid invoice number | | `""` | False | Empty string | | `"INV"` | False | Incomplete format | -| `"INV-99999999999"` | False | Number too long | +| `"INV-"` + 11 digits | False | Number too long | | `"inv-12345"` | True | Lowercase (should be case-insensitive) | ### Data Sources From 4c0b1778598138f1474f53aeab2378ae6d280a23 Mon Sep 17 00:00:00 2001 From: Ana-Maria Radu Date: Thu, 10 Sep 2026 16:46:11 +0300 Subject: [PATCH 2/2] docs: use one placeholder per value in audit date examples MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit T00:00:00Z glued a placeholder to a literal time fragment. It kept the literal in the file, and read worse than either form alone — every sibling flag in those same blocks (, ) already uses one placeholder per value. Use / for the seven affected examples in audit-commands.md and audit-workflow-guide.md, and reword the events-date gotcha so it explains the midnight expansion instead of spelling it out against a placeholder. The literal T23:59:59Z on the login-history examples carried the end-of-day rule; state it in prose there so the guidance survives. Add the rule to both guideline files: give each value one placeholder covering the whole value, and state the expected precision in prose. Co-Authored-By: Claude Opus 5 (1M context) --- .claude/rules/content-quality.md | 1 + CONTRIBUTING.md | 5 +++++ skills/uipath-admin/references/audit-commands.md | 2 +- .../references/audit-workflow-guide.md | 16 +++++++++------- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/.claude/rules/content-quality.md b/.claude/rules/content-quality.md index 4cffff007a..2148ac9554 100644 --- a/.claude/rules/content-quality.md +++ b/.claude/rules/content-quality.md @@ -27,6 +27,7 @@ This repository's primary audience is AI coding agents, not humans. Write accord - Show the full command with all required flags - Use `` for user-provided values (angle brackets, UPPER_SNAKE_CASE) - Use a placeholder for any example value that carries the shape of a date, an identifier, or personal data — customer content-inspection gates match on shape alone and block the whole published package. Write `--expiration ""`, never `--expiration "2027-01-15"`; write `` and ``, never a sample address or phone number; mask digit positions as `NNN-NN-NNNN`. State the required format in prose instead: ``--expiration ``, ISO 8601 `YYYY-MM-DD`. +- Give each value one placeholder covering the whole value. Never glue a placeholder to a literal fragment: write `--from-date `, not `--from-date T00:00:00Z`. - Keep product identifiers the reader needs verbatim — error codes, support-forum thread IDs in URLs, vendor documentation URLs. Those are content, not examples. - Specify whether a flag is required or optional - Show expected output when it clarifies behavior diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5039bd8b13..b218f5c5c8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -568,11 +568,16 @@ artifact. Literal dates are also the most common source of examples that go stal | `SetBookmarkContent("Phone", "+1 (555) 123-4567")` | `SetBookmarkContent("Phone", "")` | | `123-45-6789` | `NNN-NN-NNNN` — mask each digit position with `N` | | `"ffffffff-1111-2222-3333-444444444444"` | `"ffffffff-aaaa-bbbb-cccc-dddddddddddd"` — no long digit run | +| `--from-date T00:00:00Z` | `--from-date ` — one placeholder per value | > The left column above deliberately spells out the literals it forbids: this file is not part of the > published npm package (see `files` in `package.json`), so the anti-examples never reach a customer scan. > Exclude `CONTRIBUTING.md` if you ever add a repository-wide content scanner. +Give each value **one** placeholder covering the whole value. Gluing a placeholder to a literal fragment +(`T00:00:00Z`) keeps the literal in the file and reads worse than either form alone — use +`` and state the expected precision in prose. + State a required format in prose or in the flags table rather than demonstrating it with a literal. Write ``--expiration ``, ISO 8601 `YYYY-MM-DD` — not a made-up date that shows the format by example. diff --git a/skills/uipath-admin/references/audit-commands.md b/skills/uipath-admin/references/audit-commands.md index 8f14457891..4797ee58c5 100644 --- a/skills/uipath-admin/references/audit-commands.md +++ b/skills/uipath-admin/references/audit-commands.md @@ -51,7 +51,7 @@ List visible audit event sources. Pass inner `id` GUIDs from `eventTargets[]` an Run queries with filters and cursor pagination: ```bash -uip admin audit tenant events --from-date T00:00:00Z --to-date T00:00:00Z --limit 50 --output json +uip admin audit tenant events --from-date --to-date --limit 50 --output json ``` | Flag | Required | Description | diff --git a/skills/uipath-admin/references/audit-workflow-guide.md b/skills/uipath-admin/references/audit-workflow-guide.md index 6e494a5bf8..5d01f33459 100644 --- a/skills/uipath-admin/references/audit-workflow-guide.md +++ b/skills/uipath-admin/references/audit-workflow-guide.md @@ -59,8 +59,8 @@ uip admin audit tenant events \ --source \ --target \ --type \ - --from-date T00:00:00Z \ - --to-date T00:00:00Z \ + --from-date \ + --to-date \ --limit 50 \ --output json ``` @@ -120,12 +120,14 @@ Run: uip admin audit org events \ --user-id \ --type \ - --from-date T00:00:00Z \ - --to-date T23:59:59Z \ + --from-date \ + --to-date \ --limit 200 \ --output json ``` +Pass full ISO instants here: a date-only `--to-date` stops at midnight and drops the final day’s logins. + For failed logins, run: ```bash @@ -133,8 +135,8 @@ uip admin audit org events \ --user-id \ --type \ --status Failure \ - --from-date T00:00:00Z \ - --to-date T23:59:59Z \ + --from-date \ + --to-date \ --output json ``` @@ -265,7 +267,7 @@ If multiple signals appear, run the investigations in sequence and stitch the re - **Tenant context:** `tenant` commands fail without an active tenant. Re-run `uip login` with a tenant or pass `--tenant-id ` on every call. - **Pagination:** `next` means newer and is often null; `previous` means older. The CLI follows `previous` automatically for `--limit > 200`; do not reimplement it. -- **Events dates:** date-only ISO strings mean UTC midnight. `--from-date ` means `T00:00:00Z`. To include the full final day, pass the day *after* the window as an exclusive `--to-date`, or append `T23:59:59.999Z` to the final day. +- **Events dates:** a date-only ISO string means UTC midnight — `--from-date` given a bare `YYYY-MM-DD` resolves to `T00:00:00Z` on that day. To include the full final day, pass the day *after* the window as an exclusive `--to-date`, or give `--to-date` a full instant ending `T23:59:59.999Z`. - **Export dates:** bounds are inclusive whole UTC days. A whole month is its first and last day; a single day uses the same date for both. Do not use the events next-day convention for exports. - **Export lag:** the long-term store typically lags live `events` by up to 24–48 hours. Recent trailing days may be empty; offer to rerun later or end the window 2 days earlier when completeness matters. - **Relative dates:** resolve them with `date -u +%F`, `date -u -d 'yesterday' +%F`, or macOS/BSD `date -u -v-1d +%F`, and echo the window.