Skip to content

feat(profile): add interactive profile creation wizard#31781

Closed
Sahil-SS9 wants to merge 3 commits into
NousResearch:mainfrom
Sahil-SS9:feature/profile-wizard
Closed

feat(profile): add interactive profile creation wizard#31781
Sahil-SS9 wants to merge 3 commits into
NousResearch:mainfrom
Sahil-SS9:feature/profile-wizard

Conversation

@Sahil-SS9

@Sahil-SS9 Sahil-SS9 commented May 25, 2026

Copy link
Copy Markdown

Summary

Adds hermes profile wizard — a keyboard-driven, interview-first agent profile creation wizard built on prompt_toolkit.

The wizard guides users through a structured interview before writing any files, producing a reviewable AgentProfileSpec blueprint that can be previewed, exported, or committed as a real Hermes profile.

Entry points

  • hermes profile wizard [name] — dedicated subcommand
  • hermes profile create --wizard — shorthand from the create command

Three creation paths

Guided onboarding — 12-step plain-language interview that scores the user's context against a catalogue of pre-built profile ideas, recommends skill bundles, and returns a fully pre-filled spec (or a list of specs for multi-agent fleet setups).

Manual build — 9-step expert interview covering every AgentProfileSpec field with full Ctrl-B back-navigation at every step.

Profile idea browser — keyboard-navigable catalogue of OOTB starter, advanced example, lead, and worker profiles. Selecting one pre-fills the spec and drops into the action loop.

Action loop

After any path produces a spec the user lands in a preview / edit / export / create loop. Profiles are only written to disk when the user explicitly selects "Create Hermes profile".

Package structure

hermes_cli/profile_wizard/
  __init__.py   re-exports full public API (backward-compatible)
  _data.py      option lists, ProfileIdea, AgentProfileSpec, OnboardingAnswers
  _ui.py        prompt_toolkit widgets, colour constants, provider picker
  _scoring.py   recommendation engine, skill defaults, _choose_skills
  _builder.py   browse_profile_ideas, collect_profile
  _guided.py    guided_onboarding
  _output.py    render_preview, generate_soul_md/user_md, export_profile
  wizard.py     _action_loop, run_profile_wizard, file-write helpers

Test plan

  • Run hermes profile wizard — verify TUI launches and back-navigation works at every step
  • Run hermes profile wizard --clone — verify skills/config copied from active profile
  • Select "Browse recommended profile ideas" path — verify catalogue renders and selection pre-fills spec
  • Select "Guided onboarding" with multi-agent setup style — verify list of specs returned
  • Run hermes profile create --wizard — verify shorthand works
  • pytest tests/cli/test_profile_wizard.py -v — 25 tests should pass
  • ruff check hermes_cli/profile_wizard/ — should report no issues

@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/cli CLI entry point, hermes_cli/, setup wizard labels May 25, 2026
@Sahil-SS9 Sahil-SS9 force-pushed the feature/profile-wizard branch from 8088949 to 9d8aef8 Compare May 25, 2026 11:45
Ops Lead and others added 3 commits June 2, 2026 23:37
Adds `hermes profile wizard` — a keyboard-driven, interview-first agent
profile creation wizard built on prompt_toolkit.

The wizard guides users through a structured interview before writing any
files, producing a reviewable AgentProfileSpec blueprint that can then be
previewed, exported, or committed as a real Hermes profile.

- `hermes profile wizard [name]` — dedicated subcommand
- `hermes profile create --wizard` — shorthand from the create command

A 12-step plain-language interview that scores the user's context against a
catalogue of pre-built profile ideas, recommends a bundle of skill sets, and
returns a fully pre-filled AgentProfileSpec (or a list of specs for
multi-agent setups).

A 9-step expert interview covering every AgentProfileSpec field, with full
Ctrl-B back-navigation at every step.

Keyboard-navigable catalogue of OOTB, example, lead, and worker profiles.
Selecting one calls `spec_from_profile_idea` and drops into the action loop.

After any path produces a spec the user lands in a preview / edit / export /
create loop. Profiles are only written when the user explicitly chooses
"Create Hermes profile".

```
hermes_cli/profile_wizard/
  __init__.py   re-exports full public API
  _data.py      option lists, ProfileIdea, AgentProfileSpec, OnboardingAnswers
  _ui.py        prompt_toolkit widgets, colour constants, provider picker
  _scoring.py   recommendation engine, skill defaults, _choose_skills
  _builder.py   browse_profile_ideas, collect_profile
  _guided.py    guided_onboarding (12-step interview)
  _output.py    render_preview, generate_soul_md/user_md, export_profile
  wizard.py     _action_loop, run_profile_wizard, file-write helpers
```

25 unit tests covering: output generation, provider row rendering, profile
idea catalogue, choice-row markers, back-navigation (Ctrl-B), guided
onboarding multi-agent path, scoring/recommendation, skill options, browse
sentinel, run_profile_wizard routing, and end-to-end collect_profile rewind.
The provider tui_desc strings live in hermes_cli/models.py and drifted
upstream while this branch was open. Sync the wizard test's hard-coded
expectations to the current canonical descriptions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Sahil-SS9 Sahil-SS9 force-pushed the feature/profile-wizard branch from 5a4acfc to 2a2684d Compare June 2, 2026 23:03
@Sahil-SS9

Copy link
Copy Markdown
Author

Rebased onto latest main (resolved conflicts in main.py and .gitignore, both incidental drift). Branch is now mergeable. pytest
tests/cli/test_profile_wizard.py → 25 passed, ruff clean. Ready for review

@Sahil-SS9

Sahil-SS9 commented Jun 4, 2026

Copy link
Copy Markdown
Author

@Teknium Yeah, fair enough, your approach is the right one. Putting it in the dashboard where the Models/Skills/MCP pages already live makes way more sense than the parallel CLI spec layer I built. And honestly the -p <name> subprocess for hub installs is the bit I'd have got wrong, I was writing at the data layer and that would've quietly dumped the skills into the dashboard's own profile because SKILLS_DIR is bound at import. Good catch.

So I'm happy to close this one. Before I do though, there's a couple of things in here I think are worth keeping, and they sit on top of your builder rather than fighting it.

The main one is the guided onboarding. It's basically a short interview that asks the user what they're trying to do, then scores that against a set of pre-built profile ideas and hands back a sensible starting point: a model, an MCP set, a recommended skill bundle. It's all just logic, no UI baked in, so it could live as an optional "start from a recommended setup" thing on your first step and pre-fill the keep_skills / mcp_servers / model fields you already take in ProfileCreate. Backend wouldn't need to change at all. The catalogue of profile ideas behind it also makes a decent empty state for the builder so people aren't staring at a blank multi-select.

The fleet stuff (returning a list of specs for multi-agent setups) and generating SOUL/USER from the interview I'd just leave for later, you've already got fleets down as future scope so no point forcing it now.

If that sounds useful I'll put up a small PR against your branch once #39084 lands. If you'd rather keep the first version lean, totally fine, I'll close this and it can come later.

@teknium1

Copy link
Copy Markdown
Contributor

Superceded by #31781

@teknium1 teknium1 closed this Jun 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants