skiller 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -81,7 +81,11 @@ async function updateGitignore(projectRoot, paths) {
|
|
|
81
81
|
return relative.replace(/\\/g, '/'); // Convert to POSIX format
|
|
82
82
|
})
|
|
83
83
|
.filter((p) => {
|
|
84
|
-
//
|
|
84
|
+
// Allow .claude/skills (generated output) but exclude other .claude/* paths (inputs)
|
|
85
|
+
if (p === '.claude/skills' || p === '/.claude/skills') {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
// Never include any other path that resides inside a .claude directory (inputs, not outputs)
|
|
85
89
|
return !p.includes('/.claude/') && !p.startsWith('.claude/');
|
|
86
90
|
})
|
|
87
91
|
.map((p) => {
|
|
@@ -66,40 +66,40 @@ async function discoverSkills(projectRoot, skillerDir) {
|
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
68
68
|
* Gets the paths that skills will generate, for gitignore purposes.
|
|
69
|
-
*
|
|
69
|
+
* When generateFromRules is true, always includes .claude/skills even if it doesn't exist yet.
|
|
70
70
|
*/
|
|
71
71
|
async function getSkillsGitignorePaths(projectRoot, options = {}) {
|
|
72
|
-
const claudeSkillsDir = path.join(projectRoot, constants_1.CLAUDE_SKILLS_PATH);
|
|
73
|
-
// Check if skills directory exists
|
|
74
|
-
let skillsExist = false;
|
|
75
|
-
try {
|
|
76
|
-
await fs.access(claudeSkillsDir);
|
|
77
|
-
skillsExist = true;
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
return [];
|
|
81
|
-
}
|
|
82
|
-
if (!skillsExist) {
|
|
83
|
-
return [];
|
|
84
|
-
}
|
|
85
72
|
const paths = [];
|
|
86
73
|
// Gitignore .claude/skills if:
|
|
87
|
-
// 1. generate_from_rules is explicitly true in config,
|
|
88
|
-
// 2. .claude/rules directory exists (skills are generated from rules)
|
|
74
|
+
// 1. generate_from_rules is explicitly true in config (always gitignore, even if dir doesn't exist)
|
|
75
|
+
// 2. OR .claude/rules directory exists (skills are generated from rules)
|
|
76
|
+
// 3. OR .claude/skills exists AND .claude/rules exists (legacy check)
|
|
89
77
|
if (options.generateFromRules) {
|
|
90
|
-
// Config says skills are generated from rules
|
|
78
|
+
// Config says skills are generated from rules - always gitignore
|
|
91
79
|
paths.push(path.join(projectRoot, constants_1.CLAUDE_SKILLS_PATH));
|
|
92
80
|
}
|
|
93
81
|
else {
|
|
94
|
-
// Check if .claude/
|
|
95
|
-
const
|
|
82
|
+
// Check if .claude/skills exists
|
|
83
|
+
const claudeSkillsDir = path.join(projectRoot, constants_1.CLAUDE_SKILLS_PATH);
|
|
84
|
+
let skillsExist = false;
|
|
96
85
|
try {
|
|
97
|
-
await fs.access(
|
|
98
|
-
|
|
99
|
-
paths.push(path.join(projectRoot, constants_1.CLAUDE_SKILLS_PATH));
|
|
86
|
+
await fs.access(claudeSkillsDir);
|
|
87
|
+
skillsExist = true;
|
|
100
88
|
}
|
|
101
89
|
catch {
|
|
102
|
-
//
|
|
90
|
+
// Skills directory doesn't exist
|
|
91
|
+
}
|
|
92
|
+
if (skillsExist) {
|
|
93
|
+
// Check if .claude/rules exists (fallback for when config not passed)
|
|
94
|
+
const claudeRulesDir = path.join(projectRoot, '.claude', 'rules');
|
|
95
|
+
try {
|
|
96
|
+
await fs.access(claudeRulesDir);
|
|
97
|
+
// .claude/rules exists, so .claude/skills is generated
|
|
98
|
+
paths.push(path.join(projectRoot, constants_1.CLAUDE_SKILLS_PATH));
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// .claude/rules doesn't exist, so .claude/skills is versioned (don't gitignore)
|
|
102
|
+
}
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
// Always gitignore .skillz (for MCP agents)
|