create-hq 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/dist/deps.d.ts +4 -0
  2. package/dist/deps.d.ts.map +1 -0
  3. package/dist/deps.js +65 -0
  4. package/dist/deps.js.map +1 -0
  5. package/dist/git.d.ts +3 -0
  6. package/dist/git.d.ts.map +1 -0
  7. package/dist/git.js +19 -0
  8. package/dist/git.js.map +1 -0
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +23 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/scaffold.d.ts +8 -0
  14. package/dist/scaffold.d.ts.map +1 -0
  15. package/dist/scaffold.js +130 -0
  16. package/dist/scaffold.js.map +1 -0
  17. package/dist/ui.d.ts +7 -0
  18. package/dist/ui.d.ts.map +1 -0
  19. package/dist/ui.js +36 -0
  20. package/dist/ui.js.map +1 -0
  21. package/package.json +41 -0
  22. package/template/.claude/CLAUDE.md +202 -0
  23. package/template/.claude/commands/checkpoint.md +127 -0
  24. package/template/.claude/commands/cleanup.md +307 -0
  25. package/template/.claude/commands/execute-task.md +440 -0
  26. package/template/.claude/commands/exit-plan.md +41 -0
  27. package/template/.claude/commands/handoff.md +97 -0
  28. package/template/.claude/commands/learn.md +218 -0
  29. package/template/.claude/commands/metrics.md +118 -0
  30. package/template/.claude/commands/newworker.md +162 -0
  31. package/template/.claude/commands/nexttask.md +67 -0
  32. package/template/.claude/commands/prd.md +238 -0
  33. package/template/.claude/commands/reanchor.md +51 -0
  34. package/template/.claude/commands/remember.md +126 -0
  35. package/template/.claude/commands/run-project.md +348 -0
  36. package/template/.claude/commands/run.md +110 -0
  37. package/template/.claude/commands/search-reindex.md +62 -0
  38. package/template/.claude/commands/search.md +100 -0
  39. package/template/.claude/commands/setup.md +381 -0
  40. package/template/.claude/scripts/pure-ralph-loop.ps1 +312 -0
  41. package/template/.claude/scripts/pure-ralph-loop.sh +859 -0
  42. package/template/CHANGELOG.md +220 -0
  43. package/template/LICENSE +21 -0
  44. package/template/MIGRATION.md +259 -0
  45. package/template/README.md +368 -0
  46. package/template/data/journal/.gitkeep +0 -0
  47. package/template/docs/images/ascii-banner-options.md +122 -0
  48. package/template/docs/images/hq-banner.svg +105 -0
  49. package/template/knowledge/Ralph/01-overview.md +71 -0
  50. package/template/knowledge/Ralph/02-core-concepts.md +114 -0
  51. package/template/knowledge/Ralph/03-how-ralph-works.md +184 -0
  52. package/template/knowledge/Ralph/04-back-pressure.md +222 -0
  53. package/template/knowledge/Ralph/05-specifications.md +210 -0
  54. package/template/knowledge/Ralph/06-agents-md.md +222 -0
  55. package/template/knowledge/Ralph/07-implementation.md +316 -0
  56. package/template/knowledge/Ralph/08-economics.md +182 -0
  57. package/template/knowledge/Ralph/09-resources.md +145 -0
  58. package/template/knowledge/Ralph/10-claude-code-workflow.md +212 -0
  59. package/template/knowledge/Ralph/11-team-training-guide.md +383 -0
  60. package/template/knowledge/Ralph/README.md +40 -0
  61. package/template/knowledge/ai-security-framework/CONTRIBUTING.md +139 -0
  62. package/template/knowledge/ai-security-framework/GLOSSARY.md +176 -0
  63. package/template/knowledge/ai-security-framework/LICENSE +21 -0
  64. package/template/knowledge/ai-security-framework/QUICK-START.md +172 -0
  65. package/template/knowledge/ai-security-framework/README.md +232 -0
  66. package/template/knowledge/ai-security-framework/checklists/browser-security.md +301 -0
  67. package/template/knowledge/ai-security-framework/checklists/credential-isolation.md +322 -0
  68. package/template/knowledge/ai-security-framework/checklists/incident-response.md +288 -0
  69. package/template/knowledge/ai-security-framework/checklists/pre-flight.md +249 -0
  70. package/template/knowledge/ai-security-framework/checklists/weekly-audit.md +159 -0
  71. package/template/knowledge/ai-security-framework/configs/audit-logging.md +372 -0
  72. package/template/knowledge/ai-security-framework/configs/kill-switches.md +354 -0
  73. package/template/knowledge/ai-security-framework/docs/01-core-principles.md +256 -0
  74. package/template/knowledge/ai-security-framework/docs/02-threat-landscape.md +326 -0
  75. package/template/knowledge/ai-security-framework/docs/03-security-posture.md +250 -0
  76. package/template/knowledge/ai-security-framework/templates/agents-security.md +233 -0
  77. package/template/knowledge/design-styles/README.md +42 -0
  78. package/template/knowledge/design-styles/american-industrial.md +136 -0
  79. package/template/knowledge/design-styles/ethereal-abstract.md +133 -0
  80. package/template/knowledge/design-styles/liminal-portal.md +111 -0
  81. package/template/knowledge/design-styles/swipes/american-industrial/G-3m4YPW0AADdu2.jpeg +0 -0
  82. package/template/knowledge/design-styles/swipes/american-industrial/G-JJlt5WwAABK3K.png +0 -0
  83. package/template/knowledge/design-styles/swipes/american-industrial/G-JJmj5W0AEbJ-7.png +0 -0
  84. package/template/knowledge/design-styles/swipes/american-industrial/G59fgNuXkAAKLJQ (1).jpeg +0 -0
  85. package/template/knowledge/design-styles/swipes/american-industrial/G59fgNuXkAAKLJQ.jpeg +0 -0
  86. package/template/knowledge/design-styles/swipes/american-industrial/G7fVkn3WEAAM-ST.jpeg +0 -0
  87. package/template/knowledge/design-styles/swipes/american-industrial/G8ECO5JWEAIksyn.png +0 -0
  88. package/template/knowledge/design-styles/swipes/american-industrial/G9-3GQSWoAA8eqZ.png +0 -0
  89. package/template/knowledge/design-styles/swipes/american-industrial/G9xEOqrXkAEZRcs.png +0 -0
  90. package/template/knowledge/design-styles/swipes/american-industrial/G_MVeJrXQAA8sx4.jpeg +0 -0
  91. package/template/knowledge/design-styles/swipes/american-industrial/G_RSkmGXkAAgAVZ.png +0 -0
  92. package/template/knowledge/design-styles/swipes/american-industrial/README.md +31 -0
  93. package/template/knowledge/design-styles/swipes/american-industrial/qyqtg7Dq.png +0 -0
  94. package/template/knowledge/dev-team/README.md +35 -0
  95. package/template/knowledge/dev-team/patterns/README.md +34 -0
  96. package/template/knowledge/dev-team/patterns/frontend/react-best-practices.md +178 -0
  97. package/template/knowledge/dev-team/troubleshooting/README.md +31 -0
  98. package/template/knowledge/dev-team/workflows/README.md +49 -0
  99. package/template/knowledge/hq/checkpoint-schema.json +51 -0
  100. package/template/knowledge/hq/index-md-spec.md +74 -0
  101. package/template/knowledge/hq/thread-schema.md +153 -0
  102. package/template/knowledge/hq-core/checkpoint-schema.json +51 -0
  103. package/template/knowledge/hq-core/index-md-spec.md +74 -0
  104. package/template/knowledge/hq-core/thread-schema.md +153 -0
  105. package/template/knowledge/loom/README.md +51 -0
  106. package/template/knowledge/loom/architecture.md +125 -0
  107. package/template/knowledge/loom/code-style.md +169 -0
  108. package/template/knowledge/loom/llm-proxy.md +132 -0
  109. package/template/knowledge/loom/state-machine.md +131 -0
  110. package/template/knowledge/loom/thread-system.md +117 -0
  111. package/template/knowledge/loom/tools.md +94 -0
  112. package/template/knowledge/loom/weaver.md +96 -0
  113. package/template/knowledge/loom/web-frontend.md +131 -0
  114. package/template/knowledge/projects/README.md +72 -0
  115. package/template/knowledge/projects/templates/README.template.md +28 -0
  116. package/template/knowledge/workers/README.md +195 -0
  117. package/template/knowledge/workers/ralph-loop-pattern.md +157 -0
  118. package/template/knowledge/workers/skill-schema.md +182 -0
  119. package/template/knowledge/workers/state-machine.md +102 -0
  120. package/template/knowledge/workers/templates/base-worker.yaml +73 -0
  121. package/template/knowledge/workers/templates/code-worker.yaml +85 -0
  122. package/template/knowledge/workers/templates/skill.yaml +49 -0
  123. package/template/knowledge/workers/templates/social-worker.yaml +70 -0
  124. package/template/modules/examples/full-manifest.yaml +92 -0
  125. package/template/modules/examples/minimal.yaml +14 -0
  126. package/template/modules/modules.yaml +59 -0
  127. package/template/projects/.gitkeep +0 -0
  128. package/template/projects/incorporate-workers-into-pure-ralph/prd.json +88 -0
  129. package/template/projects/pure-ralph-branch-isolation/README.md +114 -0
  130. package/template/projects/pure-ralph-branch-isolation/prd.json +123 -0
  131. package/template/projects/purist-ralph-loop/README.md +148 -0
  132. package/template/projects/purist-ralph-loop/prd.json +135 -0
  133. package/template/projects/ralph-test/prd.json +50 -0
  134. package/template/prompts/pure-ralph-base.md +551 -0
  135. package/template/settings/.gitkeep +0 -0
  136. package/template/settings/pure-ralph.json +42 -0
  137. package/template/social-content/drafts/INDEX.md +21 -0
  138. package/template/social-content/drafts/linkedin/.gitkeep +1 -0
  139. package/template/social-content/drafts/x/.gitkeep +1 -0
  140. package/template/social-content/images/.gitkeep +1 -0
  141. package/template/starter-projects/code-worker/README.md +97 -0
  142. package/template/starter-projects/code-worker/prd.json +45 -0
  143. package/template/starter-projects/personal-assistant/README.md +42 -0
  144. package/template/starter-projects/personal-assistant/prd.json +43 -0
  145. package/template/starter-projects/social-media/README.md +60 -0
  146. package/template/starter-projects/social-media/prd.json +43 -0
  147. package/template/workers/content-brand/README.md +59 -0
  148. package/template/workers/content-brand/skills/messaging-alignment.md +91 -0
  149. package/template/workers/content-brand/skills/tone-check.md +76 -0
  150. package/template/workers/content-brand/skills/voice-analysis.md +68 -0
  151. package/template/workers/content-brand/worker.yaml +81 -0
  152. package/template/workers/content-legal/README.md +80 -0
  153. package/template/workers/content-legal/skills/claim-substantiation.md +150 -0
  154. package/template/workers/content-legal/skills/compliance-scan.md +123 -0
  155. package/template/workers/content-legal/skills/disclaimer-check.md +146 -0
  156. package/template/workers/content-legal/worker.yaml +118 -0
  157. package/template/workers/content-product/README.md +77 -0
  158. package/template/workers/content-product/skills/claim-verification.md +96 -0
  159. package/template/workers/content-product/skills/feature-accuracy.md +117 -0
  160. package/template/workers/content-product/skills/stats-check.md +128 -0
  161. package/template/workers/content-product/worker.yaml +97 -0
  162. package/template/workers/content-sales/README.md +70 -0
  163. package/template/workers/content-sales/skills/conversion-analysis.md +96 -0
  164. package/template/workers/content-sales/skills/cta-audit.md +107 -0
  165. package/template/workers/content-sales/skills/value-prop-check.md +114 -0
  166. package/template/workers/content-sales/worker.yaml +93 -0
  167. package/template/workers/content-shared/cli.ts +242 -0
  168. package/template/workers/content-shared/index.ts +234 -0
  169. package/template/workers/content-shared/lib/accuracy-analyzer.ts +661 -0
  170. package/template/workers/content-shared/lib/analyze.ts +370 -0
  171. package/template/workers/content-shared/lib/brand-analyzer.ts +526 -0
  172. package/template/workers/content-shared/lib/cms-integration.ts +446 -0
  173. package/template/workers/content-shared/lib/compliance-analyzer.ts +655 -0
  174. package/template/workers/content-shared/lib/conversion-analyzer.ts +555 -0
  175. package/template/workers/content-shared/lib/github-integration.ts +582 -0
  176. package/template/workers/content-shared/lib/output.ts +373 -0
  177. package/template/workers/content-shared/lib/parser.ts +771 -0
  178. package/template/workers/content-shared/lib/priority.ts +439 -0
  179. package/template/workers/content-shared/lib/recommendations.ts +512 -0
  180. package/template/workers/content-shared/lib/reporter.ts +749 -0
  181. package/template/workers/content-shared/lib/restructure.ts +664 -0
  182. package/template/workers/content-shared/lib/scorer.ts +140 -0
  183. package/template/workers/content-shared/lib/types.ts +227 -0
  184. package/template/workers/content-shared/lib/variants.ts +595 -0
  185. package/template/workers/content-shared/package.json +51 -0
  186. package/template/workers/content-shared/pnpm-lock.yaml +39 -0
  187. package/template/workers/content-shared/test/sample-page.json +115 -0
  188. package/template/workers/content-shared/tsconfig.json +20 -0
  189. package/template/workers/dev-team/README.md +166 -0
  190. package/template/workers/dev-team/_template.yaml +70 -0
  191. package/template/workers/dev-team/architect/package.json +27 -0
  192. package/template/workers/dev-team/architect/skills/api-design.md +89 -0
  193. package/template/workers/dev-team/architect/skills/refactor-plan.md +96 -0
  194. package/template/workers/dev-team/architect/skills/system-design.md +100 -0
  195. package/template/workers/dev-team/architect/src/index.ts +49 -0
  196. package/template/workers/dev-team/architect/src/mcp-server.ts +122 -0
  197. package/template/workers/dev-team/architect/src/skills/api-design.ts +316 -0
  198. package/template/workers/dev-team/architect/src/skills/refactor-plan.ts +264 -0
  199. package/template/workers/dev-team/architect/src/skills/system-design.ts +212 -0
  200. package/template/workers/dev-team/architect/tsconfig.json +19 -0
  201. package/template/workers/dev-team/architect/worker.yaml +128 -0
  202. package/template/workers/dev-team/backend-dev/package-lock.json +1252 -0
  203. package/template/workers/dev-team/backend-dev/package.json +27 -0
  204. package/template/workers/dev-team/backend-dev/skills/implement-endpoint.md +70 -0
  205. package/template/workers/dev-team/backend-dev/skills/implement-service.md +62 -0
  206. package/template/workers/dev-team/backend-dev/src/index.ts +51 -0
  207. package/template/workers/dev-team/backend-dev/src/mcp-server.ts +109 -0
  208. package/template/workers/dev-team/backend-dev/src/skills/implement-endpoint.ts +122 -0
  209. package/template/workers/dev-team/backend-dev/src/skills/implement-service.ts +126 -0
  210. package/template/workers/dev-team/backend-dev/tsconfig.json +19 -0
  211. package/template/workers/dev-team/backend-dev/worker.yaml +128 -0
  212. package/template/workers/dev-team/code-reviewer/package-lock.json +1080 -0
  213. package/template/workers/dev-team/code-reviewer/package.json +24 -0
  214. package/template/workers/dev-team/code-reviewer/skills/merge-to-production.md +61 -0
  215. package/template/workers/dev-team/code-reviewer/skills/merge-to-staging.md +54 -0
  216. package/template/workers/dev-team/code-reviewer/skills/request-changes.md +63 -0
  217. package/template/workers/dev-team/code-reviewer/skills/review-pr.md +77 -0
  218. package/template/workers/dev-team/code-reviewer/src/index.ts +56 -0
  219. package/template/workers/dev-team/code-reviewer/src/mcp-server.ts +101 -0
  220. package/template/workers/dev-team/code-reviewer/tsconfig.json +19 -0
  221. package/template/workers/dev-team/code-reviewer/worker.yaml +90 -0
  222. package/template/workers/dev-team/database-dev/package.json +22 -0
  223. package/template/workers/dev-team/database-dev/skills/create-schema.md +48 -0
  224. package/template/workers/dev-team/database-dev/src/index.ts +50 -0
  225. package/template/workers/dev-team/database-dev/src/mcp-server.ts +76 -0
  226. package/template/workers/dev-team/database-dev/tsconfig.json +18 -0
  227. package/template/workers/dev-team/database-dev/worker.yaml +90 -0
  228. package/template/workers/dev-team/frontend-dev/package.json +22 -0
  229. package/template/workers/dev-team/frontend-dev/skills/create-component.md +26 -0
  230. package/template/workers/dev-team/frontend-dev/src/index.ts +50 -0
  231. package/template/workers/dev-team/frontend-dev/src/mcp-server.ts +77 -0
  232. package/template/workers/dev-team/frontend-dev/tsconfig.json +18 -0
  233. package/template/workers/dev-team/frontend-dev/worker.yaml +132 -0
  234. package/template/workers/dev-team/infra-dev/package.json +24 -0
  235. package/template/workers/dev-team/infra-dev/skills/add-monitoring.md +73 -0
  236. package/template/workers/dev-team/infra-dev/skills/configure-deployment.md +80 -0
  237. package/template/workers/dev-team/infra-dev/skills/create-dockerfile.md +62 -0
  238. package/template/workers/dev-team/infra-dev/skills/setup-cicd.md +63 -0
  239. package/template/workers/dev-team/infra-dev/src/index.ts +55 -0
  240. package/template/workers/dev-team/infra-dev/src/mcp-server.ts +82 -0
  241. package/template/workers/dev-team/infra-dev/tsconfig.json +19 -0
  242. package/template/workers/dev-team/infra-dev/worker.yaml +92 -0
  243. package/template/workers/dev-team/knowledge-curator/package.json +24 -0
  244. package/template/workers/dev-team/knowledge-curator/skills/curate-troubleshooting.md +63 -0
  245. package/template/workers/dev-team/knowledge-curator/skills/process-learnings.md +61 -0
  246. package/template/workers/dev-team/knowledge-curator/skills/sync-documentation.md +76 -0
  247. package/template/workers/dev-team/knowledge-curator/skills/update-patterns.md +63 -0
  248. package/template/workers/dev-team/knowledge-curator/src/index.ts +53 -0
  249. package/template/workers/dev-team/knowledge-curator/src/mcp-server.ts +92 -0
  250. package/template/workers/dev-team/knowledge-curator/tsconfig.json +19 -0
  251. package/template/workers/dev-team/knowledge-curator/worker.yaml +80 -0
  252. package/template/workers/dev-team/motion-designer/package.json +22 -0
  253. package/template/workers/dev-team/motion-designer/skills/add-animation.md +25 -0
  254. package/template/workers/dev-team/motion-designer/skills/generate-image.md +36 -0
  255. package/template/workers/dev-team/motion-designer/src/index.ts +63 -0
  256. package/template/workers/dev-team/motion-designer/src/mcp-server.ts +79 -0
  257. package/template/workers/dev-team/motion-designer/tsconfig.json +18 -0
  258. package/template/workers/dev-team/motion-designer/worker.yaml +84 -0
  259. package/template/workers/dev-team/product-planner/queue.json +4 -0
  260. package/template/workers/dev-team/product-planner/worker.yaml +220 -0
  261. package/template/workers/dev-team/project-manager/package-lock.json +1252 -0
  262. package/template/workers/dev-team/project-manager/package.json +27 -0
  263. package/template/workers/dev-team/project-manager/skills/create-prd.md +66 -0
  264. package/template/workers/dev-team/project-manager/skills/next-issue.md +51 -0
  265. package/template/workers/dev-team/project-manager/skills/project-status.md +59 -0
  266. package/template/workers/dev-team/project-manager/skills/update-learnings.md +65 -0
  267. package/template/workers/dev-team/project-manager/src/index.ts +54 -0
  268. package/template/workers/dev-team/project-manager/src/mcp-server.ts +207 -0
  269. package/template/workers/dev-team/project-manager/src/skills/create-prd.ts +86 -0
  270. package/template/workers/dev-team/project-manager/src/skills/next-issue.ts +137 -0
  271. package/template/workers/dev-team/project-manager/src/skills/project-status.ts +131 -0
  272. package/template/workers/dev-team/project-manager/src/skills/update-learnings.ts +94 -0
  273. package/template/workers/dev-team/project-manager/tsconfig.json +19 -0
  274. package/template/workers/dev-team/project-manager/worker.yaml +96 -0
  275. package/template/workers/dev-team/qa-tester/package.json +24 -0
  276. package/template/workers/dev-team/qa-tester/skills/create-demo-account.md +36 -0
  277. package/template/workers/dev-team/qa-tester/skills/run-tests.md +36 -0
  278. package/template/workers/dev-team/qa-tester/skills/write-test.md +27 -0
  279. package/template/workers/dev-team/qa-tester/src/index.ts +61 -0
  280. package/template/workers/dev-team/qa-tester/src/mcp-server.ts +88 -0
  281. package/template/workers/dev-team/qa-tester/tsconfig.json +18 -0
  282. package/template/workers/dev-team/qa-tester/worker.yaml +116 -0
  283. package/template/workers/dev-team/task-executor/package-lock.json +1252 -0
  284. package/template/workers/dev-team/task-executor/package.json +27 -0
  285. package/template/workers/dev-team/task-executor/skills/analyze-issue.md +101 -0
  286. package/template/workers/dev-team/task-executor/skills/execute.md +133 -0
  287. package/template/workers/dev-team/task-executor/skills/report-learnings.md +106 -0
  288. package/template/workers/dev-team/task-executor/skills/validate-completion.md +121 -0
  289. package/template/workers/dev-team/task-executor/src/index.ts +54 -0
  290. package/template/workers/dev-team/task-executor/src/mcp-server.ts +139 -0
  291. package/template/workers/dev-team/task-executor/src/skills/analyze-issue.ts +219 -0
  292. package/template/workers/dev-team/task-executor/src/skills/execute.ts +132 -0
  293. package/template/workers/dev-team/task-executor/src/skills/report-learnings.ts +119 -0
  294. package/template/workers/dev-team/task-executor/src/skills/validate-completion.ts +142 -0
  295. package/template/workers/dev-team/task-executor/tsconfig.json +19 -0
  296. package/template/workers/dev-team/task-executor/worker.yaml +110 -0
  297. package/template/workers/registry.yaml +171 -0
  298. package/template/workers/security-scanner/README.md +73 -0
  299. package/template/workers/security-scanner/skills/pre-deploy-check.md +205 -0
  300. package/template/workers/security-scanner/worker.yaml +26 -0
  301. package/template/workspace/checkpoints/.gitkeep +0 -0
  302. package/template/workspace/content-ideas/inbox.jsonl +0 -0
  303. package/template/workspace/drafts/.gitkeep +0 -0
  304. package/template/workspace/learnings/.gitkeep +3 -0
  305. package/template/workspace/orchestrator/.gitkeep +0 -0
  306. package/template/workspace/ralph-test/COMPLETE.md +18 -0
  307. package/template/workspace/ralph-test/hello.txt +2 -0
  308. package/template/workspace/reports/.gitkeep +0 -0
  309. package/template/workspace/scratch/.gitkeep +0 -0
  310. package/template/workspace/threads/.gitkeep +3 -0
@@ -0,0 +1,107 @@
1
+ # Skill: CTA Audit
2
+
3
+ Detailed analysis of call-to-action elements across page.
4
+
5
+ ## Input
6
+
7
+ Page content JSON with extracted CTAs.
8
+
9
+ ## Process
10
+
11
+ 1. **Inventory all CTAs**
12
+ - Buttons
13
+ - Text links
14
+ - Form submissions
15
+ - Navigation prompts
16
+
17
+ 2. **Classify each CTA**
18
+ - Type (primary, secondary, tertiary)
19
+ - Goal (demo, signup, learn more)
20
+ - Commitment level (high, medium, low)
21
+
22
+ 3. **Evaluate each CTA**
23
+ - Copy effectiveness
24
+ - Visual prominence
25
+ - Placement strategy
26
+ - Context appropriateness
27
+
28
+ 4. **Assess overall strategy**
29
+ - CTA density
30
+ - Variety balance
31
+ - Journey alignment
32
+ - Conflict detection
33
+
34
+ ## CTA Evaluation Criteria
35
+
36
+ ### Copy Quality
37
+ - **Excellent**: Benefit-driven, specific outcome ("Start Saving 40% Today")
38
+ - **Good**: Action-oriented with context ("Get Your Free Demo")
39
+ - **Adequate**: Clear but generic ("Request Demo")
40
+ - **Poor**: Vague or passive ("Submit", "Click Here")
41
+
42
+ ### Visual Prominence
43
+ - **Excellent**: High contrast, ample whitespace, prominent size
44
+ - **Good**: Noticeable, clear hierarchy
45
+ - **Adequate**: Visible but not prominent
46
+ - **Poor**: Hard to find, blends with content
47
+
48
+ ### Placement
49
+ - **Excellent**: At decision points, after value established
50
+ - **Good**: Strategically placed, good density
51
+ - **Adequate**: Present but not optimal
52
+ - **Poor**: Misplaced, too early/late, wrong context
53
+
54
+ ## CTA Best Practices
55
+
56
+ ### Primary CTA
57
+ - One per viewport
58
+ - High contrast color
59
+ - Benefit-driven copy
60
+ - After value proposition
61
+
62
+ ### Secondary CTA
63
+ - Lower commitment option
64
+ - Complement primary
65
+ - Text link or ghost button
66
+ - Different action/audience
67
+
68
+ ### Micro-CTAs
69
+ - Content engagement
70
+ - Social sharing
71
+ - Navigation helpers
72
+ - Lead nurturing
73
+
74
+ ## Output
75
+
76
+ ```yaml
77
+ cta_audit:
78
+ total_count: 6
79
+ breakdown:
80
+ primary: 2
81
+ secondary: 3
82
+ tertiary: 1
83
+ inventory:
84
+ - text: "Get a Demo"
85
+ type: "primary"
86
+ location: "hero"
87
+ rating: "A"
88
+ notes: "Well-placed, clear action"
89
+ - text: "Learn More"
90
+ type: "secondary"
91
+ location: "features"
92
+ rating: "C"
93
+ notes: "Generic copy, could be more specific"
94
+ - text: "Submit"
95
+ type: "primary"
96
+ location: "form"
97
+ rating: "D"
98
+ notes: "Generic, no benefit stated"
99
+ issues:
100
+ - "Two primary CTAs compete in hero section"
101
+ - "Form CTA uses generic 'Submit' text"
102
+ - "No CTA in pricing section"
103
+ recommendations:
104
+ - "Change 'Submit' to 'Start My Free Trial'"
105
+ - "Add secondary CTA to pricing comparison"
106
+ - "Consolidate hero CTAs to single primary"
107
+ ```
@@ -0,0 +1,114 @@
1
+ # Skill: Value Proposition Check
2
+
3
+ Assess value proposition clarity, differentiation, and impact.
4
+
5
+ ## Input
6
+
7
+ - Page content JSON
8
+ - Brand messaging guidelines
9
+ - Competitor positioning (if available)
10
+
11
+ ## Process
12
+
13
+ 1. **Identify value proposition elements**
14
+ - Headline/tagline
15
+ - Subheadline
16
+ - Supporting points
17
+ - Proof elements
18
+
19
+ 2. **Evaluate core components**
20
+ - What: Product/service clarity
21
+ - Who: Target audience specificity
22
+ - Why: Benefit articulation
23
+ - How: Differentiation
24
+
25
+ 3. **Assess communication**
26
+ - Clarity (instantly understood?)
27
+ - Specificity (concrete vs vague?)
28
+ - Credibility (provable?)
29
+ - Memorability (sticky?)
30
+
31
+ 4. **Score effectiveness**
32
+ - Component presence
33
+ - Communication quality
34
+ - Strategic alignment
35
+
36
+ ## Value Proposition Framework
37
+
38
+ ### Essential Components
39
+
40
+ | Component | Question | Good Example | Bad Example |
41
+ |-----------|----------|--------------|-------------|
42
+ | What | What do you offer? | "AI-powered banking assistant" | "Next-gen solution" |
43
+ | Who | Who is it for? | "Community banks and credit unions" | "Businesses everywhere" |
44
+ | Why | Why does it matter? | "Reduce call center volume 40%" | "Transform your operations" |
45
+ | How | How is it different? | "Only AI trained on banking regulations" | "Industry-leading technology" |
46
+
47
+ ### Quality Indicators
48
+
49
+ **Clarity**
50
+ - Understood in <5 seconds
51
+ - No jargon required
52
+ - Specific, not abstract
53
+
54
+ **Specificity**
55
+ - Numbers over adjectives
56
+ - Outcomes over features
57
+ - Examples over generalizations
58
+
59
+ **Credibility**
60
+ - Backed by proof
61
+ - Realistic claims
62
+ - Third-party validation
63
+
64
+ **Differentiation**
65
+ - Unique vs competitors
66
+ - Ownable position
67
+ - Clear alternative
68
+
69
+ ## Scoring Rubric
70
+
71
+ | Score | Description |
72
+ |-------|-------------|
73
+ | 90-100 | Exceptional - all components strong, differentiated |
74
+ | 70-89 | Good - most components present, some gaps |
75
+ | 50-69 | Adequate - basic value prop, weak differentiation |
76
+ | 30-49 | Poor - unclear or missing key components |
77
+ | 0-29 | Failed - no clear value proposition |
78
+
79
+ ## Output
80
+
81
+ ```yaml
82
+ value_prop_score: 78
83
+ headline_analysis:
84
+ text: "AI That Understands Banking"
85
+ clarity: 85
86
+ specificity: 70
87
+ differentiation: 80
88
+ issues:
89
+ - "Could be more specific about outcomes"
90
+ components:
91
+ what:
92
+ present: true
93
+ score: 80
94
+ evidence: "AI-powered platform"
95
+ who:
96
+ present: true
97
+ score: 85
98
+ evidence: "Banks and credit unions"
99
+ why:
100
+ present: true
101
+ score: 70
102
+ evidence: "Benefits mentioned but not quantified"
103
+ how:
104
+ present: false
105
+ score: 40
106
+ evidence: "Differentiation unclear"
107
+ recommendations:
108
+ - priority: "high"
109
+ issue: "Missing differentiation"
110
+ suggestion: "Add 'Only AI trained on 10,000+ banking regulations'"
111
+ - priority: "medium"
112
+ issue: "Vague benefits"
113
+ suggestion: "Quantify outcomes: 'Reduce call volume 40%'"
114
+ ```
@@ -0,0 +1,93 @@
1
+ worker:
2
+ id: content-sales
3
+ name: "Content Worker - Conversion Copy"
4
+ type: ContentWorker
5
+ version: "1.0"
6
+
7
+ execution:
8
+ mode: on_demand
9
+ max_runtime: 5m
10
+
11
+ context:
12
+ base:
13
+ - workers/public/content-sales/
14
+ - workers/public/content-shared/
15
+ - companies/example-company/knowledge/verticals/
16
+ - companies/example-company/knowledge/campaign-playbook.md
17
+ exclude:
18
+ - node_modules/
19
+ - dist/
20
+
21
+ output:
22
+ destination: workspace/reports/content/
23
+ format: markdown
24
+ naming: "{date}-content-sales-{page}.md"
25
+
26
+ skills:
27
+ - conversion-analysis
28
+ - cta-audit
29
+ - value-prop-check
30
+
31
+ instructions: |
32
+ Conversion Copy Analyst for ExampleCo
33
+
34
+ Purpose: Analyze content for conversion optimization, CTA effectiveness, and value proposition clarity.
35
+
36
+ ## Analysis Process
37
+ 1. Load page content from content/ directory
38
+ 2. Identify conversion goals for page type
39
+ 3. Audit CTAs, value props, and persuasion elements
40
+ 4. Score and recommend improvements
41
+
42
+ ## Page Conversion Goals
43
+ - Homepage: Demo request, explore products
44
+ - Product pages: Feature understanding, demo request
45
+ - Solutions pages: Vertical-specific demo, case study download
46
+ - Pricing: Plan selection, sales contact
47
+ - Resources: Content download, newsletter signup
48
+
49
+ ## Scoring Categories
50
+ - CTA effectiveness (0-100): Clear, compelling, well-placed
51
+ - Value proposition clarity (0-100): Benefits clear, differentiated
52
+ - Persuasion elements (0-100): Social proof, urgency, trust
53
+ - Conversion path (0-100): Clear journey, low friction
54
+
55
+ ## CTA Analysis Criteria
56
+ - Visibility: Above fold, contrasting, prominent
57
+ - Clarity: Action clear, outcome stated
58
+ - Motivation: Benefit-driven, low friction
59
+ - Placement: Strategic, contextual
60
+ - Quantity: Not overwhelming, appropriate density
61
+
62
+ ## Value Proposition Checklist
63
+ - [ ] Clear what product does
64
+ - [ ] Clear who it's for
65
+ - [ ] Specific benefits stated
66
+ - [ ] Differentiation from alternatives
67
+ - [ ] Proof to support claims
68
+
69
+ ## Persuasion Elements
70
+ - Social proof (testimonials, logos, stats)
71
+ - Authority (certifications, awards, press)
72
+ - Scarcity/urgency (when appropriate)
73
+ - Risk reversal (guarantees, trials)
74
+ - Reciprocity (free resources, tools)
75
+
76
+ ## Red Flags
77
+ - CTAs below fold only
78
+ - Generic CTA text ("Submit", "Click here")
79
+ - Missing value proposition
80
+ - No social proof
81
+ - Friction in conversion path
82
+ - Too many competing CTAs
83
+
84
+ ## Output
85
+ Generate markdown report with:
86
+ - Conversion optimization score
87
+ - CTA inventory and ratings
88
+ - Value prop assessment
89
+ - Prioritized recommendations
90
+
91
+ ## Knowledge Dependencies
92
+ - verticals/: Audience-specific messaging
93
+ - campaign-playbook.md: Campaign and conversion strategy
@@ -0,0 +1,242 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Content Analysis CLI
4
+ * Entry point for running content analysis from command line
5
+ *
6
+ * Usage: npx content-analyze <page-path> [options]
7
+ *
8
+ * Options:
9
+ * --report Generate markdown report
10
+ * --issues Create GitHub issues (dry-run by default)
11
+ * --cms Submit to CMS
12
+ * --worker Which worker analysis (brand|sales|product|legal|all)
13
+ * --output Output directory
14
+ * --live Disable dry-run mode (actually create issues/submit to CMS)
15
+ * --high-only Only process high-priority items
16
+ * --max Maximum issues to create (default: 10)
17
+ */
18
+
19
+ import * as fs from 'node:fs';
20
+ import * as path from 'node:path';
21
+ import { parsePageFile } from './lib/parser.js';
22
+ import { analyzePageFull, type AnalysisConfig } from './lib/analyze.js';
23
+ import { generateSuggestions } from './lib/recommendations.js';
24
+ import {
25
+ processAnalysisOutput,
26
+ formatOutputResultJSON,
27
+ type OutputConfig,
28
+ } from './lib/output.js';
29
+
30
+ // ============================================
31
+ // CLI Argument Parsing
32
+ // ============================================
33
+
34
+ interface CLIArgs {
35
+ pagePath: string;
36
+ report: boolean;
37
+ issues: boolean;
38
+ cms: boolean;
39
+ worker: 'brand' | 'sales' | 'product' | 'legal' | 'all';
40
+ output: string;
41
+ live: boolean;
42
+ highOnly: boolean;
43
+ max: number;
44
+ help: boolean;
45
+ version: boolean;
46
+ }
47
+
48
+ function parseArgs(args: string[]): CLIArgs {
49
+ const result: CLIArgs = {
50
+ pagePath: '',
51
+ report: true,
52
+ issues: false,
53
+ cms: false,
54
+ worker: 'all',
55
+ output: 'workspace/reports/content',
56
+ live: false,
57
+ highOnly: false,
58
+ max: 10,
59
+ help: false,
60
+ version: false,
61
+ };
62
+
63
+ for (let i = 0; i < args.length; i++) {
64
+ const arg = args[i];
65
+
66
+ if (arg === '--help' || arg === '-h') {
67
+ result.help = true;
68
+ } else if (arg === '--version' || arg === '-v') {
69
+ result.version = true;
70
+ } else if (arg === '--report') {
71
+ result.report = true;
72
+ } else if (arg === '--issues') {
73
+ result.issues = true;
74
+ } else if (arg === '--cms') {
75
+ result.cms = true;
76
+ } else if (arg === '--live') {
77
+ result.live = true;
78
+ } else if (arg === '--high-only') {
79
+ result.highOnly = true;
80
+ } else if (arg === '--worker' && args[i + 1]) {
81
+ const worker = args[++i] as CLIArgs['worker'];
82
+ if (['brand', 'sales', 'product', 'legal', 'all'].includes(worker)) {
83
+ result.worker = worker;
84
+ }
85
+ } else if (arg === '--output' && args[i + 1]) {
86
+ result.output = args[++i];
87
+ } else if (arg === '--max' && args[i + 1]) {
88
+ result.max = parseInt(args[++i], 10) || 10;
89
+ } else if (!arg.startsWith('-') && !result.pagePath) {
90
+ result.pagePath = arg;
91
+ }
92
+ }
93
+
94
+ return result;
95
+ }
96
+
97
+ function printHelp(): void {
98
+ console.log(`
99
+ Content Analysis CLI
100
+
101
+ Usage:
102
+ npx content-analyze <page-path> [options]
103
+ content-analyze <page-path> [options]
104
+
105
+ Arguments:
106
+ page-path Path to page JSON file (from content extraction)
107
+
108
+ Options:
109
+ --report Generate markdown report (default: true)
110
+ --issues Create GitHub issues (dry-run by default)
111
+ --cms Submit to CMS
112
+ --worker Which analysis to run: brand|sales|product|legal|all (default: all)
113
+ --output Output directory (default: workspace/reports/content)
114
+ --live Disable dry-run mode (actually create issues/submit)
115
+ --high-only Only process high-priority items
116
+ --max N Maximum issues to create (default: 10)
117
+ --help, -h Show this help message
118
+ --version, -v Show version
119
+
120
+ Examples:
121
+ # Analyze a page and generate report
122
+ npx content-analyze ./pages/home.json
123
+
124
+ # Analyze with GitHub issues (dry run)
125
+ npx content-analyze ./pages/pricing.json --issues
126
+
127
+ # Full analysis with CMS submission (live)
128
+ npx content-analyze ./pages/about.json --issues --cms --live
129
+
130
+ # Brand-only analysis
131
+ npx content-analyze ./pages/home.json --worker brand
132
+
133
+ # High priority only with custom output
134
+ npx content-analyze ./pages/home.json --high-only --output ./reports
135
+ `);
136
+ }
137
+
138
+ function printVersion(): void {
139
+ console.log('@hq/content-shared v1.0.0');
140
+ }
141
+
142
+ // ============================================
143
+ // Main CLI Entry Point
144
+ // ============================================
145
+
146
+ async function main(): Promise<void> {
147
+ const args = parseArgs(process.argv.slice(2));
148
+
149
+ if (args.help) {
150
+ printHelp();
151
+ process.exit(0);
152
+ }
153
+
154
+ if (args.version) {
155
+ printVersion();
156
+ process.exit(0);
157
+ }
158
+
159
+ if (!args.pagePath) {
160
+ console.error('Error: Page path is required');
161
+ console.error('Run with --help for usage information');
162
+ process.exit(1);
163
+ }
164
+
165
+ // Resolve and validate page path
166
+ const pagePath = path.resolve(args.pagePath);
167
+ if (!fs.existsSync(pagePath)) {
168
+ console.error(`Error: File not found: ${pagePath}`);
169
+ process.exit(1);
170
+ }
171
+
172
+ console.log(`[CLI] Analyzing: ${pagePath}`);
173
+ console.log(`[CLI] Worker: ${args.worker}`);
174
+ console.log(`[CLI] Mode: ${args.live ? 'LIVE' : 'dry-run'}`);
175
+ console.log('');
176
+
177
+ try {
178
+ // 1. Parse page content
179
+ console.log('[1/4] Parsing page content...');
180
+ const pageContent = await parsePageFile(pagePath);
181
+
182
+ // 2. Configure analysis based on worker type
183
+ const analysisConfig: AnalysisConfig = {
184
+ enableBrand: args.worker === 'all' || args.worker === 'brand',
185
+ enableConversion: args.worker === 'all' || args.worker === 'sales',
186
+ enableAccuracy: args.worker === 'all' || args.worker === 'product',
187
+ enableCompliance: args.worker === 'all' || args.worker === 'legal',
188
+ };
189
+
190
+ console.log('[2/4] Running analysis...');
191
+ const analysis = analyzePageFull(pageContent, analysisConfig);
192
+
193
+ // 3. Generate suggestions
194
+ console.log('[3/4] Generating suggestions...');
195
+ const suggestions = generateSuggestions(analysis);
196
+ console.log(` Found ${suggestions.length} suggestions`);
197
+
198
+ // 4. Process outputs
199
+ console.log('[4/4] Processing outputs...');
200
+ const outputConfig: Partial<OutputConfig> = {
201
+ reportPath: args.output,
202
+ workerName: `content-${args.worker}`,
203
+ enableGitHub: args.issues,
204
+ enableCMS: args.cms,
205
+ maxIssues: args.max,
206
+ highPriorityOnly: args.highOnly,
207
+ dryRun: !args.live,
208
+ };
209
+
210
+ const result = await processAnalysisOutput(analysis, outputConfig);
211
+
212
+ // Print results
213
+ console.log('');
214
+ console.log('=== Results ===');
215
+ console.log(`Report: ${result.reportPath || 'Not generated'}`);
216
+ console.log(`GitHub Issues: ${result.issuesCreated}`);
217
+ console.log(`CMS Submissions: ${result.suggestionsSubmitted}`);
218
+
219
+ if (result.errors.length > 0) {
220
+ console.log('');
221
+ console.log('Errors:');
222
+ for (const error of result.errors) {
223
+ console.log(` - ${error}`);
224
+ }
225
+ }
226
+
227
+ // Output JSON for worker integration
228
+ console.log('');
229
+ console.log('=== JSON Output ===');
230
+ console.log(JSON.stringify(formatOutputResultJSON(result), null, 2));
231
+
232
+ } catch (error) {
233
+ console.error('Error:', error instanceof Error ? error.message : 'Unknown error');
234
+ process.exit(1);
235
+ }
236
+ }
237
+
238
+ // Run if executed directly
239
+ main().catch(error => {
240
+ console.error('Fatal error:', error);
241
+ process.exit(1);
242
+ });