agent-bober 0.17.1 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1109) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +26 -0
  3. package/README.md +402 -10
  4. package/agents/bober-art-director.md +100 -0
  5. package/agents/bober-design-critic.md +114 -0
  6. package/agents/bober-frontend-builder.md +101 -0
  7. package/agents/bober-security-auditor.md +193 -0
  8. package/agents/bober-security-verifier.md +104 -0
  9. package/agents/bober-seo-strategist.md +144 -0
  10. package/agents/bober-seo-verifier.md +103 -0
  11. package/dist/calendar/calendar-egress.d.ts +26 -0
  12. package/dist/calendar/calendar-egress.d.ts.map +1 -0
  13. package/dist/calendar/calendar-egress.js +35 -0
  14. package/dist/calendar/calendar-egress.js.map +1 -0
  15. package/dist/calendar/calendar-token.d.ts +34 -0
  16. package/dist/calendar/calendar-token.d.ts.map +1 -0
  17. package/dist/calendar/calendar-token.js +56 -0
  18. package/dist/calendar/calendar-token.js.map +1 -0
  19. package/dist/calendar/connector.d.ts +22 -0
  20. package/dist/calendar/connector.d.ts.map +1 -0
  21. package/dist/calendar/connector.js +3 -0
  22. package/dist/calendar/connector.js.map +1 -0
  23. package/dist/calendar/finding-source.d.ts +20 -0
  24. package/dist/calendar/finding-source.d.ts.map +1 -0
  25. package/dist/calendar/finding-source.js +35 -0
  26. package/dist/calendar/finding-source.js.map +1 -0
  27. package/dist/calendar/google-connector.d.ts +65 -0
  28. package/dist/calendar/google-connector.d.ts.map +1 -0
  29. package/dist/calendar/google-connector.js +129 -0
  30. package/dist/calendar/google-connector.js.map +1 -0
  31. package/dist/calendar/ics-connector.d.ts +12 -0
  32. package/dist/calendar/ics-connector.d.ts.map +1 -0
  33. package/dist/calendar/ics-connector.js +48 -0
  34. package/dist/calendar/ics-connector.js.map +1 -0
  35. package/dist/calendar/proposal-gate.d.ts +84 -0
  36. package/dist/calendar/proposal-gate.d.ts.map +1 -0
  37. package/dist/calendar/proposal-gate.js +126 -0
  38. package/dist/calendar/proposal-gate.js.map +1 -0
  39. package/dist/calendar/slotter.d.ts +34 -0
  40. package/dist/calendar/slotter.d.ts.map +1 -0
  41. package/dist/calendar/slotter.js +196 -0
  42. package/dist/calendar/slotter.js.map +1 -0
  43. package/dist/calendar/types.d.ts +162 -0
  44. package/dist/calendar/types.d.ts.map +1 -0
  45. package/dist/calendar/types.js +28 -0
  46. package/dist/calendar/types.js.map +1 -0
  47. package/dist/chat/answerer.d.ts +17 -0
  48. package/dist/chat/answerer.d.ts.map +1 -0
  49. package/dist/chat/answerer.js +52 -0
  50. package/dist/chat/answerer.js.map +1 -0
  51. package/dist/chat/approval-cursor.d.ts +25 -0
  52. package/dist/chat/approval-cursor.d.ts.map +1 -0
  53. package/dist/chat/approval-cursor.js +61 -0
  54. package/dist/chat/approval-cursor.js.map +1 -0
  55. package/dist/chat/approval-reader.d.ts +11 -0
  56. package/dist/chat/approval-reader.d.ts.map +1 -0
  57. package/dist/chat/approval-reader.js +20 -0
  58. package/dist/chat/approval-reader.js.map +1 -0
  59. package/dist/chat/careful-sidecar.d.ts +15 -0
  60. package/dist/chat/careful-sidecar.d.ts.map +1 -0
  61. package/dist/chat/careful-sidecar.js +39 -0
  62. package/dist/chat/careful-sidecar.js.map +1 -0
  63. package/dist/chat/chat-session.d.ts +156 -0
  64. package/dist/chat/chat-session.d.ts.map +1 -0
  65. package/dist/chat/chat-session.js +570 -0
  66. package/dist/chat/chat-session.js.map +1 -0
  67. package/dist/chat/completion-tailer.d.ts +27 -0
  68. package/dist/chat/completion-tailer.d.ts.map +1 -0
  69. package/dist/chat/completion-tailer.js +187 -0
  70. package/dist/chat/completion-tailer.js.map +1 -0
  71. package/dist/chat/conversation-store.d.ts +22 -0
  72. package/dist/chat/conversation-store.d.ts.map +1 -0
  73. package/dist/chat/conversation-store.js +66 -0
  74. package/dist/chat/conversation-store.js.map +1 -0
  75. package/dist/chat/cursor-store.d.ts +23 -0
  76. package/dist/chat/cursor-store.d.ts.map +1 -0
  77. package/dist/chat/cursor-store.js +42 -0
  78. package/dist/chat/cursor-store.js.map +1 -0
  79. package/dist/chat/pid-sidecar.d.ts +22 -0
  80. package/dist/chat/pid-sidecar.d.ts.map +1 -0
  81. package/dist/chat/pid-sidecar.js +42 -0
  82. package/dist/chat/pid-sidecar.js.map +1 -0
  83. package/dist/chat/roster-reader.d.ts +16 -0
  84. package/dist/chat/roster-reader.d.ts.map +1 -0
  85. package/dist/chat/roster-reader.js +39 -0
  86. package/dist/chat/roster-reader.js.map +1 -0
  87. package/dist/chat/run-spawner.d.ts +71 -0
  88. package/dist/chat/run-spawner.d.ts.map +1 -0
  89. package/dist/chat/run-spawner.js +121 -0
  90. package/dist/chat/run-spawner.js.map +1 -0
  91. package/dist/chat/slash-commands.d.ts +40 -0
  92. package/dist/chat/slash-commands.d.ts.map +1 -0
  93. package/dist/chat/slash-commands.js +153 -0
  94. package/dist/chat/slash-commands.js.map +1 -0
  95. package/dist/chat/steer-cleanup.d.ts +12 -0
  96. package/dist/chat/steer-cleanup.d.ts.map +1 -0
  97. package/dist/chat/steer-cleanup.js +60 -0
  98. package/dist/chat/steer-cleanup.js.map +1 -0
  99. package/dist/chat/turn-classifier.d.ts +46 -0
  100. package/dist/chat/turn-classifier.d.ts.map +1 -0
  101. package/dist/chat/turn-classifier.js +157 -0
  102. package/dist/chat/turn-classifier.js.map +1 -0
  103. package/dist/cli/commands/blackboard.d.ts +33 -0
  104. package/dist/cli/commands/blackboard.d.ts.map +1 -0
  105. package/dist/cli/commands/blackboard.js +114 -0
  106. package/dist/cli/commands/blackboard.js.map +1 -0
  107. package/dist/cli/commands/calendar.d.ts +75 -0
  108. package/dist/cli/commands/calendar.d.ts.map +1 -0
  109. package/dist/cli/commands/calendar.js +203 -0
  110. package/dist/cli/commands/calendar.js.map +1 -0
  111. package/dist/cli/commands/chat.d.ts +13 -0
  112. package/dist/cli/commands/chat.d.ts.map +1 -0
  113. package/dist/cli/commands/chat.js +43 -0
  114. package/dist/cli/commands/chat.js.map +1 -0
  115. package/dist/cli/commands/do.d.ts +52 -0
  116. package/dist/cli/commands/do.d.ts.map +1 -0
  117. package/dist/cli/commands/do.js +216 -0
  118. package/dist/cli/commands/do.js.map +1 -0
  119. package/dist/cli/commands/evolve.d.ts +18 -0
  120. package/dist/cli/commands/evolve.d.ts.map +1 -0
  121. package/dist/cli/commands/evolve.js +72 -0
  122. package/dist/cli/commands/evolve.js.map +1 -0
  123. package/dist/cli/commands/facts.d.ts +15 -0
  124. package/dist/cli/commands/facts.d.ts.map +1 -0
  125. package/dist/cli/commands/facts.js +213 -0
  126. package/dist/cli/commands/facts.js.map +1 -0
  127. package/dist/cli/commands/hub.d.ts +29 -0
  128. package/dist/cli/commands/hub.d.ts.map +1 -0
  129. package/dist/cli/commands/hub.js +233 -0
  130. package/dist/cli/commands/hub.js.map +1 -0
  131. package/dist/cli/commands/medical.d.ts +49 -0
  132. package/dist/cli/commands/medical.d.ts.map +1 -0
  133. package/dist/cli/commands/medical.js +365 -0
  134. package/dist/cli/commands/medical.js.map +1 -0
  135. package/dist/cli/commands/memory.d.ts +2 -1
  136. package/dist/cli/commands/memory.d.ts.map +1 -1
  137. package/dist/cli/commands/memory.js +94 -7
  138. package/dist/cli/commands/memory.js.map +1 -1
  139. package/dist/cli/commands/plan.d.ts.map +1 -1
  140. package/dist/cli/commands/plan.js +29 -3
  141. package/dist/cli/commands/plan.js.map +1 -1
  142. package/dist/cli/commands/replay.d.ts +17 -0
  143. package/dist/cli/commands/replay.d.ts.map +1 -0
  144. package/dist/cli/commands/replay.js +261 -0
  145. package/dist/cli/commands/replay.js.map +1 -0
  146. package/dist/cli/commands/research.d.ts +41 -0
  147. package/dist/cli/commands/research.d.ts.map +1 -0
  148. package/dist/cli/commands/research.js +313 -0
  149. package/dist/cli/commands/research.js.map +1 -0
  150. package/dist/cli/commands/run.d.ts +9 -0
  151. package/dist/cli/commands/run.d.ts.map +1 -1
  152. package/dist/cli/commands/run.js +27 -1
  153. package/dist/cli/commands/run.js.map +1 -1
  154. package/dist/cli/commands/security-audit.d.ts +89 -0
  155. package/dist/cli/commands/security-audit.d.ts.map +1 -0
  156. package/dist/cli/commands/security-audit.js +238 -0
  157. package/dist/cli/commands/security-audit.js.map +1 -0
  158. package/dist/cli/commands/sprint.d.ts.map +1 -1
  159. package/dist/cli/commands/sprint.js +17 -3
  160. package/dist/cli/commands/sprint.js.map +1 -1
  161. package/dist/cli/commands/task.d.ts +64 -0
  162. package/dist/cli/commands/task.d.ts.map +1 -0
  163. package/dist/cli/commands/task.js +422 -0
  164. package/dist/cli/commands/task.js.map +1 -0
  165. package/dist/cli/commands/telegram.d.ts +10 -0
  166. package/dist/cli/commands/telegram.d.ts.map +1 -0
  167. package/dist/cli/commands/telegram.js +44 -0
  168. package/dist/cli/commands/telegram.js.map +1 -0
  169. package/dist/cli/commands/vault.d.ts +40 -0
  170. package/dist/cli/commands/vault.d.ts.map +1 -0
  171. package/dist/cli/commands/vault.js +122 -0
  172. package/dist/cli/commands/vault.js.map +1 -0
  173. package/dist/cli/index.js +45 -0
  174. package/dist/cli/index.js.map +1 -1
  175. package/dist/config/defaults.d.ts.map +1 -1
  176. package/dist/config/defaults.js +8 -0
  177. package/dist/config/defaults.js.map +1 -1
  178. package/dist/config/role-providers.d.ts +16 -1
  179. package/dist/config/role-providers.d.ts.map +1 -1
  180. package/dist/config/role-providers.js +14 -2
  181. package/dist/config/role-providers.js.map +1 -1
  182. package/dist/config/schema.d.ts +4050 -454
  183. package/dist/config/schema.d.ts.map +1 -1
  184. package/dist/config/schema.js +429 -1
  185. package/dist/config/schema.js.map +1 -1
  186. package/dist/contracts/eval-result.d.ts +84 -84
  187. package/dist/contracts/spec.d.ts +28 -28
  188. package/dist/contracts/sprint-contract.d.ts +4 -4
  189. package/dist/do-bridge/coding-promoter.d.ts +19 -0
  190. package/dist/do-bridge/coding-promoter.d.ts.map +1 -0
  191. package/dist/do-bridge/coding-promoter.js +43 -0
  192. package/dist/do-bridge/coding-promoter.js.map +1 -0
  193. package/dist/do-bridge/finding-port.d.ts +88 -0
  194. package/dist/do-bridge/finding-port.d.ts.map +1 -0
  195. package/dist/do-bridge/finding-port.js +95 -0
  196. package/dist/do-bridge/finding-port.js.map +1 -0
  197. package/dist/do-bridge/launcher.d.ts +55 -0
  198. package/dist/do-bridge/launcher.d.ts.map +1 -0
  199. package/dist/do-bridge/launcher.js +37 -0
  200. package/dist/do-bridge/launcher.js.map +1 -0
  201. package/dist/do-bridge/promote.d.ts +50 -0
  202. package/dist/do-bridge/promote.d.ts.map +1 -0
  203. package/dist/do-bridge/promote.js +116 -0
  204. package/dist/do-bridge/promote.js.map +1 -0
  205. package/dist/do-bridge/reconcile.d.ts +50 -0
  206. package/dist/do-bridge/reconcile.d.ts.map +1 -0
  207. package/dist/do-bridge/reconcile.js +70 -0
  208. package/dist/do-bridge/reconcile.js.map +1 -0
  209. package/dist/do-bridge/registry.d.ts +23 -0
  210. package/dist/do-bridge/registry.d.ts.map +1 -0
  211. package/dist/do-bridge/registry.js +42 -0
  212. package/dist/do-bridge/registry.js.map +1 -0
  213. package/dist/do-bridge/types.d.ts +50 -0
  214. package/dist/do-bridge/types.d.ts.map +1 -0
  215. package/dist/do-bridge/types.js +17 -0
  216. package/dist/do-bridge/types.js.map +1 -0
  217. package/dist/fleet/child-config.d.ts.map +1 -1
  218. package/dist/fleet/child-config.js +7 -0
  219. package/dist/fleet/child-config.js.map +1 -1
  220. package/dist/fleet/coordinator.d.ts +27 -1
  221. package/dist/fleet/coordinator.d.ts.map +1 -1
  222. package/dist/fleet/coordinator.js +70 -0
  223. package/dist/fleet/coordinator.js.map +1 -1
  224. package/dist/fleet/critic-deep.d.ts +61 -0
  225. package/dist/fleet/critic-deep.d.ts.map +1 -0
  226. package/dist/fleet/critic-deep.js +202 -0
  227. package/dist/fleet/critic-deep.js.map +1 -0
  228. package/dist/fleet/decomposer-deep-constants.d.ts +4 -0
  229. package/dist/fleet/decomposer-deep-constants.d.ts.map +1 -0
  230. package/dist/fleet/decomposer-deep-constants.js +14 -0
  231. package/dist/fleet/decomposer-deep-constants.js.map +1 -0
  232. package/dist/fleet/decomposer-deep-types.d.ts +8 -0
  233. package/dist/fleet/decomposer-deep-types.d.ts.map +1 -0
  234. package/dist/fleet/decomposer-deep-types.js +9 -0
  235. package/dist/fleet/decomposer-deep-types.js.map +1 -0
  236. package/dist/fleet/decomposer-deep.d.ts +44 -0
  237. package/dist/fleet/decomposer-deep.d.ts.map +1 -0
  238. package/dist/fleet/decomposer-deep.js +261 -0
  239. package/dist/fleet/decomposer-deep.js.map +1 -0
  240. package/dist/fleet/decomposer.d.ts +22 -0
  241. package/dist/fleet/decomposer.d.ts.map +1 -0
  242. package/dist/fleet/decomposer.js +144 -0
  243. package/dist/fleet/decomposer.js.map +1 -0
  244. package/dist/fleet/index.d.ts +102 -0
  245. package/dist/fleet/index.d.ts.map +1 -1
  246. package/dist/fleet/index.js +316 -9
  247. package/dist/fleet/index.js.map +1 -1
  248. package/dist/fleet/manifest-write.d.ts +30 -0
  249. package/dist/fleet/manifest-write.d.ts.map +1 -0
  250. package/dist/fleet/manifest-write.js +90 -0
  251. package/dist/fleet/manifest-write.js.map +1 -0
  252. package/dist/fleet/manifest.d.ts +32 -6
  253. package/dist/fleet/manifest.d.ts.map +1 -1
  254. package/dist/fleet/manifest.js +8 -0
  255. package/dist/fleet/manifest.js.map +1 -1
  256. package/dist/fleet/reporter.d.ts +4 -1
  257. package/dist/fleet/reporter.d.ts.map +1 -1
  258. package/dist/fleet/reporter.js +2 -1
  259. package/dist/fleet/reporter.js.map +1 -1
  260. package/dist/fleet/scaffolder.d.ts +5 -1
  261. package/dist/fleet/scaffolder.d.ts.map +1 -1
  262. package/dist/fleet/scaffolder.js +11 -2
  263. package/dist/fleet/scaffolder.js.map +1 -1
  264. package/dist/fleet/shared-blackboard.d.ts +51 -0
  265. package/dist/fleet/shared-blackboard.d.ts.map +1 -0
  266. package/dist/fleet/shared-blackboard.js +79 -0
  267. package/dist/fleet/shared-blackboard.js.map +1 -0
  268. package/dist/fleet/synthesis.d.ts +16 -0
  269. package/dist/fleet/synthesis.d.ts.map +1 -0
  270. package/dist/fleet/synthesis.js +22 -0
  271. package/dist/fleet/synthesis.js.map +1 -0
  272. package/dist/fleet/tier-policy.d.ts +18 -0
  273. package/dist/fleet/tier-policy.d.ts.map +1 -0
  274. package/dist/fleet/tier-policy.js +53 -0
  275. package/dist/fleet/tier-policy.js.map +1 -0
  276. package/dist/fleet/tool-role-guard.d.ts +24 -0
  277. package/dist/fleet/tool-role-guard.d.ts.map +1 -0
  278. package/dist/fleet/tool-role-guard.js +55 -0
  279. package/dist/fleet/tool-role-guard.js.map +1 -0
  280. package/dist/graph/client.d.ts.map +1 -1
  281. package/dist/graph/client.js +115 -23
  282. package/dist/graph/client.js.map +1 -1
  283. package/dist/graph/mcp-client.d.ts +1 -0
  284. package/dist/graph/mcp-client.d.ts.map +1 -1
  285. package/dist/graph/mcp-client.js +58 -7
  286. package/dist/graph/mcp-client.js.map +1 -1
  287. package/dist/hub/collector.d.ts +12 -0
  288. package/dist/hub/collector.d.ts.map +1 -0
  289. package/dist/hub/collector.js +36 -0
  290. package/dist/hub/collector.js.map +1 -0
  291. package/dist/hub/finding-source.d.ts +22 -0
  292. package/dist/hub/finding-source.d.ts.map +1 -0
  293. package/dist/hub/finding-source.js +41 -0
  294. package/dist/hub/finding-source.js.map +1 -0
  295. package/dist/hub/finding-store.d.ts +68 -0
  296. package/dist/hub/finding-store.d.ts.map +1 -0
  297. package/dist/hub/finding-store.js +122 -0
  298. package/dist/hub/finding-store.js.map +1 -0
  299. package/dist/hub/finding.d.ts +54 -0
  300. package/dist/hub/finding.d.ts.map +1 -0
  301. package/dist/hub/finding.js +24 -0
  302. package/dist/hub/finding.js.map +1 -0
  303. package/dist/hub/gmail-to-task.d.ts +69 -0
  304. package/dist/hub/gmail-to-task.d.ts.map +1 -0
  305. package/dist/hub/gmail-to-task.js +102 -0
  306. package/dist/hub/gmail-to-task.js.map +1 -0
  307. package/dist/hub/hub-config.d.ts +18 -0
  308. package/dist/hub/hub-config.d.ts.map +1 -0
  309. package/dist/hub/hub-config.js +40 -0
  310. package/dist/hub/hub-config.js.map +1 -0
  311. package/dist/hub/judge.d.ts +30 -0
  312. package/dist/hub/judge.d.ts.map +1 -0
  313. package/dist/hub/judge.js +177 -0
  314. package/dist/hub/judge.js.map +1 -0
  315. package/dist/hub/lenses.d.ts +60 -0
  316. package/dist/hub/lenses.d.ts.map +1 -0
  317. package/dist/hub/lenses.js +123 -0
  318. package/dist/hub/lenses.js.map +1 -0
  319. package/dist/hub/priority-md.d.ts +21 -0
  320. package/dist/hub/priority-md.d.ts.map +1 -0
  321. package/dist/hub/priority-md.js +64 -0
  322. package/dist/hub/priority-md.js.map +1 -0
  323. package/dist/hub/repo-resolver.d.ts +11 -0
  324. package/dist/hub/repo-resolver.d.ts.map +1 -0
  325. package/dist/hub/repo-resolver.js +39 -0
  326. package/dist/hub/repo-resolver.js.map +1 -0
  327. package/dist/hub/scope.d.ts +39 -0
  328. package/dist/hub/scope.d.ts.map +1 -0
  329. package/dist/hub/scope.js +62 -0
  330. package/dist/hub/scope.js.map +1 -0
  331. package/dist/hub/task-inbox.d.ts +16 -0
  332. package/dist/hub/task-inbox.d.ts.map +1 -0
  333. package/dist/hub/task-inbox.js +39 -0
  334. package/dist/hub/task-inbox.js.map +1 -0
  335. package/dist/incident/resolution-verify.d.ts +2 -2
  336. package/dist/incident/types.d.ts +8 -8
  337. package/dist/index.d.ts +2 -1
  338. package/dist/index.d.ts.map +1 -1
  339. package/dist/index.js +2 -1
  340. package/dist/index.js.map +1 -1
  341. package/dist/mcp/run-manager.d.ts +9 -1
  342. package/dist/mcp/run-manager.d.ts.map +1 -1
  343. package/dist/mcp/run-manager.js.map +1 -1
  344. package/dist/medical/adapters/apple-health.d.ts +32 -0
  345. package/dist/medical/adapters/apple-health.d.ts.map +1 -0
  346. package/dist/medical/adapters/apple-health.js +100 -0
  347. package/dist/medical/adapters/apple-health.js.map +1 -0
  348. package/dist/medical/analysis/cadence.d.ts +32 -0
  349. package/dist/medical/analysis/cadence.d.ts.map +1 -0
  350. package/dist/medical/analysis/cadence.js +72 -0
  351. package/dist/medical/analysis/cadence.js.map +1 -0
  352. package/dist/medical/analysis/cross-marker.d.ts +33 -0
  353. package/dist/medical/analysis/cross-marker.d.ts.map +1 -0
  354. package/dist/medical/analysis/cross-marker.js +79 -0
  355. package/dist/medical/analysis/cross-marker.js.map +1 -0
  356. package/dist/medical/analysis/finding-writer.d.ts +26 -0
  357. package/dist/medical/analysis/finding-writer.d.ts.map +1 -0
  358. package/dist/medical/analysis/finding-writer.js +60 -0
  359. package/dist/medical/analysis/finding-writer.js.map +1 -0
  360. package/dist/medical/analysis/finding.d.ts +63 -0
  361. package/dist/medical/analysis/finding.d.ts.map +1 -0
  362. package/dist/medical/analysis/finding.js +70 -0
  363. package/dist/medical/analysis/finding.js.map +1 -0
  364. package/dist/medical/analysis/review-pass.d.ts +76 -0
  365. package/dist/medical/analysis/review-pass.d.ts.map +1 -0
  366. package/dist/medical/analysis/review-pass.js +119 -0
  367. package/dist/medical/analysis/review-pass.js.map +1 -0
  368. package/dist/medical/analysis/trends.d.ts +36 -0
  369. package/dist/medical/analysis/trends.d.ts.map +1 -0
  370. package/dist/medical/analysis/trends.js +157 -0
  371. package/dist/medical/analysis/trends.js.map +1 -0
  372. package/dist/medical/audit.d.ts +31 -0
  373. package/dist/medical/audit.d.ts.map +1 -0
  374. package/dist/medical/audit.js +56 -0
  375. package/dist/medical/audit.js.map +1 -0
  376. package/dist/medical/consent.d.ts +37 -0
  377. package/dist/medical/consent.d.ts.map +1 -0
  378. package/dist/medical/consent.js +73 -0
  379. package/dist/medical/consent.js.map +1 -0
  380. package/dist/medical/disclaimer.d.ts +11 -0
  381. package/dist/medical/disclaimer.d.ts.map +1 -0
  382. package/dist/medical/disclaimer.js +21 -0
  383. package/dist/medical/disclaimer.js.map +1 -0
  384. package/dist/medical/egress.d.ts +30 -0
  385. package/dist/medical/egress.d.ts.map +1 -0
  386. package/dist/medical/egress.js +50 -0
  387. package/dist/medical/egress.js.map +1 -0
  388. package/dist/medical/engine.d.ts +73 -0
  389. package/dist/medical/engine.d.ts.map +1 -0
  390. package/dist/medical/engine.js +333 -0
  391. package/dist/medical/engine.js.map +1 -0
  392. package/dist/medical/guardrails.d.ts +47 -0
  393. package/dist/medical/guardrails.d.ts.map +1 -0
  394. package/dist/medical/guardrails.js +92 -0
  395. package/dist/medical/guardrails.js.map +1 -0
  396. package/dist/medical/health-store.d.ts +85 -0
  397. package/dist/medical/health-store.d.ts.map +1 -0
  398. package/dist/medical/health-store.js +214 -0
  399. package/dist/medical/health-store.js.map +1 -0
  400. package/dist/medical/inference.d.ts +22 -0
  401. package/dist/medical/inference.d.ts.map +1 -0
  402. package/dist/medical/inference.js +39 -0
  403. package/dist/medical/inference.js.map +1 -0
  404. package/dist/medical/ingestion.d.ts +33 -0
  405. package/dist/medical/ingestion.d.ts.map +1 -0
  406. package/dist/medical/ingestion.js +52 -0
  407. package/dist/medical/ingestion.js.map +1 -0
  408. package/dist/medical/lab-note.d.ts +72 -0
  409. package/dist/medical/lab-note.d.ts.map +1 -0
  410. package/dist/medical/lab-note.js +161 -0
  411. package/dist/medical/lab-note.js.map +1 -0
  412. package/dist/medical/lab-pdf-parser.d.ts +19 -0
  413. package/dist/medical/lab-pdf-parser.d.ts.map +1 -0
  414. package/dist/medical/lab-pdf-parser.js +57 -0
  415. package/dist/medical/lab-pdf-parser.js.map +1 -0
  416. package/dist/medical/lab-reindex.d.ts +24 -0
  417. package/dist/medical/lab-reindex.d.ts.map +1 -0
  418. package/dist/medical/lab-reindex.js +45 -0
  419. package/dist/medical/lab-reindex.js.map +1 -0
  420. package/dist/medical/lab-types.d.ts +75 -0
  421. package/dist/medical/lab-types.d.ts.map +1 -0
  422. package/dist/medical/lab-types.js +17 -0
  423. package/dist/medical/lab-types.js.map +1 -0
  424. package/dist/medical/numerics.d.ts +66 -0
  425. package/dist/medical/numerics.d.ts.map +1 -0
  426. package/dist/medical/numerics.js +216 -0
  427. package/dist/medical/numerics.js.map +1 -0
  428. package/dist/medical/profile.d.ts +96 -0
  429. package/dist/medical/profile.d.ts.map +1 -0
  430. package/dist/medical/profile.js +273 -0
  431. package/dist/medical/profile.js.map +1 -0
  432. package/dist/medical/recommend/context.d.ts +48 -0
  433. package/dist/medical/recommend/context.d.ts.map +1 -0
  434. package/dist/medical/recommend/context.js +109 -0
  435. package/dist/medical/recommend/context.js.map +1 -0
  436. package/dist/medical/recommend/judge-panel.d.ts +49 -0
  437. package/dist/medical/recommend/judge-panel.d.ts.map +1 -0
  438. package/dist/medical/recommend/judge-panel.js +164 -0
  439. package/dist/medical/recommend/judge-panel.js.map +1 -0
  440. package/dist/medical/recommend/lenses.d.ts +72 -0
  441. package/dist/medical/recommend/lenses.d.ts.map +1 -0
  442. package/dist/medical/recommend/lenses.js +220 -0
  443. package/dist/medical/recommend/lenses.js.map +1 -0
  444. package/dist/medical/recommend/recommend.d.ts +86 -0
  445. package/dist/medical/recommend/recommend.d.ts.map +1 -0
  446. package/dist/medical/recommend/recommend.js +211 -0
  447. package/dist/medical/recommend/recommend.js.map +1 -0
  448. package/dist/medical/recommend/types.d.ts +98 -0
  449. package/dist/medical/recommend/types.d.ts.map +1 -0
  450. package/dist/medical/recommend/types.js +20 -0
  451. package/dist/medical/recommend/types.js.map +1 -0
  452. package/dist/medical/recommend/urgency.d.ts +26 -0
  453. package/dist/medical/recommend/urgency.d.ts.map +1 -0
  454. package/dist/medical/recommend/urgency.js +124 -0
  455. package/dist/medical/recommend/urgency.js.map +1 -0
  456. package/dist/medical/red-flag.d.ts +42 -0
  457. package/dist/medical/red-flag.d.ts.map +1 -0
  458. package/dist/medical/red-flag.js +161 -0
  459. package/dist/medical/red-flag.js.map +1 -0
  460. package/dist/medical/refusal.d.ts +46 -0
  461. package/dist/medical/refusal.d.ts.map +1 -0
  462. package/dist/medical/refusal.js +131 -0
  463. package/dist/medical/refusal.js.map +1 -0
  464. package/dist/medical/research/online-research.d.ts +65 -0
  465. package/dist/medical/research/online-research.d.ts.map +1 -0
  466. package/dist/medical/research/online-research.js +101 -0
  467. package/dist/medical/research/online-research.js.map +1 -0
  468. package/dist/medical/research/research-note.d.ts +32 -0
  469. package/dist/medical/research/research-note.d.ts.map +1 -0
  470. package/dist/medical/research/research-note.js +55 -0
  471. package/dist/medical/research/research-note.js.map +1 -0
  472. package/dist/medical/retrieval/grounding-critic.d.ts +34 -0
  473. package/dist/medical/retrieval/grounding-critic.d.ts.map +1 -0
  474. package/dist/medical/retrieval/grounding-critic.js +153 -0
  475. package/dist/medical/retrieval/grounding-critic.js.map +1 -0
  476. package/dist/medical/retrieval/literature.d.ts +78 -0
  477. package/dist/medical/retrieval/literature.d.ts.map +1 -0
  478. package/dist/medical/retrieval/literature.js +292 -0
  479. package/dist/medical/retrieval/literature.js.map +1 -0
  480. package/dist/medical/retrieval/medline-source.d.ts +72 -0
  481. package/dist/medical/retrieval/medline-source.d.ts.map +1 -0
  482. package/dist/medical/retrieval/medline-source.js +120 -0
  483. package/dist/medical/retrieval/medline-source.js.map +1 -0
  484. package/dist/medical/supplements.d.ts +82 -0
  485. package/dist/medical/supplements.d.ts.map +1 -0
  486. package/dist/medical/supplements.js +173 -0
  487. package/dist/medical/supplements.js.map +1 -0
  488. package/dist/medical/team.d.ts +15 -0
  489. package/dist/medical/team.d.ts.map +1 -0
  490. package/dist/medical/team.js +44 -0
  491. package/dist/medical/team.js.map +1 -0
  492. package/dist/medical/types.d.ts +175 -0
  493. package/dist/medical/types.d.ts.map +1 -0
  494. package/dist/medical/types.js +8 -0
  495. package/dist/medical/types.js.map +1 -0
  496. package/dist/medical/whoop/whoop-client.d.ts +114 -0
  497. package/dist/medical/whoop/whoop-client.d.ts.map +1 -0
  498. package/dist/medical/whoop/whoop-client.js +226 -0
  499. package/dist/medical/whoop/whoop-client.js.map +1 -0
  500. package/dist/medical/whoop/whoop-sync.d.ts +25 -0
  501. package/dist/medical/whoop/whoop-sync.d.ts.map +1 -0
  502. package/dist/medical/whoop/whoop-sync.js +97 -0
  503. package/dist/medical/whoop/whoop-sync.js.map +1 -0
  504. package/dist/medical/whoop/whoop-token.d.ts +44 -0
  505. package/dist/medical/whoop/whoop-token.d.ts.map +1 -0
  506. package/dist/medical/whoop/whoop-token.js +66 -0
  507. package/dist/medical/whoop/whoop-token.js.map +1 -0
  508. package/dist/orchestrator/agentic-loop.d.ts +160 -1
  509. package/dist/orchestrator/agentic-loop.d.ts.map +1 -1
  510. package/dist/orchestrator/agentic-loop.js +350 -41
  511. package/dist/orchestrator/agentic-loop.js.map +1 -1
  512. package/dist/orchestrator/compaction.d.ts +47 -0
  513. package/dist/orchestrator/compaction.d.ts.map +1 -0
  514. package/dist/orchestrator/compaction.js +75 -0
  515. package/dist/orchestrator/compaction.js.map +1 -0
  516. package/dist/orchestrator/context-handoff.d.ts +60 -60
  517. package/dist/orchestrator/contract-materialization.d.ts +33 -0
  518. package/dist/orchestrator/contract-materialization.d.ts.map +1 -0
  519. package/dist/orchestrator/contract-materialization.js +113 -0
  520. package/dist/orchestrator/contract-materialization.js.map +1 -0
  521. package/dist/orchestrator/generator-agent.d.ts +19 -0
  522. package/dist/orchestrator/generator-agent.d.ts.map +1 -1
  523. package/dist/orchestrator/generator-agent.js +27 -1
  524. package/dist/orchestrator/generator-agent.js.map +1 -1
  525. package/dist/orchestrator/loop-events.d.ts +98 -0
  526. package/dist/orchestrator/loop-events.d.ts.map +1 -0
  527. package/dist/orchestrator/loop-events.js +2 -0
  528. package/dist/orchestrator/loop-events.js.map +1 -0
  529. package/dist/orchestrator/memory/distill.d.ts +4 -1
  530. package/dist/orchestrator/memory/distill.d.ts.map +1 -1
  531. package/dist/orchestrator/memory/distill.js +41 -1
  532. package/dist/orchestrator/memory/distill.js.map +1 -1
  533. package/dist/orchestrator/memory/fact-detector.d.ts +61 -0
  534. package/dist/orchestrator/memory/fact-detector.d.ts.map +1 -0
  535. package/dist/orchestrator/memory/fact-detector.js +153 -0
  536. package/dist/orchestrator/memory/fact-detector.js.map +1 -0
  537. package/dist/orchestrator/memory/fact-judge.d.ts +19 -0
  538. package/dist/orchestrator/memory/fact-judge.d.ts.map +1 -0
  539. package/dist/orchestrator/memory/fact-judge.js +121 -0
  540. package/dist/orchestrator/memory/fact-judge.js.map +1 -0
  541. package/dist/orchestrator/memory/fact-retrieve.d.ts +52 -0
  542. package/dist/orchestrator/memory/fact-retrieve.d.ts.map +1 -0
  543. package/dist/orchestrator/memory/fact-retrieve.js +117 -0
  544. package/dist/orchestrator/memory/fact-retrieve.js.map +1 -0
  545. package/dist/orchestrator/memory/hygiene.d.ts +66 -0
  546. package/dist/orchestrator/memory/hygiene.d.ts.map +1 -0
  547. package/dist/orchestrator/memory/hygiene.js +153 -0
  548. package/dist/orchestrator/memory/hygiene.js.map +1 -0
  549. package/dist/orchestrator/memory/reconcile.d.ts +47 -0
  550. package/dist/orchestrator/memory/reconcile.d.ts.map +1 -0
  551. package/dist/orchestrator/memory/reconcile.js +116 -0
  552. package/dist/orchestrator/memory/reconcile.js.map +1 -0
  553. package/dist/orchestrator/memory/retrieve.d.ts +5 -3
  554. package/dist/orchestrator/memory/retrieve.d.ts.map +1 -1
  555. package/dist/orchestrator/memory/retrieve.js +9 -6
  556. package/dist/orchestrator/memory/retrieve.js.map +1 -1
  557. package/dist/orchestrator/model-resolver.d.ts.map +1 -1
  558. package/dist/orchestrator/model-resolver.js +10 -6
  559. package/dist/orchestrator/model-resolver.js.map +1 -1
  560. package/dist/orchestrator/pipeline.d.ts +29 -4
  561. package/dist/orchestrator/pipeline.d.ts.map +1 -1
  562. package/dist/orchestrator/pipeline.js +165 -56
  563. package/dist/orchestrator/pipeline.js.map +1 -1
  564. package/dist/orchestrator/planner-agent.d.ts.map +1 -1
  565. package/dist/orchestrator/planner-agent.js +16 -1
  566. package/dist/orchestrator/planner-agent.js.map +1 -1
  567. package/dist/orchestrator/security-audit-types.d.ts +53 -0
  568. package/dist/orchestrator/security-audit-types.d.ts.map +1 -0
  569. package/dist/orchestrator/security-audit-types.js +10 -0
  570. package/dist/orchestrator/security-audit-types.js.map +1 -0
  571. package/dist/orchestrator/security-auditor-agent.d.ts +68 -0
  572. package/dist/orchestrator/security-auditor-agent.d.ts.map +1 -0
  573. package/dist/orchestrator/security-auditor-agent.js +482 -0
  574. package/dist/orchestrator/security-auditor-agent.js.map +1 -0
  575. package/dist/orchestrator/security-gate.d.ts +73 -0
  576. package/dist/orchestrator/security-gate.d.ts.map +1 -0
  577. package/dist/orchestrator/security-gate.js +174 -0
  578. package/dist/orchestrator/security-gate.js.map +1 -0
  579. package/dist/orchestrator/security-hub.d.ts +45 -0
  580. package/dist/orchestrator/security-hub.d.ts.map +1 -0
  581. package/dist/orchestrator/security-hub.js +147 -0
  582. package/dist/orchestrator/security-hub.js.map +1 -0
  583. package/dist/orchestrator/security-knowledge/benchmark/harness.d.ts +43 -0
  584. package/dist/orchestrator/security-knowledge/benchmark/harness.d.ts.map +1 -0
  585. package/dist/orchestrator/security-knowledge/benchmark/harness.js +13 -0
  586. package/dist/orchestrator/security-knowledge/benchmark/harness.js.map +1 -0
  587. package/dist/orchestrator/security-knowledge/diff-provider.d.ts +79 -0
  588. package/dist/orchestrator/security-knowledge/diff-provider.d.ts.map +1 -0
  589. package/dist/orchestrator/security-knowledge/diff-provider.js +320 -0
  590. package/dist/orchestrator/security-knowledge/diff-provider.js.map +1 -0
  591. package/dist/orchestrator/security-knowledge/index.d.ts +22 -0
  592. package/dist/orchestrator/security-knowledge/index.d.ts.map +1 -0
  593. package/dist/orchestrator/security-knowledge/index.js +66 -0
  594. package/dist/orchestrator/security-knowledge/index.js.map +1 -0
  595. package/dist/orchestrator/security-knowledge/parser.d.ts +9 -0
  596. package/dist/orchestrator/security-knowledge/parser.d.ts.map +1 -0
  597. package/dist/orchestrator/security-knowledge/parser.js +137 -0
  598. package/dist/orchestrator/security-knowledge/parser.js.map +1 -0
  599. package/dist/orchestrator/security-knowledge/registry.d.ts +25 -0
  600. package/dist/orchestrator/security-knowledge/registry.d.ts.map +1 -0
  601. package/dist/orchestrator/security-knowledge/registry.js +114 -0
  602. package/dist/orchestrator/security-knowledge/registry.js.map +1 -0
  603. package/dist/orchestrator/security-knowledge/resolver.d.ts +48 -0
  604. package/dist/orchestrator/security-knowledge/resolver.d.ts.map +1 -0
  605. package/dist/orchestrator/security-knowledge/resolver.js +63 -0
  606. package/dist/orchestrator/security-knowledge/resolver.js.map +1 -0
  607. package/dist/orchestrator/security-knowledge/selector.d.ts +18 -0
  608. package/dist/orchestrator/security-knowledge/selector.d.ts.map +1 -0
  609. package/dist/orchestrator/security-knowledge/selector.js +46 -0
  610. package/dist/orchestrator/security-knowledge/selector.js.map +1 -0
  611. package/dist/orchestrator/security-knowledge/signature.d.ts +37 -0
  612. package/dist/orchestrator/security-knowledge/signature.d.ts.map +1 -0
  613. package/dist/orchestrator/security-knowledge/signature.js +2 -0
  614. package/dist/orchestrator/security-knowledge/signature.js.map +1 -0
  615. package/dist/orchestrator/security-knowledge/supply-chain-inspector.d.ts +29 -0
  616. package/dist/orchestrator/security-knowledge/supply-chain-inspector.d.ts.map +1 -0
  617. package/dist/orchestrator/security-knowledge/supply-chain-inspector.js +211 -0
  618. package/dist/orchestrator/security-knowledge/supply-chain-inspector.js.map +1 -0
  619. package/dist/orchestrator/security-scanners.d.ts +126 -0
  620. package/dist/orchestrator/security-scanners.d.ts.map +1 -0
  621. package/dist/orchestrator/security-scanners.js +501 -0
  622. package/dist/orchestrator/security-scanners.js.map +1 -0
  623. package/dist/orchestrator/security-verifier-agent.d.ts +62 -0
  624. package/dist/orchestrator/security-verifier-agent.d.ts.map +1 -0
  625. package/dist/orchestrator/security-verifier-agent.js +230 -0
  626. package/dist/orchestrator/security-verifier-agent.js.map +1 -0
  627. package/dist/orchestrator/selfimprove/eval-guards.d.ts +51 -0
  628. package/dist/orchestrator/selfimprove/eval-guards.d.ts.map +1 -0
  629. package/dist/orchestrator/selfimprove/eval-guards.js +120 -0
  630. package/dist/orchestrator/selfimprove/eval-guards.js.map +1 -0
  631. package/dist/orchestrator/selfimprove/gepa.d.ts +74 -0
  632. package/dist/orchestrator/selfimprove/gepa.d.ts.map +1 -0
  633. package/dist/orchestrator/selfimprove/gepa.js +227 -0
  634. package/dist/orchestrator/selfimprove/gepa.js.map +1 -0
  635. package/dist/orchestrator/selfimprove/replay-harness.d.ts +65 -0
  636. package/dist/orchestrator/selfimprove/replay-harness.d.ts.map +1 -0
  637. package/dist/orchestrator/selfimprove/replay-harness.js +134 -0
  638. package/dist/orchestrator/selfimprove/replay-harness.js.map +1 -0
  639. package/dist/orchestrator/selfimprove/replay-store.d.ts +45 -0
  640. package/dist/orchestrator/selfimprove/replay-store.d.ts.map +1 -0
  641. package/dist/orchestrator/selfimprove/replay-store.js +119 -0
  642. package/dist/orchestrator/selfimprove/replay-store.js.map +1 -0
  643. package/dist/orchestrator/selfimprove/replay-types.d.ts +32 -0
  644. package/dist/orchestrator/selfimprove/replay-types.d.ts.map +1 -0
  645. package/dist/orchestrator/selfimprove/replay-types.js +15 -0
  646. package/dist/orchestrator/selfimprove/replay-types.js.map +1 -0
  647. package/dist/orchestrator/session-store.d.ts +95 -0
  648. package/dist/orchestrator/session-store.d.ts.map +1 -0
  649. package/dist/orchestrator/session-store.js +186 -0
  650. package/dist/orchestrator/session-store.js.map +1 -0
  651. package/dist/orchestrator/stack-knowledge.d.ts +17 -0
  652. package/dist/orchestrator/stack-knowledge.d.ts.map +1 -0
  653. package/dist/orchestrator/stack-knowledge.js +35 -0
  654. package/dist/orchestrator/stack-knowledge.js.map +1 -0
  655. package/dist/orchestrator/subagents.d.ts +62 -0
  656. package/dist/orchestrator/subagents.d.ts.map +1 -0
  657. package/dist/orchestrator/subagents.js +143 -0
  658. package/dist/orchestrator/subagents.js.map +1 -0
  659. package/dist/orchestrator/tools/executor.d.ts +68 -0
  660. package/dist/orchestrator/tools/executor.d.ts.map +1 -0
  661. package/dist/orchestrator/tools/executor.js +104 -0
  662. package/dist/orchestrator/tools/executor.js.map +1 -0
  663. package/dist/orchestrator/tools/mcp-bridge.d.ts +76 -0
  664. package/dist/orchestrator/tools/mcp-bridge.d.ts.map +1 -0
  665. package/dist/orchestrator/tools/mcp-bridge.js +154 -0
  666. package/dist/orchestrator/tools/mcp-bridge.js.map +1 -0
  667. package/dist/orchestrator/tools/schemas.d.ts.map +1 -1
  668. package/dist/orchestrator/tools/schemas.js +3 -0
  669. package/dist/orchestrator/tools/schemas.js.map +1 -1
  670. package/dist/orchestrator/workflow/budget.d.ts +24 -2
  671. package/dist/orchestrator/workflow/budget.d.ts.map +1 -1
  672. package/dist/orchestrator/workflow/budget.js +39 -1
  673. package/dist/orchestrator/workflow/budget.js.map +1 -1
  674. package/dist/orchestrator/workflow/engine.d.ts +4 -2
  675. package/dist/orchestrator/workflow/engine.d.ts.map +1 -1
  676. package/dist/orchestrator/workflow/selector.d.ts +18 -0
  677. package/dist/orchestrator/workflow/selector.d.ts.map +1 -1
  678. package/dist/orchestrator/workflow/selector.js +51 -0
  679. package/dist/orchestrator/workflow/selector.js.map +1 -1
  680. package/dist/orchestrator/workflow/ts-engine.d.ts +3 -1
  681. package/dist/orchestrator/workflow/ts-engine.d.ts.map +1 -1
  682. package/dist/orchestrator/workflow/ts-engine.js +2 -2
  683. package/dist/orchestrator/workflow/ts-engine.js.map +1 -1
  684. package/dist/orchestrator/workflow/workflow-engine.d.ts +3 -1
  685. package/dist/orchestrator/workflow/workflow-engine.d.ts.map +1 -1
  686. package/dist/orchestrator/workflow/workflow-engine.js +3 -3
  687. package/dist/orchestrator/workflow/workflow-engine.js.map +1 -1
  688. package/dist/providers/anthropic.d.ts.map +1 -1
  689. package/dist/providers/anthropic.js +116 -26
  690. package/dist/providers/anthropic.js.map +1 -1
  691. package/dist/providers/claude-code.d.ts.map +1 -1
  692. package/dist/providers/claude-code.js +17 -0
  693. package/dist/providers/claude-code.js.map +1 -1
  694. package/dist/providers/cost-meter.d.ts +52 -0
  695. package/dist/providers/cost-meter.d.ts.map +1 -0
  696. package/dist/providers/cost-meter.js +81 -0
  697. package/dist/providers/cost-meter.js.map +1 -0
  698. package/dist/providers/factory.d.ts +6 -1
  699. package/dist/providers/factory.d.ts.map +1 -1
  700. package/dist/providers/factory.js +24 -5
  701. package/dist/providers/factory.js.map +1 -1
  702. package/dist/providers/google.d.ts.map +1 -1
  703. package/dist/providers/google.js +29 -0
  704. package/dist/providers/google.js.map +1 -1
  705. package/dist/providers/grounded-search.d.ts +128 -0
  706. package/dist/providers/grounded-search.d.ts.map +1 -0
  707. package/dist/providers/grounded-search.js +160 -0
  708. package/dist/providers/grounded-search.js.map +1 -0
  709. package/dist/providers/openai-compat.d.ts +15 -1
  710. package/dist/providers/openai-compat.d.ts.map +1 -1
  711. package/dist/providers/openai-compat.js +24 -0
  712. package/dist/providers/openai-compat.js.map +1 -1
  713. package/dist/providers/openai.d.ts +7 -0
  714. package/dist/providers/openai.d.ts.map +1 -1
  715. package/dist/providers/openai.js +95 -4
  716. package/dist/providers/openai.js.map +1 -1
  717. package/dist/providers/types.d.ts +88 -0
  718. package/dist/providers/types.d.ts.map +1 -1
  719. package/dist/research/cadence.d.ts +33 -0
  720. package/dist/research/cadence.d.ts.map +1 -0
  721. package/dist/research/cadence.js +55 -0
  722. package/dist/research/cadence.js.map +1 -0
  723. package/dist/research/digest.d.ts +80 -0
  724. package/dist/research/digest.d.ts.map +1 -0
  725. package/dist/research/digest.js +119 -0
  726. package/dist/research/digest.js.map +1 -0
  727. package/dist/research/egress.d.ts +28 -0
  728. package/dist/research/egress.d.ts.map +1 -0
  729. package/dist/research/egress.js +41 -0
  730. package/dist/research/egress.js.map +1 -0
  731. package/dist/research/job-store.d.ts +30 -0
  732. package/dist/research/job-store.d.ts.map +1 -0
  733. package/dist/research/job-store.js +100 -0
  734. package/dist/research/job-store.js.map +1 -0
  735. package/dist/research/model-diversity.d.ts +27 -0
  736. package/dist/research/model-diversity.d.ts.map +1 -0
  737. package/dist/research/model-diversity.js +52 -0
  738. package/dist/research/model-diversity.js.map +1 -0
  739. package/dist/research/note-writer.d.ts +36 -0
  740. package/dist/research/note-writer.d.ts.map +1 -0
  741. package/dist/research/note-writer.js +53 -0
  742. package/dist/research/note-writer.js.map +1 -0
  743. package/dist/research/online-retrieval.d.ts +27 -0
  744. package/dist/research/online-retrieval.d.ts.map +1 -0
  745. package/dist/research/online-retrieval.js +22 -0
  746. package/dist/research/online-retrieval.js.map +1 -0
  747. package/dist/research/runner.d.ts +80 -0
  748. package/dist/research/runner.d.ts.map +1 -0
  749. package/dist/research/runner.js +115 -0
  750. package/dist/research/runner.js.map +1 -0
  751. package/dist/research/scheduler.d.ts +61 -0
  752. package/dist/research/scheduler.d.ts.map +1 -0
  753. package/dist/research/scheduler.js +58 -0
  754. package/dist/research/scheduler.js.map +1 -0
  755. package/dist/research/types.d.ts +81 -0
  756. package/dist/research/types.d.ts.map +1 -0
  757. package/dist/research/types.js +57 -0
  758. package/dist/research/types.js.map +1 -0
  759. package/dist/seo/adapters/http.d.ts +43 -0
  760. package/dist/seo/adapters/http.d.ts.map +1 -0
  761. package/dist/seo/adapters/http.js +35 -0
  762. package/dist/seo/adapters/http.js.map +1 -0
  763. package/dist/seo/ai-visibility-provider.d.ts +171 -0
  764. package/dist/seo/ai-visibility-provider.d.ts.map +1 -0
  765. package/dist/seo/ai-visibility-provider.js +165 -0
  766. package/dist/seo/ai-visibility-provider.js.map +1 -0
  767. package/dist/seo/ai-visibility-scorer.d.ts +43 -0
  768. package/dist/seo/ai-visibility-scorer.d.ts.map +1 -0
  769. package/dist/seo/ai-visibility-scorer.js +102 -0
  770. package/dist/seo/ai-visibility-scorer.js.map +1 -0
  771. package/dist/seo/analyzer.d.ts +58 -0
  772. package/dist/seo/analyzer.d.ts.map +1 -0
  773. package/dist/seo/analyzer.js +265 -0
  774. package/dist/seo/analyzer.js.map +1 -0
  775. package/dist/seo/benchmark/harness.d.ts +56 -0
  776. package/dist/seo/benchmark/harness.d.ts.map +1 -0
  777. package/dist/seo/benchmark/harness.js +172 -0
  778. package/dist/seo/benchmark/harness.js.map +1 -0
  779. package/dist/seo/builder/approved-finding.d.ts +115 -0
  780. package/dist/seo/builder/approved-finding.d.ts.map +1 -0
  781. package/dist/seo/builder/approved-finding.js +145 -0
  782. package/dist/seo/builder/approved-finding.js.map +1 -0
  783. package/dist/seo/builder/build-runner.d.ts +41 -0
  784. package/dist/seo/builder/build-runner.d.ts.map +1 -0
  785. package/dist/seo/builder/build-runner.js +156 -0
  786. package/dist/seo/builder/build-runner.js.map +1 -0
  787. package/dist/seo/builder/draft-generators.d.ts +32 -0
  788. package/dist/seo/builder/draft-generators.d.ts.map +1 -0
  789. package/dist/seo/builder/draft-generators.js +31 -0
  790. package/dist/seo/builder/draft-generators.js.map +1 -0
  791. package/dist/seo/builder/draft-store.d.ts +30 -0
  792. package/dist/seo/builder/draft-store.d.ts.map +1 -0
  793. package/dist/seo/builder/draft-store.js +76 -0
  794. package/dist/seo/builder/draft-store.js.map +1 -0
  795. package/dist/seo/builder/draft-types.d.ts +36 -0
  796. package/dist/seo/builder/draft-types.d.ts.map +1 -0
  797. package/dist/seo/builder/draft-types.js +14 -0
  798. package/dist/seo/builder/draft-types.js.map +1 -0
  799. package/dist/seo/builder/hub-approved-source.d.ts +11 -0
  800. package/dist/seo/builder/hub-approved-source.d.ts.map +1 -0
  801. package/dist/seo/builder/hub-approved-source.js +48 -0
  802. package/dist/seo/builder/hub-approved-source.js.map +1 -0
  803. package/dist/seo/builder/seo-builder.d.ts +72 -0
  804. package/dist/seo/builder/seo-builder.d.ts.map +1 -0
  805. package/dist/seo/builder/seo-builder.js +72 -0
  806. package/dist/seo/builder/seo-builder.js.map +1 -0
  807. package/dist/seo/citation-gate.d.ts +36 -0
  808. package/dist/seo/citation-gate.d.ts.map +1 -0
  809. package/dist/seo/citation-gate.js +59 -0
  810. package/dist/seo/citation-gate.js.map +1 -0
  811. package/dist/seo/command.d.ts +11 -0
  812. package/dist/seo/command.d.ts.map +1 -0
  813. package/dist/seo/command.js +90 -0
  814. package/dist/seo/command.js.map +1 -0
  815. package/dist/seo/content-sanitizer.d.ts +56 -0
  816. package/dist/seo/content-sanitizer.d.ts.map +1 -0
  817. package/dist/seo/content-sanitizer.js +55 -0
  818. package/dist/seo/content-sanitizer.js.map +1 -0
  819. package/dist/seo/crawl-engine.d.ts +35 -0
  820. package/dist/seo/crawl-engine.d.ts.map +1 -0
  821. package/dist/seo/crawl-engine.js +2 -0
  822. package/dist/seo/crawl-engine.js.map +1 -0
  823. package/dist/seo/data-source.d.ts +156 -0
  824. package/dist/seo/data-source.d.ts.map +1 -0
  825. package/dist/seo/data-source.js +2 -0
  826. package/dist/seo/data-source.js.map +1 -0
  827. package/dist/seo/egress.d.ts +39 -0
  828. package/dist/seo/egress.d.ts.map +1 -0
  829. package/dist/seo/egress.js +64 -0
  830. package/dist/seo/egress.js.map +1 -0
  831. package/dist/seo/hub-emitter.d.ts +28 -0
  832. package/dist/seo/hub-emitter.d.ts.map +1 -0
  833. package/dist/seo/hub-emitter.js +95 -0
  834. package/dist/seo/hub-emitter.js.map +1 -0
  835. package/dist/seo/index.d.ts +42 -0
  836. package/dist/seo/index.d.ts.map +1 -0
  837. package/dist/seo/index.js +19 -0
  838. package/dist/seo/index.js.map +1 -0
  839. package/dist/seo/never-encode-filter.d.ts +45 -0
  840. package/dist/seo/never-encode-filter.d.ts.map +1 -0
  841. package/dist/seo/never-encode-filter.js +51 -0
  842. package/dist/seo/never-encode-filter.js.map +1 -0
  843. package/dist/seo/parser.d.ts +46 -0
  844. package/dist/seo/parser.d.ts.map +1 -0
  845. package/dist/seo/parser.js +113 -0
  846. package/dist/seo/parser.js.map +1 -0
  847. package/dist/seo/playbook-index.d.ts +19 -0
  848. package/dist/seo/playbook-index.d.ts.map +1 -0
  849. package/dist/seo/playbook-index.js +74 -0
  850. package/dist/seo/playbook-index.js.map +1 -0
  851. package/dist/seo/quota-governor.d.ts +100 -0
  852. package/dist/seo/quota-governor.d.ts.map +1 -0
  853. package/dist/seo/quota-governor.js +199 -0
  854. package/dist/seo/quota-governor.js.map +1 -0
  855. package/dist/seo/quota-ledger.d.ts +50 -0
  856. package/dist/seo/quota-ledger.d.ts.map +1 -0
  857. package/dist/seo/quota-ledger.js +95 -0
  858. package/dist/seo/quota-ledger.js.map +1 -0
  859. package/dist/seo/report-store.d.ts +30 -0
  860. package/dist/seo/report-store.d.ts.map +1 -0
  861. package/dist/seo/report-store.js +94 -0
  862. package/dist/seo/report-store.js.map +1 -0
  863. package/dist/seo/retriever.d.ts +34 -0
  864. package/dist/seo/retriever.d.ts.map +1 -0
  865. package/dist/seo/retriever.js +95 -0
  866. package/dist/seo/retriever.js.map +1 -0
  867. package/dist/seo/runner.d.ts +108 -0
  868. package/dist/seo/runner.d.ts.map +1 -0
  869. package/dist/seo/runner.js +512 -0
  870. package/dist/seo/runner.js.map +1 -0
  871. package/dist/seo/scrape-throttle.d.ts +84 -0
  872. package/dist/seo/scrape-throttle.d.ts.map +1 -0
  873. package/dist/seo/scrape-throttle.js +149 -0
  874. package/dist/seo/scrape-throttle.js.map +1 -0
  875. package/dist/seo/serp-provider.d.ts +52 -0
  876. package/dist/seo/serp-provider.d.ts.map +1 -0
  877. package/dist/seo/serp-provider.js +17 -0
  878. package/dist/seo/serp-provider.js.map +1 -0
  879. package/dist/seo/sources/ai-visibility-adapter.d.ts +87 -0
  880. package/dist/seo/sources/ai-visibility-adapter.d.ts.map +1 -0
  881. package/dist/seo/sources/ai-visibility-adapter.js +85 -0
  882. package/dist/seo/sources/ai-visibility-adapter.js.map +1 -0
  883. package/dist/seo/sources/api-spine-provider.d.ts +66 -0
  884. package/dist/seo/sources/api-spine-provider.d.ts.map +1 -0
  885. package/dist/seo/sources/api-spine-provider.js +68 -0
  886. package/dist/seo/sources/api-spine-provider.js.map +1 -0
  887. package/dist/seo/sources/citation-verifier.d.ts +95 -0
  888. package/dist/seo/sources/citation-verifier.d.ts.map +1 -0
  889. package/dist/seo/sources/citation-verifier.js +106 -0
  890. package/dist/seo/sources/citation-verifier.js.map +1 -0
  891. package/dist/seo/sources/crawl-source.d.ts +62 -0
  892. package/dist/seo/sources/crawl-source.d.ts.map +1 -0
  893. package/dist/seo/sources/crawl-source.js +87 -0
  894. package/dist/seo/sources/crawl-source.js.map +1 -0
  895. package/dist/seo/sources/damcrawler-crawl-engine.d.ts +151 -0
  896. package/dist/seo/sources/damcrawler-crawl-engine.d.ts.map +1 -0
  897. package/dist/seo/sources/damcrawler-crawl-engine.js +154 -0
  898. package/dist/seo/sources/damcrawler-crawl-engine.js.map +1 -0
  899. package/dist/seo/sources/damcrawler-serp-provider.d.ts +75 -0
  900. package/dist/seo/sources/damcrawler-serp-provider.d.ts.map +1 -0
  901. package/dist/seo/sources/damcrawler-serp-provider.js +60 -0
  902. package/dist/seo/sources/damcrawler-serp-provider.js.map +1 -0
  903. package/dist/seo/sources/dataforseo-adapter.d.ts +46 -0
  904. package/dist/seo/sources/dataforseo-adapter.d.ts.map +1 -0
  905. package/dist/seo/sources/dataforseo-adapter.js +335 -0
  906. package/dist/seo/sources/dataforseo-adapter.js.map +1 -0
  907. package/dist/seo/sources/dataforseo-serp-provider.d.ts +30 -0
  908. package/dist/seo/sources/dataforseo-serp-provider.d.ts.map +1 -0
  909. package/dist/seo/sources/dataforseo-serp-provider.js +20 -0
  910. package/dist/seo/sources/dataforseo-serp-provider.js.map +1 -0
  911. package/dist/seo/sources/engine-scrape-parser-chatgpt.d.ts +62 -0
  912. package/dist/seo/sources/engine-scrape-parser-chatgpt.d.ts.map +1 -0
  913. package/dist/seo/sources/engine-scrape-parser-chatgpt.js +72 -0
  914. package/dist/seo/sources/engine-scrape-parser-chatgpt.js.map +1 -0
  915. package/dist/seo/sources/engine-scrape-parser-perplexity.d.ts +10 -0
  916. package/dist/seo/sources/engine-scrape-parser-perplexity.d.ts.map +1 -0
  917. package/dist/seo/sources/engine-scrape-parser-perplexity.js +72 -0
  918. package/dist/seo/sources/engine-scrape-parser-perplexity.js.map +1 -0
  919. package/dist/seo/sources/gsc-adapter.d.ts +64 -0
  920. package/dist/seo/sources/gsc-adapter.d.ts.map +1 -0
  921. package/dist/seo/sources/gsc-adapter.js +221 -0
  922. package/dist/seo/sources/gsc-adapter.js.map +1 -0
  923. package/dist/seo/sources/local-export.d.ts +53 -0
  924. package/dist/seo/sources/local-export.d.ts.map +1 -0
  925. package/dist/seo/sources/local-export.js +307 -0
  926. package/dist/seo/sources/local-export.js.map +1 -0
  927. package/dist/seo/sources/mention-citation-extractor.d.ts +136 -0
  928. package/dist/seo/sources/mention-citation-extractor.d.ts.map +1 -0
  929. package/dist/seo/sources/mention-citation-extractor.js +272 -0
  930. package/dist/seo/sources/mention-citation-extractor.js.map +1 -0
  931. package/dist/seo/sources/scrape-arm-provider.d.ts +109 -0
  932. package/dist/seo/sources/scrape-arm-provider.d.ts.map +1 -0
  933. package/dist/seo/sources/scrape-arm-provider.js +129 -0
  934. package/dist/seo/sources/scrape-arm-provider.js.map +1 -0
  935. package/dist/seo/tracked-prompt-store.d.ts +33 -0
  936. package/dist/seo/tracked-prompt-store.d.ts.map +1 -0
  937. package/dist/seo/tracked-prompt-store.js +68 -0
  938. package/dist/seo/tracked-prompt-store.js.map +1 -0
  939. package/dist/seo/types.d.ts +128 -0
  940. package/dist/seo/types.d.ts.map +1 -0
  941. package/dist/seo/types.js +14 -0
  942. package/dist/seo/types.js.map +1 -0
  943. package/dist/seo/verifier.d.ts +34 -0
  944. package/dist/seo/verifier.d.ts.map +1 -0
  945. package/dist/seo/verifier.js +204 -0
  946. package/dist/seo/verifier.js.map +1 -0
  947. package/dist/seo/workflow-capabilities.d.ts +26 -0
  948. package/dist/seo/workflow-capabilities.d.ts.map +1 -0
  949. package/dist/seo/workflow-capabilities.js +12 -0
  950. package/dist/seo/workflow-capabilities.js.map +1 -0
  951. package/dist/state/facts.d.ts +114 -0
  952. package/dist/state/facts.d.ts.map +1 -0
  953. package/dist/state/facts.js +218 -0
  954. package/dist/state/facts.js.map +1 -0
  955. package/dist/state/guidance.d.ts +37 -0
  956. package/dist/state/guidance.d.ts.map +1 -0
  957. package/dist/state/guidance.js +144 -0
  958. package/dist/state/guidance.js.map +1 -0
  959. package/dist/state/history.d.ts +2 -2
  960. package/dist/state/index.d.ts +2 -2
  961. package/dist/state/index.d.ts.map +1 -1
  962. package/dist/state/index.js +2 -2
  963. package/dist/state/index.js.map +1 -1
  964. package/dist/state/memory.d.ts +43 -11
  965. package/dist/state/memory.d.ts.map +1 -1
  966. package/dist/state/memory.js +93 -15
  967. package/dist/state/memory.js.map +1 -1
  968. package/dist/state/outline-state.d.ts +0 -12
  969. package/dist/state/outline-state.d.ts.map +1 -1
  970. package/dist/state/outline-state.js +1 -18
  971. package/dist/state/outline-state.js.map +1 -1
  972. package/dist/state/pause.d.ts +47 -0
  973. package/dist/state/pause.d.ts.map +1 -0
  974. package/dist/state/pause.js +146 -0
  975. package/dist/state/pause.js.map +1 -0
  976. package/dist/state/security-audit-state.d.ts +20 -0
  977. package/dist/state/security-audit-state.d.ts.map +1 -0
  978. package/dist/state/security-audit-state.js +59 -0
  979. package/dist/state/security-audit-state.js.map +1 -0
  980. package/dist/state/sprint-state.d.ts +8 -0
  981. package/dist/state/sprint-state.d.ts.map +1 -1
  982. package/dist/state/sprint-state.js +32 -1
  983. package/dist/state/sprint-state.js.map +1 -1
  984. package/dist/teams/registry.d.ts +16 -0
  985. package/dist/teams/registry.d.ts.map +1 -0
  986. package/dist/teams/registry.js +70 -0
  987. package/dist/teams/registry.js.map +1 -0
  988. package/dist/teams/types.d.ts +25 -0
  989. package/dist/teams/types.d.ts.map +1 -0
  990. package/dist/teams/types.js +2 -0
  991. package/dist/teams/types.js.map +1 -0
  992. package/dist/telegram/bot.d.ts +137 -0
  993. package/dist/telegram/bot.d.ts.map +1 -0
  994. package/dist/telegram/bot.js +323 -0
  995. package/dist/telegram/bot.js.map +1 -0
  996. package/dist/telegram/digest.d.ts +19 -0
  997. package/dist/telegram/digest.d.ts.map +1 -0
  998. package/dist/telegram/digest.js +23 -0
  999. package/dist/telegram/digest.js.map +1 -0
  1000. package/dist/telegram/fleet-view.d.ts +38 -0
  1001. package/dist/telegram/fleet-view.d.ts.map +1 -0
  1002. package/dist/telegram/fleet-view.js +98 -0
  1003. package/dist/telegram/fleet-view.js.map +1 -0
  1004. package/dist/telegram/handlers/approvals.d.ts +61 -0
  1005. package/dist/telegram/handlers/approvals.d.ts.map +1 -0
  1006. package/dist/telegram/handlers/approvals.js +122 -0
  1007. package/dist/telegram/handlers/approvals.js.map +1 -0
  1008. package/dist/telegram/handlers/capture.d.ts +43 -0
  1009. package/dist/telegram/handlers/capture.d.ts.map +1 -0
  1010. package/dist/telegram/handlers/capture.js +51 -0
  1011. package/dist/telegram/handlers/capture.js.map +1 -0
  1012. package/dist/telegram/handlers/prioritize.d.ts +50 -0
  1013. package/dist/telegram/handlers/prioritize.d.ts.map +1 -0
  1014. package/dist/telegram/handlers/prioritize.js +99 -0
  1015. package/dist/telegram/handlers/prioritize.js.map +1 -0
  1016. package/dist/telegram/handlers/upload.d.ts +105 -0
  1017. package/dist/telegram/handlers/upload.d.ts.map +1 -0
  1018. package/dist/telegram/handlers/upload.js +149 -0
  1019. package/dist/telegram/handlers/upload.js.map +1 -0
  1020. package/dist/telegram/keyboard.d.ts +48 -0
  1021. package/dist/telegram/keyboard.d.ts.map +1 -0
  1022. package/dist/telegram/keyboard.js +81 -0
  1023. package/dist/telegram/keyboard.js.map +1 -0
  1024. package/dist/telegram/outbound.d.ts +77 -0
  1025. package/dist/telegram/outbound.d.ts.map +1 -0
  1026. package/dist/telegram/outbound.js +45 -0
  1027. package/dist/telegram/outbound.js.map +1 -0
  1028. package/dist/telegram/router.d.ts +46 -0
  1029. package/dist/telegram/router.d.ts.map +1 -0
  1030. package/dist/telegram/router.js +63 -0
  1031. package/dist/telegram/router.js.map +1 -0
  1032. package/dist/telegram/streaming.d.ts +36 -0
  1033. package/dist/telegram/streaming.d.ts.map +1 -0
  1034. package/dist/telegram/streaming.js +55 -0
  1035. package/dist/telegram/streaming.js.map +1 -0
  1036. package/dist/telegram/whitelist.d.ts +20 -0
  1037. package/dist/telegram/whitelist.d.ts.map +1 -0
  1038. package/dist/telegram/whitelist.js +34 -0
  1039. package/dist/telegram/whitelist.js.map +1 -0
  1040. package/dist/utils/git.d.ts +0 -6
  1041. package/dist/utils/git.d.ts.map +1 -1
  1042. package/dist/utils/git.js +0 -19
  1043. package/dist/utils/git.js.map +1 -1
  1044. package/dist/utils/index.d.ts +1 -1
  1045. package/dist/utils/index.d.ts.map +1 -1
  1046. package/dist/utils/index.js +1 -1
  1047. package/dist/utils/index.js.map +1 -1
  1048. package/dist/vault/conventions.d.ts +23 -0
  1049. package/dist/vault/conventions.d.ts.map +1 -0
  1050. package/dist/vault/conventions.js +22 -0
  1051. package/dist/vault/conventions.js.map +1 -0
  1052. package/dist/vault/frontmatter.d.ts +47 -0
  1053. package/dist/vault/frontmatter.d.ts.map +1 -0
  1054. package/dist/vault/frontmatter.js +149 -0
  1055. package/dist/vault/frontmatter.js.map +1 -0
  1056. package/dist/vault/index-map.d.ts +35 -0
  1057. package/dist/vault/index-map.d.ts.map +1 -0
  1058. package/dist/vault/index-map.js +67 -0
  1059. package/dist/vault/index-map.js.map +1 -0
  1060. package/dist/vault/mcp-adapter.d.ts +96 -0
  1061. package/dist/vault/mcp-adapter.d.ts.map +1 -0
  1062. package/dist/vault/mcp-adapter.js +176 -0
  1063. package/dist/vault/mcp-adapter.js.map +1 -0
  1064. package/dist/vault/note-io.d.ts +29 -0
  1065. package/dist/vault/note-io.d.ts.map +1 -0
  1066. package/dist/vault/note-io.js +44 -0
  1067. package/dist/vault/note-io.js.map +1 -0
  1068. package/dist/vault/profile.d.ts +35 -0
  1069. package/dist/vault/profile.d.ts.map +1 -0
  1070. package/dist/vault/profile.js +50 -0
  1071. package/dist/vault/profile.js.map +1 -0
  1072. package/dist/vault/reindex.d.ts +55 -0
  1073. package/dist/vault/reindex.d.ts.map +1 -0
  1074. package/dist/vault/reindex.js +69 -0
  1075. package/dist/vault/reindex.js.map +1 -0
  1076. package/dist/vault/types.d.ts +25 -0
  1077. package/dist/vault/types.d.ts.map +1 -0
  1078. package/dist/vault/types.js +9 -0
  1079. package/dist/vault/types.js.map +1 -0
  1080. package/package.json +22 -4
  1081. package/scripts/sync-targets.json +2 -1
  1082. package/skills/bober.design/SKILL.md +190 -0
  1083. package/skills/bober.design/references/1-anti-slop.md +102 -0
  1084. package/skills/bober.design/references/2-design-brief.md +84 -0
  1085. package/skills/bober.design/references/3-critique-rubric.md +62 -0
  1086. package/skills/bober.design/references/4-copy-guide.md +43 -0
  1087. package/skills/bober.plan/SKILL.md +15 -1
  1088. package/skills/bober.run/SKILL.md +7 -4
  1089. package/skills/bober.security-anchor/SKILL.md +172 -0
  1090. package/skills/bober.security-audit/SKILL.md +288 -0
  1091. package/skills/bober.security-dex-backend/SKILL.md +306 -0
  1092. package/skills/bober.security-generic/SKILL.md +295 -0
  1093. package/skills/bober.security-igaming/SKILL.md +290 -0
  1094. package/skills/bober.security-node/SKILL.md +267 -0
  1095. package/skills/bober.security-payments/SKILL.md +249 -0
  1096. package/skills/bober.security-react/SKILL.md +194 -0
  1097. package/skills/bober.security-solidity/SKILL.md +306 -0
  1098. package/skills/bober.seo/SKILL.md +132 -0
  1099. package/skills/bober.seo-ai-visibility/SKILL.md +110 -0
  1100. package/skills/bober.seo-content-decay/SKILL.md +99 -0
  1101. package/skills/bober.seo-generic/SKILL.md +173 -0
  1102. package/skills/bober.seo-internal-linking/SKILL.md +87 -0
  1103. package/skills/bober.seo-parasite-watch/SKILL.md +121 -0
  1104. package/skills/bober.seo-rank-track/SKILL.md +98 -0
  1105. package/skills/bober.seo-schema-audit/SKILL.md +97 -0
  1106. package/skills/bober.seo-technical-audit/SKILL.md +113 -0
  1107. package/skills/bober.seo-topical-map/SKILL.md +100 -0
  1108. package/skills/bober.seo-verticals/SKILL.md +133 -0
  1109. package/skills/bober.using-bober/SKILL.md +1 -0
@@ -0,0 +1,173 @@
1
+ ---
2
+ name: bober.seo-generic
3
+ description: "Generic SEO/GEO signature library shared across every workflow-specific SEO skill. Not a workflow skill -- a data file of discrete, cited SEO/GEO tactics read by SeoPlaybookParser. Encodes VERIFIED 2025-2026 AI-visibility correlation research (Ahrefs, Semrush, Profound), ranking-mechanics leak findings, and the never-encode policy boundary."
4
+ ---
5
+
6
+ # bober.seo-generic — Generic SEO/GEO Signature Library
7
+
8
+ This skill is a **signature-library** file, not a workflow skill. It is read (as raw
9
+ markdown text) by `SeoPlaybookParser.parse()` (`src/seo/parser.ts`) and turned into
10
+ typed `SeoSignature[]` records used by the SEO agent team's retriever
11
+ (`SeoPlaybookRetriever`) as the always-included generic floor. Every surviving
12
+ signature below cites its primary source; a block with no `PrimarySourceUrl` or
13
+ tagged `PolicyClass: never-encode` is DROPPED by the parser at load time — see
14
+ `.bober/research/research-20260715-ultimate-seo-agents-skills-research.md` §1/§6 for
15
+ the underlying evidence and the two refuted claims that are deliberately NOT encoded
16
+ anywhere in this file (ChatGPT-Wikipedia dominance, Reddit-leading-AI-Overviews).
17
+
18
+ ## Signature Block Format
19
+
20
+ Each signature is a level-3 heading (three `#` characters, a space, then the
21
+ `playbookId`) followed by labelled fields. This file and `SeoPlaybookParser` are one
22
+ executable spec — keep them in sync. Unlike the security signature library, SEO
23
+ blocks carry **no code fences** — `Tactic` replaces the unsafe/safe example pair.
24
+
25
+ Fields per block:
26
+ - The heading text itself is the `playbookId` (must be non-empty, or the block is dropped).
27
+ - `- **Title:** <human-readable title>` (required — missing drops the block)
28
+ - `- **Workflows:** comma, separated, SeoWorkflow, members` (soft field; invalid members are filtered out, default `[]`)
29
+ - `- **Tactic:** <the recommended action>` (soft field, defaults to `""` if absent)
30
+ - `- **Invariant:** <the evidence-backed claim this signature encodes>` (soft field, defaults to `""` if absent)
31
+ - `- **PrimarySourceUrl:** <REQUIRED citation URL>` — **a block missing or with an empty value here is DROPPED** (no-uncited-claim rule; the whole point of this format)
32
+ - `- **PolicyClass:** auto-safe|human-approve|never-encode` — **`never-encode` is DROPPED**; any other invalid value is also DROPPED
33
+ - `- **EvidenceGrade:** verified|primary-unverified|single-source` (soft field, defaults to `single-source` if absent/invalid)
34
+ - `- **LiveWeightStatus:** live-corroborated|documented-only|unknown` (soft field, defaults to `unknown` if absent/invalid — encodes whether the invariant is corroborated by a live ranking signal or is documented-only guidance; `documented-only` + a `firm` model finding is downgraded to `tentative` by the analyzer)
35
+ - `- **Keywords:** comma, separated, keywords` (soft field, defaults to `[]`)
36
+
37
+ A block missing `Title`, `PrimarySourceUrl`, or a valid `PolicyClass` is dropped by the
38
+ parser — never a fatal error. A `never-encode` block is dropped even when every other
39
+ field is present: it documents the automation boundary for human readers but must
40
+ never reach an analyzer prompt.
41
+
42
+ ## Signatures
43
+
44
+ ### youtube-mentions-ai-visibility
45
+ - **Title:** YouTube mentions are the strongest AI-visibility correlate
46
+ - **Workflows:** ai-visibility
47
+ - **Tactic:** Prioritise earning brand presence and mentions on YouTube (owned channel content, creator partnerships, video PR) as a first-class AI-visibility lever, not an afterthought to written-content SEO.
48
+ - **Invariant:** Across ChatGPT, Google AI Mode, and AI Overviews, YouTube mentions show the single highest correlation (~0.737 Spearman) with brand visibility in AI answers, in a 75,000-brand Ahrefs correlation study.
49
+ - **PrimarySourceUrl:** https://ahrefs.com/blog/ai-brand-visibility-correlations/
50
+ - **PolicyClass:** human-approve
51
+ - **EvidenceGrade:** verified
52
+ - **Keywords:** youtube, ai-visibility, brand-mention, geo, correlation
53
+
54
+ ### branded-mentions-ai-visibility
55
+ - **Title:** Branded web mentions (linked or unlinked) are the strongest non-video AI-visibility signal
56
+ - **Workflows:** ai-visibility
57
+ - **Tactic:** Pursue digital-PR and organic brand-mention placements across the web; unlinked mentions still count toward AI-visibility correlation, so do not discount coverage that omits a hyperlink.
58
+ - **Invariant:** Branded web mentions (linked or unlinked) correlate at 0.66-0.71 with brand visibility in AI answers — the strongest non-YouTube signal in the same 75,000-brand study.
59
+ - **PrimarySourceUrl:** https://ahrefs.com/blog/ai-brand-visibility-correlations/
60
+ - **PolicyClass:** human-approve
61
+ - **EvidenceGrade:** verified
62
+ - **Keywords:** brand-mention, digital-pr, ai-visibility, geo, unlinked-mention
63
+
64
+ ### link-volume-weak-for-ai
65
+ - **Title:** Classic backlink volume is a weak lever for AI visibility
66
+ - **Workflows:** ai-visibility
67
+ - **Tactic:** Do not spend budget on bulk backlink-volume link building as a primary AI-visibility lever; redirect it toward branded mentions and YouTube presence, which correlate far more strongly.
68
+ - **Invariant:** Classic link metrics (backlink count, URL rating) show very weak correlation (~0.218) with AI-answer brand mentions, in the same 75,000-brand study.
69
+ - **PrimarySourceUrl:** https://ahrefs.com/blog/ai-brand-visibility-correlations/
70
+ - **PolicyClass:** auto-safe
71
+ - **EvidenceGrade:** verified
72
+ - **Keywords:** backlinks, link-building, ai-visibility, weak-correlation
73
+
74
+ ### aio-commercial-intent-shift
75
+ - **Title:** AI Overviews triggers have shifted toward commercial/transactional intent
76
+ - **Workflows:** ai-visibility, rank-track
77
+ - **Tactic:** Prioritise AIO-visibility work on commercial and transactional queries, not only informational content — the trigger mix has moved decisively toward money queries.
78
+ - **Invariant:** AIO intent mix shifted Jan-Oct 2025: informational share fell 91.3%->57.1% of triggers while commercial rose to 18.57% and transactional to 13.94%, per a Semrush 10M+ keyword panel.
79
+ - **PrimarySourceUrl:** https://www.semrush.com/blog/semrush-ai-overviews-study/
80
+ - **PolicyClass:** auto-safe
81
+ - **EvidenceGrade:** verified
82
+ - **Keywords:** aio, commercial-intent, transactional, rank-track
83
+
84
+ ### aio-prevalence-volatility
85
+ - **Title:** AI Overview prevalence is highly volatile — plan for churn, not a stable surface
86
+ - **Workflows:** ai-visibility
87
+ - **Tactic:** Re-measure AIO prevalence for target queries on a recurring cadence rather than assuming a one-time audit is durable; build monitoring, not a static report.
88
+ - **Invariant:** AIO prevalence fluctuated hard through 2025: 6.49% of queries (Jan) -> 24.61% (Jul) -> 15.69% (Nov), per the same Semrush 10M+ keyword panel.
89
+ - **PrimarySourceUrl:** https://www.semrush.com/blog/semrush-ai-overviews-study/
90
+ - **PolicyClass:** auto-safe
91
+ - **EvidenceGrade:** verified
92
+ - **Keywords:** aio, volatility, monitoring, rank-track
93
+
94
+ ### zero-click-not-collapsing
95
+ - **Title:** Zero-click rate did not spike after AI Overviews — do not over-index on click-loss panic
96
+ - **Workflows:** ai-visibility
97
+ - **Tactic:** Do not justify SEO/GEO investment primarily on a claimed AIO-driven zero-click collapse; the measured effect is small, so frame AI-visibility work around brand exposure and citation share instead.
98
+ - **Invariant:** Zero-click rate slightly DECREASED (33.75%->31.53%) on keywords after AIOs appeared, in a 200K+ keyword before/after study validated against Datos clickstream data.
99
+ - **PrimarySourceUrl:** https://www.semrush.com/blog/semrush-ai-overviews-study/
100
+ - **PolicyClass:** auto-safe
101
+ - **EvidenceGrade:** verified
102
+ - **Keywords:** zero-click, aio, clickstream, datos
103
+
104
+ ### aio-citations-decouple-top10
105
+ - **Title:** AIO citations increasingly decouple from organic top-10 rankings
106
+ - **Workflows:** ai-visibility, technical-audit
107
+ - **Tactic:** Do not assume organic top-10 ranking is required for AIO citation; audit AIO citation coverage separately from rank-tracking, since a majority of cited pages now rank outside the top 10.
108
+ - **Invariant:** Only 38% of AIO-cited pages ranked in the organic top-10 as of Jan 2026 (down from ~76% in Jul 2025); 31.2% of cited pages ranked 11-100 and 31.0% ranked beyond top-100, per an Ahrefs analysis of 863K SERPs / 4M AIO URLs.
109
+ - **PrimarySourceUrl:** https://ahrefs.com/blog/ai-overview-citations-top-10/
110
+ - **PolicyClass:** auto-safe
111
+ - **EvidenceGrade:** verified
112
+ - **Keywords:** aio, citations, top10, technical-audit
113
+
114
+ ### ghost-citations
115
+ - **Title:** Most AI citations are "ghost citations" — cited as a source but never named
116
+ - **Workflows:** ai-visibility
117
+ - **Tactic:** Track citation rate and brand-mention rate as two distinct AI-visibility metrics; a page being cited as a source link does not mean the brand is actually named in the answer.
118
+ - **Invariant:** 61.7% of AI citations are "ghost citations" — the source page is linked but the brand is never named in the answer, across 3,981 domain appearances / 115 prompts / 4 platforms / 14 countries (Semrush/Kevin Indig study).
119
+ - **PrimarySourceUrl:** https://www.semrush.com/blog/the-ghost-citations-study/
120
+ - **PolicyClass:** auto-safe
121
+ - **EvidenceGrade:** verified
122
+ - **Keywords:** ghost-citation, citation-rate, mention-rate, ai-visibility
123
+
124
+ ### query-fan-out-coverage
125
+ - **Title:** AI Overviews retrieve via query fan-out — optimize for the fan-out set, not just the head keyword
126
+ - **Workflows:** topical-map, ai-visibility
127
+ - **Tactic:** Build topical-map content that comprehensively covers the fan-out query set around a topic (related sub-questions, comparisons, specifications) rather than optimizing a single page for one head keyword.
128
+ - **Invariant:** AI Overviews retrieve results via query fan-out (generating and retrieving against a broadened set of related sub-queries), so single-keyword-optimized pages under-cover what AIO actually retrieves against.
129
+ - **PrimarySourceUrl:** https://ahrefs.com/blog/ai-overview-citations-top-10/
130
+ - **PolicyClass:** auto-safe
131
+ - **EvidenceGrade:** single-source
132
+ - **Keywords:** fan-out, topical-map, query-expansion, aio
133
+
134
+ ### perplexity-community-weighted
135
+ - **Title:** Perplexity is the most community-weighted AI platform — Reddit dominates its citation mix
136
+ - **Workflows:** ai-visibility
137
+ - **Tactic:** For Perplexity-specific AI-visibility work, prioritise genuine community presence and discussion (Reddit and similar forums) over traditional publisher-style content placement.
138
+ - **Invariant:** Perplexity is the most community-weighted platform in a 680M-citation study: Reddit accounts for 6.6% of ALL Perplexity citations and 46.7% of its top-source citations.
139
+ - **PrimarySourceUrl:** https://www.tryprofound.com/blog/ai-platform-citation-patterns
140
+ - **PolicyClass:** auto-safe
141
+ - **EvidenceGrade:** verified
142
+ - **Keywords:** perplexity, reddit, community, platform-specific
143
+
144
+ ### sitefocus-topical-authority
145
+ - **Title:** Topical authority is mechanically scored — site focus and page-topic deviation affect ranking potential
146
+ - **Workflows:** topical-map
147
+ - **Tactic:** Keep new content aligned to the site's established topical focus; treat high-deviation off-topic pages as ranking-risk outliers rather than easy incremental traffic.
148
+ - **Invariant:** The leaked Google Content Warehouse API documents a siteFocusScore (site dedication to one topic) and siteRadius (page deviation from the site's central theme) that operationalize topical authority; high-deviation pages are documented ranking outliers.
149
+ - **PrimarySourceUrl:** https://sparktoro.com/blog/an-anonymous-source-shared-thousands-of-leaked-google-search-api-documents-with-me-everyone-in-seo-should-see-them/
150
+ - **PolicyClass:** auto-safe
151
+ - **EvidenceGrade:** single-source
152
+ - **LiveWeightStatus:** documented-only
153
+ - **Keywords:** topical-authority, sitefocus, site-radius, leak
154
+
155
+ ### schema-entity-aio-lift
156
+ - **Title:** Entity/schema markup measurably lifts AI Overview visibility
157
+ - **Workflows:** schema-audit, ai-visibility
158
+ - **Tactic:** Implement and validate entity-linking schema markup (Organization, Product, FAQ, and related structured data) as a standard part of every technical/schema audit, not an optional add-on.
159
+ - **Invariant:** A documented Schema App case study measured +19.72% AI Overview visibility from entity-linking / schema-markup work — one of the few quantified schema-to-GEO results.
160
+ - **PrimarySourceUrl:** https://www.schemaapp.com/schema-markup/case-study-entity-linking-increases-aio-visibility/
161
+ - **PolicyClass:** auto-safe
162
+ - **EvidenceGrade:** single-source
163
+ - **Keywords:** schema, entity, structured-data, aio-lift
164
+
165
+ ### parasite-seo-placement
166
+ - **Title:** Parasite SEO placement on high-authority third-party hosts
167
+ - **Workflows:** parasite-watch
168
+ - **Tactic:** NEVER encode as an actionable tactic — placing brand content on a high-authority third-party domain (forum, subreddit, unrelated news site) specifically to borrow its ranking signal is a Google site-reputation-abuse policy violation. The Nov 2024 policy update closed the first-party-involvement loophole: no amount of oversight, white-labeling, or licensing exempts this.
169
+ - **Invariant:** This tactic must never be recommended, even as a human-approval-gated option — it is a named policy violation, not a judgment call the suite should surface as an option.
170
+ - **PrimarySourceUrl:** https://developers.google.com/search/blog/2024/03/core-update-spam-policies
171
+ - **PolicyClass:** never-encode
172
+ - **EvidenceGrade:** primary-unverified
173
+ - **Keywords:** parasite-seo, site-reputation-abuse, never-encode, policy-violation
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: bober.seo-internal-linking
3
+ description: "Per-workflow SEO signature library for the internal-linking workflow. A data file of discrete, cited SEO tactics read by SeoPlaybookParser (src/seo/parser.ts), not a workflow skill. Encodes leak-grounded siteFocusScore/siteRadius topical-consolidation signals and fresh/top-tier-indexed link value for the internal-linking workflow."
4
+ ---
5
+
6
+ # bober.seo-internal-linking — Internal Linking Signature Library
7
+
8
+ This skill is a **signature-library** file for the `internal-linking` workflow, not a
9
+ workflow skill in its own right. It is read (as raw markdown text) by
10
+ `SeoPlaybookParser.parse()` (`src/seo/parser.ts`) and turned into typed
11
+ `SeoSignature[]` records consumed by the SEO agent team's retriever
12
+ (`SeoPlaybookRetriever`). It follows the identical block format defined and
13
+ documented in `skills/bober.seo-generic/SKILL.md` ("Signature Block Format") --
14
+ the two files are one executable spec; a block missing `Title` or
15
+ `PrimarySourceUrl`, or tagged `PolicyClass: never-encode`, is DROPPED by the
16
+ parser at load time -- see `.bober/research/research-20260715-ultimate-seo-agents-skills-research.md`
17
+ for the underlying evidence.
18
+
19
+ The signatures below encode the leaked Google Content Warehouse API's
20
+ `siteFocusScore` / `siteRadius` topical-consolidation attributes, the
21
+ tactical implication that fresh/top-tier-indexed pages pass more link
22
+ value, and the anchor-text demotion signal. Most signatures here are
23
+ **read-only analysis** (auto-safe); the one signature that would execute a
24
+ redirect or page-merge is `human-approve`, since it is a structural site
25
+ change, not an audit -- consistent with research §6's automation boundary.
26
+
27
+ ## Signatures
28
+
29
+ ### sitefocus-internal-consolidation
30
+ - **Title:** Concentrate internal links within topical clusters to reinforce siteFocusScore
31
+ - **Workflows:** internal-linking
32
+ - **Tactic:** Link new and existing pages primarily to other pages within the same topical cluster; avoid diluting internal link equity across unrelated topics on the site.
33
+ - **Invariant:** The leaked Google Content Warehouse API documents a siteFocusScore that rewards a site's dedication to one topic; concentrating internal links within topical clusters reinforces the site-wide signal the leak shows Google is mechanically scoring.
34
+ - **PrimarySourceUrl:** https://sparktoro.com/blog/an-anonymous-source-shared-thousands-of-leaked-google-search-api-documents-with-me-everyone-in-seo-should-see-them/
35
+ - **PolicyClass:** auto-safe
36
+ - **EvidenceGrade:** single-source
37
+ - **Keywords:** sitefocus, topical-cluster, internal-linking, leak
38
+
39
+ ### siteradius-deviation-outlier
40
+ - **Title:** Limit internal link equity flowing to high-siteRadius off-topic outlier pages
41
+ - **Workflows:** internal-linking
42
+ - **Tactic:** When auditing internal-link structure, identify pages that deviate sharply from the site's central topic and deliberately limit the internal-link equity routed to them rather than treating them as easy incremental-traffic targets.
43
+ - **Invariant:** The leaked Google Content Warehouse API documents siteRadius, which scores each page's deviation from the site's central theme; the leak identifies high-deviation pages as documented ranking outliers, so an internal-linking strategy should isolate rather than reinforce them.
44
+ - **PrimarySourceUrl:** https://sparktoro.com/blog/an-anonymous-source-shared-thousands-of-leaked-google-search-api-documents-with-me-everyone-in-seo-should-see-them/
45
+ - **PolicyClass:** auto-safe
46
+ - **EvidenceGrade:** single-source
47
+ - **Keywords:** siteradius, deviation, ranking-outlier, internal-linking
48
+
49
+ ### fresh-toptier-link-value
50
+ - **Title:** Route internal links from freshly-updated, well-indexed hub pages
51
+ - **Workflows:** internal-linking
52
+ - **Tactic:** Prioritise placing internal links to priority pages from hub/pillar pages that are frequently updated and confirmed well-indexed, rather than from stale or thinly-indexed pages.
53
+ - **Invariant:** Mike King's technical analysis of the leak states the tactical implication that links from fresh and top-tier-indexed pages weigh more in Google's ranking systems than links from stale or poorly-indexed pages.
54
+ - **PrimarySourceUrl:** https://ipullrank.com/google-algo-leak
55
+ - **PolicyClass:** auto-safe
56
+ - **EvidenceGrade:** single-source
57
+ - **Keywords:** fresh-link, top-tier-indexed, link-value, hub-page
58
+
59
+ ### anchor-mismatch-demotion
60
+ - **Title:** Keep internal anchor text on-topic to avoid anchorMismatchDemotion
61
+ - **Workflows:** internal-linking
62
+ - **Tactic:** Audit internal anchor text for relevance to the linked page's actual topic; avoid over-optimized, keyword-stuffed, or topically mismatched anchor text even when it targets a high-value keyword.
63
+ - **Invariant:** The leak documents anchorMismatchDemotion together with IsAnchorBayesSpam, a Penguin-era anchor-text spam classifier; anchor text that does not match the linked page's topic is a documented demotion trigger.
64
+ - **PrimarySourceUrl:** https://ipullrank.com/google-algo-leak
65
+ - **PolicyClass:** auto-safe
66
+ - **EvidenceGrade:** single-source
67
+ - **Keywords:** anchor-text, anchor-mismatch-demotion, penguin, internal-linking
68
+
69
+ ### authority-consolidation-merge
70
+ - **Title:** Consolidating overlapping pages concentrates authority -- but requires a human-approved redirect/migration
71
+ - **Workflows:** internal-linking
72
+ - **Tactic:** When internal-link analysis surfaces overlapping or cannibalising pages, propose consolidating them into the stronger URL and routing internal links accordingly; do not execute the redirect or migration without a human sign-off, since it is a structural site change.
73
+ - **Invariant:** The leak's siteAuthority and homepagePagerankNs attributes give a mechanical basis for authority-consolidation strategy (merging overlapping pages into the stronger URL to concentrate site-wide authority signals); because consolidation requires redirects and site migration, a human must own the execution decision.
74
+ - **PrimarySourceUrl:** https://ipullrank.com/google-algo-leak
75
+ - **PolicyClass:** human-approve
76
+ - **EvidenceGrade:** single-source
77
+ - **Keywords:** authority-consolidation, redirect, site-migration, human-approve
78
+
79
+ ### topical-cluster-hub-spoke
80
+ - **Title:** Build hub-and-spoke internal linking to concentrate siteFocusScore-scored topical authority
81
+ - **Workflows:** internal-linking
82
+ - **Tactic:** Structure internal linking as hub pages fanning out to member/spoke pages within a topic, rather than flat, undifferentiated cross-linking across the whole site.
83
+ - **Invariant:** The leak's siteFocusScore mechanically rewards a site's dedication to one topic; a hub-and-spoke internal-link structure concentrates topical signal into a small set of pillar pages instead of diffusing it flatly across the site.
84
+ - **PrimarySourceUrl:** https://sparktoro.com/blog/an-anonymous-source-shared-thousands-of-leaked-google-search-api-documents-with-me-everyone-in-seo-should-see-them/
85
+ - **PolicyClass:** auto-safe
86
+ - **EvidenceGrade:** single-source
87
+ - **Keywords:** hub-spoke, topical-cluster, sitefocusscore, internal-linking
@@ -0,0 +1,121 @@
1
+ ---
2
+ name: bober.seo-parasite-watch
3
+ description: "Per-workflow SEO signature library for the parasite-watch workflow. A data file of discrete, cited SEO tactics read by SeoPlaybookParser (src/seo/parser.ts), not a workflow skill. Encodes READ-ONLY detection/monitoring guidance for competitors' parasite SEO on high-DR third-party hosts, plus the Nov-2024 site-reputation-abuse policy, framed exclusively as defender-side awareness. Every policy-violating tactic itself (placement, expired-domain plays, paid links) is encoded ONLY as a never-encode block the parser drops -- see the safety note below."
4
+ ---
5
+
6
+ # bober.seo-parasite-watch — Parasite-SEO Detection Signature Library
7
+
8
+ This skill is a **signature-library** file for the `parasite-watch` workflow, not
9
+ a workflow skill in its own right. It is read (as raw markdown text) by
10
+ `SeoPlaybookParser.parse()` (`src/seo/parser.ts`) and turned into typed
11
+ `SeoSignature[]` records consumed by the SEO agent team's retriever
12
+ (`SeoPlaybookRetriever`). It follows the identical block format defined and
13
+ documented in `skills/bober.seo-generic/SKILL.md` ("Signature Block Format") --
14
+ the two files are one executable spec; a block missing `Title` or
15
+ `PrimarySourceUrl`, or tagged `PolicyClass: never-encode`, is DROPPED by the
16
+ parser at load time.
17
+
18
+ **Safety framing (read before editing this file):** parasite SEO is an
19
+ adversarial tactic under a NAMED Google spam policy. Every surviving block
20
+ below is read-only competitor monitoring -- phrased as Detect / Monitor / Flag
21
+ / Audit, never as an instruction to place content, buy links, or register a
22
+ domain. Every policy-violating tactic itself (placement on a third-party host,
23
+ expired-domain authority plays, paid links) is encoded as a `PolicyClass:
24
+ never-encode` block, which the parser hard-drops at `src/seo/parser.ts:111` so
25
+ it never reaches an analyzer prompt -- it exists here only to document the
26
+ automation boundary for human readers, mirroring the precedent block
27
+ `parasite-seo-placement` in `skills/bober.seo-generic/SKILL.md:163-171`. See
28
+ `.bober/research/research-20260715-ultimate-seo-agents-skills-research.md`
29
+ §3/§6 for the underlying policy evidence.
30
+
31
+ ## Signatures
32
+
33
+ ### parasite-competitor-detection-highdr-hosts
34
+ - **Title:** Detect competitors' parasite SEO on high-DR third-party hosts
35
+ - **Workflows:** parasite-watch
36
+ - **Tactic:** Monitor target SERPs for competitor content placed on high-authority third-party hosts (Forbes, Reddit, Medium, major news outlets, .edu domains) -- keyword-stuffed "best <X>" listicles or review pages outranking dedicated competitor sites are the parasite-SEO signal. Flag newly-appearing parasite entrants for the human operator to review. This is READ-ONLY SERP monitoring, never a placement action.
37
+ - **Invariant:** Parasite SEO (site-reputation abuse) remains widespread across gambling/affiliate SERPs despite the Nov-2024 policy update; continuous SERP monitoring detects new parasite entrants a defender must respond to.
38
+ - **PrimarySourceUrl:** https://developers.google.com/search/blog/2024/11/site-reputation-abuse
39
+ - **PolicyClass:** auto-safe
40
+ - **EvidenceGrade:** primary-unverified
41
+ - **Keywords:** parasite-seo, detection, site-reputation-abuse, serp-monitoring, competitor
42
+
43
+ ### site-reputation-abuse-policy-awareness
44
+ - **Title:** Maintain policy awareness of the Nov-2024 site-reputation-abuse loophole closure
45
+ - **Workflows:** parasite-watch
46
+ - **Tactic:** Keep the parasite-watch audit report's policy-reference section current with Google's site-reputation-abuse definition; use it as the classification rubric when flagging detected competitor placements, so findings are labeled against the actual named policy rather than an informal "seems spammy" judgment.
47
+ - **Invariant:** Google's Nov 2024 policy update closed the first-party-involvement loophole for site-reputation abuse: no amount of third-party oversight, white-labeling, or licensing arrangement exempts content hosted to exploit another site's ranking signal.
48
+ - **PrimarySourceUrl:** https://developers.google.com/search/blog/2024/11/site-reputation-abuse
49
+ - **PolicyClass:** auto-safe
50
+ - **EvidenceGrade:** primary-unverified
51
+ - **Keywords:** site-reputation-abuse, policy-awareness, nov-2024, classification
52
+
53
+ ### standalone-section-algorithm-watch
54
+ - **Title:** Watch for Google scoring a site section as "standalone" from the main site
55
+ - **Workflows:** parasite-watch, technical-audit
56
+ - **Tactic:** Audit site sections (subdomains, subdirectories with distinct editorial control or topic focus) for the risk of being algorithmically scored as standalone from the main site's authority; report any section showing "starkly different" content/purpose from the core site as a silent-traffic-loss risk finding, not a policy violation -- this is a ranking-mechanics watch item, not a spam classification.
57
+ - **Invariant:** Google's spam-policy documentation notes that a site section starkly different in purpose from the rest of the site may be scored as if it were a standalone entity, which can silently reduce the traffic that section inherits from the main site's authority -- a distinct risk from an outright policy violation.
58
+ - **PrimarySourceUrl:** https://developers.google.com/search/docs/essentials/spam-policies
59
+ - **PolicyClass:** auto-safe
60
+ - **EvidenceGrade:** primary-unverified
61
+ - **Keywords:** standalone-section, algorithm-watch, silent-traffic-loss, technical-audit
62
+
63
+ ### parasite-serp-monitoring-new-entrants
64
+ - **Title:** Run continuous SERP monitoring for new parasite-SEO entrants in adversarial verticals
65
+ - **Workflows:** parasite-watch
66
+ - **Tactic:** Schedule recurring (not one-time) SERP checks for target keywords in adversarial verticals (iGaming, affiliate, crypto) to catch new parasite placements as they appear; a single audit snapshot understates the problem because parasite entrants rotate hosts and rankings volatilely.
67
+ - **Invariant:** Industry reporting on iGaming affiliate SERPs documents parasite SEO as an ongoing, shifting problem -- new placements appear and enforcement against them is inconsistent -- making continuous monitoring, not a one-time audit, the correct defensive cadence.
68
+ - **PrimarySourceUrl:** https://www.affiversemedia.com/parasite-seo-is-thriving-in-igaming-and-its-costing-affiliates/
69
+ - **PolicyClass:** auto-safe
70
+ - **EvidenceGrade:** primary-unverified
71
+ - **Keywords:** serp-monitoring, new-entrants, igaming, continuous-audit
72
+
73
+ ### remediation-trap-awareness
74
+ - **Title:** Flag remediation traps before recommending a manual-action response
75
+ - **Workflows:** parasite-watch
76
+ - **Tactic:** When a site under audit has a manual action or reputation-abuse penalty, route any proposed remediation (noindexing the offending section, moving content to a different subdirectory) through human approval; do not auto-recommend noindex as a fix, and explicitly flag that relocating penalized content to a new path may itself be treated as circumvention rather than remediation.
77
+ - **Invariant:** Noindexing a section does not automatically remove an existing manual action, and moving previously-penalized content into a new subdirectory can be treated by Google as an attempt to circumvent the action rather than a genuine fix -- both are documented remediation traps in Google's spam-policy guidance.
78
+ - **PrimarySourceUrl:** https://developers.google.com/search/docs/essentials/spam-policies
79
+ - **PolicyClass:** human-approve
80
+ - **EvidenceGrade:** primary-unverified
81
+ - **Keywords:** remediation-trap, manual-action, circumvention, human-approve
82
+
83
+ ### igaming-parasite-defensive-playbook
84
+ - **Title:** Defend against iGaming parasite-SEO pressure with long-tail targeting and diversified traffic
85
+ - **Workflows:** parasite-watch
86
+ - **Tactic:** For iGaming/affiliate clients facing parasite-SEO pressure on head terms, recommend (human-approval-gated, since it is a strategic content/PR investment) a defensive mix of long-tail keyword targeting the parasite entrants under-cover, genuine E-E-A-T-building PR (real expert bylines, verifiable credentials), and traffic-source diversification so no single SERP category dominates revenue exposure.
87
+ - **Invariant:** Reporting on the iGaming affiliate-marketing parasite-SEO landscape documents affiliates experiencing organic-traffic declines from parasite competitors and recommends long-tail targeting, genuine authority-building, and traffic diversification as the practical defensive response, alongside continuous monitoring.
88
+ - **PrimarySourceUrl:** https://www.businessofigaming.com/parasite-seo-affiliate-marketing/
89
+ - **PolicyClass:** human-approve
90
+ - **EvidenceGrade:** primary-unverified
91
+ - **Keywords:** igaming, defensive-playbook, long-tail, eeat, traffic-diversification
92
+
93
+ ### parasite-seo-placement-boundary
94
+ - **Title:** Parasite-SEO placement on high-DR third-party hosts -- NEVER encode as a tactic
95
+ - **Workflows:** parasite-watch
96
+ - **Tactic:** NEVER encode as actionable. Placing brand or client content on a high-authority third-party domain (forum, subreddit, unrelated news site) specifically to borrow its ranking signal is a Google site-reputation-abuse policy violation, regardless of disclosure or licensing arrangement. Documented here only to mark the automation boundary; the parser DROPS this block so it can never reach an analyzer prompt.
97
+ - **Invariant:** This tactic must never be recommended, even as a human-approval-gated option -- it is a named policy violation, not a judgment call the suite should surface as an option. See the identical precedent in the generic skill's `parasite-seo-placement` block.
98
+ - **PrimarySourceUrl:** https://developers.google.com/search/blog/2024/11/site-reputation-abuse
99
+ - **PolicyClass:** never-encode
100
+ - **EvidenceGrade:** primary-unverified
101
+ - **Keywords:** parasite-seo, never-encode, policy-violation, site-reputation-abuse
102
+
103
+ ### expired-domain-authority-play-boundary
104
+ - **Title:** Expired-domain authority acquisition -- NEVER encode as a tactic
105
+ - **Workflows:** parasite-watch
106
+ - **Tactic:** NEVER encode as actionable. Buying/re-registering an expired domain to inherit its historic authority and backlinks (then redirecting or rebuilding on it) is a NAMED Google spam violation ("expired domain abuse", March 2024). Documented here only to mark the automation boundary; the parser DROPS this block so it can never reach an analyzer prompt.
107
+ - **Invariant:** Expired-domain abuse is a named spam policy -- must never be surfaced as an option, even human-approval-gated.
108
+ - **PrimarySourceUrl:** https://developers.google.com/search/blog/2024/03/core-update-spam-policies
109
+ - **PolicyClass:** never-encode
110
+ - **EvidenceGrade:** primary-unverified
111
+ - **Keywords:** expired-domain, authority-play, never-encode, policy-violation
112
+
113
+ ### paid-links-boundary
114
+ - **Title:** Buying or selling links that pass ranking signal -- NEVER encode as a tactic
115
+ - **Workflows:** parasite-watch
116
+ - **Tactic:** NEVER encode as actionable. Buying links, selling links that pass PageRank-style signal, or exchanging goods/services (including paid posts or sponsorships) specifically for links intended to manipulate ranking is a NAMED Google link-spam violation. Documented here only to mark the automation boundary; the parser DROPS this block so it can never reach an analyzer prompt.
117
+ - **Invariant:** Paid/link-spam schemes are a named spam policy category in Google's living spam-policy reference -- must never be surfaced as an option, even human-approval-gated.
118
+ - **PrimarySourceUrl:** https://developers.google.com/search/docs/essentials/spam-policies
119
+ - **PolicyClass:** never-encode
120
+ - **EvidenceGrade:** primary-unverified
121
+ - **Keywords:** paid-links, link-spam, never-encode, policy-violation
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: bober.seo-rank-track
3
+ description: "Per-workflow SEO signature library for the rank-track workflow. A data file of discrete, cited SEO tactics read by SeoPlaybookParser (src/seo/parser.ts), not a workflow skill. Encodes AI Overview citation-vs-rank decoupling, AIO prevalence volatility, and the zero-click-rate reality for the rank-track workflow."
4
+ ---
5
+
6
+ # bober.seo-rank-track — Rank Tracking Signature Library
7
+
8
+ This skill is a **signature-library** file for the `rank-track` workflow, not a
9
+ workflow skill in its own right. It is read (as raw markdown text) by
10
+ `SeoPlaybookParser.parse()` (`src/seo/parser.ts`) and turned into typed
11
+ `SeoSignature[]` records consumed by the SEO agent team's retriever
12
+ (`SeoPlaybookRetriever`). It follows the identical block format defined and
13
+ documented in `skills/bober.seo-generic/SKILL.md` ("Signature Block Format") --
14
+ the two files are one executable spec; a block missing `Title` or
15
+ `PrimarySourceUrl`, or tagged `PolicyClass: never-encode`, is DROPPED by the
16
+ parser at load time -- see
17
+ `.bober/research/research-20260715-ultimate-seo-agents-skills-research.md`
18
+ for the underlying evidence.
19
+
20
+ The signatures below encode Ahrefs' and Semrush's 2025-2026 rank-tracking
21
+ studies: AI Overview citation increasingly decouples from organic top-10
22
+ position (only 38% of AIO-cited pages rank top-10), AIO prevalence and
23
+ intent mix are highly volatile, zero-click rate has not spiked as claimed,
24
+ and most AI citations are "ghost citations" (linked but unnamed). Every
25
+ signature here is pure read-only monitoring/analysis, so all are
26
+ **auto-safe** -- consistent with research §6's automation boundary.
27
+
28
+ ## Signatures
29
+
30
+ ### aio-citation-rank-decouple
31
+ - **Title:** Track AIO-citation coverage as a metric separate from organic rank -- only 38% of cited pages rank top-10
32
+ - **Workflows:** rank-track
33
+ - **Tactic:** Record AIO-citation status as an independent tracked metric alongside position, not as a proxy derived from rank; a page can be a heavily-cited AIO source while ranking well outside the organic top-10, so rank-only tracking misses most of the citation surface.
34
+ - **Invariant:** An Ahrefs analysis of 863K SERPs / 4M AIO URLs found only 38% of AIO-cited pages ranked in the organic top-10 as of Jan 2026 (down from ~76% in Jul 2025), with 31.2% ranking 11-100 and 31.0% ranking beyond top-100.
35
+ - **PrimarySourceUrl:** https://ahrefs.com/blog/ai-overview-citations-top-10/
36
+ - **PolicyClass:** auto-safe
37
+ - **EvidenceGrade:** verified
38
+ - **Keywords:** aio-citation, rank-decouple, top10, ahrefs
39
+
40
+ ### zero-click-reality-check
41
+ - **Title:** Zero-click rate slightly decreased after AIOs appeared -- don't over-index on click-loss panic
42
+ - **Workflows:** rank-track
43
+ - **Tactic:** When interpreting rank-tracking data for click-loss risk, do not default to a narrative of AIO-driven zero-click collapse; report the measured, small directional change instead of an assumed large one.
44
+ - **Invariant:** A 200K+ keyword before/after study validated against Datos clickstream data found the zero-click rate slightly DECREASED (33.75% to 31.53%) on keywords after AI Overviews appeared.
45
+ - **PrimarySourceUrl:** https://www.semrush.com/blog/semrush-ai-overviews-study/
46
+ - **PolicyClass:** auto-safe
47
+ - **EvidenceGrade:** verified
48
+ - **Keywords:** zero-click, reality-check, datos, clickstream
49
+
50
+ ### aio-prevalence-volatility-cadence
51
+ - **Title:** AI Overview prevalence swings hard -- re-measure on a recurring cadence, not a one-time snapshot
52
+ - **Workflows:** rank-track
53
+ - **Tactic:** Schedule AIO-prevalence re-measurement for tracked queries on a recurring cadence; treat AIO as a churning surface that needs standing monitoring, not a one-time audit finding that stays valid indefinitely.
54
+ - **Invariant:** A Semrush 10M+ keyword panel documents AIO prevalence fluctuating through 2025 from 6.49% of queries (Jan) to 24.61% (Jul) to 15.69% (Nov) -- a large enough swing that a single-point measurement is stale within weeks.
55
+ - **PrimarySourceUrl:** https://www.semrush.com/blog/semrush-ai-overviews-study/
56
+ - **PolicyClass:** auto-safe
57
+ - **EvidenceGrade:** verified
58
+ - **Keywords:** aio-prevalence, volatility, monitoring-cadence, semrush
59
+
60
+ ### commercial-intent-trigger-shift
61
+ - **Title:** Track commercial/transactional AIO triggers -- intent mix has moved decisively to money queries
62
+ - **Workflows:** rank-track
63
+ - **Tactic:** Segment rank-tracking reports by intent (informational vs. commercial vs. transactional) and surface the commercial/transactional AIO-trigger trend as a distinct tracked line, since it reflects where the AIO surface is actually shifting.
64
+ - **Invariant:** The same Semrush 10M+ keyword panel documents AIO intent mix shifting Jan-Oct 2025: informational share fell from 91.3% to 57.1% of triggers while commercial rose to 18.57% and transactional to 13.94%.
65
+ - **PrimarySourceUrl:** https://www.semrush.com/blog/semrush-ai-overviews-study/
66
+ - **PolicyClass:** auto-safe
67
+ - **EvidenceGrade:** verified
68
+ - **Keywords:** commercial-intent, transactional, aio-trigger-shift, rank-track
69
+
70
+ ### rank-track-monitoring-cadence
71
+ - **Title:** Track position on a standing recurring cadence rather than ad-hoc spot checks
72
+ - **Workflows:** rank-track
73
+ - **Tactic:** Run position tracking as a recurring, read-only monitoring pass on a fixed cadence for tracked queries/URLs, rather than triggering checks only ad-hoc when a stakeholder asks; a recurring cadence is what makes AIO-citation-decouple and volatility findings comparable run-over-run.
74
+ - **Invariant:** Both the AIO citation-decouple finding (38% top-10 alignment, down from ~76% seven months earlier) and the AIO prevalence-volatility finding (6.49%->24.61%->15.69% across 2025) show the ranking/citation surface moving materially within months, which only a recurring monitoring cadence can capture.
75
+ - **PrimarySourceUrl:** https://www.semrush.com/blog/semrush-ai-overviews-study/
76
+ - **PolicyClass:** auto-safe
77
+ - **EvidenceGrade:** verified
78
+ - **Keywords:** rank-track, monitoring-cadence, recurring, position-tracking
79
+
80
+ ### ghost-citation-two-metric-tracking
81
+ - **Title:** Track citation-rate and mention-rate as two separate metrics -- most AI citations are "ghost citations"
82
+ - **Workflows:** rank-track
83
+ - **Tactic:** Report AI citation-rate (linked as a source) and brand-mention-rate (named in the answer text) as two distinct tracked metrics rather than treating a citation as evidence the brand was actually named.
84
+ - **Invariant:** A Semrush/Kevin Indig study of 3,981 domain appearances / 115 prompts / 4 platforms / 14 countries found 61.7% of AI citations are "ghost citations" -- the source page is linked but the brand is never named in the answer.
85
+ - **PrimarySourceUrl:** https://www.semrush.com/blog/the-ghost-citations-study/
86
+ - **PolicyClass:** auto-safe
87
+ - **EvidenceGrade:** verified
88
+ - **Keywords:** ghost-citation, citation-rate, mention-rate, two-metric
89
+
90
+ ### navboost-click-quality-leading-indicator
91
+ - **Title:** Watch good/bad-click proxies as a leading indicator of upcoming rank movement
92
+ - **Workflows:** rank-track
93
+ - **Tactic:** Include click-quality proxies (bounce-back behavior, dwell/engagement signals) as a tracked leading-indicator line item alongside raw position, since click-history shifts can precede a rank change rather than only follow it.
94
+ - **Invariant:** The leaked Google Content Warehouse API documents NavBoost as a click-based re-ranking system tracking goodClicks, badClicks, lastLongestClicks, and unsquashedClicks over a rolling 13-month window; a shift in this click history is a mechanical input to future re-ranking, making it a leading indicator worth tracking alongside position.
95
+ - **PrimarySourceUrl:** https://ipullrank.com/google-algo-leak
96
+ - **PolicyClass:** auto-safe
97
+ - **EvidenceGrade:** single-source
98
+ - **Keywords:** navboost, click-quality, leading-indicator, rank-track
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: bober.seo-schema-audit
3
+ description: "Per-workflow SEO signature library for the schema-audit workflow. A data file of discrete, cited SEO tactics read by SeoPlaybookParser (src/seo/parser.ts), not a workflow skill. Encodes the entity-linking to AI Overview visibility lift (Schema App case study), Google's structured-data policy guidance, and leak-grounded date-consistency signals for the schema-audit workflow."
4
+ ---
5
+
6
+ # bober.seo-schema-audit — Schema Audit Signature Library
7
+
8
+ This skill is a **signature-library** file for the `schema-audit` workflow, not a
9
+ workflow skill in its own right. It is read (as raw markdown text) by
10
+ `SeoPlaybookParser.parse()` (`src/seo/parser.ts`) and turned into typed
11
+ `SeoSignature[]` records consumed by the SEO agent team's retriever
12
+ (`SeoPlaybookRetriever`). It follows the identical block format defined and
13
+ documented in `skills/bober.seo-generic/SKILL.md` ("Signature Block Format") --
14
+ the two files are one executable spec; a block missing `Title` or
15
+ `PrimarySourceUrl`, or tagged `PolicyClass: never-encode`, is DROPPED by the
16
+ parser at load time -- see `.bober/research/research-20260715-ultimate-seo-agents-skills-research.md`
17
+ for the underlying evidence.
18
+
19
+ The signatures below encode the quantified entity-linking -> AI Overview
20
+ visibility lift (Schema App case study), Google's own structured-data
21
+ eligibility and policy documentation, and the leak's date-consistency
22
+ guidance applied to structured-data audits. Read-only validation and
23
+ audit tactics are `auto-safe`; generating and deploying structured data at
24
+ scale across a site is a structural change with policy exposure and is
25
+ `human-approve` -- consistent with research §6's automation boundary.
26
+
27
+ ## Signatures
28
+
29
+ ### schema-entity-linking-aio
30
+ - **Title:** Entity-linking / schema markup measurably lifts AI Overview visibility (+19.72%)
31
+ - **Workflows:** schema-audit
32
+ - **Tactic:** Prioritise entity-linking and schema-markup work as a standard, budgeted line item in every schema audit, not an optional add-on -- treat it as one of the few quantified levers with a measured AI Overview visibility outcome.
33
+ - **Invariant:** A documented Schema App case study measured a +19.72% increase in AI Overview visibility from entity-linking / schema-markup work -- one of the few quantified schema-to-GEO (generative-engine-optimization) results in the current evidence base.
34
+ - **PrimarySourceUrl:** https://www.schemaapp.com/schema-markup/case-study-entity-linking-increases-aio-visibility/
35
+ - **PolicyClass:** auto-safe
36
+ - **EvidenceGrade:** single-source
37
+ - **Keywords:** entity-linking, schema-markup, aio-lift, schema-audit
38
+
39
+ ### structured-data-validation
40
+ - **Title:** Validate structured data against Google's eligibility guidance as a standard audit step
41
+ - **Workflows:** schema-audit
42
+ - **Tactic:** Run every audited page's structured data through validation against Google's documented eligibility requirements before flagging it as compliant; treat "present but invalid" markup as a distinct finding from "absent" markup.
43
+ - **Invariant:** Google's structured-data documentation defines validation and rich-result eligibility requirements that markup must satisfy; rich-result eligibility depends on valid, complete markup, not merely its presence.
44
+ - **PrimarySourceUrl:** https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data
45
+ - **PolicyClass:** auto-safe
46
+ - **EvidenceGrade:** primary-unverified
47
+ - **Keywords:** structured-data, validation, rich-results, schema-audit
48
+
49
+ ### article-date-schema-alignment
50
+ - **Title:** Article schema datePublished/dateModified must align with the visible byline
51
+ - **Workflows:** schema-audit
52
+ - **Tactic:** For every audited article page, compare the structured data's datePublished and dateModified against the visible byline date on the page; flag any mismatch as an audit finding.
53
+ - **Invariant:** Google's Article structured-data documentation specifies datePublished and dateModified properties that are expected to reflect the article's actual publish/update history; misalignment with the visible byline is a documented markup-accuracy issue.
54
+ - **PrimarySourceUrl:** https://developers.google.com/search/docs/appearance/structured-data/article
55
+ - **PolicyClass:** auto-safe
56
+ - **EvidenceGrade:** primary-unverified
57
+ - **Keywords:** article-schema, datepublished, datemodified, byline-alignment
58
+
59
+ ### leak-date-consistency-schema
60
+ - **Title:** Cross-check structured-data dates against on-page and URL date signals (leak-grounded)
61
+ - **Workflows:** schema-audit
62
+ - **Tactic:** As part of every schema audit, cross-check the structured data's date fields against the visible on-page byline date and any date embedded in the URL; report drift across any of the three as a single date-consistency finding.
63
+ - **Invariant:** Mike King's technical analysis of the leak states the tactical implication that bylineDate, syntacticDate, and semanticDate should be kept consistent across structured data, titles, and URLs; a schema audit is a natural enforcement point for this cross-check.
64
+ - **PrimarySourceUrl:** https://ipullrank.com/google-algo-leak
65
+ - **PolicyClass:** auto-safe
66
+ - **EvidenceGrade:** single-source
67
+ - **Keywords:** date-consistency, structured-data, leak, schema-audit
68
+
69
+ ### mass-schema-generation-approval
70
+ - **Title:** Mass structured-data generation/deployment across a site requires human approval
71
+ - **Workflows:** schema-audit
72
+ - **Tactic:** Do not auto-deploy generated structured data at scale across a site; generate proposed markup, then route it through human review before publication, since bulk deployment is a structural site change with policy exposure.
73
+ - **Invariant:** Google's General Structured Data Guidelines state that structured data must accurately reflect the content of the page it's on and penalise markup that does not match visible content; generating and deploying markup at scale across many pages without per-page review is a policy-exposed structural change, so a human must approve mass generation before deployment.
74
+ - **PrimarySourceUrl:** https://developers.google.com/search/docs/appearance/structured-data/sd-policies
75
+ - **PolicyClass:** human-approve
76
+ - **EvidenceGrade:** primary-unverified
77
+ - **Keywords:** mass-schema-generation, structured-data-policy, human-approve, sd-guidelines
78
+
79
+ ### entity-schema-org-product-faq
80
+ - **Title:** Implement Organization/Product/FAQ entity schema to strengthen the entity graph behind the AIO lift
81
+ - **Workflows:** schema-audit
82
+ - **Tactic:** Where absent, implement Organization, Product, and FAQ structured data (as applicable to the page type) as the concrete entity-linking work behind the measured AI Overview visibility lift, prioritising pages that already rank or are AIO-eligible.
83
+ - **Invariant:** The Schema App case study's +19.72% AI Overview visibility lift was produced by entity-linking / schema-markup work; Organization, Product, and FAQ schema are the standard entity-graph structured-data types that operationalize entity linking on a page.
84
+ - **PrimarySourceUrl:** https://www.schemaapp.com/schema-markup/case-study-entity-linking-increases-aio-visibility/
85
+ - **PolicyClass:** auto-safe
86
+ - **EvidenceGrade:** single-source
87
+ - **Keywords:** organization-schema, product-schema, faq-schema, entity-graph
88
+
89
+ ### sd-policy-compliance-audit
90
+ - **Title:** Audit for structured-data policy violations (markup that doesn't reflect visible content)
91
+ - **Workflows:** schema-audit
92
+ - **Tactic:** Check every page's structured data against the visible content it describes and flag any markup that adds information not present on the page, or that is hidden/irrelevant to the user, as a policy-compliance finding -- do not wait for a manual action to surface it.
93
+ - **Invariant:** Google's General Structured Data Guidelines document policy violations including markup that doesn't reflect the page's visible content and irrelevant or misleading markup; a schema audit should proactively check for these violations.
94
+ - **PrimarySourceUrl:** https://developers.google.com/search/docs/appearance/structured-data/sd-policies
95
+ - **PolicyClass:** auto-safe
96
+ - **EvidenceGrade:** primary-unverified
97
+ - **Keywords:** structured-data-policy, compliance-audit, sd-guidelines, schema-audit