Feature Description
The current skillware list output is functional but has two UX problems visible in the screenshot below, and is missing an interactive entry point entirely:
- Descriptions are too long — each skill's full description wraps across many rows, making the table hard to scan at a glance. Each description should be capped to a single short sentence (~80 chars max), truncated with
… if needed.
- No visual identity — the table uses
rich's default white-on-dark styling with no color. The repo's existing visual language (soft pastel badges: lavender #C7CEEA, peach #FFDAC1, mint, rose) should be reflected in the CLI output — column headers, category tags, and borders styled with matching pastels.
- No interactive entry point — running
skillware with no arguments currently prints plain argparse help. It should instead launch an ASCII splash screen with an interactive menu.
Rationale
The CLI is the first thing a new contributor sees after install. A visually coherent, welcoming terminal experience reduces friction and signals project quality. The pastel palette already exists in the repo's GitHub labels and README badges — carrying it into the terminal creates a unified identity across surfaces.
The interactive menu makes skillware feel like a first-class tool rather than a flag-driven utility, and is more discoverable for users who don't read docs first.
Implementation Idea
1. Short descriptions in manifest.yaml
Each skill's manifest.yaml should add a short_description field (max ~80 chars, one sentence). skillware list should display short_description if present, falling back to the first sentence of description truncated at 80 chars. This avoids any breaking change to existing manifests.
short_description: "Screens Ethereum wallets against OFAC sanctions and mixer lists."
2. Pastel color theme in cli.py
Use rich styles to apply the repo's palette to the table:
from rich.table import Table
from rich import box
TABLE_STYLE = "bold #C7CEEA" # lavender — headers
CATEGORY_STYLE = "bold #FFDAC1" # peach — category column
ID_STYLE = "#B5EAD7" # mint — skill ID column
BORDER_STYLE = "#C7CEEA" # lavender — table border
table = Table(box=box.SIMPLE_HEAVY, border_style=BORDER_STYLE, header_style=TABLE_STYLE)
table.add_column("ID", style=ID_STYLE, no_wrap=True)
table.add_column("VERSION", style="dim")
table.add_column("CATEGORY", style=CATEGORY_STYLE)
table.add_column("ISSUER", style="dim")
table.add_column("DESCRIPTION")
table.add_column("REQUIREMENTS", style="dim")
3. ASCII splash + interactive menu
When skillware is run with no arguments (instead of argparse help), display:
███████╗██╗ ██╗██╗██╗ ██╗ ██╗ █████╗ ██████╗ ███████╗
██╔════╝██║ ██╔╝██║██║ ██║ ██║██╔══██╗██╔══██╗██╔════╝
███████╗█████╔╝ ██║██║ ██║ █╗ ██║███████║██████╔╝█████╗
╚════██║██╔═██╗ ██║██║ ██║███╗██║██╔══██║██╔══██╗██╔══╝
███████║██║ ██╗██║███████╗╚███╔███╔╝██║ ██║██║ ██║███████╗
╚══════╝╚═╝ ╚═╝╚═╝╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝
Skill Management Framework — v{version}
Followed by a minimal numbered menu listing all available commands:
[1] list — discover and display all locally installed skills
[2] paths — show and repair skill directory resolution paths
[3] test — run test_skill.py for one or all skills
[4] help — usage guide for any command
>
The menu should accept both number input (1) and command name (list). Entering a number or name runs the corresponding command interactively. Ctrl+C / q exits cleanly. The aesthetic should be minimal and purposeful — no animations, no gimmicks — just clean monospace typography, consistent pastel accents, and a military-terse tone (short labels, no decoration beyond what's functional).
The splash and menu live in a new cmd_interactive() function in skillware/cli.py, called from main() when args.command is None.
Affected Files
| File |
Change |
skillware/cli.py |
Add pastel styles to table, add cmd_interactive() splash+menu, update main() |
skillware/core/ (manifests) |
Add short_description field to existing skill manifests |
tests/test_cli.py |
Tests for cmd_interactive() exit, menu dispatch, and truncation logic |
docs/usage/cli.md |
Document short_description, the interactive menu, and color theme |
Checklist for the implementer
Feature Description
The current
skillware listoutput is functional but has two UX problems visible in the screenshot below, and is missing an interactive entry point entirely:…if needed.rich's default white-on-dark styling with no color. The repo's existing visual language (soft pastel badges: lavender#C7CEEA, peach#FFDAC1, mint, rose) should be reflected in the CLI output — column headers, category tags, and borders styled with matching pastels.skillwarewith no arguments currently prints plain argparse help. It should instead launch an ASCII splash screen with an interactive menu.Rationale
The CLI is the first thing a new contributor sees after install. A visually coherent, welcoming terminal experience reduces friction and signals project quality. The pastel palette already exists in the repo's GitHub labels and README badges — carrying it into the terminal creates a unified identity across surfaces.
The interactive menu makes
skillwarefeel like a first-class tool rather than a flag-driven utility, and is more discoverable for users who don't read docs first.Implementation Idea
1. Short descriptions in
manifest.yamlEach skill's
manifest.yamlshould add ashort_descriptionfield (max ~80 chars, one sentence).skillware listshould displayshort_descriptionif present, falling back to the first sentence ofdescriptiontruncated at 80 chars. This avoids any breaking change to existing manifests.2. Pastel color theme in
cli.pyUse
richstyles to apply the repo's palette to the table:3. ASCII splash + interactive menu
When
skillwareis run with no arguments (instead of argparse help), display:Followed by a minimal numbered menu listing all available commands:
The menu should accept both number input (
1) and command name (list). Entering a number or name runs the corresponding command interactively.Ctrl+C/qexits cleanly. The aesthetic should be minimal and purposeful — no animations, no gimmicks — just clean monospace typography, consistent pastel accents, and a military-terse tone (short labels, no decoration beyond what's functional).The splash and menu live in a new
cmd_interactive()function inskillware/cli.py, called frommain()whenargs.command is None.Affected Files
skillware/cli.pycmd_interactive()splash+menu, updatemain()skillware/core/(manifests)short_descriptionfield to existing skill manifeststests/test_cli.pycmd_interactive()exit, menu dispatch, and truncation logicdocs/usage/cli.mdshort_description, the interactive menu, and color themeChecklist for the implementer
short_descriptionfield added to all existingmanifest.yamlfiles underskills/skillware listdisplaysshort_description(truncated fallback if absent), max 80 chars per cellrichstyles matching the repo's label paletteskillware(no args) launches ASCII splash (try to copy the logo from readme) + interactive numbered menuq/Ctrl+Ctests/test_cli.pycovers truncation logic and interactive dispatchdocs/usage/cli.mdupdated