dtpr-element-design
The element-tier schema skill. Scope is one proposed element (add, edit, or retire). Output is a YAML fragment skeleton matching the canonical element shape plus a symbol disposition that either reuses an existing icon or hands off to dtpr-symbol-design for the SVG. Locale coverage is skeleton only — only the English title and description are drafted; one placeholder row per remaining locale in the active manifest's locales allow-list is emitted for dtpr-translate to fill in downstream.
When to fire
- The user proposes a new element for a specific disclosure concept.
- The user wants to retire an existing element and replace it with something more precise.
- The user asks "how would DTPR describe X" as a prelude to drafting.
- The user pastes YAML and wants a cleaned-up element skeleton with proper locale structure.
Trigger phrases
"propose a new element", "how would DTPR describe X", "draft an element for Y", "retire the cloud_storage element", "replace the X element with something better", "brainstorm a new element for LLM hallucination".
Workflow
Phase 0 — Accept the concept and target category. When multiple categories could fit, surfaces the ambiguity and asks the user to choose.
Phase 1 — Collision check. Calls get_element on the candidate id and list_elements with query=<candidate_title> to surface near-duplicates. Flags collisions for user disambiguation.
Phase 2 — Corpus lookup. Tags: element:<id> for prior research on the element, category:<id> for context, concept:<slug>, framework:<name>, standard:<name>. Dispatches a researcher via Task on miss if available.
Phase 3 — Draft the YAML fragment. Matches the canonical shape of api/schemas/<type>/<version>/elements/<id>.yaml: id, category_id, title and description as arrays of {locale, value} rows (English drafted, one placeholder row per remaining locale in the active manifest's locales allow-list — read live via get_schema, never hardcoded), citation, symbol_id, optional variables.
Phase 4 — Symbol disposition. Picks one of three: reuse an existing symbol (names the id in the YAML), draft a new one (emits a one-line hand-off to dtpr-symbol-design with the concept, target category, and candidate symbol_id), or iterate an existing symbol via the same hand-off when an edit changes the disclosure claim enough that the current icon no longer reads. Uses get_icon_url optionally to confirm a reused symbol's silhouette still fits.
Phase 5 — Inline the Comprehension check block.
Phase 6 — Emit the schema:new handoff and recommend a sibling when relevant — dtpr-symbol-design for the icon step, dtpr-translate to fill placeholder locale rows, dtpr-category-audit when the proposal exposes category overlap, dtpr-datachain-structure when a retirement implies category-level work.
Output
A proposal with Scenario / Proposed changes {Add|Edit|Retire} / Symbol (reuse line or hand-off line to dtpr-symbol-design) / Comprehension check / Next step (schema:new command line) and a sibling recommendation when relevant.
Non-goals
Does not draw the SVG symbol — variants, the local HTML preview, and the final cleaned SVG are produced by dtpr-symbol-design. Translation is out of scope — placeholder locale rows are filled in by dtpr-translate. Does not modify files under api/schemas/ or run schema:new. Does not audit a category's coherence — route to dtpr-category-audit. Does not critique the datachain-type shape — route to dtpr-datachain-structure. Does not describe a system — route to dtpr-describe-system.
Source
plugin/dtpr/skills/dtpr-element-design/SKILL.md in the repository.