synapse-hub 2.4.1 → 2.4.2
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.
- package/.agents/rules/graphify.md +14 -14
- package/.agents/rules/mandatory-playwright-live.md +29 -29
- package/.agents/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -614
- package/.agents/skills/clean-pom-crafter/examples/standard_test_case.groovy +28 -28
- package/.agents/skills/clean-pom-crafter/references/pom_patterns.groovy +138 -138
- package/.agents/skills/e2e-testing-patterns/resources/implementation-playbook.md +522 -522
- package/.agents/skills/failure-autopsy-and-healing/references/healing_matrix.md +64 -64
- package/.agents/skills/failure-autopsy-and-healing/references/qa_investigation_protocol.md +56 -56
- package/.agents/skills/failure-autopsy-and-healing/scripts/triage_failures.sh +98 -98
- package/.agents/skills/katalon-cli-runner/references/groovy-patterns.md +209 -209
- package/.agents/skills/katalon-cli-runner/references/katalon-api.md +155 -155
- package/.agents/skills/katalon-cli-runner/references/runner_commands.md +67 -67
- package/.agents/skills/playwright-live-interaction/references/advanced_superpowers.md +160 -160
- package/.agents/skills/playwright-live-interaction/references/compact_accessibility_snapshots.md +75 -75
- package/.agents/skills/playwright-live-interaction/references/recipes.md +388 -388
- package/.agents/skills/playwright-live-interaction/references/swarm_orchestration.md +134 -134
- package/.agents/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -541
- package/.agents/templates/completion_report.md +57 -57
- package/.agents/workflows/graphify.md +10 -10
- package/.cursor/rules/language.mdc +7 -7
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-06_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-07_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-08_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-09_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/api_contract_drift/qa-challenge-10_api_contract_drift.json +21 -21
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-21_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-22_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-23_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-24_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/fake_pass_tautology/qa-challenge-25_fake_pass_tautology.json +20 -20
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-01_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-02_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-03_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-04_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/locator_drift/qa-challenge-05_locator_drift.json +22 -22
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-16_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-17_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-18_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-19_stale_and_mutation.json +21 -21
- package/benchmarks/qa_eval/dataset/stale_and_mutation/qa-challenge-20_stale_and_mutation.json +22 -22
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-11_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-12_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-13_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-14_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/dataset/timing_and_race/qa-challenge-15_timing_and_race.json +21 -21
- package/benchmarks/qa_eval/reports/BENCHMARK_REPORT.md +94 -69
- package/benchmarks/qa_eval/reports/eval_results.json +460 -104
- package/bin/agent-qa.js +0 -0
- package/docs/ARCHITECTURE.md +12 -1
- package/package.json +1 -1
- package/scripts/install.ps1 +112 -112
- package/scripts/lint_skills.ps1 +57 -57
- package/skills_manifest.json +1 -1
- package/synapse.config.json +1 -1
- package/tools/__init__.py +1 -1
- package/tools/agent_canary.py +501 -501
- package/tools/api_fuzzer.py +11 -2
- package/tools/browser_helpers.js +2 -2
- package/tools/bump_version.py +1 -0
- package/tools/cli.py +2 -2
- package/tools/dashboard_generator.py +2 -2
- package/tools/e2e_flow_prober.sh +0 -0
- package/tools/generate_allure_report.sh +0 -0
- package/tools/generate_test_reports.sh +0 -0
- package/tools/mcp_excel_server.py +3 -1
- package/tools/mcp_excel_server.sh +0 -0
- package/tools/mcp_server.py +1 -1
- package/tools/pinpoint_failure.py +88 -88
- package/tools/update_sentinel.py +3 -3
- package/tools/verify_all.sh +0 -0
- package/tools/visual_som_helper.py +14 -3
- package/tools/welcome_page.py +1 -1
- package/benchmarks/qa_eval/reports/AB_METHODOLOGY_REPORT.md +0 -83
package/scripts/install.ps1
CHANGED
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
<#
|
|
2
|
-
.SYNOPSIS
|
|
3
|
-
One-click setup and dependency bootstrap script for Enterprise Agent-Skills Hub.
|
|
4
|
-
.DESCRIPTION
|
|
5
|
-
Detects and installs Python, Node.js, Playwright, sets up a clean virtual environment,
|
|
6
|
-
installs requirements.txt, and verifies the full 38-skill catalog.
|
|
7
|
-
#>
|
|
8
|
-
|
|
9
|
-
[CmdletBinding()]
|
|
10
|
-
param(
|
|
11
|
-
[switch]$ForceInstall = $false
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
Write-Host "==========================================================" -ForegroundColor Cyan
|
|
15
|
-
Write-Host " Enterprise Agent-Skills Hub: Automated Bootstrap Setup " -ForegroundColor Cyan
|
|
16
|
-
Write-Host "==========================================================" -ForegroundColor Cyan
|
|
17
|
-
|
|
18
|
-
$repoRoot = Split-Path -Parent $PSScriptRoot
|
|
19
|
-
Set-Location $repoRoot
|
|
20
|
-
|
|
21
|
-
# 1. Verify / Install Python
|
|
22
|
-
Write-Host "`n[1/5] Checking Python 3 Runtime..." -ForegroundColor Yellow
|
|
23
|
-
$py = $null
|
|
24
|
-
foreach ($cmd in @("python", "python3", "py")) {
|
|
25
|
-
try {
|
|
26
|
-
$v = & $cmd --version 2>&1
|
|
27
|
-
if ($LASTEXITCODE -eq 0 -and $v -match "Python\s+3\.(1[0-9]|[2-9][0-9])") {
|
|
28
|
-
$py = $cmd
|
|
29
|
-
Write-Host " [OK] Found Python: $v" -ForegroundColor Green
|
|
30
|
-
break
|
|
31
|
-
}
|
|
32
|
-
} catch { }
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (-not $py) {
|
|
36
|
-
Write-Host " [WARN] Python 3.10+ not found in PATH." -ForegroundColor Yellow
|
|
37
|
-
Write-Host " Attempting automated installation via winget..." -ForegroundColor Cyan
|
|
38
|
-
try {
|
|
39
|
-
winget install -e --id Python.Python.3.11 --accept-source-agreements --accept-package-agreements --scope currentUser
|
|
40
|
-
Write-Host " [OK] Python 3.11 installed. Please restart your shell if PATH is not updated." -ForegroundColor Green
|
|
41
|
-
} catch {
|
|
42
|
-
Write-Host " [FAIL] Could not auto-install Python. Please install from https://python.org" -ForegroundColor Red
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
# 2. Virtual Environment Setup
|
|
47
|
-
Write-Host "`n[2/5] Setting up Virtual Environment (.venv)..." -ForegroundColor Yellow
|
|
48
|
-
$venvDir = Join-Path $repoRoot ".venv"
|
|
49
|
-
if (-not (Test-Path $venvDir) -and $py) {
|
|
50
|
-
Write-Host " Creating virtual environment at $venvDir..." -ForegroundColor Cyan
|
|
51
|
-
& $py -m venv $venvDir
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
$venvPython = if ($IsWindows -or $env:OS -match "Windows") {
|
|
55
|
-
Join-Path $venvDir "Scripts\python.exe"
|
|
56
|
-
} else {
|
|
57
|
-
Join-Path $venvDir "bin/python"
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
# 3. Pip Dependencies
|
|
61
|
-
Write-Host "`n[3/5] Installing Core Python Dependencies..." -ForegroundColor Yellow
|
|
62
|
-
$reqFile = Join-Path $repoRoot "requirements.txt"
|
|
63
|
-
if (Test-Path $venvPython) {
|
|
64
|
-
Write-Host " Upgrading pip & wheel..." -ForegroundColor Cyan
|
|
65
|
-
& $venvPython -m pip install --upgrade pip setuptools wheel --quiet
|
|
66
|
-
if (Test-Path $reqFile) {
|
|
67
|
-
Write-Host " Installing requirements from requirements.txt..." -ForegroundColor Cyan
|
|
68
|
-
& $venvPython -m pip install -r $reqFile --quiet
|
|
69
|
-
Write-Host " [OK] Dependencies installed in .venv" -ForegroundColor Green
|
|
70
|
-
}
|
|
71
|
-
} elseif ($py) {
|
|
72
|
-
Write-Host " Installing requirements using system $py..." -ForegroundColor Cyan
|
|
73
|
-
& $py -m pip install -r $reqFile --quiet
|
|
74
|
-
} else {
|
|
75
|
-
Write-Host " [SKIP] Skipping pip install: Python runtime not yet active." -ForegroundColor Yellow
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
# 4. Check Node.js / Playwright
|
|
79
|
-
Write-Host "`n[4/5] Checking Node.js & Playwright CLI..." -ForegroundColor Yellow
|
|
80
|
-
try {
|
|
81
|
-
$nodeVer = & node --version 2>&1
|
|
82
|
-
Write-Host " [OK] Found Node.js: $nodeVer" -ForegroundColor Green
|
|
83
|
-
} catch {
|
|
84
|
-
Write-Host " [INFO] Node.js not detected. Optional for standalone Python tools, required for Playwright MCP." -ForegroundColor Gray
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
# 5. Run Quality Gate Linting
|
|
88
|
-
Write-Host "`n[5/6] Running Quality Gate & Skill Integrity Verification..." -ForegroundColor Yellow
|
|
89
|
-
$linter = Join-Path $repoRoot "scripts\lint_skills.ps1"
|
|
90
|
-
if (Test-Path $linter) {
|
|
91
|
-
& powershell -ExecutionPolicy Bypass -File $linter
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
# 6. Initialize SQLite Central Agent Memory
|
|
95
|
-
Write-Host "`n[6/6] Initializing Global Central Agent Memory (~/.agent_memory/global_cache.db)..." -ForegroundColor Yellow
|
|
96
|
-
$cacheTool = Join-Path $repoRoot "tools\cache_resolver.py"
|
|
97
|
-
if (Test-Path $cacheTool) {
|
|
98
|
-
try {
|
|
99
|
-
if (Test-Path $venvPython) {
|
|
100
|
-
& $venvPython $cacheTool init
|
|
101
|
-
} elseif ($py) {
|
|
102
|
-
& $py $cacheTool init
|
|
103
|
-
}
|
|
104
|
-
Write-Host " [OK] Central Agent Memory initialized and seeded." -ForegroundColor Green
|
|
105
|
-
} catch {
|
|
106
|
-
Write-Host " [WARN] Could not initialize ~/.agent_memory/global_cache.db: $_" -ForegroundColor Yellow
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
Write-Host "`n==========================================================" -ForegroundColor Cyan
|
|
111
|
-
Write-Host " Bootstrap Complete! Hub is ready for Multi-Agent Swarm. " -ForegroundColor Green
|
|
112
|
-
Write-Host "==========================================================" -ForegroundColor Cyan
|
|
1
|
+
<#
|
|
2
|
+
.SYNOPSIS
|
|
3
|
+
One-click setup and dependency bootstrap script for Enterprise Agent-Skills Hub.
|
|
4
|
+
.DESCRIPTION
|
|
5
|
+
Detects and installs Python, Node.js, Playwright, sets up a clean virtual environment,
|
|
6
|
+
installs requirements.txt, and verifies the full 38-skill catalog.
|
|
7
|
+
#>
|
|
8
|
+
|
|
9
|
+
[CmdletBinding()]
|
|
10
|
+
param(
|
|
11
|
+
[switch]$ForceInstall = $false
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
Write-Host "==========================================================" -ForegroundColor Cyan
|
|
15
|
+
Write-Host " Enterprise Agent-Skills Hub: Automated Bootstrap Setup " -ForegroundColor Cyan
|
|
16
|
+
Write-Host "==========================================================" -ForegroundColor Cyan
|
|
17
|
+
|
|
18
|
+
$repoRoot = Split-Path -Parent $PSScriptRoot
|
|
19
|
+
Set-Location $repoRoot
|
|
20
|
+
|
|
21
|
+
# 1. Verify / Install Python
|
|
22
|
+
Write-Host "`n[1/5] Checking Python 3 Runtime..." -ForegroundColor Yellow
|
|
23
|
+
$py = $null
|
|
24
|
+
foreach ($cmd in @("python", "python3", "py")) {
|
|
25
|
+
try {
|
|
26
|
+
$v = & $cmd --version 2>&1
|
|
27
|
+
if ($LASTEXITCODE -eq 0 -and $v -match "Python\s+3\.(1[0-9]|[2-9][0-9])") {
|
|
28
|
+
$py = $cmd
|
|
29
|
+
Write-Host " [OK] Found Python: $v" -ForegroundColor Green
|
|
30
|
+
break
|
|
31
|
+
}
|
|
32
|
+
} catch { }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (-not $py) {
|
|
36
|
+
Write-Host " [WARN] Python 3.10+ not found in PATH." -ForegroundColor Yellow
|
|
37
|
+
Write-Host " Attempting automated installation via winget..." -ForegroundColor Cyan
|
|
38
|
+
try {
|
|
39
|
+
winget install -e --id Python.Python.3.11 --accept-source-agreements --accept-package-agreements --scope currentUser
|
|
40
|
+
Write-Host " [OK] Python 3.11 installed. Please restart your shell if PATH is not updated." -ForegroundColor Green
|
|
41
|
+
} catch {
|
|
42
|
+
Write-Host " [FAIL] Could not auto-install Python. Please install from https://python.org" -ForegroundColor Red
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
# 2. Virtual Environment Setup
|
|
47
|
+
Write-Host "`n[2/5] Setting up Virtual Environment (.venv)..." -ForegroundColor Yellow
|
|
48
|
+
$venvDir = Join-Path $repoRoot ".venv"
|
|
49
|
+
if (-not (Test-Path $venvDir) -and $py) {
|
|
50
|
+
Write-Host " Creating virtual environment at $venvDir..." -ForegroundColor Cyan
|
|
51
|
+
& $py -m venv $venvDir
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
$venvPython = if ($IsWindows -or $env:OS -match "Windows") {
|
|
55
|
+
Join-Path $venvDir "Scripts\python.exe"
|
|
56
|
+
} else {
|
|
57
|
+
Join-Path $venvDir "bin/python"
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
# 3. Pip Dependencies
|
|
61
|
+
Write-Host "`n[3/5] Installing Core Python Dependencies..." -ForegroundColor Yellow
|
|
62
|
+
$reqFile = Join-Path $repoRoot "requirements.txt"
|
|
63
|
+
if (Test-Path $venvPython) {
|
|
64
|
+
Write-Host " Upgrading pip & wheel..." -ForegroundColor Cyan
|
|
65
|
+
& $venvPython -m pip install --upgrade pip setuptools wheel --quiet
|
|
66
|
+
if (Test-Path $reqFile) {
|
|
67
|
+
Write-Host " Installing requirements from requirements.txt..." -ForegroundColor Cyan
|
|
68
|
+
& $venvPython -m pip install -r $reqFile --quiet
|
|
69
|
+
Write-Host " [OK] Dependencies installed in .venv" -ForegroundColor Green
|
|
70
|
+
}
|
|
71
|
+
} elseif ($py) {
|
|
72
|
+
Write-Host " Installing requirements using system $py..." -ForegroundColor Cyan
|
|
73
|
+
& $py -m pip install -r $reqFile --quiet
|
|
74
|
+
} else {
|
|
75
|
+
Write-Host " [SKIP] Skipping pip install: Python runtime not yet active." -ForegroundColor Yellow
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
# 4. Check Node.js / Playwright
|
|
79
|
+
Write-Host "`n[4/5] Checking Node.js & Playwright CLI..." -ForegroundColor Yellow
|
|
80
|
+
try {
|
|
81
|
+
$nodeVer = & node --version 2>&1
|
|
82
|
+
Write-Host " [OK] Found Node.js: $nodeVer" -ForegroundColor Green
|
|
83
|
+
} catch {
|
|
84
|
+
Write-Host " [INFO] Node.js not detected. Optional for standalone Python tools, required for Playwright MCP." -ForegroundColor Gray
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
# 5. Run Quality Gate Linting
|
|
88
|
+
Write-Host "`n[5/6] Running Quality Gate & Skill Integrity Verification..." -ForegroundColor Yellow
|
|
89
|
+
$linter = Join-Path $repoRoot "scripts\lint_skills.ps1"
|
|
90
|
+
if (Test-Path $linter) {
|
|
91
|
+
& powershell -ExecutionPolicy Bypass -File $linter
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
# 6. Initialize SQLite Central Agent Memory
|
|
95
|
+
Write-Host "`n[6/6] Initializing Global Central Agent Memory (~/.agent_memory/global_cache.db)..." -ForegroundColor Yellow
|
|
96
|
+
$cacheTool = Join-Path $repoRoot "tools\cache_resolver.py"
|
|
97
|
+
if (Test-Path $cacheTool) {
|
|
98
|
+
try {
|
|
99
|
+
if (Test-Path $venvPython) {
|
|
100
|
+
& $venvPython $cacheTool init
|
|
101
|
+
} elseif ($py) {
|
|
102
|
+
& $py $cacheTool init
|
|
103
|
+
}
|
|
104
|
+
Write-Host " [OK] Central Agent Memory initialized and seeded." -ForegroundColor Green
|
|
105
|
+
} catch {
|
|
106
|
+
Write-Host " [WARN] Could not initialize ~/.agent_memory/global_cache.db: $_" -ForegroundColor Yellow
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
Write-Host "`n==========================================================" -ForegroundColor Cyan
|
|
111
|
+
Write-Host " Bootstrap Complete! Hub is ready for Multi-Agent Swarm. " -ForegroundColor Green
|
|
112
|
+
Write-Host "==========================================================" -ForegroundColor Cyan
|
package/scripts/lint_skills.ps1
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
<#
|
|
2
|
-
.SYNOPSIS
|
|
3
|
-
Automated validation test for all skills in Agent-Skills Hub.
|
|
4
|
-
.DESCRIPTION
|
|
5
|
-
Checks presence of SKILL.md, valid frontmatter (name, description), and verifies skills_manifest.json.
|
|
6
|
-
#>
|
|
7
|
-
|
|
8
|
-
Write-Host "==========================================================" -ForegroundColor Cyan
|
|
9
|
-
Write-Host " Agent-Skills Quality & Integrity Linter " -ForegroundColor Cyan
|
|
10
|
-
Write-Host "==========================================================" -ForegroundColor Cyan
|
|
11
|
-
|
|
12
|
-
$skillsDir = Join-Path $PSScriptRoot "..\.agents\skills"
|
|
13
|
-
$manifestPath = Join-Path $PSScriptRoot "..\skills_manifest.json"
|
|
14
|
-
|
|
15
|
-
$passed = 0
|
|
16
|
-
$failed = 0
|
|
17
|
-
|
|
18
|
-
if (-not (Test-Path $manifestPath)) {
|
|
19
|
-
Write-Host "[FAIL] Missing skills_manifest.json!" -ForegroundColor Red
|
|
20
|
-
exit 1
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
$manifest = Get-Content $manifestPath -Raw | ConvertFrom-Json
|
|
24
|
-
Write-Host "[INFO] Manifest loaded: $($manifest.totalSkills) declared skills." -ForegroundColor Gray
|
|
25
|
-
|
|
26
|
-
$skillDirs = Get-ChildItem -Path $skillsDir -Directory
|
|
27
|
-
|
|
28
|
-
foreach ($dir in $skillDirs) {
|
|
29
|
-
$skillMd = Join-Path $dir.FullName "SKILL.md"
|
|
30
|
-
if (-not (Test-Path $skillMd)) {
|
|
31
|
-
Write-Host "[FAIL] $($dir.Name): Missing SKILL.md" -ForegroundColor Red
|
|
32
|
-
$failed++
|
|
33
|
-
continue
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
$content = Get-Content $skillMd -Raw
|
|
37
|
-
$hasName = $content -match "name:\s*[\w\-\s]+"
|
|
38
|
-
$hasDesc = $content -match "description:\s*.+"
|
|
39
|
-
|
|
40
|
-
if ($hasName -and $hasDesc) {
|
|
41
|
-
Write-Host "[PASS] $($dir.Name) - Valid Frontmatter" -ForegroundColor Green
|
|
42
|
-
$passed++
|
|
43
|
-
} else {
|
|
44
|
-
Write-Host "[FAIL] $($dir.Name) - Invalid or missing YAML frontmatter" -ForegroundColor Red
|
|
45
|
-
$failed++
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
Write-Host "----------------------------------------------------------" -ForegroundColor Cyan
|
|
50
|
-
Write-Host "Verification Results: $passed Passed, $failed Failed." -ForegroundColor $(if ($failed -eq 0) { "Green" } else { "Red" })
|
|
51
|
-
Write-Host "----------------------------------------------------------" -ForegroundColor Cyan
|
|
52
|
-
|
|
53
|
-
if ($failed -gt 0) {
|
|
54
|
-
exit 1
|
|
55
|
-
} else {
|
|
56
|
-
exit 0
|
|
57
|
-
}
|
|
1
|
+
<#
|
|
2
|
+
.SYNOPSIS
|
|
3
|
+
Automated validation test for all skills in Agent-Skills Hub.
|
|
4
|
+
.DESCRIPTION
|
|
5
|
+
Checks presence of SKILL.md, valid frontmatter (name, description), and verifies skills_manifest.json.
|
|
6
|
+
#>
|
|
7
|
+
|
|
8
|
+
Write-Host "==========================================================" -ForegroundColor Cyan
|
|
9
|
+
Write-Host " Agent-Skills Quality & Integrity Linter " -ForegroundColor Cyan
|
|
10
|
+
Write-Host "==========================================================" -ForegroundColor Cyan
|
|
11
|
+
|
|
12
|
+
$skillsDir = Join-Path $PSScriptRoot "..\.agents\skills"
|
|
13
|
+
$manifestPath = Join-Path $PSScriptRoot "..\skills_manifest.json"
|
|
14
|
+
|
|
15
|
+
$passed = 0
|
|
16
|
+
$failed = 0
|
|
17
|
+
|
|
18
|
+
if (-not (Test-Path $manifestPath)) {
|
|
19
|
+
Write-Host "[FAIL] Missing skills_manifest.json!" -ForegroundColor Red
|
|
20
|
+
exit 1
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
$manifest = Get-Content $manifestPath -Raw | ConvertFrom-Json
|
|
24
|
+
Write-Host "[INFO] Manifest loaded: $($manifest.totalSkills) declared skills." -ForegroundColor Gray
|
|
25
|
+
|
|
26
|
+
$skillDirs = Get-ChildItem -Path $skillsDir -Directory
|
|
27
|
+
|
|
28
|
+
foreach ($dir in $skillDirs) {
|
|
29
|
+
$skillMd = Join-Path $dir.FullName "SKILL.md"
|
|
30
|
+
if (-not (Test-Path $skillMd)) {
|
|
31
|
+
Write-Host "[FAIL] $($dir.Name): Missing SKILL.md" -ForegroundColor Red
|
|
32
|
+
$failed++
|
|
33
|
+
continue
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
$content = Get-Content $skillMd -Raw
|
|
37
|
+
$hasName = $content -match "name:\s*[\w\-\s]+"
|
|
38
|
+
$hasDesc = $content -match "description:\s*.+"
|
|
39
|
+
|
|
40
|
+
if ($hasName -and $hasDesc) {
|
|
41
|
+
Write-Host "[PASS] $($dir.Name) - Valid Frontmatter" -ForegroundColor Green
|
|
42
|
+
$passed++
|
|
43
|
+
} else {
|
|
44
|
+
Write-Host "[FAIL] $($dir.Name) - Invalid or missing YAML frontmatter" -ForegroundColor Red
|
|
45
|
+
$failed++
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
Write-Host "----------------------------------------------------------" -ForegroundColor Cyan
|
|
50
|
+
Write-Host "Verification Results: $passed Passed, $failed Failed." -ForegroundColor $(if ($failed -eq 0) { "Green" } else { "Red" })
|
|
51
|
+
Write-Host "----------------------------------------------------------" -ForegroundColor Cyan
|
|
52
|
+
|
|
53
|
+
if ($failed -gt 0) {
|
|
54
|
+
exit 1
|
|
55
|
+
} else {
|
|
56
|
+
exit 0
|
|
57
|
+
}
|
package/skills_manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"name": "Enterprise Agent Skills Hub",
|
|
4
|
-
"version": "2.4.
|
|
4
|
+
"version": "2.4.2",
|
|
5
5
|
"description": "Unified Catalog of 38 Specialized Skills for Autonomous AI Agents in Enterprise Software Quality Engineering, Performance, and Architecture.",
|
|
6
6
|
"totalSkills": 38,
|
|
7
7
|
"categories": {
|
package/synapse.config.json
CHANGED