ai-employees 1.6.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 (317) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +160 -0
  3. package/TRADEMARKS.md +45 -0
  4. package/docs/COST.md +59 -0
  5. package/docs/FAQ.md +39 -0
  6. package/docs/GUARDRAILS.md +17 -0
  7. package/docs/HARNESSES.md +38 -0
  8. package/docs/HOW-EMPLOYEES-WORK.md +86 -0
  9. package/docs/INSTALL.md +148 -0
  10. package/docs/PREREQUISITES.md +91 -0
  11. package/docs/STANDARD.md +194 -0
  12. package/docs/UPGRADING.md +74 -0
  13. package/docs/WHAT-SETS-THEM-APART.md +10 -0
  14. package/employees/ad-manager-employee/AGENTS.md +46 -0
  15. package/employees/ad-manager-employee/CAPABILITIES.md +1002 -0
  16. package/employees/ad-manager-employee/CHANGELOG.md +99 -0
  17. package/employees/ad-manager-employee/CONTRACT.md +977 -0
  18. package/employees/ad-manager-employee/INSTALL-PROMPT.md +263 -0
  19. package/employees/ad-manager-employee/README.md +357 -0
  20. package/employees/ad-manager-employee/RELEASES.md +25 -0
  21. package/employees/ad-manager-employee/ROLE.md +617 -0
  22. package/employees/ad-manager-employee/SCHEDULE.md +275 -0
  23. package/employees/ad-manager-employee/VERSION +1 -0
  24. package/employees/ad-manager-employee/employee.json +185 -0
  25. package/employees/ad-manager-employee/examples/README.md +21 -0
  26. package/employees/ad-manager-employee/examples/board/LAUNCH-BOARD.md +19 -0
  27. package/employees/ad-manager-employee/examples/board/board.json +51 -0
  28. package/employees/ad-manager-employee/examples/brief-latest.md +20 -0
  29. package/employees/ad-manager-employee/examples/build/campaign-storm-repair.md +51 -0
  30. package/employees/ad-manager-employee/examples/creative/set-2026-03-04-fast-estimate/set.md +31 -0
  31. package/employees/ad-manager-employee/examples/metrics/daily.jsonl +2 -0
  32. package/employees/ad-manager-employee/examples/runlog.jsonl +3 -0
  33. package/employees/ad-manager-employee/recipes/BROWSER-RECIPES.md +558 -0
  34. package/employees/ad-manager-employee/recipes/META-ADS-RECIPES.md +100 -0
  35. package/employees/ad-manager-employee/routines/ads-account-intake/SKILL.md +929 -0
  36. package/employees/ad-manager-employee/routines/ads-account-read/SKILL.md +780 -0
  37. package/employees/ad-manager-employee/routines/ads-build-desk/SKILL.md +915 -0
  38. package/employees/ad-manager-employee/routines/ads-change-list/SKILL.md +818 -0
  39. package/employees/ad-manager-employee/routines/ads-creative-retro/SKILL.md +807 -0
  40. package/employees/ad-manager-employee/routines/ads-creative-studio/SKILL.md +802 -0
  41. package/employees/ad-manager-employee/routines/ads-desk-standup/SKILL.md +822 -0
  42. package/employees/ad-manager-employee/run/ads-account-intake.cmd.example +11 -0
  43. package/employees/ad-manager-employee/run/ads-account-read.cmd.example +11 -0
  44. package/employees/ad-manager-employee/run/ads-build-desk.cmd.example +11 -0
  45. package/employees/ad-manager-employee/run/ads-change-list.cmd.example +11 -0
  46. package/employees/ad-manager-employee/run/ads-creative-retro.cmd.example +11 -0
  47. package/employees/ad-manager-employee/run/ads-creative-studio.cmd.example +11 -0
  48. package/employees/ad-manager-employee/run/ads-desk-standup.cmd.example +11 -0
  49. package/employees/ad-manager-employee/scripts/copy-check.mjs +815 -0
  50. package/employees/ad-manager-employee/scripts/guard.mjs +447 -0
  51. package/employees/ad-manager-employee/scripts/review.mjs +443 -0
  52. package/employees/ad-manager-employee/scripts/runlog.mjs +785 -0
  53. package/employees/chief-of-staff/AGENTS.md +46 -0
  54. package/employees/chief-of-staff/CAPABILITIES.md +875 -0
  55. package/employees/chief-of-staff/CHANGELOG.md +91 -0
  56. package/employees/chief-of-staff/CONTRACT.md +1039 -0
  57. package/employees/chief-of-staff/INSTALL-PROMPT.md +206 -0
  58. package/employees/chief-of-staff/README.md +382 -0
  59. package/employees/chief-of-staff/RELEASES.md +22 -0
  60. package/employees/chief-of-staff/ROLE.md +425 -0
  61. package/employees/chief-of-staff/SCHEDULE.md +288 -0
  62. package/employees/chief-of-staff/VERSION +1 -0
  63. package/employees/chief-of-staff/employee.json +214 -0
  64. package/employees/chief-of-staff/examples/README.md +15 -0
  65. package/employees/chief-of-staff/examples/brief-latest.md +20 -0
  66. package/employees/chief-of-staff/examples/decisions/REGISTER.md +22 -0
  67. package/employees/chief-of-staff/examples/dossiers/dossier-seo-employee--seo-publish-run--silent-stop.md +43 -0
  68. package/employees/chief-of-staff/examples/fleet/fleet.json +119 -0
  69. package/employees/chief-of-staff/examples/runlog.jsonl +3 -0
  70. package/employees/chief-of-staff/recipes/BROWSER-RECIPES.md +512 -0
  71. package/employees/chief-of-staff/routines/cos-charter-and-fleet-audit/SKILL.md +1008 -0
  72. package/employees/chief-of-staff/routines/cos-decision-brief/SKILL.md +639 -0
  73. package/employees/chief-of-staff/routines/cos-decision-review/SKILL.md +644 -0
  74. package/employees/chief-of-staff/routines/cos-fault-dossier/SKILL.md +656 -0
  75. package/employees/chief-of-staff/routines/cos-fleet-reconcile/SKILL.md +942 -0
  76. package/employees/chief-of-staff/routines/cos-market-sweep/SKILL.md +655 -0
  77. package/employees/chief-of-staff/routines/cos-metrics-review/SKILL.md +746 -0
  78. package/employees/chief-of-staff/run/cos-charter-and-fleet-audit.cmd.example +11 -0
  79. package/employees/chief-of-staff/run/cos-decision-brief.cmd.example +11 -0
  80. package/employees/chief-of-staff/run/cos-decision-review.cmd.example +11 -0
  81. package/employees/chief-of-staff/run/cos-fault-dossier.cmd.example +11 -0
  82. package/employees/chief-of-staff/run/cos-fleet-reconcile.cmd.example +11 -0
  83. package/employees/chief-of-staff/run/cos-market-sweep.cmd.example +11 -0
  84. package/employees/chief-of-staff/run/cos-metrics-review.cmd.example +11 -0
  85. package/employees/chief-of-staff/scripts/copy-check.mjs +812 -0
  86. package/employees/chief-of-staff/scripts/guard.mjs +447 -0
  87. package/employees/chief-of-staff/scripts/runlog.mjs +766 -0
  88. package/employees/customer-satisfaction-employee/AGENTS.md +47 -0
  89. package/employees/customer-satisfaction-employee/CAPABILITIES.md +910 -0
  90. package/employees/customer-satisfaction-employee/CHANGELOG.md +91 -0
  91. package/employees/customer-satisfaction-employee/CONTRACT.md +1121 -0
  92. package/employees/customer-satisfaction-employee/INSTALL-PROMPT.md +290 -0
  93. package/employees/customer-satisfaction-employee/README.md +378 -0
  94. package/employees/customer-satisfaction-employee/RELEASES.md +22 -0
  95. package/employees/customer-satisfaction-employee/ROLE.md +393 -0
  96. package/employees/customer-satisfaction-employee/SCHEDULE.md +283 -0
  97. package/employees/customer-satisfaction-employee/VERSION +1 -0
  98. package/employees/customer-satisfaction-employee/employee.json +231 -0
  99. package/employees/customer-satisfaction-employee/examples/README.md +15 -0
  100. package/employees/customer-satisfaction-employee/examples/brief-latest.md +17 -0
  101. package/employees/customer-satisfaction-employee/examples/desk/DESK-BOARD.md +18 -0
  102. package/employees/customer-satisfaction-employee/examples/queue/2026-03-05-reply.md +36 -0
  103. package/employees/customer-satisfaction-employee/examples/runlog.jsonl +3 -0
  104. package/employees/customer-satisfaction-employee/examples/tickets/tickets.jsonl +2 -0
  105. package/employees/customer-satisfaction-employee/recipes/BROWSER-RECIPES.md +549 -0
  106. package/employees/customer-satisfaction-employee/routines/csat-churn-watch/SKILL.md +709 -0
  107. package/employees/customer-satisfaction-employee/routines/csat-deflection-desk/SKILL.md +671 -0
  108. package/employees/customer-satisfaction-employee/routines/csat-desk-intake/SKILL.md +1115 -0
  109. package/employees/customer-satisfaction-employee/routines/csat-desk-standup/SKILL.md +831 -0
  110. package/employees/customer-satisfaction-employee/routines/csat-inbox-sweep/SKILL.md +673 -0
  111. package/employees/customer-satisfaction-employee/routines/csat-reply-desk/SKILL.md +755 -0
  112. package/employees/customer-satisfaction-employee/routines/csat-satisfaction-report/SKILL.md +844 -0
  113. package/employees/customer-satisfaction-employee/routines/csat-taxonomy-refresh/SKILL.md +798 -0
  114. package/employees/customer-satisfaction-employee/run/csat-churn-watch.cmd.example +11 -0
  115. package/employees/customer-satisfaction-employee/run/csat-deflection-desk.cmd.example +11 -0
  116. package/employees/customer-satisfaction-employee/run/csat-desk-intake.cmd.example +11 -0
  117. package/employees/customer-satisfaction-employee/run/csat-desk-standup.cmd.example +11 -0
  118. package/employees/customer-satisfaction-employee/run/csat-inbox-sweep.cmd.example +11 -0
  119. package/employees/customer-satisfaction-employee/run/csat-reply-desk.cmd.example +11 -0
  120. package/employees/customer-satisfaction-employee/run/csat-satisfaction-report.cmd.example +11 -0
  121. package/employees/customer-satisfaction-employee/run/csat-taxonomy-refresh.cmd.example +11 -0
  122. package/employees/customer-satisfaction-employee/scripts/copy-check.mjs +888 -0
  123. package/employees/customer-satisfaction-employee/scripts/guard.mjs +447 -0
  124. package/employees/customer-satisfaction-employee/scripts/runlog.mjs +778 -0
  125. package/employees/gtm-engineer/AGENTS.md +47 -0
  126. package/employees/gtm-engineer/CAPABILITIES.md +929 -0
  127. package/employees/gtm-engineer/CHANGELOG.md +93 -0
  128. package/employees/gtm-engineer/CONTRACT.md +977 -0
  129. package/employees/gtm-engineer/INSTALL-PROMPT.md +237 -0
  130. package/employees/gtm-engineer/README.md +355 -0
  131. package/employees/gtm-engineer/RELEASES.md +22 -0
  132. package/employees/gtm-engineer/ROLE.md +551 -0
  133. package/employees/gtm-engineer/SCHEDULE.md +265 -0
  134. package/employees/gtm-engineer/VERSION +1 -0
  135. package/employees/gtm-engineer/employee.json +230 -0
  136. package/employees/gtm-engineer/examples/README.md +15 -0
  137. package/employees/gtm-engineer/examples/board/LAUNCH-BOARD.md +12 -0
  138. package/employees/gtm-engineer/examples/brief-latest.md +19 -0
  139. package/employees/gtm-engineer/examples/crm/contacts.csv +4 -0
  140. package/employees/gtm-engineer/examples/queue/2026-03-05-email.md +26 -0
  141. package/employees/gtm-engineer/examples/runlog.jsonl +3 -0
  142. package/employees/gtm-engineer/recipes/BROWSER-RECIPES.md +582 -0
  143. package/employees/gtm-engineer/routines/gtm-board-standup/SKILL.md +745 -0
  144. package/employees/gtm-engineer/routines/gtm-icp-refresh/SKILL.md +647 -0
  145. package/employees/gtm-engineer/routines/gtm-intake-and-dashboard/SKILL.md +1046 -0
  146. package/employees/gtm-engineer/routines/gtm-launch-step-runner/SKILL.md +802 -0
  147. package/employees/gtm-engineer/routines/gtm-outreach-queue/SKILL.md +708 -0
  148. package/employees/gtm-engineer/routines/gtm-paid-and-tracking-guard/SKILL.md +970 -0
  149. package/employees/gtm-engineer/routines/gtm-scoreboard/SKILL.md +740 -0
  150. package/employees/gtm-engineer/routines/gtm-signal-sweep/SKILL.md +648 -0
  151. package/employees/gtm-engineer/run/gtm-board-standup.cmd.example +11 -0
  152. package/employees/gtm-engineer/run/gtm-icp-refresh.cmd.example +11 -0
  153. package/employees/gtm-engineer/run/gtm-intake-and-dashboard.cmd.example +11 -0
  154. package/employees/gtm-engineer/run/gtm-launch-step-runner.cmd.example +11 -0
  155. package/employees/gtm-engineer/run/gtm-outreach-queue.cmd.example +11 -0
  156. package/employees/gtm-engineer/run/gtm-paid-and-tracking-guard.cmd.example +11 -0
  157. package/employees/gtm-engineer/run/gtm-scoreboard.cmd.example +11 -0
  158. package/employees/gtm-engineer/run/gtm-signal-sweep.cmd.example +11 -0
  159. package/employees/gtm-engineer/scripts/copy-check.mjs +815 -0
  160. package/employees/gtm-engineer/scripts/guard.mjs +447 -0
  161. package/employees/gtm-engineer/scripts/runlog.mjs +772 -0
  162. package/employees/sales-employee/AGENTS.md +46 -0
  163. package/employees/sales-employee/CAPABILITIES.md +880 -0
  164. package/employees/sales-employee/CHANGELOG.md +92 -0
  165. package/employees/sales-employee/CONTRACT.md +1161 -0
  166. package/employees/sales-employee/INSTALL-PROMPT.md +256 -0
  167. package/employees/sales-employee/README.md +372 -0
  168. package/employees/sales-employee/RELEASES.md +22 -0
  169. package/employees/sales-employee/ROLE.md +319 -0
  170. package/employees/sales-employee/SCHEDULE.md +263 -0
  171. package/employees/sales-employee/VERSION +1 -0
  172. package/employees/sales-employee/employee.json +202 -0
  173. package/employees/sales-employee/examples/README.md +16 -0
  174. package/employees/sales-employee/examples/brief-latest.md +17 -0
  175. package/employees/sales-employee/examples/crm/contacts.csv +4 -0
  176. package/employees/sales-employee/examples/crm/prospects.jsonl +2 -0
  177. package/employees/sales-employee/examples/pipeline/PIPELINE.md +18 -0
  178. package/employees/sales-employee/examples/queue/2026-03-05-first-touch.md +29 -0
  179. package/employees/sales-employee/examples/runlog.jsonl +3 -0
  180. package/employees/sales-employee/recipes/BROWSER-RECIPES.md +535 -0
  181. package/employees/sales-employee/routines/sales-desk-setup/SKILL.md +896 -0
  182. package/employees/sales-employee/routines/sales-desk-standup/SKILL.md +818 -0
  183. package/employees/sales-employee/routines/sales-first-touch-drafts/SKILL.md +681 -0
  184. package/employees/sales-employee/routines/sales-followup-sweep/SKILL.md +736 -0
  185. package/employees/sales-employee/routines/sales-pipeline-review/SKILL.md +765 -0
  186. package/employees/sales-employee/routines/sales-prospect-sweep/SKILL.md +696 -0
  187. package/employees/sales-employee/routines/sales-qualification-refresh/SKILL.md +743 -0
  188. package/employees/sales-employee/run/sales-desk-setup.cmd.example +11 -0
  189. package/employees/sales-employee/run/sales-desk-standup.cmd.example +11 -0
  190. package/employees/sales-employee/run/sales-first-touch-drafts.cmd.example +11 -0
  191. package/employees/sales-employee/run/sales-followup-sweep.cmd.example +11 -0
  192. package/employees/sales-employee/run/sales-pipeline-review.cmd.example +11 -0
  193. package/employees/sales-employee/run/sales-prospect-sweep.cmd.example +11 -0
  194. package/employees/sales-employee/run/sales-qualification-refresh.cmd.example +11 -0
  195. package/employees/sales-employee/scripts/copy-check.mjs +815 -0
  196. package/employees/sales-employee/scripts/guard.mjs +447 -0
  197. package/employees/sales-employee/scripts/runlog.mjs +773 -0
  198. package/employees/seo-employee/AEO-PLAYBOOK.md +51 -0
  199. package/employees/seo-employee/AGENTS.md +47 -0
  200. package/employees/seo-employee/CAPABILITIES.md +1006 -0
  201. package/employees/seo-employee/CHANGELOG.md +95 -0
  202. package/employees/seo-employee/CONTRACT.md +1020 -0
  203. package/employees/seo-employee/INSTALL-PROMPT.md +233 -0
  204. package/employees/seo-employee/README.md +368 -0
  205. package/employees/seo-employee/RELEASES.md +22 -0
  206. package/employees/seo-employee/ROLE.md +331 -0
  207. package/employees/seo-employee/SCHEDULE.md +267 -0
  208. package/employees/seo-employee/VERSION +1 -0
  209. package/employees/seo-employee/employee.json +233 -0
  210. package/employees/seo-employee/examples/README.md +14 -0
  211. package/employees/seo-employee/examples/board/WORK-BOARD.md +16 -0
  212. package/employees/seo-employee/examples/brief-latest.md +16 -0
  213. package/employees/seo-employee/examples/content/drafts.jsonl +2 -0
  214. package/employees/seo-employee/examples/content/published.jsonl +2 -0
  215. package/employees/seo-employee/examples/drafts/roof-lifespan-by-material/body.md +39 -0
  216. package/employees/seo-employee/examples/drafts/roof-lifespan-by-material/meta.json +16 -0
  217. package/employees/seo-employee/examples/runlog.jsonl +3 -0
  218. package/employees/seo-employee/recipes/BROWSER-RECIPES.md +576 -0
  219. package/employees/seo-employee/routines/seo-answer-visibility/SKILL.md +55 -0
  220. package/employees/seo-employee/routines/seo-calendar-refill/SKILL.md +614 -0
  221. package/employees/seo-employee/routines/seo-draft-run/SKILL.md +722 -0
  222. package/employees/seo-employee/routines/seo-index-sweep/SKILL.md +629 -0
  223. package/employees/seo-employee/routines/seo-intake-and-map/SKILL.md +916 -0
  224. package/employees/seo-employee/routines/seo-publish-run/SKILL.md +713 -0
  225. package/employees/seo-employee/routines/seo-rank-review/SKILL.md +795 -0
  226. package/employees/seo-employee/routines/seo-standup/SKILL.md +792 -0
  227. package/employees/seo-employee/run/seo-answer-visibility.cmd.example +11 -0
  228. package/employees/seo-employee/run/seo-calendar-refill.cmd.example +11 -0
  229. package/employees/seo-employee/run/seo-draft-run.cmd.example +11 -0
  230. package/employees/seo-employee/run/seo-index-sweep.cmd.example +11 -0
  231. package/employees/seo-employee/run/seo-intake-and-map.cmd.example +11 -0
  232. package/employees/seo-employee/run/seo-publish-run.cmd.example +11 -0
  233. package/employees/seo-employee/run/seo-rank-review.cmd.example +11 -0
  234. package/employees/seo-employee/run/seo-standup.cmd.example +11 -0
  235. package/employees/seo-employee/scripts/answer-audit.mjs +63 -0
  236. package/employees/seo-employee/scripts/copy-check.mjs +843 -0
  237. package/employees/seo-employee/scripts/guard.mjs +447 -0
  238. package/employees/seo-employee/scripts/runlog.mjs +864 -0
  239. package/employees/seo-employee/standards/PUBLISH-STANDARD.md +229 -0
  240. package/employees/social-media-employee/AGENTS.md +46 -0
  241. package/employees/social-media-employee/CAPABILITIES.md +1015 -0
  242. package/employees/social-media-employee/CHANGELOG.md +91 -0
  243. package/employees/social-media-employee/CONTRACT.md +1036 -0
  244. package/employees/social-media-employee/INSTALL-PROMPT.md +234 -0
  245. package/employees/social-media-employee/README.md +386 -0
  246. package/employees/social-media-employee/RELEASES.md +22 -0
  247. package/employees/social-media-employee/ROLE.md +376 -0
  248. package/employees/social-media-employee/SCHEDULE.md +278 -0
  249. package/employees/social-media-employee/VERSION +1 -0
  250. package/employees/social-media-employee/employee.json +195 -0
  251. package/employees/social-media-employee/examples/README.md +20 -0
  252. package/employees/social-media-employee/examples/brief-latest.md +19 -0
  253. package/employees/social-media-employee/examples/calendar/CALENDAR.md +23 -0
  254. package/employees/social-media-employee/examples/calendar/calendar.json +30 -0
  255. package/employees/social-media-employee/examples/posts/posts.jsonl +2 -0
  256. package/employees/social-media-employee/examples/queue/2026-03-05-business-network.md +28 -0
  257. package/employees/social-media-employee/examples/runlog.jsonl +3 -0
  258. package/employees/social-media-employee/recipes/BROWSER-RECIPES.md +550 -0
  259. package/employees/social-media-employee/routines/soc-calendar-standup/SKILL.md +783 -0
  260. package/employees/social-media-employee/routines/soc-draft-queue/SKILL.md +683 -0
  261. package/employees/social-media-employee/routines/soc-engagement-sweep/SKILL.md +636 -0
  262. package/employees/social-media-employee/routines/soc-intake-and-voice/SKILL.md +909 -0
  263. package/employees/social-media-employee/routines/soc-material-sweep/SKILL.md +658 -0
  264. package/employees/social-media-employee/routines/soc-performance-review/SKILL.md +795 -0
  265. package/employees/social-media-employee/routines/soc-publish-run/SKILL.md +643 -0
  266. package/employees/social-media-employee/run/soc-calendar-standup.cmd.example +11 -0
  267. package/employees/social-media-employee/run/soc-draft-queue.cmd.example +11 -0
  268. package/employees/social-media-employee/run/soc-engagement-sweep.cmd.example +11 -0
  269. package/employees/social-media-employee/run/soc-intake-and-voice.cmd.example +11 -0
  270. package/employees/social-media-employee/run/soc-material-sweep.cmd.example +11 -0
  271. package/employees/social-media-employee/run/soc-performance-review.cmd.example +11 -0
  272. package/employees/social-media-employee/run/soc-publish-run.cmd.example +11 -0
  273. package/employees/social-media-employee/scripts/copy-check.mjs +950 -0
  274. package/employees/social-media-employee/scripts/guard.mjs +447 -0
  275. package/employees/social-media-employee/scripts/runlog.mjs +786 -0
  276. package/employees/web-dev-employee/AGENTS.md +47 -0
  277. package/employees/web-dev-employee/CAPABILITIES.md +950 -0
  278. package/employees/web-dev-employee/CHANGELOG.md +91 -0
  279. package/employees/web-dev-employee/CONTRACT.md +1052 -0
  280. package/employees/web-dev-employee/INSTALL-PROMPT.md +210 -0
  281. package/employees/web-dev-employee/README.md +352 -0
  282. package/employees/web-dev-employee/RELEASES.md +22 -0
  283. package/employees/web-dev-employee/ROLE.md +383 -0
  284. package/employees/web-dev-employee/SCHEDULE.md +280 -0
  285. package/employees/web-dev-employee/VERSION +1 -0
  286. package/employees/web-dev-employee/employee.json +228 -0
  287. package/employees/web-dev-employee/examples/README.md +13 -0
  288. package/employees/web-dev-employee/examples/board/REVIEW-BOARD.md +20 -0
  289. package/employees/web-dev-employee/examples/brief-latest.md +14 -0
  290. package/employees/web-dev-employee/examples/changes/2026-03-05-fix-C-005.md +30 -0
  291. package/employees/web-dev-employee/examples/changes/changes.jsonl +2 -0
  292. package/employees/web-dev-employee/examples/health/incidents.jsonl +2 -0
  293. package/employees/web-dev-employee/examples/runlog.jsonl +3 -0
  294. package/employees/web-dev-employee/recipes/BROWSER-RECIPES.md +477 -0
  295. package/employees/web-dev-employee/routines/web-dependency-run/SKILL.md +634 -0
  296. package/employees/web-dev-employee/routines/web-fix-runner/SKILL.md +754 -0
  297. package/employees/web-dev-employee/routines/web-guardrail-review/SKILL.md +613 -0
  298. package/employees/web-dev-employee/routines/web-inventory-refresh/SKILL.md +700 -0
  299. package/employees/web-dev-employee/routines/web-platform-guard/SKILL.md +707 -0
  300. package/employees/web-dev-employee/routines/web-site-sweep/SKILL.md +732 -0
  301. package/employees/web-dev-employee/routines/web-standup/SKILL.md +738 -0
  302. package/employees/web-dev-employee/routines/web-weekly-report/SKILL.md +623 -0
  303. package/employees/web-dev-employee/run/web-dependency-run.cmd.example +11 -0
  304. package/employees/web-dev-employee/run/web-fix-runner.cmd.example +11 -0
  305. package/employees/web-dev-employee/run/web-guardrail-review.cmd.example +11 -0
  306. package/employees/web-dev-employee/run/web-inventory-refresh.cmd.example +11 -0
  307. package/employees/web-dev-employee/run/web-platform-guard.cmd.example +11 -0
  308. package/employees/web-dev-employee/run/web-site-sweep.cmd.example +11 -0
  309. package/employees/web-dev-employee/run/web-standup.cmd.example +11 -0
  310. package/employees/web-dev-employee/run/web-weekly-report.cmd.example +11 -0
  311. package/employees/web-dev-employee/scripts/copy-check.mjs +872 -0
  312. package/employees/web-dev-employee/scripts/guard.mjs +447 -0
  313. package/employees/web-dev-employee/scripts/runlog.mjs +792 -0
  314. package/installer/cli.mjs +250 -0
  315. package/installer/upgrade.mjs +255 -0
  316. package/package.json +43 -0
  317. package/skills/hire/SKILL.md +72 -0
@@ -0,0 +1,11 @@
1
+ :: «SEO_ROOT»\run\seo-answer-visibility.cmd
2
+ :: Copy this file to seo-answer-visibility.cmd (drop the .example), replace «SEO_ROOT» with your real folder, and check the
3
+ :: path to claude.exe: this is where the native installer puts it (where.exe claude shows yours).
4
+ :: Never point it at the Desktop app's bundled copy; Task Scheduler cannot see that path.
5
+ :: Section 10 of CAPABILITIES.md: a scheduled run must never wait on a prompt. If this routine stalls
6
+ :: or is refused a tool under acceptEdits, change it to bypassPermissions for this one file, knowing
7
+ :: what that grants. The guardrails live in the contract and the routine, not in this flag.
8
+ @echo off
9
+ cd /d "«SEO_ROOT»"
10
+ "%USERPROFILE%\.local\bin\claude.exe" -p "Read «SEO_ROOT»/routines/seo-answer-visibility/SKILL.md and follow it." --permission-mode acceptEdits --output-format json < nul > "«SEO_ROOT»\run\seo-answer-visibility.last.json"
11
+ if errorlevel 1 node "«SEO_ROOT»\scripts\runlog.mjs" --failed-run seo-answer-visibility --exit-code %errorlevel%
@@ -0,0 +1,11 @@
1
+ :: «SEO_ROOT»\run\seo-calendar-refill.cmd
2
+ :: Copy this file to seo-calendar-refill.cmd (drop the .example), replace «SEO_ROOT» with your real folder, and check the
3
+ :: path to claude.exe: this is where the native installer puts it (where.exe claude shows yours).
4
+ :: Never point it at the Desktop app's bundled copy; Task Scheduler cannot see that path.
5
+ :: Section 10 of CAPABILITIES.md: a scheduled run must never wait on a prompt. If this routine stalls
6
+ :: or is refused a tool under acceptEdits, change it to bypassPermissions for this one file, knowing
7
+ :: what that grants. The guardrails live in the contract and the routine, not in this flag.
8
+ @echo off
9
+ cd /d "«SEO_ROOT»"
10
+ "%USERPROFILE%\.local\bin\claude.exe" -p "Read «SEO_ROOT»/routines/seo-calendar-refill/SKILL.md and follow it." --permission-mode acceptEdits --output-format json < nul > "«SEO_ROOT»\run\seo-calendar-refill.last.json"
11
+ if errorlevel 1 node "«SEO_ROOT»\scripts\runlog.mjs" --failed-run seo-calendar-refill --exit-code %errorlevel%
@@ -0,0 +1,11 @@
1
+ :: «SEO_ROOT»\run\seo-draft-run.cmd
2
+ :: Copy this file to seo-draft-run.cmd (drop the .example), replace «SEO_ROOT» with your real folder, and check the
3
+ :: path to claude.exe: this is where the native installer puts it (where.exe claude shows yours).
4
+ :: Never point it at the Desktop app's bundled copy; Task Scheduler cannot see that path.
5
+ :: Section 10 of CAPABILITIES.md: a scheduled run must never wait on a prompt. If this routine stalls
6
+ :: or is refused a tool under acceptEdits, change it to bypassPermissions for this one file, knowing
7
+ :: what that grants. The guardrails live in the contract and the routine, not in this flag.
8
+ @echo off
9
+ cd /d "«SEO_ROOT»"
10
+ "%USERPROFILE%\.local\bin\claude.exe" -p "Read «SEO_ROOT»/routines/seo-draft-run/SKILL.md and follow it." --permission-mode acceptEdits --output-format json < nul > "«SEO_ROOT»\run\seo-draft-run.last.json"
11
+ if errorlevel 1 node "«SEO_ROOT»\scripts\runlog.mjs" --failed-run seo-draft-run --exit-code %errorlevel%
@@ -0,0 +1,11 @@
1
+ :: «SEO_ROOT»\run\seo-index-sweep.cmd
2
+ :: Copy this file to seo-index-sweep.cmd (drop the .example), replace «SEO_ROOT» with your real folder, and check the
3
+ :: path to claude.exe: this is where the native installer puts it (where.exe claude shows yours).
4
+ :: Never point it at the Desktop app's bundled copy; Task Scheduler cannot see that path.
5
+ :: Section 10 of CAPABILITIES.md: a scheduled run must never wait on a prompt. If this routine stalls
6
+ :: or is refused a tool under acceptEdits, change it to bypassPermissions for this one file, knowing
7
+ :: what that grants. The guardrails live in the contract and the routine, not in this flag.
8
+ @echo off
9
+ cd /d "«SEO_ROOT»"
10
+ "%USERPROFILE%\.local\bin\claude.exe" -p "Read «SEO_ROOT»/routines/seo-index-sweep/SKILL.md and follow it." --permission-mode acceptEdits --output-format json < nul > "«SEO_ROOT»\run\seo-index-sweep.last.json"
11
+ if errorlevel 1 node "«SEO_ROOT»\scripts\runlog.mjs" --failed-run seo-index-sweep --exit-code %errorlevel%
@@ -0,0 +1,11 @@
1
+ :: «SEO_ROOT»\run\seo-intake-and-map.cmd
2
+ :: Copy this file to seo-intake-and-map.cmd (drop the .example), replace «SEO_ROOT» with your real folder, and check the
3
+ :: path to claude.exe: this is where the native installer puts it (where.exe claude shows yours).
4
+ :: Never point it at the Desktop app's bundled copy; Task Scheduler cannot see that path.
5
+ :: Section 10 of CAPABILITIES.md: a scheduled run must never wait on a prompt. If this routine stalls
6
+ :: or is refused a tool under acceptEdits, change it to bypassPermissions for this one file, knowing
7
+ :: what that grants. The guardrails live in the contract and the routine, not in this flag.
8
+ @echo off
9
+ cd /d "«SEO_ROOT»"
10
+ "%USERPROFILE%\.local\bin\claude.exe" -p "Read «SEO_ROOT»/routines/seo-intake-and-map/SKILL.md and follow it." --permission-mode acceptEdits --output-format json < nul > "«SEO_ROOT»\run\seo-intake-and-map.last.json"
11
+ if errorlevel 1 node "«SEO_ROOT»\scripts\runlog.mjs" --failed-run seo-intake-and-map --exit-code %errorlevel%
@@ -0,0 +1,11 @@
1
+ :: «SEO_ROOT»\run\seo-publish-run.cmd
2
+ :: Copy this file to seo-publish-run.cmd (drop the .example), replace «SEO_ROOT» with your real folder, and check the
3
+ :: path to claude.exe: this is where the native installer puts it (where.exe claude shows yours).
4
+ :: Never point it at the Desktop app's bundled copy; Task Scheduler cannot see that path.
5
+ :: Section 10 of CAPABILITIES.md: a scheduled run must never wait on a prompt. If this routine stalls
6
+ :: or is refused a tool under acceptEdits, change it to bypassPermissions for this one file, knowing
7
+ :: what that grants. The guardrails live in the contract and the routine, not in this flag.
8
+ @echo off
9
+ cd /d "«SEO_ROOT»"
10
+ "%USERPROFILE%\.local\bin\claude.exe" -p "Read «SEO_ROOT»/routines/seo-publish-run/SKILL.md and follow it." --permission-mode acceptEdits --output-format json < nul > "«SEO_ROOT»\run\seo-publish-run.last.json"
11
+ if errorlevel 1 node "«SEO_ROOT»\scripts\runlog.mjs" --failed-run seo-publish-run --exit-code %errorlevel%
@@ -0,0 +1,11 @@
1
+ :: «SEO_ROOT»\run\seo-rank-review.cmd
2
+ :: Copy this file to seo-rank-review.cmd (drop the .example), replace «SEO_ROOT» with your real folder, and check the
3
+ :: path to claude.exe: this is where the native installer puts it (where.exe claude shows yours).
4
+ :: Never point it at the Desktop app's bundled copy; Task Scheduler cannot see that path.
5
+ :: Section 10 of CAPABILITIES.md: a scheduled run must never wait on a prompt. If this routine stalls
6
+ :: or is refused a tool under acceptEdits, change it to bypassPermissions for this one file, knowing
7
+ :: what that grants. The guardrails live in the contract and the routine, not in this flag.
8
+ @echo off
9
+ cd /d "«SEO_ROOT»"
10
+ "%USERPROFILE%\.local\bin\claude.exe" -p "Read «SEO_ROOT»/routines/seo-rank-review/SKILL.md and follow it." --permission-mode acceptEdits --output-format json < nul > "«SEO_ROOT»\run\seo-rank-review.last.json"
11
+ if errorlevel 1 node "«SEO_ROOT»\scripts\runlog.mjs" --failed-run seo-rank-review --exit-code %errorlevel%
@@ -0,0 +1,11 @@
1
+ :: «SEO_ROOT»\run\seo-standup.cmd
2
+ :: Copy this file to seo-standup.cmd (drop the .example), replace «SEO_ROOT» with your real folder, and check the
3
+ :: path to claude.exe: this is where the native installer puts it (where.exe claude shows yours).
4
+ :: Never point it at the Desktop app's bundled copy; Task Scheduler cannot see that path.
5
+ :: Section 10 of CAPABILITIES.md: a scheduled run must never wait on a prompt. If this routine stalls
6
+ :: or is refused a tool under acceptEdits, change it to bypassPermissions for this one file, knowing
7
+ :: what that grants. The guardrails live in the contract and the routine, not in this flag.
8
+ @echo off
9
+ cd /d "«SEO_ROOT»"
10
+ "%USERPROFILE%\.local\bin\claude.exe" -p "Read «SEO_ROOT»/routines/seo-standup/SKILL.md and follow it." --permission-mode acceptEdits --output-format json < nul > "«SEO_ROOT»\run\seo-standup.last.json"
11
+ if errorlevel 1 node "«SEO_ROOT»\scripts\runlog.mjs" --failed-run seo-standup --exit-code %errorlevel%
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env node
2
+ /** Validate sampled answers and compute honest denominators. No network or file writes. */
3
+ import fs from "node:fs";
4
+ import assert from "node:assert/strict";
5
+ import { pathToFileURL } from "node:url";
6
+
7
+ export function summarize(rows) {
8
+ const groups = new Map(), seen = new Set();
9
+ for (const row of rows) {
10
+ for (const key of ["id", "run_id", "question_set", "question_id", "question", "surface", "locale", "mode", "personalization", "captured_at"])
11
+ if (typeof row[key] !== "string" || !row[key].trim()) throw new Error(`Missing ${key}`);
12
+ if (Number.isNaN(Date.parse(row.captured_at))) throw new Error("Invalid captured_at");
13
+ if (seen.has(row.id)) throw new Error(`Duplicate observation ${row.id}`);
14
+ seen.add(row.id);
15
+ if (typeof row.available !== "boolean" || typeof row.answer_present !== "boolean") throw new Error("Availability and answer presence must be explicit");
16
+ if (!row.available && row.answer_present) throw new Error("An unavailable surface cannot have an observed answer");
17
+ if (row.schema !== 1 || !(row.model === null || typeof row.model === "string")) throw new Error("Invalid observation schema or model");
18
+ if (!Array.isArray(row.cited_urls) || row.cited_urls.some(u => { try { return !["http:", "https:"].includes(new URL(u).protocol); } catch { return true; } })) throw new Error("Invalid cited_urls");
19
+ const eligible = row.available && row.answer_present;
20
+ if (eligible) {
21
+ if (typeof row.mentioned !== "boolean" || typeof row.cited !== "boolean") throw new Error("Observed answers need explicit mention and citation values");
22
+ if (typeof row.evidence !== "string" || !row.evidence) throw new Error("An observation needs evidence");
23
+ if (row.cited && !row.cited_urls.length) throw new Error("A citation needs a URL");
24
+ } else if (row.mentioned !== null || row.cited !== null) throw new Error("Unavailable or absent answers must use null, not false");
25
+ if (!row.available && (typeof row.unavailable_reason !== "string" || !row.unavailable_reason)) throw new Error("Unavailable needs a reason");
26
+ // A model API and a consumer search surface must have different surface/mode labels.
27
+ const key = JSON.stringify([row.run_id, row.question_set, row.surface, row.locale, row.mode, row.model, row.personalization]);
28
+ const g = groups.get(key) ?? { run_id: row.run_id, question_set: row.question_set, surface: row.surface, locale: row.locale, mode: row.mode, model: row.model, personalization: row.personalization, attempts: 0, available: 0, observed_answers: 0, unavailable: 0, no_answer: 0, mentions: 0, citations: 0, questions: new Set() };
29
+ g.attempts++; g.questions.add(row.question_id);
30
+ if (!row.available) g.unavailable++;
31
+ else { g.available++; if (!row.answer_present) g.no_answer++; }
32
+ if (eligible) { g.observed_answers++; if (row.mentioned) g.mentions++; if (row.cited) g.citations++; }
33
+ groups.set(key, g);
34
+ }
35
+ return [...groups.values()].map(({ questions, ...g }) => ({ ...g, questions_attempted: questions.size,
36
+ mention_rate: g.observed_answers ? g.mentions / g.observed_answers : null,
37
+ citation_rate: g.observed_answers ? g.citations / g.observed_answers : null,
38
+ answer_trigger_rate: g.available ? g.observed_answers / g.available : null }));
39
+ }
40
+ function selftest() {
41
+ const a = { schema: 1, run_id: "r1", id: "r1:q1:surface", question_set: "v1", question_id: "q1", question: "Which service fits?", surface: "consumer-search", locale: "en-US", mode: "search", model: null, personalization: "fresh conversation", captured_at: "2026-09-11T10:00:00Z", available: true, answer_present: true, mentioned: true, cited: true, cited_urls: ["https://example.com/service"], evidence: "capture.txt" };
42
+ const blocked = { ...a, id: "r1:q2:surface", question_id: "q2", available: false, answer_present: false, mentioned: null, cited: null, cited_urls: [], unavailable_reason: "login required" };
43
+ const absent = { ...a, id: "r1:q3:surface", question_id: "q3", answer_present: false, mentioned: null, cited: null, cited_urls: [] };
44
+ const negative = { ...a, id: "r1:q4:surface", question_id: "q4", mentioned: false, cited: false, cited_urls: [] };
45
+ const [g] = summarize([a, blocked, absent, negative]);
46
+ assert.equal(g.mention_rate, .5); assert.equal(g.citation_rate, .5); assert.equal(g.unavailable, 1); assert.equal(g.no_answer, 1); assert.equal(g.answer_trigger_rate, 2/3);
47
+ assert.equal(summarize([blocked])[0].citation_rate, null);
48
+ assert.equal(summarize([a, { ...a, id: "api", surface: "model-api" }]).length, 2);
49
+ assert.equal(summarize([a, { ...a, id: "next", run_id: "r2" }]).length, 2);
50
+ assert.throws(() => summarize([a, a]), /Duplicate/);
51
+ assert.throws(() => summarize([{ ...blocked, mentioned: false }]), /null/);
52
+ assert.throws(() => summarize([{ ...a, cited_urls: [] }]), /URL/);
53
+ assert.throws(() => summarize([{ ...a, evidence: "" }]), /evidence/);
54
+ process.stdout.write("answer-audit: selftest PASS\n");
55
+ }
56
+ if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
57
+ try {
58
+ if (process.argv.includes("--selftest")) selftest();
59
+ else { const at = process.argv.indexOf("--input"); if (at < 0 || !process.argv[at + 1]) throw new Error("Usage: node scripts/answer-audit.mjs --input <observations.jsonl> | --selftest");
60
+ const rows = fs.readFileSync(process.argv[at + 1], "utf8").split(/\r?\n/).filter(s => s.trim()).map(s => JSON.parse(s));
61
+ process.stdout.write(JSON.stringify(summarize(rows), null, 2) + "\n"); }
62
+ } catch (e) { process.stderr.write(e.message + "\n"); process.exitCode = 1; }
63
+ }