@v587d/capital-generation 2.7.1 → 2.7.3

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 (122) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +9 -7
  3. package/THIRD_PARTY_NOTICES.md +65 -24
  4. package/capital-config/client.js +2 -2
  5. package/capital-config/package.json +1 -1
  6. package/capital-watchlist/package.json +1 -1
  7. package/chart-ui/package.json +1 -1
  8. package/lib/web-retriever/local-fetch.d.ts +1 -1
  9. package/lib/web-retriever/local-fetch.js +1 -1
  10. package/lib/web-retriever/wind-client.d.ts +1 -1
  11. package/lib/web-retriever/wind-client.js +1 -1
  12. package/package.json +3 -1
  13. package/selected-skills/InvestSkill/UPSTREAM.md +9 -0
  14. package/selected-skills/catalog.js +200 -0
  15. package/selected-skills/china-stock-research-skills/UPSTREAM.md +2 -1
  16. package/selected-skills/investment-skills/UPSTREAM.md +2 -1
  17. package/selected-skills/peter-lynch-skill/LICENSE +21 -0
  18. package/selected-skills/peter-lynch-skill/UPSTREAM.md +72 -0
  19. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/SKILL.md +142 -0
  20. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology.md +587 -0
  21. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/system-prompt.md +102 -0
  22. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research.md +471 -0
  23. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/disclaimer.md +2 -0
  24. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/filing-rules.md +64 -0
  25. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/methodology.md +195 -0
  26. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/system-prompt.md +72 -0
  27. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research.md +379 -0
  28. package/selected-skills/trading-skills/LICENSE +21 -0
  29. package/selected-skills/trading-skills/UPSTREAM.md +111 -0
  30. package/selected-skills/trading-skills/skills/catalyst-map/SKILL.md +119 -0
  31. package/selected-skills/trading-skills/skills/catalyst-map/references/catalyst-framework.md +68 -0
  32. package/selected-skills/trading-skills/skills/earnings-preview/SKILL.md +124 -0
  33. package/selected-skills/trading-skills/skills/earnings-preview/references/data-providers.md +26 -0
  34. package/selected-skills/trading-skills/skills/earnings-preview/references/providers/fmp.md +49 -0
  35. package/selected-skills/trading-skills/skills/earnings-preview/references/providers/polygon.md +45 -0
  36. package/selected-skills/trading-skills/skills/earnings-preview/references/providers/tradingeconomics.md +49 -0
  37. package/selected-skills/trading-skills/skills/earnings-preview/references/relevance-ranking.md +24 -0
  38. package/selected-skills/trading-skills/skills/earnings-trade-prep/SKILL.md +134 -0
  39. package/selected-skills/trading-skills/skills/earnings-trade-prep/references/workflow-framework.md +65 -0
  40. package/selected-skills/trading-skills/skills/evidence-gap-check/SKILL.md +120 -0
  41. package/selected-skills/trading-skills/skills/evidence-gap-check/references/gap-framework.md +66 -0
  42. package/selected-skills/trading-skills/skills/execution-plan-check/SKILL.md +121 -0
  43. package/selected-skills/trading-skills/skills/execution-plan-check/references/execution-checklist.md +70 -0
  44. package/selected-skills/trading-skills/skills/journal-pattern-analyzer/SKILL.md +120 -0
  45. package/selected-skills/trading-skills/skills/journal-pattern-analyzer/references/calculation-helpers.md +16 -0
  46. package/selected-skills/trading-skills/skills/journal-pattern-analyzer/references/pattern-framework.md +74 -0
  47. package/selected-skills/trading-skills/skills/macro-event-analysis/SKILL.md +122 -0
  48. package/selected-skills/trading-skills/skills/macro-event-analysis/references/data-providers.md +23 -0
  49. package/selected-skills/trading-skills/skills/macro-event-analysis/references/interpretation-guide.md +22 -0
  50. package/selected-skills/trading-skills/skills/macro-event-analysis/references/providers/fmp.md +28 -0
  51. package/selected-skills/trading-skills/skills/macro-event-analysis/references/providers/tradingeconomics.md +40 -0
  52. package/selected-skills/trading-skills/skills/market-regime-analysis/SKILL.md +117 -0
  53. package/selected-skills/trading-skills/skills/market-regime-analysis/references/data-providers.md +26 -0
  54. package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/fmp.md +46 -0
  55. package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/polygon.md +36 -0
  56. package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/tradingeconomics.md +46 -0
  57. package/selected-skills/trading-skills/skills/market-regime-analysis/references/regime-framework.md +23 -0
  58. package/selected-skills/trading-skills/skills/portfolio-concentration/SKILL.md +119 -0
  59. package/selected-skills/trading-skills/skills/portfolio-concentration/references/concentration-framework.md +72 -0
  60. package/selected-skills/trading-skills/skills/portfolio-risk-review/SKILL.md +126 -0
  61. package/selected-skills/trading-skills/skills/portfolio-risk-review/references/workflow-framework.md +57 -0
  62. package/selected-skills/trading-skills/skills/position-management/SKILL.md +120 -0
  63. package/selected-skills/trading-skills/skills/position-management/references/management-framework.md +70 -0
  64. package/selected-skills/trading-skills/skills/position-sizing/SKILL.md +83 -0
  65. package/selected-skills/trading-skills/skills/position-sizing/assets/trade-plan-template.md +15 -0
  66. package/selected-skills/trading-skills/skills/position-sizing/references/calculation-helpers.md +13 -0
  67. package/selected-skills/trading-skills/skills/position-sizing/references/methodology.md +28 -0
  68. package/selected-skills/trading-skills/skills/post-trade-debrief/SKILL.md +99 -0
  69. package/selected-skills/trading-skills/skills/post-trade-debrief/references/workflow-framework.md +51 -0
  70. package/selected-skills/trading-skills/skills/post-trade-review/SKILL.md +82 -0
  71. package/selected-skills/trading-skills/skills/post-trade-review/references/review-rubric.md +34 -0
  72. package/selected-skills/trading-skills/skills/pre-trade-check/SKILL.md +136 -0
  73. package/selected-skills/trading-skills/skills/pre-trade-check/references/workflow-framework.md +61 -0
  74. package/selected-skills/trading-skills/skills/risk-reward-sanity-check/SKILL.md +81 -0
  75. package/selected-skills/trading-skills/skills/risk-reward-sanity-check/references/calculation-helpers.md +14 -0
  76. package/selected-skills/trading-skills/skills/risk-reward-sanity-check/references/failure-modes.md +9 -0
  77. package/selected-skills/trading-skills/skills/thesis-validation/SKILL.md +123 -0
  78. package/selected-skills/trading-skills/skills/thesis-validation/references/thesis-checklist.md +56 -0
  79. package/selected-skills/trading-skills/skills/watchlist-review/SKILL.md +119 -0
  80. package/selected-skills/trading-skills/skills/watchlist-review/references/review-framework.md +57 -0
  81. package/selected-skills/InvestSkill/ADDING-NEW-SKILLS.md +0 -546
  82. package/selected-skills/InvestSkill/CHANGELOG.md +0 -373
  83. package/selected-skills/InvestSkill/CI-CD-GUIDE.md +0 -432
  84. package/selected-skills/InvestSkill/CLAUDE.md +0 -148
  85. package/selected-skills/InvestSkill/CONTRIBUTING.md +0 -291
  86. package/selected-skills/InvestSkill/DEPLOYMENTS.md +0 -321
  87. package/selected-skills/InvestSkill/FAQ.md +0 -509
  88. package/selected-skills/InvestSkill/GEMINI.md +0 -419
  89. package/selected-skills/InvestSkill/PLATFORM-COMPATIBILITY.md +0 -529
  90. package/selected-skills/InvestSkill/README-claude-code.md +0 -435
  91. package/selected-skills/InvestSkill/README-cursor.md +0 -475
  92. package/selected-skills/InvestSkill/README-gemini.md +0 -532
  93. package/selected-skills/InvestSkill/README-ollama.md +0 -106
  94. package/selected-skills/InvestSkill/README-zh-TW.md +0 -461
  95. package/selected-skills/InvestSkill/README.md +0 -311
  96. package/selected-skills/InvestSkill/RELEASE-QUICK-REFERENCE.md +0 -230
  97. package/selected-skills/InvestSkill/RELEASE_NOTES.md +0 -121
  98. package/selected-skills/InvestSkill/SECURITY.md +0 -232
  99. package/selected-skills/InvestSkill/TODO.md +0 -28
  100. package/selected-skills/InvestSkill/package.json +0 -64
  101. package/selected-skills/InvestSkill/plugins/us-stock-analysis/README.md +0 -119
  102. package/selected-skills/china-stock-research-skills/.github/ISSUE_TEMPLATE/bug_report.md +0 -35
  103. package/selected-skills/china-stock-research-skills/.github/ISSUE_TEMPLATE/skill_request.md +0 -28
  104. package/selected-skills/china-stock-research-skills/.github/PULL_REQUEST_TEMPLATE.md +0 -15
  105. package/selected-skills/china-stock-research-skills/CHANGELOG.md +0 -59
  106. package/selected-skills/china-stock-research-skills/CONTRIBUTING.md +0 -121
  107. package/selected-skills/china-stock-research-skills/GITHUB_PUBLISHING.md +0 -259
  108. package/selected-skills/china-stock-research-skills/INSTALL.md +0 -151
  109. package/selected-skills/china-stock-research-skills/PUBLISH_CHECKLIST.md +0 -165
  110. package/selected-skills/china-stock-research-skills/README.en.md +0 -209
  111. package/selected-skills/china-stock-research-skills/README.md +0 -209
  112. package/selected-skills/china-stock-research-skills/RELEASE_ASSETS.md +0 -222
  113. package/selected-skills/china-stock-research-skills/ROADMAP.md +0 -45
  114. package/selected-skills/china-stock-research-skills/SKILLS.md +0 -85
  115. package/selected-skills/china-stock-research-skills/examples/full-report-flow.md +0 -20
  116. package/selected-skills/china-stock-research-skills/examples/module-select-cases.md +0 -26
  117. package/selected-skills/china-stock-research-skills/examples/quickstart-prompts.md +0 -25
  118. package/selected-skills/investment-skills/.github/workflows/validate.yml +0 -25
  119. package/selected-skills/investment-skills/.tbd/config.yml +0 -107
  120. package/selected-skills/investment-skills/README.md +0 -253
  121. package/selected-skills/investment-skills/docs/development.md +0 -37
  122. package/selected-skills/investment-skills/docs/roadmap.md +0 -25
@@ -6,6 +6,12 @@ export const SELECTED_SKILL_SKILL_DIRS = Object.freeze({
6
6
  'investment-skills': 'skills',
7
7
  'china-stock-research-skills': 'skills',
8
8
  InvestSkill: 'plugins/us-stock-analysis/skills',
9
+ // 上游把 SKILL.md 放在仓库根,快照因此套了一层 skills/<name>/(理由见该快照的 UPSTREAM.md)。
10
+ 'peter-lynch-skill': 'skills',
11
+ // 上游把 skill 按主题分了两层(skills/<domain>/<name>/),provider 只枚举 skills 根的直接子目录,
12
+ // 指上去等于发现 0 颗:快照因此平铺掉 <domain>/ 这一层(每颗的 references/、assets/ 跟着走,
13
+ // 正文链接都在自己目录内,不破)。理由与逐颗原分组记在该快照的 UPSTREAM.md。
14
+ 'trading-skills': 'skills',
9
15
  })
10
16
 
11
17
  // Selected-skill metadata owned by Capital Generation. Upstream snapshots remain unchanged.
@@ -677,6 +683,196 @@ export const SELECTED_SKILL_CATALOG = Object.freeze([
677
683
  en: 'Upstream assumes it can save files; under Capital it writes into the session workspace and obeys its permissions.',
678
684
  },
679
685
  },
686
+ {
687
+ key: 'peterLynchResearch',
688
+ name: 'peter-lynch-skill',
689
+ label: { zh: '彼得·林奇式个股研究', en: 'Peter Lynch Research' },
690
+ description: {
691
+ zh: '给一个代码或公司名,走快筛(SKIP / WATCHLIST / DEEP RESEARCH)或完整尽调,生意理解、分类与估值放在同一套检查里,每条主张配可点开的来源链接。美股与境外上市口径。',
692
+ en: 'Screens a ticker or company fast (SKIP / WATCHLIST / DEEP RESEARCH) or runs full due diligence, with linked sources under every claim. US and overseas-listing conventions.',
693
+ },
694
+ owner: 'DjNero11',
695
+ repository: 'peter-lynch-skill',
696
+ status: 'watchlist',
697
+ lastCommit: '2026-06-28',
698
+ reviewBy: '2026-11-06',
699
+ tags: ['peter-lynch', 'us-stock', 'valuation', 'risk', 'verification'],
700
+ riskNote: {
701
+ zh: '冷启动实验;上游仅两次提交、自 2026-06-28 起无更新,启用前请自行复核来源。X/10 衡量的是论点自洽度与结构特征,不预测表现,也不构成买卖建议。',
702
+ en: 'Cold-start experiment; upstream has two commits and has been quiet since 2026-06-28, so review the sources before use. The X/10 score rates thesis consistency and structure, not forecast performance, and is not investment advice.',
703
+ },
704
+ },
705
+ {
706
+ key: 'catalystMap',
707
+ name: 'catalyst-map',
708
+ label: { zh: '催化剂地图', en: 'Catalyst Map' },
709
+ description: {
710
+ zh: '把要发生的事件按"影响什么、什么时候影响、会传导到谁"排成注意力优先级,并标出依赖同一事件链的持仓。美股与境外宏观日历口径。',
711
+ en: 'Ranks upcoming events by what they move, when, and how they transmit across related names, and flags positions hanging on the same event chain. US and overseas calendar conventions.',
712
+ },
713
+ owner: 'marian2js',
714
+ repository: 'trading-skills',
715
+ status: 'watchlist',
716
+ lastCommit: '2026-03-16',
717
+ reviewBy: '2026-11-06',
718
+ tags: ['trade-discipline', 'macro', 'monitoring', 'us-stock'],
719
+ riskNote: {
720
+ zh: '冷启动实验;上游自 2026-03-16 起无提交,启用前请自行复核来源。它排的是注意力优先级,不预测价格走向,也不构成买卖建议。',
721
+ en: 'Cold-start experiment; upstream has been quiet since 2026-03-16, so review the sources before use. The map ranks attention, not price direction, and is not investment advice.',
722
+ },
723
+ },
724
+ {
725
+ key: 'watchlistReview',
726
+ name: 'watchlist-review',
727
+ label: { zh: '自选股分诊', en: 'Watchlist Review' },
728
+ description: {
729
+ zh: '对使用者给出的自选清单做分诊:哪些值得盯、哪些只作背景、哪些理由已经不成立,并说清移出的是清单条目而不是持仓。',
730
+ en: 'Triages the watchlist the user supplies into active focus, background monitoring, or removal, and says that what comes off is a list entry, not a position.',
731
+ },
732
+ owner: 'marian2js',
733
+ repository: 'trading-skills',
734
+ status: 'watchlist',
735
+ lastCommit: '2026-03-16',
736
+ reviewBy: '2026-11-06',
737
+ tags: ['trade-discipline', 'portfolio', 'monitoring', 'us-stock'],
738
+ riskNote: {
739
+ zh: '冷启动实验;上游自 2026-03-16 起无提交,启用前请自行复核来源。分诊只作用于自选清单,不构成买卖动作;本插件读不到券商账户。',
740
+ en: 'Cold-start experiment; upstream has been quiet since 2026-03-16, so review the sources before use. The triage acts on the watchlist only, is not a buy or sell action, and this plugin cannot read a brokerage account.',
741
+ },
742
+ },
743
+ {
744
+ key: 'evidenceGapCheck',
745
+ name: 'evidence-gap-check',
746
+ label: { zh: '证据缺口检查', en: 'Evidence Gap Check' },
747
+ description: {
748
+ zh: '把一笔想法还缺的事实、假设与未解问题按"会不会改变判断"排序,说清哪些缺口必须先补、哪些只是降低置信度。',
749
+ en: 'Ranks the missing facts, assumptions and open questions behind an idea by whether they change the judgement, and separates blocking gaps from confidence gaps.',
750
+ },
751
+ owner: 'marian2js',
752
+ repository: 'trading-skills',
753
+ status: 'watchlist',
754
+ lastCommit: '2026-03-16',
755
+ reviewBy: '2026-11-06',
756
+ tags: ['trade-discipline', 'verification', 'risk'],
757
+ riskNote: {
758
+ zh: '冷启动实验;上游自 2026-03-16 起无提交,启用前请自行复核来源。它只列证据缺口,不给评级、不替使用者决定这笔做不做。',
759
+ en: 'Cold-start experiment; upstream has been quiet since 2026-03-16, so review the sources before use. It lists evidence gaps only: no rating, and no decision about whether to take the trade.',
760
+ },
761
+ },
762
+ {
763
+ key: 'thesisValidation',
764
+ name: 'thesis-validation',
765
+ label: { zh: '论点压力测试', en: 'Thesis Validation' },
766
+ description: {
767
+ zh: '把一个说法压成可检验的主张:论点、证据、失效条件与时间窗分开写,再判它够不够格进入结构检查。',
768
+ en: 'Turns a claim into something testable — thesis, evidence, invalidation, timeframe — then judges whether it is ready to be built on.',
769
+ },
770
+ owner: 'marian2js',
771
+ repository: 'trading-skills',
772
+ status: 'watchlist',
773
+ lastCommit: '2026-03-16',
774
+ reviewBy: '2026-11-06',
775
+ tags: ['trade-discipline', 'verification', 'risk'],
776
+ riskNote: {
777
+ zh: '冷启动实验;上游自 2026-03-16 起无提交,启用前请自行复核来源。判的是论点是否自洽可检验,不预测表现,也不构成买卖建议。',
778
+ en: 'Cold-start experiment; upstream has been quiet since 2026-03-16, so review the sources before use. It tests whether a thesis is coherent and falsifiable, not how it will perform, and is not investment advice.',
779
+ },
780
+ },
781
+ {
782
+ key: 'riskRewardSanityCheck',
783
+ name: 'risk-reward-sanity-check',
784
+ label: { zh: '盈亏比自洽检查', en: 'Risk-Reward Sanity Check' },
785
+ description: {
786
+ zh: '按入场、止损与目标算出盈亏比,再检查这个结构是否自洽:目标是否落在噪声里、止损是否在明显的流动性聚集处。',
787
+ en: 'Works out the reward-to-risk ratio from entry, stop and target, then tests whether the structure holds — targets inside noise, stops sitting in obvious liquidity pools.',
788
+ },
789
+ owner: 'marian2js',
790
+ repository: 'trading-skills',
791
+ status: 'watchlist',
792
+ lastCommit: '2026-03-16',
793
+ reviewBy: '2026-11-06',
794
+ tags: ['trade-discipline', 'risk', 'us-stock'],
795
+ riskNote: {
796
+ zh: '冷启动实验;上游自 2026-03-16 起无提交,启用前请自行复核来源。比值衡量的是结构自洽与失败面,不是胜率或收益承诺,本插件也不据它给仓位数字。',
797
+ en: 'Cold-start experiment; upstream has been quiet since 2026-03-16, so review the sources before use. The ratio measures structural coherence and failure modes, not win rate or returns, and this plugin derives no position size from it.',
798
+ },
799
+ },
800
+ {
801
+ key: 'executionPlanCheck',
802
+ name: 'execution-plan-check',
803
+ label: { zh: '执行计划检查', en: 'Execution Plan Check' },
804
+ description: {
805
+ zh: '检查一份交易计划在操作上是否真的能落地:订单类型与紧迫度是否匹配、流动性与点差风险、事件时点、止损能否成交。',
806
+ en: 'Checks whether a plan is operationally workable: order type against urgency, liquidity and spread risk, event timing, and whether a stop would actually fill.',
807
+ },
808
+ owner: 'marian2js',
809
+ repository: 'trading-skills',
810
+ status: 'watchlist',
811
+ lastCommit: '2026-03-16',
812
+ reviewBy: '2026-11-06',
813
+ tags: ['trade-discipline', 'risk', 'monitoring', 'us-stock'],
814
+ riskNote: {
815
+ zh: '冷启动实验;上游自 2026-03-16 起无提交,启用前请自行复核来源。检查的是计划的可操作性:本插件不下单、不改单,也不给仓位数字。',
816
+ en: 'Cold-start experiment; upstream has been quiet since 2026-03-16, so review the sources before use. It reviews whether a plan is executable: this plugin places and amends no orders and gives no position size.',
817
+ },
818
+ },
819
+ {
820
+ key: 'portfolioConcentration',
821
+ name: 'portfolio-concentration',
822
+ label: { zh: '组合集中度检查', en: 'Portfolio Concentration' },
823
+ description: {
824
+ zh: '看组合是否过度压在同一批发行人、行业、主题或相关暴露上,并写清这个判断需要哪些持仓数据才成立。',
825
+ en: 'Shows whether a book leans too hard on a few issuers, sectors, themes or correlated exposures, and what holdings data that verdict needs to stand.',
826
+ },
827
+ owner: 'marian2js',
828
+ repository: 'trading-skills',
829
+ status: 'watchlist',
830
+ lastCommit: '2026-03-16',
831
+ reviewBy: '2026-11-06',
832
+ tags: ['trade-discipline', 'portfolio', 'risk'],
833
+ riskNote: {
834
+ zh: '冷启动实验;上游自 2026-03-16 起无提交,启用前请自行复核来源。文中的 5%/10% 一类是经验口径不是普适规则;持仓只以使用者自报的标记为准(本插件读不到券商账户),也不构成加减仓建议。',
835
+ en: 'Cold-start experiment; upstream has been quiet since 2026-03-16, so review the sources before use. The 5% / 10% bands are practical review thresholds, not universal laws; the book comes only from positions the user marked as held (this plugin cannot read a brokerage account), and it is not advice to add or reduce.',
836
+ },
837
+ },
838
+ {
839
+ key: 'journalPatternAnalyzer',
840
+ name: 'journal-pattern-analyzer',
841
+ label: { zh: '交易日志模式分析', en: 'Journal Pattern Analyzer' },
842
+ description: {
843
+ zh: '从使用者自己的交易日志里找重复出现的优势与失误、它们各自发生在什么环境下,并为小样本设护栏。',
844
+ en: 'Finds the repeated strengths and mistakes in the user’s own trade journal, groups them by environment, and keeps small samples from hardening into lessons.',
845
+ },
846
+ owner: 'marian2js',
847
+ repository: 'trading-skills',
848
+ status: 'watchlist',
849
+ lastCommit: '2026-03-16',
850
+ reviewBy: '2026-11-06',
851
+ tags: ['trade-discipline', 'education', 'portfolio'],
852
+ riskNote: {
853
+ zh: '冷启动实验;上游自 2026-03-16 起无提交,启用前请自行复核来源。胜率、期望值这类数字是对已有日志的描述,不证明可持续的优势,也不构成投资建议。',
854
+ en: 'Cold-start experiment; upstream has been quiet since 2026-03-16, so review the sources before use. Win rate and expectancy describe the log you already have: they prove no durable edge and are not investment advice.',
855
+ },
856
+ },
857
+ {
858
+ key: 'postTradeReview',
859
+ name: 'post-trade-review',
860
+ label: { zh: '交易复盘', en: 'Post-Trade Review' },
861
+ description: {
862
+ zh: '按论点、setup、执行、守规与结果几条线复盘一笔已经平掉的交易,避免用后视镜编造教训。',
863
+ en: 'Reviews a closed trade across thesis, setup, execution, adherence and outcome without rewriting it with hindsight.',
864
+ },
865
+ owner: 'marian2js',
866
+ repository: 'trading-skills',
867
+ status: 'watchlist',
868
+ lastCommit: '2026-03-16',
869
+ reviewBy: '2026-11-06',
870
+ tags: ['trade-discipline', 'education'],
871
+ riskNote: {
872
+ zh: '冷启动实验;上游自 2026-03-16 起无提交,启用前请自行复核来源。复盘得出的"下次要改的规则"属于过程推演,本插件不据它替使用者调整持仓或下单。',
873
+ en: 'Cold-start experiment; upstream has been quiet since 2026-03-16, so review the sources before use. The rule changes it suggests are process exercises: this plugin adjusts no holdings and places no orders on them.',
874
+ },
875
+ },
680
876
  ])
681
877
 
682
878
  export const SELECTED_SKILL_TAG_LABELS = Object.freeze({
@@ -696,11 +892,13 @@ export const SELECTED_SKILL_TAG_LABELS = Object.freeze({
696
892
  monitoring: '监控',
697
893
  orders: '订单',
698
894
  perspective: '分析视角',
895
+ 'peter-lynch': '彼得·林奇',
699
896
  portfolio: '组合与仓位',
700
897
  risk: '风险',
701
898
  strategy: '战略',
702
899
  tax: '税务',
703
900
  technicals: '技术面',
901
+ 'trade-discipline': '交易纪律',
704
902
  'us-stock': '美股',
705
903
  valuation: '估值',
706
904
  verification: '证据核验',
@@ -721,11 +919,13 @@ export const SELECTED_SKILL_TAG_LABELS = Object.freeze({
721
919
  monitoring: 'Monitoring',
722
920
  orders: 'Orders',
723
921
  perspective: 'Perspective',
922
+ 'peter-lynch': 'Peter Lynch',
724
923
  portfolio: 'Portfolio',
725
924
  risk: 'Risk',
726
925
  strategy: 'Strategy',
727
926
  tax: 'Tax',
728
927
  technicals: 'Technicals',
928
+ 'trade-discipline': 'Trade discipline',
729
929
  'us-stock': 'US equity',
730
930
  valuation: 'Valuation',
731
931
  verification: 'Verification',
@@ -5,7 +5,8 @@
5
5
  - Upstream commit: `d49f1f360deac57821d5d6b3aff664dff232acc6`
6
6
  - License: MIT; see `LICENSE` copied from upstream.
7
7
  - Imported content: complete upstream repository snapshot for traceability; runtime catalog excludes `china-stock-research-orchestrator` because its orchestration conflicts with Capital's existing routing contract.
8
- - Local modifications: none to upstream files. This record and the Capital selected-skill catalog are maintained by Capital Generation.
8
+ - Packaging: a Capital-owned `.npmignore` keeps the runtime body and this record in the published npm package and drops human-only repository material — `.github/` issue and PR templates, `examples/` sample dialogues, and the upstream README (both languages) plus SKILLS / CHANGELOG / CONTRIBUTING / INSTALL / GITHUB_PUBLISHING / PUBLISH_CHECKLIST / RELEASE_ASSETS / ROADMAP notes. `skills/shared/` must ship: all six selectable modules link into it (`../shared/references/…`, `../shared/templates/…` — 15 links) for the citation standard, industry overlays and output templates. The excluded orchestrator still ships as review material; nothing here is ever executed. The complete snapshot stays committed, so `github:` installs and provenance review are unaffected.
9
+ - Local modifications: none to upstream files. The upstream `.gitignore` (it ignored only `.DS_Store`) was removed from the snapshot: vendored snapshots do not carry ignore rules into this repo (`docs/dev/selected-skills.md` §8.6), and nothing committed was hidden by it. This record and the Capital selected-skill catalog are maintained by Capital Generation.
9
10
  - Maintenance snapshot (checked 2026-10-08): latest commit 2026-03-09; no commits in the trailing 90 days; no later release was verified. See [GitHub commit history](https://github.com/spikeHongg/china-stock-research-skills/commits/main/).
10
11
  - Runtime status: `watchlist` / explicit experiment. The snapshot is retained for provenance and can be selected skill-by-skill by the user, but every toggle is off by default. The upstream orchestrator remains excluded because it conflicts with Capital's routing contract.
11
12
  - Review status: imported for comparison and user-directed experiments; not endorsed as a financial methodology. Review source quality, conflicts, omissions, and incremental value before relying on any module.
@@ -5,8 +5,9 @@
5
5
  - Upstream commit: `7235d3411601036cc79137fa0aec0d587f2c8e19`
6
6
  - License: MIT; see `LICENSE` copied from upstream.
7
7
  - Imported content: complete upstream repository snapshot, including the Buffett framework skill and its references. Upstream scripts are retained as source material and are never executed by intake or activation.
8
+ - Removed from the snapshot: the upstream ignore rules — `.gitignore` at the snapshot root (`__pycache__/`, `*.pyc`), plus the nested ones under `.tbd/` and `viz/vendor/`. Vendored snapshots do not carry ignore rules into this repo (`docs/dev/selected-skills.md` §8.6: an inherited ignore pattern can silently hide files when the snapshot is re-imported). Nothing committed was hidden by them. Note that `viz/vendor/.gitignore` used to hide two artifacts upstream fetches on demand (`elk.bundled.js`, `elkjs-license.txt` via `fetch-elk.sh`); neither exists in this repo, and `viz/` is excluded from the published package anyway.
8
9
  - Local modifications: one sentence, on the router block. Upstream wrote "Use the bundled deterministic router when a shell is available" and four `python3 scripts/framework.py …` examples; under Capital the root role has no shell (§1.6), so that conditional left a dead end with nothing to fall back to. The sentence now states the two preconditions (a shell **and** a reachable skill directory) and names the fallback: skip the router and open the `references/` file for the chosen module directly, since the router only picks which file to read. No card, workflow, or analytical text was touched; `scripts/framework.py` itself is unmodified. Recorded here per `docs/dev/selected-skills.md` §8.6, and enforced by `test/selected-skills-content.test.mjs` (a file may mention `python3 scripts/` only if it also carries the no-shell fallback). This record and the Capital selected-skill catalog are maintained by Capital Generation.
9
- - Packaging: a Capital-owned `.npmignore` beside these files excludes `images/` and `viz/` from the published npm package — 2.3 MB of upstream README artwork (the same four PNGs exist twice, in `images/` and `viz/out/`) plus the upstream visualization site; no skill body references either. The complete snapshot stays committed here, so `github:` installs and provenance review are unaffected.
10
+ - Packaging: a Capital-owned `.npmignore` beside these files keeps only the runtime skill body and this record in the published npm package. Excluded: `images/` and `viz/` (2.3 MB of README artwork — the same four PNGs exist twice — plus the upstream visualization site), `.github/` (its CI), `.tbd/` and `docs/` (upstream roadmap/development notes), and `README*.md`. No skill body references any of them. Kept on purpose: `skills/buffett-investment-framework/scripts/framework.py` and `Makefile` — this skill's own prose names the deterministic router as a methodology entry point and carries the no-shell fallback, so shipping them as review material while never executing them (intake and activation only read documents) is the honest shape; see `docs/dev/selected-skills.md` §8.6 item 4. The complete snapshot stays committed here, so `github:` installs and provenance review are unaffected.
10
11
  - Maintenance snapshot (checked 2026-10-08): latest commit 2026-07-22; no later commits observed through the review date (78 days). See [GitHub commit history](https://github.com/finterm-ai/investment-skills/commits/main/).
11
12
  - Runtime status: `experimental` / explicit experiment. The skill remains disabled until explicitly selected in Capital settings and is registered only in a Capital root Agent's own scope. Its capability tags and warning are maintained in `selected-skills/catalog.js`.
12
13
  - Review status: imported for user-directed evaluation; not endorsed by Warren Buffett, Berkshire Hathaway, or Capital Generation. Its US-centric framework must not be treated as A-share rules. Validate all financial claims against primary evidence.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Szymon Nycz
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,72 @@
1
+ # Upstream Record
2
+
3
+ - Project: Peter Lynch Research(一颗 skill、两条工作流:Quick 快筛给 SKIP / WATCHLIST / DEEP RESEARCH,Deep 出完整尽调报告)
4
+ - Repository: https://github.com/DjNero11/peter-lynch-skill
5
+ - Upstream commit: `e0eaf5830f57768cc4fb6543682ae1eb3c8d022c`(main,2026-06-28)
6
+ - 全仓只有两次提交:上一条 `4f028d6`(2026-06-23,Initial commit)。无 release、无 tag、无 CI。
7
+ - License: MIT;`LICENSE` 为上游原件(`Copyright (c) 2026 Szymon Nycz`),未改写。
8
+ frontmatter 的 `metadata.author` 是 **Szymon Nycz**,与 GitHub login `DjNero11` 不同名——
9
+ catalog 的 `owner` 用后者,因为它拼的是仓库链接。
10
+ - Imported content: 该 commit 的完整文件树(`SKILL.md` + `references/` 下 8 份附属文件 + `README.md` + `LICENSE`),
11
+ 132 KB。无脚本、无凭据读取、无出网调用、不落盘产物(`python3` / `node` / `install` 命中 0)。
12
+ - Local modifications(三类,逐条可复核;口径与理由见 `docs/dev/selected-skills.md` §8.6 的接入必查清单):
13
+ 1. **套了一层 `skills/peter-lynch-skill/`。** 上游把 `SKILL.md` 放在**仓库根**,而 provider 的
14
+ `customSkillDirs`、`test/selected-skills-content.test.mjs`、`test/packaging.test.mjs`、
15
+ `test/persona.test.mjs` 与 `capital-config` 的原文旁路五处都按 `<repo>/<skillsDir>/<name>/SKILL.md`
16
+ 反查(AGENTS.md §9.7 那一族:漂了不报错,只是"勾了那一格、技能永远不出现")。
17
+ `references/` 跟着 `SKILL.md` 一起搬,正文里的相对链接不破;`SELECTED_SKILL_SKILL_DIRS`
18
+ 因此填 `'skills'`,与前两颗同形。上游 `README.md` 那张仓库结构图随之与实际路径不符——
19
+ 它是**不进 catalog 的材料**,按"不进 catalog 的正文一律不动"原样保留。
20
+ 2. **删除上游的 `.gitignore`。** 它带 `lib/` `build/` `dist/` `tmp/` `*.log` 一类目录规则,今天在这份
21
+ 快照里挡不到东西,但会把 ignore 规则继续带进宿主仓库,并让"按 commit 重导"的快照与所钉 commit
22
+ 不一致(InvestSkill 那一轮就是三个文件被静默挡掉)。vendored 快照不把 ignore 规则带进宿主仓库。
23
+ 3. **取数口径改写**(六份文件共 124 行改动,全部落在"谁去取数"与一处评分释义上;分析结论、
24
+ 预算数字、Source Ledger 字段、`Reported/Calculated/Inference` 标注、停止规则与章节结构一字未改)。
25
+ 上游正文写给"什么工具都在手边"的宿主,与本插件的取数边界冲突:
26
+ - `SKILL.md` 开篇 `All data comes from **web search and fetched pages**` → 改为"数据来自宿主自己的
27
+ 取数通道;角色分流的宿主里把标的、字段、as-of 日期与来源档写进委派 brief 交出去"(1 处)。
28
+ - `SKILL.md` Step 3 抬头 `Using the host agent's **web search** and **page fetch** tools:` →
29
+ `Asking the host's own retrieval path …(delegate it with the brief, do not browse from here)`;
30
+ 配套把预算的计量对象改成"向通道要几次"(`2-3 searches` / `8-12 searches` → `retrieval requests`),
31
+ **数字一字未动**(2 处)。
32
+ - `references/{quick,deep}/web-research.md` 里 28 处独立 `search` 的**主语与动词**:
33
+ `Every search must fill a Source Ledger slot` / `Before adding a search after the third Quick search` /
34
+ `Do not run separate searches…` / `Use targeted external searches…` → 改成"向宿主取数通道要一份来源";
35
+ `Query Pack` 与 `Phase 2` 的 query 清单**原样保留**,只写明"每一条都是向通道要的目标,不是从这里去开的页面"。
36
+ deep 的 `fetch/read the document` 明确成"把 URL 交给宿主检索通道,PDF 由检索角色解析,用回来的正文继续"
37
+ (合计 14 处句子级改动)。
38
+ - `references/deep/system-prompt.md` 的 `… use web search results for recent strategic and competitive
39
+ context` → "use what the host's retrieval path returned…"。这是 `test/selected-skills-content.test.mjs`
40
+ 六条 FORBIDDEN 在本颗的**唯一实际命中**(1 处)。
41
+ - `SKILL.md` 失效处理 `If web search is unavailable: state the limitation and stop — do not fabricate data`
42
+ → "宿主对某个字段没有可用取数路径时:点名缺哪些字段、该字段下的分析停止";后半句 `do not fabricate data`
43
+ 原样保留。同段 `use another reputable aggregator` → `ask the channel for another reputable aggregator`(2 处)。
44
+ - `SKILL.md` 的 Required inputs 之后加一段**市场口径**说明:正文的 aggregator / SEC-EDGAR / Form 4-13F /
45
+ wash-sale 都是美股与境外上市口径,A 股会话要换成 A 股披露口径,而换口径由宿主取数通道决定,
46
+ 不由这颗 skill 自行联网去补(§8.6 第 8 条;`us-stock` 标签就是给使用者的提示)。
47
+ - `references/deep/methodology.md` §10 Final Score 加一句:X/10 衡量的是论点自洽度与结构特征,
48
+ 不预测价格或收益,也不是买卖指令(§8.6 第 7 条 / CONTRIBUTING.md §3 第 8 条)。
49
+ **没有新增 `Retrieval:` 出处档**:上游既没有这个枚举,也不把记忆列成取数途径——
50
+ 第 2 条(记忆回填)在本颗**实测零命中**(`model memory` / `training-data` / `Live data unavailable` 全无),
51
+ `system-prompt.md` 本来就把取回的东西限定成"来自研究简报"。不为了套 InvestSkill 的改法新造上游没有的模板字段。
52
+ 复核方法:`git clone` 所钉 commit 后 `diff -r`,差异只应包含以上三类;
53
+ `test/selected-skills-content.test.mjs` 扫正文**结果**、本文件记**理由**,两边任一漂回去都会红。
54
+ - Packaging: 这颗带一份 `.npmignore`,只挡上游 `README.md`(13 KB,写给 GitHub 访客的仓库说明)——
55
+ 其余全是运行时正文与溯源,正文一处也没引用那份 README。包体积增量约 107 KB。
56
+ `package.json` 的 `files` 已逐仓库登记 `selected-skills/peter-lynch-skill`,
57
+ `test/packaging.test.mjs` 从 catalog 反查发布清单里的真实 `SKILL.md` / `LICENSE` / `UPSTREAM.md`,
58
+ 并反查 `.npmignore` 的每条规则(目录与文件名两类)确实生效。
59
+ - Catalog 收录判断:`SKILL.md` 内部的 Quick / Deep 二选一**不算**"会接管会话路由的编排 skill"——
60
+ 它不跨 Agent、不改本插件的角色分流,只在本颗的两条工作流之间选择(`china-stock-research-orchestrator`
61
+ 与 InvestSkill 的 `full-report` 是另一类东西)。也不触发 §7(报告交付链路已删除)与 §6.1(出图只走
62
+ `render_chart`):这颗的输出是**最终答复里的 markdown 报告**,不落文件、不出图。
63
+ - Maintenance snapshot (checked 2026-10-11): 全仓两次提交,最后一次 2026-06-28,之后 105 天无提交;
64
+ 单人仓库、无 issue 响应记录。因此标 `watchlist`——与 `china-stock-research-skills` 同一口径
65
+ (内容可用、维护薄,启用前请使用者自行复核来源),而不是内容缺陷。
66
+ See [GitHub commit history](https://github.com/DjNero11/peter-lynch-skill/commits/main/)。
67
+ - Runtime status: `watchlist` / 默认关闭的显式实验。只有使用者在「插件」→ Capital Generation →「精选 Skills」
68
+ 里亲手打开,它才对**之后新建**的 Capital 根 Agent 可见;子 Agent 不继承,上游附属文件从不执行。
69
+ 能力标签(含本颗带来的新标签 `peter-lynch`)与 `riskNote` 维护在 `selected-skills/catalog.js`。
70
+ - Review status: 2026-11-06 复查上游、许可证与维护状态。正文是 Lynch 三部著作(*One Up on Wall Street*、
71
+ *Beating the Street*、*Learn to Earn*)方法论的**二手转写**,与 Lynch 本人、Fidelity 或 Capital Generation
72
+ 均无关联,不构成背书;美股口径不得直接当作 A 股规则,所有金融主张须回到原始证据核验。
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: peter-lynch-skill
3
+ description: >-
4
+ Peter Lynch-style stock research from a ticker or company name: quick
5
+ screening or deep due diligence with linked web citations. Use when the user
6
+ asks for quick research, screening, an initial look, deep research, due
7
+ diligence, full analysis, valuation context, an attractiveness score, or a
8
+ SKIP / WATCHLIST / DEEP RESEARCH decision.
9
+ license: MIT
10
+ metadata:
11
+ author: Szymon Nycz
12
+ version: "1.0"
13
+ ---
14
+
15
+ # Peter Lynch Research
16
+
17
+ One skill, two workflows. Answers either:
18
+
19
+ - **Quick:** Is this company worth 2–5 hours of deeper research? (~450 words, SKIP / WATCHLIST / DEEP RESEARCH)
20
+ - **Deep:** Full due-diligence report (up to 3000 words, attractiveness score X / 10 — how consistent and well-supported the thesis reads, not a forecast of performance)
21
+
22
+ All data comes from **the host's own retrieval path** — no API keys, no bundled scripts, no user-provided PDFs. In a host that splits roles, gathering it is not this skill's job: write the exact brief (ticker or company, the fields needed, the as-of date, the source tier) and hand it to the host's retrieval channel, then work only from what comes back. Time-sensitive market data must be freshly gathered and dated. Every retrieved claim in the final report must be cited with a link.
23
+
24
+ Use different source depth by workflow:
25
+
26
+ - **Quick:** aggregator-only screening. Use reputable financial-data aggregator pages by default; do not open annual report PDFs, full 10-K / 10-Q / 20-F filings, SEC filing detail pages, company quarterly reports, or long investor-relations documents.
27
+ - **Deep:** official-source due diligence. Use annual reports, filings, company results, and official investor materials as the factual base; use aggregators mainly for valuation and market-data gaps.
28
+
29
+ Operate with strict evidence-budget discipline. The goal is high-quality research from the smallest reliable source set, not exhaustive browsing. Do not narrate research progress or intermediate retrieval reasoning in the final answer.
30
+
31
+ ## Routing
32
+
33
+ Determine the workflow from the user's message:
34
+
35
+ | Trigger keywords | Workflow |
36
+ |------------------|----------|
37
+ | quick research, screening, filter, initial look, worth researching | **Quick** |
38
+ | deep research, due diligence, full analysis, attractiveness score, score / 10 | **Deep** |
39
+
40
+ - If intent is **ambiguous**, ask one question: *"Quick screening (~450 words) or deep due diligence (~3000 words)?"*
41
+ - If still unclear after one exchange, default to **Quick**.
42
+
43
+ ## Required inputs
44
+
45
+ - `company_symbol` or `company_name` — ticker (e.g. `MSFT`, `ASML.AS`, `VOD.L`) or company name. If the user gives only a brand, company name, or ambiguous ticker, resolve the traded entity before analysis. For Quick, use reputable aggregator profile / quote pages. For Deep, use official, exchange, or regulator sources.
46
+ - `exchange` or `country` — optional hint for global tickers
47
+
48
+ If neither a company nor ticker can be inferred from the request, ask one concise clarification question.
49
+
50
+ The source tiers below (aggregator profile pages, SEC / regulator filings, annual reports) are US and overseas-listing conventions. In an A-share session the same analysis must be asked for in A-share terms instead — disclosure platforms, no Form 4 / 13F, no wash-sale rules — and that is decided by the host's retrieval channel, not by this skill.
51
+
52
+ Do **not** ask the user for an annual report PDF or API keys.
53
+
54
+ ## Workflow overview
55
+
56
+ Copy this checklist and track progress:
57
+
58
+ ```
59
+ Task Progress:
60
+ - [ ] Step 1: Route (quick or deep)
61
+ - [ ] Step 2: Read workflow-specific web research guide
62
+ - [ ] Step 3: Gather data and compile structured research brief
63
+ - [ ] Step 4: Read workflow prompts
64
+ - [ ] Step 5: Write report from the brief only
65
+ - [ ] Step 6: Append disclaimer
66
+ ```
67
+
68
+ ### Step 1: Route
69
+
70
+ Select **Quick** or **Deep** using the routing table above.
71
+
72
+ ### Step 2: Read workflow-specific web research guide
73
+
74
+ Read only the workflow-specific web guide:
75
+
76
+ - **Quick:** [references/quick/web-research.md](references/quick/web-research.md)
77
+ - **Deep:** [references/deep/web-research.md](references/deep/web-research.md)
78
+
79
+ Read [references/filing-rules.md](references/filing-rules.md) only when regulator/XBRL data, ADRs, secondary listings, specialized financial companies, or accounting-basis issues matter. Do not read it for normal Quick Research unless the Quick web guide specifically triggers it.
80
+
81
+ ### Step 3: Gather data and compile research brief
82
+
83
+ Asking the host's own retrieval path for the data (in a host that splits roles: delegate it with the brief, do not browse from here):
84
+
85
+ 1. Follow the **workflow-specific** source plan, retrieval brief, stopping rule, and research brief template in `references/quick/web-research.md` or `references/deep/web-research.md`.
86
+ 2. Respect the workflow-specific default budgets unless an override in that workflow guide is triggered — the budget is how many sources you ask the channel for, not how many you go and open yourself:
87
+ - **Quick:** practical default of 1-3 reputable aggregator sources, 2-3 retrieval queries, and 2-3 page fetches; expand only when another aggregator is needed to complete the existing Quick methodology.
88
+ - **Deep:** 5-7 sources, 6-8 retrieval queries, 7-10 page/document fetches, with the default source set kept as small as the report can support.
89
+ 3. For **Quick**: gather the minimum viable evidence needed for a responsible SKIP / WATCHLIST / DEEP RESEARCH decision, then stop.
90
+ 4. For **Deep**: follow the annual report discovery procedure in `references/deep/web-research.md` — ask for the latest full annual report on the company's investor relations site (HTML or PDF); regulator filings are the fallback.
91
+ 5. Do not ask for a separate retrieval per fiscal year for normal historical metrics. For Quick, use aggregator tables. For Deep, use the annual report, 10-K / 20-F, regulator filing, or regulator facts feed as the historical base.
92
+ 6. Do not print research narration, retrieval play-by-play, or the full research brief unless the user asks for it.
93
+ 7. Capture period, currency, units, date gathered, and source ID(s) for every important number and claim. Each source ID must resolve to a URL in the Source Ledger. Filing labels may be included, but they do not replace a ledger URL.
94
+ 8. Do **not** invent financial data.
95
+
96
+ ### Step 4: Read workflow prompts
97
+
98
+ **Quick path** — read both before writing:
99
+
100
+ - [references/quick/system-prompt.md](references/quick/system-prompt.md)
101
+ - [references/quick/methodology.md](references/quick/methodology.md)
102
+
103
+ **Deep path** — read both before writing:
104
+
105
+ - [references/deep/system-prompt.md](references/deep/system-prompt.md)
106
+ - [references/deep/methodology.md](references/deep/methodology.md)
107
+
108
+ ### Step 5: Write report
109
+
110
+ Use the research brief as the only factual context for the report. Do not include the full research brief in the final report unless the user asks for it.
111
+
112
+ Every final report must cite sources with links:
113
+
114
+ - Any company description, financial number, valuation metric, market data point, management claim, industry claim, competitor claim, ownership claim, or news/update claim needs a source.
115
+ - Use source lines directly below the relevant bullet or paragraph: `source: [Source name](https://...)`.
116
+ - Multiple sources may be separated with semicolons.
117
+ - Do not cite a source that is not in the research brief Source Ledger.
118
+ - Expand any internal source IDs from the brief into full linked `source:` lines in the final report.
119
+ - Source lines do not count toward Quick or Deep word limits.
120
+
121
+ Internally prefix the analysis context with:
122
+
123
+ ```
124
+ Data gathered: YYYY-MM-DD
125
+
126
+ ## Research brief
127
+
128
+ {full research brief markdown}
129
+ ```
130
+
131
+ ### Step 6: Append disclaimer
132
+
133
+ Read [references/disclaimer.md](references/disclaimer.md) only when the report body is ready. After the report body, add a horizontal rule and append the full contents of the disclaimer.
134
+
135
+ ## Failure handling
136
+
137
+ - If the host's retrieval path returns nothing for a field you need: name the missing fields and stop the analysis that depends on them — do not fabricate data.
138
+ - If a ticker cannot be resolved: inform the user clearly.
139
+ - If the annual report cannot be found after all fallbacks in `references/deep/web-research.md`: note the gap in the research brief and proceed using other verified sources — do **not** ask the user for a PDF.
140
+ - If a specific metric is unverified: say you do not know; do not estimate or invent numbers.
141
+ - If retrieved claims lack source ID(s) that resolve to Source Ledger URL(s): do not include them in the report.
142
+ - If live market data cannot be verified from the current source: for Quick, ask the channel for another reputable aggregator; for Deep, use the workflow's market-data fallback rules. Do not use stale or unsourced values.