Skip to content

fix: installer skill scripts validate-installation should check for .github/skills directory #1010

@katriendg

Description

@katriendg

Problem

The clone-based installation validation scripts (validate-installation.ps1 and validate-installation.sh) check for agents, prompts, and instructions directories but omit .github/skills entirely. A user can receive a "validated successfully" result while skills are missing from their installation.

This is inconsistent with the installer SKILL.md which:

  • Lists skills as installable content in Phase 1
  • Configures chat.agentSkillsLocations in the settings template
  • References skills throughout the decision matrix and method documentation

Expected Behavior

Validation should check for $basePath/.github/skills alongside the three existing directory checks and report pass/fail status for it.

The experimental collection folder ($basePath/.github/skills/experimental, $basePath/.github/agents/experimental, etc.) is an optional user selection during installation. Validation should check experimental subdirectories only when they are present and report them as informational (not as a failure when absent). The scripts cannot deterministically require experimental because the user may have opted out during the installer's opt-in prompt.

Files to Change

File Change
.github/skills/installer/hve-core-installer/scripts/validate-installation.ps1 Add .github/skills to the required directory loop; add conditional check for experimental subdirectories
.github/skills/installer/hve-core-installer/scripts/validate-installation.sh Add .github/skills to the required directory loop; add conditional check for experimental subdirectories
.github/skills/installer/hve-core-installer/tests/validate-installation.Tests.ps1 Update existing tests to include .github/skills in test fixture setup; add new tests for skills directory validation and experimental folder presence/absence scenarios

Reproduction

Run either validation script against a valid HVE-Core clone. Note that .github/skills is never checked:

# Bash
./scripts/validate-installation.sh 1 ../hve-core
# Output shows agents, prompts, instructions — no mention of skills

# PowerShell
./scripts/validate-installation.ps1 -BasePath ../hve-core -Method 1
# Same: skills directory silently skipped

Suggested Fix

PowerShell — expand the directory array:

foreach ($dir in @("$basePath/.github/agents", "$basePath/.github/prompts", "$basePath/.github/instructions", "$basePath/.github/skills")) {

Bash — expand the path list:

for path in "$base_path/.github/agents" "$base_path/.github/prompts" "$base_path/.github/instructions" "$base_path/.github/skills"; do

Experimental folder — add a conditional informational check after the required directory loop (both scripts):

# PowerShell example
$experimentalDirs = @("$basePath/.github/skills/experimental", "$basePath/.github/agents/experimental")
foreach ($dir in $experimentalDirs) {
    if (Test-Path $dir) { Write-Host "✅ Found optional: $dir" }
}
# Bash example
for path in "$base_path/.github/skills/experimental" "$base_path/.github/agents/experimental"; do
    if [ -d "$path" ]; then echo "✅ Found optional: $path"; fi
done

Missing experimental folders should not set valid=false.

Pester Test Updates

The existing test file at .github/skills/installer/hve-core-installer/tests/validate-installation.Tests.ps1 needs these changes:

  1. Update all test fixture setup — Every test that creates .github/agents, .github/prompts, and .github/instructions directories must also create .github/skills so existing "passes validation" assertions continue to pass.
  2. Add a "Checks skills directory" test — Mirror the existing "Checks agents directory" test: create agents, prompts, and instructions but omit skills, then assert the output matches Missing.*skills.
  3. Add an "experimental" Context block with at least two tests:
    • Passes when experimental subdirectories are absent (no failure reported)
    • Reports optional directories when experimental subdirectories are present

Additional Context

The installer collection under .github/skills/installer/ should probably be excluded from installation-target validation since it is the installer itself (SKILL.md already excludes it from chat.agentSkillsLocations settings). The check should verify the directory exists at the top level; individual skill collection presence is not required for a passing validation.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workinggood first issueGood for newcomers

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions