novahiz 0.1.0 → 0.2.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.
Files changed (664) hide show
  1. package/NOTICE.md +10 -17
  2. package/README.md +355 -123
  3. package/adapters/README.md +3 -3
  4. package/adapters/opencode/agent/{novahiz-agent.md → novahiz.md} +6 -4
  5. package/adapters/opencode/commands/novahiz-doctor.md +1 -1
  6. package/adapters/opencode/instructions.md +5 -16
  7. package/adapters/opencode/novahiz.ts +157 -23
  8. package/bundled-skills/{skill-creator/LICENSE.txt → android-reverse-engineering/LICENSE} +5 -17
  9. package/bundled-skills/android-reverse-engineering/references/api-extraction-patterns.md +197 -0
  10. package/bundled-skills/android-reverse-engineering/references/call-flow-analysis.md +210 -0
  11. package/bundled-skills/android-reverse-engineering/references/fernflower-usage.md +115 -0
  12. package/bundled-skills/android-reverse-engineering/references/jadx-usage.md +116 -0
  13. package/bundled-skills/android-reverse-engineering/references/kotlin-name-recovery.md +108 -0
  14. package/bundled-skills/android-reverse-engineering/references/setup-guide.md +221 -0
  15. package/bundled-skills/android-reverse-engineering/references/third_party_hosts.txt +122 -0
  16. package/bundled-skills/android-reverse-engineering/scripts/check-deps.ps1 +165 -0
  17. package/bundled-skills/android-reverse-engineering/scripts/check-deps.sh +129 -0
  18. package/bundled-skills/android-reverse-engineering/scripts/decompile.ps1 +400 -0
  19. package/bundled-skills/android-reverse-engineering/scripts/decompile.sh +578 -0
  20. package/bundled-skills/android-reverse-engineering/scripts/find-api-calls.ps1 +121 -0
  21. package/bundled-skills/android-reverse-engineering/scripts/find-api-calls.sh +339 -0
  22. package/bundled-skills/android-reverse-engineering/scripts/fingerprint.sh +241 -0
  23. package/bundled-skills/android-reverse-engineering/scripts/install-dep.ps1 +345 -0
  24. package/bundled-skills/android-reverse-engineering/scripts/install-dep.sh +448 -0
  25. package/bundled-skills/android-reverse-engineering/scripts/lookup-name.sh +85 -0
  26. package/bundled-skills/android-reverse-engineering/scripts/recover-kotlin-names.sh +140 -0
  27. package/bundled-skills/memory-save/SKILL.md +2 -2
  28. package/catalog/categories.json +1093 -1030
  29. package/catalog/overrides.json +33 -201
  30. package/catalog/providers.json +29 -102
  31. package/catalog/rules.json +84 -80
  32. package/docs/ARCHITECTURE.md +69 -19
  33. package/docs/CATALOG.md +129 -0
  34. package/docs/CLASSIFICATION.md +129 -0
  35. package/docs/CLI.md +202 -0
  36. package/docs/CONFIGURATION.md +97 -0
  37. package/docs/CONSTITUTION.md +3 -3
  38. package/docs/EXECUTION.md +100 -53
  39. package/docs/GATE.md +177 -0
  40. package/docs/HARNESSES.md +2 -2
  41. package/docs/INSTALL.md +3 -3
  42. package/docs/PLUGIN.md +150 -0
  43. package/docs/PROVIDERS.md +10 -12
  44. package/docs/ROADMAPS.md +8 -8
  45. package/docs/RULES.md +21 -16
  46. package/docs/TOKENS.md +2 -2
  47. package/install/bootstrap.mjs +9 -12
  48. package/install/install.mjs +66 -53
  49. package/install/lib.mjs +15 -1
  50. package/install/uninstall.mjs +11 -11
  51. package/mcp/novahiz-tools/index.mjs +244 -40
  52. package/novahiz.config.example.json +0 -1
  53. package/package.json +12 -10
  54. package/skills/ai-security/SKILL.md +91 -323
  55. package/skills/ai-security/references/atlas-coverage.md +38 -128
  56. package/skills/ai-security/scripts/ai_threat_scanner.py +341 -532
  57. package/skills/anti-AI-design/SKILL.md +48 -165
  58. package/skills/apple-hig-audit/SKILL.md +64 -0
  59. package/skills/apple-hig-audit/references/accessibility.md +78 -0
  60. package/skills/apple-hig-audit/references/platform-specifics.md +57 -0
  61. package/skills/apple-hig-audit/references/visual-design.md +68 -0
  62. package/skills/apple-hig-audit/scripts/hig_checker.py +115 -0
  63. package/skills/apple-hig-audit/templates/hig-audit-template.md +114 -0
  64. package/skills/dependency-auditor/README.md +58 -484
  65. package/skills/dependency-auditor/SKILL.md +82 -53
  66. package/skills/dependency-auditor/references/dependency_management_best_practices.md +32 -629
  67. package/skills/dependency-auditor/references/license_compatibility_matrix.md +57 -238
  68. package/skills/dependency-auditor/references/vulnerability_assessment_guide.md +42 -441
  69. package/skills/dependency-auditor/scripts/dep_scanner.py +569 -768
  70. package/skills/dependency-auditor/scripts/license_checker.py +425 -979
  71. package/skills/dependency-auditor/scripts/upgrade_planner.py +463 -1002
  72. package/skills/design-system-tokens/SKILL.md +90 -0
  73. package/skills/design-system-tokens/assets/design_system_doc_template.md +129 -0
  74. package/skills/design-system-tokens/references/component-architecture.md +88 -0
  75. package/skills/design-system-tokens/references/developer-handoff.md +61 -0
  76. package/skills/design-system-tokens/references/responsive-calculations.md +72 -0
  77. package/skills/design-system-tokens/references/token-generation.md +62 -0
  78. package/skills/design-system-tokens/scripts/design_token_generator.py +315 -0
  79. package/skills/engineering-code-standards/SKILL.md +174 -0
  80. package/skills/env-secrets-manager/SKILL.md +67 -225
  81. package/skills/env-secrets-manager/references/secret-patterns.md +43 -28
  82. package/skills/env-secrets-manager/references/validation-detection-rotation.md +50 -332
  83. package/skills/env-secrets-manager/scripts/env_auditor.py +305 -110
  84. package/skills/frontend-design-taste/SKILL.md +62 -0
  85. package/skills/gate/SKILL.md +12 -2
  86. package/skills/mcp-server-builder/README.md +6 -14
  87. package/skills/mcp-server-builder/SKILL.md +93 -49
  88. package/skills/mcp-server-builder/references/production-hardening-guide.md +5 -3
  89. package/skills/mcp-server-builder/references/python-server-template.md +1 -1
  90. package/skills/mcp-server-builder/references/spec-compatibility.md +129 -0
  91. package/skills/mcp-server-builder/references/typescript-server-template.md +1 -1
  92. package/skills/mcp-server-builder/scripts/mcp_validator.py +3 -9
  93. package/skills/mcp-server-builder/scripts/openapi_to_mcp.py +3 -8
  94. package/skills/memory/SKILL.md +11 -3
  95. package/skills/novahiz-analyse/SKILL.md +19 -15
  96. package/skills/novahiz-assess-decide/SKILL.md +81 -0
  97. package/skills/novahiz-assess-define/SKILL.md +78 -0
  98. package/skills/novahiz-assess-intake/SKILL.md +90 -0
  99. package/skills/novahiz-assess-research/SKILL.md +79 -0
  100. package/skills/novahiz-assess-shape/SKILL.md +79 -0
  101. package/skills/novahiz-audit/SKILL.md +52 -54
  102. package/skills/novahiz-browser/SKILL.md +56 -0
  103. package/skills/novahiz-clarify/SKILL.md +38 -35
  104. package/skills/novahiz-code-review/SKILL.md +86 -0
  105. package/skills/novahiz-converge/SKILL.md +30 -26
  106. package/skills/novahiz-delta-review/SKILL.md +87 -0
  107. package/skills/novahiz-docs/SKILL.md +79 -0
  108. package/skills/novahiz-docs/templates/ARCHITECTURE.md +49 -0
  109. package/skills/novahiz-docs/templates/CONVENTIONS.md +50 -0
  110. package/skills/novahiz-docs/templates/DECISIONS.md +28 -0
  111. package/skills/novahiz-docs/templates/STANDARDS.md +48 -0
  112. package/skills/novahiz-gate/SKILL.md +27 -31
  113. package/skills/novahiz-humanizer/SKILL.md +617 -0
  114. package/skills/novahiz-implement/SKILL.md +27 -23
  115. package/skills/novahiz-memory/SKILL.md +29 -27
  116. package/skills/novahiz-plan/SKILL.md +42 -38
  117. package/skills/novahiz-planner/SKILL.md +21 -16
  118. package/skills/novahiz-postgres/SKILL.md +100 -0
  119. package/skills/novahiz-security/SKILL.md +228 -0
  120. package/skills/novahiz-supabase/SKILL.md +177 -0
  121. package/skills/novahiz-task/SKILL.md +34 -30
  122. package/skills/novahiz-wcag-audit/SKILL.md +79 -0
  123. package/skills/novahiz-wcag-audit/references/findings.example.json +36 -0
  124. package/skills/novahiz-wcag-audit/references/report-template.md +55 -0
  125. package/skills/novahiz-wcag-audit/references/wcag22-aa.md +153 -0
  126. package/skills/novahiz-wcag-audit/scripts/contrast.mjs +140 -0
  127. package/skills/novahiz-wcag-audit/scripts/report.mjs +141 -0
  128. package/skills/novahiz-web-extract/SKILL.md +175 -0
  129. package/skills/playwright-agent/SKILL.md +39 -34
  130. package/skills/prompt-rewriter/SKILL.md +85 -0
  131. package/skills/skill-creator/LICENSE.txt +11 -199
  132. package/skills/skill-creator/SKILL.md +166 -180
  133. package/skills/skill-creator/agents/analyzer.md +1 -1
  134. package/skills/skill-creator/agents/grader.md +8 -8
  135. package/skills/skill-creator/assets/eval_review.html +20 -23
  136. package/skills/skill-creator/eval-viewer/generate_review.py +2 -2
  137. package/skills/skill-creator/eval-viewer/viewer.html +34 -38
  138. package/skills/skill-creator/references/schemas.md +2 -2
  139. package/skills/skill-creator/scripts/aggregate_benchmark.py +6 -6
  140. package/skills/skill-creator/scripts/generate_report.py +27 -31
  141. package/skills/skill-creator/scripts/improve_description.py +10 -10
  142. package/skills/skill-creator/scripts/package_skill.py +8 -8
  143. package/skills/skill-creator/scripts/run_eval.py +6 -6
  144. package/skills/write-a-skill/SKILL.md +48 -78
  145. package/skills/write-a-skill/references/companion_tooling.md +18 -24
  146. package/skills/write-a-skill/references/description_design_patterns.md +36 -39
  147. package/skills/write-a-skill/references/progressive_disclosure_principles.md +31 -33
  148. package/skills/write-a-skill/references/quality_gates_for_skills.md +27 -27
  149. package/skills/write-a-skill/scripts/skill_description_validator.py +12 -26
  150. package/skills/write-a-skill/scripts/skill_review_checklist_runner.py +10 -21
  151. package/skills/write-a-skill/scripts/skill_structure_validator.py +13 -25
  152. package/src/catalog.ts +18 -4
  153. package/src/classify.ts +42 -5
  154. package/src/cli.ts +129 -44
  155. package/src/commands/clean.ts +26 -20
  156. package/src/commands/context.ts +11 -5
  157. package/src/commands/doctor.ts +217 -191
  158. package/src/commands/gate.ts +98 -60
  159. package/src/commands/graft.ts +160 -0
  160. package/src/commands/inspect.ts +35 -9
  161. package/src/commands/report.ts +20 -12
  162. package/src/commands/task.ts +17 -9
  163. package/src/commands/tokens.ts +5 -5
  164. package/src/complexity.ts +305 -0
  165. package/src/content.ts +28 -3
  166. package/src/db.ts +44 -7
  167. package/src/gate.ts +401 -261
  168. package/src/graft.ts +221 -0
  169. package/src/ledger.ts +117 -48
  170. package/src/memory.ts +502 -0
  171. package/src/prompt-rewriter.ts +170 -0
  172. package/src/providers.ts +7 -0
  173. package/src/render.ts +1 -1
  174. package/src/spec.ts +18 -7
  175. package/src/targets.ts +22 -1
  176. package/bundled-skills/AGENTS.md +0 -50
  177. package/bundled-skills/LICENSE +0 -21
  178. package/bundled-skills/README.md +0 -202
  179. package/bundled-skills/a11y-audit/SKILL.md +0 -211
  180. package/bundled-skills/a11y-audit/assets/sample-component.tsx +0 -51
  181. package/bundled-skills/a11y-audit/expected_outputs/sample-contrast-output.txt +0 -39
  182. package/bundled-skills/a11y-audit/expected_outputs/sample-scan-output.json +0 -34
  183. package/bundled-skills/a11y-audit/expected_outputs/sample-scan-report.md +0 -63
  184. package/bundled-skills/a11y-audit/references/aria-patterns.md +0 -223
  185. package/bundled-skills/a11y-audit/references/audit-report-template.md +0 -46
  186. package/bundled-skills/a11y-audit/references/ci-cd-integration.md +0 -127
  187. package/bundled-skills/a11y-audit/references/color-contrast-guide.md +0 -83
  188. package/bundled-skills/a11y-audit/references/examples-by-framework.md +0 -312
  189. package/bundled-skills/a11y-audit/references/framework-a11y-patterns.md +0 -661
  190. package/bundled-skills/a11y-audit/references/testing-checklist.md +0 -41
  191. package/bundled-skills/a11y-audit/references/wcag-22-new-criteria.md +0 -79
  192. package/bundled-skills/a11y-audit/references/wcag-quick-ref.md +0 -113
  193. package/bundled-skills/a11y-audit/scripts/a11y_scanner.py +0 -684
  194. package/bundled-skills/a11y-audit/scripts/contrast_checker.py +0 -504
  195. package/bundled-skills/adversarial-reviewer/SKILL.md +0 -247
  196. package/bundled-skills/anti-AI-design/SKILL.md +0 -189
  197. package/bundled-skills/anti-pattern-detector/SKILL.md +0 -185
  198. package/bundled-skills/anti-pattern-detector/references/async-network-patterns.md +0 -581
  199. package/bundled-skills/anti-pattern-detector/references/build-deploy-patterns.md +0 -554
  200. package/bundled-skills/anti-pattern-detector/references/cache-patterns.md +0 -446
  201. package/bundled-skills/anti-pattern-detector/references/cloud-infra-patterns.md +0 -538
  202. package/bundled-skills/anti-pattern-detector/references/concurrency-patterns.md +0 -558
  203. package/bundled-skills/anti-pattern-detector/references/language-specific-patterns.md +0 -740
  204. package/bundled-skills/anti-pattern-detector/references/monitoring-patterns.md +0 -456
  205. package/bundled-skills/api-design-reviewer/SKILL.md +0 -433
  206. package/bundled-skills/api-design-reviewer/references/api_antipatterns.md +0 -680
  207. package/bundled-skills/api-design-reviewer/references/rest_design_rules.md +0 -487
  208. package/bundled-skills/api-design-reviewer/scripts/api_linter.py +0 -956
  209. package/bundled-skills/api-design-reviewer/scripts/api_scorecard.py +0 -1661
  210. package/bundled-skills/api-design-reviewer/scripts/breaking_change_detector.py +0 -1102
  211. package/bundled-skills/apple-hig-expert/SKILL.md +0 -108
  212. package/bundled-skills/apple-hig-expert/references/accessibility.md +0 -55
  213. package/bundled-skills/apple-hig-expert/references/platform-specifics.md +0 -48
  214. package/bundled-skills/apple-hig-expert/references/visual-design.md +0 -69
  215. package/bundled-skills/apple-hig-expert/scripts/hig_checker.py +0 -97
  216. package/bundled-skills/apple-hig-expert/templates/hig-audit-template.md +0 -83
  217. package/bundled-skills/clean-code/SKILL.md +0 -99
  218. package/bundled-skills/code-reviewer/README.md +0 -92
  219. package/bundled-skills/code-reviewer/SKILL.md +0 -183
  220. package/bundled-skills/code-reviewer/assets/sample_c_clean.c +0 -71
  221. package/bundled-skills/code-reviewer/assets/sample_c_smells.c +0 -66
  222. package/bundled-skills/code-reviewer/assets/sample_csharp_clean.cs +0 -100
  223. package/bundled-skills/code-reviewer/assets/sample_csharp_smells.cs +0 -78
  224. package/bundled-skills/code-reviewer/assets/sample_java_clean.java +0 -55
  225. package/bundled-skills/code-reviewer/assets/sample_java_smells.java +0 -56
  226. package/bundled-skills/code-reviewer/expected_outputs/sample_c_clean_quality.json +0 -65
  227. package/bundled-skills/code-reviewer/expected_outputs/sample_c_smells_quality.json +0 -155
  228. package/bundled-skills/code-reviewer/expected_outputs/sample_csharp_clean_quality.json +0 -135
  229. package/bundled-skills/code-reviewer/expected_outputs/sample_csharp_smells_quality.json +0 -143
  230. package/bundled-skills/code-reviewer/expected_outputs/sample_java_clean_quality.json +0 -53
  231. package/bundled-skills/code-reviewer/expected_outputs/sample_java_smells_quality.json +0 -83
  232. package/bundled-skills/code-reviewer/languages/c.md +0 -103
  233. package/bundled-skills/code-reviewer/languages/cpp.md +0 -103
  234. package/bundled-skills/code-reviewer/languages/csharp.md +0 -97
  235. package/bundled-skills/code-reviewer/languages/dart.md +0 -108
  236. package/bundled-skills/code-reviewer/languages/go.md +0 -92
  237. package/bundled-skills/code-reviewer/languages/java.md +0 -103
  238. package/bundled-skills/code-reviewer/languages/kotlin.md +0 -88
  239. package/bundled-skills/code-reviewer/languages/php.md +0 -109
  240. package/bundled-skills/code-reviewer/languages/python.md +0 -94
  241. package/bundled-skills/code-reviewer/languages/ruby.md +0 -105
  242. package/bundled-skills/code-reviewer/languages/rust.md +0 -99
  243. package/bundled-skills/code-reviewer/languages/swift.md +0 -88
  244. package/bundled-skills/code-reviewer/languages/typescript.md +0 -97
  245. package/bundled-skills/code-reviewer/rules/universal.md +0 -49
  246. package/bundled-skills/code-reviewer/scripts/code_quality_checker.py +0 -1020
  247. package/bundled-skills/code-reviewer/scripts/pr_analyzer.py +0 -535
  248. package/bundled-skills/code-reviewer/scripts/review_report_generator.py +0 -505
  249. package/bundled-skills/code-understand/SKILL.md +0 -90
  250. package/bundled-skills/database-designer/README.md +0 -388
  251. package/bundled-skills/database-designer/SKILL.md +0 -314
  252. package/bundled-skills/database-designer/assets/sample_query_patterns.json +0 -375
  253. package/bundled-skills/database-designer/assets/sample_schema.json +0 -372
  254. package/bundled-skills/database-designer/assets/sample_schema.sql +0 -207
  255. package/bundled-skills/database-designer/expected_outputs/index_optimization_sample.txt +0 -60
  256. package/bundled-skills/database-designer/expected_outputs/migration_sample.txt +0 -124
  257. package/bundled-skills/database-designer/expected_outputs/schema_analysis_sample.txt +0 -222
  258. package/bundled-skills/database-designer/index_optimizer.py +0 -926
  259. package/bundled-skills/database-designer/migration_generator.py +0 -1199
  260. package/bundled-skills/database-designer/references/database-design-reference.md +0 -476
  261. package/bundled-skills/database-designer/references/database_selection_decision_tree.md +0 -373
  262. package/bundled-skills/database-designer/references/index_strategy_patterns.md +0 -424
  263. package/bundled-skills/database-designer/references/normalization_guide.md +0 -354
  264. package/bundled-skills/database-designer/schema_analyzer.py +0 -982
  265. package/bundled-skills/defuddle/SKILL.md +0 -41
  266. package/bundled-skills/dependency-auditor/README.md +0 -524
  267. package/bundled-skills/dependency-auditor/SKILL.md +0 -85
  268. package/bundled-skills/dependency-auditor/assets/sample_go.mod +0 -53
  269. package/bundled-skills/dependency-auditor/assets/sample_package.json +0 -72
  270. package/bundled-skills/dependency-auditor/assets/sample_requirements.txt +0 -71
  271. package/bundled-skills/dependency-auditor/expected_outputs/sample_license_report.txt +0 -37
  272. package/bundled-skills/dependency-auditor/expected_outputs/sample_upgrade_plan.txt +0 -59
  273. package/bundled-skills/dependency-auditor/expected_outputs/sample_vulnerability_report.json +0 -71
  274. package/bundled-skills/dependency-auditor/references/dependency_management_best_practices.md +0 -643
  275. package/bundled-skills/dependency-auditor/references/license_compatibility_matrix.md +0 -238
  276. package/bundled-skills/dependency-auditor/references/vulnerability_assessment_guide.md +0 -461
  277. package/bundled-skills/dependency-auditor/scripts/dep_scanner.py +0 -794
  278. package/bundled-skills/dependency-auditor/scripts/license_checker.py +0 -996
  279. package/bundled-skills/dependency-auditor/scripts/upgrade_planner.py +0 -1029
  280. package/bundled-skills/dependency-auditor/test-inventory.json +0 -421
  281. package/bundled-skills/dependency-auditor/test-project/package.json +0 -72
  282. package/bundled-skills/design-taste-frontend/SKILL.md +0 -247
  283. package/bundled-skills/engineering-standards/SKILL.md +0 -736
  284. package/bundled-skills/env-secrets-manager/SKILL.md +0 -260
  285. package/bundled-skills/env-secrets-manager/references/secret-patterns.md +0 -41
  286. package/bundled-skills/env-secrets-manager/references/validation-detection-rotation.md +0 -358
  287. package/bundled-skills/env-secrets-manager/scripts/env_auditor.py +0 -145
  288. package/bundled-skills/fix/SKILL.md +0 -113
  289. package/bundled-skills/fix/flaky-taxonomy.md +0 -134
  290. package/bundled-skills/gate/SKILL.md +0 -13
  291. package/bundled-skills/humanizer/SKILL.md +0 -374
  292. package/bundled-skills/impeccable/SKILL.md +0 -89
  293. package/bundled-skills/impeccable/reference/adapt.md +0 -312
  294. package/bundled-skills/impeccable/reference/adapt.native.md +0 -58
  295. package/bundled-skills/impeccable/reference/android.md +0 -46
  296. package/bundled-skills/impeccable/reference/animate.md +0 -89
  297. package/bundled-skills/impeccable/reference/audit.md +0 -136
  298. package/bundled-skills/impeccable/reference/audit.native.md +0 -139
  299. package/bundled-skills/impeccable/reference/bolder.md +0 -33
  300. package/bundled-skills/impeccable/reference/clarify.md +0 -94
  301. package/bundled-skills/impeccable/reference/colorize.md +0 -86
  302. package/bundled-skills/impeccable/reference/craft-floor.md +0 -44
  303. package/bundled-skills/impeccable/reference/craft.md +0 -5
  304. package/bundled-skills/impeccable/reference/critique.md +0 -806
  305. package/bundled-skills/impeccable/reference/degraded/asset-producer.md +0 -37
  306. package/bundled-skills/impeccable/reference/degraded/documenter.md +0 -24
  307. package/bundled-skills/impeccable/reference/degraded/finish-reviewer.md +0 -38
  308. package/bundled-skills/impeccable/reference/degraded/manual-edit-applier.md +0 -92
  309. package/bundled-skills/impeccable/reference/delight.md +0 -70
  310. package/bundled-skills/impeccable/reference/distill.md +0 -111
  311. package/bundled-skills/impeccable/reference/doctor.md +0 -54
  312. package/bundled-skills/impeccable/reference/document.md +0 -416
  313. package/bundled-skills/impeccable/reference/extract.md +0 -69
  314. package/bundled-skills/impeccable/reference/harden.md +0 -336
  315. package/bundled-skills/impeccable/reference/hooks.md +0 -111
  316. package/bundled-skills/impeccable/reference/init.md +0 -131
  317. package/bundled-skills/impeccable/reference/ios.md +0 -51
  318. package/bundled-skills/impeccable/reference/layout.md +0 -84
  319. package/bundled-skills/impeccable/reference/live-setup.md +0 -104
  320. package/bundled-skills/impeccable/reference/live.md +0 -325
  321. package/bundled-skills/impeccable/reference/new-work.md +0 -145
  322. package/bundled-skills/impeccable/reference/onboard.md +0 -234
  323. package/bundled-skills/impeccable/reference/operate.md +0 -61
  324. package/bundled-skills/impeccable/reference/optimize.md +0 -258
  325. package/bundled-skills/impeccable/reference/overdrive.md +0 -127
  326. package/bundled-skills/impeccable/reference/polish.md +0 -105
  327. package/bundled-skills/impeccable/reference/quieter.md +0 -99
  328. package/bundled-skills/impeccable/reference/routing.md +0 -24
  329. package/bundled-skills/impeccable/reference/shape.md +0 -59
  330. package/bundled-skills/impeccable/reference/typeset.md +0 -80
  331. package/bundled-skills/impeccable/reference/visualize.md +0 -46
  332. package/bundled-skills/impeccable/scripts/VERSION +0 -1
  333. package/bundled-skills/impeccable/scripts/bin/windows-x64/impeccable.exe +0 -0
  334. package/bundled-skills/impeccable/scripts/command-metadata.json +0 -94
  335. package/bundled-skills/impeccable/scripts/data/font-index-failures.json +0 -121
  336. package/bundled-skills/impeccable/scripts/data/font-index.json +0 -1
  337. package/bundled-skills/impeccable/scripts/impeccable +0 -206
  338. package/bundled-skills/impeccable/scripts/impeccable.cmd +0 -214
  339. package/bundled-skills/impeccable/scripts/live-browser-dom.js +0 -167
  340. package/bundled-skills/impeccable/scripts/live-browser-ignores.js +0 -242
  341. package/bundled-skills/impeccable/scripts/live-browser-session.js +0 -144
  342. package/bundled-skills/impeccable/scripts/live-browser.js +0 -12990
  343. package/bundled-skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
  344. package/bundled-skills/mcp-server-builder/README.md +0 -50
  345. package/bundled-skills/mcp-server-builder/SKILL.md +0 -100
  346. package/bundled-skills/mcp-server-builder/references/openapi-extraction-guide.md +0 -34
  347. package/bundled-skills/mcp-server-builder/references/production-hardening-guide.md +0 -78
  348. package/bundled-skills/mcp-server-builder/references/python-server-template.md +0 -22
  349. package/bundled-skills/mcp-server-builder/references/typescript-server-template.md +0 -19
  350. package/bundled-skills/mcp-server-builder/references/validation-checklist.md +0 -30
  351. package/bundled-skills/mcp-server-builder/scripts/mcp_validator.py +0 -186
  352. package/bundled-skills/mcp-server-builder/scripts/openapi_to_mcp.py +0 -284
  353. package/bundled-skills/memory/SKILL.md +0 -10
  354. package/bundled-skills/migrate/SKILL.md +0 -135
  355. package/bundled-skills/migrate/cypress-mapping.md +0 -79
  356. package/bundled-skills/migrate/selenium-mapping.md +0 -94
  357. package/bundled-skills/novahiz-analyse/SKILL.md +0 -74
  358. package/bundled-skills/novahiz-audit/SKILL.md +0 -75
  359. package/bundled-skills/novahiz-clarify/SKILL.md +0 -94
  360. package/bundled-skills/novahiz-converge/SKILL.md +0 -76
  361. package/bundled-skills/novahiz-gate/SKILL.md +0 -82
  362. package/bundled-skills/novahiz-implement/SKILL.md +0 -80
  363. package/bundled-skills/novahiz-memory/SKILL.md +0 -58
  364. package/bundled-skills/novahiz-plan/SKILL.md +0 -100
  365. package/bundled-skills/novahiz-planner/SKILL.md +0 -104
  366. package/bundled-skills/novahiz-task/SKILL.md +0 -105
  367. package/bundled-skills/playwright-agent/SKILL.md +0 -142
  368. package/bundled-skills/postgresql-optimization/SKILL.md +0 -179
  369. package/bundled-skills/review-changes/SKILL.md +0 -30
  370. package/bundled-skills/security-guidance/SKILL.md +0 -161
  371. package/bundled-skills/security-guidance/references/pretooluse_hook_canon.md +0 -141
  372. package/bundled-skills/senior-architect/SKILL.md +0 -343
  373. package/bundled-skills/senior-architect/references/architecture_patterns.md +0 -470
  374. package/bundled-skills/senior-architect/references/system_design_workflows.md +0 -536
  375. package/bundled-skills/senior-architect/references/tech_decision_guide.md +0 -412
  376. package/bundled-skills/senior-architect/scripts/architecture_diagram_generator.py +0 -660
  377. package/bundled-skills/senior-architect/scripts/dependency_analyzer.py +0 -615
  378. package/bundled-skills/senior-architect/scripts/project_architect.py +0 -749
  379. package/bundled-skills/senior-backend/SKILL.md +0 -467
  380. package/bundled-skills/senior-backend/profiles/django-monolith.json +0 -57
  381. package/bundled-skills/senior-backend/profiles/fastapi-python.json +0 -58
  382. package/bundled-skills/senior-backend/profiles/go-or-rust-microservice.json +0 -62
  383. package/bundled-skills/senior-backend/profiles/node-express.json +0 -57
  384. package/bundled-skills/senior-backend/references/api_design_patterns.md +0 -530
  385. package/bundled-skills/senior-backend/references/backend_security_practices.md +0 -1075
  386. package/bundled-skills/senior-backend/references/composition_map.md +0 -58
  387. package/bundled-skills/senior-backend/references/database_optimization_guide.md +0 -593
  388. package/bundled-skills/senior-backend/references/forcing_questions.md +0 -100
  389. package/bundled-skills/senior-backend/scripts/api_load_tester.py +0 -607
  390. package/bundled-skills/senior-backend/scripts/api_scaffolder.py +0 -645
  391. package/bundled-skills/senior-backend/scripts/backend_decision_engine.py +0 -397
  392. package/bundled-skills/senior-backend/scripts/database_migration_tool.py +0 -858
  393. package/bundled-skills/skill-creator/SKILL.md +0 -485
  394. package/bundled-skills/skill-creator/agents/analyzer.md +0 -274
  395. package/bundled-skills/skill-creator/agents/comparator.md +0 -202
  396. package/bundled-skills/skill-creator/agents/grader.md +0 -223
  397. package/bundled-skills/skill-creator/assets/eval_review.html +0 -146
  398. package/bundled-skills/skill-creator/eval-viewer/generate_review.py +0 -471
  399. package/bundled-skills/skill-creator/eval-viewer/viewer.html +0 -1325
  400. package/bundled-skills/skill-creator/references/schemas.md +0 -430
  401. package/bundled-skills/skill-creator/scripts/__init__.py +0 -0
  402. package/bundled-skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
  403. package/bundled-skills/skill-creator/scripts/generate_report.py +0 -326
  404. package/bundled-skills/skill-creator/scripts/improve_description.py +0 -247
  405. package/bundled-skills/skill-creator/scripts/package_skill.py +0 -136
  406. package/bundled-skills/skill-creator/scripts/quick_validate.py +0 -103
  407. package/bundled-skills/skill-creator/scripts/run_eval.py +0 -310
  408. package/bundled-skills/skill-creator/scripts/run_loop.py +0 -328
  409. package/bundled-skills/skill-creator/scripts/utils.py +0 -47
  410. package/bundled-skills/spec-driven-workflow/SKILL.md +0 -333
  411. package/bundled-skills/spec-driven-workflow/references/acceptance_criteria_patterns.md +0 -497
  412. package/bundled-skills/spec-driven-workflow/references/bounded_autonomy_rules.md +0 -273
  413. package/bundled-skills/spec-driven-workflow/references/spec_format_guide.md +0 -531
  414. package/bundled-skills/spec-driven-workflow/scripts/spec_generator.py +0 -338
  415. package/bundled-skills/spec-driven-workflow/scripts/spec_validator.py +0 -461
  416. package/bundled-skills/spec-driven-workflow/scripts/test_extractor.py +0 -431
  417. package/bundled-skills/supabase/CHANGELOG.md +0 -78
  418. package/bundled-skills/supabase/SKILL.md +0 -149
  419. package/bundled-skills/supabase/assets/feedback-issue-template.md +0 -17
  420. package/bundled-skills/supabase/references/skill-feedback.md +0 -17
  421. package/bundled-skills/supabase-postgres-best-practices/CHANGELOG.md +0 -73
  422. package/bundled-skills/supabase-postgres-best-practices/SKILL.md +0 -64
  423. package/bundled-skills/supabase-postgres-best-practices/references/_contributing.md +0 -170
  424. package/bundled-skills/supabase-postgres-best-practices/references/_sections.md +0 -39
  425. package/bundled-skills/supabase-postgres-best-practices/references/_template.md +0 -34
  426. package/bundled-skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +0 -55
  427. package/bundled-skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +0 -49
  428. package/bundled-skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +0 -46
  429. package/bundled-skills/supabase-postgres-best-practices/references/conn-limits.md +0 -44
  430. package/bundled-skills/supabase-postgres-best-practices/references/conn-pooling.md +0 -41
  431. package/bundled-skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +0 -46
  432. package/bundled-skills/supabase-postgres-best-practices/references/data-batch-inserts.md +0 -54
  433. package/bundled-skills/supabase-postgres-best-practices/references/data-n-plus-one.md +0 -53
  434. package/bundled-skills/supabase-postgres-best-practices/references/data-pagination.md +0 -50
  435. package/bundled-skills/supabase-postgres-best-practices/references/data-upsert.md +0 -50
  436. package/bundled-skills/supabase-postgres-best-practices/references/lock-advisory.md +0 -56
  437. package/bundled-skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +0 -68
  438. package/bundled-skills/supabase-postgres-best-practices/references/lock-short-transactions.md +0 -50
  439. package/bundled-skills/supabase-postgres-best-practices/references/lock-skip-locked.md +0 -54
  440. package/bundled-skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +0 -45
  441. package/bundled-skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +0 -55
  442. package/bundled-skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +0 -55
  443. package/bundled-skills/supabase-postgres-best-practices/references/query-composite-indexes.md +0 -44
  444. package/bundled-skills/supabase-postgres-best-practices/references/query-covering-indexes.md +0 -40
  445. package/bundled-skills/supabase-postgres-best-practices/references/query-index-types.md +0 -48
  446. package/bundled-skills/supabase-postgres-best-practices/references/query-missing-indexes.md +0 -43
  447. package/bundled-skills/supabase-postgres-best-practices/references/query-partial-indexes.md +0 -45
  448. package/bundled-skills/supabase-postgres-best-practices/references/schema-constraints.md +0 -80
  449. package/bundled-skills/supabase-postgres-best-practices/references/schema-data-types.md +0 -46
  450. package/bundled-skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +0 -59
  451. package/bundled-skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +0 -55
  452. package/bundled-skills/supabase-postgres-best-practices/references/schema-partitioning.md +0 -55
  453. package/bundled-skills/supabase-postgres-best-practices/references/schema-primary-keys.md +0 -61
  454. package/bundled-skills/supabase-postgres-best-practices/references/security-privileges.md +0 -54
  455. package/bundled-skills/supabase-postgres-best-practices/references/security-rls-basics.md +0 -50
  456. package/bundled-skills/supabase-postgres-best-practices/references/security-rls-performance.md +0 -63
  457. package/bundled-skills/typescript-expert/SKILL.md +0 -431
  458. package/bundled-skills/typescript-expert/references/tsconfig-strict.json +0 -45
  459. package/bundled-skills/typescript-expert/references/typescript-cheatsheet.md +0 -383
  460. package/bundled-skills/typescript-expert/references/utility-types.ts +0 -335
  461. package/bundled-skills/typescript-expert/scripts/ts_diagnostic.py +0 -203
  462. package/bundled-skills/ui-design-system/SKILL.md +0 -379
  463. package/bundled-skills/ui-design-system/assets/design_system_doc_template.md +0 -180
  464. package/bundled-skills/ui-design-system/references/component-architecture.md +0 -396
  465. package/bundled-skills/ui-design-system/references/developer-handoff.md +0 -509
  466. package/bundled-skills/ui-design-system/references/responsive-calculations.md +0 -390
  467. package/bundled-skills/ui-design-system/references/token-generation.md +0 -324
  468. package/bundled-skills/ui-design-system/scripts/design_token_generator.py +0 -590
  469. package/bundled-skills/write-a-skill/SKILL.md +0 -141
  470. package/bundled-skills/write-a-skill/references/companion_tooling.md +0 -67
  471. package/bundled-skills/write-a-skill/references/description_design_patterns.md +0 -139
  472. package/bundled-skills/write-a-skill/references/progressive_disclosure_principles.md +0 -89
  473. package/bundled-skills/write-a-skill/references/quality_gates_for_skills.md +0 -158
  474. package/bundled-skills/write-a-skill/scripts/skill_description_validator.py +0 -255
  475. package/bundled-skills/write-a-skill/scripts/skill_review_checklist_runner.py +0 -268
  476. package/bundled-skills/write-a-skill/scripts/skill_structure_validator.py +0 -277
  477. package/bundled-skills/zero-hallucination-coder/SKILL.md +0 -271
  478. package/skills/a11y-audit/SKILL.md +0 -211
  479. package/skills/a11y-audit/assets/sample-component.tsx +0 -51
  480. package/skills/a11y-audit/expected_outputs/sample-contrast-output.txt +0 -39
  481. package/skills/a11y-audit/expected_outputs/sample-scan-output.json +0 -34
  482. package/skills/a11y-audit/expected_outputs/sample-scan-report.md +0 -63
  483. package/skills/a11y-audit/references/aria-patterns.md +0 -223
  484. package/skills/a11y-audit/references/audit-report-template.md +0 -46
  485. package/skills/a11y-audit/references/ci-cd-integration.md +0 -127
  486. package/skills/a11y-audit/references/color-contrast-guide.md +0 -83
  487. package/skills/a11y-audit/references/examples-by-framework.md +0 -312
  488. package/skills/a11y-audit/references/framework-a11y-patterns.md +0 -661
  489. package/skills/a11y-audit/references/testing-checklist.md +0 -41
  490. package/skills/a11y-audit/references/wcag-22-new-criteria.md +0 -79
  491. package/skills/a11y-audit/references/wcag-quick-ref.md +0 -113
  492. package/skills/a11y-audit/scripts/a11y_scanner.py +0 -684
  493. package/skills/a11y-audit/scripts/contrast_checker.py +0 -504
  494. package/skills/adversarial-reviewer/SKILL.md +0 -247
  495. package/skills/anti-pattern-detector/SKILL.md +0 -185
  496. package/skills/anti-pattern-detector/references/async-network-patterns.md +0 -581
  497. package/skills/anti-pattern-detector/references/build-deploy-patterns.md +0 -554
  498. package/skills/anti-pattern-detector/references/cache-patterns.md +0 -446
  499. package/skills/anti-pattern-detector/references/cloud-infra-patterns.md +0 -538
  500. package/skills/anti-pattern-detector/references/concurrency-patterns.md +0 -558
  501. package/skills/anti-pattern-detector/references/language-specific-patterns.md +0 -740
  502. package/skills/anti-pattern-detector/references/monitoring-patterns.md +0 -456
  503. package/skills/api-design-reviewer/SKILL.md +0 -433
  504. package/skills/api-design-reviewer/references/api_antipatterns.md +0 -680
  505. package/skills/api-design-reviewer/references/rest_design_rules.md +0 -487
  506. package/skills/api-design-reviewer/scripts/api_linter.py +0 -956
  507. package/skills/api-design-reviewer/scripts/api_scorecard.py +0 -1661
  508. package/skills/api-design-reviewer/scripts/breaking_change_detector.py +0 -1102
  509. package/skills/apple-hig-expert/SKILL.md +0 -108
  510. package/skills/apple-hig-expert/references/accessibility.md +0 -55
  511. package/skills/apple-hig-expert/references/platform-specifics.md +0 -48
  512. package/skills/apple-hig-expert/references/visual-design.md +0 -69
  513. package/skills/apple-hig-expert/scripts/hig_checker.py +0 -97
  514. package/skills/apple-hig-expert/templates/hig-audit-template.md +0 -83
  515. package/skills/clean-code/SKILL.md +0 -99
  516. package/skills/code-reviewer/README.md +0 -92
  517. package/skills/code-reviewer/SKILL.md +0 -183
  518. package/skills/code-reviewer/assets/sample_c_clean.c +0 -71
  519. package/skills/code-reviewer/assets/sample_c_smells.c +0 -66
  520. package/skills/code-reviewer/assets/sample_csharp_clean.cs +0 -100
  521. package/skills/code-reviewer/assets/sample_csharp_smells.cs +0 -78
  522. package/skills/code-reviewer/assets/sample_java_clean.java +0 -55
  523. package/skills/code-reviewer/assets/sample_java_smells.java +0 -56
  524. package/skills/code-reviewer/expected_outputs/sample_c_clean_quality.json +0 -65
  525. package/skills/code-reviewer/expected_outputs/sample_c_smells_quality.json +0 -155
  526. package/skills/code-reviewer/expected_outputs/sample_csharp_clean_quality.json +0 -135
  527. package/skills/code-reviewer/expected_outputs/sample_csharp_smells_quality.json +0 -143
  528. package/skills/code-reviewer/expected_outputs/sample_java_clean_quality.json +0 -53
  529. package/skills/code-reviewer/expected_outputs/sample_java_smells_quality.json +0 -83
  530. package/skills/code-reviewer/languages/c.md +0 -103
  531. package/skills/code-reviewer/languages/cpp.md +0 -103
  532. package/skills/code-reviewer/languages/csharp.md +0 -97
  533. package/skills/code-reviewer/languages/dart.md +0 -108
  534. package/skills/code-reviewer/languages/go.md +0 -92
  535. package/skills/code-reviewer/languages/java.md +0 -103
  536. package/skills/code-reviewer/languages/kotlin.md +0 -88
  537. package/skills/code-reviewer/languages/php.md +0 -109
  538. package/skills/code-reviewer/languages/python.md +0 -94
  539. package/skills/code-reviewer/languages/ruby.md +0 -105
  540. package/skills/code-reviewer/languages/rust.md +0 -99
  541. package/skills/code-reviewer/languages/swift.md +0 -88
  542. package/skills/code-reviewer/languages/typescript.md +0 -97
  543. package/skills/code-reviewer/rules/universal.md +0 -49
  544. package/skills/code-reviewer/scripts/code_quality_checker.py +0 -1020
  545. package/skills/code-reviewer/scripts/pr_analyzer.py +0 -535
  546. package/skills/code-reviewer/scripts/review_report_generator.py +0 -505
  547. package/skills/code-understand/SKILL.md +0 -90
  548. package/skills/database-designer/README.md +0 -388
  549. package/skills/database-designer/SKILL.md +0 -314
  550. package/skills/database-designer/assets/sample_query_patterns.json +0 -375
  551. package/skills/database-designer/assets/sample_schema.json +0 -372
  552. package/skills/database-designer/assets/sample_schema.sql +0 -207
  553. package/skills/database-designer/expected_outputs/index_optimization_sample.txt +0 -60
  554. package/skills/database-designer/expected_outputs/migration_sample.txt +0 -124
  555. package/skills/database-designer/expected_outputs/schema_analysis_sample.txt +0 -222
  556. package/skills/database-designer/index_optimizer.py +0 -926
  557. package/skills/database-designer/migration_generator.py +0 -1199
  558. package/skills/database-designer/references/database-design-reference.md +0 -476
  559. package/skills/database-designer/references/database_selection_decision_tree.md +0 -373
  560. package/skills/database-designer/references/index_strategy_patterns.md +0 -424
  561. package/skills/database-designer/references/normalization_guide.md +0 -354
  562. package/skills/database-designer/schema_analyzer.py +0 -982
  563. package/skills/defuddle/SKILL.md +0 -41
  564. package/skills/design-taste-frontend/SKILL.md +0 -247
  565. package/skills/engineering-standards/SKILL.md +0 -736
  566. package/skills/fix/SKILL.md +0 -113
  567. package/skills/fix/flaky-taxonomy.md +0 -134
  568. package/skills/humanizer/SKILL.md +0 -374
  569. package/skills/migrate/SKILL.md +0 -135
  570. package/skills/migrate/cypress-mapping.md +0 -79
  571. package/skills/migrate/selenium-mapping.md +0 -94
  572. package/skills/postgresql-optimization/SKILL.md +0 -179
  573. package/skills/review-changes/SKILL.md +0 -30
  574. package/skills/security-guidance/SKILL.md +0 -160
  575. package/skills/security-guidance/references/pretooluse_hook_canon.md +0 -141
  576. package/skills/senior-architect/SKILL.md +0 -343
  577. package/skills/senior-architect/references/architecture_patterns.md +0 -470
  578. package/skills/senior-architect/references/system_design_workflows.md +0 -536
  579. package/skills/senior-architect/references/tech_decision_guide.md +0 -412
  580. package/skills/senior-architect/scripts/architecture_diagram_generator.py +0 -660
  581. package/skills/senior-architect/scripts/dependency_analyzer.py +0 -615
  582. package/skills/senior-architect/scripts/project_architect.py +0 -749
  583. package/skills/senior-backend/SKILL.md +0 -467
  584. package/skills/senior-backend/profiles/django-monolith.json +0 -57
  585. package/skills/senior-backend/profiles/fastapi-python.json +0 -58
  586. package/skills/senior-backend/profiles/go-or-rust-microservice.json +0 -62
  587. package/skills/senior-backend/profiles/node-express.json +0 -57
  588. package/skills/senior-backend/references/api_design_patterns.md +0 -530
  589. package/skills/senior-backend/references/backend_security_practices.md +0 -1075
  590. package/skills/senior-backend/references/composition_map.md +0 -58
  591. package/skills/senior-backend/references/database_optimization_guide.md +0 -593
  592. package/skills/senior-backend/references/forcing_questions.md +0 -100
  593. package/skills/senior-backend/scripts/api_load_tester.py +0 -607
  594. package/skills/senior-backend/scripts/api_scaffolder.py +0 -645
  595. package/skills/senior-backend/scripts/backend_decision_engine.py +0 -397
  596. package/skills/senior-backend/scripts/database_migration_tool.py +0 -858
  597. package/skills/senior-secops/SKILL.md +0 -505
  598. package/skills/senior-secops/references/compliance_requirements.md +0 -792
  599. package/skills/senior-secops/references/security_standards.md +0 -718
  600. package/skills/senior-secops/references/vulnerability_management_guide.md +0 -487
  601. package/skills/senior-secops/scripts/compliance_checker.py +0 -1107
  602. package/skills/senior-secops/scripts/security_scanner.py +0 -471
  603. package/skills/senior-secops/scripts/vulnerability_assessor.py +0 -563
  604. package/skills/spec-driven-workflow/SKILL.md +0 -333
  605. package/skills/spec-driven-workflow/references/acceptance_criteria_patterns.md +0 -497
  606. package/skills/spec-driven-workflow/references/bounded_autonomy_rules.md +0 -273
  607. package/skills/spec-driven-workflow/references/spec_format_guide.md +0 -531
  608. package/skills/spec-driven-workflow/scripts/spec_generator.py +0 -338
  609. package/skills/spec-driven-workflow/scripts/spec_validator.py +0 -461
  610. package/skills/spec-driven-workflow/scripts/test_extractor.py +0 -431
  611. package/skills/supabase/CHANGELOG.md +0 -78
  612. package/skills/supabase/SKILL.md +0 -149
  613. package/skills/supabase/assets/feedback-issue-template.md +0 -17
  614. package/skills/supabase/references/skill-feedback.md +0 -17
  615. package/skills/supabase-postgres-best-practices/CHANGELOG.md +0 -73
  616. package/skills/supabase-postgres-best-practices/SKILL.md +0 -64
  617. package/skills/supabase-postgres-best-practices/references/_contributing.md +0 -170
  618. package/skills/supabase-postgres-best-practices/references/_sections.md +0 -39
  619. package/skills/supabase-postgres-best-practices/references/_template.md +0 -34
  620. package/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +0 -55
  621. package/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +0 -49
  622. package/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +0 -46
  623. package/skills/supabase-postgres-best-practices/references/conn-limits.md +0 -44
  624. package/skills/supabase-postgres-best-practices/references/conn-pooling.md +0 -41
  625. package/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +0 -46
  626. package/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +0 -54
  627. package/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +0 -53
  628. package/skills/supabase-postgres-best-practices/references/data-pagination.md +0 -50
  629. package/skills/supabase-postgres-best-practices/references/data-upsert.md +0 -50
  630. package/skills/supabase-postgres-best-practices/references/lock-advisory.md +0 -56
  631. package/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +0 -68
  632. package/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +0 -50
  633. package/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +0 -54
  634. package/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +0 -45
  635. package/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +0 -55
  636. package/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +0 -55
  637. package/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +0 -44
  638. package/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +0 -40
  639. package/skills/supabase-postgres-best-practices/references/query-index-types.md +0 -48
  640. package/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +0 -43
  641. package/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +0 -45
  642. package/skills/supabase-postgres-best-practices/references/schema-constraints.md +0 -80
  643. package/skills/supabase-postgres-best-practices/references/schema-data-types.md +0 -46
  644. package/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +0 -59
  645. package/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +0 -55
  646. package/skills/supabase-postgres-best-practices/references/schema-partitioning.md +0 -55
  647. package/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +0 -61
  648. package/skills/supabase-postgres-best-practices/references/security-privileges.md +0 -54
  649. package/skills/supabase-postgres-best-practices/references/security-rls-basics.md +0 -50
  650. package/skills/supabase-postgres-best-practices/references/security-rls-performance.md +0 -63
  651. package/skills/typescript-expert/SKILL.md +0 -431
  652. package/skills/typescript-expert/references/tsconfig-strict.json +0 -45
  653. package/skills/typescript-expert/references/typescript-cheatsheet.md +0 -383
  654. package/skills/typescript-expert/references/utility-types.ts +0 -335
  655. package/skills/typescript-expert/scripts/ts_diagnostic.py +0 -203
  656. package/skills/ui-design-system/SKILL.md +0 -379
  657. package/skills/ui-design-system/assets/design_system_doc_template.md +0 -180
  658. package/skills/ui-design-system/references/component-architecture.md +0 -396
  659. package/skills/ui-design-system/references/developer-handoff.md +0 -509
  660. package/skills/ui-design-system/references/responsive-calculations.md +0 -390
  661. package/skills/ui-design-system/references/token-generation.md +0 -324
  662. package/skills/ui-design-system/scripts/design_token_generator.py +0 -590
  663. package/skills/zero-hallucination-coder/SKILL.md +0 -271
  664. /package/bundled-skills/{SKILL.md → android-reverse-engineering/SKILL.md} +0 -0
@@ -1,1107 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Compliance Checker - Verify security compliance against SOC 2, PCI-DSS, HIPAA, GDPR.
4
-
5
- Table of Contents:
6
- ComplianceChecker - Main class for compliance verification
7
- __init__ - Initialize with target path and framework
8
- check() - Run compliance checks for selected framework
9
- check_soc2() - Check SOC 2 Type II controls
10
- check_pci_dss() - Check PCI-DSS v4.0 requirements
11
- check_hipaa() - Check HIPAA security rule requirements
12
- check_gdpr() - Check GDPR data protection requirements
13
- _check_encryption_at_rest() - Verify data encryption
14
- _check_access_controls() - Verify access control implementation
15
- _check_logging() - Verify audit logging
16
- _check_secrets_management() - Verify secrets handling
17
- _calculate_compliance_score() - Calculate overall compliance score
18
- main() - CLI entry point
19
-
20
- Usage:
21
- python compliance_checker.py /path/to/project
22
- python compliance_checker.py /path/to/project --framework soc2
23
- python compliance_checker.py /path/to/project --framework pci-dss --output report.json
24
- """
25
-
26
- import os
27
- import sys
28
- import json
29
- import re
30
- import argparse
31
- from pathlib import Path
32
- from typing import Dict, List, Optional, Tuple
33
- from dataclasses import dataclass, asdict
34
- from datetime import datetime
35
-
36
-
37
- @dataclass
38
- class ComplianceControl:
39
- """Represents a compliance control check result."""
40
- control_id: str
41
- framework: str
42
- category: str
43
- title: str
44
- description: str
45
- status: str # passed, failed, warning, not_applicable
46
- evidence: List[str]
47
- recommendation: str
48
- severity: str # critical, high, medium, low
49
-
50
-
51
- class ComplianceChecker:
52
- """Verify security compliance against industry frameworks."""
53
-
54
- FRAMEWORKS = ['soc2', 'pci-dss', 'hipaa', 'gdpr', 'all']
55
-
56
- def __init__(
57
- self,
58
- target_path: str,
59
- framework: str = "all",
60
- verbose: bool = False
61
- ):
62
- """
63
- Initialize the compliance checker.
64
-
65
- Args:
66
- target_path: Directory to scan
67
- framework: Compliance framework to check (soc2, pci-dss, hipaa, gdpr, all)
68
- verbose: Enable verbose output
69
- """
70
- self.target_path = Path(target_path)
71
- self.framework = framework.lower()
72
- self.verbose = verbose
73
- self.controls: List[ComplianceControl] = []
74
- self.files_scanned = 0
75
-
76
- def check(self) -> Dict:
77
- """
78
- Run compliance checks for selected framework.
79
-
80
- Returns:
81
- Dict with compliance results
82
- """
83
- print(f"Compliance Checker - Scanning: {self.target_path}")
84
- print(f"Framework: {self.framework.upper()}")
85
- print()
86
-
87
- if not self.target_path.exists():
88
- return {"status": "error", "message": f"Path not found: {self.target_path}"}
89
-
90
- start_time = datetime.now()
91
-
92
- # Run framework-specific checks
93
- if self.framework in ('soc2', 'all'):
94
- self.check_soc2()
95
- if self.framework in ('pci-dss', 'all'):
96
- self.check_pci_dss()
97
- if self.framework in ('hipaa', 'all'):
98
- self.check_hipaa()
99
- if self.framework in ('gdpr', 'all'):
100
- self.check_gdpr()
101
-
102
- end_time = datetime.now()
103
- scan_duration = (end_time - start_time).total_seconds()
104
-
105
- # Calculate statistics
106
- passed = len([c for c in self.controls if c.status == 'passed'])
107
- failed = len([c for c in self.controls if c.status == 'failed'])
108
- warnings = len([c for c in self.controls if c.status == 'warning'])
109
- na = len([c for c in self.controls if c.status == 'not_applicable'])
110
-
111
- compliance_score = self._calculate_compliance_score()
112
-
113
- result = {
114
- "status": "completed",
115
- "target": str(self.target_path),
116
- "framework": self.framework,
117
- "scan_duration_seconds": round(scan_duration, 2),
118
- "compliance_score": compliance_score,
119
- "compliance_level": self._get_compliance_level(compliance_score),
120
- "summary": {
121
- "passed": passed,
122
- "failed": failed,
123
- "warnings": warnings,
124
- "not_applicable": na,
125
- "total": len(self.controls)
126
- },
127
- "controls": [asdict(c) for c in self.controls]
128
- }
129
-
130
- self._print_summary(result)
131
-
132
- return result
133
-
134
- def check_soc2(self):
135
- """Check SOC 2 Type II controls."""
136
- if self.verbose:
137
- print(" Checking SOC 2 Type II controls...")
138
-
139
- # CC1: Control Environment - Access Controls
140
- self._check_access_controls_soc2()
141
-
142
- # CC2: Communication and Information
143
- self._check_documentation()
144
-
145
- # CC3: Risk Assessment
146
- self._check_risk_assessment()
147
-
148
- # CC6: Logical and Physical Access Controls
149
- self._check_authentication()
150
-
151
- # CC7: System Operations
152
- self._check_logging()
153
-
154
- # CC8: Change Management
155
- self._check_change_management()
156
-
157
- def check_pci_dss(self):
158
- """Check PCI-DSS v4.0 requirements."""
159
- if self.verbose:
160
- print(" Checking PCI-DSS v4.0 requirements...")
161
-
162
- # Requirement 3: Protect stored cardholder data
163
- self._check_data_encryption()
164
-
165
- # Requirement 4: Encrypt transmission of cardholder data
166
- self._check_transmission_encryption()
167
-
168
- # Requirement 6: Develop and maintain secure systems
169
- self._check_secure_development()
170
-
171
- # Requirement 8: Identify users and authenticate access
172
- self._check_strong_authentication()
173
-
174
- # Requirement 10: Log and monitor all access
175
- self._check_audit_logging()
176
-
177
- # Requirement 11: Test security of systems regularly
178
- self._check_security_testing()
179
-
180
- def check_hipaa(self):
181
- """Check HIPAA security rule requirements."""
182
- if self.verbose:
183
- print(" Checking HIPAA Security Rule requirements...")
184
-
185
- # 164.312(a)(1): Access Control
186
- self._check_hipaa_access_control()
187
-
188
- # 164.312(b): Audit Controls
189
- self._check_hipaa_audit()
190
-
191
- # 164.312(c)(1): Integrity Controls
192
- self._check_hipaa_integrity()
193
-
194
- # 164.312(d): Person or Entity Authentication
195
- self._check_hipaa_authentication()
196
-
197
- # 164.312(e)(1): Transmission Security
198
- self._check_hipaa_transmission()
199
-
200
- def check_gdpr(self):
201
- """Check GDPR data protection requirements."""
202
- if self.verbose:
203
- print(" Checking GDPR requirements...")
204
-
205
- # Article 25: Data protection by design
206
- self._check_privacy_by_design()
207
-
208
- # Article 32: Security of processing
209
- self._check_gdpr_security()
210
-
211
- # Article 33/34: Breach notification
212
- self._check_breach_notification()
213
-
214
- # Article 17: Right to erasure
215
- self._check_data_deletion()
216
-
217
- # Article 20: Data portability
218
- self._check_data_export()
219
-
220
- def _check_access_controls_soc2(self):
221
- """SOC 2 CC1/CC6: Check access control implementation."""
222
- evidence = []
223
- status = 'failed'
224
-
225
- # Look for authentication middleware
226
- auth_patterns = [
227
- r'authMiddleware',
228
- r'requireAuth',
229
- r'isAuthenticated',
230
- r'@login_required',
231
- r'@authenticated',
232
- r'passport\.authenticate',
233
- r'jwt\.verify',
234
- r'verifyToken'
235
- ]
236
-
237
- for pattern in auth_patterns:
238
- files = self._search_files(pattern)
239
- if files:
240
- evidence.extend(files[:3])
241
- status = 'passed'
242
- break
243
-
244
- # Check for RBAC implementation
245
- rbac_patterns = [r'role', r'permission', r'authorize', r'can\(', r'hasRole']
246
- for pattern in rbac_patterns:
247
- files = self._search_files(pattern)
248
- if files:
249
- evidence.extend(files[:2])
250
- if status == 'failed':
251
- status = 'warning'
252
- break
253
-
254
- self.controls.append(ComplianceControl(
255
- control_id='SOC2-CC6.1',
256
- framework='SOC 2',
257
- category='Logical Access Controls',
258
- title='Access Control Implementation',
259
- description='Verify authentication and authorization controls are implemented',
260
- status=status,
261
- evidence=evidence[:5],
262
- recommendation='Implement authentication middleware and role-based access control (RBAC)',
263
- severity='high' if status == 'failed' else 'low'
264
- ))
265
-
266
- def _check_documentation(self):
267
- """SOC 2 CC2: Check security documentation."""
268
- evidence = []
269
- status = 'failed'
270
-
271
- doc_files = [
272
- 'SECURITY.md',
273
- 'docs/security.md',
274
- 'CONTRIBUTING.md',
275
- 'docs/security-policy.md',
276
- '.github/SECURITY.md'
277
- ]
278
-
279
- for doc in doc_files:
280
- doc_path = self.target_path / doc
281
- if doc_path.exists():
282
- evidence.append(str(doc))
283
- status = 'passed' if 'security' in doc.lower() else 'warning'
284
- break
285
-
286
- self.controls.append(ComplianceControl(
287
- control_id='SOC2-CC2.1',
288
- framework='SOC 2',
289
- category='Communication and Information',
290
- title='Security Documentation',
291
- description='Verify security policies and procedures are documented',
292
- status=status,
293
- evidence=evidence,
294
- recommendation='Create SECURITY.md documenting security policies, incident response, and vulnerability reporting',
295
- severity='medium' if status == 'failed' else 'low'
296
- ))
297
-
298
- def _check_risk_assessment(self):
299
- """SOC 2 CC3: Check risk assessment artifacts."""
300
- evidence = []
301
- status = 'failed'
302
-
303
- # Look for security scanning configuration
304
- scan_configs = [
305
- '.snyk',
306
- '.github/workflows/security.yml',
307
- '.github/workflows/codeql.yml',
308
- 'trivy.yaml',
309
- '.semgrep.yml',
310
- 'sonar-project.properties'
311
- ]
312
-
313
- for config in scan_configs:
314
- config_path = self.target_path / config
315
- if config_path.exists():
316
- evidence.append(str(config))
317
- status = 'passed'
318
- break
319
-
320
- # Check for dependabot/renovate
321
- dep_configs = [
322
- '.github/dependabot.yml',
323
- 'renovate.json',
324
- '.github/renovate.json'
325
- ]
326
-
327
- for config in dep_configs:
328
- config_path = self.target_path / config
329
- if config_path.exists():
330
- evidence.append(str(config))
331
- if status == 'failed':
332
- status = 'warning'
333
- break
334
-
335
- self.controls.append(ComplianceControl(
336
- control_id='SOC2-CC3.1',
337
- framework='SOC 2',
338
- category='Risk Assessment',
339
- title='Automated Security Scanning',
340
- description='Verify automated vulnerability scanning is configured',
341
- status=status,
342
- evidence=evidence,
343
- recommendation='Configure automated security scanning (Snyk, CodeQL, Trivy) and dependency updates (Dependabot)',
344
- severity='high' if status == 'failed' else 'low'
345
- ))
346
-
347
- def _check_authentication(self):
348
- """SOC 2 CC6: Check authentication strength."""
349
- evidence = []
350
- status = 'failed'
351
-
352
- # Check for MFA/2FA
353
- mfa_patterns = [r'mfa', r'2fa', r'totp', r'authenticator', r'twoFactor']
354
- for pattern in mfa_patterns:
355
- files = self._search_files(pattern, case_sensitive=False)
356
- if files:
357
- evidence.extend(files[:2])
358
- status = 'passed'
359
- break
360
-
361
- # Check for password hashing
362
- hash_patterns = [r'bcrypt', r'argon2', r'scrypt', r'pbkdf2']
363
- for pattern in hash_patterns:
364
- files = self._search_files(pattern, case_sensitive=False)
365
- if files:
366
- evidence.extend(files[:2])
367
- if status == 'failed':
368
- status = 'warning'
369
- break
370
-
371
- self.controls.append(ComplianceControl(
372
- control_id='SOC2-CC6.2',
373
- framework='SOC 2',
374
- category='Authentication',
375
- title='Strong Authentication',
376
- description='Verify multi-factor authentication and secure password storage',
377
- status=status,
378
- evidence=evidence[:5],
379
- recommendation='Implement MFA/2FA and use bcrypt/argon2 for password hashing',
380
- severity='critical' if status == 'failed' else 'low'
381
- ))
382
-
383
- def _check_logging(self):
384
- """SOC 2 CC7: Check audit logging implementation."""
385
- evidence = []
386
- status = 'failed'
387
-
388
- # Check for logging configuration
389
- log_patterns = [
390
- r'winston',
391
- r'pino',
392
- r'bunyan',
393
- r'logging\.getLogger',
394
- r'log\.info',
395
- r'logger\.',
396
- r'audit.*log'
397
- ]
398
-
399
- for pattern in log_patterns:
400
- files = self._search_files(pattern)
401
- if files:
402
- evidence.extend(files[:3])
403
- status = 'passed'
404
- break
405
-
406
- # Check for structured logging
407
- struct_patterns = [r'json.*log', r'structured.*log', r'log.*format']
408
- for pattern in struct_patterns:
409
- files = self._search_files(pattern, case_sensitive=False)
410
- if files:
411
- evidence.extend(files[:2])
412
- break
413
-
414
- self.controls.append(ComplianceControl(
415
- control_id='SOC2-CC7.1',
416
- framework='SOC 2',
417
- category='System Operations',
418
- title='Audit Logging',
419
- description='Verify comprehensive audit logging is implemented',
420
- status=status,
421
- evidence=evidence[:5],
422
- recommendation='Implement structured audit logging with security events (auth, access, changes)',
423
- severity='high' if status == 'failed' else 'low'
424
- ))
425
-
426
- def _check_change_management(self):
427
- """SOC 2 CC8: Check change management controls."""
428
- evidence = []
429
- status = 'failed'
430
-
431
- # Check for CI/CD configuration
432
- ci_configs = [
433
- '.github/workflows',
434
- '.gitlab-ci.yml',
435
- 'Jenkinsfile',
436
- '.circleci/config.yml',
437
- 'azure-pipelines.yml'
438
- ]
439
-
440
- for config in ci_configs:
441
- config_path = self.target_path / config
442
- if config_path.exists():
443
- evidence.append(str(config))
444
- status = 'passed'
445
- break
446
-
447
- # Check for branch protection indicators
448
- branch_patterns = [r'protected.*branch', r'require.*review', r'pull.*request']
449
- for pattern in branch_patterns:
450
- files = self._search_files(pattern, case_sensitive=False)
451
- if files:
452
- evidence.extend(files[:2])
453
- break
454
-
455
- self.controls.append(ComplianceControl(
456
- control_id='SOC2-CC8.1',
457
- framework='SOC 2',
458
- category='Change Management',
459
- title='CI/CD and Code Review',
460
- description='Verify automated deployment pipeline and code review process',
461
- status=status,
462
- evidence=evidence[:5],
463
- recommendation='Implement CI/CD pipeline with required code reviews and branch protection',
464
- severity='medium' if status == 'failed' else 'low'
465
- ))
466
-
467
- def _check_data_encryption(self):
468
- """PCI-DSS Req 3: Check encryption at rest."""
469
- evidence = []
470
- status = 'failed'
471
-
472
- encryption_patterns = [
473
- r'AES',
474
- r'encrypt',
475
- r'crypto\.createCipher',
476
- r'Fernet',
477
- r'KMS',
478
- r'encryptedField'
479
- ]
480
-
481
- for pattern in encryption_patterns:
482
- files = self._search_files(pattern)
483
- if files:
484
- evidence.extend(files[:3])
485
- status = 'passed'
486
- break
487
-
488
- self.controls.append(ComplianceControl(
489
- control_id='PCI-DSS-3.5',
490
- framework='PCI-DSS',
491
- category='Protect Stored Data',
492
- title='Encryption at Rest',
493
- description='Verify sensitive data is encrypted at rest',
494
- status=status,
495
- evidence=evidence[:5],
496
- recommendation='Implement AES-256 encryption for sensitive data storage using approved libraries',
497
- severity='critical' if status == 'failed' else 'low'
498
- ))
499
-
500
- def _check_transmission_encryption(self):
501
- """PCI-DSS Req 4: Check encryption in transit."""
502
- evidence = []
503
- status = 'failed'
504
-
505
- tls_patterns = [
506
- r'https://',
507
- r'TLS',
508
- r'SSL',
509
- r'secure.*cookie',
510
- r'HSTS'
511
- ]
512
-
513
- for pattern in tls_patterns:
514
- files = self._search_files(pattern, case_sensitive=False)
515
- if files:
516
- evidence.extend(files[:3])
517
- status = 'passed'
518
- break
519
-
520
- self.controls.append(ComplianceControl(
521
- control_id='PCI-DSS-4.1',
522
- framework='PCI-DSS',
523
- category='Encrypt Transmissions',
524
- title='TLS/HTTPS Enforcement',
525
- description='Verify TLS 1.2+ is enforced for all transmissions',
526
- status=status,
527
- evidence=evidence[:5],
528
- recommendation='Enforce HTTPS with TLS 1.2+, enable HSTS, use secure cookies',
529
- severity='critical' if status == 'failed' else 'low'
530
- ))
531
-
532
- def _check_secure_development(self):
533
- """PCI-DSS Req 6: Check secure development practices."""
534
- evidence = []
535
- status = 'failed'
536
-
537
- # Check for input validation
538
- validation_patterns = [
539
- r'validator',
540
- r'sanitize',
541
- r'escape',
542
- r'zod',
543
- r'yup',
544
- r'joi'
545
- ]
546
-
547
- for pattern in validation_patterns:
548
- files = self._search_files(pattern, case_sensitive=False)
549
- if files:
550
- evidence.extend(files[:3])
551
- status = 'passed'
552
- break
553
-
554
- self.controls.append(ComplianceControl(
555
- control_id='PCI-DSS-6.5',
556
- framework='PCI-DSS',
557
- category='Secure Development',
558
- title='Input Validation',
559
- description='Verify input validation and sanitization is implemented',
560
- status=status,
561
- evidence=evidence[:5],
562
- recommendation='Use validation libraries (Joi, Zod, validator.js) for all user input',
563
- severity='high' if status == 'failed' else 'low'
564
- ))
565
-
566
- def _check_strong_authentication(self):
567
- """PCI-DSS Req 8: Check authentication requirements."""
568
- evidence = []
569
- status = 'failed'
570
-
571
- # Check for session management
572
- session_patterns = [
573
- r'session.*timeout',
574
- r'maxAge',
575
- r'expiresIn',
576
- r'session.*expire'
577
- ]
578
-
579
- for pattern in session_patterns:
580
- files = self._search_files(pattern, case_sensitive=False)
581
- if files:
582
- evidence.extend(files[:3])
583
- status = 'passed'
584
- break
585
-
586
- self.controls.append(ComplianceControl(
587
- control_id='PCI-DSS-8.6',
588
- framework='PCI-DSS',
589
- category='Authentication',
590
- title='Session Management',
591
- description='Verify session timeout and management controls',
592
- status=status,
593
- evidence=evidence[:5],
594
- recommendation='Implement 15-minute session timeout, secure session tokens, and session invalidation on logout',
595
- severity='high' if status == 'failed' else 'low'
596
- ))
597
-
598
- def _check_audit_logging(self):
599
- """PCI-DSS Req 10: Check audit logging."""
600
- # Reuse SOC 2 logging check logic
601
- evidence = []
602
- status = 'failed'
603
-
604
- log_patterns = [r'audit', r'log.*event', r'security.*log']
605
- for pattern in log_patterns:
606
- files = self._search_files(pattern, case_sensitive=False)
607
- if files:
608
- evidence.extend(files[:3])
609
- status = 'passed'
610
- break
611
-
612
- self.controls.append(ComplianceControl(
613
- control_id='PCI-DSS-10.2',
614
- framework='PCI-DSS',
615
- category='Logging and Monitoring',
616
- title='Security Event Logging',
617
- description='Verify security events are logged with sufficient detail',
618
- status=status,
619
- evidence=evidence[:5],
620
- recommendation='Log all authentication events, access to cardholder data, and administrative actions',
621
- severity='high' if status == 'failed' else 'low'
622
- ))
623
-
624
- def _check_security_testing(self):
625
- """PCI-DSS Req 11: Check security testing."""
626
- evidence = []
627
- status = 'failed'
628
-
629
- # Check for test configuration
630
- test_patterns = [
631
- r'security.*test',
632
- r'penetration.*test',
633
- r'vulnerability.*scan'
634
- ]
635
-
636
- for pattern in test_patterns:
637
- files = self._search_files(pattern, case_sensitive=False)
638
- if files:
639
- evidence.extend(files[:3])
640
- status = 'passed'
641
- break
642
-
643
- # Check for SAST/DAST configuration
644
- sast_configs = ['.snyk', '.semgrep.yml', 'sonar-project.properties']
645
- for config in sast_configs:
646
- if (self.target_path / config).exists():
647
- evidence.append(config)
648
- if status == 'failed':
649
- status = 'warning'
650
- break
651
-
652
- self.controls.append(ComplianceControl(
653
- control_id='PCI-DSS-11.3',
654
- framework='PCI-DSS',
655
- category='Security Testing',
656
- title='Vulnerability Assessment',
657
- description='Verify regular security testing is performed',
658
- status=status,
659
- evidence=evidence[:5],
660
- recommendation='Configure SAST/DAST scanning and schedule quarterly penetration tests',
661
- severity='high' if status == 'failed' else 'low'
662
- ))
663
-
664
- def _check_hipaa_access_control(self):
665
- """HIPAA 164.312(a)(1): Access Control."""
666
- evidence = []
667
- status = 'failed'
668
-
669
- # Check for user identification
670
- auth_patterns = [r'user.*id', r'authentication', r'identity']
671
- for pattern in auth_patterns:
672
- files = self._search_files(pattern, case_sensitive=False)
673
- if files:
674
- evidence.extend(files[:3])
675
- status = 'passed'
676
- break
677
-
678
- self.controls.append(ComplianceControl(
679
- control_id='HIPAA-164.312(a)(1)',
680
- framework='HIPAA',
681
- category='Access Control',
682
- title='Unique User Identification',
683
- description='Verify unique user identification for accessing PHI',
684
- status=status,
685
- evidence=evidence[:5],
686
- recommendation='Implement unique user accounts with individual credentials for all PHI access',
687
- severity='critical' if status == 'failed' else 'low'
688
- ))
689
-
690
- def _check_hipaa_audit(self):
691
- """HIPAA 164.312(b): Audit Controls."""
692
- evidence = []
693
- status = 'failed'
694
-
695
- audit_patterns = [r'audit.*trail', r'access.*log', r'phi.*log']
696
- for pattern in audit_patterns:
697
- files = self._search_files(pattern, case_sensitive=False)
698
- if files:
699
- evidence.extend(files[:3])
700
- status = 'passed'
701
- break
702
-
703
- self.controls.append(ComplianceControl(
704
- control_id='HIPAA-164.312(b)',
705
- framework='HIPAA',
706
- category='Audit Controls',
707
- title='PHI Access Audit Trail',
708
- description='Verify audit trails for PHI access are maintained',
709
- status=status,
710
- evidence=evidence[:5],
711
- recommendation='Implement comprehensive audit logging for all PHI access with who/what/when/where',
712
- severity='critical' if status == 'failed' else 'low'
713
- ))
714
-
715
- def _check_hipaa_integrity(self):
716
- """HIPAA 164.312(c)(1): Integrity Controls."""
717
- evidence = []
718
- status = 'failed'
719
-
720
- integrity_patterns = [r'checksum', r'hash', r'signature', r'integrity']
721
- for pattern in integrity_patterns:
722
- files = self._search_files(pattern, case_sensitive=False)
723
- if files:
724
- evidence.extend(files[:3])
725
- status = 'passed'
726
- break
727
-
728
- self.controls.append(ComplianceControl(
729
- control_id='HIPAA-164.312(c)(1)',
730
- framework='HIPAA',
731
- category='Integrity',
732
- title='Data Integrity Controls',
733
- description='Verify mechanisms to protect PHI from improper alteration',
734
- status=status,
735
- evidence=evidence[:5],
736
- recommendation='Implement checksums, digital signatures, or hashing for PHI integrity verification',
737
- severity='high' if status == 'failed' else 'low'
738
- ))
739
-
740
- def _check_hipaa_authentication(self):
741
- """HIPAA 164.312(d): Authentication."""
742
- evidence = []
743
- status = 'failed'
744
-
745
- auth_patterns = [r'mfa', r'two.*factor', r'biometric', r'token.*auth']
746
- for pattern in auth_patterns:
747
- files = self._search_files(pattern, case_sensitive=False)
748
- if files:
749
- evidence.extend(files[:3])
750
- status = 'passed'
751
- break
752
-
753
- self.controls.append(ComplianceControl(
754
- control_id='HIPAA-164.312(d)',
755
- framework='HIPAA',
756
- category='Authentication',
757
- title='Person Authentication',
758
- description='Verify mechanisms to authenticate person or entity accessing PHI',
759
- status=status,
760
- evidence=evidence[:5],
761
- recommendation='Implement multi-factor authentication for all PHI access',
762
- severity='critical' if status == 'failed' else 'low'
763
- ))
764
-
765
- def _check_hipaa_transmission(self):
766
- """HIPAA 164.312(e)(1): Transmission Security."""
767
- evidence = []
768
- status = 'failed'
769
-
770
- transmission_patterns = [r'tls', r'ssl', r'https', r'encrypt.*transit']
771
- for pattern in transmission_patterns:
772
- files = self._search_files(pattern, case_sensitive=False)
773
- if files:
774
- evidence.extend(files[:3])
775
- status = 'passed'
776
- break
777
-
778
- self.controls.append(ComplianceControl(
779
- control_id='HIPAA-164.312(e)(1)',
780
- framework='HIPAA',
781
- category='Transmission Security',
782
- title='PHI Transmission Encryption',
783
- description='Verify PHI is encrypted during transmission',
784
- status=status,
785
- evidence=evidence[:5],
786
- recommendation='Enforce TLS 1.2+ for all PHI transmissions, implement end-to-end encryption',
787
- severity='critical' if status == 'failed' else 'low'
788
- ))
789
-
790
- def _check_privacy_by_design(self):
791
- """GDPR Article 25: Privacy by design."""
792
- evidence = []
793
- status = 'failed'
794
-
795
- privacy_patterns = [
796
- r'data.*minimization',
797
- r'privacy.*config',
798
- r'consent',
799
- r'gdpr'
800
- ]
801
-
802
- for pattern in privacy_patterns:
803
- files = self._search_files(pattern, case_sensitive=False)
804
- if files:
805
- evidence.extend(files[:3])
806
- status = 'passed'
807
- break
808
-
809
- self.controls.append(ComplianceControl(
810
- control_id='GDPR-25',
811
- framework='GDPR',
812
- category='Privacy by Design',
813
- title='Data Minimization',
814
- description='Verify data collection is limited to necessary purposes',
815
- status=status,
816
- evidence=evidence[:5],
817
- recommendation='Implement data minimization, purpose limitation, and privacy-by-default configurations',
818
- severity='high' if status == 'failed' else 'low'
819
- ))
820
-
821
- def _check_gdpr_security(self):
822
- """GDPR Article 32: Security of processing."""
823
- evidence = []
824
- status = 'failed'
825
-
826
- security_patterns = [r'encrypt', r'pseudonymization', r'anonymization']
827
- for pattern in security_patterns:
828
- files = self._search_files(pattern, case_sensitive=False)
829
- if files:
830
- evidence.extend(files[:3])
831
- status = 'passed'
832
- break
833
-
834
- self.controls.append(ComplianceControl(
835
- control_id='GDPR-32',
836
- framework='GDPR',
837
- category='Security',
838
- title='Pseudonymization and Encryption',
839
- description='Verify appropriate security measures for personal data',
840
- status=status,
841
- evidence=evidence[:5],
842
- recommendation='Implement encryption and pseudonymization for personal data processing',
843
- severity='high' if status == 'failed' else 'low'
844
- ))
845
-
846
- def _check_breach_notification(self):
847
- """GDPR Article 33/34: Breach notification."""
848
- evidence = []
849
- status = 'failed'
850
-
851
- breach_patterns = [
852
- r'breach.*notification',
853
- r'incident.*response',
854
- r'security.*incident'
855
- ]
856
-
857
- for pattern in breach_patterns:
858
- files = self._search_files(pattern, case_sensitive=False)
859
- if files:
860
- evidence.extend(files[:3])
861
- status = 'passed'
862
- break
863
-
864
- # Check for incident response documentation
865
- incident_docs = ['SECURITY.md', 'docs/incident-response.md', '.github/SECURITY.md']
866
- for doc in incident_docs:
867
- if (self.target_path / doc).exists():
868
- evidence.append(doc)
869
- if status == 'failed':
870
- status = 'warning'
871
- break
872
-
873
- self.controls.append(ComplianceControl(
874
- control_id='GDPR-33',
875
- framework='GDPR',
876
- category='Breach Notification',
877
- title='Incident Response Procedure',
878
- description='Verify breach notification procedures are documented',
879
- status=status,
880
- evidence=evidence[:5],
881
- recommendation='Document incident response procedures with 72-hour notification capability',
882
- severity='high' if status == 'failed' else 'low'
883
- ))
884
-
885
- def _check_data_deletion(self):
886
- """GDPR Article 17: Right to erasure."""
887
- evidence = []
888
- status = 'failed'
889
-
890
- deletion_patterns = [
891
- r'delete.*user',
892
- r'erasure',
893
- r'right.*forgotten',
894
- r'data.*deletion',
895
- r'gdpr.*delete'
896
- ]
897
-
898
- for pattern in deletion_patterns:
899
- files = self._search_files(pattern, case_sensitive=False)
900
- if files:
901
- evidence.extend(files[:3])
902
- status = 'passed'
903
- break
904
-
905
- self.controls.append(ComplianceControl(
906
- control_id='GDPR-17',
907
- framework='GDPR',
908
- category='Data Subject Rights',
909
- title='Right to Erasure',
910
- description='Verify data deletion capability is implemented',
911
- status=status,
912
- evidence=evidence[:5],
913
- recommendation='Implement complete user data deletion including all backups and third-party systems',
914
- severity='high' if status == 'failed' else 'low'
915
- ))
916
-
917
- def _check_data_export(self):
918
- """GDPR Article 20: Data portability."""
919
- evidence = []
920
- status = 'failed'
921
-
922
- export_patterns = [
923
- r'export.*data',
924
- r'data.*portability',
925
- r'download.*data',
926
- r'gdpr.*export'
927
- ]
928
-
929
- for pattern in export_patterns:
930
- files = self._search_files(pattern, case_sensitive=False)
931
- if files:
932
- evidence.extend(files[:3])
933
- status = 'passed'
934
- break
935
-
936
- self.controls.append(ComplianceControl(
937
- control_id='GDPR-20',
938
- framework='GDPR',
939
- category='Data Subject Rights',
940
- title='Data Portability',
941
- description='Verify data export capability is implemented',
942
- status=status,
943
- evidence=evidence[:5],
944
- recommendation='Implement data export in machine-readable format (JSON, CSV)',
945
- severity='medium' if status == 'failed' else 'low'
946
- ))
947
-
948
- def _search_files(self, pattern: str, case_sensitive: bool = True) -> List[str]:
949
- """Search files for pattern matches."""
950
- matches = []
951
- flags = 0 if case_sensitive else re.IGNORECASE
952
-
953
- try:
954
- for root, dirs, files in os.walk(self.target_path):
955
- # Skip common non-relevant directories
956
- dirs[:] = [d for d in dirs if d not in {
957
- 'node_modules', '.git', '__pycache__', 'venv', '.venv',
958
- 'dist', 'build', 'coverage', '.next'
959
- }]
960
-
961
- for filename in files:
962
- if filename.endswith(('.js', '.ts', '.py', '.go', '.java', '.md', '.yml', '.yaml', '.json')):
963
- file_path = Path(root) / filename
964
- try:
965
- content = file_path.read_text(encoding='utf-8', errors='ignore')
966
- if re.search(pattern, content, flags):
967
- rel_path = str(file_path.relative_to(self.target_path))
968
- matches.append(rel_path)
969
- self.files_scanned += 1
970
- except Exception:
971
- pass
972
- except Exception:
973
- pass
974
-
975
- return matches[:10] # Limit results
976
-
977
- def _calculate_compliance_score(self) -> float:
978
- """Calculate overall compliance score (0-100)."""
979
- if not self.controls:
980
- return 0.0
981
-
982
- # Weight by severity
983
- severity_weights = {'critical': 4.0, 'high': 3.0, 'medium': 2.0, 'low': 1.0}
984
- status_scores = {'passed': 1.0, 'warning': 0.5, 'failed': 0.0, 'not_applicable': None}
985
-
986
- total_weight = 0.0
987
- total_score = 0.0
988
-
989
- for control in self.controls:
990
- score = status_scores.get(control.status)
991
- if score is not None: # Skip N/A
992
- weight = severity_weights.get(control.severity, 1.0)
993
- total_weight += weight
994
- total_score += score * weight
995
-
996
- return round((total_score / total_weight) * 100, 1) if total_weight > 0 else 0.0
997
-
998
- def _get_compliance_level(self, score: float) -> str:
999
- """Get compliance level from score."""
1000
- if score >= 90:
1001
- return "COMPLIANT"
1002
- elif score >= 70:
1003
- return "PARTIALLY_COMPLIANT"
1004
- elif score >= 50:
1005
- return "NON_COMPLIANT"
1006
- return "CRITICAL_GAPS"
1007
-
1008
- def _print_summary(self, result: Dict):
1009
- """Print compliance summary."""
1010
- print("\n" + "=" * 60)
1011
- print("COMPLIANCE CHECK SUMMARY")
1012
- print("=" * 60)
1013
- print(f"Target: {result['target']}")
1014
- print(f"Framework: {result['framework'].upper()}")
1015
- print(f"Scan duration: {result['scan_duration_seconds']}s")
1016
- print(f"Compliance score: {result['compliance_score']}% ({result['compliance_level']})")
1017
- print()
1018
-
1019
- summary = result['summary']
1020
- print(f"Controls checked: {summary['total']}")
1021
- print(f" Passed: {summary['passed']}")
1022
- print(f" Failed: {summary['failed']}")
1023
- print(f" Warning: {summary['warnings']}")
1024
- print(f" N/A: {summary['not_applicable']}")
1025
- print("=" * 60)
1026
-
1027
- # Show failed controls
1028
- failed = [c for c in result['controls'] if c['status'] == 'failed']
1029
- if failed:
1030
- print("\nFailed controls requiring remediation:")
1031
- for control in failed[:5]:
1032
- print(f"\n [{control['severity'].upper()}] {control['control_id']}")
1033
- print(f" {control['title']}")
1034
- print(f" Recommendation: {control['recommendation']}")
1035
-
1036
-
1037
- def main():
1038
- """Main entry point for CLI."""
1039
- parser = argparse.ArgumentParser(
1040
- description="Check compliance against SOC 2, PCI-DSS, HIPAA, GDPR",
1041
- formatter_class=argparse.RawDescriptionHelpFormatter,
1042
- epilog="""
1043
- Examples:
1044
- %(prog)s /path/to/project
1045
- %(prog)s /path/to/project --framework soc2
1046
- %(prog)s /path/to/project --framework pci-dss --output report.json
1047
- %(prog)s . --framework all --verbose
1048
- """
1049
- )
1050
-
1051
- parser.add_argument(
1052
- "target",
1053
- help="Directory to check for compliance"
1054
- )
1055
- parser.add_argument(
1056
- "--framework", "-f",
1057
- choices=["soc2", "pci-dss", "hipaa", "gdpr", "all"],
1058
- default="all",
1059
- help="Compliance framework to check (default: all)"
1060
- )
1061
- parser.add_argument(
1062
- "--verbose", "-v",
1063
- action="store_true",
1064
- help="Enable verbose output"
1065
- )
1066
- parser.add_argument(
1067
- "--json",
1068
- action="store_true",
1069
- help="Output results as JSON"
1070
- )
1071
- parser.add_argument(
1072
- "--output", "-o",
1073
- help="Output file path"
1074
- )
1075
-
1076
- args = parser.parse_args()
1077
-
1078
- checker = ComplianceChecker(
1079
- target_path=args.target,
1080
- framework=args.framework,
1081
- verbose=args.verbose
1082
- )
1083
-
1084
- result = checker.check()
1085
-
1086
- if args.json:
1087
- output = json.dumps(result, indent=2)
1088
- if args.output:
1089
- with open(args.output, 'w') as f:
1090
- f.write(output)
1091
- print(f"\nResults written to {args.output}")
1092
- else:
1093
- print(output)
1094
- elif args.output:
1095
- with open(args.output, 'w') as f:
1096
- json.dump(result, f, indent=2)
1097
- print(f"\nResults written to {args.output}")
1098
-
1099
- # Exit with error code based on compliance level
1100
- if result.get('compliance_level') == 'CRITICAL_GAPS':
1101
- sys.exit(2)
1102
- if result.get('compliance_level') == 'NON_COMPLIANT':
1103
- sys.exit(1)
1104
-
1105
-
1106
- if __name__ == "__main__":
1107
- main()