@v587d/capital-generation 2.10.1 → 2.11.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 (392) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +19 -10
  3. package/THIRD_PARTY_NOTICES.md +29 -28
  4. package/chart-ui/package.json +1 -1
  5. package/config/client.js +36 -31
  6. package/config/client.src.cjs +185 -139
  7. package/config/package.json +1 -1
  8. package/lib/data-contract.d.ts +15 -0
  9. package/lib/data-contract.js +26 -0
  10. package/lib/selected-skills-entry.d.ts +3 -3
  11. package/lib/selected-skills-entry.js +9 -1
  12. package/lib/web-retriever/local-fetch.d.ts +1 -1
  13. package/lib/web-retriever/local-fetch.js +1 -1
  14. package/lib/web-retriever/wind-client.d.ts +1 -1
  15. package/lib/web-retriever/wind-client.js +1 -1
  16. package/package.json +2 -1
  17. package/selected-skills/InvestSkill/UPSTREAM.md +8 -0
  18. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/SKILL.md +11 -4
  19. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/references/10-retrieving-the-filing.md +24 -15
  20. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/references/11-key-metrics-table.md +3 -2
  21. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/SKILL.md +9 -2
  22. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/SKILL.md +9 -2
  23. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/SKILL.md +9 -2
  24. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/references/13-input-formats.md +2 -2
  25. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/SKILL.md +9 -2
  26. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/13-fcf-deployment-scorecard.md +13 -21
  27. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/SKILL.md +9 -2
  28. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/references/11-data-sources.md +18 -45
  29. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/SKILL.md +9 -2
  30. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/SKILL.md +10 -3
  31. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/SKILL.md +9 -2
  32. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/SKILL.md +11 -4
  33. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/10-overview.md +1 -1
  34. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/11-phase-2-source-hierarchy.md +9 -3
  35. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/13-notes.md +1 -1
  36. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/SKILL.md +9 -2
  37. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/references/10-overview.md +9 -8
  38. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/SKILL.md +9 -2
  39. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/references/10-overview.md +2 -2
  40. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/references/12-visualization-support.md +1 -1
  41. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/SKILL.md +9 -2
  42. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/references/11-pattern-recognition.md +9 -24
  43. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/references/12-interpretation-guidelines.md +1 -1
  44. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/SKILL.md +9 -2
  45. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/11-ownership-concentration-analysis.md +5 -8
  46. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/12-red-flags-warning-signs.md +2 -2
  47. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/SKILL.md +9 -2
  48. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/10-overview.md +6 -4
  49. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/11-phase-2-explanation-card.md +2 -2
  50. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/12-output-format.md +1 -1
  51. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/SKILL.md +9 -2
  52. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/SKILL.md +9 -2
  53. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/SKILL.md +9 -2
  54. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/result-validator/SKILL.md +7 -0
  55. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/SKILL.md +9 -2
  56. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/SKILL.md +9 -2
  57. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/11-sector-correlation-matrix.md +4 -4
  58. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/12-peer-benchmarking-within-sector.md +1 -1
  59. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/SKILL.md +9 -2
  60. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/references/12-data-sources.md +9 -15
  61. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/SKILL.md +9 -2
  62. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/11-dupont-decomposition.md +1 -1
  63. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/SKILL.md +9 -2
  64. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/SKILL.md +9 -2
  65. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/SKILL.md +9 -2
  66. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/SKILL.md +9 -2
  67. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/11-chart-visualization-support.md +1 -1
  68. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/SKILL.md +9 -2
  69. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/10-overview.md +1 -1
  70. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/11-phase-5-the-pre.md +1 -1
  71. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/12-example.md +2 -2
  72. package/selected-skills/README.md +29 -19
  73. package/selected-skills/ROUTING.md +5 -3
  74. package/selected-skills/catalog.js +38 -0
  75. package/selected-skills/china-stock-research-skills/UPSTREAM.md +8 -0
  76. package/selected-skills/china-stock-research-skills/skills/business-decomposition-order-quality/SKILL.md +7 -0
  77. package/selected-skills/china-stock-research-skills/skills/business-decomposition-order-quality/references/idc-order-ledger-guide.md +11 -9
  78. package/selected-skills/china-stock-research-skills/skills/financial-health/SKILL.md +7 -0
  79. package/selected-skills/china-stock-research-skills/skills/financial-health/references/idc-balance-sheet-stress-guide.md +10 -8
  80. package/selected-skills/china-stock-research-skills/skills/industry-competition-moat/SKILL.md +7 -0
  81. package/selected-skills/china-stock-research-skills/skills/industry-competition-moat/references/idc-value-chain-and-peers.md +9 -7
  82. package/selected-skills/china-stock-research-skills/skills/risk-warning-catalysts/SKILL.md +7 -0
  83. package/selected-skills/china-stock-research-skills/skills/risk-warning-catalysts/references/idc-monitoring-indicators.md +9 -7
  84. package/selected-skills/china-stock-research-skills/skills/shared/references/asset-heavy-ramp-overlay.md +7 -5
  85. package/selected-skills/china-stock-research-skills/skills/shared/references/business-model-transition-overlay.md +7 -5
  86. package/selected-skills/china-stock-research-skills/skills/shared/references/citation-standard.md +7 -7
  87. package/selected-skills/china-stock-research-skills/skills/shared/references/consumer-channel-brand-overlay.md +8 -6
  88. package/selected-skills/china-stock-research-skills/skills/shared/references/cyclical-price-driven-overlay.md +8 -6
  89. package/selected-skills/china-stock-research-skills/skills/shared/references/export-manufacturing-supply-chain-overlay.md +8 -6
  90. package/selected-skills/china-stock-research-skills/skills/shared/references/idc-heavy-asset-transition-overlay.md +16 -14
  91. package/selected-skills/china-stock-research-skills/skills/shared/references/project-order-business-overlay.md +7 -5
  92. package/selected-skills/china-stock-research-skills/skills/shared/references/regulated-healthcare-policy-overlay.md +8 -6
  93. package/selected-skills/china-stock-research-skills/skills/shared/references/source-registry.md +45 -47
  94. package/selected-skills/china-stock-research-skills/skills/strategy-business-transition/SKILL.md +7 -0
  95. package/selected-skills/china-stock-research-skills/skills/strategy-business-transition/references/idc-transition-markers.md +8 -6
  96. package/selected-skills/china-stock-research-skills/skills/valuation-investment-strategy/SKILL.md +7 -0
  97. package/selected-skills/china-stock-research-skills/skills/valuation-investment-strategy/references/idc-valuation-overlays.md +8 -6
  98. package/selected-skills/claude-for-financial-services-cn/UPSTREAM.md +9 -0
  99. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-break-trace/SKILL.md +1 -1
  100. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-catalyst-calendar/SKILL.md +1 -1
  101. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-comps-analysis/SKILL.md +3 -3
  102. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-dcf/SKILL.md +1 -1
  103. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-earnings-analysis/SKILL.md +1 -1
  104. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-earnings-preview/SKILL.md +1 -1
  105. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-idea-generation/SKILL.md +1 -1
  106. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-initiating-coverage/SKILL.md +2 -2
  107. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-morning-note/SKILL.md +1 -1
  108. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-sector-overview/SKILL.md +2 -2
  109. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-thesis-tracker/SKILL.md +1 -1
  110. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-variance-commentary/SKILL.md +1 -1
  111. package/selected-skills/filter.js +70 -0
  112. package/selected-skills/financeskills/UPSTREAM.md +10 -0
  113. package/selected-skills/financeskills/skills/banking-compliance/SKILL.md +9 -2
  114. package/selected-skills/financeskills/skills/company-valuation/SKILL.md +9 -2
  115. package/selected-skills/financeskills/skills/credit-analysis/SKILL.md +9 -2
  116. package/selected-skills/financeskills/skills/ecl-computation/SKILL.md +9 -2
  117. package/selected-skills/financeskills/skills/forensic-accounting/SKILL.md +9 -2
  118. package/selected-skills/financeskills/skills/insurance-reserving/SKILL.md +9 -2
  119. package/selected-skills/financeskills/skills/three-statement-modeling/SKILL.md +9 -2
  120. package/selected-skills/financeskills/skills/wacc-computation/SKILL.md +9 -2
  121. package/selected-skills/investment-skills/UPSTREAM.md +9 -0
  122. package/selected-skills/investment-skills/skills/buffett-investment-framework/SKILL.md +7 -0
  123. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/00-source-key.md +25 -25
  124. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/11-deterministic-router.md +40 -9
  125. package/selected-skills/peter-lynch-skill/UPSTREAM.md +7 -0
  126. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/SKILL.md +9 -2
  127. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/10-workflow.md +1 -1
  128. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/system-prompt.md +5 -5
  129. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-1.md +1 -1
  130. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-2.md +4 -7
  131. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/system-prompt.md +1 -1
  132. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research-1.md +50 -49
  133. package/selected-skills/quant-agent-skills/UPSTREAM.md +8 -0
  134. package/selected-skills/quant-agent-skills/skills/cross-market-listing-choice/SKILL.md +1 -1
  135. package/selected-skills/routing.js +52 -1
  136. package/selected-skills/trading-skills/UPSTREAM.md +10 -0
  137. package/selected-skills/trading-skills/skills/catalyst-map/SKILL.md +7 -0
  138. package/selected-skills/trading-skills/skills/evidence-gap-check/SKILL.md +7 -0
  139. package/selected-skills/trading-skills/skills/execution-plan-check/SKILL.md +7 -0
  140. package/selected-skills/trading-skills/skills/journal-pattern-analyzer/SKILL.md +7 -0
  141. package/selected-skills/trading-skills/skills/macro-event-analysis/SKILL.md +6 -9
  142. package/selected-skills/trading-skills/skills/macro-event-analysis/references/interpretation-guide.md +1 -1
  143. package/selected-skills/trading-skills/skills/market-regime-analysis/SKILL.md +5 -8
  144. package/selected-skills/trading-skills/skills/portfolio-concentration/SKILL.md +7 -0
  145. package/selected-skills/trading-skills/skills/position-management/SKILL.md +7 -0
  146. package/selected-skills/trading-skills/skills/position-sizing/SKILL.md +7 -0
  147. package/selected-skills/trading-skills/skills/post-trade-review/SKILL.md +7 -0
  148. package/selected-skills/trading-skills/skills/risk-reward-sanity-check/SKILL.md +7 -0
  149. package/selected-skills/trading-skills/skills/thesis-validation/SKILL.md +7 -0
  150. package/selected-skills/trading-skills/skills/watchlist-review/SKILL.md +7 -0
  151. package/watchlist/package.json +1 -1
  152. package/selected-skills/InvestSkill/install.sh +0 -212
  153. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/chart-master/SKILL.md +0 -648
  154. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dcf-valuation/SKILL.md +0 -109
  155. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/full-report/SKILL.md +0 -301
  156. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fundamental-analysis/SKILL.md +0 -67
  157. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/report-generator/SKILL.md +0 -857
  158. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/research-bundle/SKILL.md +0 -94
  159. package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/SKILL.md +0 -75
  160. package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/final-output-contract.md +0 -62
  161. package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/routing-matrix.md +0 -34
  162. package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/sector-overlay-escalation-rules.md +0 -38
  163. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-3-statement-model/SKILL.md +0 -287
  164. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-accrual-schedule/SKILL.md +0 -182
  165. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-audit-xls/SKILL.md +0 -231
  166. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-clean-data-xls/SKILL.md +0 -237
  167. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-comps/SKILL.md +0 -104
  168. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-dcf-model/SKILL.md +0 -68
  169. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-deal-screening/SKILL.md +0 -212
  170. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-deck-refresh/SKILL.md +0 -221
  171. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-gl-recon/SKILL.md +0 -232
  172. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-ib-check-deck/SKILL.md +0 -252
  173. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-lbo-model/SKILL.md +0 -273
  174. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-market-data/SKILL.md +0 -229
  175. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-model-update/SKILL.md +0 -219
  176. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-ppt-template-creator/SKILL.md +0 -231
  177. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-pptx-author/SKILL.md +0 -240
  178. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-roll-forward/SKILL.md +0 -189
  179. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-skill-creator/SKILL.md +0 -304
  180. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-tax-loss-harvesting/SKILL.md +0 -200
  181. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-xlsx-author/SKILL.md +0 -256
  182. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-accrual-schedule/SKILL.md +0 -190
  183. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-break-trace/SKILL.md +0 -182
  184. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-gl-recon/SKILL.md +0 -200
  185. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-nav-tieout/SKILL.md +0 -233
  186. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-roll-forward/SKILL.md +0 -178
  187. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/fund-admin/skills/china-variance-commentary/SKILL.md +0 -190
  188. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-buyer-list/SKILL.md +0 -198
  189. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-cim-builder/SKILL.md +0 -223
  190. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-competitive-analysis/SKILL.md +0 -233
  191. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-datapack-builder/SKILL.md +0 -232
  192. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-deal-tracker/SKILL.md +0 -151
  193. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-merger-model/SKILL.md +0 -226
  194. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-pitch-deck/SKILL.md +0 -231
  195. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-process-letter/SKILL.md +0 -249
  196. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-strip-profile/SKILL.md +0 -196
  197. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/investment-banking/skills/china-teaser/SKILL.md +0 -235
  198. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/operations/skills/china-kyc-doc-parse/SKILL.md +0 -252
  199. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/operations/skills/china-kyc-rules/SKILL.md +0 -223
  200. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-ai-readiness/SKILL.md +0 -184
  201. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-dd-checklist/SKILL.md +0 -217
  202. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-dd-meeting-prep/SKILL.md +0 -290
  203. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-deal-sourcing/SKILL.md +0 -224
  204. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-ic-memo/SKILL.md +0 -230
  205. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-portfolio-monitoring/SKILL.md +0 -214
  206. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-returns-analysis/SKILL.md +0 -176
  207. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-unit-economics/SKILL.md +0 -192
  208. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/private-equity/skills/china-value-creation-plan/SKILL.md +0 -193
  209. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/wealth-management/skills/china-client-report/SKILL.md +0 -205
  210. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/wealth-management/skills/china-client-review/SKILL.md +0 -218
  211. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/wealth-management/skills/china-financial-plan/SKILL.md +0 -259
  212. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/wealth-management/skills/china-investment-proposal/SKILL.md +0 -271
  213. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/wealth-management/skills/china-portfolio-rebalance/SKILL.md +0 -191
  214. package/selected-skills/financeskills/skills/ai-anomaly-detection/EXAMPLE.md +0 -21
  215. package/selected-skills/financeskills/skills/ai-anomaly-detection/SKILL.md +0 -84
  216. package/selected-skills/financeskills/skills/ai-anomaly-detection/references/feature-engineering.md +0 -20
  217. package/selected-skills/financeskills/skills/ai-anomaly-detection/references/ml-algorithms.md +0 -28
  218. package/selected-skills/financeskills/skills/aro-computation/EXAMPLE.md +0 -21
  219. package/selected-skills/financeskills/skills/aro-computation/SKILL.md +0 -82
  220. package/selected-skills/financeskills/skills/aro-computation/references/aro-standards.md +0 -22
  221. package/selected-skills/financeskills/skills/aro-computation/references/pv-math.md +0 -27
  222. package/selected-skills/financeskills/skills/audit-checklist/EXAMPLE.md +0 -17
  223. package/selected-skills/financeskills/skills/audit-checklist/SKILL.md +0 -77
  224. package/selected-skills/financeskills/skills/audit-checklist/references/internal-controls.md +0 -36
  225. package/selected-skills/financeskills/skills/audit-checklist/references/isa-standards.md +0 -26
  226. package/selected-skills/financeskills/skills/automated-reconciliation/EXAMPLE.md +0 -21
  227. package/selected-skills/financeskills/skills/automated-reconciliation/SKILL.md +0 -87
  228. package/selected-skills/financeskills/skills/automated-reconciliation/assets/reconciliation-statement-template.md +0 -31
  229. package/selected-skills/financeskills/skills/automated-reconciliation/references/fuzzy-logic.md +0 -27
  230. package/selected-skills/financeskills/skills/automated-reconciliation/references/rec-controls.md +0 -28
  231. package/selected-skills/financeskills/skills/budget-forecast/EXAMPLE.md +0 -21
  232. package/selected-skills/financeskills/skills/budget-forecast/SKILL.md +0 -87
  233. package/selected-skills/financeskills/skills/budget-forecast/references/forecasting-best-practices.md +0 -26
  234. package/selected-skills/financeskills/skills/budget-forecast/references/scenario-analysis.md +0 -25
  235. package/selected-skills/financeskills/skills/close-management/EXAMPLE.md +0 -17
  236. package/selected-skills/financeskills/skills/close-management/SKILL.md +0 -85
  237. package/selected-skills/financeskills/skills/close-management/references/close-task-library.md +0 -32
  238. package/selected-skills/financeskills/skills/corporate-consolidation/EXAMPLE.md +0 -21
  239. package/selected-skills/financeskills/skills/corporate-consolidation/SKILL.md +0 -84
  240. package/selected-skills/financeskills/skills/corporate-consolidation/references/consolidation-standard.md +0 -28
  241. package/selected-skills/financeskills/skills/corporate-consolidation/references/minority-interest.md +0 -25
  242. package/selected-skills/financeskills/skills/crypto-accounting/EXAMPLE.md +0 -21
  243. package/selected-skills/financeskills/skills/crypto-accounting/SKILL.md +0 -81
  244. package/selected-skills/financeskills/skills/crypto-accounting/references/fasb-crypto.md +0 -26
  245. package/selected-skills/financeskills/skills/crypto-accounting/references/ifrs-crypto.md +0 -25
  246. package/selected-skills/financeskills/skills/cvp-breakeven/EXAMPLE.md +0 -21
  247. package/selected-skills/financeskills/skills/cvp-breakeven/SKILL.md +0 -78
  248. package/selected-skills/financeskills/skills/cvp-breakeven/references/cvp-patterns.md +0 -28
  249. package/selected-skills/financeskills/skills/debt-payoff/EXAMPLE.md +0 -21
  250. package/selected-skills/financeskills/skills/debt-payoff/SKILL.md +0 -94
  251. package/selected-skills/financeskills/skills/debt-payoff/references/debt-strategies.md +0 -32
  252. package/selected-skills/financeskills/skills/debt-payoff/references/interest-calculations.md +0 -27
  253. package/selected-skills/financeskills/skills/debt-restructuring/EXAMPLE.md +0 -21
  254. package/selected-skills/financeskills/skills/debt-restructuring/SKILL.md +0 -79
  255. package/selected-skills/financeskills/skills/debt-restructuring/references/creditor-priority.md +0 -26
  256. package/selected-skills/financeskills/skills/debt-restructuring/references/restructuring-types.md +0 -24
  257. package/selected-skills/financeskills/skills/deferred-tax/EXAMPLE.md +0 -21
  258. package/selected-skills/financeskills/skills/deferred-tax/SKILL.md +0 -86
  259. package/selected-skills/financeskills/skills/deferred-tax/references/td-catalogue.md +0 -39
  260. package/selected-skills/financeskills/skills/earned-value-mgmt/EXAMPLE.md +0 -21
  261. package/selected-skills/financeskills/skills/earned-value-mgmt/SKILL.md +0 -79
  262. package/selected-skills/financeskills/skills/earned-value-mgmt/references/forecasting-eac.md +0 -27
  263. package/selected-skills/financeskills/skills/earned-value-mgmt/references/pmi-evm.md +0 -29
  264. package/selected-skills/financeskills/skills/esg-reporting/EXAMPLE.md +0 -17
  265. package/selected-skills/financeskills/skills/esg-reporting/SKILL.md +0 -79
  266. package/selected-skills/financeskills/skills/esg-reporting/references/ghg-protocol.md +0 -22
  267. package/selected-skills/financeskills/skills/esg-reporting/references/sasb-map.md +0 -25
  268. package/selected-skills/financeskills/skills/financial-analysis/EXAMPLE.md +0 -21
  269. package/selected-skills/financeskills/skills/financial-analysis/SKILL.md +0 -108
  270. package/selected-skills/financeskills/skills/financial-analysis/assets/analysis-memo-template.md +0 -31
  271. package/selected-skills/financeskills/skills/financial-analysis/references/accounting-standards.md +0 -45
  272. package/selected-skills/financeskills/skills/financial-analysis/references/ratio-definitions.md +0 -14
  273. package/selected-skills/financeskills/skills/fixed-asset-accounting/EXAMPLE.md +0 -21
  274. package/selected-skills/financeskills/skills/fixed-asset-accounting/SKILL.md +0 -78
  275. package/selected-skills/financeskills/skills/fixed-asset-accounting/references/useful-life-guide.md +0 -30
  276. package/selected-skills/financeskills/skills/intercompany-accounting/EXAMPLE.md +0 -21
  277. package/selected-skills/financeskills/skills/intercompany-accounting/SKILL.md +0 -79
  278. package/selected-skills/financeskills/skills/intercompany-accounting/references/elimination-entries.md +0 -35
  279. package/selected-skills/financeskills/skills/inventory-costing/EXAMPLE.md +0 -21
  280. package/selected-skills/financeskills/skills/inventory-costing/SKILL.md +0 -80
  281. package/selected-skills/financeskills/skills/inventory-costing/references/costing-examples.md +0 -31
  282. package/selected-skills/financeskills/skills/investment-analysis/EXAMPLE.md +0 -21
  283. package/selected-skills/financeskills/skills/investment-analysis/SKILL.md +0 -82
  284. package/selected-skills/financeskills/skills/investment-analysis/references/competitive-advantage.md +0 -31
  285. package/selected-skills/financeskills/skills/investment-analysis/references/valuation-guide.md +0 -29
  286. package/selected-skills/financeskills/skills/journal-entry/EXAMPLE.md +0 -21
  287. package/selected-skills/financeskills/skills/journal-entry/SKILL.md +0 -94
  288. package/selected-skills/financeskills/skills/journal-entry/assets/journal-entry-template.md +0 -21
  289. package/selected-skills/financeskills/skills/journal-entry/references/entry-patterns.md +0 -51
  290. package/selected-skills/financeskills/skills/lbo-modeling/EXAMPLE.md +0 -21
  291. package/selected-skills/financeskills/skills/lbo-modeling/SKILL.md +0 -88
  292. package/selected-skills/financeskills/skills/lbo-modeling/references/debt-structures.md +0 -22
  293. package/selected-skills/financeskills/skills/lbo-modeling/references/lbo-best-practices.md +0 -27
  294. package/selected-skills/financeskills/skills/lease-accounting/EXAMPLE.md +0 -21
  295. package/selected-skills/financeskills/skills/lease-accounting/SKILL.md +0 -88
  296. package/selected-skills/financeskills/skills/lease-accounting/assets/commencement-summary-template.md +0 -28
  297. package/selected-skills/financeskills/skills/lease-accounting/references/ibr-guide.md +0 -26
  298. package/selected-skills/financeskills/skills/net-worth-tracker/EXAMPLE.md +0 -21
  299. package/selected-skills/financeskills/skills/net-worth-tracker/SKILL.md +0 -98
  300. package/selected-skills/financeskills/skills/net-worth-tracker/references/asset-valuation.md +0 -40
  301. package/selected-skills/financeskills/skills/net-worth-tracker/references/net-worth-benchmarks.md +0 -33
  302. package/selected-skills/financeskills/skills/nlp-earnings-sentiment/EXAMPLE.md +0 -17
  303. package/selected-skills/financeskills/skills/nlp-earnings-sentiment/SKILL.md +0 -77
  304. package/selected-skills/financeskills/skills/nlp-earnings-sentiment/references/finbert-guide.md +0 -26
  305. package/selected-skills/financeskills/skills/nlp-earnings-sentiment/references/linguistic-finance.md +0 -23
  306. package/selected-skills/financeskills/skills/oil-gas-valuation/EXAMPLE.md +0 -21
  307. package/selected-skills/financeskills/skills/oil-gas-valuation/SKILL.md +0 -86
  308. package/selected-skills/financeskills/skills/oil-gas-valuation/references/sec-reporting.md +0 -22
  309. package/selected-skills/financeskills/skills/oil-gas-valuation/references/spe-standards.md +0 -25
  310. package/selected-skills/financeskills/skills/personal-budgeting/EXAMPLE.md +0 -21
  311. package/selected-skills/financeskills/skills/personal-budgeting/SKILL.md +0 -100
  312. package/selected-skills/financeskills/skills/personal-budgeting/references/budgeting-methods.md +0 -40
  313. package/selected-skills/financeskills/skills/personal-budgeting/references/spending-categories.md +0 -40
  314. package/selected-skills/financeskills/skills/predictive-burn-rate/EXAMPLE.md +0 -21
  315. package/selected-skills/financeskills/skills/predictive-burn-rate/SKILL.md +0 -82
  316. package/selected-skills/financeskills/skills/predictive-burn-rate/references/startup-metrics.md +0 -27
  317. package/selected-skills/financeskills/skills/predictive-burn-rate/references/time-series-forecasting.md +0 -22
  318. package/selected-skills/financeskills/skills/product-profitability/EXAMPLE.md +0 -21
  319. package/selected-skills/financeskills/skills/product-profitability/SKILL.md +0 -83
  320. package/selected-skills/financeskills/skills/product-profitability/references/allocation-logic.md +0 -28
  321. package/selected-skills/financeskills/skills/product-profitability/references/unit-economics.md +0 -30
  322. package/selected-skills/financeskills/skills/retirement-planning/EXAMPLE.md +0 -21
  323. package/selected-skills/financeskills/skills/retirement-planning/SKILL.md +0 -98
  324. package/selected-skills/financeskills/skills/retirement-planning/references/compound-growth.md +0 -38
  325. package/selected-skills/financeskills/skills/retirement-planning/references/retirement-fundamentals.md +0 -29
  326. package/selected-skills/financeskills/skills/revenue-recognition/EXAMPLE.md +0 -21
  327. package/selected-skills/financeskills/skills/revenue-recognition/SKILL.md +0 -86
  328. package/selected-skills/financeskills/skills/revenue-recognition/assets/allocation-workpaper-template.md +0 -30
  329. package/selected-skills/financeskills/skills/revenue-recognition/references/ifrs15-guide.md +0 -28
  330. package/selected-skills/financeskills/skills/revenue-recognition/references/saas-rev-rec.md +0 -26
  331. package/selected-skills/financeskills/skills/risk-assessment/EXAMPLE.md +0 -21
  332. package/selected-skills/financeskills/skills/risk-assessment/SKILL.md +0 -83
  333. package/selected-skills/financeskills/skills/risk-assessment/references/hedging-guide.md +0 -24
  334. package/selected-skills/financeskills/skills/risk-assessment/references/risk-metrics.md +0 -24
  335. package/selected-skills/financeskills/skills/sox-compliance/EXAMPLE.md +0 -17
  336. package/selected-skills/financeskills/skills/sox-compliance/SKILL.md +0 -88
  337. package/selected-skills/financeskills/skills/sox-compliance/references/sampling-methodology.md +0 -27
  338. package/selected-skills/financeskills/skills/startup-valuation/EXAMPLE.md +0 -21
  339. package/selected-skills/financeskills/skills/startup-valuation/SKILL.md +0 -88
  340. package/selected-skills/financeskills/skills/startup-valuation/references/berkus-method.md +0 -25
  341. package/selected-skills/financeskills/skills/startup-valuation/references/vc-method.md +0 -23
  342. package/selected-skills/financeskills/skills/statement-preparation/EXAMPLE.md +0 -21
  343. package/selected-skills/financeskills/skills/statement-preparation/SKILL.md +0 -86
  344. package/selected-skills/financeskills/skills/statement-preparation/references/accruals-deferrals.md +0 -24
  345. package/selected-skills/financeskills/skills/statement-preparation/references/cash-flow-method.md +0 -32
  346. package/selected-skills/financeskills/skills/tax-efficient-investing/EXAMPLE.md +0 -21
  347. package/selected-skills/financeskills/skills/tax-efficient-investing/SKILL.md +0 -97
  348. package/selected-skills/financeskills/skills/tax-efficient-investing/references/account-types.md +0 -33
  349. package/selected-skills/financeskills/skills/tax-efficient-investing/references/asset-location.md +0 -36
  350. package/selected-skills/financeskills/skills/tax-planning/EXAMPLE.md +0 -21
  351. package/selected-skills/financeskills/skills/tax-planning/SKILL.md +0 -93
  352. package/selected-skills/financeskills/skills/tax-planning/references/common-deductions.md +0 -28
  353. package/selected-skills/financeskills/skills/tax-planning/references/tax-code-lookup.md +0 -25
  354. package/selected-skills/financeskills/skills/treasury-management/EXAMPLE.md +0 -21
  355. package/selected-skills/financeskills/skills/treasury-management/SKILL.md +0 -83
  356. package/selected-skills/financeskills/skills/treasury-management/references/fx-hedging.md +0 -27
  357. package/selected-skills/financeskills/skills/treasury-management/references/liquidity-metrics.md +0 -24
  358. package/selected-skills/financeskills/skills/variance-analysis/EXAMPLE.md +0 -21
  359. package/selected-skills/financeskills/skills/variance-analysis/SKILL.md +0 -78
  360. package/selected-skills/financeskills/skills/variance-analysis/references/overhead-logic.md +0 -24
  361. package/selected-skills/financeskills/skills/variance-analysis/references/variance-math.md +0 -35
  362. package/selected-skills/financeskills/skills/venture-debt/EXAMPLE.md +0 -21
  363. package/selected-skills/financeskills/skills/venture-debt/SKILL.md +0 -84
  364. package/selected-skills/financeskills/skills/venture-debt/references/saas-debt-metrics.md +0 -26
  365. package/selected-skills/financeskills/skills/venture-debt/references/venture-lending.md +0 -23
  366. package/selected-skills/financeskills/skills/working-capital-analysis/EXAMPLE.md +0 -21
  367. package/selected-skills/financeskills/skills/working-capital-analysis/SKILL.md +0 -83
  368. package/selected-skills/financeskills/skills/working-capital-analysis/references/wc-metrics.md +0 -30
  369. package/selected-skills/investment-skills/Makefile +0 -29
  370. package/selected-skills/investment-skills/skills/buffett-investment-framework/agents/openai.yaml +0 -4
  371. package/selected-skills/investment-skills/skills/buffett-investment-framework/scripts/framework.py +0 -470
  372. package/selected-skills/trading-skills/skills/earnings-preview/SKILL.md +0 -124
  373. package/selected-skills/trading-skills/skills/earnings-preview/references/data-providers.md +0 -26
  374. package/selected-skills/trading-skills/skills/earnings-preview/references/providers/fmp.md +0 -49
  375. package/selected-skills/trading-skills/skills/earnings-preview/references/providers/polygon.md +0 -45
  376. package/selected-skills/trading-skills/skills/earnings-preview/references/providers/tradingeconomics.md +0 -49
  377. package/selected-skills/trading-skills/skills/earnings-preview/references/relevance-ranking.md +0 -24
  378. package/selected-skills/trading-skills/skills/earnings-trade-prep/SKILL.md +0 -134
  379. package/selected-skills/trading-skills/skills/earnings-trade-prep/references/workflow-framework.md +0 -65
  380. package/selected-skills/trading-skills/skills/macro-event-analysis/references/data-providers.md +0 -23
  381. package/selected-skills/trading-skills/skills/macro-event-analysis/references/providers/fmp.md +0 -28
  382. package/selected-skills/trading-skills/skills/macro-event-analysis/references/providers/tradingeconomics.md +0 -40
  383. package/selected-skills/trading-skills/skills/market-regime-analysis/references/data-providers.md +0 -26
  384. package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/fmp.md +0 -46
  385. package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/polygon.md +0 -36
  386. package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/tradingeconomics.md +0 -46
  387. package/selected-skills/trading-skills/skills/portfolio-risk-review/SKILL.md +0 -126
  388. package/selected-skills/trading-skills/skills/portfolio-risk-review/references/workflow-framework.md +0 -57
  389. package/selected-skills/trading-skills/skills/post-trade-debrief/SKILL.md +0 -99
  390. package/selected-skills/trading-skills/skills/post-trade-debrief/references/workflow-framework.md +0 -51
  391. package/selected-skills/trading-skills/skills/pre-trade-check/SKILL.md +0 -136
  392. package/selected-skills/trading-skills/skills/pre-trade-check/references/workflow-framework.md +0 -61
@@ -1,470 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Route, inspect, and validate the standalone Buffett framework skill."""
3
-
4
- from __future__ import annotations
5
-
6
- import argparse
7
- import re
8
- import sys
9
- from collections.abc import Iterable
10
- from pathlib import Path
11
- from typing import cast
12
-
13
- SKILL_ROOT = Path(__file__).resolve().parent.parent
14
- SKILL_PATH = SKILL_ROOT / "SKILL.md"
15
- MINIMUM_CARD_LOAD = 5
16
- MAXIMUM_CARD_LOAD = 12
17
- EXPECTED_COUNTS = {
18
- "D": 9,
19
- "B": 7,
20
- "M": 8,
21
- "F": 7,
22
- "V": 6,
23
- "C": 9,
24
- "R": 7,
25
- "S": 12,
26
- }
27
- REFERENCE_FILES = {
28
- "D": "references/01-decision-posture.md",
29
- "B": "references/02-business-economics.md",
30
- "M": "references/03-management-governance.md",
31
- "F": "references/04-financial-reality.md",
32
- "V": "references/05-valuation.md",
33
- "C": "references/06-capital-allocation.md",
34
- "R": "references/07-risk-monitoring.md",
35
- "S": "references/08-specialized-overlays.md",
36
- }
37
- WORKFLOW_CARDS = {
38
- "financial-analysis": ("F01", "F02", "F05", "F06", "F07"),
39
- "memo-review": ("D01", "D03", "B02", "V01", "V05", "V06", "R01", "R07"),
40
- "thesis-evaluation": (
41
- "D02",
42
- "D03",
43
- "B01",
44
- "B06",
45
- "V01",
46
- "V04",
47
- "R01",
48
- "R07",
49
- ),
50
- }
51
- TOPIC_CARDS = {
52
- "business-model": ("B01",),
53
- "moat": ("B02",),
54
- "management": ("M01", "M02", "M03"),
55
- "governance": ("M04", "M05"),
56
- "integration-controls": ("M05", "M06"),
57
- "succession": ("M07", "M08"),
58
- "valuation": ("V01", "V03", "V05", "V06"),
59
- "capital-allocation": ("C01", "C03", "C04"),
60
- "dilution": ("C01", "C07"),
61
- "acquisition": ("C08", "C09"),
62
- "leverage": ("F07", "R01", "R02", "R03"),
63
- "insurance": ("S01", "S02", "S03"),
64
- "insurance-tail-risk": ("S04", "S05"),
65
- "insurance-moat": ("S06",),
66
- "banking": ("S07",),
67
- "consumer": ("S08",),
68
- "infrastructure": ("S09",),
69
- "technology": ("S10",),
70
- "energy": ("S11",),
71
- "special-instruments": ("S12",),
72
- }
73
- REQUIRED_CARD_FIELDS = (
74
- "Decision question",
75
- "Guidance",
76
- "Use when",
77
- "Analytical actions",
78
- "Output",
79
- "Limits",
80
- "Source basis",
81
- "Corroboration",
82
- )
83
- SOURCE_KEY_FILE = "references/00-source-key.md"
84
- RETRIEVAL_SECTION_HEADING = "## Where to Retrieve Each Source"
85
- RETRIEVAL_KEY_FORMS = (
86
- "BH<year>",
87
- "BPL<year>",
88
- "OM1996",
89
- "SI1984",
90
- "WB50-2015",
91
- "CM50-2015",
92
- "FL2025",
93
- "GC<year>",
94
- "SC<year>",
95
- "ACL2022",
96
- "ABM2010",
97
- "IL2001",
98
- "EWB",
99
- "LOW",
100
- )
101
- MINIMUM_ANALYTICAL_ACTIONS = 1
102
- MAXIMUM_ANALYTICAL_ACTIONS = 3
103
- MINIMUM_SOURCE_CITATIONS = 1
104
- MAXIMUM_SOURCE_CITATIONS = 3
105
- MINIMUM_CORROBORATION = 2
106
- MAXIMUM_CORROBORATION = 4
107
- MAXIMUM_DESCRIPTION_LENGTH = 1024
108
- CORROBORATION_KEY: re.Pattern[str] = re.compile(
109
- r"^(?:BH\d{4}|BPL\d{4}|OM1996|SI1984|WB50-2015|CM50-2015|FL2025|GC\d{4}"
110
- r"|SC\d{4}|ACL2022|ABM2010|IL2001"
111
- r"|EWB §(?:Prologue|Epilogue|Afterword|[IVX]+\.[A-J])"
112
- r"|LOW (?:ch\.\d{1,2}|Intro|Afterword))"
113
- r"(?: \([^();]+\))?$"
114
- )
115
- CARD_HEADING: re.Pattern[str] = re.compile(
116
- r"^### ([DBMFVCRS]\d{2}) — (.+)$", re.MULTILINE
117
- )
118
- MARKDOWN_LINK: re.Pattern[str] = re.compile(r"\[[^\]]+\]\(([^)]+)\)")
119
- SOURCE_ENTRY: re.Pattern[str] = re.compile(r"^ - \*\*", re.MULTILINE)
120
- SOURCE_ROLE: re.Pattern[str] = re.compile(
121
- r"\*(defines|supports|implements|illustrates|qualifies|specializes)\*:"
122
- )
123
- CARD_FIELD: re.Pattern[str] = re.compile(
124
- r"^- \*\*(?P<label>[^:]+):\*\*\s*(?P<value>.*?)(?=^- \*\*|^<a id=|^<!--|\Z)",
125
- re.MULTILINE | re.DOTALL,
126
- )
127
- UNPUBLISHABLE_TEXT = {
128
- "draft or preview label": re.compile(r"\b(?:draft|preview)\b", re.IGNORECASE),
129
- "opaque record identifier": re.compile(
130
- "".join((r"\brec", r"ord:[a-z0-9][a-z0-9:-]+"))
131
- ),
132
- "absolute workspace path": re.compile(
133
- r"(?:^|[\s(`'\"])/(?:Users|home|private|workspace)/", re.MULTILINE
134
- ),
135
- "parent-directory traversal": re.compile(r"(?:^|[(`'\"])(?:\.\./)+"),
136
- }
137
-
138
-
139
- def ordered_unique(values: Iterable[str]) -> list[str]:
140
- """Return values in first-seen order without duplicates."""
141
- return list(dict.fromkeys(values))
142
-
143
-
144
- def card_locations() -> dict[str, str]:
145
- """Map every card ID to its stable reference location."""
146
- locations: dict[str, str] = {}
147
- for prefix, relative_path in REFERENCE_FILES.items():
148
- path = SKILL_ROOT / relative_path
149
- if not path.is_file():
150
- raise FileNotFoundError(f"missing reference file: {relative_path}")
151
- body = path.read_text(encoding="utf-8")
152
- for match in CARD_HEADING.finditer(body):
153
- card_id = match.group(1)
154
- if not card_id.startswith(prefix):
155
- raise ValueError(
156
- f"{card_id} is in the wrong module file: {relative_path}"
157
- )
158
- if card_id in locations:
159
- raise ValueError(f"duplicate card ID: {card_id}")
160
- locations[card_id] = f"{relative_path}#{card_id.lower()}"
161
- return locations
162
-
163
-
164
- def validate_local_links(path: Path, errors: list[str]) -> None:
165
- """Append failures for local Markdown links that do not resolve."""
166
- body = path.read_text(encoding="utf-8")
167
- for match in MARKDOWN_LINK.finditer(body):
168
- target = match.group(1)
169
- if target.startswith(("http://", "https://", "mailto:")):
170
- continue
171
- local_target, _separator, fragment = target.partition("#")
172
- resolved = path if not local_target else path.parent / local_target
173
- if not resolved.exists():
174
- errors.append(
175
- f"broken local link in {path.relative_to(SKILL_ROOT)}: {target}"
176
- )
177
- continue
178
- if fragment:
179
- target_body = resolved.read_text(encoding="utf-8")
180
- if f'id="{fragment}"' not in target_body:
181
- errors.append(
182
- f"broken local anchor in {path.relative_to(SKILL_ROOT)}: {target}"
183
- )
184
-
185
-
186
- def validate() -> int:
187
- """Validate package structure, public card contracts, and routing."""
188
- errors: list[str] = []
189
- locations = card_locations()
190
- expected_ids = {
191
- f"{prefix}{number:02d}"
192
- for prefix, count in EXPECTED_COUNTS.items()
193
- for number in range(1, count + 1)
194
- }
195
- actual_ids = set(locations)
196
- if actual_ids != expected_ids:
197
- errors.append(
198
- f"card namespace mismatch: missing={sorted(expected_ids - actual_ids)}, extra={sorted(actual_ids - expected_ids)}"
199
- )
200
-
201
- for prefix, expected_count in EXPECTED_COUNTS.items():
202
- actual_count = sum(card_id.startswith(prefix) for card_id in actual_ids)
203
- if actual_count != expected_count:
204
- errors.append(
205
- f"{prefix} module has {actual_count} cards; expected {expected_count}"
206
- )
207
-
208
- for relative_path in REFERENCE_FILES.values():
209
- path = SKILL_ROOT / relative_path
210
- body = path.read_text(encoding="utf-8")
211
- second_level_headings = re.findall(r"^## (.+)$", body, re.MULTILINE)
212
- if second_level_headings != ["Card Index", "Complete Cards"]:
213
- errors.append(
214
- f"unexpected section structure in {relative_path}: {second_level_headings}"
215
- )
216
- headings = list(CARD_HEADING.finditer(body))
217
- for index, match in enumerate(headings):
218
- end = (
219
- headings[index + 1].start() if index + 1 < len(headings) else len(body)
220
- )
221
- card_body = body[match.end() : end]
222
- field_matches = list(CARD_FIELD.finditer(card_body))
223
- field_labels = tuple(item.group("label") for item in field_matches)
224
- if field_labels != REQUIRED_CARD_FIELDS:
225
- errors.append(
226
- f"{match.group(1)} has invalid field contract: {field_labels}"
227
- )
228
- field_values = {
229
- item.group("label"): item.group("value").strip()
230
- for item in field_matches
231
- }
232
- action_count = len(
233
- [
234
- action
235
- for action in field_values.get("Analytical actions", "").split(";")
236
- if action.strip()
237
- ]
238
- )
239
- if (
240
- not MINIMUM_ANALYTICAL_ACTIONS
241
- <= action_count
242
- <= MAXIMUM_ANALYTICAL_ACTIONS
243
- ):
244
- errors.append(
245
- f"{match.group(1)} has {action_count} analytical actions; expected {MINIMUM_ANALYTICAL_ACTIONS} to {MAXIMUM_ANALYTICAL_ACTIONS}"
246
- )
247
- source_count = len(SOURCE_ENTRY.findall(card_body))
248
- if not MINIMUM_SOURCE_CITATIONS <= source_count <= MAXIMUM_SOURCE_CITATIONS:
249
- errors.append(
250
- f"{match.group(1)} has {source_count} source citations; expected {MINIMUM_SOURCE_CITATIONS} to {MAXIMUM_SOURCE_CITATIONS}"
251
- )
252
- role_count = len(SOURCE_ROLE.findall(card_body))
253
- if role_count != source_count:
254
- errors.append(
255
- f"{match.group(1)} has {source_count} sources but {role_count} typed roles"
256
- )
257
- corroboration = " ".join(field_values.get("Corroboration", "").split())
258
- entries = [
259
- entry.strip()
260
- for entry in corroboration.rstrip(".").split(";")
261
- if entry.strip()
262
- ]
263
- if not MINIMUM_CORROBORATION <= len(entries) <= MAXIMUM_CORROBORATION:
264
- errors.append(
265
- f"{match.group(1)} has {len(entries)} corroboration citations; expected {MINIMUM_CORROBORATION} to {MAXIMUM_CORROBORATION}"
266
- )
267
- for entry in entries:
268
- if not CORROBORATION_KEY.match(entry):
269
- errors.append(
270
- f"{match.group(1)} has an unrecognized corroboration citation: {entry}"
271
- )
272
- if f"({SOURCE_KEY_FILE.rpartition('/')[2]})" not in body:
273
- errors.append(f"{relative_path} does not link the corroboration source key")
274
- validate_local_links(path, errors)
275
-
276
- source_key_path = SKILL_ROOT / SOURCE_KEY_FILE
277
- source_key_body = source_key_path.read_text(encoding="utf-8")
278
- heading_index = source_key_body.find(RETRIEVAL_SECTION_HEADING)
279
- if heading_index == -1:
280
- errors.append(f"{SOURCE_KEY_FILE} is missing the retrieval-location section")
281
- else:
282
- retrieval_body = source_key_body[heading_index:]
283
- for key_form in RETRIEVAL_KEY_FORMS:
284
- if f"`{key_form}`" not in retrieval_body:
285
- errors.append(
286
- f"{SOURCE_KEY_FILE} retrieval section is missing an entry for `{key_form}`"
287
- )
288
- validate_local_links(source_key_path, errors)
289
-
290
- for intent, cards in WORKFLOW_CARDS.items():
291
- if not MINIMUM_CARD_LOAD <= len(cards) <= MAXIMUM_CARD_LOAD:
292
- errors.append(f"{intent} starts with {len(cards)} cards")
293
- unknown = set(cards) - actual_ids
294
- if unknown:
295
- errors.append(f"{intent} contains unknown cards: {sorted(unknown)}")
296
-
297
- for topic, cards in TOPIC_CARDS.items():
298
- unknown = set(cards) - actual_ids
299
- if unknown:
300
- errors.append(f"{topic} contains unknown cards: {sorted(unknown)}")
301
- for intent, workflow_cards in WORKFLOW_CARDS.items():
302
- routed_count = len(ordered_unique((*workflow_cards, *cards)))
303
- if routed_count > MAXIMUM_CARD_LOAD:
304
- errors.append(
305
- f"{intent} plus {topic} routes {routed_count} cards; expected at most {MAXIMUM_CARD_LOAD}"
306
- )
307
-
308
- skill_body = SKILL_PATH.read_text(encoding="utf-8")
309
- if not skill_body.startswith("---\nname: buffett-investment-framework\n"):
310
- errors.append("SKILL.md has an invalid public skill name")
311
- for authority_boundary in (
312
- "not a buy, sell, hold",
313
- "position size",
314
- "execute a trade",
315
- ):
316
- if authority_boundary not in skill_body:
317
- errors.append(
318
- f"SKILL.md is missing authority boundary: {authority_boundary}"
319
- )
320
- if "[TODO" in skill_body:
321
- errors.append("SKILL.md contains an unresolved scaffold TODO")
322
- frontmatter_end = skill_body.find("\n---\n", 4)
323
- if frontmatter_end == -1:
324
- errors.append("SKILL.md is missing a closing frontmatter delimiter")
325
- else:
326
- frontmatter_block = skill_body[4 : frontmatter_end + 1]
327
- desc_match = re.search(r"^description: (.*)$", frontmatter_block, re.MULTILINE)
328
- if desc_match is None:
329
- errors.append("SKILL.md frontmatter is missing a description field")
330
- elif not desc_match.group(1).strip():
331
- errors.append("SKILL.md frontmatter has an empty description value")
332
- elif len(desc_match.group(1).strip()) > MAXIMUM_DESCRIPTION_LENGTH:
333
- errors.append(
334
- f"SKILL.md frontmatter description exceeds {MAXIMUM_DESCRIPTION_LENGTH} characters"
335
- )
336
- validate_local_links(SKILL_PATH, errors)
337
-
338
- public_files = [
339
- SKILL_PATH,
340
- SKILL_ROOT / "agents" / "openai.yaml",
341
- SKILL_ROOT / "scripts" / "framework.py",
342
- SKILL_ROOT / SOURCE_KEY_FILE,
343
- *(SKILL_ROOT / path for path in REFERENCE_FILES.values()),
344
- ]
345
- prose_files = [
346
- SKILL_PATH,
347
- SKILL_ROOT / "agents" / "openai.yaml",
348
- SKILL_ROOT / SOURCE_KEY_FILE,
349
- *(SKILL_ROOT / path for path in REFERENCE_FILES.values()),
350
- ]
351
- for path in prose_files:
352
- body = path.read_text(encoding="utf-8")
353
- for label, pattern in UNPUBLISHABLE_TEXT.items():
354
- if pattern.search(body):
355
- errors.append(f"{label} in public file: {path.relative_to(SKILL_ROOT)}")
356
-
357
- expected_paths = {path.relative_to(SKILL_ROOT) for path in public_files}
358
- actual_paths = {
359
- path.relative_to(SKILL_ROOT)
360
- for path in SKILL_ROOT.rglob("*")
361
- if path.is_file() and "__pycache__" not in path.parts and path.suffix != ".pyc"
362
- }
363
- if actual_paths != expected_paths:
364
- errors.append(
365
- f"package file mismatch: missing={sorted(expected_paths - actual_paths)}, extra={sorted(actual_paths - expected_paths)}"
366
- )
367
-
368
- if errors:
369
- for error in errors:
370
- print(f"ERROR: {error}", file=sys.stderr)
371
- return 1
372
-
373
- counts = "/".join(str(count) for count in EXPECTED_COUNTS.values())
374
- print(
375
- f"PASS: {len(actual_ids)} cards; module counts {counts}; public fields, source citations, corroboration keys, workflows, links, authority boundaries, description, and isolation checks resolve"
376
- )
377
- return 0
378
-
379
-
380
- def route(intent: str, topics: list[str]) -> int:
381
- """Print a deterministic bounded card load and exact reference locations."""
382
- requested = list(WORKFLOW_CARDS[intent])
383
- for topic in topics:
384
- requested.extend(TOPIC_CARDS[topic])
385
- cards = ordered_unique(requested)
386
- if len(cards) > MAXIMUM_CARD_LOAD:
387
- print(
388
- f"ERROR: route requires {len(cards)} cards, above the {MAXIMUM_CARD_LOAD}-card cap; split the task or remove a topic",
389
- file=sys.stderr,
390
- )
391
- return 2
392
-
393
- locations = card_locations()
394
- print("status: ready")
395
- print(f"intent: {intent}")
396
- print(f"topics: {', '.join(topics) if topics else 'none'}")
397
- print(f"cards ({len(cards)}): {', '.join(cards)}")
398
- print("read:")
399
- for location in ordered_unique(locations[card_id] for card_id in cards):
400
- print(f" - {location}")
401
- return 0
402
-
403
-
404
- def show(card_id: str) -> int:
405
- """Print one complete card from its reference module."""
406
- normalized = card_id.upper()
407
- locations = card_locations()
408
- if normalized not in locations:
409
- print(f"ERROR: unknown card ID: {card_id}", file=sys.stderr)
410
- return 2
411
- relative_path = locations[normalized].split("#", maxsplit=1)[0]
412
- body = (SKILL_ROOT / relative_path).read_text(encoding="utf-8")
413
- matches = list(CARD_HEADING.finditer(body))
414
- for index, match in enumerate(matches):
415
- if match.group(1) != normalized:
416
- continue
417
- end = matches[index + 1].start() if index + 1 < len(matches) else len(body)
418
- footer_start = body.find("\n<!--", match.end(), end)
419
- if footer_start != -1:
420
- end = footer_start
421
- if index + 1 < len(matches):
422
- next_anchor = body.rfind("\n<a id=", match.end(), end)
423
- if next_anchor != -1:
424
- end = next_anchor
425
- print(f"source: {locations[normalized]}")
426
- print(body[match.start() : end].rstrip())
427
- return 0
428
- raise AssertionError(f"indexed card is not readable: {normalized}")
429
-
430
-
431
- def parser() -> argparse.ArgumentParser:
432
- """Build the command-line interface."""
433
- root = argparse.ArgumentParser(description=__doc__)
434
- commands = root.add_subparsers(dest="command", required=True)
435
- _ = commands.add_parser("validate", help="validate the complete standalone package")
436
-
437
- route_parser = commands.add_parser("route", help="select a bounded card load")
438
- _ = route_parser.add_argument("--intent", required=True, choices=WORKFLOW_CARDS)
439
- _ = route_parser.add_argument(
440
- "--topic",
441
- action="append",
442
- default=[],
443
- choices=TOPIC_CARDS,
444
- help="add a material topic; repeat as needed",
445
- )
446
-
447
- show_parser = commands.add_parser("show", help="print one complete card")
448
- _ = show_parser.add_argument("--id", required=True, dest="card_id")
449
- return root
450
-
451
-
452
- def main() -> int:
453
- """Run the requested framework command."""
454
- arguments = parser().parse_args()
455
- command = cast(str, arguments.command)
456
- try:
457
- if command == "validate":
458
- return validate()
459
- if command == "route":
460
- return route(cast(str, arguments.intent), cast(list[str], arguments.topic))
461
- if command == "show":
462
- return show(cast(str, arguments.card_id))
463
- except (OSError, ValueError) as error:
464
- print(f"ERROR: {error}", file=sys.stderr)
465
- return 1
466
- raise AssertionError(f"unhandled command: {command}")
467
-
468
-
469
- if __name__ == "__main__":
470
- raise SystemExit(main())
@@ -1,124 +0,0 @@
1
- ---
2
- name: earnings-preview
3
- description: Prepare for an upcoming earnings report or earnings week by identifying the reports that matter, framing the key debates, and surfacing the read-through risk that could affect the user's watchlist or positions.
4
- ---
5
-
6
- # Earnings Preview
7
-
8
- Use this skill when the user needs to prepare before one company reports or before an earnings-heavy week.
9
-
10
- This skill will not:
11
-
12
- - predict the post-report price move with certainty
13
- - confuse a benchmark company's importance with a guaranteed read-through
14
- - replace missing fundamentals with narrative filler
15
-
16
- ## Role
17
-
18
- Act like a skeptical earnings prep analyst. Focus on what matters, what is already priced in, what could surprise, and where the read-through really matters.
19
-
20
- ## When to use it
21
-
22
- Use it when the user wants to:
23
-
24
- - prioritize which upcoming reports actually deserve attention
25
- - prepare for a single company report with peer and sector context
26
- - identify likely read-through names around a benchmark report
27
- - decide whether a report is worth holding through, fading, or avoiding
28
-
29
- ## Inputs and context
30
-
31
- Ask for:
32
-
33
- - the company, peer group, sector, or watchlist
34
- - the date window or specific report being discussed
35
- - the user's thesis, exposure, or planned trade posture
36
- - what matters most this quarter: growth, margins, guidance, backlog, capex, demand, pricing, AI spend, consumer health, and so on
37
- - whether the user cares more about the report itself, sector read-through, or index impact
38
-
39
- Helpful but optional:
40
-
41
- - consensus expectations or prior-quarter context
42
- - known positioning or sentiment concerns
43
- - whether the user plans to hold through the event
44
-
45
- Use the user's materials first: pasted schedules, watchlists, company notes, guidance excerpts, estimate tables, transcripts, screenshots, or provider details already mentioned in the conversation.
46
-
47
- ## If critical data is missing
48
-
49
- If you already have enough timing and context to do the analysis, do not fetch anything.
50
-
51
- If key schedule or estimate context is missing:
52
-
53
- - check whether the user already named a supported provider or already shared usable access details in the conversation
54
- - if they already indicated `FMP`, `TradingEconomics`, or `Polygon`, use [references/providers/fmp.md](references/providers/fmp.md), [references/providers/tradingeconomics.md](references/providers/tradingeconomics.md), or [references/providers/polygon.md](references/providers/polygon.md) directly
55
- - otherwise consult [references/data-providers.md](references/data-providers.md) and ask which supported provider they want to use
56
- - once the missing facts are gathered, continue the preview and disclose the source used
57
-
58
- ## Analysis process
59
-
60
- 1. Identify the reports that matter most for the user's names or theme.
61
- 2. Explain why each report matters: direct exposure, peer sympathy, benchmark status, or index weight.
62
- 3. Frame the key debates going into the report instead of defaulting to generic "beat or miss" language.
63
- 4. Separate pre-report setup risk from business-quality judgment.
64
- 5. Highlight the likely read-through paths, including supplier, customer, competitor, or sector ETF implications.
65
- 6. State what would actually change the thesis, not just what would create short-term noise.
66
- 7. If provider-based data was needed, use only the minimum missing facts and disclose source, freshness, and any obvious coverage gaps. Otherwise stay fully grounded in the user's material.
67
-
68
- Use [references/relevance-ranking.md](references/relevance-ranking.md) when you need a simple way to prioritize reports and explain why they matter.
69
-
70
- ## Core Assessment Framework
71
-
72
- Assess each report on four anchors before ranking it:
73
-
74
- - `Benchmark Relevance`: whether the company can move a sector, supplier chain, customer set, or broad index. Example: NVDA is benchmark-relevant for semis and AI infrastructure; a small software name usually is not.
75
- - `Debate Intensity`: whether the quarter has one or two live disagreements that matter more than the headline beat or miss. Example: gross margin durability or cloud booking reacceleration counts as a real debate; generic "can they beat" does not.
76
- - `Read-Through Strength`: whether peers or related industries will plausibly react to the same datapoints. Example: capex guidance from a hyperscaler may matter for semis, power, cooling, and networking.
77
- - `Positioning Risk`: whether sentiment, recent price action, or the user's exposure makes the event more dangerous to hold through.
78
-
79
- Use the anchors to classify:
80
-
81
- - `must-watch`: benchmark relevance is high and at least one of debate intensity, read-through strength, or positioning risk is also high
82
- - `watch`: relevant event, but consequences are narrower or easier to absorb
83
- - `background`: useful context, but low priority unless it directly affects the user's book
84
-
85
- ## Evidence That Would Invalidate This Analysis
86
-
87
- - the report date or session changes enough to alter the planning window
88
- - the quarter's key debate changes because management, industry data, or a peer report reframes the issue
89
- - read-through assumptions break because the peer set, supplier chain, or benchmark relationship was overstated
90
- - the user's exposure or holding plan changes, making the current priority ranking less relevant
91
- - estimate, guidance, or schedule fields turn out to be stale, incomplete, or sourced from the wrong provider snapshot
92
-
93
- ## Output structure
94
-
95
- Prefer this output order:
96
-
97
- 1. `Priority List`
98
- 2. `Core Assessment Framework`
99
- 3. `Key Debates`
100
- 4. `Read-Through Map`
101
- 5. `Plan Risk`
102
- 6. `Evidence That Would Invalidate This Analysis`
103
- 7. `Source And Caveats`
104
-
105
- Always return:
106
-
107
- - a prioritized report list or single-name preview
108
- - why each report matters in plain language
109
- - the key debates or watch items going into the print
110
- - the likely read-through map for peers, suppliers, customers, or sector leadership
111
- - the main pre-report risk to the user's plan
112
- - explicit caveats around missing dates, incomplete estimates, stale data, or example-mode data when relevant
113
-
114
- ## Best practices
115
-
116
- - do not turn "important report" into "predictable trade"
117
- - do not confuse sector importance with a guaranteed stock move
118
- - distinguish between what matters for fundamentals and what matters for positioning
119
- - if timing, estimates, or coverage are incomplete, say that early rather than burying it
120
-
121
- ## Usage examples
122
-
123
- - "Use `earnings-preview` for NVDA next week. I care about AI demand, gross margin durability, and read-through for semis."
124
- - "Use `earnings-preview` for AAPL, AMZN, and COST over the next ten days and tell me which reports matter most for index and sector read-through."
@@ -1,26 +0,0 @@
1
- # Data Providers
2
-
3
- Use this only if the user did not already provide enough schedule or estimate context.
4
-
5
- Supported providers:
6
-
7
- - `FMP`: best default for forward earnings dates, report timing, and estimate fields through `/stable/earnings-calendar`
8
- - `TradingEconomics`: useful for earnings dates, release session, forecast fields, and revenue context through `/earnings-revenues`
9
- - `Polygon`: useful when the user already works in Polygon and needs recent reported financials, but not the best default for forward earnings schedule confirmation
10
-
11
- If the user already named one of these providers or already shared usable access details, use that provider path directly.
12
-
13
- Otherwise ask: "Which provider do you want to use for the missing earnings context: FMP, TradingEconomics, or Polygon?"
14
-
15
- Fallback strategy:
16
-
17
- - start with `FMP` when the missing piece is the upcoming earnings date, session, or consensus-style estimate fields
18
- - use `TradingEconomics` when the user already works there or when revenue forecast context matters
19
- - use `Polygon` when the user already uses Polygon for fundamentals and the missing piece is prior reported context rather than the upcoming schedule
20
- - if the user insists on `Polygon` but the exact upcoming date or session still cannot be confirmed, say that clearly and ask whether to supplement with `FMP` or `TradingEconomics`
21
-
22
- Provider notes:
23
-
24
- - [FMP](providers/fmp.md)
25
- - [TradingEconomics](providers/tradingeconomics.md)
26
- - [Polygon](providers/polygon.md)
@@ -1,49 +0,0 @@
1
- # FMP
2
-
3
- Use this path only when the user already indicated `FMP` or chose it from the supported provider list.
4
-
5
- Use the smallest request that fills the missing earnings facts.
6
-
7
- ## Best endpoint for a date window
8
-
9
- Call the official earnings calendar endpoint:
10
-
11
- ```bash
12
- curl "https://financialmodelingprep.com/stable/earnings-calendar?from=2026-03-09&to=2026-03-20&apikey=<FMP_API_KEY>"
13
- ```
14
-
15
- Use this when the user gave a date window and you need report timing or estimate context for one or more names.
16
-
17
- Pull only the fields you need for the preview:
18
-
19
- - `date`
20
- - `symbol`
21
- - `name`
22
- - `time`
23
- - `epsEstimated`
24
- - `revenueEstimated`
25
- - `epsActual`
26
- - `revenueActual`
27
- - `lastUpdated`
28
-
29
- ## Best endpoint for a single company
30
-
31
- If the user only cares about one company and you already know the symbol, use:
32
-
33
- ```bash
34
- curl "https://financialmodelingprep.com/stable/earnings?symbol=AAPL&apikey=<FMP_API_KEY>"
35
- ```
36
-
37
- This is useful when the user wants one-name context rather than a calendar sweep.
38
-
39
- ## How to use the result
40
-
41
- - confirm the report date and timing first
42
- - use estimate fields only to frame the debate, not to imply direction
43
- - if `time`, EPS estimates, or revenue estimates are missing, say that explicitly
44
- - disclose that FMP supplied the missing schedule or estimate data
45
-
46
- Official docs:
47
-
48
- - [FMP earnings calendar API](https://site.financialmodelingprep.com/developer/docs/stable/earnings-calendar)
49
- - [FMP earnings report API](https://site.financialmodelingprep.com/developer/docs/earnings-historical-earnings)