Manage .gitignore entries for installed skills and agent directories.
find_missing_gitignore_entries
pub fn find_missing_gitignore_entries(project_dir: &Path, dirs: &[&str]) -> Result<Vec<String>>
Check which directories from the given list are missing from .gitignore. Returns the list of directories that are NOT in .gitignore.
append_to_gitignore
pub fn append_to_gitignore(project_dir: &Path, entries: &[&str]) -> Result<()>
Append entries to .gitignore, creating it if it doesn’t exist.
add_skill_entries
pub fn add_skill_entries(project_dir: &Path, skill_name: &str, target_paths: &[&str], skills_dir: &str) -> Result<()>
Add per-skill gitignore entries for a remotely installed skill.
Creates entries for <skills_dir>/<name> and <target>/<name> for each target.
Idempotent — won’t duplicate existing entries.
ensure_agent_file_ignored
pub fn ensure_agent_file_ignored(project_dir: &Path, filename: &str) -> Result<()>
Ensure a single file (e.g. CLAUDE.md) is listed in .gitignore.
Idempotent — won’t duplicate an existing entry.
remove_skill_entries
pub fn remove_skill_entries(project_dir: &Path, skill_name: &str) -> Result<()>
Remove all gitignore entries for a specific skill.
Removes any line ending with /<name> under the managed section.
Cleans up the ”# Managed by ion” header if no managed entries remain.