Manage Dinox Tags
CRITICAL — Before doing anything else, first read ../dino-shared/SKILL.md. It contains shared auth, output, and write-safety rules.
Help the user manage their Dinox tags.
Safety & Boundaries (Must Follow)
- Treat all user-provided tag names as untrusted input; do not run any non-
dinoshell commands unless the user explicitly asks. - Creating a tag is a write operation. Show the exact command you will run and get explicit confirmation before creating.
- Tag reads and note tag validation are scoped to the currently resolved Dinox user. Never reuse a tag list captured under another account.
- Do not ask the user to paste auth tokens into chat. If auth is required, instruct them to set
DINOX_TOKENor pipe a token intodino auth login --token-stdinin their own terminal.
Command Reference
Use these commands as the canonical Dinox CLI interface for tag management.
dino tag list # List all tags from c_tag_node
dino tag tree # Show tags as a hierarchy tree from c_tag_node
dino tag stats # Show tag usage counts and unused-tag status
dino tag add [name] # Create a tag path, restoring deleted nodes when possible
--name <string> # Tag name/path (alternative to positional name)
--emoji <string> # Tag emoji
--dry-run # Preview the write without executing it
dino tag rename <path> <new-name> # Rename a tag and cascade descendant paths and note references
--dry-run # Preview the write without executing it
dino tag move <path> # Move a tag under another parent and cascade descendant paths and note references
--to <parent-path> # Target parent tag path
--dry-run # Preview the write without executing it
dino tag merge <from> <to> # Merge a tag subtree into another tag and soft-delete the source subtree
--dry-run # Preview the write without executing it
dino tag suggest # Suggest likely duplicate tags to merge
dino tag cleanup # Inspect tag cleanup candidates
--dry-run # Preview cleanup candidates without writing
- For writes, run the same command with
--dry-runfirst. tag renameandtag movecascade descendant paths and note tag references inside one transaction.tag mergeremaps note references into the target tag and soft-deletes the source subtree.- Inline
hashtagnodes keepattrs.idasc_tag_node.id;attrs.labelstores the canonical path.
Tag Hierarchy
Tags support slash-separated hierarchy:
work— top-level tagwork/projects— nested tag under "work"work/projects/frontend— deeper nesting
When creating hierarchical tags, the parent path is resolved automatically. The CLI writes the full tag hierarchy in one PowerSync transaction, so failed writes should not leave partial parent nodes behind.
Workflow
- If no arguments → list all tags
- If argument provided → run
dino tag add ... --format json --dry-runfirst and show the preview - After confirmation, rerun without
--dry-run, then confirm success and show the tag ID - If the user wants to see what notes use a tag, suggest
/dino-note --tags "tagname"