feat: add /plan command (#1372)

* feat: add /plan command

* refactor: back /plan with bundled skill

* docs: document /plan skill
This commit is contained in:
Teknium 2026-03-14 21:18:17 -07:00 committed by GitHub
parent cb7690b2b5
commit ff3473a37c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 372 additions and 6 deletions

View file

@ -1,13 +1,15 @@
"""Tests for agent/skill_commands.py — skill slash command scanning and platform filtering."""
import os
from datetime import datetime
from unittest.mock import patch
import tools.skills_tool as skills_tool_module
from agent.skill_commands import (
scan_skill_commands,
build_skill_invocation_message,
build_plan_path,
build_preloaded_skills_prompt,
build_skill_invocation_message,
scan_skill_commands,
)
@ -272,3 +274,35 @@ Generate some audio.
assert msg is not None
assert 'file_path="<path>"' in msg
class TestPlanSkillHelpers:
def test_build_plan_path_uses_hermes_home_and_slugifies_request(self, tmp_path, monkeypatch):
monkeypatch.setenv("HERMES_HOME", str(tmp_path))
path = build_plan_path(
"Implement OAuth login + refresh tokens!",
now=datetime(2026, 3, 15, 9, 30, 45),
)
assert path == tmp_path / "plans" / "2026-03-15_093045-implement-oauth-login-refresh-tokens.md"
def test_plan_skill_message_can_include_runtime_save_path_note(self, tmp_path):
with patch("tools.skills_tool.SKILLS_DIR", tmp_path):
_make_skill(
tmp_path,
"plan",
body="Save plans under $HERMES_HOME/plans and do not execute the work.",
)
scan_skill_commands()
msg = build_skill_invocation_message(
"/plan",
"Add a /plan command",
runtime_note="Save the markdown plan with write_file to /tmp/plans/plan.md",
)
assert msg is not None
assert "Save plans under $HERMES_HOME/plans" in msg
assert "Add a /plan command" in msg
assert "/tmp/plans/plan.md" in msg
assert "Runtime note:" in msg