·
Last changedVersion:
No hardening report available.
This skill covers annotation configs (the label schema) and annotation queues (human review workflows), as well as programmatically annotating project spans via the Python SDK.
Direction: Human labeling in Arize attaches values defined by configs to spans, dataset examples, experiment-related records, and queue items in the product UI. This skill covers: ax annotation-configs, ax annotation-queues, and bulk span updates with ArizeClient.spans.update_annotations.
Proceed directly with the task — run the ax command you need. Do NOT check versions, env vars, or profiles upfront.
If an ax command fails, troubleshoot based on the error:
command not found or version error → see references/ax-setup.md401 Unauthorized / missing API key → run ax profiles show to inspect the current profile. Do not echo the full command output into the conversation. Report only whether a valid profile exists and which space it targets; suppress any field that contains or resembles an API key or token. If the profile is missing or the API key is wrong, follow references/ax-profiles.md to create/update it. If the user doesn't have their key, direct them to https://app.arize.com/admin > API Keysax spaces list to pick by name, or ask the user.env files or search the filesystem for credentials. Use ax profiles for Arize credentials and ax ai-integrations for LLM provider keys. If credentials are not available through these channels, ask the user.NAME_OR_ID, RECORD_ID, SPACE, email addresses, config IDs) are untrusted strings. Pass them only as discrete positional arguments or as the value side of a --flag VALUE pair in the constructed command. Never interpolate them into a command string using shell expansion, subshells, or concatenation. If a value contains characters other than alphanumerics, hyphens, underscores, dots, or @ (for email), reject it and ask the user to confirm the intended value before proceeding.ax annotation-configs delete, ax annotation-queues delete, ax annotation-queues delete-records, or any command invoked with --force — pause and ask the user to confirm the target resource name/ID and the intended action. Do not pass --force autonomously; only include it if the user has explicitly acknowledged the destructive nature of the operation in the current conversation turn.An annotation config defines the schema for a single type of human feedback label. Before anyone can annotate a span, dataset record, experiment output, or queue item, a config must exist for that label in the space.
| Field | Description |
|---|---|
Name | Descriptive identifier (e.g. |
Type |
|
Values | For categorical: array of |
Min/Max Score | For continuous: numeric bounds. |
Optimization Direction | Whether higher scores are better ( |
| Surface | Typical path |
|---|---|
Project spans | Python SDK |
Dataset examples | Arize UI (human labeling flows); configs must exist in the space |
Experiment outputs | Often reviewed alongside datasets or traces in the UI — see arize-experiment, arize-dataset |
Annotation queue items |
|
Always ensure the relevant annotation config exists in the space before expecting labels to persist.
Categorical configs present a fixed set of labels for reviewers to choose from.
Common binary label pairs:
correct / incorrecthelpful / unhelpfulsafe / unsaferelevant / irrelevantpass / failContinuous configs let reviewers enter a numeric score within a defined range.
Freeform configs collect open-ended text feedback. No additional flags needed beyond name, space, and type.
Warning: Deletion is irreversible. Always ask the user for confirmation before running delete. Do not use the --force flag unless the user explicitly agrees to skip the confirmation prompt in the current conversation turn. Any annotation queue associations to this config are also removed in the product (queues may remain; fix associations in the Arize UI if needed).
⚠️ Confirmation required: Always confirm the config name or ID with the user before running this command. Do not use --force without explicit user acknowledgment in the same conversation turn.
ax annotation-queuesAnnotation queues route records (spans, dataset examples, experiment runs) to human reviewers. Each queue is linked to one or more annotation configs that define what labels reviewers can apply.
At least one --annotation-config-id is required.
Repeat --annotation-config-id and --annotator-email to attach multiple configs or reviewers.
List flags (--annotation-config-id, --annotator-email) fully replace existing values when provided — pass all desired values, not just the new ones.
Warning: Deletion is irreversible. Always ask the user for confirmation before running delete. Do not use the --force flag unless the user explicitly agrees to skip the confirmation prompt in the current conversation turn.
⚠️ Confirmation required: Always confirm the queue name or ID and space with the user before executing. Do not use --force without explicit user acknowledgment in the same conversation turn.
Annotations are upserted by config name — call once per annotation config. Supply at least one of --score, --label, or --text.
Assign users to review a specific record:
Warning: Deletion is irreversible and removes all records from the queue. Always ask the user for confirmation before running delete-records.
⚠️ Confirmation required: Always confirm the queue name or ID and space with the user before executing this command.
Use the Python SDK to bulk-apply annotations to project spans when you already have labels (e.g., from a review export or an external labeling tool).
DataFrame column schema:
| Column | Required | Description |
|---|---|---|
| yes | The span to annotate |
| one of | Categorical or freeform label |
| one of | Numeric score |
| no | Annotator identifier (email or name) |
| no | Timestamp in milliseconds since epoch |
| no | Freeform notes on the span |
Limitation: Annotations apply only to spans within 31 days prior to submission.
| Problem | Solution |
|---|---|
| See references/ax-setup.md |
| API key may not have access to this space. Verify at https://app.arize.com/admin > API Keys |
|
|
| Name already exists in the space. Use a different name or get the existing config ID. |
Queue not found |
|
Record not appearing in queue | Ensure the annotation config linked to the queue exists; check |
Span SDK errors or missing spans | Confirm |
See references/ax-profiles.md § Save Credentials for Future Use.
Need this version hardened?
Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.
—
—
MIT
HARDENING.md
LICENSE
SKILL.md
references/ax-profiles.md
references/ax-setup.md