@nebulacomponents/citable 0.1.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 (586) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/LICENSE +201 -0
  3. package/README.md +150 -0
  4. package/cli/bin/citable.js +5 -0
  5. package/dist/universal/.agents/skills/citable/SKILL.md +137 -0
  6. package/dist/universal/.agents/skills/citable/VERSION +1 -0
  7. package/dist/universal/.agents/skills/citable/commands/README.md +36 -0
  8. package/dist/universal/.agents/skills/citable/commands/ingest.md +44 -0
  9. package/dist/universal/.agents/skills/citable/commands/measurement.md +49 -0
  10. package/dist/universal/.agents/skills/citable/commands/optimize-page.md +53 -0
  11. package/dist/universal/.agents/skills/citable/commands/page-work.md +48 -0
  12. package/dist/universal/.agents/skills/citable/commands/validate-render.md +24 -0
  13. package/dist/universal/.agents/skills/citable/manifest.json +54 -0
  14. package/dist/universal/.agents/skills/citable/policies/crawler-policy-template.md +47 -0
  15. package/dist/universal/.agents/skills/citable/references/anti-patterns.md +61 -0
  16. package/dist/universal/.agents/skills/citable/rubrics/README.md +30 -0
  17. package/dist/universal/.agents/skills/citable/rubrics/answer-extractability.md +44 -0
  18. package/dist/universal/.agents/skills/citable/rubrics/claim-boundedness.md +36 -0
  19. package/dist/universal/.agents/skills/citable/rubrics/comparison-fairness.md +30 -0
  20. package/dist/universal/.agents/skills/citable/rubrics/conversion-alignment.md +37 -0
  21. package/dist/universal/.agents/skills/citable/rubrics/entity-clarity.md +41 -0
  22. package/dist/universal/.agents/skills/citable/rubrics/evidence-strength.md +53 -0
  23. package/dist/universal/.agents/skills/citable/rubrics/information-gain.md +33 -0
  24. package/dist/universal/.agents/skills/citable/rubrics/intent-alignment.md +41 -0
  25. package/dist/universal/.agents/skills/citable/rubrics/narrative-accuracy.md +46 -0
  26. package/dist/universal/.agents/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  27. package/dist/universal/.agents/skills/citable/rubrics/semantic-clarity.md +42 -0
  28. package/dist/universal/.agents/skills/citable/rubrics/source-authority.md +37 -0
  29. package/dist/universal/.agents/skills/citable/schemas/claim.schema.json +53 -0
  30. package/dist/universal/.agents/skills/citable/schemas/common.defs.json +33 -0
  31. package/dist/universal/.agents/skills/citable/schemas/competitor.schema.json +28 -0
  32. package/dist/universal/.agents/skills/citable/schemas/config.schema.json +41 -0
  33. package/dist/universal/.agents/skills/citable/schemas/crawler.schema.json +33 -0
  34. package/dist/universal/.agents/skills/citable/schemas/detector-quality.schema.json +39 -0
  35. package/dist/universal/.agents/skills/citable/schemas/entity.schema.json +39 -0
  36. package/dist/universal/.agents/skills/citable/schemas/evidence.schema.json +41 -0
  37. package/dist/universal/.agents/skills/citable/schemas/experiment.schema.json +37 -0
  38. package/dist/universal/.agents/skills/citable/schemas/finding.schema.json +101 -0
  39. package/dist/universal/.agents/skills/citable/schemas/page.schema.json +40 -0
  40. package/dist/universal/.agents/skills/citable/schemas/project.schema.json +29 -0
  41. package/dist/universal/.agents/skills/citable/schemas/prompt-result.schema.json +37 -0
  42. package/dist/universal/.agents/skills/citable/schemas/prompt.schema.json +41 -0
  43. package/dist/universal/.agents/skills/citable/schemas/query.schema.json +43 -0
  44. package/dist/universal/.agents/skills/citable/schemas/run.schema.json +36 -0
  45. package/dist/universal/.agents/skills/citable/scripts/README.md +4 -0
  46. package/dist/universal/.agents/skills/citable/templates/finding-review.md +54 -0
  47. package/dist/universal/.claude/skills/citable/SKILL.md +137 -0
  48. package/dist/universal/.claude/skills/citable/VERSION +1 -0
  49. package/dist/universal/.claude/skills/citable/commands/README.md +36 -0
  50. package/dist/universal/.claude/skills/citable/commands/ingest.md +44 -0
  51. package/dist/universal/.claude/skills/citable/commands/measurement.md +49 -0
  52. package/dist/universal/.claude/skills/citable/commands/optimize-page.md +53 -0
  53. package/dist/universal/.claude/skills/citable/commands/page-work.md +48 -0
  54. package/dist/universal/.claude/skills/citable/commands/validate-render.md +24 -0
  55. package/dist/universal/.claude/skills/citable/manifest.json +54 -0
  56. package/dist/universal/.claude/skills/citable/policies/crawler-policy-template.md +47 -0
  57. package/dist/universal/.claude/skills/citable/references/anti-patterns.md +61 -0
  58. package/dist/universal/.claude/skills/citable/rubrics/README.md +30 -0
  59. package/dist/universal/.claude/skills/citable/rubrics/answer-extractability.md +44 -0
  60. package/dist/universal/.claude/skills/citable/rubrics/claim-boundedness.md +36 -0
  61. package/dist/universal/.claude/skills/citable/rubrics/comparison-fairness.md +30 -0
  62. package/dist/universal/.claude/skills/citable/rubrics/conversion-alignment.md +37 -0
  63. package/dist/universal/.claude/skills/citable/rubrics/entity-clarity.md +41 -0
  64. package/dist/universal/.claude/skills/citable/rubrics/evidence-strength.md +53 -0
  65. package/dist/universal/.claude/skills/citable/rubrics/information-gain.md +33 -0
  66. package/dist/universal/.claude/skills/citable/rubrics/intent-alignment.md +41 -0
  67. package/dist/universal/.claude/skills/citable/rubrics/narrative-accuracy.md +46 -0
  68. package/dist/universal/.claude/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  69. package/dist/universal/.claude/skills/citable/rubrics/semantic-clarity.md +42 -0
  70. package/dist/universal/.claude/skills/citable/rubrics/source-authority.md +37 -0
  71. package/dist/universal/.claude/skills/citable/schemas/claim.schema.json +53 -0
  72. package/dist/universal/.claude/skills/citable/schemas/common.defs.json +33 -0
  73. package/dist/universal/.claude/skills/citable/schemas/competitor.schema.json +28 -0
  74. package/dist/universal/.claude/skills/citable/schemas/config.schema.json +41 -0
  75. package/dist/universal/.claude/skills/citable/schemas/crawler.schema.json +33 -0
  76. package/dist/universal/.claude/skills/citable/schemas/detector-quality.schema.json +39 -0
  77. package/dist/universal/.claude/skills/citable/schemas/entity.schema.json +39 -0
  78. package/dist/universal/.claude/skills/citable/schemas/evidence.schema.json +41 -0
  79. package/dist/universal/.claude/skills/citable/schemas/experiment.schema.json +37 -0
  80. package/dist/universal/.claude/skills/citable/schemas/finding.schema.json +101 -0
  81. package/dist/universal/.claude/skills/citable/schemas/page.schema.json +40 -0
  82. package/dist/universal/.claude/skills/citable/schemas/project.schema.json +29 -0
  83. package/dist/universal/.claude/skills/citable/schemas/prompt-result.schema.json +37 -0
  84. package/dist/universal/.claude/skills/citable/schemas/prompt.schema.json +41 -0
  85. package/dist/universal/.claude/skills/citable/schemas/query.schema.json +43 -0
  86. package/dist/universal/.claude/skills/citable/schemas/run.schema.json +36 -0
  87. package/dist/universal/.claude/skills/citable/scripts/README.md +4 -0
  88. package/dist/universal/.claude/skills/citable/templates/finding-review.md +54 -0
  89. package/dist/universal/.cursor/skills/citable/SKILL.md +137 -0
  90. package/dist/universal/.cursor/skills/citable/VERSION +1 -0
  91. package/dist/universal/.cursor/skills/citable/commands/README.md +36 -0
  92. package/dist/universal/.cursor/skills/citable/commands/ingest.md +44 -0
  93. package/dist/universal/.cursor/skills/citable/commands/measurement.md +49 -0
  94. package/dist/universal/.cursor/skills/citable/commands/optimize-page.md +53 -0
  95. package/dist/universal/.cursor/skills/citable/commands/page-work.md +48 -0
  96. package/dist/universal/.cursor/skills/citable/commands/validate-render.md +24 -0
  97. package/dist/universal/.cursor/skills/citable/manifest.json +54 -0
  98. package/dist/universal/.cursor/skills/citable/policies/crawler-policy-template.md +47 -0
  99. package/dist/universal/.cursor/skills/citable/references/anti-patterns.md +61 -0
  100. package/dist/universal/.cursor/skills/citable/rubrics/README.md +30 -0
  101. package/dist/universal/.cursor/skills/citable/rubrics/answer-extractability.md +44 -0
  102. package/dist/universal/.cursor/skills/citable/rubrics/claim-boundedness.md +36 -0
  103. package/dist/universal/.cursor/skills/citable/rubrics/comparison-fairness.md +30 -0
  104. package/dist/universal/.cursor/skills/citable/rubrics/conversion-alignment.md +37 -0
  105. package/dist/universal/.cursor/skills/citable/rubrics/entity-clarity.md +41 -0
  106. package/dist/universal/.cursor/skills/citable/rubrics/evidence-strength.md +53 -0
  107. package/dist/universal/.cursor/skills/citable/rubrics/information-gain.md +33 -0
  108. package/dist/universal/.cursor/skills/citable/rubrics/intent-alignment.md +41 -0
  109. package/dist/universal/.cursor/skills/citable/rubrics/narrative-accuracy.md +46 -0
  110. package/dist/universal/.cursor/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  111. package/dist/universal/.cursor/skills/citable/rubrics/semantic-clarity.md +42 -0
  112. package/dist/universal/.cursor/skills/citable/rubrics/source-authority.md +37 -0
  113. package/dist/universal/.cursor/skills/citable/schemas/claim.schema.json +53 -0
  114. package/dist/universal/.cursor/skills/citable/schemas/common.defs.json +33 -0
  115. package/dist/universal/.cursor/skills/citable/schemas/competitor.schema.json +28 -0
  116. package/dist/universal/.cursor/skills/citable/schemas/config.schema.json +41 -0
  117. package/dist/universal/.cursor/skills/citable/schemas/crawler.schema.json +33 -0
  118. package/dist/universal/.cursor/skills/citable/schemas/detector-quality.schema.json +39 -0
  119. package/dist/universal/.cursor/skills/citable/schemas/entity.schema.json +39 -0
  120. package/dist/universal/.cursor/skills/citable/schemas/evidence.schema.json +41 -0
  121. package/dist/universal/.cursor/skills/citable/schemas/experiment.schema.json +37 -0
  122. package/dist/universal/.cursor/skills/citable/schemas/finding.schema.json +101 -0
  123. package/dist/universal/.cursor/skills/citable/schemas/page.schema.json +40 -0
  124. package/dist/universal/.cursor/skills/citable/schemas/project.schema.json +29 -0
  125. package/dist/universal/.cursor/skills/citable/schemas/prompt-result.schema.json +37 -0
  126. package/dist/universal/.cursor/skills/citable/schemas/prompt.schema.json +41 -0
  127. package/dist/universal/.cursor/skills/citable/schemas/query.schema.json +43 -0
  128. package/dist/universal/.cursor/skills/citable/schemas/run.schema.json +36 -0
  129. package/dist/universal/.cursor/skills/citable/scripts/README.md +4 -0
  130. package/dist/universal/.cursor/skills/citable/templates/finding-review.md +54 -0
  131. package/dist/universal/.gemini/skills/citable/SKILL.md +137 -0
  132. package/dist/universal/.gemini/skills/citable/VERSION +1 -0
  133. package/dist/universal/.gemini/skills/citable/commands/README.md +36 -0
  134. package/dist/universal/.gemini/skills/citable/commands/ingest.md +44 -0
  135. package/dist/universal/.gemini/skills/citable/commands/measurement.md +49 -0
  136. package/dist/universal/.gemini/skills/citable/commands/optimize-page.md +53 -0
  137. package/dist/universal/.gemini/skills/citable/commands/page-work.md +48 -0
  138. package/dist/universal/.gemini/skills/citable/commands/validate-render.md +24 -0
  139. package/dist/universal/.gemini/skills/citable/manifest.json +54 -0
  140. package/dist/universal/.gemini/skills/citable/policies/crawler-policy-template.md +47 -0
  141. package/dist/universal/.gemini/skills/citable/references/anti-patterns.md +61 -0
  142. package/dist/universal/.gemini/skills/citable/rubrics/README.md +30 -0
  143. package/dist/universal/.gemini/skills/citable/rubrics/answer-extractability.md +44 -0
  144. package/dist/universal/.gemini/skills/citable/rubrics/claim-boundedness.md +36 -0
  145. package/dist/universal/.gemini/skills/citable/rubrics/comparison-fairness.md +30 -0
  146. package/dist/universal/.gemini/skills/citable/rubrics/conversion-alignment.md +37 -0
  147. package/dist/universal/.gemini/skills/citable/rubrics/entity-clarity.md +41 -0
  148. package/dist/universal/.gemini/skills/citable/rubrics/evidence-strength.md +53 -0
  149. package/dist/universal/.gemini/skills/citable/rubrics/information-gain.md +33 -0
  150. package/dist/universal/.gemini/skills/citable/rubrics/intent-alignment.md +41 -0
  151. package/dist/universal/.gemini/skills/citable/rubrics/narrative-accuracy.md +46 -0
  152. package/dist/universal/.gemini/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  153. package/dist/universal/.gemini/skills/citable/rubrics/semantic-clarity.md +42 -0
  154. package/dist/universal/.gemini/skills/citable/rubrics/source-authority.md +37 -0
  155. package/dist/universal/.gemini/skills/citable/schemas/claim.schema.json +53 -0
  156. package/dist/universal/.gemini/skills/citable/schemas/common.defs.json +33 -0
  157. package/dist/universal/.gemini/skills/citable/schemas/competitor.schema.json +28 -0
  158. package/dist/universal/.gemini/skills/citable/schemas/config.schema.json +41 -0
  159. package/dist/universal/.gemini/skills/citable/schemas/crawler.schema.json +33 -0
  160. package/dist/universal/.gemini/skills/citable/schemas/detector-quality.schema.json +39 -0
  161. package/dist/universal/.gemini/skills/citable/schemas/entity.schema.json +39 -0
  162. package/dist/universal/.gemini/skills/citable/schemas/evidence.schema.json +41 -0
  163. package/dist/universal/.gemini/skills/citable/schemas/experiment.schema.json +37 -0
  164. package/dist/universal/.gemini/skills/citable/schemas/finding.schema.json +101 -0
  165. package/dist/universal/.gemini/skills/citable/schemas/page.schema.json +40 -0
  166. package/dist/universal/.gemini/skills/citable/schemas/project.schema.json +29 -0
  167. package/dist/universal/.gemini/skills/citable/schemas/prompt-result.schema.json +37 -0
  168. package/dist/universal/.gemini/skills/citable/schemas/prompt.schema.json +41 -0
  169. package/dist/universal/.gemini/skills/citable/schemas/query.schema.json +43 -0
  170. package/dist/universal/.gemini/skills/citable/schemas/run.schema.json +36 -0
  171. package/dist/universal/.gemini/skills/citable/scripts/README.md +4 -0
  172. package/dist/universal/.gemini/skills/citable/templates/finding-review.md +54 -0
  173. package/dist/universal/.github/skills/citable/SKILL.md +137 -0
  174. package/dist/universal/.github/skills/citable/VERSION +1 -0
  175. package/dist/universal/.github/skills/citable/commands/README.md +36 -0
  176. package/dist/universal/.github/skills/citable/commands/ingest.md +44 -0
  177. package/dist/universal/.github/skills/citable/commands/measurement.md +49 -0
  178. package/dist/universal/.github/skills/citable/commands/optimize-page.md +53 -0
  179. package/dist/universal/.github/skills/citable/commands/page-work.md +48 -0
  180. package/dist/universal/.github/skills/citable/commands/validate-render.md +24 -0
  181. package/dist/universal/.github/skills/citable/manifest.json +54 -0
  182. package/dist/universal/.github/skills/citable/policies/crawler-policy-template.md +47 -0
  183. package/dist/universal/.github/skills/citable/references/anti-patterns.md +61 -0
  184. package/dist/universal/.github/skills/citable/rubrics/README.md +30 -0
  185. package/dist/universal/.github/skills/citable/rubrics/answer-extractability.md +44 -0
  186. package/dist/universal/.github/skills/citable/rubrics/claim-boundedness.md +36 -0
  187. package/dist/universal/.github/skills/citable/rubrics/comparison-fairness.md +30 -0
  188. package/dist/universal/.github/skills/citable/rubrics/conversion-alignment.md +37 -0
  189. package/dist/universal/.github/skills/citable/rubrics/entity-clarity.md +41 -0
  190. package/dist/universal/.github/skills/citable/rubrics/evidence-strength.md +53 -0
  191. package/dist/universal/.github/skills/citable/rubrics/information-gain.md +33 -0
  192. package/dist/universal/.github/skills/citable/rubrics/intent-alignment.md +41 -0
  193. package/dist/universal/.github/skills/citable/rubrics/narrative-accuracy.md +46 -0
  194. package/dist/universal/.github/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  195. package/dist/universal/.github/skills/citable/rubrics/semantic-clarity.md +42 -0
  196. package/dist/universal/.github/skills/citable/rubrics/source-authority.md +37 -0
  197. package/dist/universal/.github/skills/citable/schemas/claim.schema.json +53 -0
  198. package/dist/universal/.github/skills/citable/schemas/common.defs.json +33 -0
  199. package/dist/universal/.github/skills/citable/schemas/competitor.schema.json +28 -0
  200. package/dist/universal/.github/skills/citable/schemas/config.schema.json +41 -0
  201. package/dist/universal/.github/skills/citable/schemas/crawler.schema.json +33 -0
  202. package/dist/universal/.github/skills/citable/schemas/detector-quality.schema.json +39 -0
  203. package/dist/universal/.github/skills/citable/schemas/entity.schema.json +39 -0
  204. package/dist/universal/.github/skills/citable/schemas/evidence.schema.json +41 -0
  205. package/dist/universal/.github/skills/citable/schemas/experiment.schema.json +37 -0
  206. package/dist/universal/.github/skills/citable/schemas/finding.schema.json +101 -0
  207. package/dist/universal/.github/skills/citable/schemas/page.schema.json +40 -0
  208. package/dist/universal/.github/skills/citable/schemas/project.schema.json +29 -0
  209. package/dist/universal/.github/skills/citable/schemas/prompt-result.schema.json +37 -0
  210. package/dist/universal/.github/skills/citable/schemas/prompt.schema.json +41 -0
  211. package/dist/universal/.github/skills/citable/schemas/query.schema.json +43 -0
  212. package/dist/universal/.github/skills/citable/schemas/run.schema.json +36 -0
  213. package/dist/universal/.github/skills/citable/scripts/README.md +4 -0
  214. package/dist/universal/.github/skills/citable/templates/finding-review.md +54 -0
  215. package/dist/universal/.kiro/skills/citable/SKILL.md +137 -0
  216. package/dist/universal/.kiro/skills/citable/VERSION +1 -0
  217. package/dist/universal/.kiro/skills/citable/commands/README.md +36 -0
  218. package/dist/universal/.kiro/skills/citable/commands/ingest.md +44 -0
  219. package/dist/universal/.kiro/skills/citable/commands/measurement.md +49 -0
  220. package/dist/universal/.kiro/skills/citable/commands/optimize-page.md +53 -0
  221. package/dist/universal/.kiro/skills/citable/commands/page-work.md +48 -0
  222. package/dist/universal/.kiro/skills/citable/commands/validate-render.md +24 -0
  223. package/dist/universal/.kiro/skills/citable/manifest.json +54 -0
  224. package/dist/universal/.kiro/skills/citable/policies/crawler-policy-template.md +47 -0
  225. package/dist/universal/.kiro/skills/citable/references/anti-patterns.md +61 -0
  226. package/dist/universal/.kiro/skills/citable/rubrics/README.md +30 -0
  227. package/dist/universal/.kiro/skills/citable/rubrics/answer-extractability.md +44 -0
  228. package/dist/universal/.kiro/skills/citable/rubrics/claim-boundedness.md +36 -0
  229. package/dist/universal/.kiro/skills/citable/rubrics/comparison-fairness.md +30 -0
  230. package/dist/universal/.kiro/skills/citable/rubrics/conversion-alignment.md +37 -0
  231. package/dist/universal/.kiro/skills/citable/rubrics/entity-clarity.md +41 -0
  232. package/dist/universal/.kiro/skills/citable/rubrics/evidence-strength.md +53 -0
  233. package/dist/universal/.kiro/skills/citable/rubrics/information-gain.md +33 -0
  234. package/dist/universal/.kiro/skills/citable/rubrics/intent-alignment.md +41 -0
  235. package/dist/universal/.kiro/skills/citable/rubrics/narrative-accuracy.md +46 -0
  236. package/dist/universal/.kiro/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  237. package/dist/universal/.kiro/skills/citable/rubrics/semantic-clarity.md +42 -0
  238. package/dist/universal/.kiro/skills/citable/rubrics/source-authority.md +37 -0
  239. package/dist/universal/.kiro/skills/citable/schemas/claim.schema.json +53 -0
  240. package/dist/universal/.kiro/skills/citable/schemas/common.defs.json +33 -0
  241. package/dist/universal/.kiro/skills/citable/schemas/competitor.schema.json +28 -0
  242. package/dist/universal/.kiro/skills/citable/schemas/config.schema.json +41 -0
  243. package/dist/universal/.kiro/skills/citable/schemas/crawler.schema.json +33 -0
  244. package/dist/universal/.kiro/skills/citable/schemas/detector-quality.schema.json +39 -0
  245. package/dist/universal/.kiro/skills/citable/schemas/entity.schema.json +39 -0
  246. package/dist/universal/.kiro/skills/citable/schemas/evidence.schema.json +41 -0
  247. package/dist/universal/.kiro/skills/citable/schemas/experiment.schema.json +37 -0
  248. package/dist/universal/.kiro/skills/citable/schemas/finding.schema.json +101 -0
  249. package/dist/universal/.kiro/skills/citable/schemas/page.schema.json +40 -0
  250. package/dist/universal/.kiro/skills/citable/schemas/project.schema.json +29 -0
  251. package/dist/universal/.kiro/skills/citable/schemas/prompt-result.schema.json +37 -0
  252. package/dist/universal/.kiro/skills/citable/schemas/prompt.schema.json +41 -0
  253. package/dist/universal/.kiro/skills/citable/schemas/query.schema.json +43 -0
  254. package/dist/universal/.kiro/skills/citable/schemas/run.schema.json +36 -0
  255. package/dist/universal/.kiro/skills/citable/scripts/README.md +4 -0
  256. package/dist/universal/.kiro/skills/citable/templates/finding-review.md +54 -0
  257. package/dist/universal/.opencode/skills/citable/SKILL.md +137 -0
  258. package/dist/universal/.opencode/skills/citable/VERSION +1 -0
  259. package/dist/universal/.opencode/skills/citable/commands/README.md +36 -0
  260. package/dist/universal/.opencode/skills/citable/commands/ingest.md +44 -0
  261. package/dist/universal/.opencode/skills/citable/commands/measurement.md +49 -0
  262. package/dist/universal/.opencode/skills/citable/commands/optimize-page.md +53 -0
  263. package/dist/universal/.opencode/skills/citable/commands/page-work.md +48 -0
  264. package/dist/universal/.opencode/skills/citable/commands/validate-render.md +24 -0
  265. package/dist/universal/.opencode/skills/citable/manifest.json +54 -0
  266. package/dist/universal/.opencode/skills/citable/policies/crawler-policy-template.md +47 -0
  267. package/dist/universal/.opencode/skills/citable/references/anti-patterns.md +61 -0
  268. package/dist/universal/.opencode/skills/citable/rubrics/README.md +30 -0
  269. package/dist/universal/.opencode/skills/citable/rubrics/answer-extractability.md +44 -0
  270. package/dist/universal/.opencode/skills/citable/rubrics/claim-boundedness.md +36 -0
  271. package/dist/universal/.opencode/skills/citable/rubrics/comparison-fairness.md +30 -0
  272. package/dist/universal/.opencode/skills/citable/rubrics/conversion-alignment.md +37 -0
  273. package/dist/universal/.opencode/skills/citable/rubrics/entity-clarity.md +41 -0
  274. package/dist/universal/.opencode/skills/citable/rubrics/evidence-strength.md +53 -0
  275. package/dist/universal/.opencode/skills/citable/rubrics/information-gain.md +33 -0
  276. package/dist/universal/.opencode/skills/citable/rubrics/intent-alignment.md +41 -0
  277. package/dist/universal/.opencode/skills/citable/rubrics/narrative-accuracy.md +46 -0
  278. package/dist/universal/.opencode/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  279. package/dist/universal/.opencode/skills/citable/rubrics/semantic-clarity.md +42 -0
  280. package/dist/universal/.opencode/skills/citable/rubrics/source-authority.md +37 -0
  281. package/dist/universal/.opencode/skills/citable/schemas/claim.schema.json +53 -0
  282. package/dist/universal/.opencode/skills/citable/schemas/common.defs.json +33 -0
  283. package/dist/universal/.opencode/skills/citable/schemas/competitor.schema.json +28 -0
  284. package/dist/universal/.opencode/skills/citable/schemas/config.schema.json +41 -0
  285. package/dist/universal/.opencode/skills/citable/schemas/crawler.schema.json +33 -0
  286. package/dist/universal/.opencode/skills/citable/schemas/detector-quality.schema.json +39 -0
  287. package/dist/universal/.opencode/skills/citable/schemas/entity.schema.json +39 -0
  288. package/dist/universal/.opencode/skills/citable/schemas/evidence.schema.json +41 -0
  289. package/dist/universal/.opencode/skills/citable/schemas/experiment.schema.json +37 -0
  290. package/dist/universal/.opencode/skills/citable/schemas/finding.schema.json +101 -0
  291. package/dist/universal/.opencode/skills/citable/schemas/page.schema.json +40 -0
  292. package/dist/universal/.opencode/skills/citable/schemas/project.schema.json +29 -0
  293. package/dist/universal/.opencode/skills/citable/schemas/prompt-result.schema.json +37 -0
  294. package/dist/universal/.opencode/skills/citable/schemas/prompt.schema.json +41 -0
  295. package/dist/universal/.opencode/skills/citable/schemas/query.schema.json +43 -0
  296. package/dist/universal/.opencode/skills/citable/schemas/run.schema.json +36 -0
  297. package/dist/universal/.opencode/skills/citable/scripts/README.md +4 -0
  298. package/dist/universal/.opencode/skills/citable/templates/finding-review.md +54 -0
  299. package/dist/universal/.pi/agent/skills/citable/SKILL.md +137 -0
  300. package/dist/universal/.pi/agent/skills/citable/VERSION +1 -0
  301. package/dist/universal/.pi/agent/skills/citable/commands/README.md +36 -0
  302. package/dist/universal/.pi/agent/skills/citable/commands/ingest.md +44 -0
  303. package/dist/universal/.pi/agent/skills/citable/commands/measurement.md +49 -0
  304. package/dist/universal/.pi/agent/skills/citable/commands/optimize-page.md +53 -0
  305. package/dist/universal/.pi/agent/skills/citable/commands/page-work.md +48 -0
  306. package/dist/universal/.pi/agent/skills/citable/commands/validate-render.md +24 -0
  307. package/dist/universal/.pi/agent/skills/citable/manifest.json +54 -0
  308. package/dist/universal/.pi/agent/skills/citable/policies/crawler-policy-template.md +47 -0
  309. package/dist/universal/.pi/agent/skills/citable/references/anti-patterns.md +61 -0
  310. package/dist/universal/.pi/agent/skills/citable/rubrics/README.md +30 -0
  311. package/dist/universal/.pi/agent/skills/citable/rubrics/answer-extractability.md +44 -0
  312. package/dist/universal/.pi/agent/skills/citable/rubrics/claim-boundedness.md +36 -0
  313. package/dist/universal/.pi/agent/skills/citable/rubrics/comparison-fairness.md +30 -0
  314. package/dist/universal/.pi/agent/skills/citable/rubrics/conversion-alignment.md +37 -0
  315. package/dist/universal/.pi/agent/skills/citable/rubrics/entity-clarity.md +41 -0
  316. package/dist/universal/.pi/agent/skills/citable/rubrics/evidence-strength.md +53 -0
  317. package/dist/universal/.pi/agent/skills/citable/rubrics/information-gain.md +33 -0
  318. package/dist/universal/.pi/agent/skills/citable/rubrics/intent-alignment.md +41 -0
  319. package/dist/universal/.pi/agent/skills/citable/rubrics/narrative-accuracy.md +46 -0
  320. package/dist/universal/.pi/agent/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  321. package/dist/universal/.pi/agent/skills/citable/rubrics/semantic-clarity.md +42 -0
  322. package/dist/universal/.pi/agent/skills/citable/rubrics/source-authority.md +37 -0
  323. package/dist/universal/.pi/agent/skills/citable/schemas/claim.schema.json +53 -0
  324. package/dist/universal/.pi/agent/skills/citable/schemas/common.defs.json +33 -0
  325. package/dist/universal/.pi/agent/skills/citable/schemas/competitor.schema.json +28 -0
  326. package/dist/universal/.pi/agent/skills/citable/schemas/config.schema.json +41 -0
  327. package/dist/universal/.pi/agent/skills/citable/schemas/crawler.schema.json +33 -0
  328. package/dist/universal/.pi/agent/skills/citable/schemas/detector-quality.schema.json +39 -0
  329. package/dist/universal/.pi/agent/skills/citable/schemas/entity.schema.json +39 -0
  330. package/dist/universal/.pi/agent/skills/citable/schemas/evidence.schema.json +41 -0
  331. package/dist/universal/.pi/agent/skills/citable/schemas/experiment.schema.json +37 -0
  332. package/dist/universal/.pi/agent/skills/citable/schemas/finding.schema.json +101 -0
  333. package/dist/universal/.pi/agent/skills/citable/schemas/page.schema.json +40 -0
  334. package/dist/universal/.pi/agent/skills/citable/schemas/project.schema.json +29 -0
  335. package/dist/universal/.pi/agent/skills/citable/schemas/prompt-result.schema.json +37 -0
  336. package/dist/universal/.pi/agent/skills/citable/schemas/prompt.schema.json +41 -0
  337. package/dist/universal/.pi/agent/skills/citable/schemas/query.schema.json +43 -0
  338. package/dist/universal/.pi/agent/skills/citable/schemas/run.schema.json +36 -0
  339. package/dist/universal/.pi/agent/skills/citable/scripts/README.md +4 -0
  340. package/dist/universal/.pi/agent/skills/citable/templates/finding-review.md +54 -0
  341. package/dist/universal/.qoder/skills/citable/SKILL.md +137 -0
  342. package/dist/universal/.qoder/skills/citable/VERSION +1 -0
  343. package/dist/universal/.qoder/skills/citable/commands/README.md +36 -0
  344. package/dist/universal/.qoder/skills/citable/commands/ingest.md +44 -0
  345. package/dist/universal/.qoder/skills/citable/commands/measurement.md +49 -0
  346. package/dist/universal/.qoder/skills/citable/commands/optimize-page.md +53 -0
  347. package/dist/universal/.qoder/skills/citable/commands/page-work.md +48 -0
  348. package/dist/universal/.qoder/skills/citable/commands/validate-render.md +24 -0
  349. package/dist/universal/.qoder/skills/citable/manifest.json +54 -0
  350. package/dist/universal/.qoder/skills/citable/policies/crawler-policy-template.md +47 -0
  351. package/dist/universal/.qoder/skills/citable/references/anti-patterns.md +61 -0
  352. package/dist/universal/.qoder/skills/citable/rubrics/README.md +30 -0
  353. package/dist/universal/.qoder/skills/citable/rubrics/answer-extractability.md +44 -0
  354. package/dist/universal/.qoder/skills/citable/rubrics/claim-boundedness.md +36 -0
  355. package/dist/universal/.qoder/skills/citable/rubrics/comparison-fairness.md +30 -0
  356. package/dist/universal/.qoder/skills/citable/rubrics/conversion-alignment.md +37 -0
  357. package/dist/universal/.qoder/skills/citable/rubrics/entity-clarity.md +41 -0
  358. package/dist/universal/.qoder/skills/citable/rubrics/evidence-strength.md +53 -0
  359. package/dist/universal/.qoder/skills/citable/rubrics/information-gain.md +33 -0
  360. package/dist/universal/.qoder/skills/citable/rubrics/intent-alignment.md +41 -0
  361. package/dist/universal/.qoder/skills/citable/rubrics/narrative-accuracy.md +46 -0
  362. package/dist/universal/.qoder/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  363. package/dist/universal/.qoder/skills/citable/rubrics/semantic-clarity.md +42 -0
  364. package/dist/universal/.qoder/skills/citable/rubrics/source-authority.md +37 -0
  365. package/dist/universal/.qoder/skills/citable/schemas/claim.schema.json +53 -0
  366. package/dist/universal/.qoder/skills/citable/schemas/common.defs.json +33 -0
  367. package/dist/universal/.qoder/skills/citable/schemas/competitor.schema.json +28 -0
  368. package/dist/universal/.qoder/skills/citable/schemas/config.schema.json +41 -0
  369. package/dist/universal/.qoder/skills/citable/schemas/crawler.schema.json +33 -0
  370. package/dist/universal/.qoder/skills/citable/schemas/detector-quality.schema.json +39 -0
  371. package/dist/universal/.qoder/skills/citable/schemas/entity.schema.json +39 -0
  372. package/dist/universal/.qoder/skills/citable/schemas/evidence.schema.json +41 -0
  373. package/dist/universal/.qoder/skills/citable/schemas/experiment.schema.json +37 -0
  374. package/dist/universal/.qoder/skills/citable/schemas/finding.schema.json +101 -0
  375. package/dist/universal/.qoder/skills/citable/schemas/page.schema.json +40 -0
  376. package/dist/universal/.qoder/skills/citable/schemas/project.schema.json +29 -0
  377. package/dist/universal/.qoder/skills/citable/schemas/prompt-result.schema.json +37 -0
  378. package/dist/universal/.qoder/skills/citable/schemas/prompt.schema.json +41 -0
  379. package/dist/universal/.qoder/skills/citable/schemas/query.schema.json +43 -0
  380. package/dist/universal/.qoder/skills/citable/schemas/run.schema.json +36 -0
  381. package/dist/universal/.qoder/skills/citable/scripts/README.md +4 -0
  382. package/dist/universal/.qoder/skills/citable/templates/finding-review.md +54 -0
  383. package/dist/universal/.rovodev/skills/citable/SKILL.md +137 -0
  384. package/dist/universal/.rovodev/skills/citable/VERSION +1 -0
  385. package/dist/universal/.rovodev/skills/citable/commands/README.md +36 -0
  386. package/dist/universal/.rovodev/skills/citable/commands/ingest.md +44 -0
  387. package/dist/universal/.rovodev/skills/citable/commands/measurement.md +49 -0
  388. package/dist/universal/.rovodev/skills/citable/commands/optimize-page.md +53 -0
  389. package/dist/universal/.rovodev/skills/citable/commands/page-work.md +48 -0
  390. package/dist/universal/.rovodev/skills/citable/commands/validate-render.md +24 -0
  391. package/dist/universal/.rovodev/skills/citable/manifest.json +54 -0
  392. package/dist/universal/.rovodev/skills/citable/policies/crawler-policy-template.md +47 -0
  393. package/dist/universal/.rovodev/skills/citable/references/anti-patterns.md +61 -0
  394. package/dist/universal/.rovodev/skills/citable/rubrics/README.md +30 -0
  395. package/dist/universal/.rovodev/skills/citable/rubrics/answer-extractability.md +44 -0
  396. package/dist/universal/.rovodev/skills/citable/rubrics/claim-boundedness.md +36 -0
  397. package/dist/universal/.rovodev/skills/citable/rubrics/comparison-fairness.md +30 -0
  398. package/dist/universal/.rovodev/skills/citable/rubrics/conversion-alignment.md +37 -0
  399. package/dist/universal/.rovodev/skills/citable/rubrics/entity-clarity.md +41 -0
  400. package/dist/universal/.rovodev/skills/citable/rubrics/evidence-strength.md +53 -0
  401. package/dist/universal/.rovodev/skills/citable/rubrics/information-gain.md +33 -0
  402. package/dist/universal/.rovodev/skills/citable/rubrics/intent-alignment.md +41 -0
  403. package/dist/universal/.rovodev/skills/citable/rubrics/narrative-accuracy.md +46 -0
  404. package/dist/universal/.rovodev/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  405. package/dist/universal/.rovodev/skills/citable/rubrics/semantic-clarity.md +42 -0
  406. package/dist/universal/.rovodev/skills/citable/rubrics/source-authority.md +37 -0
  407. package/dist/universal/.rovodev/skills/citable/schemas/claim.schema.json +53 -0
  408. package/dist/universal/.rovodev/skills/citable/schemas/common.defs.json +33 -0
  409. package/dist/universal/.rovodev/skills/citable/schemas/competitor.schema.json +28 -0
  410. package/dist/universal/.rovodev/skills/citable/schemas/config.schema.json +41 -0
  411. package/dist/universal/.rovodev/skills/citable/schemas/crawler.schema.json +33 -0
  412. package/dist/universal/.rovodev/skills/citable/schemas/detector-quality.schema.json +39 -0
  413. package/dist/universal/.rovodev/skills/citable/schemas/entity.schema.json +39 -0
  414. package/dist/universal/.rovodev/skills/citable/schemas/evidence.schema.json +41 -0
  415. package/dist/universal/.rovodev/skills/citable/schemas/experiment.schema.json +37 -0
  416. package/dist/universal/.rovodev/skills/citable/schemas/finding.schema.json +101 -0
  417. package/dist/universal/.rovodev/skills/citable/schemas/page.schema.json +40 -0
  418. package/dist/universal/.rovodev/skills/citable/schemas/project.schema.json +29 -0
  419. package/dist/universal/.rovodev/skills/citable/schemas/prompt-result.schema.json +37 -0
  420. package/dist/universal/.rovodev/skills/citable/schemas/prompt.schema.json +41 -0
  421. package/dist/universal/.rovodev/skills/citable/schemas/query.schema.json +43 -0
  422. package/dist/universal/.rovodev/skills/citable/schemas/run.schema.json +36 -0
  423. package/dist/universal/.rovodev/skills/citable/scripts/README.md +4 -0
  424. package/dist/universal/.rovodev/skills/citable/templates/finding-review.md +54 -0
  425. package/dist/universal/.trae/skills/citable/SKILL.md +137 -0
  426. package/dist/universal/.trae/skills/citable/VERSION +1 -0
  427. package/dist/universal/.trae/skills/citable/commands/README.md +36 -0
  428. package/dist/universal/.trae/skills/citable/commands/ingest.md +44 -0
  429. package/dist/universal/.trae/skills/citable/commands/measurement.md +49 -0
  430. package/dist/universal/.trae/skills/citable/commands/optimize-page.md +53 -0
  431. package/dist/universal/.trae/skills/citable/commands/page-work.md +48 -0
  432. package/dist/universal/.trae/skills/citable/commands/validate-render.md +24 -0
  433. package/dist/universal/.trae/skills/citable/manifest.json +54 -0
  434. package/dist/universal/.trae/skills/citable/policies/crawler-policy-template.md +47 -0
  435. package/dist/universal/.trae/skills/citable/references/anti-patterns.md +61 -0
  436. package/dist/universal/.trae/skills/citable/rubrics/README.md +30 -0
  437. package/dist/universal/.trae/skills/citable/rubrics/answer-extractability.md +44 -0
  438. package/dist/universal/.trae/skills/citable/rubrics/claim-boundedness.md +36 -0
  439. package/dist/universal/.trae/skills/citable/rubrics/comparison-fairness.md +30 -0
  440. package/dist/universal/.trae/skills/citable/rubrics/conversion-alignment.md +37 -0
  441. package/dist/universal/.trae/skills/citable/rubrics/entity-clarity.md +41 -0
  442. package/dist/universal/.trae/skills/citable/rubrics/evidence-strength.md +53 -0
  443. package/dist/universal/.trae/skills/citable/rubrics/information-gain.md +33 -0
  444. package/dist/universal/.trae/skills/citable/rubrics/intent-alignment.md +41 -0
  445. package/dist/universal/.trae/skills/citable/rubrics/narrative-accuracy.md +46 -0
  446. package/dist/universal/.trae/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  447. package/dist/universal/.trae/skills/citable/rubrics/semantic-clarity.md +42 -0
  448. package/dist/universal/.trae/skills/citable/rubrics/source-authority.md +37 -0
  449. package/dist/universal/.trae/skills/citable/schemas/claim.schema.json +53 -0
  450. package/dist/universal/.trae/skills/citable/schemas/common.defs.json +33 -0
  451. package/dist/universal/.trae/skills/citable/schemas/competitor.schema.json +28 -0
  452. package/dist/universal/.trae/skills/citable/schemas/config.schema.json +41 -0
  453. package/dist/universal/.trae/skills/citable/schemas/crawler.schema.json +33 -0
  454. package/dist/universal/.trae/skills/citable/schemas/detector-quality.schema.json +39 -0
  455. package/dist/universal/.trae/skills/citable/schemas/entity.schema.json +39 -0
  456. package/dist/universal/.trae/skills/citable/schemas/evidence.schema.json +41 -0
  457. package/dist/universal/.trae/skills/citable/schemas/experiment.schema.json +37 -0
  458. package/dist/universal/.trae/skills/citable/schemas/finding.schema.json +101 -0
  459. package/dist/universal/.trae/skills/citable/schemas/page.schema.json +40 -0
  460. package/dist/universal/.trae/skills/citable/schemas/project.schema.json +29 -0
  461. package/dist/universal/.trae/skills/citable/schemas/prompt-result.schema.json +37 -0
  462. package/dist/universal/.trae/skills/citable/schemas/prompt.schema.json +41 -0
  463. package/dist/universal/.trae/skills/citable/schemas/query.schema.json +43 -0
  464. package/dist/universal/.trae/skills/citable/schemas/run.schema.json +36 -0
  465. package/dist/universal/.trae/skills/citable/scripts/README.md +4 -0
  466. package/dist/universal/.trae/skills/citable/templates/finding-review.md +54 -0
  467. package/dist/universal/.trae-cn/skills/citable/SKILL.md +137 -0
  468. package/dist/universal/.trae-cn/skills/citable/VERSION +1 -0
  469. package/dist/universal/.trae-cn/skills/citable/commands/README.md +36 -0
  470. package/dist/universal/.trae-cn/skills/citable/commands/ingest.md +44 -0
  471. package/dist/universal/.trae-cn/skills/citable/commands/measurement.md +49 -0
  472. package/dist/universal/.trae-cn/skills/citable/commands/optimize-page.md +53 -0
  473. package/dist/universal/.trae-cn/skills/citable/commands/page-work.md +48 -0
  474. package/dist/universal/.trae-cn/skills/citable/commands/validate-render.md +24 -0
  475. package/dist/universal/.trae-cn/skills/citable/manifest.json +54 -0
  476. package/dist/universal/.trae-cn/skills/citable/policies/crawler-policy-template.md +47 -0
  477. package/dist/universal/.trae-cn/skills/citable/references/anti-patterns.md +61 -0
  478. package/dist/universal/.trae-cn/skills/citable/rubrics/README.md +30 -0
  479. package/dist/universal/.trae-cn/skills/citable/rubrics/answer-extractability.md +44 -0
  480. package/dist/universal/.trae-cn/skills/citable/rubrics/claim-boundedness.md +36 -0
  481. package/dist/universal/.trae-cn/skills/citable/rubrics/comparison-fairness.md +30 -0
  482. package/dist/universal/.trae-cn/skills/citable/rubrics/conversion-alignment.md +37 -0
  483. package/dist/universal/.trae-cn/skills/citable/rubrics/entity-clarity.md +41 -0
  484. package/dist/universal/.trae-cn/skills/citable/rubrics/evidence-strength.md +53 -0
  485. package/dist/universal/.trae-cn/skills/citable/rubrics/information-gain.md +33 -0
  486. package/dist/universal/.trae-cn/skills/citable/rubrics/intent-alignment.md +41 -0
  487. package/dist/universal/.trae-cn/skills/citable/rubrics/narrative-accuracy.md +46 -0
  488. package/dist/universal/.trae-cn/skills/citable/rubrics/recommendation-eligibility.md +36 -0
  489. package/dist/universal/.trae-cn/skills/citable/rubrics/semantic-clarity.md +42 -0
  490. package/dist/universal/.trae-cn/skills/citable/rubrics/source-authority.md +37 -0
  491. package/dist/universal/.trae-cn/skills/citable/schemas/claim.schema.json +53 -0
  492. package/dist/universal/.trae-cn/skills/citable/schemas/common.defs.json +33 -0
  493. package/dist/universal/.trae-cn/skills/citable/schemas/competitor.schema.json +28 -0
  494. package/dist/universal/.trae-cn/skills/citable/schemas/config.schema.json +41 -0
  495. package/dist/universal/.trae-cn/skills/citable/schemas/crawler.schema.json +33 -0
  496. package/dist/universal/.trae-cn/skills/citable/schemas/detector-quality.schema.json +39 -0
  497. package/dist/universal/.trae-cn/skills/citable/schemas/entity.schema.json +39 -0
  498. package/dist/universal/.trae-cn/skills/citable/schemas/evidence.schema.json +41 -0
  499. package/dist/universal/.trae-cn/skills/citable/schemas/experiment.schema.json +37 -0
  500. package/dist/universal/.trae-cn/skills/citable/schemas/finding.schema.json +101 -0
  501. package/dist/universal/.trae-cn/skills/citable/schemas/page.schema.json +40 -0
  502. package/dist/universal/.trae-cn/skills/citable/schemas/project.schema.json +29 -0
  503. package/dist/universal/.trae-cn/skills/citable/schemas/prompt-result.schema.json +37 -0
  504. package/dist/universal/.trae-cn/skills/citable/schemas/prompt.schema.json +41 -0
  505. package/dist/universal/.trae-cn/skills/citable/schemas/query.schema.json +43 -0
  506. package/dist/universal/.trae-cn/skills/citable/schemas/run.schema.json +36 -0
  507. package/dist/universal/.trae-cn/skills/citable/scripts/README.md +4 -0
  508. package/dist/universal/.trae-cn/skills/citable/templates/finding-review.md +54 -0
  509. package/dist/universal/manifest.json +598 -0
  510. package/package.json +89 -0
  511. package/schemas/claim.schema.json +53 -0
  512. package/schemas/common.defs.json +33 -0
  513. package/schemas/competitor.schema.json +28 -0
  514. package/schemas/config.schema.json +41 -0
  515. package/schemas/crawler.schema.json +33 -0
  516. package/schemas/detector-quality.schema.json +39 -0
  517. package/schemas/entity.schema.json +39 -0
  518. package/schemas/evidence.schema.json +41 -0
  519. package/schemas/experiment.schema.json +37 -0
  520. package/schemas/finding.schema.json +101 -0
  521. package/schemas/page.schema.json +40 -0
  522. package/schemas/project.schema.json +29 -0
  523. package/schemas/prompt-result.schema.json +37 -0
  524. package/schemas/prompt.schema.json +41 -0
  525. package/schemas/query.schema.json +43 -0
  526. package/schemas/run.schema.json +36 -0
  527. package/scripts/build-dist.js +143 -0
  528. package/skill/SKILL.md +137 -0
  529. package/skill/commands/README.md +36 -0
  530. package/skill/commands/ingest.md +44 -0
  531. package/skill/commands/measurement.md +49 -0
  532. package/skill/commands/optimize-page.md +53 -0
  533. package/skill/commands/page-work.md +48 -0
  534. package/skill/commands/validate-render.md +24 -0
  535. package/skill/policies/crawler-policy-template.md +47 -0
  536. package/skill/references/anti-patterns.md +61 -0
  537. package/skill/rubrics/README.md +30 -0
  538. package/skill/rubrics/answer-extractability.md +44 -0
  539. package/skill/rubrics/claim-boundedness.md +36 -0
  540. package/skill/rubrics/comparison-fairness.md +30 -0
  541. package/skill/rubrics/conversion-alignment.md +37 -0
  542. package/skill/rubrics/entity-clarity.md +41 -0
  543. package/skill/rubrics/evidence-strength.md +53 -0
  544. package/skill/rubrics/information-gain.md +33 -0
  545. package/skill/rubrics/intent-alignment.md +41 -0
  546. package/skill/rubrics/narrative-accuracy.md +46 -0
  547. package/skill/rubrics/recommendation-eligibility.md +36 -0
  548. package/skill/rubrics/semantic-clarity.md +42 -0
  549. package/skill/rubrics/source-authority.md +37 -0
  550. package/skill/templates/finding-review.md +54 -0
  551. package/src/cli/index.js +135 -0
  552. package/src/commands/audit.js +111 -0
  553. package/src/commands/compareSnapshots.js +48 -0
  554. package/src/commands/context.js +62 -0
  555. package/src/commands/init.js +111 -0
  556. package/src/commands/inspect.js +61 -0
  557. package/src/commands/mapClaims.js +89 -0
  558. package/src/commands/schemaCmd.js +71 -0
  559. package/src/commands/substantiate.js +121 -0
  560. package/src/commands/validate.js +27 -0
  561. package/src/crawler/fetch.js +31 -0
  562. package/src/crawler/robots.js +67 -0
  563. package/src/crawler/sitemap.js +25 -0
  564. package/src/detectors/ans.js +219 -0
  565. package/src/detectors/arch.js +154 -0
  566. package/src/detectors/claim.js +230 -0
  567. package/src/detectors/crawl.js +143 -0
  568. package/src/detectors/entity.js +202 -0
  569. package/src/detectors/evd.js +164 -0
  570. package/src/detectors/framework.js +137 -0
  571. package/src/detectors/geoReco.js +218 -0
  572. package/src/detectors/index.js +50 -0
  573. package/src/detectors/lifeMeas.js +212 -0
  574. package/src/detectors/link.js +121 -0
  575. package/src/detectors/page.js +202 -0
  576. package/src/detectors/schemaData.js +249 -0
  577. package/src/detectors/tech.js +397 -0
  578. package/src/evidence/run.js +88 -0
  579. package/src/extractor/page.js +125 -0
  580. package/src/extractor/site.js +175 -0
  581. package/src/installer/index.js +1117 -0
  582. package/src/installer/providers.js +164 -0
  583. package/src/registries/index.js +127 -0
  584. package/src/reporting/report.js +82 -0
  585. package/src/shared/io.js +56 -0
  586. package/src/shared/schemaValidator.js +29 -0
@@ -0,0 +1,164 @@
1
+ import path from 'node:path';
2
+
3
+ export const PROVIDERS = Object.freeze({
4
+ claude: {
5
+ id: 'claude',
6
+ displayName: 'Claude Code',
7
+ aliases: ['claude-code', 'claudecode'],
8
+ projectDir: '.claude',
9
+ projectSkillsDir: '.claude/skills',
10
+ globalHints: ['.claude'],
11
+ globalSkillsDir: '.claude/skills',
12
+ },
13
+ codex: {
14
+ id: 'codex',
15
+ displayName: 'OpenAI Codex',
16
+ aliases: ['openai', 'openai-codex', 'agents'],
17
+ projectDir: '.agents',
18
+ projectSkillsDir: '.agents/skills',
19
+ globalHints: ['.codex', '.agents'],
20
+ globalSkillsDir: '.agents/skills',
21
+ },
22
+ cursor: {
23
+ id: 'cursor',
24
+ displayName: 'Cursor',
25
+ aliases: [],
26
+ projectDir: '.cursor',
27
+ projectSkillsDir: '.cursor/skills',
28
+ globalHints: ['.cursor'],
29
+ globalSkillsDir: '.cursor/skills',
30
+ },
31
+ gemini: {
32
+ id: 'gemini',
33
+ displayName: 'Gemini CLI',
34
+ aliases: ['gemini-cli'],
35
+ projectDir: '.gemini',
36
+ projectSkillsDir: '.gemini/skills',
37
+ globalHints: ['.gemini'],
38
+ globalSkillsDir: '.gemini/skills',
39
+ },
40
+ github: {
41
+ id: 'github',
42
+ displayName: 'GitHub Copilot',
43
+ aliases: ['copilot', 'github-copilot'],
44
+ projectDir: '.github',
45
+ projectSkillsDir: '.github/skills',
46
+ globalHints: ['.github'],
47
+ globalSkillsDir: '.github/skills',
48
+ },
49
+ opencode: {
50
+ id: 'opencode',
51
+ displayName: 'OpenCode',
52
+ aliases: ['open-code'],
53
+ projectDir: '.opencode',
54
+ projectSkillsDir: '.opencode/skills',
55
+ globalHints: ['.opencode'],
56
+ globalSkillsDir: '.opencode/skills',
57
+ },
58
+ kiro: {
59
+ id: 'kiro',
60
+ displayName: 'Kiro',
61
+ aliases: [],
62
+ projectDir: '.kiro',
63
+ projectSkillsDir: '.kiro/skills',
64
+ globalHints: ['.kiro'],
65
+ globalSkillsDir: '.kiro/skills',
66
+ },
67
+ pi: {
68
+ id: 'pi',
69
+ displayName: 'Pi',
70
+ aliases: ['pi-agent'],
71
+ projectDir: '.pi',
72
+ projectSkillsDir: '.pi/agent/skills',
73
+ globalHints: ['.pi'],
74
+ globalSkillsDir: '.pi/agent/skills',
75
+ },
76
+ qoder: {
77
+ id: 'qoder',
78
+ displayName: 'Qoder',
79
+ aliases: [],
80
+ projectDir: '.qoder',
81
+ projectSkillsDir: '.qoder/skills',
82
+ globalHints: ['.qoder'],
83
+ globalSkillsDir: '.qoder/skills',
84
+ },
85
+ trae: {
86
+ id: 'trae',
87
+ displayName: 'Trae',
88
+ aliases: [],
89
+ projectDir: '.trae',
90
+ projectSkillsDir: '.trae/skills',
91
+ globalHints: ['.trae'],
92
+ globalSkillsDir: '.trae/skills',
93
+ },
94
+ 'trae-cn': {
95
+ id: 'trae-cn',
96
+ displayName: 'Trae CN',
97
+ aliases: ['traecn'],
98
+ projectDir: '.trae-cn',
99
+ projectSkillsDir: '.trae-cn/skills',
100
+ globalHints: ['.trae-cn'],
101
+ globalSkillsDir: '.trae-cn/skills',
102
+ },
103
+ rovodev: {
104
+ id: 'rovodev',
105
+ displayName: 'Rovo Dev',
106
+ aliases: ['rovo', 'rovo-dev'],
107
+ projectDir: '.rovodev',
108
+ projectSkillsDir: '.rovodev/skills',
109
+ globalHints: ['.rovodev'],
110
+ globalSkillsDir: '.rovodev/skills',
111
+ },
112
+ });
113
+
114
+ export const PROVIDER_IDS = Object.freeze(Object.keys(PROVIDERS));
115
+
116
+ const ALIASES = new Map();
117
+ for (const provider of Object.values(PROVIDERS)) {
118
+ ALIASES.set(provider.id, provider.id);
119
+ for (const alias of provider.aliases) ALIASES.set(alias, provider.id);
120
+ }
121
+
122
+ export function normalizeProviderId(value) {
123
+ const key = String(value ?? '').trim().toLowerCase();
124
+ if (!key) return null;
125
+ return ALIASES.get(key) ?? null;
126
+ }
127
+
128
+ export function parseProviderList(value) {
129
+ const raw = String(value ?? '').trim();
130
+ if (!raw) return { kind: 'explicit', providers: [], unknown: [] };
131
+ const lowered = raw.toLowerCase();
132
+ if (lowered === 'detected') return { kind: 'detected', providers: [], unknown: [] };
133
+ if (lowered === 'all') return { kind: 'all', providers: PROVIDER_IDS, unknown: [] };
134
+
135
+ const providers = [];
136
+ const unknown = [];
137
+ for (const part of raw.split(',')) {
138
+ const id = normalizeProviderId(part);
139
+ if (!id) {
140
+ unknown.push(part.trim());
141
+ continue;
142
+ }
143
+ if (!providers.includes(id)) providers.push(id);
144
+ }
145
+ return { kind: 'explicit', providers, unknown };
146
+ }
147
+
148
+ export function providerSkillsDir(providerId, scope, roots) {
149
+ const provider = PROVIDERS[providerId];
150
+ if (!provider) throw new Error(`unknown provider: ${providerId}`);
151
+ if (scope === 'project') return path.resolve(roots.projectRoot, provider.projectSkillsDir);
152
+ if (scope === 'global') return path.resolve(roots.home, provider.globalSkillsDir);
153
+ throw new Error(`unknown scope: ${scope}`);
154
+ }
155
+
156
+ export function providerDestination(providerId, scope, roots) {
157
+ return path.join(providerSkillsDir(providerId, scope, roots), 'citable');
158
+ }
159
+
160
+ export function providerBundleSkillPath(providerId) {
161
+ const provider = PROVIDERS[providerId];
162
+ if (!provider) throw new Error(`unknown provider: ${providerId}`);
163
+ return path.join('dist', 'universal', provider.projectSkillsDir, 'citable');
164
+ }
@@ -0,0 +1,127 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { readYaml, writeYaml, nowIso, sha256 } from '../shared/io.js';
4
+ import { validateAgainst } from '../shared/schemaValidator.js';
5
+
6
+ export const REGISTRY_SPECS = [
7
+ { file: 'queries.yaml', kind: 'queries', schema: 'query.schema.json', idField: 'query_id' },
8
+ { file: 'prompts.yaml', kind: 'prompts', schema: 'prompt.schema.json', idField: 'prompt_id' },
9
+ { file: 'entities.yaml', kind: 'entities', schema: 'entity.schema.json', idField: 'entity_id' },
10
+ { file: 'claims.yaml', kind: 'claims', schema: 'claim.schema.json', idField: 'claim_id' },
11
+ { file: 'evidence.yaml', kind: 'evidence', schema: 'evidence.schema.json', idField: 'evidence_id' },
12
+ { file: 'pages.yaml', kind: 'pages', schema: 'page.schema.json', idField: 'page_id' },
13
+ { file: 'crawlers.yaml', kind: 'crawlers', schema: 'crawler.schema.json', idField: 'crawler_id' },
14
+ { file: 'competitors.yaml', kind: 'competitors', schema: 'competitor.schema.json', idField: 'competitor_id' },
15
+ { file: 'experiments.yaml', kind: 'experiments', schema: 'experiment.schema.json', idField: 'experiment_id' },
16
+ ];
17
+
18
+ export function contextDir(root) {
19
+ return path.join(root, '.citable');
20
+ }
21
+
22
+ export function emptyRegistry(kind) {
23
+ return { version: 1, kind, updated: nowIso(), entries: [] };
24
+ }
25
+
26
+ /** Load all registries under <root>/.citable. Missing files load as empty. */
27
+ export function loadRegistries(root) {
28
+ const dir = contextDir(root);
29
+ const registries = {};
30
+ const problems = [];
31
+ for (const spec of REGISTRY_SPECS) {
32
+ const file = path.join(dir, spec.file);
33
+ let data;
34
+ if (fs.existsSync(file)) {
35
+ try {
36
+ data = readYaml(file) ?? emptyRegistry(spec.kind);
37
+ } catch (err) {
38
+ problems.push(`${spec.file}: YAML parse failure: ${err.message}`);
39
+ data = emptyRegistry(spec.kind);
40
+ }
41
+ } else {
42
+ data = emptyRegistry(spec.kind);
43
+ }
44
+ const { valid, errors } = validateAgainst(spec.schema, data);
45
+ if (!valid) problems.push(...errors.map((e) => `${spec.file}: ${e}`));
46
+ registries[spec.kind] = data;
47
+ }
48
+ return { registries, problems };
49
+ }
50
+
51
+ /** Referential-integrity check across registries. Returns list of problem strings. */
52
+ export function checkReferentialIntegrity(registries) {
53
+ const problems = [];
54
+ const ids = {};
55
+ for (const spec of REGISTRY_SPECS) {
56
+ ids[spec.kind] = new Set((registries[spec.kind]?.entries || []).map((e) => e[spec.idField]));
57
+ const seen = new Set();
58
+ for (const e of registries[spec.kind]?.entries || []) {
59
+ const id = e[spec.idField];
60
+ if (seen.has(id)) problems.push(`${spec.kind}: duplicate id ${id}`);
61
+ seen.add(id);
62
+ }
63
+ }
64
+ const refChecks = [
65
+ ['claims', 'evidence', 'evidence', 'claim_id'],
66
+ ['claims', 'external_corroboration', 'evidence', 'claim_id'],
67
+ ['entities', 'evidence', 'evidence', 'entity_id'],
68
+ ['pages', 'published_claims', 'claims', 'page_id'],
69
+ ['pages', 'evidence_references', 'evidence', 'page_id'],
70
+ ['pages', 'target_queries', 'queries', 'page_id'],
71
+ ['pages', 'target_prompts', 'prompts', 'page_id'],
72
+ ['evidence', 'supports_claims', 'claims', 'evidence_id'],
73
+ ];
74
+ for (const [kind, field, targetKind, idField] of refChecks) {
75
+ for (const e of registries[kind]?.entries || []) {
76
+ for (const ref of e[field] || []) {
77
+ if (typeof ref === 'string' && !ids[targetKind].has(ref)) {
78
+ problems.push(`${kind}/${e[idField]}: ${field} references unknown ${targetKind} id "${ref}"`);
79
+ }
80
+ }
81
+ }
82
+ }
83
+ // entity references from claims / pages
84
+ for (const c of registries.claims?.entries || []) {
85
+ if (c.entity && !ids.entities.has(c.entity)) {
86
+ problems.push(`claims/${c.claim_id}: entity references unknown entity id "${c.entity}"`);
87
+ }
88
+ }
89
+ for (const p of registries.pages?.entries || []) {
90
+ for (const ent of p.primary_entities || []) {
91
+ if (!ids.entities.has(ent)) problems.push(`pages/${p.page_id}: primary_entities references unknown entity id "${ent}"`);
92
+ }
93
+ }
94
+ return problems;
95
+ }
96
+
97
+ /**
98
+ * Persist a registry, preserving prior version in .citable/snapshots/registry-history/.
99
+ * Never overwrites without recording the previous content.
100
+ */
101
+ export function saveRegistry(root, kind, data) {
102
+ const spec = REGISTRY_SPECS.find((s) => s.kind === kind);
103
+ if (!spec) throw new Error(`unknown registry kind: ${kind}`);
104
+ const { valid, errors } = validateAgainst(spec.schema, data);
105
+ if (!valid) throw new Error(`refusing to save invalid ${kind} registry:\n${errors.join('\n')}`);
106
+ const file = path.join(contextDir(root), spec.file);
107
+ if (fs.existsSync(file)) {
108
+ const prev = fs.readFileSync(file, 'utf8');
109
+ const histDir = path.join(contextDir(root), 'snapshots', 'registry-history');
110
+ fs.mkdirSync(histDir, { recursive: true });
111
+ const stamp = nowIso().replace(/[:.]/g, '-');
112
+ fs.writeFileSync(path.join(histDir, `${spec.kind}-${stamp}-${sha256(prev).slice(0, 8)}.yaml`), prev);
113
+ }
114
+ data.updated = nowIso();
115
+ writeYaml(file, data);
116
+ return file;
117
+ }
118
+
119
+ /** Structural diff of two registry objects (entries keyed by id). */
120
+ export function diffRegistries(before, after, idField) {
121
+ const b = new Map((before?.entries || []).map((e) => [e[idField], e]));
122
+ const a = new Map((after?.entries || []).map((e) => [e[idField], e]));
123
+ const added = [...a.keys()].filter((k) => !b.has(k));
124
+ const removed = [...b.keys()].filter((k) => !a.has(k));
125
+ const changed = [...a.keys()].filter((k) => b.has(k) && JSON.stringify(b.get(k)) !== JSON.stringify(a.get(k)));
126
+ return { added, removed, changed };
127
+ }
@@ -0,0 +1,82 @@
1
+ const SEV_ORDER = { critical: 0, high: 1, medium: 2, low: 3, informational: 4, experimental: 5 };
2
+
3
+ export function summarize(findings) {
4
+ const bySeverity = {};
5
+ const byNamespace = {};
6
+ const byDiscipline = { seo: 0, aeo: 0, geo: 0 };
7
+ let deterministic = 0;
8
+ for (const f of findings) {
9
+ bySeverity[f.classification.severity] = (bySeverity[f.classification.severity] || 0) + 1;
10
+ const ns = f.detector_id.split('-')[0];
11
+ byNamespace[ns] = (byNamespace[ns] || 0) + 1;
12
+ for (const d of f.discipline) byDiscipline[d] = (byDiscipline[d] || 0) + 1;
13
+ if (f.classification.deterministic) deterministic++;
14
+ }
15
+ return {
16
+ total: findings.length,
17
+ deterministic_observations: deterministic,
18
+ semantic_or_heuristic: findings.length - deterministic,
19
+ by_severity: bySeverity,
20
+ by_namespace: byNamespace,
21
+ by_discipline: byDiscipline,
22
+ };
23
+ }
24
+
25
+ export function renderMarkdownReport({ findings, manifest, summary, detectorsSkipped = [] }) {
26
+ const lines = [];
27
+ lines.push(`# Citable audit report`);
28
+ lines.push('');
29
+ lines.push(`- Run: \`${manifest.run_id}\``);
30
+ lines.push(`- Command: \`${manifest.command}\``);
31
+ lines.push(`- Target: ${manifest.target?.kind} — ${manifest.target?.location}`);
32
+ lines.push(`- Timestamp: ${manifest.timestamp}`);
33
+ lines.push(`- Tool version: ${manifest.tool_version}; commit: ${manifest.repository_commit ?? 'n/a'} (${manifest.working_tree_state ?? 'no git'})`);
34
+ lines.push('');
35
+ lines.push(`> Findings describe observed conditions and probabilities. Nothing in this report guarantees crawling, indexing, ranking, citation, recommendation, or conversion outcomes.`);
36
+ lines.push('');
37
+ lines.push(`## Summary`);
38
+ lines.push('');
39
+ lines.push(`| Metric | Value |`);
40
+ lines.push(`| --- | --- |`);
41
+ lines.push(`| Total findings | ${summary.total} |`);
42
+ lines.push(`| Deterministic observations | ${summary.deterministic_observations} |`);
43
+ lines.push(`| Heuristic / semantic findings | ${summary.semantic_or_heuristic} |`);
44
+ for (const [sev, n] of Object.entries(summary.by_severity).sort((a, b) => SEV_ORDER[a[0]] - SEV_ORDER[b[0]])) {
45
+ lines.push(`| ${sev} | ${n} |`);
46
+ }
47
+ lines.push('');
48
+ if (detectorsSkipped.length) {
49
+ lines.push(`## Skipped checks`);
50
+ lines.push('');
51
+ for (const s of detectorsSkipped) lines.push(`- \`${s.detector_id}\`: ${s.reason}`);
52
+ lines.push('');
53
+ }
54
+ if (manifest.incomplete_checks?.length) {
55
+ lines.push(`## Incomplete or untestable conditions`);
56
+ lines.push('');
57
+ for (const c of manifest.incomplete_checks) lines.push(`- ${c}`);
58
+ lines.push('');
59
+ }
60
+ lines.push(`## Findings`);
61
+ lines.push('');
62
+ const sorted = [...findings].sort((a, b) => SEV_ORDER[a.classification.severity] - SEV_ORDER[b.classification.severity]);
63
+ for (const f of sorted) {
64
+ lines.push(`### ${f.classification.severity.toUpperCase()} · ${f.detector_id} · ${f.observation.summary}`);
65
+ lines.push('');
66
+ lines.push(`- Subject: \`${f.subject.identifier}\`${f.subject.source_file ? ` (${f.subject.source_file})` : ''}`);
67
+ lines.push(`- Type: ${f.classification.finding_type}; confidence: ${f.classification.confidence}; deterministic: ${f.classification.deterministic}`);
68
+ const impacts = Object.entries(f.classification.impact || {}).filter(([, v]) => v && v !== 'none').map(([k, v]) => `${k}:${v}`).join(', ');
69
+ if (impacts) lines.push(`- Impact: ${impacts}`);
70
+ lines.push(`- Evidence:`);
71
+ for (const e of f.observation.evidence) lines.push(` - ${e}`);
72
+ lines.push(`- Remediation: ${f.remediation.preferred}`);
73
+ lines.push(`- Verify: ${f.verification.method} (rerun \`${f.verification.detector_to_rerun}\`)`);
74
+ if (f.reasoning?.limitations?.length) lines.push(`- Limitations: ${f.reasoning.limitations.join('; ')}`);
75
+ lines.push('');
76
+ }
77
+ if (findings.length === 0) {
78
+ lines.push(`No findings from the executed detectors. Absence of findings is not proof of eligibility — see skipped and incomplete checks above.`);
79
+ lines.push('');
80
+ }
81
+ return lines.join('\n');
82
+ }
@@ -0,0 +1,56 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import crypto from 'node:crypto';
4
+ import { load as yamlLoad, dump as yamlDump } from 'js-yaml';
5
+
6
+ export function readYaml(file) {
7
+ return yamlLoad(fs.readFileSync(file, 'utf8'));
8
+ }
9
+
10
+ export function writeYaml(file, data) {
11
+ fs.mkdirSync(path.dirname(file), { recursive: true });
12
+ fs.writeFileSync(file, yamlDump(data, { lineWidth: 100, noRefs: true, sortKeys: false }));
13
+ }
14
+
15
+ export function readJson(file) {
16
+ return JSON.parse(fs.readFileSync(file, 'utf8'));
17
+ }
18
+
19
+ export function writeJson(file, data) {
20
+ fs.mkdirSync(path.dirname(file), { recursive: true });
21
+ fs.writeFileSync(file, JSON.stringify(data, null, 2) + '\n');
22
+ }
23
+
24
+ export function sha256(input) {
25
+ return crypto.createHash('sha256').update(input).digest('hex');
26
+ }
27
+
28
+ export function sha256File(file) {
29
+ return sha256(fs.readFileSync(file));
30
+ }
31
+
32
+ export function todayIso() {
33
+ return new Date().toISOString().slice(0, 10);
34
+ }
35
+
36
+ export function nowIso() {
37
+ return new Date().toISOString();
38
+ }
39
+
40
+ export function isPastDate(isoDate, ref = new Date()) {
41
+ if (!isoDate) return false;
42
+ const d = new Date(String(isoDate).slice(0, 10) + 'T23:59:59Z');
43
+ return !Number.isNaN(d.getTime()) && d < ref;
44
+ }
45
+
46
+ export function listFiles(dir, predicate = () => true, out = []) {
47
+ if (!fs.existsSync(dir)) return out;
48
+ for (const name of fs.readdirSync(dir)) {
49
+ if (name === 'node_modules' || name === '.git' || name === '.citable') continue;
50
+ const p = path.join(dir, name);
51
+ const st = fs.statSync(p);
52
+ if (st.isDirectory()) listFiles(p, predicate, out);
53
+ else if (predicate(p)) out.push(p);
54
+ }
55
+ return out;
56
+ }
@@ -0,0 +1,29 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import Ajv from 'ajv';
5
+ import addFormats from 'ajv-formats';
6
+
7
+ const SCHEMA_DIR = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../schemas');
8
+
9
+ let ajv = null;
10
+
11
+ export function getAjv() {
12
+ if (ajv) return ajv;
13
+ ajv = new Ajv({ allErrors: true, strict: false, allowUnionTypes: true });
14
+ addFormats(ajv);
15
+ for (const f of fs.readdirSync(SCHEMA_DIR)) {
16
+ if (f.endsWith('.json')) ajv.addSchema(JSON.parse(fs.readFileSync(path.join(SCHEMA_DIR, f), 'utf8')));
17
+ }
18
+ return ajv;
19
+ }
20
+
21
+ export function validateAgainst(schemaName, data) {
22
+ const validator = getAjv().getSchema(`citable://schemas/${schemaName}`);
23
+ if (!validator) throw new Error(`unknown schema: ${schemaName}`);
24
+ const valid = validator(data);
25
+ return {
26
+ valid,
27
+ errors: (validator.errors || []).map((e) => `${e.instancePath || '/'} ${e.message}`),
28
+ };
29
+ }