From idmp-plugin
IDMP attribute skill for reading definitions and values, checking history, evaluating expressions, reserving names, and safely writing test data.
How this skill is triggered — by the user, by Claude, or both
Slash command
/idmp-plugin:idmp-attributeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Read [`../idmp-shared/SKILL.md`](../idmp-shared/SKILL.md) first.**
Read ../idmp-shared/SKILL.md first.
Before any write: Follow the 🛑 Destructive op confirmation protocol. Read-only commands stay read-only here, but delete / write / patch flows still require the shared yes-gate.
| Shortcut | Purpose |
|---|---|
+list | Read attribute definitions before value or history work. |
+get | Read one attribute's current value. |
+data | Read multiple current values in one request. |
+history | Read historical data for one attribute. |
attributes.data-get or data-post only when needed.new-name without --ack-risk before creating an attribute.attribute evaluate-expression create before saving a formula or expression.write-data only when you need controlled test input on a metric-backed attribute.| 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. |
attribute attributes new-name only needs the owner scope, but attributes-post must use the final reserved name and a real valueType.attribute evaluate-expression create, and the schema path is attribute.evaluate-expression.create; the older guessed attribute.attributes.evaluate-expression path is wrong.attribute.attributes.evaluate-expression path; use idmp-cli attribute evaluate-expression create --dry-run --ack-risk --params for the real request.attribute evaluate-expression create needs a request body with at least dataReferenceType and expression. The live-safe starter is {"dataReferenceType":"Formula","expression":"..."}; attributeId and uomId are optional context helpers, not substitutes for the formula text.attribute write-data create can fail with etda390037 unless the target attribute is backed by writable metric storage.attribute historydata list should use explicit start and end bounds instead of relying on ambient defaults.attributes reread shows the new definition.attrTempId, the generic attribute elements attributes-delete path is expected to reject the delete while the backing template exists.attribute elements attributes --params rereads the new definition under the same owner.data-get, data-post, or bounded historydata list returns the intended attribute data.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}'
attributes, do not guess the ID from older notes or scripts.new-name returns a different candidate, use the reserved value instead of forcing the original name.etda390037, switch to a known metric-backed attribute; do not assume the newly created attribute is writable.idmp-cli schema attribute.elements.attributes and idmp-cli attribute elements attributes --params '{"elementId":1}'.idmp-cli attribute attributes new-name --params '{"elementId":1}'.idmp-cli attribute attributes data-get --params '{"elementId":1,"attributeId":2}'.idmp-cli attribute attributes new-name --params '{"elementId":1}', then verify the create path with idmp-cli attribute elements attributes-post --ack-risk --params '{"elementId":1}' --data '{"name":"probe-attribute","valueType":"Double"}'.idmp-cli attribute historydata list --params '{"elementId":1,"attributeId":2,"current":1,"size":20,"start":1704067200000,"end":1704153600000}', then use idmp-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 and idmp-cli attribute evaluate-expression create --params '{"elementId":1}' --data '{"dataReferenceType":"Formula","expression":"AVG(${attributes['"'"'Current'"'"']})"}' --dry-run --ack-risk already succeeded.Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub taosdata/agent-skills --plugin idmp-plugin