Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .skillware.yaml.example
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ legacy:
# When true, SKILLWARE_SKILL_PATH is merged as external roots (default).
honor_skillware_skill_path: true

# Optional project override for the global CLI theme.
# Supported values: pastel (default/fallback), ocean, mono.
# presentation:
# theme: ocean

# Mail operator settings for office/gmail_handler (active in Skillware 0.5+):
# mail:
# addressbook_path: ~/.config/skillware/addressbook.yaml
Expand All @@ -48,7 +53,5 @@ legacy:
# CLI: skillware mail addressbook init | skillware mail signature set

# Reserved for future releases (ignored today; preserved by skillware config show):
# theme:
# preset: default
# chains:
# default: []
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ Contributors add user-facing entries under `[Unreleased]` in the same PR. Mainta

## [Unreleased]

### Added

- **CLI:** User-configurable `pastel`, `ocean`, and `mono` presentation themes; interactive menu selection persists globally, project config can override it, and unknown values fall back to `pastel` (#248).
- **CLI:** The mail submenu and direct mail commands now follow the active presentation theme (#248).

## [0.5.3] - 2026-09-01

### Added
Expand Down
63 changes: 45 additions & 18 deletions docs/usage/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ version tagline, and footer links. The block art (from `skillware/cli.py`):
```

Tagline: `Skillware v{version} — Skill Management Framework`. Gradient colors
are listed under [Color theme](#color-theme). See [Interactive menu](#interactive-menu)
for a terminal screenshot.
follow the active [color theme](#color-themes). See
[Interactive menu](#interactive-menu) for a terminal screenshot.

## Installation

Expand Down Expand Up @@ -120,6 +120,7 @@ Available commands:
| `5` / `doctor` | Check manifest deps and skill.py import readiness | Available |
| `6` / `help` | Grouped help (Skills, Examples, Paths, Config, Mail, General) with doc links | Available |
| `7` / `mail` | Mail submenu — address book and signature setup for `office/gmail_handler` | Available |
| `8` / `theme` | Choose `pastel`, `ocean`, or `mono` and save it to global config | Available |

## Grouped help

Expand All @@ -131,10 +132,11 @@ Available commands:
| `2` / `examples` | indexed runnable scripts |
| `3` / `paths` | resolution and paths submenu |
| `4` / `config` | merged YAML settings |
| `5` / `general` | menu, `--help`, `--version` |
| `6` / `install` | pip install skillware |
| `7` / `docs` | link to this CLI guide |
| `8` / `interactive` | numbered splash menu |
| `5` / `mail` | address book and signature setup |
| `6` / `general` | menu, `--help`, `--version` |
| `7` / `install` | pip install skillware |
| `8` / `docs` | link to this CLI guide |
| `9` / `interactive` | numbered splash menu |

Brief `--help` groups (same topics, less detail):

Expand All @@ -143,7 +145,8 @@ Brief `--help` groups (same topics, less detail):
| **Skills** | `list`, `test`, `doctor` |
| **Examples** | `examples` |
| **Paths** | `paths`, interactive paths submenu |
| **Config** | `config show` |
| **Config** | `config show`, interactive theme picker |
| **Mail** | `mail`, interactive mail submenu |
| **General** | interactive menu, `--help`, `--version` |

## Commands
Expand Down Expand Up @@ -291,7 +294,9 @@ Interactive menu: **`5` / `doctor`**.

### skillware config

Show merged global + project Skillware configuration (read-only). The `paths` and `mail` sections are active today; other top-level keys are preserved for future settings (themes, chains, etc.).
Show merged global + project Skillware configuration (read-only). The `paths`,
`mail`, and `presentation` sections are active; other top-level keys are
preserved for future settings.

skillware config show

Expand All @@ -313,6 +318,8 @@ resolution:
- bundled
legacy:
honor_skillware_skill_path: true
presentation:
theme: ocean
mail:
addressbook_path: ~/.config/skillware/addressbook.yaml
signature_path: ~/.config/skillware/mail_signature.txt
Expand All @@ -325,6 +332,17 @@ mail:

When no config file exists, resolution stays **legacy**: `SKILLWARE_SKILL_PATH` → `./skills/` walk → bundled. When config exists, `resolution.order` applies (default: project → external → bundled). The **bundled** registry from `pip install skillware` is always included and cannot be disabled. **Pip-only installs with no local `skills/` folder still resolve bundled registry skills** — only roots that exist on disk are searched; an empty project tier does not block bundled.

`skillware config show` reports the effective `presentation.theme`. To change
the global theme without editing YAML, run `skillware`, choose **`8` / `theme`**,
then select a built-in theme by number or name. The picker writes only
`presentation.theme` in the global config and preserves unrelated settings.

A project `.skillware.yaml` value overrides the global selection while the CLI
runs inside that project. The picker still saves the global preference and
prints a notice that the project theme remains active. Remove or change the
project `presentation.theme` value to use the global selection there. Missing,
malformed, or unknown theme values fall back safely to `pastel`.

### skillware mail

Operator UX for **`office/gmail_handler`** address book, email signatures (including multi-profile), and attachment path settings — without editing bundled skill files. **Full operator guide:** [`docs/skills/gmail_handler.md`](../skills/gmail_handler.md) (fresh install checklist, precedence, plain vs HTML MIME, attachments, persistence).
Expand Down Expand Up @@ -418,18 +436,28 @@ the same condition `SkillLoader` requires to load a skill successfully.

`skillware list` always shows the **path-derived ID**; it does not read `manifest["name"]` for the ID column. Keep manifest `name` aligned with that ID so agent loops and `SkillLoader.to_*_tool()` stay consistent. `SkillLoader.load_skill()` warns via `SkillwareIdentityWarning` when a registry-layout skill has a missing or mismatched `name` (flat private skills under `<skill_root>/<skill_name>/` are not checked). See [Agent loops](agent_loops.md#tool-name-matching).

## Color theme
## Color themes

The CLI uses a pastel color palette consistent with the project's visual identity:
The selected theme is applied to tables, headings, categories, skill IDs,
menus, links, statuses, errors, and the splash gradient.

| Element | Color | Hex |
| Theme | Description | Splash gradient |
| :--- | :--- | :--- |
| Table headers and borders | Lavender | `#C7CEEA` |
| Category column | Peach | `#FFDAC1` |
| Skill ID column | Mint | `#B5EAD7` |
| Splash logo and tagline | Gradient (ice → sky → blush) | `#D4E4F1` → `#79B6D8` → `#EBD8DC` |
| Splash footer links | Lavender | `#C7CEEA` |
| Interactive menu | Peach | `#FFDAC1` |
| `pastel` | Default and fallback; preserves the original Skillware lavender, peach, mint, ice, sky, and blush palette | `#D4E4F1` → `#79B6D8` → `#EBD8DC` |
| `ocean` | Deep blue, sky blue, and cyan | `#0C4A6E` → `#0284C7` → `#7DD3FC` |
| `mono` | Grayscale presentation | `#F0F0F0` → `#A0A0A0` → `#606060` |

Choose a theme interactively:

```text
skillware
> 8
theme> ocean
```

The selection takes effect for subsequent output in the same session and is
used on the next CLI start. The splash is printed once at startup, so restart
the CLI to see the newly selected splash gradient.

## short_description field

Expand All @@ -440,4 +468,3 @@ a concise one-line summary shown in `skillware list`:

If `short_description` is absent, the CLI falls back to the first sentence
of `description`, truncated to 80 characters.

Loading
Loading