Install
$ agentstack add skill-taosdata-agent-skills-idmp-attribute ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
attribute
Read [../idmp-shared/SKILL.md](../idmp-shared/SKILL.md) first.
Before any write: Follow the [🛑 Destructive op confirmation protocol](../idmp-shared/SKILL.md#-destructive-op-confirmation-mandatory). Read-only commands stay read-only here, but delete / write / patch flows still require the shared yes-gate.
Recommended shortcuts
| Shortcut | Purpose | |----------|---------| | [+list](references/idmp-attribute-list.md) | Read attribute definitions before value or history work. | | [+get](references/idmp-attribute-get.md) | Read one attribute's current value. | | [+data](references/idmp-attribute-data.md) | Read multiple current values in one request. | | [+history](references/idmp-attribute-history.md) | Read historical data for one attribute. |
Recommended references
- [
references/idmp-attribute-evaluate-expression.md](references/idmp-attribute-evaluate-expression.md)
Product-style workflow
- Read definitions with
attributes. - Read current values with
data-getordata-postonly when needed. - Run
new-namewithout--ack-riskbefore creating an attribute. - Run
attribute evaluate-expression createbefore saving a formula or expression. - Use
write-dataonly when you need controlled test input on a metric-backed attribute.
Missing context to resolve first
| Context | Why it must be resolved before create or write | | --- | --- | | Owner element | You need the final elementId before you can reserve names, create the attribute, or reread definitions and values. | | Candidate attribute name | attribute attributes new-name only works after the owner is fixed. | | Attribute type plan | You need the intended valueType and whether the attribute is only metadata, expression-backed, or a metric-backed writable reference. | | Write target | Decide whether write-data should target an existing TDengine metric reference rather than the newly created attribute. | | Verification and cleanup target | Decide how you will prove create success, how you will reread written data, and which temporary attribute must be deleted at the end. |
Constrained live behaviors
attribute attributes new-nameonly needs the owner scope, butattributes-postmust use the final reserved name and a realvalueType.- The expression-preview command family is
attribute evaluate-expression create, and the schema path isattribute.evaluate-expression.create; the older guessedattribute.attributes.evaluate-expressionpath is wrong. - Older checks may still mention the guessed
attribute.attributes.evaluate-expressionpath; useidmp-cli attribute evaluate-expression create --dry-run --ack-risk --paramsfor the real request. attribute evaluate-expression createneeds a request body with at leastdataReferenceTypeandexpression. The live-safe starter is{"dataReferenceType":"Formula","expression":"..."};attributeIdanduomIdare optional context helpers, not substitutes for the formula text.- A newly created generic attribute is not automatically a TDengine metric reference.
attribute write-data createcan fail withetda390037unless the target attribute is backed by writable metric storage. - In strict live validation,
attribute historydata listshould use explicitstartandendbounds instead of relying on ambient defaults. - Attribute create is not complete until
attributesreread shows the new definition. - Template-derived attributes are not generic scratch objects. If an attribute still has
attrTempId, the genericattribute elements attributes-deletepath is expected to reject the delete while the backing template exists. - Temporary probe attributes should be deleted after the workflow, even when write-data validation used a different existing metric-backed attribute.
Evidence of completion
- A create is only complete when
attribute elements attributes --paramsrereads the new definition under the same owner. - A value probe is only complete when
data-get,data-post, or boundedhistorydata listreturns the intended attribute data. - A write probe is only complete when the target is known to be metric-backed and the reread reflects the inserted row, not just the CLI success line.
Key commands
idmp-cli schema attribute.elements.attributes
idmp-cli attribute elements attributes --params '{"elementId":1}'
idmp-cli schema attribute.attributes.new-name
# new-name is read-only (reserves a name); no --ack-risk required
idmp-cli attribute attributes new-name --params '{"elementId":1}'
idmp-cli schema attribute.elements.attributes-post
idmp-cli attribute elements attributes-post --ack-risk --params '{"elementId":1}' --data '{"name":"probe-attribute","valueType":"Double"}'
idmp-cli schema attribute.evaluate-expression.create
idmp-cli attribute evaluate-expression create --params '{"elementId":1}' --data '{...}' --dry-run --ack-risk
idmp-cli schema attribute.attributes.data-get
idmp-cli attribute attributes data-get --params '{"elementId":1,"attributeId":2}'
idmp-cli schema attribute.historydata.list
idmp-cli attribute historydata list --params '{"elementId":1,"attributeId":2,"current":1,"size":20,"start":1704067200000,"end":1704153600000}'
Exception and failure handling
- If an attribute is not returned by
attributes, do not guess the ID from older notes or scripts. - If the definition exists but the current value is empty, check history before treating it as a product failure.
- If
new-namereturns a different candidate, use the reserved value instead of forcing the original name. - If expression evaluation fails, fix the formula before create or update; do not save a broken expression first.
- If test writes are rejected with errors such as
etda390037, switch to a known metric-backed attribute; do not assume the newly created attribute is writable. - If delete fails because the attribute came from an attribute template, treat that as a scope boundary; do not keep retrying the generic element-attribute delete path.
- If the preview differs from the intended payload, stay read-only until the schema and permissions are correct.
Validation scenarios
- Read attribute definitions with
idmp-cli schema attribute.elements.attributesandidmp-cli attribute elements attributes --params '{"elementId":1}'. - Reserve a create-safe name with
idmp-cli attribute attributes new-name --params '{"elementId":1}'. - Read one live value with
idmp-cli attribute attributes data-get --params '{"elementId":1,"attributeId":2}'. - Create a probe attribute only after
idmp-cli attribute attributes new-name --params '{"elementId":1}', then verify the create path withidmp-cli attribute elements attributes-post --ack-risk --params '{"elementId":1}' --data '{"name":"probe-attribute","valueType":"Double"}'. - Check history paging with
idmp-cli attribute historydata list --params '{"elementId":1,"attributeId":2,"current":1,"size":20,"start":1704067200000,"end":1704153600000}', then useidmp-cli attribute write-data create --dry-run --ack-risk --params '{"elementId":1}' --data '{"probe":"example"}'only after confirming the target attribute is a writable metric reference andidmp-cli attribute evaluate-expression create --params '{"elementId":1}' --data '{"dataReferenceType":"Formula","expression":"AVG(${attributes['"'"'Current'"'"']})"}' --dry-run --ack-riskalready succeeded.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: taosdata
- Source: taosdata/agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.