Agent skill

Uxlog Usage

by hardisgroupcom in hardisgroupcom/sfdx-hardis

How to pick the correct uxLog level (action, log, warning, error, success, other), the matching chalk color, the options object (sensitive, alwaysVisible), VS Code UI suppression, and uxLogTable.

AGPL-3.0Auto-check passedDevOps & Cloud

Install Uxlog Usage

skills CLI
$ npx skills add hardisgroupcom/sfdx-hardis --skill uxlog-usage -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install hardisgroupcom/sfdx-hardis uxlog-usage --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/hardisgroupcom/sfdx-hardis.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/uxlog-usage .claude/skills/uxlog-usage && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
uxlog-usage
GitHub stars
400
Token cost
~2.7k tokens
SKILL.md length
1,107 words
Files
1
Skills in repo
21
Repo updated
First seen
Licence
AGPL-3.0

At a glance

How to pick the correct uxLog level (action, log, warning, error, success, other), the matching chalk color, the options object (sensitive, alwaysVisible), VS Code UI suppression, and uxLogTable.

  • Works in 3 steps: The terminal (via commandThis.ux.log or… → The hardisLogFileStream file log. → The VS Code (LWC) UI over WebSocket -…
  • Modifying any uxLog call
  • SKILL.md covers Import, Levels and colors (strict 1:1…, Options (4th argument) and VS Code / LWC UI suppression, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Uxlog Usage is an agent skill from hardisgroupcom/sfdx-hardis. How to pick the correct uxLog level (action, log, warning, error, success, other), the matching chalk color, the options object (sensitive, alwaysVisible), VS Code UI suppression, and uxLogTable. Use when adding or modifying any uxLog call.

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in DevOps & Cloud. It works with Visual Studio Code. The repository describes itself as: French-army-knife Toolbox for Salesforce. Orchestrates base commands and assist users with interactive wizards to make much more than native Salesforce CLI + Allows you to define…. The licence is AGPL-3.0.

When your agent uses it

  • Modifying any uxLog call

Example prompts

  • “/uxlog-usage”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. The terminal (via commandThis.ux.log or console.log).
  2. The hardisLogFileStream file log.
  3. The VS Code (LWC) UI over WebSocket - except when logType === "other", or the line contains the markers [command] or [NotifProvider].

What it can do on your machine

Read from SKILL.md and the folder at commit 971ac89. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Uxlog Usage loads about 2.7k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 1,107 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~63
When it runs · the whole SKILL.md, loaded when a task matches
~2.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from hardisgroupcom/sfdx-hardis at commit 971ac89, republished under its AGPL-3.0 licence (© hardisgroupcom). 1,107 words, ~2,704 tokens.

Download SKILL.mdSave it as .claude/skills/uxlog-usage/SKILL.md (or your agent's skills folder).
name
uxlog-usage
description
How to pick the correct uxLog level (action, log, warning, error, success, other), the matching chalk color, the options object (sensitive, alwaysVisible), VS Code UI suppression, and uxLogTable. Use when adding or modifying any uxLog call.
user-invocable
false

uxLog Usage

uxLog writes to three sinks at once:

  1. The terminal (via commandThis.ux.log or console.log).
  2. The hardisLogFileStream file log.
  3. The VS Code (LWC) UI over WebSocket - except when logType === "other", or the line contains the markers [command] or [NotifProvider].

The logType argument both labels the line in the UI (drives section grouping, icons, colors) and decides whether the line reaches the UI at all. Pick it deliberately.

Import

typescript
import { uxLog, uxLogTable } from "../../../common/utils/index.js";
import c from "chalk";
import { t } from "../../../common/utils/i18n.js";

Levels and colors (strict 1:1 pairing)

Always pair the level with its chalk color. Mixing them confuses the terminal output and breaks the convention used across ~2000 existing call sites.

LevelChalk colorWhen to use
actionc.cyanA new major step. Opens a new section / log group in the VS Code LWC UI. One per logical phase (e.g. "Querying", "Generating report", "Deploying metadata").
logc.greySub-detail beneath the current action. Counts, file paths, timings, intermediate state.
warningc.yellowRecoverable issue the user should review. Operation continues.
errorc.redFailure or blocking issue. Operation is aborting or the result is unusable.
successc.greenConfirmed successful completion of an operation, often the closing line of an action block.
othernone / c.grey / c.italicConsole + file only. NOT forwarded to the VS Code UI. Use for raw JSON dumps, verbose debug, or chatter that would clutter the UI session log.
table(internal)Used by uxLogTable only. Do not call uxLog("table", ...) directly.
Examples
typescript
// New phase - opens a UI section
uxLog("action", this, c.cyan(t("deployingMetadata", { metadata: name })));

// Detail under that action
uxLog("log", this, c.grey(t("foundFiles", { count: files.length })));
uxLog("log", this, c.grey(`- ${reportFile}`));

// Recoverable issue
uxLog("warning", this, c.yellow(t("missingOptionalConfig", { key: "slackWebhook" })));

// Failure
uxLog("error", this, c.red(t("deploymentFailed", { message: e.message })));

// Successful completion
uxLog("success", this, c.green(t("deploymentSucceeded", { org: targetOrg })));

// Debug payload that should NOT pollute the VS Code UI
uxLog("other", this, JSON.stringify(rawApiResponse, null, 2));
Pitfalls to avoid
  • Do not use c.green with error, c.red with success, etc. The level and color must match.
  • Do not use action for sub-details - that creates spurious sections in the UI. One action per phase, then log for everything underneath.
  • Do not use log (which goes to the UI in grey) for noisy diagnostic output - prefer other.
  • Do not omit chalk - every uxLog should be wrapped in the matching color so terminal output stays readable.

Options (4th argument)

The optional fourth argument is a UxLogOptions object: { sensitive?: boolean; alwaysVisible?: boolean }.

typescript
uxLog("log", this, c.grey(`Authenticating with token ${token}`), { sensitive: true });
uxLog("action", this, c.cyan("Installation summary:"), { alwaysVisible: true });

Backward compatibility: the 4th argument also still accepts a bare boolean (the legacy sensitive flag), because uxLog is called by external plugins. uxLog(..., true) is equivalent to uxLog(..., { sensitive: true }). For new code, always use the options object.

sensitive

Set { sensitive: true } when the line contains credentials, tokens, secrets, or any data that must not land in the file log or the VS Code UI. Use it for any line that interpolates an access token, refresh token, client secret, password, or third-party API key.

Behaviour:

  • Terminal: shows the real text (so the user running the command can still see it locally).
  • File log (hardisLogFileStream): writes the literal string OBFUSCATED LOG LINE.
  • VS Code UI: sends OBFUSCATED LOG LINE. Exception: lines containing SFDX_CLIENT_ID_, SFDX_CLIENT_KEY_, or SFDX_CLIENT_CERT_ are sent as-is even when sensitive is set.
alwaysVisible

Set { alwaysVisible: true } to keep the enclosing VS Code UI section expanded by default, instead of auto-collapsing when a later section opens (and staying open in the UI's "simple" mode too). A manual collapse by the user still wins.

  • On an action line: keeps the section that line starts expanded.
  • On any other level (log, warning, error, ...): keeps the section that contains the line expanded.

Use it for a summary block the user should keep seeing while they act on the next prompt (e.g. an install summary shown just before a confirmation). No effect outside the VS Code LWC UI.

VS Code / LWC UI suppression

The VS Code extension only renders lines whose logType !== "other" AND whose text does not include the markers [command] or [NotifProvider].

Practical consequences:

  • For raw payloads, JSON dumps, or noisy progress that would overwhelm the UI session log, use uxLog("other", ...). The terminal and file log still receive it.
  • The [command] and [NotifProvider] prefixes are reserved for internal command-execution and notification-provider lines that the UI handles through dedicated events; do not introduce new uses of those markers in unrelated code.
  • Other [Marker] prefixes (e.g. [DORA], [sfdx-hardis]) are fine and are forwarded to the UI.
Show full SKILL.md (454 more words)Show less

uxLogTable

For tabular output, do not hand-format a table inside uxLog. Use uxLogTable, which renders an aligned text table to the terminal/file log AND emits a structured table payload to the LWC UI.

typescript
import { uxLogTable } from "../../../common/utils/index.js";

uxLogTable(this, [
  { name: "Account", recordCount: 42, status: "ok" },
  { name: "Contact", recordCount: 17, status: "ok" },
], ["name", "recordCount", "status"]);
  • Second arg: array of plain objects (rows).
  • Third arg (optional): column order. Omit to use the keys of the first row.
  • Booleans are auto-rendered as checkbox emoji via bool2emoji.
  • The LWC UI receives a JSON payload truncated at 20 rows with a "truncated" indicator row appended when the dataset is larger.
A table that can hold more than 20 rows must always come with a report file

The VS Code UI never displays more than UX_LOG_TABLE_MAX_UI_ROWS (20) rows, and invites the user to open the associated CSV / XLS report instead. So every table whose row count is data-driven (query results, file lists, metadata items, users, errors...) must also produce a report file.

Use uxLogTableWithReport from src/common/utils/filesUtils.ts: it displays the table and, when the dataset exceeds 20 rows, writes the CSV (plus its XLSX twin) and pushes it to the UI as a report.

typescript
import { uxLogTableWithReport } from "../../../common/utils/filesUtils.js";

await uxLogTableWithReport(this, rows, ["type", "fullName", "status"], {
  fileNamePrefix: "mdapi-read-successes",
  fileTitle: "Metadata read successes",
});
  • Keep plain uxLogTable only for tables whose size is bounded by construction (a fixed summary, a handful of config keys, a per-status counter). Anything that grows with the org or the project needs the report.
  • When the command already generates its own report covering the same rows (generateReports, generateCsvFile, a generated markdown/XLSX file sent with sendReportFileMessage), keep uxLogTable: the requirement is that the full list is reachable, not that it is written twice.
  • fileNamePrefix must be unique per table inside a command, otherwise two tables overwrite each other's report.

A prompt must always be followed by an uxLog("action", ...)

After the user answers a prompts() call, the VS Code UI needs a new section before it renders anything else: any output that is not uxLog("action", ...) is hidden. This covers log, warning, error, success, uxLogTable, and command execution (execCommand / execSfdxJson / wrapSfdxCoreCommand write their own lines and open sub-command entries in the UI).

So, on every code path leaving a prompt, the first thing that produces output must be an action:

typescript
const confirmRes = await prompts({ type: "confirm", name: "value", message: t("confirmDelete") });
if (confirmRes.value !== true) {
  // Conclusion of the user's answer: make it the action itself
  uxLog("action", this, c.cyan(t("operationCancelledByUser")));
  return {};
}
// Real work starts: open the section before anything logs or runs
uxLog("action", this, c.cyan(t("deletingApexLogs", { count: apexLogsNumber })));
await execCommand(deleteCommand, this, { output: true, fail: true });

Two ways to fix a case, pick the one that reads best:

  1. Convert the next log into an action when it concludes the user's answer ("cancelled by user", "nothing selected", "skipping X"). Remember to switch the chalk color to c.cyan at the same time.
  2. Insert the missing action when the next output is a detail line, a table, a loop, or a command execution: the phase header was simply missing.

This also applies to the prompt wrappers (promptOrg, promptProfiles, promptUserEmail, promptTargetBranch, MetadataUtils.promptMetadataTypes, selectDataWorkspace, selectFilesWorkspace, the promptText / promptSelect / promptConfirm helpers...), and it crosses function boundaries: when a helper ends with a prompt, the caller is responsible for the action.

© hardisgroupcom, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/uxlog-usage of hardisgroupcom/sfdx-hardis.

Open the folder on GitHubat commit 971ac89

Compare with similar skills

Uxlog Usage next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Uxlog Usage compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Uxlog Usage this skillhardisgroupcom/sfdx-hardis400—~2.7kAutomated safety check: PassAGPL-3.0
Wdio Testingansible/vscode-ansible486—~2.2kAutomated safety check: PassMIT
Devsydevsy-org/devsy109—~1.7kAutomated safety check: PassMPL-2.0
Devcontainerjwynia/agent-skills165—~1.2kAutomated safety check: NotesMIT
Osmo Lerobot Trainingmicrosoft/physical-ai-toolchain122—~3.8kAutomated safety check: NotesMIT
Tendril ReleaseIvy-Interactive/Ivy-Tendril200—~2kAutomated safety check: PassCustom licence

Similar skills

  • Wdio Testing

    ansible/vscode-ansible

    Write, run, and debug WebDriverIO (WDIO) UI tests for the Ansible VS Code extension.

    486 GitHub stars~2.2k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Devsy

    devsy-org/devsy

    Operate Devsy workspaces and providers for end users. An agent skill from devsy-org/devsy.

    109 GitHub stars~1.7k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Devcontainer

    jwynia/agent-skills

    Diagnose devcontainer configuration problems and guide development environment setup.

    165 GitHub stars~1.2k tokensUpdated 7 mo ago
    DevOps & CloudAuto-check: notes
  • Osmo Lerobot Training

    microsoft/physical-ai-toolchain

    Official

    Submit, monitor, analyze, and evaluate LeRobot imitation learning training jobs on OSMO with Azure ML MLflow integration and inference evaluation - Brought to you by microsoft/physical-ai-toolchain

    122 GitHub stars~3.8k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Tendril Release

    Ivy-Interactive/Ivy-Tendril

    Updates the used Ivy NuGet packages to the latest stable versions in a branch from development, builds/verifies, merges into development, creates a PR into main, merges it, merges main back to…

    200 GitHub stars~2k tokensUpdated 22 days ago
    DevOps & CloudAuto-check passed
  • Cloud Test

    FreakStudioCN/mpy-hardware-extension

    用本地前端插件连云端后端做端到端测试 / test the local VS Code extension against the deployed cloud backend.

    118 GitHub stars~1.7k tokensUpdated 9 days ago
    DevOps & CloudAuto-check passed

More from hardisgroupcom/sfdx-hardis

All 21 skills in this repo
  • Promotion Branches E2E Test

    hardisgroupcom/sfdx-hardis

    Runs a full end-to-end test of sfdx-hardis promotion branches and backpromote against real Salesforce orgs and a throwaway repository, then writes a report.

    400 GitHub stars~4.7k tokensUpdated today
    Auto-check: notes
  • sfdx-hardis Training End-to-End Test

    hardisgroupcom/sfdx-hardis

    Walks the sfdx-hardis training course end to end as a learner would, against a real Developer Edition org and fork, fixing broken steps and screenshots that no longer match.

    400 GitHub stars~2.6k tokensUpdated today
    Auto-check: notes
  • sfdx-hardis Architecture Guide

    hardisgroupcom/sfdx-hardis

    Explains how the sfdx-hardis Salesforce CLI plugin is built: its TypeScript and Oclif stack, command layout, agent-mode flag and provider classes for git, notifications and AI.

    400 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Changelog Style Rules

    hardisgroupcom/sfdx-hardis

    Style rules for adding CHANGELOG.md entries: short, user-facing bullets grouped by command under the beta section, each linking the command's docs page.

    400 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Documentation

    hardisgroupcom/sfdx-hardis

    Documentation standards for sfdx-hardis commands (description format with Command Behavior and Technical explanations sections, MkDocs site, build:doc).

    400 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Fix Jscpd

    hardisgroupcom/sfdx-hardis

    Decision framework for fixing jscpd (copy-paste detector) errors.

    400 GitHub stars~613 tokensUpdated today
    Auto-check passed

Categories

Questions about Uxlog Usage

What does Uxlog Usage do?

How to pick the correct uxLog level (action, log, warning, error, success, other), the matching chalk color, the options object (sensitive, alwaysVisible), VS Code UI suppression, and uxLogTable. Uxlog Usage is an agent skill from hardisgroupcom/sfdx-hardis. How to pick the correct uxLog level (action, log, warning, error, success, other), the matching chalk color, the options object (sensitive, alwaysVisible), VS Code UI suppression, and uxLogTable.

When should I use Uxlog Usage?

Uxlog Usage fits situations like: modifying any uxLog call.

How do I install Uxlog Usage in Claude Code?

Run `npx skills add hardisgroupcom/sfdx-hardis --skill uxlog-usage -a claude-code`. Or copy the skill folder (.claude/skills/uxlog-usage in hardisgroupcom/sfdx-hardis) into .claude/skills/uxlog-usage in your project. Claude Code loads it when a task matches its description.

How do I install Uxlog Usage in Codex?

Run `npx skills add hardisgroupcom/sfdx-hardis --skill uxlog-usage -a codex`. Or copy the skill folder (.claude/skills/uxlog-usage in hardisgroupcom/sfdx-hardis) into .agents/skills/uxlog-usage in your project. Codex loads it when a task matches its description.

Can I use Uxlog Usage in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hardisgroupcom/sfdx-hardis --skill uxlog-usage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/uxlog-usage, .gemini/skills/uxlog-usage, .github/skills/uxlog-usage and .opencode/skills/uxlog-usage in your project.

What does Uxlog Usage need to run?

SKILL.md names no scripts, command-line tools or credentials: Uxlog Usage is instructions for the agent only.

Does Uxlog Usage access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Uxlog Usage safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Uxlog Usage use?

Uxlog Usage is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Uxlog Usage use?

About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Uxlog Usage?

Skills that share tags, products or a category with Uxlog Usage: Wdio Testing (ansible/vscode-ansible, 486 stars), Devsy (devsy-org/devsy, 109 stars), Devcontainer (jwynia/agent-skills, 165 stars) and Osmo Lerobot Training (microsoft/physical-ai-toolchain, 122 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Uxlog Usage?

hardisgroupcom (a GitHub organization) maintains it in hardisgroupcom/sfdx-hardis, which has 400 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 7, 2026.

Source: hardisgroupcom/sfdx-hardis on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.