kollabor 0.4.9__py3-none-any.whl → 0.4.15__py3-none-any.whl

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 (192) hide show
  1. agents/__init__.py +2 -0
  2. agents/coder/__init__.py +0 -0
  3. agents/coder/agent.json +4 -0
  4. agents/coder/api-integration.md +2150 -0
  5. agents/coder/cli-pretty.md +765 -0
  6. agents/coder/code-review.md +1092 -0
  7. agents/coder/database-design.md +1525 -0
  8. agents/coder/debugging.md +1102 -0
  9. agents/coder/dependency-management.md +1397 -0
  10. agents/coder/git-workflow.md +1099 -0
  11. agents/coder/refactoring.md +1454 -0
  12. agents/coder/security-hardening.md +1732 -0
  13. agents/coder/system_prompt.md +1448 -0
  14. agents/coder/tdd.md +1367 -0
  15. agents/creative-writer/__init__.py +0 -0
  16. agents/creative-writer/agent.json +4 -0
  17. agents/creative-writer/character-development.md +1852 -0
  18. agents/creative-writer/dialogue-craft.md +1122 -0
  19. agents/creative-writer/plot-structure.md +1073 -0
  20. agents/creative-writer/revision-editing.md +1484 -0
  21. agents/creative-writer/system_prompt.md +690 -0
  22. agents/creative-writer/worldbuilding.md +2049 -0
  23. agents/data-analyst/__init__.py +30 -0
  24. agents/data-analyst/agent.json +4 -0
  25. agents/data-analyst/data-visualization.md +992 -0
  26. agents/data-analyst/exploratory-data-analysis.md +1110 -0
  27. agents/data-analyst/pandas-data-manipulation.md +1081 -0
  28. agents/data-analyst/sql-query-optimization.md +881 -0
  29. agents/data-analyst/statistical-analysis.md +1118 -0
  30. agents/data-analyst/system_prompt.md +928 -0
  31. agents/default/__init__.py +0 -0
  32. agents/default/agent.json +4 -0
  33. agents/default/dead-code.md +794 -0
  34. agents/default/explore-agent-system.md +585 -0
  35. agents/default/system_prompt.md +1448 -0
  36. agents/kollabor/__init__.py +0 -0
  37. agents/kollabor/analyze-plugin-lifecycle.md +175 -0
  38. agents/kollabor/analyze-terminal-rendering.md +388 -0
  39. agents/kollabor/code-review.md +1092 -0
  40. agents/kollabor/debug-mcp-integration.md +521 -0
  41. agents/kollabor/debug-plugin-hooks.md +547 -0
  42. agents/kollabor/debugging.md +1102 -0
  43. agents/kollabor/dependency-management.md +1397 -0
  44. agents/kollabor/git-workflow.md +1099 -0
  45. agents/kollabor/inspect-llm-conversation.md +148 -0
  46. agents/kollabor/monitor-event-bus.md +558 -0
  47. agents/kollabor/profile-performance.md +576 -0
  48. agents/kollabor/refactoring.md +1454 -0
  49. agents/kollabor/system_prompt copy.md +1448 -0
  50. agents/kollabor/system_prompt.md +757 -0
  51. agents/kollabor/trace-command-execution.md +178 -0
  52. agents/kollabor/validate-config.md +879 -0
  53. agents/research/__init__.py +0 -0
  54. agents/research/agent.json +4 -0
  55. agents/research/architecture-mapping.md +1099 -0
  56. agents/research/codebase-analysis.md +1077 -0
  57. agents/research/dependency-audit.md +1027 -0
  58. agents/research/performance-profiling.md +1047 -0
  59. agents/research/security-review.md +1359 -0
  60. agents/research/system_prompt.md +492 -0
  61. agents/technical-writer/__init__.py +0 -0
  62. agents/technical-writer/agent.json +4 -0
  63. agents/technical-writer/api-documentation.md +2328 -0
  64. agents/technical-writer/changelog-management.md +1181 -0
  65. agents/technical-writer/readme-writing.md +1360 -0
  66. agents/technical-writer/style-guide.md +1410 -0
  67. agents/technical-writer/system_prompt.md +653 -0
  68. agents/technical-writer/tutorial-creation.md +1448 -0
  69. core/__init__.py +0 -2
  70. core/application.py +343 -88
  71. core/cli.py +229 -10
  72. core/commands/menu_renderer.py +463 -59
  73. core/commands/registry.py +14 -9
  74. core/commands/system_commands.py +2461 -14
  75. core/config/loader.py +151 -37
  76. core/config/service.py +18 -6
  77. core/events/bus.py +29 -9
  78. core/events/executor.py +205 -75
  79. core/events/models.py +27 -8
  80. core/fullscreen/command_integration.py +20 -24
  81. core/fullscreen/components/__init__.py +10 -1
  82. core/fullscreen/components/matrix_components.py +1 -2
  83. core/fullscreen/components/space_shooter_components.py +654 -0
  84. core/fullscreen/plugin.py +5 -0
  85. core/fullscreen/renderer.py +52 -13
  86. core/fullscreen/session.py +52 -15
  87. core/io/__init__.py +29 -5
  88. core/io/buffer_manager.py +6 -1
  89. core/io/config_status_view.py +7 -29
  90. core/io/core_status_views.py +267 -347
  91. core/io/input/__init__.py +25 -0
  92. core/io/input/command_mode_handler.py +711 -0
  93. core/io/input/display_controller.py +128 -0
  94. core/io/input/hook_registrar.py +286 -0
  95. core/io/input/input_loop_manager.py +421 -0
  96. core/io/input/key_press_handler.py +502 -0
  97. core/io/input/modal_controller.py +1011 -0
  98. core/io/input/paste_processor.py +339 -0
  99. core/io/input/status_modal_renderer.py +184 -0
  100. core/io/input_errors.py +5 -1
  101. core/io/input_handler.py +211 -2452
  102. core/io/key_parser.py +7 -0
  103. core/io/layout.py +15 -3
  104. core/io/message_coordinator.py +111 -2
  105. core/io/message_renderer.py +129 -4
  106. core/io/status_renderer.py +147 -607
  107. core/io/terminal_renderer.py +97 -51
  108. core/io/terminal_state.py +21 -4
  109. core/io/visual_effects.py +816 -165
  110. core/llm/agent_manager.py +1063 -0
  111. core/llm/api_adapters/__init__.py +44 -0
  112. core/llm/api_adapters/anthropic_adapter.py +432 -0
  113. core/llm/api_adapters/base.py +241 -0
  114. core/llm/api_adapters/openai_adapter.py +326 -0
  115. core/llm/api_communication_service.py +167 -113
  116. core/llm/conversation_logger.py +322 -16
  117. core/llm/conversation_manager.py +556 -30
  118. core/llm/file_operations_executor.py +84 -32
  119. core/llm/llm_service.py +934 -103
  120. core/llm/mcp_integration.py +541 -57
  121. core/llm/message_display_service.py +135 -18
  122. core/llm/plugin_sdk.py +1 -2
  123. core/llm/profile_manager.py +1183 -0
  124. core/llm/response_parser.py +274 -56
  125. core/llm/response_processor.py +16 -3
  126. core/llm/tool_executor.py +6 -1
  127. core/logging/__init__.py +2 -0
  128. core/logging/setup.py +34 -6
  129. core/models/resume.py +54 -0
  130. core/plugins/__init__.py +4 -2
  131. core/plugins/base.py +127 -0
  132. core/plugins/collector.py +23 -161
  133. core/plugins/discovery.py +37 -3
  134. core/plugins/factory.py +6 -12
  135. core/plugins/registry.py +5 -17
  136. core/ui/config_widgets.py +128 -28
  137. core/ui/live_modal_renderer.py +2 -1
  138. core/ui/modal_actions.py +5 -0
  139. core/ui/modal_overlay_renderer.py +0 -60
  140. core/ui/modal_renderer.py +268 -7
  141. core/ui/modal_state_manager.py +29 -4
  142. core/ui/widgets/base_widget.py +7 -0
  143. core/updates/__init__.py +10 -0
  144. core/updates/version_check_service.py +348 -0
  145. core/updates/version_comparator.py +103 -0
  146. core/utils/config_utils.py +685 -526
  147. core/utils/plugin_utils.py +1 -1
  148. core/utils/session_naming.py +111 -0
  149. fonts/LICENSE +21 -0
  150. fonts/README.md +46 -0
  151. fonts/SymbolsNerdFont-Regular.ttf +0 -0
  152. fonts/SymbolsNerdFontMono-Regular.ttf +0 -0
  153. fonts/__init__.py +44 -0
  154. {kollabor-0.4.9.dist-info → kollabor-0.4.15.dist-info}/METADATA +54 -4
  155. kollabor-0.4.15.dist-info/RECORD +228 -0
  156. {kollabor-0.4.9.dist-info → kollabor-0.4.15.dist-info}/top_level.txt +2 -0
  157. plugins/agent_orchestrator/__init__.py +39 -0
  158. plugins/agent_orchestrator/activity_monitor.py +181 -0
  159. plugins/agent_orchestrator/file_attacher.py +77 -0
  160. plugins/agent_orchestrator/message_injector.py +135 -0
  161. plugins/agent_orchestrator/models.py +48 -0
  162. plugins/agent_orchestrator/orchestrator.py +403 -0
  163. plugins/agent_orchestrator/plugin.py +976 -0
  164. plugins/agent_orchestrator/xml_parser.py +191 -0
  165. plugins/agent_orchestrator_plugin.py +9 -0
  166. plugins/enhanced_input/box_styles.py +1 -0
  167. plugins/enhanced_input/color_engine.py +19 -4
  168. plugins/enhanced_input/config.py +2 -2
  169. plugins/enhanced_input_plugin.py +61 -11
  170. plugins/fullscreen/__init__.py +6 -2
  171. plugins/fullscreen/example_plugin.py +1035 -222
  172. plugins/fullscreen/setup_wizard_plugin.py +592 -0
  173. plugins/fullscreen/space_shooter_plugin.py +131 -0
  174. plugins/hook_monitoring_plugin.py +436 -78
  175. plugins/query_enhancer_plugin.py +66 -30
  176. plugins/resume_conversation_plugin.py +1494 -0
  177. plugins/save_conversation_plugin.py +98 -32
  178. plugins/system_commands_plugin.py +70 -56
  179. plugins/tmux_plugin.py +154 -78
  180. plugins/workflow_enforcement_plugin.py +94 -92
  181. system_prompt/default.md +952 -886
  182. core/io/input_mode_manager.py +0 -402
  183. core/io/modal_interaction_handler.py +0 -315
  184. core/io/raw_input_processor.py +0 -946
  185. core/storage/__init__.py +0 -5
  186. core/storage/state_manager.py +0 -84
  187. core/ui/widget_integration.py +0 -222
  188. core/utils/key_reader.py +0 -171
  189. kollabor-0.4.9.dist-info/RECORD +0 -128
  190. {kollabor-0.4.9.dist-info → kollabor-0.4.15.dist-info}/WHEEL +0 -0
  191. {kollabor-0.4.9.dist-info → kollabor-0.4.15.dist-info}/entry_points.txt +0 -0
  192. {kollabor-0.4.9.dist-info → kollabor-0.4.15.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,1027 @@
1
+ <!-- Dependency Audit skill - security and compliance investigation of project dependencies -->
2
+
3
+ dependency-audit mode: READ ONLY SECURITY AUDIT
4
+
5
+ when this skill is active, you follow systematic dependency investigation.
6
+ this is a comprehensive guide to auditing project dependencies.
7
+
8
+
9
+ PHASE 0: ENVIRONMENT AND PACKAGE MANAGER VERIFICATION
10
+
11
+ before auditing ANY dependencies, identify the package manager and tools.
12
+
13
+
14
+ identify the package manager
15
+
16
+ check for python package managers:
17
+ <terminal>ls -la | grep -E "(requirements\.txt|pyproject\.toml|setup\.py|Pipfile|poetry\.lock|pyproject\.toml)"</terminal>
18
+
19
+ check for node package managers:
20
+ <terminal>ls -la | grep -E "(package\.json|package-lock\.json|yarn\.lock|pnpm-lock\.yaml)"</terminal>
21
+
22
+ check for rust:
23
+ <terminal>ls -la | grep -E "Cargo\.toml|Cargo\.lock"</terminal>
24
+
25
+ check for go:
26
+ <terminal>ls -la | grep -E "go\.mod|go\.sum"</terminal>
27
+
28
+ check for java/maven:
29
+ <terminal>ls -la | grep -E "pom\.xml"</terminal>
30
+
31
+ check for java/gradle:
32
+ <terminal>ls -la | grep -E "build\.gradle|gradle\.lockfile"</terminal>
33
+
34
+ check for ruby:
35
+ <terminal>ls -la | grep -E "Gemfile|gemfile\.lock"</terminal>
36
+
37
+ check for php/composer:
38
+ <terminal>ls -la | grep -E "composer\.json|composer\.lock"</terminal>
39
+
40
+
41
+ verify audit tools availability
42
+
43
+ python vulnerability scanners:
44
+ <terminal>which pip-audit</terminal>
45
+ <terminal>pip-audit --version 2>/dev/null || echo "pip-audit not installed"</terminal>
46
+
47
+ <terminal>which safety</terminal>
48
+ <terminal>safety --version 2>/dev/null || echo "safety not installed"</terminal>
49
+
50
+ <terminal>which bandit</terminal>
51
+ <terminal>bandit --version 2>/dev/null || echo "bandit not installed"</terminal>
52
+
53
+ node vulnerability scanners:
54
+ <terminal>which npm</terminal>
55
+ <terminal>npm --version</terminal>
56
+
57
+ <terminal>which yarn</terminal>
58
+ <terminal>yarn --version 2>/dev/null || echo "yarn not installed"</terminal>
59
+
60
+ general scanners:
61
+ <terminal>which snyk</terminal>
62
+ <terminal>snyk --version 2>/dev/null || echo "snyk not installed"</terminal>
63
+
64
+ <terminal>which grype</terminal>
65
+ <terminal>grype --version 2>/dev/null || echo "grype not installed"</terminal>
66
+
67
+ <terminal>which trivy</terminal>
68
+ <terminal>trivy --version 2>/dev/null || echo "trivy not installed"</terminal>
69
+
70
+
71
+ install missing tools if authorized
72
+
73
+ for python projects:
74
+ <terminal>pip install pip-audit safety bandit 2>/dev/null || echo "install failed"</terminal>
75
+
76
+ for container scanning:
77
+ <terminal>brew install grype trivy 2>/dev/null || echo "install failed"</terminal>
78
+
79
+ note: research agent reports tool availability, does not force installation.
80
+
81
+
82
+ verify lock files exist
83
+
84
+ lock files are critical for accurate audits:
85
+
86
+ python:
87
+ <terminal>ls -la pipenv.lock poetry.lock requirements.txt 2>/dev/null</terminal>
88
+
89
+ node:
90
+ <terminal>ls -la package-lock.json yarn.lock pnpm-lock.yaml 2>/dev/null</terminal>
91
+
92
+ rust:
93
+ <terminal>ls -la Cargo.lock 2>/dev/null</terminal>
94
+
95
+ go:
96
+ <terminal>ls -la go.sum 2>/dev/null</terminal>
97
+
98
+
99
+ PHASE 1: DEPENDENCY INVENTORY
100
+
101
+
102
+ list all direct dependencies
103
+
104
+ python - requirements.txt:
105
+ <read><file>requirements.txt</file></read>
106
+
107
+ python - pyproject.toml:
108
+ <terminal>cat pyproject.toml 2>/dev/null | grep -A50 "dependencies"</terminal>
109
+
110
+ python - setup.py:
111
+ <terminal>cat setup.py 2>/dev/null | grep -A30 "install_requires"</terminal>
112
+
113
+ python - pipenv:
114
+ <terminal>cat Pipfile 2>/dev/null | grep -A20 "\[packages\]"</terminal>
115
+
116
+ python - poetry:
117
+ <terminal>cat pyproject.toml 2>/dev/null | grep -A50 "\[tool.poetry.dependencies\]"</terminal>
118
+
119
+ node - package.json:
120
+ <terminal>cat package.json 2>/dev/null | grep -A100 '"dependencies"'</terminal>
121
+
122
+ rust - cargo.toml:
123
+ <terminal>cat Cargo.toml 2>/dev/null | grep -A50 "\[dependencies\]"</terminal>
124
+
125
+ go - go.mod:
126
+ <terminal>cat go.mod 2>/dev/null | grep -A100 "require"</terminal>
127
+
128
+
129
+ list all transitive dependencies
130
+
131
+ python:
132
+ <terminal>pip list 2>/dev/null | head -50</terminal>
133
+
134
+ <terminal>pip freeze 2>/dev/null | head -50</terminal>
135
+
136
+ node:
137
+ <terminal>npm list 2>/dev/null | head -50</terminal>
138
+
139
+ <terminal>npm list --all 2>/dev/null | wc -l</terminal>
140
+
141
+ rust:
142
+ <terminal>cargo tree 2>/dev/null | head -50</terminal>
143
+
144
+ go:
145
+ <terminal>go list -m all 2>/dev/null | head -50</terminal>
146
+
147
+
148
+ count dependencies by category
149
+
150
+ python:
151
+ <terminal>pip list 2>/dev/null | wc -l</terminal>
152
+
153
+ <terminal>pip freeze 2>/dev/null | wc -l</terminal>
154
+
155
+ node:
156
+ <terminal>npm list --all 2>/dev/null | grep -v "extraneous" | wc -l</terminal>
157
+
158
+ count direct dependencies:
159
+ <terminal>cat package.json 2>/dev/null | grep -A100 '"dependencies"' | grep '":' | grep -v '"dependencies"' | wc -l</terminal>
160
+
161
+ count dev dependencies:
162
+ <terminal>cat package.json 2>/dev/null | grep -A100 '"devDependencies"' | grep '":' | grep -v '"devDependencies"' | wc -l</terminal>
163
+
164
+
165
+ document dependency inventory
166
+
167
+ direct dependencies: [count]
168
+ transitive dependencies: [count]
169
+ total: [count]
170
+
171
+ largest dependency trees:
172
+ - [package] - [transitive count]
173
+
174
+ dependency sources:
175
+ - [registry 1] - [count]
176
+ - [registry 2] - [count]
177
+
178
+
179
+ PHASE 2: VULNERABILITY SCANNING
180
+
181
+
182
+ run pip-audit for python projects
183
+
184
+ basic scan:
185
+ <terminal>pip-audit 2>/dev/null || pip-audit --requirement requirements.txt 2>/dev/null</terminal>
186
+
187
+ scan with lock file:
188
+ <terminal>pip-audit --requirement requirements.txt 2>/dev/null</terminal>
189
+
190
+ scan installed packages:
191
+ <terminal>pip-audit --local 2>/dev/null</terminal>
192
+
193
+ detailed output:
194
+ <terminal>pip-audit --format json 2>/dev/null</terminal>
195
+
196
+ strict mode (fail on any vuln):
197
+ <terminal>pip-audit --strict 2>/dev/null</terminal>
198
+
199
+
200
+ run safety for python projects
201
+
202
+ basic scan:
203
+ <terminal>safety check --file requirements.txt 2>/dev/null || safety check 2>/dev/null</terminal>
204
+
205
+ json output:
206
+ <terminal>safety check --json 2>/dev/null</terminal>
207
+
208
+ detailed report:
209
+ <terminal>safety check --full-report 2>/dev/null</terminal>
210
+
211
+ scan installed packages:
212
+ <terminal>safety check 2>/dev/null</terminal>
213
+
214
+
215
+ run npm audit for node projects
216
+
217
+ basic scan:
218
+ <terminal>npm audit 2>/dev/null</terminal>
219
+
220
+ json output:
221
+ <terminal>npm audit --json 2>/dev/null</terminal>
222
+
223
+ fixable vulnerabilities:
224
+ <terminal>npm audit --fix --dry-run 2>/dev/null</terminal>
225
+
226
+ production dependencies only:
227
+ <terminal>npm audit --production 2>/dev/null>
228
+
229
+
230
+ run yarn audit for node projects
231
+
232
+ basic scan:
233
+ <terminal>yarn audit 2>/dev/null</terminal>
234
+
235
+ json output:
236
+ <terminal>yarn audit --json 2>/dev/null</terminal>
237
+
238
+
239
+ run cargo audit for rust projects
240
+
241
+ <terminal>cargo audit 2>/dev/null || echo "cargo-audit not installed"</terminal>
242
+
243
+ install if needed:
244
+ <terminal>cargo install cargo-audit 2>/dev/null</terminal>
245
+
246
+
247
+ run go vulnerability checks
248
+
249
+ <terminal>govulncheck ./... 2>/dev/null || echo "govulncheck not installed"</terminal>
250
+
251
+
252
+ run snyk if available
253
+
254
+ authenticate first:
255
+ <terminal>snyk auth 2>/dev/null || echo "authentication required"</terminal>
256
+
257
+ test for vulnerabilities:
258
+ <terminal>snyk test 2>/dev/null</terminal>
259
+
260
+ monitor dependencies:
261
+ <terminal>snyk monitor 2>/v/null || echo "monitoring requires auth"</terminal>
262
+
263
+
264
+ run container scanning if dockerfiles exist
265
+
266
+ <terminal>find . -name "Dockerfile*" -o -name "docker-compose*" | head -5</terminal>
267
+
268
+ with grype:
269
+ <terminal>grype . 2>/dev/null || echo "grype scan failed"</terminal>
270
+
271
+ with trivy:
272
+ <terminal>trivy fs . 2>/dev/null || echo "trivy scan failed"</terminal>
273
+
274
+
275
+ document vulnerability findings
276
+
277
+ critical: [count] - [package names]
278
+ high: [count] - [package names]
279
+ medium: [count] - [package names]
280
+ low: [count] - [package names]
281
+
282
+ vulnerable packages:
283
+ - [package] - [version] - [cve id] - [severity] - [fix available]
284
+
285
+
286
+ PHASE 3: LICENSE COMPLIANCE
287
+
288
+
289
+ extract license information
290
+
291
+ python:
292
+ <terminal>pip show [package-name] 2>/dev/null | grep -i license</terminal>
293
+
294
+ <terminal>pip-licenses 2>/dev/null || pip install pip-licenses 2>/dev/null && pip-licenses 2>/dev/null</terminal>
295
+
296
+ <terminal>pip-licenses --format=json 2>/dev/null</terminal>
297
+
298
+ node:
299
+ <terminal>npm list --json --depth=0 2>/dev/null | grep -i license</terminal>
300
+
301
+ <terminal>cat package.json 2>/dev/null | grep -A3 "license"</terminal>
302
+
303
+ <terminal>npm ls --long 2>/dev/null | grep -i license</terminal>
304
+
305
+ rust:
306
+ <terminal>cato about 2>/dev/null | grep -i license</terminal>
307
+
308
+
309
+ identify license types in use
310
+
311
+ python:
312
+ <terminal>pip-licenses --from=classification 2>/dev/null</terminal>
313
+
314
+ <terminal>pip-licenses --only-classifier 2>/dev/null</terminal>
315
+
316
+ common license types to look for:
317
+ - mit (permissive, widely compatible)
318
+ - apache-2.0 (permissive, patent clause)
319
+ - bsd-3-clause (permissive)
320
+ - gplv3 (copyleft, requires derivative works to be gpl)
321
+ - lgplv3 (lesser gpl, allows linking)
322
+ - mpl-2.0 (weak copyleft)
323
+ - unlicense (public domain)
324
+ - proprietary/commercial (restrictive)
325
+
326
+
327
+ check for problematic licenses
328
+
329
+ gpl/agpl/lgpl detection:
330
+ <terminal>pip-licenses --grep=gpl 2>/dev/null || echo "pip-licenses not available"</terminal>
331
+
332
+ <terminal>pip-licenses --grep=affero 2>/dev/null</terminal>
333
+
334
+ sspl (server side public license) detection:
335
+ <terminal>grep -ri "sspl" package.json README.md LICENSE* 2>/dev/null</terminal>
336
+
337
+ proprietary licenses:
338
+ <terminal>pip-licenses --fail-on="proprietary" --format=csv 2>/dev/null || echo "check failed"</terminal>
339
+
340
+
341
+ generate license report
342
+
343
+ python - full license report:
344
+ <terminal>pip-licenses --format=markdown --output-file=LICENSES.md 2>/dev/null</terminal>
345
+
346
+ <terminal>pip-licenses --format=csv --output-file=LICENSES.csv 2>/dev/null</terminal>
347
+
348
+ node:
349
+ <terminal>npm install -g license-report 2>/dev/null && license-report --output=csv 2>/dev/null</terminal>
350
+
351
+ <terminal>npm install -g nlf && nlf 2>/dev/null</terminal>
352
+
353
+
354
+ check project license compatibility
355
+
356
+ read project license:
357
+ <read><file>LICENSE</file></read>
358
+
359
+ <read><file>LICENSE.txt</file></read>
360
+
361
+ <read><file>LICENSE.md</file></read>
362
+
363
+ check license declaration:
364
+ <terminal>cat pyproject.toml 2>/dev/null | grep -i license</terminal>
365
+
366
+ <terminal>cat package.json 2>/dev/null | grep -i license</terminal>
367
+
368
+
369
+ document license findings
370
+
371
+ project license: [license type]
372
+
373
+ dependency licenses:
374
+ - mit: [count]
375
+ - apache-2.0: [count]
376
+ - bsd: [count]
377
+ - gpl/gplv3/lgpl: [count]
378
+ - other: [count]
379
+
380
+ compatibility concerns:
381
+ - [package] - [license] - [compatibility issue]
382
+
383
+
384
+ PHASE 4: DEPENDENCY FRESHNESS
385
+
386
+
387
+ identify outdated dependencies
388
+
389
+ python:
390
+ <terminal>pip list --outdated 2>/dev/null | head -30</terminal>
391
+
392
+ <terminal>pip list --outdated --format=json 2>/dev/null</terminal>
393
+
394
+ node:
395
+ <terminal>npm outdated 2>/dev/null | head -30</terminal>
396
+
397
+ <terminal>yarn outdated 2>/dev/null | head -30</terminal>
398
+
399
+ rust:
400
+ <terminal>cargo outdated 2>/dev/null || echo "cargo-outdated not installed"</terminal>
401
+
402
+ go:
403
+ <terminal>go list -u -m all 2>/dev/null | head -30</terminal>
404
+
405
+
406
+ check version pinning
407
+
408
+ python - analyze version constraints:
409
+ <terminal>grep -E "^[a-zA-Z].*==" requirements.txt 2>/dev/null | head -20</terminal>
410
+
411
+ <terminal>grep -E "^[a-zA-Z].*[>=<>{]" requirements.txt 2>/dev/null | head -20</terminal>
412
+
413
+ <terminal>grep -E "^[a-zA-Z].*[^=><{]$]" requirements.txt 2>/dev/null | head -20</terminal>
414
+
415
+ node - analyze semver ranges:
416
+ <terminal>cat package.json 2>/dev/null | grep -A50 '"dependencies"' | grep -E '\^|~|\*|>=|x'</terminal>
417
+
418
+ check for caret (^) - minor updates allowed:
419
+ <terminal>cat package.json 2>/dev/null | grep '": "\^' | head -20</terminal>
420
+
421
+ check for tilde (~) - patch updates only:
422
+ <terminal>cat package.json 2>/dev/null | grep '": "~' | head -20</terminal>
423
+
424
+ check for wildcard (*) - any version:
425
+ <terminal>cat package.json 2>/dev/null | grep '": "\*'|'": "*"' | head -20</terminal>
426
+
427
+
428
+ check for unmaintained dependencies
429
+
430
+ python:
431
+ <terminal>pip index versions [package-name] 2>/dev/null | grep -E "WARNING:|Available versions:"</terminal>
432
+
433
+ check last published date on pypi for critical packages
434
+
435
+ node:
436
+ <terminal>npm view [package-name] time 2>/dev/null | tail -5</terminal>
437
+
438
+ <terminal>npm view [package-name] --json 2>/dev/null | grep -E '"time"|"version"'</terminal>
439
+
440
+
441
+ check for deprecated packages
442
+
443
+ python:
444
+ <terminal>pip show [package-name] 2>/dev/null | grep -i "warning:\|deprecated"</terminal>
445
+
446
+ node:
447
+ <terminal>npm view [package-name] 2>/dev/null | grep -i "deprecated"</terminal>
448
+
449
+ <terminal>npm deprecate 2>/dev/null || echo "check npm registry directly"</terminal>
450
+
451
+
452
+ check for security advisories
453
+
454
+ python:
455
+ <terminal>pip-audit --format json 2>/dev/null | grep -i "advisory"</terminal>
456
+
457
+ node:
458
+ <terminal>npm audit --json 2>/dev/null | grep -i "advisory"</terminal>
459
+
460
+
461
+ check for abandoned projects
462
+
463
+ indicators:
464
+ - no commits in 2+ years
465
+ - open issues not addressed
466
+ - no response to prs
467
+ - depends on unmaintained transitive deps
468
+
469
+ check github activity:
470
+ <terminal>gh repo view [owner]/[repo] 2>/dev/null || echo "gh cli not available"</terminal>
471
+
472
+
473
+ document freshness findings
474
+
475
+ severely outdated (major versions behind):
476
+ - [package] - [current] - [latest]
477
+
478
+ moderately outdated (minor versions behind):
479
+ - [package] - [current] - [latest]
480
+
481
+ unmaintained packages:
482
+ - [package] - [last update date] - [impact]
483
+
484
+ deprecated packages:
485
+ - [package] - [replacement]
486
+
487
+
488
+ PHASE 5: UNUSED DEPENDENCY ANALYSIS
489
+
490
+
491
+ identify potentially unused dependencies
492
+
493
+ python:
494
+ <terminal>pip install pipdeptree 2>/dev/null</terminal>
495
+
496
+ <terminal>pipdeptree 2>/dev/null | grep -v "==" | head -50</terminal>
497
+
498
+ find deps not imported anywhere:
499
+ <terminal>grep -r "^import\|^from" --include="*.py" . 2>/dev/null | sed 's/from //' | sed 's/ import.*//' | sort | uniq</terminal>
500
+
501
+ node:
502
+ <terminal>npm install -g depcheck 2>/dev/null</terminal>
503
+
504
+ <terminal>depcheck 2>/dev/null || echo "depcheck not available"</terminal>
505
+
506
+ <terminal>npx depcheck 2>/dev/null</terminal>
507
+
508
+ <terminal>npm ls --depth=0 2>/dev/null</terminal>
509
+
510
+
511
+ find dev dependencies in production
512
+
513
+ python:
514
+ <terminal>grep -i "pytest\|test\|lint\|black\|flake8\|mypy" requirements.txt 2>/dev/null</terminal>
515
+
516
+ node:
517
+ <terminal>cat package.json 2>/dev/null | grep -A20 '"dependencies"' | grep -E "jest|test|vitest|cypress|eslint|prettier|webpack"</terminal>
518
+
519
+
520
+ find duplicate functionality
521
+
522
+ multiple http clients:
523
+ <terminal>grep -r "requests\|httpx\|urllib\|aiohttp" --include="*.py" . 2>/dev/null | wc -l</terminal>
524
+
525
+ multiple cli frameworks:
526
+ <terminal>grep -r "click\|typer\|argparse\|fire" --include="*.py" . 2>/dev/null | wc -l</terminal>
527
+
528
+ multiple testing frameworks:
529
+ <terminal>grep -r "pytest\|unittest\|nose" --include="*.py" . 2>/dev/null | wc -l</terminal>
530
+
531
+ node:
532
+ <terminal>cat package.json 2>/dev/null | grep -E "lodash|underscore|ramda"</terminal>
533
+
534
+ <terminal>cat package.json 2>/dev/null | grep -E "moment|date-fns|dayjs|luxon"</terminal>
535
+
536
+
537
+ document unused dependencies
538
+
539
+ potentially unused:
540
+ - [package] - [not imported, 0 references]
541
+
542
+ dev deps in production:
543
+ - [package] - [should be devdependency]
544
+
545
+ duplicate functionality:
546
+ - [package 1] + [package 2] - [same purpose]
547
+
548
+
549
+ PHASE 6: DEPENDENCY SIZE ANALYSIS
550
+
551
+
552
+ analyze bundle/package size
553
+
554
+ node:
555
+ <terminal>npm install -g cost-of-modules 2>/dev/null</terminal>
556
+
557
+ <terminal>cost-of-modules 2>/dev/null || npx cost-of-modules 2>/dev/null</terminal>
558
+
559
+ <terminal>du -sh node_modules/ 2>/dev/null</terminal>
560
+
561
+ find largest packages:
562
+ <terminal>du -sh node_modules/*/ 2>/dev/null | sort -rh | head -20</terminal>
563
+
564
+ python:
565
+ <terminal>pip install pip-disk 2>/dev/null</terminal>
566
+
567
+ <terminal>pip disk 2>/dev/null || echo "pip-disk not available"</terminal>
568
+
569
+ find largest packages:
570
+ <terminal>pip show -f [package-name] 2>/dev/null | grep "Location:" | head -1</terminal>
571
+
572
+ <terminal>du -sh $(pip show [package-name] 2>/dev/null | grep Location: | cut -d' ' -f2)/*/[package-name]* 2>/dev/null</terminal>
573
+
574
+
575
+ find oversized dependencies
576
+
577
+ node:
578
+ <terminal>ls -lh node_modules/ | head -30</terminal>
579
+
580
+ check for webpacked dependencies:
581
+ <terminal>find node_modules -name "*.umd.min.js" -o -name "*.bundle.js" 2>/dev/null | xargs ls -lh 2>/dev/null | head -20</terminal>
582
+
583
+
584
+ check for tree-shaking potential
585
+
586
+ node:
587
+ <terminal>cat package.json 2>/dev/null | grep -A50 '"dependencies"' | grep -E "lodash|moment"</terminal>
588
+
589
+ lodash individual imports vs full:
590
+ <terminal>grep -r "from 'lodash'" --include="*.js" --include="*.ts" . 2>/dev/null | wc -l</terminal>
591
+
592
+ <terminal>grep -r "from 'lodash/" --include="*.js" --include="*.ts" . 2>/dev/null | wc -l</terminal>
593
+
594
+
595
+ document size findings
596
+
597
+ total dependency size: [disk usage]
598
+
599
+ largest packages:
600
+ - [package] - [size] - [purpose]
601
+
602
+ optimization opportunities:
603
+ - [package] - [lighter alternative available]
604
+
605
+
606
+ PHASE 7: TRANSITIVE DEPENDENCY ANALYZIS
607
+
608
+
609
+ visualize dependency trees
610
+
611
+ python:
612
+ <terminal>pipdeptree --graph 2>/dev/null | head -50</terminal>
613
+
614
+ <terminal>pipdeptree --packages 2>/dev/null | head -30</terminal>
615
+
616
+ node:
617
+ <terminal>npm ls 2>/dev/null | head -50</terminal>
618
+
619
+ <terminal>npm ls --json 2>/dev/null | head -100</terminal>
620
+
621
+ rust:
622
+ <terminal>cargo tree 2>/dev/null | head -50</terminal>
623
+
624
+ <terminal>cargo tree --duplicates 2>/dev/null</terminal>
625
+
626
+
627
+ find duplicate dependencies
628
+
629
+ rust:
630
+ <terminal>cargo tree --duplicates 2>/dev/null</terminal>
631
+
632
+ node:
633
+ <terminal>npm ls --json 2>/dev/null | grep -E '"deduped"' | wc -l</terminal>
634
+
635
+ python:
636
+ <terminal>pipdeptree --json 2>/dev/null | grep -E '"key".*:"[^"]+",' | sort | uniq -d</terminal>
637
+
638
+
639
+ find conflicting version requirements
640
+
641
+ python:
642
+ <terminal>pip install pip-check 2>/dev/null</terminal>
643
+
644
+ <terminal>pip-check 2>/dev/null || echo "pip-check not available"</terminal>
645
+
646
+ node:
647
+ <terminal>npm ls --json 2>/dev/null | grep -A2 '"extraneous"'</terminal>
648
+
649
+
650
+ identify dependency hell risks
651
+
652
+ circular dependency indicators:
653
+ <terminal>pipdeptree --graph 2>/dev/null | grep -B2 -A2 "cycle"</terminal>
654
+
655
+ version conflicts:
656
+ <terminal>pipdeptree --packages --json 2>/dev/null | python -c "import sys,json; d=json.load(sys.stdin); [print(p['key']) for p in d if p.get('dependencies')]" 2>/dev/null</terminal>
657
+
658
+
659
+ document transitive issues
660
+
661
+ dependency depth:
662
+ - shallowest: [package] - [depth]
663
+ - deepest: [package] - [depth]
664
+
665
+ duplicate versions:
666
+ - [package] - [count of different versions]
667
+
668
+ version conflicts:
669
+ - [package 1] requires [package 2] [version a]
670
+ - [package 3] requires [package 2] [version b]
671
+
672
+
673
+ PHASE 8: SECURITY BEST PRACTICES REVIEW
674
+
675
+
676
+ check for hardcoded credentials in dependencies
677
+
678
+ scan node_modules for secrets:
679
+ <terminal>grep -r "api_key\|apikey\|api-key\|password\|secret\|token" node_modules/ 2>/dev/null | grep -v node_modules/.bin | head -20</terminal>
680
+
681
+ scan site-packages for secrets:
682
+ <terminal>grep -r "api_key\|apikey\|api-key\|password\|secret\|token" $(pip show pip 2>/dev/null | grep Location | cut -d' ' -f2) 2>/dev/null | head -20</terminal>
683
+
684
+
685
+ check for known malicious packages
686
+
687
+ python:
688
+ <terminal>pip-audit --no-deps 2>/dev/null</terminal>
689
+
690
+ cross-reference with:
691
+ - https://github.com/pypa/advisory-database
692
+ - https://pysec.io
693
+
694
+ node:
695
+ <terminal>npm audit 2>/dev/null</terminal>
696
+
697
+ cross-reference with:
698
+ - https://github.com/nodejs/security-wg
699
+ - https://npmjs.com/advisories
700
+
701
+
702
+ check for typosquatting attacks
703
+
704
+ look for suspicious package names:
705
+ - slight misspellings of popular packages
706
+ - packages with similar names to official ones
707
+
708
+ python:
709
+ <terminal>pip list 2>/dev/null | grep -E "requets|reqeusts|djanggo|flaskk|numpyy"</terminal>
710
+
711
+ node:
712
+ <terminal>npm ls 2>/dev/null | grep -E "expreess|reactt|nodemonn|babel|wekpack"</terminal>
713
+
714
+ verify official packages:
715
+ <terminal>npm view [package-name] 2>/dev/null | grep -E "author|maintainer|license"</terminal>
716
+
717
+
718
+ check for scripts in dependencies
719
+
720
+ node - examine install scripts:
721
+ <terminal>cat node_modules/[package-name]/package.json 2>/dev/null | grep -A10 '"scripts"'</terminal>
722
+
723
+ <terminal>find node_modules -name "package.json" -exec grep -l "preinstall\|postinstall\|prepublish" {} \; 2>/dev/null | head -20</terminal>
724
+
725
+ python - check for post-install hooks:
726
+ <terminal>pip show -f [package-name] 2>/dev/null | grep -E "\.exe$|\.sh$|\.bat$"</terminal>
727
+
728
+
729
+ document security concerns
730
+
731
+ critical vulnerabilities:
732
+ - [cve-id] - [package] - [severity] - [exploitability]
733
+
734
+ suspicious packages:
735
+ - [package] - [reason for concern]
736
+
737
+ risky scripts:
738
+ - [package] - [script type] - [what it does]
739
+
740
+
741
+ PHASE 9: SUPPLY CHAIN ANALYSIS
742
+
743
+
744
+ check for signed packages
745
+
746
+ python:
747
+ <terminal>pip install -q certifi 2>/dev/null</terminal>
748
+
749
+ check if downloads are verified:
750
+ <terminal>pip install [package-name] --dry-run --verbose 2>/dev/null | grep -i "verified\|signed"</terminal>
751
+
752
+ node:
753
+ <terminal>npm config get registry 2>/dev/null</terminal>
754
+
755
+ <terminal>npm audit --json 2>/dev/null | grep -i "integrity"</terminal>
756
+
757
+
758
+ check for checksum verification
759
+
760
+ verify package integrity:
761
+ <terminal>cat package-lock.json 2>/dev/null | grep -i "integrity\|sha512"</terminal>
762
+
763
+ <terminal>cat yarn.lock 2>/dev/null | grep -i "checksum\|integrity"</terminal>
764
+
765
+ <terminal>cat Cargo.lock 2>/dev/null | grep -i "checksum"</terminal>
766
+
767
+ <terminal>cat go.sum 2>/dev/null | head -20</terminal>
768
+
769
+
770
+ check for provenance
771
+
772
+ node - npm provenance:
773
+ <terminal>npm view [package-name] --json 2>/dev/null | grep -E "provenance|attestation"</terminal>
774
+
775
+ python - PyPI provenance:
776
+ check package page on pypi.org for provenance badges
777
+
778
+
779
+ identify subdependency risks
780
+
781
+ scan for dependencies from unknown sources:
782
+ <terminal>pipdeptree --json 2>/dev/null | python -c "import sys,json; d=json.load(sys.stdin); deps=set(); [deps.add(p.get('package_name','')) for p in d]; print('\n'.join(sorted(deps)))" 2>/dev/null</terminal>
783
+
784
+ check registry sources:
785
+ <terminal>cat .npmrc 2>/dev/null | grep -i registry</terminal>
786
+
787
+ <terminal>cat pip.conf 2>/dev/null || cat pip.ini 2>/dev/null || cat ~/.pip/pip.conf 2>/dev/null | grep -i index-url</terminal>
788
+
789
+
790
+ document supply chain status
791
+
792
+ verified packages: [count] / [total]
793
+
794
+ unsigned packages:
795
+ - [package] - [no signature]
796
+
797
+ registry security:
798
+ - source registry: [url]
799
+ - tls: [yes/no]
800
+ - verified: [yes/no]
801
+
802
+
803
+ PHASE 10: COMPLIANCE AND POLICY CHECKS
804
+
805
+
806
+ check against organizational policies
807
+
808
+ common policy violations:
809
+
810
+ gpl/agpl in commercial products:
811
+ <terminal>pip-licenses --grep=gpl --fail-on="gpl" 2>/dev/null || echo "no gpl found"</terminal>
812
+
813
+ weak cryptographic algorithms:
814
+ <terminal>grep -r "md5\|sha1" --include="*.py" --include="*.js" . 2>/dev/null | wc -l</terminal>
815
+
816
+ deprecated tls versions:
817
+ <terminal>grep -r "tlsv1\|tlsv1\.1" --include="*.py" --include="*.js" . 2>/dev/null | wc -l</terminal>
818
+
819
+
820
+ check for data collection/telemetry
821
+
822
+ scan for telemetry code:
823
+ <terminal>grep -r "telemetry\|analytics\|segment\|mixpanel\|amplitude" --include="*.py" --include="*.js" node_modules/ site-packages/ 2>/dev/null | grep -v "__pycache__" | head -20</terminal>
824
+
825
+ check package metadata:
826
+ <terminal>npm view [package-name] --json 2>/dev/null | grep -E "segment|analytics|telemetry"</terminal>
827
+
828
+
829
+ check for gdpr/ccpa compliance
830
+
831
+ identify data processing packages:
832
+ <terminal>pip list 2>/dev/null | grep -i "analytics|tracking|monitoring|telemetry"</terminal>
833
+
834
+ check privacy policy references:
835
+ <terminal>grep -r "privacy\|gdpr\|data.*collect" node_modules/*/README.md 2>/dev/null | head -10</terminal>
836
+
837
+
838
+ document compliance status
839
+
840
+ policy compliance:
841
+ - gpl-free: [yes/no]
842
+ - encryption standards: [met/violated]
843
+ - telemetry: [present/absent]
844
+ - data collection: [identified packages]
845
+
846
+ legal risks:
847
+ - [package] - [license] - [restriction]
848
+
849
+
850
+ PHASE 11: AUDIT REPORT TEMPLATE
851
+
852
+
853
+ use this template to structure your findings:
854
+
855
+
856
+ dependency audit report
857
+ generated: [timestamp]
858
+
859
+
860
+ summary:
861
+ total dependencies: [direct] + [transitive]
862
+ critical vulnerabilities: [count]
863
+ high vulnerabilities: [count]
864
+ license issues: [count]
865
+ outdated packages: [count]
866
+
867
+
868
+ vulnerability findings:
869
+
870
+ critical:
871
+ - [cve-id] - [package] [version] - [description] - [fix version]
872
+
873
+ high:
874
+ - [cve-id] - [package] [version] - [description] - [fix version]
875
+
876
+ medium:
877
+ - [cve-id] - [package] [version] - [description] - [fix version]
878
+
879
+ low:
880
+ - [cve-id] - [package] [version] - [description] - [fix version]
881
+
882
+
883
+ license compliance:
884
+
885
+ project license: [type]
886
+
887
+ dependency licenses:
888
+ - mit: [count]
889
+ - apache-2.0: [count]
890
+ - bsd: [count]
891
+ - gpl/gplv3/lgpl: [count] - [list if any]
892
+ - other: [count]
893
+
894
+ compatibility concerns:
895
+ - [package] - [license] - [issue]
896
+
897
+
898
+ freshness assessment:
899
+
900
+ severely outdated (major versions):
901
+ - [package] - [current] - [latest] - [risk]
902
+
903
+ unmaintained:
904
+ - [package] - [last update] - [impact]
905
+
906
+ deprecated:
907
+ - [package] - [replacement]
908
+
909
+
910
+ unused/unnecessary:
911
+
912
+ unused dependencies:
913
+ - [package] - [no imports found]
914
+
915
+ dev deps in production:
916
+ - [package] - [should be devdependency]
917
+
918
+ duplicate functionality:
919
+ - [package 1] + [package 2] - [both do x]
920
+
921
+
922
+ size analysis:
923
+
924
+ total dependency size: [disk usage]
925
+
926
+ largest packages:
927
+ - [package] - [size]
928
+
929
+ optimization candidates:
930
+ - [package] - [lighter alternative]
931
+
932
+
933
+ supply chain:
934
+
935
+ signed packages: [count] / [total]
936
+
937
+ verified integrity: [yes/no]
938
+
939
+ suspicious packages:
940
+ - [package] - [concern]
941
+
942
+
943
+ recommendations:
944
+
945
+ immediate actions:
946
+ [1] [action] - [package affected]
947
+ [2] [action] - [package affected]
948
+
949
+ short term:
950
+ [1] [action] - [reason]
951
+ [2] [action] - [reason]
952
+
953
+ long term:
954
+ [1] [action] - [reason]
955
+
956
+
957
+ PHASE 12: AUDIT RULES (STRICT MODE)
958
+
959
+
960
+ while this skill is active, these rules are MANDATORY:
961
+
962
+ [1] NEVER modify files
963
+ research agent only reads and reports
964
+ use <terminal> and <read> tags only
965
+ no <edit> or <create> tags
966
+
967
+ [2] never auto-fix vulnerabilities
968
+ report findings only
969
+ let the user decide remediation
970
+ note available fixes
971
+
972
+ [3] verify findings from multiple sources
973
+ cross-reference vulnerability databases
974
+ check advisory links
975
+ confirm severity ratings
976
+
977
+ [4] document evidence
978
+ include cve ids
979
+ include advisory links
980
+ include version numbers
981
+
982
+ [5] prioritize by risk
983
+ critical > high > medium > low
984
+ consider exploitability
985
+ consider project exposure
986
+
987
+ [6] note uncertainty
988
+ if tool is unavailable, say so
989
+ if check cannot be performed, explain why
990
+ distinguish between confirmed and suspected issues
991
+
992
+ [7] be thorough but concise
993
+ scan all dependencies
994
+ summarize findings in report
995
+ include actionable recommendations
996
+
997
+
998
+ FINAL REMINDERS
999
+
1000
+
1001
+ dependency auditing is security reconnaissance
1002
+
1003
+ you are finding risks, not fixing them.
1004
+ clear reporting enables remediation.
1005
+
1006
+
1007
+ context matters
1008
+
1009
+ a vulnerability in a dev-only tool
1010
+ is different from one in production code.
1011
+ consider usage context when reporting.
1012
+
1013
+
1014
+ the report drives action
1015
+
1016
+ prioritize clearly.
1017
+ provide evidence.
1018
+ include fix information.
1019
+
1020
+
1021
+ you enable security
1022
+
1023
+ your thoroughness prevents breaches.
1024
+ your attention to detail protects users.
1025
+ your reporting informs decisions.
1026
+
1027
+ now go audit some dependencies.