mirror of
https://github.com/lWolvesl/claw-code.git
synced 2026-04-02 07:41:52 +08:00
Accept $skill invocation form in Skill tool
Teach Skill path resolution to accept the common $skill invocation form in addition to bare names and /skill prefixes. Keep the behavior narrow and add regression coverage using the existing help skill fixture. Constraint: Must not touch unrelated dirty api files in this worktree Constraint: Keep the change limited to rust/crates/tools Rejected: Canonicalize the returned skill field to the resolved name | would change caller-visible output semantics unnecessarily Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep invocation-prefix normalization aligned with how prompt and skill references are written elsewhere in the CLI Tested: cargo test -p tools Not-tested: CODEX_HOME layouts with unusual symlink arrangements
This commit is contained in:
@@ -1090,7 +1090,7 @@ fn todo_store_path() -> Result<std::path::PathBuf, String> {
|
||||
}
|
||||
|
||||
fn resolve_skill_path(skill: &str) -> Result<std::path::PathBuf, String> {
|
||||
let requested = skill.trim().trim_start_matches('/');
|
||||
let requested = skill.trim().trim_start_matches('/').trim_start_matches('$');
|
||||
if requested.is_empty() {
|
||||
return Err(String::from("skill must not be empty"));
|
||||
}
|
||||
@@ -1961,6 +1961,21 @@ mod tests {
|
||||
.as_str()
|
||||
.expect("prompt")
|
||||
.contains("Guide on using oh-my-codex plugin"));
|
||||
|
||||
let dollar_result = execute_tool(
|
||||
"Skill",
|
||||
&json!({
|
||||
"skill": "$help"
|
||||
}),
|
||||
)
|
||||
.expect("Skill should accept $skill invocation form");
|
||||
let dollar_output: serde_json::Value =
|
||||
serde_json::from_str(&dollar_result).expect("valid json");
|
||||
assert_eq!(dollar_output["skill"], "$help");
|
||||
assert!(dollar_output["path"]
|
||||
.as_str()
|
||||
.expect("path")
|
||||
.ends_with("/help/SKILL.md"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user