diff --git a/src/automation/skill_writer.rs b/src/automation/skill_writer.rs index f1bf9c94..8c9d928f 100644 --- a/src/automation/skill_writer.rs +++ b/src/automation/skill_writer.rs @@ -553,6 +553,9 @@ fn refresh_managed_skill_exports_after_auto_enable(profile_root: &Path) -> Value let Some(home) = crate::agents::home_dir() else { return json!({"status": "skipped", "reason": "home_unavailable"}); }; + if !should_refresh_managed_skill_exports(profile_root, &home) { + return json!({"status": "skipped", "reason": "non_default_profile_root"}); + } let start = std::env::current_dir().unwrap_or_else(|_| home.clone()); let project_root = crate::automation::skill_materialization::resolve_project_root(&start); let reports = @@ -579,6 +582,10 @@ fn refresh_managed_skill_exports_after_auto_enable(profile_root: &Path) -> Value }) } +fn should_refresh_managed_skill_exports(profile_root: &Path, home: &Path) -> bool { + profile_root == home.join(".tracedecay") +} + fn accepted_skill_approval_status( action: SkillProposalAction, auto_enable_skills: bool, @@ -860,6 +867,19 @@ mod tests { use super::*; use tempfile::tempdir; + #[test] + fn managed_skill_exports_only_refresh_for_the_user_profile() { + let home = Path::new("/home/test-user"); + assert!(should_refresh_managed_skill_exports( + Path::new("/home/test-user/.tracedecay"), + home, + )); + assert!(!should_refresh_managed_skill_exports( + Path::new("/tmp/tracedecay-test-profile"), + home, + )); + } + fn assert_err_eq(result: std::result::Result, expected: &str) { match result { Ok(_) => panic!("expected error: {expected}"),