Skip to content

feat(dashboard): SKILL.md editor on Skills page + attach-skill selector in cron modals - #44231

Merged
teknium1 merged 1 commit into
mainfrom
feat/dashboard-skill-editor-cron-skills
Jun 11, 2026
Merged

feat(dashboard): SKILL.md editor on Skills page + attach-skill selector in cron modals#44231
teknium1 merged 1 commit into
mainfrom
feat/dashboard-skill-editor-cron-skills

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

The dashboard can now author custom skills (a SKILL.md editor on the Skills page) and attach skills to cron jobs (a multi-select in the cron create/edit modals) — closing the "Cron = when, Skill = how" loop for headless/VPS users whose only GUI is the dashboard (community request from @sora_biz: the only way to add a custom skill or link one to a cron was SSH + nano / hermes cron edit --add-skill).

Changes

  • web/src/components/SkillEditorDialog.tsx (new): SKILL.md editor dialog — create mode (name + optional category + frontmatter template) and edit mode (loads the raw SKILL.md, full rewrite). Errors from server-side validation render inline.
  • web/src/pages/SkillsPage.tsx: "New skill" button in the skills-list header + a per-row edit pencil; list refreshes after save.
  • hermes_cli/web_server.py:
    • GET /api/skills/content, POST /api/skills, PUT /api/skills/content — thin wrappers over the agent's existing skill_manage write path (_create_skill/_edit_skill: name/category/frontmatter/size validation, optional security scan, atomic writes), so dashboard writes behave exactly like agent/CLI writes. Skills prompt-cache snapshot invalidated after a successful write.
    • _profile_scope() now also retargets tools.skill_manager_tool's import-time HERMES_HOME/SKILLS_DIR binding (same seam as skills_tool), so editor reads/writes profile-scope correctly.
    • CronJobCreate gains skills: Optional[List[str]], passed through to create_job (which already supported it); update_job already accepted skills in updates.
  • web/src/pages/CronPage.tsx: skills multi-select (native checkboxes) in both the create and edit modals, populated from /api/skills for the job's profile; skills the job already carries but that aren't installed stay visible so saving doesn't silently drop them; attached-skills badge on job cards.
  • web/src/lib/api.ts: getSkillContent/createSkill/updateSkillContent methods, SkillContent/SkillWriteResult types, skills on CronJob + create/update payloads.

Validation

Check Result
tests/hermes_cli/test_web_server_skill_editor.py (17 new tests: content read + profile scoping, create validation/dup/path-escape, edit 404/400, auth-gate 401s, cron skills round-trip) pass
Sibling suites: test_web_server.py, test_web_server_skills_profiles.py, test_web_server_cron_profiles.py, tests/tools/test_skill_manager_tool.py, tests/cron/ pass
E2E over live uvicorn (real HERMES_HOME, urllib): create → read → edit → on-disk verify, bad frontmatter 400, cron create-with-skills + clear, no-token 401 pass
npx tsc -b --force + npm run build + eslint on touched files (no new errors vs origin/main) clean

Infographic

Dashboard skill editor infographic

@alt-glitch alt-glitch added type/feature New feature or request comp/cli CLI entry point, hermes_cli/, setup wizard tool/skills Skills system (list, view, manage) comp/cron Cron scheduler and job management P3 Low — cosmetic, nice to have labels Jun 11, 2026
…or in cron modals

Headless/VPS users (dashboard-over-Tailscale, no comfortable SSH) could
list/toggle/install skills and create/edit cron jobs, but not author a
custom skill or link one to a cron job — the UI set WHEN a job runs, but
not WHICH skill it uses.

- Skills page: 'New skill' button + per-row edit pencil open a SKILL.md
  editor dialog (frontmatter + body, server-side validation via the same
  _create_skill/_edit_skill path as the agent's skill_manage tool).
- New endpoints: GET /api/skills/content, POST /api/skills,
  PUT /api/skills/content — all profile-scoped via _profile_scope(),
  which now also retargets tools.skill_manager_tool's import-time
  SKILLS_DIR binding.
- Cron page: skills multi-select in both create and edit modals (parity
  with hermes cron --skill / edit --add-skill); CronJobCreate gains a
  skills field; job cards show an attached-skills badge. update_job
  already accepted skills in updates.
- Tests: 17 new endpoint tests (content read, create/edit validation +
  profile scoping + auth gate, cron skills round-trip).
@teknium1
teknium1 force-pushed the feat/dashboard-skill-editor-cron-skills branch from 703af16 to 888ddab Compare June 11, 2026 12:14
@github-actions

Copy link
Copy Markdown
Contributor

🔎 Lint report: feat/dashboard-skill-editor-cron-skills vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 10712 on HEAD, 10709 on base (🆕 +3)

🆕 New issues (3):

Rule Count
unresolved-import 2
invalid-argument-type 1
First entries
tests/hermes_cli/test_web_server_skill_editor.py:14: [unresolved-import] unresolved-import: Cannot resolve imported module `pytest`
tests/hermes_cli/test_web_server_skill_editor.py:58: [unresolved-import] unresolved-import: Cannot resolve imported module `starlette.testclient`
hermes_cli/web_server.py:8794: [invalid-argument-type] invalid-argument-type: Argument to function `_create_skill` is incorrect: Expected `str`, found `(str & ~AlwaysFalsy) | None`

✅ Fixed issues: none

Unchanged: 5603 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@teknium1
teknium1 merged commit a09343c into main Jun 11, 2026
28 checks passed
@teknium1
teknium1 deleted the feat/dashboard-skill-editor-cron-skills branch June 11, 2026 13:10
alt-glitch pushed a commit that referenced this pull request Jun 14, 2026
…or in cron modals (#44231)

Headless/VPS users (dashboard-over-Tailscale, no comfortable SSH) could
list/toggle/install skills and create/edit cron jobs, but not author a
custom skill or link one to a cron job — the UI set WHEN a job runs, but
not WHICH skill it uses.

- Skills page: 'New skill' button + per-row edit pencil open a SKILL.md
  editor dialog (frontmatter + body, server-side validation via the same
  _create_skill/_edit_skill path as the agent's skill_manage tool).
- New endpoints: GET /api/skills/content, POST /api/skills,
  PUT /api/skills/content — all profile-scoped via _profile_scope(),
  which now also retargets tools.skill_manager_tool's import-time
  SKILLS_DIR binding.
- Cron page: skills multi-select in both create and edit modals (parity
  with hermes cron --skill / edit --add-skill); CronJobCreate gains a
  skills field; job cards show an attached-skills badge. update_job
  already accepted skills in updates.
- Tests: 17 new endpoint tests (content read, create/edit validation +
  profile scoping + auth gate, cron skills round-trip).
AIalliAI pushed a commit to AIalliAI/Hermes that referenced this pull request Jun 14, 2026
…or in cron modals (NousResearch#44231)

Headless/VPS users (dashboard-over-Tailscale, no comfortable SSH) could
list/toggle/install skills and create/edit cron jobs, but not author a
custom skill or link one to a cron job — the UI set WHEN a job runs, but
not WHICH skill it uses.

- Skills page: 'New skill' button + per-row edit pencil open a SKILL.md
  editor dialog (frontmatter + body, server-side validation via the same
  _create_skill/_edit_skill path as the agent's skill_manage tool).
- New endpoints: GET /api/skills/content, POST /api/skills,
  PUT /api/skills/content — all profile-scoped via _profile_scope(),
  which now also retargets tools.skill_manager_tool's import-time
  SKILLS_DIR binding.
- Cron page: skills multi-select in both create and edit modals (parity
  with hermes cron --skill / edit --add-skill); CronJobCreate gains a
  skills field; job cards show an attached-skills badge. update_job
  already accepted skills in updates.
- Tests: 17 new endpoint tests (content read, create/edit validation +
  profile scoping + auth gate, cron skills round-trip).
T02200059 pushed a commit to T02200059/hermes-agent that referenced this pull request Jun 18, 2026
…or in cron modals (NousResearch#44231)

Headless/VPS users (dashboard-over-Tailscale, no comfortable SSH) could
list/toggle/install skills and create/edit cron jobs, but not author a
custom skill or link one to a cron job — the UI set WHEN a job runs, but
not WHICH skill it uses.

- Skills page: 'New skill' button + per-row edit pencil open a SKILL.md
  editor dialog (frontmatter + body, server-side validation via the same
  _create_skill/_edit_skill path as the agent's skill_manage tool).
- New endpoints: GET /api/skills/content, POST /api/skills,
  PUT /api/skills/content — all profile-scoped via _profile_scope(),
  which now also retargets tools.skill_manager_tool's import-time
  SKILLS_DIR binding.
- Cron page: skills multi-select in both create and edit modals (parity
  with hermes cron --skill / edit --add-skill); CronJobCreate gains a
  skills field; job cards show an attached-skills badge. update_job
  already accepted skills in updates.
- Tests: 17 new endpoint tests (content read, create/edit validation +
  profile scoping + auth gate, cron skills round-trip).
waefrebeorn pushed a commit to waefrebeorn/slermes that referenced this pull request Jul 2, 2026
…or in cron modals (NousResearch#44231)

Headless/VPS users (dashboard-over-Tailscale, no comfortable SSH) could
list/toggle/install skills and create/edit cron jobs, but not author a
custom skill or link one to a cron job — the UI set WHEN a job runs, but
not WHICH skill it uses.

- Skills page: 'New skill' button + per-row edit pencil open a SKILL.md
  editor dialog (frontmatter + body, server-side validation via the same
  _create_skill/_edit_skill path as the agent's skill_manage tool).
- New endpoints: GET /api/skills/content, POST /api/skills,
  PUT /api/skills/content — all profile-scoped via _profile_scope(),
  which now also retargets tools.skill_manager_tool's import-time
  SKILLS_DIR binding.
- Cron page: skills multi-select in both create and edit modals (parity
  with hermes cron --skill / edit --add-skill); CronJobCreate gains a
  skills field; job cards show an attached-skills badge. update_job
  already accepted skills in updates.
- Tests: 17 new endpoint tests (content read, create/edit validation +
  profile scoping + auth gate, cron skills round-trip).
santhreal pushed a commit to santhreal/hermes-agent that referenced this pull request Jul 13, 2026
…or in cron modals (NousResearch#44231)

Headless/VPS users (dashboard-over-Tailscale, no comfortable SSH) could
list/toggle/install skills and create/edit cron jobs, but not author a
custom skill or link one to a cron job — the UI set WHEN a job runs, but
not WHICH skill it uses.

- Skills page: 'New skill' button + per-row edit pencil open a SKILL.md
  editor dialog (frontmatter + body, server-side validation via the same
  _create_skill/_edit_skill path as the agent's skill_manage tool).
- New endpoints: GET /api/skills/content, POST /api/skills,
  PUT /api/skills/content — all profile-scoped via _profile_scope(),
  which now also retargets tools.skill_manager_tool's import-time
  SKILLS_DIR binding.
- Cron page: skills multi-select in both create and edit modals (parity
  with hermes cron --skill / edit --add-skill); CronJobCreate gains a
  skills field; job cards show an attached-skills badge. update_job
  already accepted skills in updates.
- Tests: 17 new endpoint tests (content read, create/edit validation +
  profile scoping + auth gate, cron skills round-trip).
donbowman pushed a commit to donbowman/hermes-agent that referenced this pull request Jul 13, 2026
…or in cron modals (NousResearch#44231)

Headless/VPS users (dashboard-over-Tailscale, no comfortable SSH) could
list/toggle/install skills and create/edit cron jobs, but not author a
custom skill or link one to a cron job — the UI set WHEN a job runs, but
not WHICH skill it uses.

- Skills page: 'New skill' button + per-row edit pencil open a SKILL.md
  editor dialog (frontmatter + body, server-side validation via the same
  _create_skill/_edit_skill path as the agent's skill_manage tool).
- New endpoints: GET /api/skills/content, POST /api/skills,
  PUT /api/skills/content — all profile-scoped via _profile_scope(),
  which now also retargets tools.skill_manager_tool's import-time
  SKILLS_DIR binding.
- Cron page: skills multi-select in both create and edit modals (parity
  with hermes cron --skill / edit --add-skill); CronJobCreate gains a
  skills field; job cards show an attached-skills badge. update_job
  already accepted skills in updates.
- Tests: 17 new endpoint tests (content read, create/edit validation +
  profile scoping + auth gate, cron skills round-trip).
spectrum-128k pushed a commit to spectrum-128k/hermes-agent-upstream-fork that referenced this pull request Jul 15, 2026
…or in cron modals (NousResearch#44231)

Headless/VPS users (dashboard-over-Tailscale, no comfortable SSH) could
list/toggle/install skills and create/edit cron jobs, but not author a
custom skill or link one to a cron job — the UI set WHEN a job runs, but
not WHICH skill it uses.

- Skills page: 'New skill' button + per-row edit pencil open a SKILL.md
  editor dialog (frontmatter + body, server-side validation via the same
  _create_skill/_edit_skill path as the agent's skill_manage tool).
- New endpoints: GET /api/skills/content, POST /api/skills,
  PUT /api/skills/content — all profile-scoped via _profile_scope(),
  which now also retargets tools.skill_manager_tool's import-time
  SKILLS_DIR binding.
- Cron page: skills multi-select in both create and edit modals (parity
  with hermes cron --skill / edit --add-skill); CronJobCreate gains a
  skills field; job cards show an attached-skills badge. update_job
  already accepted skills in updates.
- Tests: 17 new endpoint tests (content read, create/edit validation +
  profile scoping + auth gate, cron skills round-trip).
kulikman pushed a commit to kulikman/hermes-agent_fork that referenced this pull request Jul 16, 2026
…or in cron modals (NousResearch#44231)

Headless/VPS users (dashboard-over-Tailscale, no comfortable SSH) could
list/toggle/install skills and create/edit cron jobs, but not author a
custom skill or link one to a cron job — the UI set WHEN a job runs, but
not WHICH skill it uses.

- Skills page: 'New skill' button + per-row edit pencil open a SKILL.md
  editor dialog (frontmatter + body, server-side validation via the same
  _create_skill/_edit_skill path as the agent's skill_manage tool).
- New endpoints: GET /api/skills/content, POST /api/skills,
  PUT /api/skills/content — all profile-scoped via _profile_scope(),
  which now also retargets tools.skill_manager_tool's import-time
  SKILLS_DIR binding.
- Cron page: skills multi-select in both create and edit modals (parity
  with hermes cron --skill / edit --add-skill); CronJobCreate gains a
  skills field; job cards show an attached-skills badge. update_job
  already accepted skills in updates.
- Tests: 17 new endpoint tests (content read, create/edit validation +
  profile scoping + auth gate, cron skills round-trip).
Gravezzz pushed a commit to Gravezzz/hermes-agent that referenced this pull request Jul 21, 2026
…or in cron modals (NousResearch#44231)

Headless/VPS users (dashboard-over-Tailscale, no comfortable SSH) could
list/toggle/install skills and create/edit cron jobs, but not author a
custom skill or link one to a cron job — the UI set WHEN a job runs, but
not WHICH skill it uses.

- Skills page: 'New skill' button + per-row edit pencil open a SKILL.md
  editor dialog (frontmatter + body, server-side validation via the same
  _create_skill/_edit_skill path as the agent's skill_manage tool).
- New endpoints: GET /api/skills/content, POST /api/skills,
  PUT /api/skills/content — all profile-scoped via _profile_scope(),
  which now also retargets tools.skill_manager_tool's import-time
  SKILLS_DIR binding.
- Cron page: skills multi-select in both create and edit modals (parity
  with hermes cron --skill / edit --add-skill); CronJobCreate gains a
  skills field; job cards show an attached-skills badge. update_job
  already accepted skills in updates.
- Tests: 17 new endpoint tests (content read, create/edit validation +
  profile scoping + auth gate, cron skills round-trip).
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 comp/cron Cron scheduler and job management P3 Low — cosmetic, nice to have tool/skills Skills system (list, view, manage) type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants