@agentlee5/agent-skills 1.0.0

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.
Files changed (182) hide show
  1. package/.leeway/config.json +133 -0
  2. package/LICENSE +21 -0
  3. package/LeeWay-Standards/LICENSE +21 -0
  4. package/LeeWay-Standards/README.md +324 -0
  5. package/LeeWay-Standards/examples/NexusButton.tsx +90 -0
  6. package/LeeWay-Standards/examples/example-agent.js +89 -0
  7. package/LeeWay-Standards/package.json +61 -0
  8. package/LeeWay-Standards/schemas/leeway-config.schema.json +81 -0
  9. package/LeeWay-Standards/schemas/leeway-header.schema.json +63 -0
  10. package/LeeWay-Standards/src/agents/discovery/architecture-map-agent.js +134 -0
  11. package/LeeWay-Standards/src/agents/discovery/docs-agent.js +126 -0
  12. package/LeeWay-Standards/src/agents/discovery/explain-agent.js +95 -0
  13. package/LeeWay-Standards/src/agents/discovery/intent-registry-agent.js +119 -0
  14. package/LeeWay-Standards/src/agents/discovery/schema-agent.js +116 -0
  15. package/LeeWay-Standards/src/agents/discovery/sitemap-agent.js +88 -0
  16. package/LeeWay-Standards/src/agents/governance/align-agent.js +155 -0
  17. package/LeeWay-Standards/src/agents/governance/assess-agent.js +161 -0
  18. package/LeeWay-Standards/src/agents/governance/audit-agent.js +185 -0
  19. package/LeeWay-Standards/src/agents/integrity/circular-dependency-agent.js +88 -0
  20. package/LeeWay-Standards/src/agents/integrity/dependency-graph-agent.js +107 -0
  21. package/LeeWay-Standards/src/agents/integrity/duplicate-logic-agent.js +108 -0
  22. package/LeeWay-Standards/src/agents/integrity/import-agent.js +83 -0
  23. package/LeeWay-Standards/src/agents/integrity/module-policy-agent.js +94 -0
  24. package/LeeWay-Standards/src/agents/integrity/refactor-scan-agent.js +113 -0
  25. package/LeeWay-Standards/src/agents/integrity/syntax-agent.js +84 -0
  26. package/LeeWay-Standards/src/agents/mcp/endpoint-agent.js +106 -0
  27. package/LeeWay-Standards/src/agents/mcp/env-agent.js +111 -0
  28. package/LeeWay-Standards/src/agents/mcp/health-agent-lite.js +119 -0
  29. package/LeeWay-Standards/src/agents/mcp/manifest-agent.js +87 -0
  30. package/LeeWay-Standards/src/agents/mcp/port-agent.js +125 -0
  31. package/LeeWay-Standards/src/agents/mcp/process-agent.js +124 -0
  32. package/LeeWay-Standards/src/agents/mcp/runtime-agent.js +108 -0
  33. package/LeeWay-Standards/src/agents/mcp/transport-agent.js +78 -0
  34. package/LeeWay-Standards/src/agents/orchestration/doctor-agent.js +149 -0
  35. package/LeeWay-Standards/src/agents/orchestration/memory-agent-lite.js +125 -0
  36. package/LeeWay-Standards/src/agents/orchestration/router-agent.js +110 -0
  37. package/LeeWay-Standards/src/agents/security/permission-agent.js +98 -0
  38. package/LeeWay-Standards/src/agents/security/policy-agent.js +100 -0
  39. package/LeeWay-Standards/src/agents/security/privacy-agent.js +83 -0
  40. package/LeeWay-Standards/src/agents/security/prompt-security-agent.js +103 -0
  41. package/LeeWay-Standards/src/agents/security/secret-scan-agent.js +108 -0
  42. package/LeeWay-Standards/src/agents/security/tool-access-agent.js +105 -0
  43. package/LeeWay-Standards/src/agents/standards/authority-agent.js +114 -0
  44. package/LeeWay-Standards/src/agents/standards/discovery-pipeline-agent.js +91 -0
  45. package/LeeWay-Standards/src/agents/standards/header-agent.js +120 -0
  46. package/LeeWay-Standards/src/agents/standards/placement-agent.js +96 -0
  47. package/LeeWay-Standards/src/agents/standards/region-agent.js +99 -0
  48. package/LeeWay-Standards/src/agents/standards/registry-agent.js +153 -0
  49. package/LeeWay-Standards/src/agents/standards/tag-agent.js +111 -0
  50. package/LeeWay-Standards/src/cli/leeway.js +225 -0
  51. package/LeeWay-Standards/src/core/compliance-scorer.js +168 -0
  52. package/LeeWay-Standards/src/core/compliance-scorer.test.js +121 -0
  53. package/LeeWay-Standards/src/core/header-parser.js +207 -0
  54. package/LeeWay-Standards/src/core/header-parser.test.js +198 -0
  55. package/LeeWay-Standards/src/core/region-classifier.js +137 -0
  56. package/LeeWay-Standards/src/core/region-classifier.test.js +100 -0
  57. package/LeeWay-Standards/src/core/tag-validator.js +139 -0
  58. package/LeeWay-Standards/src/core/tag-validator.test.js +109 -0
  59. package/LeeWay-Standards/src/index.js +83 -0
  60. package/README.md +217 -0
  61. package/agent-config.yaml +456 -0
  62. package/agentbage.png.png +0 -0
  63. package/bin/leeway-skills-badge.js +52 -0
  64. package/bin/leeway-skills-mcp.js +48 -0
  65. package/bin/leeway-skills.js +160 -0
  66. package/bin/leeway-standards.js +49 -0
  67. package/config/.skillsignore +63 -0
  68. package/config/skills-config.json +70 -0
  69. package/documents/AGENT_LEARNING_REFERENCE.md +329 -0
  70. package/documents/AGENT_LEE_INTEGRATION.md +534 -0
  71. package/documents/COMPLETE_SYSTEM_OVERVIEW.md +502 -0
  72. package/documents/COMPREHENSIVE_SKILL_INTEGRATION_PLAN.md +644 -0
  73. package/documents/DIRECTORY_MAP.md +323 -0
  74. package/documents/EXTENDING.md +514 -0
  75. package/documents/FILE_DIRECTORY_GUIDE.md +427 -0
  76. package/documents/LEEWAY_BADGE_INTEGRATION.md +76 -0
  77. package/documents/LEEWAY_IMPLEMENTATION_SUMMARY.md +384 -0
  78. package/documents/LEEWAY_INTEGRATION_GUIDE.md +414 -0
  79. package/documents/LEEWAY_NPM_SDK.md +66 -0
  80. package/documents/LEEWAY_QUICK_START.md +288 -0
  81. package/documents/LEEWAY_SKILLS_BRANDING.md +375 -0
  82. package/documents/LEEWAY_SKILLS_MCP_SUMMARY.md +593 -0
  83. package/documents/LEEWAY_STANDARDS_COMPLIANCE.md +361 -0
  84. package/documents/LEEWAY_UNIFIED_ARCHITECTURE.md +473 -0
  85. package/documents/LEEWAY_WORKFLOWS_QUICK_REFERENCE.md +307 -0
  86. package/documents/LEEWAY_WORKFLOWS_STRATEGIC_PLAN.md +515 -0
  87. package/documents/LIFELONG_LEARNING_LAYER.md +478 -0
  88. package/documents/MCP_ARCHITECTURE.md +683 -0
  89. package/documents/QUICK_REFERENCE.md +301 -0
  90. package/documents/SETUP.md +325 -0
  91. package/documents/SETUP_SUMMARY.md +413 -0
  92. package/documents/SKILL_ACQUISITION_EXECUTIVE_SUMMARY.md +373 -0
  93. package/documents/SKILL_ACQUISITION_IMPLEMENTATION.md +692 -0
  94. package/documents/SKILL_ACQUISITION_MANIFEST.md +404 -0
  95. package/documents/SKILL_ACQUISITION_QUICK_REFERENCE.md +349 -0
  96. package/documents/SKILL_WORKFLOW_COMPOSITION_MATRIX.md +537 -0
  97. package/documents/STRUCTURE.md +382 -0
  98. package/documents/SYSTEM_TRANSFORMATION_SUMMARY.md +560 -0
  99. package/documents/USAGE.md +390 -0
  100. package/documents/WORKFLOW_ACQUISITION_MANIFEST.md +576 -0
  101. package/documents/aiskills.txt +460 -0
  102. package/mcp-server/README.md +697 -0
  103. package/mcp-server/dist/badge-proof.d.ts +66 -0
  104. package/mcp-server/dist/badge-proof.d.ts.map +1 -0
  105. package/mcp-server/dist/badge-proof.js +324 -0
  106. package/mcp-server/dist/badge-proof.js.map +1 -0
  107. package/mcp-server/dist/index.d.ts +64 -0
  108. package/mcp-server/dist/index.d.ts.map +1 -0
  109. package/mcp-server/dist/index.js +263 -0
  110. package/mcp-server/dist/index.js.map +1 -0
  111. package/mcp-server/dist/install-badge-proof.d.ts +3 -0
  112. package/mcp-server/dist/install-badge-proof.d.ts.map +1 -0
  113. package/mcp-server/dist/install-badge-proof.js +109 -0
  114. package/mcp-server/dist/install-badge-proof.js.map +1 -0
  115. package/mcp-server/package.json +43 -0
  116. package/mcp-server/src/badge-proof.ts +469 -0
  117. package/mcp-server/src/index.ts +355 -0
  118. package/mcp-server/src/install-badge-proof.ts +132 -0
  119. package/mcp-server/tsconfig.json +22 -0
  120. package/package.json +84 -0
  121. package/scripts/init-leeway.js +217 -0
  122. package/scripts/leeway-agents/compliance-monitor.js +374 -0
  123. package/scripts/leeway-agents/header-injector.js +321 -0
  124. package/scripts/skill-integration-toolkit.py +319 -0
  125. package/scripts/skills-registry.json +1117 -0
  126. package/scripts/sync-skills.ps1 +275 -0
  127. package/scripts/verify-leeway-setup.js +249 -0
  128. package/scripts/workflow-integration-toolkit.py +522 -0
  129. package/sdk/application-installer.js +92 -0
  130. package/sdk/index.js +43 -0
  131. package/sdk/paths.js +167 -0
  132. package/skills/agent-autonomy/autonomous-conductor/SKILL.md +206 -0
  133. package/skills/agent-autonomy/full-stack-delivery/SKILL.md +206 -0
  134. package/skills/agent-orchestration/multi-agent-orchestration/SKILL.md +68 -0
  135. package/skills/agent-patterns/agent-design-patterns/SKILL.md +70 -0
  136. package/skills/ai-ml/llm-prompting/SKILL.md +71 -0
  137. package/skills/ai-ml/ml-model-development/SKILL.md +67 -0
  138. package/skills/ai-ml/multimodal-systems/SKILL.md +71 -0
  139. package/skills/ai-ml/retrieval-generation-fine-tuning/SKILL.md +71 -0
  140. package/skills/architecture/system-design/SKILL.md +67 -0
  141. package/skills/code-analysis/refactoring/SKILL.md +64 -0
  142. package/skills/code-analysis/security-vulnerability-scanning/SKILL.md +71 -0
  143. package/skills/code-analysis/static-analysis/SKILL.md +64 -0
  144. package/skills/code-generation/full-stack-application/SKILL.md +70 -0
  145. package/skills/code-generation/microservices-architecture/SKILL.md +71 -0
  146. package/skills/code-generation/python-codegen/SKILL.md +64 -0
  147. package/skills/code-generation/typescript-codegen/SKILL.md +64 -0
  148. package/skills/data-analysis/advanced-analytics/SKILL.md +71 -0
  149. package/skills/data-analysis/pandas-analysis/SKILL.md +66 -0
  150. package/skills/database-design/database-design-optimization/SKILL.md +70 -0
  151. package/skills/debugging/javascript-debugging/SKILL.md +67 -0
  152. package/skills/debugging/python-debugging/SKILL.md +67 -0
  153. package/skills/devops/dockerfile-creation/SKILL.md +64 -0
  154. package/skills/devops/kubernetes-deployment/SKILL.md +65 -0
  155. package/skills/documentation/api-documentation/SKILL.md +67 -0
  156. package/skills/error-handling/resilience-patterns/SKILL.md +70 -0
  157. package/skills/git-workflow/git-collaboration/SKILL.md +67 -0
  158. package/skills/infrastructure/cicd-pipelines/SKILL.md +70 -0
  159. package/skills/infrastructure/infrastructure-as-code/SKILL.md +70 -0
  160. package/skills/observability/monitoring-and-observability/SKILL.md +70 -0
  161. package/skills/performance-optimization/performance-engineering/SKILL.md +70 -0
  162. package/skills/prompt-optimization/prompt-engineering-advanced/SKILL.md +70 -0
  163. package/skills/quality-assurance/deployment-validator/SKILL.md +382 -0
  164. package/skills/quality-assurance/web-security-sweep/SKILL.md +320 -0
  165. package/skills/rag-knowledge/rag-systems/SKILL.md +70 -0
  166. package/skills/research/knowledge-synthesis/SKILL.md +71 -0
  167. package/skills/security/authentication-authorization/SKILL.md +71 -0
  168. package/skills/security/code-security/SKILL.md +66 -0
  169. package/skills/security/secure-architecture/SKILL.md +71 -0
  170. package/skills/self-optimization/dev-loop-optimizer/SKILL.md +344 -0
  171. package/skills/self-optimization/memory-learning/SKILL.md +335 -0
  172. package/skills/self-optimization/runtime-self-profiling/SKILL.md +250 -0
  173. package/skills/testing/advanced-testing-strategies/SKILL.md +71 -0
  174. package/skills/testing/integration-testing/SKILL.md +66 -0
  175. package/skills/testing/load-testing-capacity/SKILL.md +71 -0
  176. package/skills/testing/unit-testing/SKILL.md +66 -0
  177. package/skills/tool-integration/custom-tool-creation/SKILL.md +70 -0
  178. package/skills/web-development/advanced-frontend-patterns/SKILL.md +71 -0
  179. package/skills/web-development/api-design/SKILL.md +71 -0
  180. package/skills/web-development/css-styling/SKILL.md +67 -0
  181. package/skills/web-development/react-development/SKILL.md +79 -0
  182. package/skills/workflow-composition/workflow-orchestration/SKILL.md +70 -0
@@ -0,0 +1,275 @@
1
+ #!/usr/bin/env pwsh
2
+ <#
3
+ .SYNOPSIS
4
+ Synchronize and manage the AIskills directory
5
+ .DESCRIPTION
6
+ Updates skills from public sources, validates SKILL.md files,
7
+ and maintains the skills registry.
8
+ .PARAMETER Action
9
+ Action to perform: Update, Validate, Export, List, Clean
10
+ .PARAMETER Source
11
+ Specific source to sync: anthropic, microsoft, community, all
12
+ .EXAMPLE
13
+ .\sync-skills.ps1 -Action Update -Source all
14
+ .\sync-skills.ps1 -Action Validate
15
+ .\sync-skills.ps1 -Action List
16
+ #>
17
+
18
+ param(
19
+ [ValidateSet('Update', 'Validate', 'Export', 'List', 'Clean', 'Status')]
20
+ [string]$Action = 'Status',
21
+
22
+ [ValidateSet('anthropic', 'microsoft', 'community', 'all', 'local')]
23
+ [string]$Source = 'local',
24
+
25
+ [switch]$Verbose,
26
+ [switch]$DryRun
27
+ )
28
+
29
+ # Configuration
30
+ $scriptRoot = Split-Path -Parent $MyInvocation.MyCommandPath
31
+ $skillsRoot = Join-Path $scriptRoot "..\skills"
32
+ $registryPath = Join-Path $scriptRoot "skills-registry.json"
33
+ $configPath = Join-Path $scriptRoot "..\config\skills-config.json"
34
+ $logPath = Join-Path $scriptRoot "sync-$(Get-Date -Format 'yyyy-MM-dd-HHmmss').log"
35
+
36
+ # Logging function
37
+ function Write-Log($message, $level = "INFO") {
38
+ $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
39
+ $logMessage = "[$timestamp] [$level] $message"
40
+
41
+ if ($Verbose -or $level -eq "ERROR" -or $level -eq "WARNING") {
42
+ Write-Host $logMessage
43
+ }
44
+
45
+ Add-Content -Path $logPath -Value $logMessage
46
+ }
47
+
48
+ # Validate a SKILL.md file
49
+ function Test-SkillFile($skillPath) {
50
+ $skillMdPath = Join-Path $skillPath "SKILL.md"
51
+
52
+ if (-not (Test-Path $skillMdPath)) {
53
+ return @{ valid = $false; error = "SKILL.md not found" }
54
+ }
55
+
56
+ $content = Get-Content $skillMdPath -Raw
57
+
58
+ # Check required sections
59
+ $requiredSections = @("Expert in", "Capabilities", "Use this skill when", "Key techniques", "Tags")
60
+ $missingSection = $null
61
+
62
+ foreach ($section in $requiredSections) {
63
+ if ($content -notmatch $section) {
64
+ $missingSection += @($section)
65
+ }
66
+ }
67
+
68
+ if ($missingSection) {
69
+ return @{
70
+ valid = $false
71
+ error = "Missing sections: $($missingSection -join ', ')"
72
+ }
73
+ }
74
+
75
+ return @{ valid = $true; error = $null }
76
+ }
77
+
78
+ # Validate all skills
79
+ function Invoke-SkillValidation {
80
+ Write-Log "Starting skill validation..."
81
+
82
+ $skillDirs = Get-ChildItem -Path $skillsRoot -Directory -Recurse | Where-Object {
83
+ (Get-ChildItem -Path $_.FullName -Filter "SKILL.md").Count -gt 0
84
+ }
85
+
86
+ $results = @()
87
+ $valid = 0
88
+ $invalid = 0
89
+
90
+ foreach ($skill in $skillDirs) {
91
+ $test = Test-SkillFile $skill.FullName
92
+
93
+ if ($test.valid) {
94
+ $valid++
95
+ Write-Log "✓ $($skill.Name)" "SUCCESS"
96
+ } else {
97
+ $invalid++
98
+ Write-Log "✗ $($skill.Name): $($test.error)" "ERROR"
99
+ }
100
+
101
+ $results += @{
102
+ name = $skill.Name
103
+ path = $skill.FullName
104
+ valid = $test.valid
105
+ error = $test.error
106
+ }
107
+ }
108
+
109
+ Write-Log "Validation complete: $valid valid, $invalid invalid"
110
+ return $results
111
+ }
112
+
113
+ # List all skills
114
+ function Get-SkillsList {
115
+ Write-Host "AIskills Directory Contents" -ForegroundColor Cyan
116
+ Write-Host "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" -ForegroundColor Gray
117
+ Write-Host ""
118
+
119
+ $registry = Get-Content $registryPath | ConvertFrom-Json
120
+
121
+ # Group by category
122
+ $grouped = $registry.skills | Group-Object -Property category
123
+
124
+ foreach ($group in $grouped | Sort-Object Name) {
125
+ Write-Host "📁 $($group.Name)" -ForegroundColor Yellow
126
+
127
+ foreach ($skill in $group.Group | Sort-Object name) {
128
+ $status = if ($skill.enabled) { "✓" } else { "✗" }
129
+ Write-Host " $status $($skill.name)" -ForegroundColor Green
130
+ Write-Host " $($skill.description)" -ForegroundColor Gray
131
+ }
132
+
133
+ Write-Host ""
134
+ }
135
+
136
+ Write-Host "Summary:" -ForegroundColor Cyan
137
+ Write-Host " Total Skills: $($registry.totalSkills)"
138
+ Write-Host " Categories: $($registry.categories.Length)"
139
+ Write-Host " Version: $($registry.version)"
140
+ }
141
+
142
+ # Export skills as JSON
143
+ function Export-SkillsData {
144
+ param([string]$OutputPath)
145
+
146
+ Write-Log "Exporting skills data..."
147
+
148
+ $registry = Get-Content $registryPath | ConvertFrom-Json
149
+
150
+ if ([string]::IsNullOrEmpty($OutputPath)) {
151
+ $OutputPath = Join-Path $scriptRoot "skills-export-$(Get-Date -Format 'yyyy-MM-dd').json"
152
+ }
153
+
154
+ $registry | ConvertTo-Json -Depth 10 | Out-File $OutputPath
155
+ Write-Log "Skills exported to: $OutputPath"
156
+
157
+ return $OutputPath
158
+ }
159
+
160
+ # Generate CSV report
161
+ function Export-SkillsReport {
162
+ param([string]$OutputPath)
163
+
164
+ Write-Log "Generating skills report..."
165
+
166
+ $registry = Get-Content $registryPath | ConvertFrom-Json
167
+
168
+ if ([string]::IsNullOrEmpty($OutputPath)) {
169
+ $OutputPath = Join-Path $scriptRoot "skills-report-$(Get-Date -Format 'yyyy-MM-dd').csv"
170
+ }
171
+
172
+ $reportData = $registry.skills | Select-Object @(
173
+ @{ Name = 'Name'; Expression = { $_.name } }
174
+ @{ Name = 'Category'; Expression = { $_.category } }
175
+ @{ Name = 'Version'; Expression = { $_.version } }
176
+ @{ Name = 'Tags'; Expression = { $_.tags -join '; ' } }
177
+ @{ Name = 'Enabled'; Expression = { $_.enabled } }
178
+ )
179
+
180
+ $reportData | Export-Csv -Path $OutputPath -NoTypeInformation
181
+ Write-Log "Report generated: $OutputPath"
182
+
183
+ return $OutputPath
184
+ }
185
+
186
+ # Check status
187
+ function Get-SyncStatus {
188
+ Write-Host "AIskills Synchronization Status" -ForegroundColor Cyan
189
+ Write-Host ""
190
+
191
+ if (Test-Path $registryPath) {
192
+ $registry = Get-Content $registryPath | ConvertFrom-Json
193
+ $lastUpdated = [DateTime]::Parse($registry.lastUpdated)
194
+
195
+ Write-Host "Registry Info:" -ForegroundColor Yellow
196
+ Write-Host " Version: $($registry.version)"
197
+ Write-Host " Last Updated: $lastUpdated"
198
+ Write-Host " Total Skills: $($registry.totalSkills)"
199
+ Write-Host " Categories: $($registry.categories.Length)"
200
+ Write-Host ""
201
+ }
202
+
203
+ # Count physical skills
204
+ $skillCount = (Get-ChildItem -Path $skillsRoot -Directory -Recurse |
205
+ Where-Object { Test-Path (Join-Path $_.FullName "SKILL.md") }).Count
206
+
207
+ Write-Host "Physical Skills: $skillCount"
208
+ Write-Host "Registry Path: $registryPath"
209
+ Write-Host "Config Path: $configPath"
210
+ Write-Host "Log Path: $logPath"
211
+ Write-Host ""
212
+ }
213
+
214
+ # Clean up old logs and cache
215
+ function Invoke-SkillsClean {
216
+ Write-Log "Cleaning up..."
217
+
218
+ # Remove logs older than 30 days
219
+ $oldLogs = Get-ChildItem -Path $scriptRoot -Filter "sync-*.log" |
220
+ Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) }
221
+
222
+ foreach ($log in $oldLogs) {
223
+ if (-not $DryRun) {
224
+ Remove-Item $log
225
+ Write-Log "Removed old log: $($log.Name)"
226
+ } else {
227
+ Write-Log "[DRY RUN] Would remove: $($log.Name)"
228
+ }
229
+ }
230
+
231
+ Write-Log "Cleanup complete"
232
+ }
233
+
234
+ # Main execution
235
+ switch ($Action) {
236
+ 'Validate' {
237
+ Write-Host "Validating skills..." -ForegroundColor Cyan
238
+ $results = Invoke-SkillValidation
239
+ Write-Host ""
240
+ Write-Host "Validation Summary:" -ForegroundColor Yellow
241
+ Write-Host " Valid: $(($results | Where-Object valid).Count)"
242
+ Write-Host " Invalid: $(($results | Where-Object { -not $_.valid }).Count)"
243
+ }
244
+
245
+ 'List' {
246
+ Get-SkillsList
247
+ }
248
+
249
+ 'Export' {
250
+ $jsonPath = Export-SkillsData
251
+ $csvPath = Export-SkillsReport
252
+ Write-Host "Exports completed:" -ForegroundColor Green
253
+ Write-Host " JSON: $jsonPath"
254
+ Write-Host " CSV: $csvPath"
255
+ }
256
+
257
+ 'Clean' {
258
+ Invoke-SkillsClean
259
+ Write-Log "Cleanup completed"
260
+ }
261
+
262
+ 'Status' {
263
+ Get-SyncStatus
264
+ }
265
+
266
+ 'Update' {
267
+ Write-Log "Update function placeholder - extend with upstream sources"
268
+ Write-Host "Update from public sources would be implemented here:" -ForegroundColor Yellow
269
+ Write-Host " - Anthropic Skills: https://github.com/anthropics/anthropic-sdk-python/tree/main/examples/skills"
270
+ Write-Host " - Microsoft Skills: https://github.com/microsoft/agent-framework-skills"
271
+ Write-Host " - Community Skills: curated from awesome-copilot repos"
272
+ }
273
+ }
274
+
275
+ Write-Log "Script execution completed"
@@ -0,0 +1,249 @@
1
+ #!/usr/bin/env node
2
+ /*
3
+ LEEWAY HEADER — DO NOT REMOVE
4
+
5
+ REGION: AI.SYSTEM.VERIFICATION
6
+ TAG: AI.SYSTEM.VERIFICATION.STATUS
7
+
8
+ COLOR_ONION_HEX:
9
+ NEON=#39FF14
10
+ FLUO=#0DFF94
11
+ PASTEL=#C7FFD8
12
+
13
+ ICON_ASCII:
14
+ family=lucide
15
+ glyph=check-circle
16
+
17
+ 5WH:
18
+ WHAT = AIskills Leeway Standards Verification and Status Report
19
+ WHY = Provides comprehensive validation of Leeway compliance and governance setup
20
+ WHO = Leeway Industries (By Leonard Jerome Lee)
21
+ WHERE = scripts/verify-leeway-setup.js
22
+ WHEN = 2026
23
+ HOW = Checks all Leeway components, validates configuration, and produces status report
24
+
25
+ AGENTS:
26
+ ASSESS
27
+
28
+ LICENSE:
29
+ MIT
30
+ */
31
+
32
+ import fs from "fs/promises";
33
+
34
+ const CHECKS = {
35
+ leewayConfig: "✓ Leeway configuration file exists",
36
+ complianceMonitor: "✓ ComplianceMonitor agent installed",
37
+ headerInjector: "✓ HeaderInjector agent installed",
38
+ initScript: "✓ Init-leeway.js bootstrap script exists",
39
+ complianceDocs: "✓ Compliance documentation complete",
40
+ integrationGuide: "✓ Integration guide available",
41
+ skillDirs: "✓ skills/ directory structure valid",
42
+ registryFile: "✓ Skills registry exists",
43
+ configDir: "✓ Config directory exists",
44
+ };
45
+
46
+ async function main() {
47
+ console.log(
48
+ "\n╔═══════════════════════════════════════════════════════════╗",
49
+ );
50
+ console.log("║ 🔍 AISKILLS LEEWAY STANDARDS VERIFICATION REPORT ║");
51
+ console.log(
52
+ "╚═══════════════════════════════════════════════════════════╝\n",
53
+ );
54
+
55
+ const results = {
56
+ passed: 0,
57
+ failed: 0,
58
+ issues: [],
59
+ };
60
+
61
+ // 1. Check Leeway config
62
+ try {
63
+ await fs.access(".leeway/config.json");
64
+ console.log("✅ " + CHECKS.leewayConfig);
65
+ results.passed++;
66
+ } catch {
67
+ console.log("❌ Leeway configuration missing (.leeway/config.json)");
68
+ results.failed++;
69
+ results.issues.push("Missing .leeway/config.json");
70
+ }
71
+
72
+ // 2. Check compliance monitor agent
73
+ try {
74
+ await fs.access("scripts/leeway-agents/compliance-monitor.js");
75
+ console.log("✅ " + CHECKS.complianceMonitor);
76
+ results.passed++;
77
+ } catch {
78
+ console.log("❌ ComplianceMonitor agent missing");
79
+ results.failed++;
80
+ results.issues.push("Missing scripts/leeway-agents/compliance-monitor.js");
81
+ }
82
+
83
+ // 3. Check header injector
84
+ try {
85
+ await fs.access("scripts/leeway-agents/header-injector.js");
86
+ console.log("✅ " + CHECKS.headerInjector);
87
+ results.passed++;
88
+ } catch {
89
+ console.log("❌ HeaderInjector agent missing");
90
+ results.failed++;
91
+ results.issues.push("Missing scripts/leeway-agents/header-injector.js");
92
+ }
93
+
94
+ // 4. Check init script
95
+ try {
96
+ await fs.access("scripts/init-leeway.js");
97
+ console.log("✅ " + CHECKS.initScript);
98
+ results.passed++;
99
+ } catch {
100
+ console.log("❌ Init-leeway.js script missing");
101
+ results.failed++;
102
+ results.issues.push("Missing scripts/init-leeway.js");
103
+ }
104
+
105
+ // 5. Check documentation
106
+ try {
107
+ await fs.access("documents/LEEWAY_STANDARDS_COMPLIANCE.md");
108
+ console.log("✅ " + CHECKS.complianceDocs);
109
+ results.passed++;
110
+ } catch {
111
+ console.log("❌ Compliance documentation missing");
112
+ results.failed++;
113
+ results.issues.push("Missing documents/LEEWAY_STANDARDS_COMPLIANCE.md");
114
+ }
115
+
116
+ // 6. Check integration guide
117
+ try {
118
+ await fs.access("documents/LEEWAY_INTEGRATION_GUIDE.md");
119
+ console.log("✅ " + CHECKS.integrationGuide);
120
+ results.passed++;
121
+ } catch {
122
+ console.log("❌ Integration guide missing");
123
+ results.failed++;
124
+ results.issues.push("Missing documents/LEEWAY_INTEGRATION_GUIDE.md");
125
+ }
126
+
127
+ // 7. Check skills directory
128
+ try {
129
+ const skillsDir = await fs.readdir("skills", { withFileTypes: true });
130
+ const categories = skillsDir.filter((e) => e.isDirectory()).length;
131
+ console.log(`✅ ${CHECKS.skillDirs} (${categories} categories)`);
132
+ results.passed++;
133
+ } catch {
134
+ console.log("❌ skills/ directory structure invalid");
135
+ results.failed++;
136
+ results.issues.push("Invalid skills/ directory");
137
+ }
138
+
139
+ // 8. Check registry
140
+ try {
141
+ await fs.access("scripts/skills-registry.json");
142
+ const registry = JSON.parse(
143
+ await fs.readFile("scripts/skills-registry.json", "utf-8"),
144
+ );
145
+ const hasGovernance =
146
+ registry.metadata?.governance?.framework === "Leeway Standards";
147
+ if (hasGovernance) {
148
+ console.log(`✅ ${CHECKS.registryFile} (with Leeway metadata)`);
149
+ } else {
150
+ console.log("⚠️ Registry exists but missing Leeway metadata");
151
+ results.issues.push("Registry needs Leeway governance metadata");
152
+ }
153
+ results.passed++;
154
+ } catch {
155
+ console.log("❌ Skills registry missing or invalid");
156
+ results.failed++;
157
+ results.issues.push("Invalid or missing scripts/skills-registry.json");
158
+ }
159
+
160
+ // 9. Check config directory
161
+ try {
162
+ const configDir = await fs.readdir("config", { withFileTypes: true });
163
+ const hasConfig = configDir.some((e) => e.name === "skills-config.json");
164
+ if (hasConfig) {
165
+ console.log("✅ " + CHECKS.configDir);
166
+ results.passed++;
167
+ } else {
168
+ console.log("⚠️ Config directory exists but missing skills-config.json");
169
+ }
170
+ } catch {
171
+ console.log("❌ config/ directory missing");
172
+ results.failed++;
173
+ results.issues.push("Missing config/ directory");
174
+ }
175
+
176
+ // Summary
177
+ console.log(
178
+ "\n╔═══════════════════════════════════════════════════════════╗",
179
+ );
180
+ console.log("║ VERIFICATION SUMMARY ║");
181
+ console.log("├───────────────────────────────────────────────────────────┤");
182
+ console.log(
183
+ `│ Checks Passed: ${results.passed.toString().padEnd(3)} ✅ │`,
184
+ );
185
+ console.log(
186
+ `│ Checks Failed: ${results.failed.toString().padEnd(3)} ❌ │`,
187
+ );
188
+
189
+ const status = results.failed === 0 ? "READY FOR DEPLOYMENT" : "NEEDS FIXES";
190
+ const statusEmoji = results.failed === 0 ? "✅" : "⚠️";
191
+
192
+ console.log(`│ Status: ${statusEmoji} ${status.padEnd(40)} │`);
193
+ console.log(
194
+ "╚═══════════════════════════════════════════════════════════╝\n",
195
+ );
196
+
197
+ // Issues
198
+ if (results.issues.length > 0) {
199
+ console.log("📋 Issues to Address:\n");
200
+ results.issues.forEach((issue, i) => {
201
+ console.log(` ${i + 1}. ${issue}`);
202
+ });
203
+ console.log();
204
+ }
205
+
206
+ // Next Steps
207
+ console.log("📌 Recommended Next Steps:\n");
208
+
209
+ if (results.failed === 0) {
210
+ console.log(" 1. Run initialization:");
211
+ console.log(" node scripts/init-leeway.js\n");
212
+ console.log(" 2. Run compliance audit:");
213
+ console.log(" node scripts/leeway-agents/compliance-monitor.js\n");
214
+ console.log(" 3. Fix any issues:");
215
+ console.log(" node scripts/leeway-agents/header-injector.js\n");
216
+ console.log(" 4. Monitor compliance (scheduled):");
217
+ console.log(" Configure hourly task for compliance-monitor.js\n");
218
+ } else {
219
+ console.log(
220
+ " Fix the above issues before proceeding with Leeway verification\n",
221
+ );
222
+ }
223
+
224
+ // Feature Checklist
225
+ console.log("📚 Leeway Features Installed:\n");
226
+ console.log(" ✅ Governance Framework: Leeway SDK 1.0.0");
227
+ console.log(" ✅ Compliance Monitoring: ComplianceMonitor Agent");
228
+ console.log(" ✅ Automated Remediation: HeaderInjector Agent");
229
+ console.log(" ✅ Continuous Validation: SkillValidator Agent");
230
+ console.log(" ✅ Autonomy Auditing: AutonomyAuditor Agent");
231
+ console.log(" ✅ Documentation: Complete compliance guides");
232
+ console.log(" ✅ Configuration: .leeway/config.json");
233
+ console.log(" ✅ Integration: Ready for CI/CD\n");
234
+
235
+ // Policy Summary
236
+ console.log("🔐 Active Compliance Policies:\n");
237
+ console.log(" [ENFORCED] NO_SECRETS_IN_CODE");
238
+ console.log(" [ENFORCED] HEADERS_REQUIRED");
239
+ console.log(" [ENFORCED] TAGS_REQUIRED");
240
+ console.log(" [ENFORCED] NO_CIRCULAR_DEPS");
241
+ console.log(" [WARNING] NAMING_CONVENTIONS");
242
+ console.log(" [WARNING] DOCUMENTATION_COVERAGE\n");
243
+
244
+ console.log("🎯 Compliance Target: 85/100\n");
245
+
246
+ return results.failed === 0 ? 0 : 1;
247
+ }
248
+
249
+ main().then((code) => process.exit(code));