Skip to content
Open
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
3 changes: 3 additions & 0 deletions src/tau_coding/tui/autocomplete.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ def build_completion_state(
has_argument_text = token_end < len(text)
if token.startswith("/skill:"):
if has_argument_text and _matches_skill_command(token, skills):
# Skill arguments are prompt text, so @ file references stay available.
if cwd is not None:
return CompletionState(_file_reference_completions(text=text, cwd=cwd))
return CompletionState()
return CompletionState(_skill_completions(token=token, token_end=token_end, skills=skills))

Expand Down
26 changes: 26 additions & 0 deletions tests/test_tui_autocomplete.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,32 @@ def test_skill_name_completion_hides_after_completed_skill_command_space() -> No
assert request_state.items == ()


def test_file_reference_completion_works_in_skill_command_arguments(tmp_path: Path) -> None:
# Regression test for issue #316: @ file references stopped working in the
# argument text of a /skill invocation.
(tmp_path / "src").mkdir()
(tmp_path / "src" / "app.py").write_text("print('hi')\n", encoding="utf-8")

state = build_completion_state(
"/skill:review fix @app",
command_registry=create_default_command_registry(),
skills=(
Skill(
name="review",
path=Path("review.md"),
content="Review code",
description="Review code",
),
),
prompt_templates=(),
cwd=tmp_path,
)

assert [item.display for item in state.items] == ["@src/app.py"]
assert state.selected is not None
assert state.selected.apply("/skill:review fix @app") == "/skill:review fix @src/app.py"


def test_custom_prompt_completion_hides_after_completed_prompt_command_space() -> None:
trailing_space_state = build_completion_state(
"/example ",
Expand Down