agentsclimarketplace

Version visualization

Skill scagogogo/versions-skills/skills/version-visualization

AI-native version number toolkit in Go — Skills + MCP + SDK + CLI. Parse, compare, sort, group, check constraints & range-query version numbers. Works with Claude Code, Codex, Cursor, Windsurf, Cline, VS Code Copilot.

Install
npx -y skills add scagogogo/versions-skills --skill version-visualization

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Render version hierarchies as text trees for debugging, inspection, or reporting.

SKILL.md

5.9 KB, as published. Nobody here has run it

Version Visualization

Setup: See /installation for one-time SDK/CLI/MCP install.
Layers: SDK (Go) → CLI (shell) → MCP (AI tools) — pick your entry point.

When to Use

  • Displaying version structure as an ASCII tree for inspection
  • Visualizing how versions are grouped and nested
  • Generating a summary view showing only group-level information
  • Debugging version collections or presenting version info in terminal output

Decision Tree

Need to show individual versions in a tree?
  → Use VisualizeVersions / version_visualize (without --groups)
Collection has many versions and you need a high-level overview?
  → Use VisualizeVersionGroups / version_visualize with groups_only=true
Need to write output to a buffer or file instead of stdout?
  → Use SDK with io.Writer (bytes.Buffer, os.File)
Reading versions from a file?
  → Use --from-file flag (CLI) or ReadVersionsFromFile (SDK) first

Task Patterns

Render a detailed version tree

Goal: Show all versions grouped by major version with individual entries.

LayerApproach
SDKversions.VisualizeVersions(versionList, os.Stdout, 0) — 0 = no truncation
CLIversions visualize 1.0.0 1.0.1 1.1.0 2.0.0 2.0.1
MCP{"tool": "version_visualize", "arguments": {"versions": ["1.0.0", "1.0.1", "1.1.0", "2.0.0", "2.0.1"], "max_items_per_group": 0}}

Render a group-level summary only

Goal: Show only the group hierarchy without individual version entries.

LayerApproach
SDKversions.VisualizeVersionGroups(versionList, os.Stdout)
CLIversions visualize --groups 1.0.0 1.0.1 1.1.0 2.0.0
MCP{"tool": "version_visualize", "arguments": {"versions": ["1.0.0", "1.0.1", "1.1.0", "2.0.0"], "groups_only": true}}

Visualize with truncation per group

Goal: Limit the number of versions shown per group to avoid overwhelming output.

LayerApproach
SDKversions.VisualizeVersions(versionList, os.Stdout, 3) — max 3 per group
CLIversions visualize --max-items 3 1.0.0 1.0.1 1.1.0 2.0.0 2.0.1 2.1.0
MCP{"tool": "version_visualize", "arguments": {"versions": [...], "max_items_per_group": 3}}

Write visualization to a buffer

Goal: Capture the tree output as a string for further processing.

LayerApproach
SDKvar buf bytes.Buffer; versions.VisualizeVersions(versionList, &buf, 0); output := buf.String()
CLIversions visualize 1.0.0 1.1.0 2.0.0 > tree.txt
MCPResponse includes visualization (string) and total_versions / total_groups counts

Read versions from a file and visualize

Goal: Load versions from a text file and render the tree.

LayerApproach
SDKversionList, _ := versions.ReadVersionsFromFile("versions.txt"); versions.VisualizeVersions(versionList, os.Stdout, 0)
CLIversions visualize --from-file versions.txt
MCPRead with version_read_file first, then pass result to version_visualize

API Reference

SDK Functions

// Detailed tree: individual versions grouped by major version
func VisualizeVersions(versions []*Version, w io.Writer, maxItems int)

// Summary tree: group-level hierarchy only (no individual versions)
func VisualizeVersionGroups(versions []*Version, w io.Writer)
  • maxItems = 0 means show all versions per group (no truncation)
  • Both functions accept any io.Writeros.Stdout, bytes.Buffer, or os.File
  • Release time is only shown when PublicTime is non-zero
  • Output uses Unicode box-drawing characters (├──, └──, ┌─)
  • Labels are in Chinese: "版本总数" (total), "版本组" (group), "发布时间" (release time)

Output structure for VisualizeVersions:

版本总数: 8
版本组数: 2

┌─ 版本组: 1 (3个版本)
├── 1.0.0 (发布时间: 2024-01-01)
├── 1.0.1 (发布时间: 2024-02-01)
└── ...还有1个版本未显示

Output structure for VisualizeVersionGroups:

版本总数: 8
版本组数: 5

├─ 1 (3个版本组, 共3个版本)
│  ├─ 1.0 (1个版本)
│  └─ 1.1 (2个版本)
└─ 2 (3个版本组, 共3个版本)

CLI Commands

versions visualize [versions...]              # render tree from positional args
versions visualize --max-items <n> [v...]     # truncate to n per group
versions visualize --groups [v...]            # group-level summary only
versions visualize --from-file <path>         # read versions from file
versions visualize --groups --from-file <path> # combine flags

MCP Tools

ToolArgumentsReturns
version_visualizeversions ([]string), max_items_per_group? (int, default 0), groups_only? (bool, default false)visualization (string), total_versions (int), total_groups (int)

Cross-References

  • [[version-file-operations]] — read version lists from files before visualizing
  • [[version-grouping]] — Group() is what powers the tree structure
  • [[version-sorting]] — sort versions before visualization for predictable output

Important Notes

  • Output uses Unicode box-drawing characters (├──, └──, ┌─) — ensure terminal supports UTF-8.
  • Release time is only shown when PublicTime is non-zero (set it before calling VisualizeVersions).
  • maxItems = 0 means show all versions per group with no truncation.
  • Output labels are in Chinese ("版本总数" = total versions, "版本组" = version group, "发布时间" = release time).
  • Both SDK functions accept any io.Writer — use os.Stdout, bytes.Buffer, or os.File.
  • MCP response includes both visualization (the tree string) and total_versions / total_groups counts.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.