@v587d/capital-generation 2.7.2 → 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 (113) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +7 -6
  3. package/THIRD_PARTY_NOTICES.md +65 -26
  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 +2 -1
  13. package/selected-skills/InvestSkill/UPSTREAM.md +9 -0
  14. package/selected-skills/catalog.js +177 -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/UPSTREAM.md +4 -3
  18. package/selected-skills/trading-skills/LICENSE +21 -0
  19. package/selected-skills/trading-skills/UPSTREAM.md +111 -0
  20. package/selected-skills/trading-skills/skills/catalyst-map/SKILL.md +119 -0
  21. package/selected-skills/trading-skills/skills/catalyst-map/references/catalyst-framework.md +68 -0
  22. package/selected-skills/trading-skills/skills/earnings-preview/SKILL.md +124 -0
  23. package/selected-skills/trading-skills/skills/earnings-preview/references/data-providers.md +26 -0
  24. package/selected-skills/trading-skills/skills/earnings-preview/references/providers/fmp.md +49 -0
  25. package/selected-skills/trading-skills/skills/earnings-preview/references/providers/polygon.md +45 -0
  26. package/selected-skills/trading-skills/skills/earnings-preview/references/providers/tradingeconomics.md +49 -0
  27. package/selected-skills/trading-skills/skills/earnings-preview/references/relevance-ranking.md +24 -0
  28. package/selected-skills/trading-skills/skills/earnings-trade-prep/SKILL.md +134 -0
  29. package/selected-skills/trading-skills/skills/earnings-trade-prep/references/workflow-framework.md +65 -0
  30. package/selected-skills/trading-skills/skills/evidence-gap-check/SKILL.md +120 -0
  31. package/selected-skills/trading-skills/skills/evidence-gap-check/references/gap-framework.md +66 -0
  32. package/selected-skills/trading-skills/skills/execution-plan-check/SKILL.md +121 -0
  33. package/selected-skills/trading-skills/skills/execution-plan-check/references/execution-checklist.md +70 -0
  34. package/selected-skills/trading-skills/skills/journal-pattern-analyzer/SKILL.md +120 -0
  35. package/selected-skills/trading-skills/skills/journal-pattern-analyzer/references/calculation-helpers.md +16 -0
  36. package/selected-skills/trading-skills/skills/journal-pattern-analyzer/references/pattern-framework.md +74 -0
  37. package/selected-skills/trading-skills/skills/macro-event-analysis/SKILL.md +122 -0
  38. package/selected-skills/trading-skills/skills/macro-event-analysis/references/data-providers.md +23 -0
  39. package/selected-skills/trading-skills/skills/macro-event-analysis/references/interpretation-guide.md +22 -0
  40. package/selected-skills/trading-skills/skills/macro-event-analysis/references/providers/fmp.md +28 -0
  41. package/selected-skills/trading-skills/skills/macro-event-analysis/references/providers/tradingeconomics.md +40 -0
  42. package/selected-skills/trading-skills/skills/market-regime-analysis/SKILL.md +117 -0
  43. package/selected-skills/trading-skills/skills/market-regime-analysis/references/data-providers.md +26 -0
  44. package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/fmp.md +46 -0
  45. package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/polygon.md +36 -0
  46. package/selected-skills/trading-skills/skills/market-regime-analysis/references/providers/tradingeconomics.md +46 -0
  47. package/selected-skills/trading-skills/skills/market-regime-analysis/references/regime-framework.md +23 -0
  48. package/selected-skills/trading-skills/skills/portfolio-concentration/SKILL.md +119 -0
  49. package/selected-skills/trading-skills/skills/portfolio-concentration/references/concentration-framework.md +72 -0
  50. package/selected-skills/trading-skills/skills/portfolio-risk-review/SKILL.md +126 -0
  51. package/selected-skills/trading-skills/skills/portfolio-risk-review/references/workflow-framework.md +57 -0
  52. package/selected-skills/trading-skills/skills/position-management/SKILL.md +120 -0
  53. package/selected-skills/trading-skills/skills/position-management/references/management-framework.md +70 -0
  54. package/selected-skills/trading-skills/skills/position-sizing/SKILL.md +83 -0
  55. package/selected-skills/trading-skills/skills/position-sizing/assets/trade-plan-template.md +15 -0
  56. package/selected-skills/trading-skills/skills/position-sizing/references/calculation-helpers.md +13 -0
  57. package/selected-skills/trading-skills/skills/position-sizing/references/methodology.md +28 -0
  58. package/selected-skills/trading-skills/skills/post-trade-debrief/SKILL.md +99 -0
  59. package/selected-skills/trading-skills/skills/post-trade-debrief/references/workflow-framework.md +51 -0
  60. package/selected-skills/trading-skills/skills/post-trade-review/SKILL.md +82 -0
  61. package/selected-skills/trading-skills/skills/post-trade-review/references/review-rubric.md +34 -0
  62. package/selected-skills/trading-skills/skills/pre-trade-check/SKILL.md +136 -0
  63. package/selected-skills/trading-skills/skills/pre-trade-check/references/workflow-framework.md +61 -0
  64. package/selected-skills/trading-skills/skills/risk-reward-sanity-check/SKILL.md +81 -0
  65. package/selected-skills/trading-skills/skills/risk-reward-sanity-check/references/calculation-helpers.md +14 -0
  66. package/selected-skills/trading-skills/skills/risk-reward-sanity-check/references/failure-modes.md +9 -0
  67. package/selected-skills/trading-skills/skills/thesis-validation/SKILL.md +123 -0
  68. package/selected-skills/trading-skills/skills/thesis-validation/references/thesis-checklist.md +56 -0
  69. package/selected-skills/trading-skills/skills/watchlist-review/SKILL.md +119 -0
  70. package/selected-skills/trading-skills/skills/watchlist-review/references/review-framework.md +57 -0
  71. package/selected-skills/InvestSkill/ADDING-NEW-SKILLS.md +0 -546
  72. package/selected-skills/InvestSkill/CHANGELOG.md +0 -373
  73. package/selected-skills/InvestSkill/CI-CD-GUIDE.md +0 -432
  74. package/selected-skills/InvestSkill/CLAUDE.md +0 -148
  75. package/selected-skills/InvestSkill/CONTRIBUTING.md +0 -291
  76. package/selected-skills/InvestSkill/DEPLOYMENTS.md +0 -321
  77. package/selected-skills/InvestSkill/FAQ.md +0 -509
  78. package/selected-skills/InvestSkill/GEMINI.md +0 -419
  79. package/selected-skills/InvestSkill/PLATFORM-COMPATIBILITY.md +0 -529
  80. package/selected-skills/InvestSkill/README-claude-code.md +0 -435
  81. package/selected-skills/InvestSkill/README-cursor.md +0 -475
  82. package/selected-skills/InvestSkill/README-gemini.md +0 -532
  83. package/selected-skills/InvestSkill/README-ollama.md +0 -106
  84. package/selected-skills/InvestSkill/README-zh-TW.md +0 -461
  85. package/selected-skills/InvestSkill/README.md +0 -311
  86. package/selected-skills/InvestSkill/RELEASE-QUICK-REFERENCE.md +0 -230
  87. package/selected-skills/InvestSkill/RELEASE_NOTES.md +0 -121
  88. package/selected-skills/InvestSkill/SECURITY.md +0 -232
  89. package/selected-skills/InvestSkill/TODO.md +0 -28
  90. package/selected-skills/InvestSkill/package.json +0 -64
  91. package/selected-skills/InvestSkill/plugins/us-stock-analysis/README.md +0 -119
  92. package/selected-skills/china-stock-research-skills/.github/ISSUE_TEMPLATE/bug_report.md +0 -35
  93. package/selected-skills/china-stock-research-skills/.github/ISSUE_TEMPLATE/skill_request.md +0 -28
  94. package/selected-skills/china-stock-research-skills/.github/PULL_REQUEST_TEMPLATE.md +0 -15
  95. package/selected-skills/china-stock-research-skills/CHANGELOG.md +0 -59
  96. package/selected-skills/china-stock-research-skills/CONTRIBUTING.md +0 -121
  97. package/selected-skills/china-stock-research-skills/GITHUB_PUBLISHING.md +0 -259
  98. package/selected-skills/china-stock-research-skills/INSTALL.md +0 -151
  99. package/selected-skills/china-stock-research-skills/PUBLISH_CHECKLIST.md +0 -165
  100. package/selected-skills/china-stock-research-skills/README.en.md +0 -209
  101. package/selected-skills/china-stock-research-skills/README.md +0 -209
  102. package/selected-skills/china-stock-research-skills/RELEASE_ASSETS.md +0 -222
  103. package/selected-skills/china-stock-research-skills/ROADMAP.md +0 -45
  104. package/selected-skills/china-stock-research-skills/SKILLS.md +0 -85
  105. package/selected-skills/china-stock-research-skills/examples/full-report-flow.md +0 -20
  106. package/selected-skills/china-stock-research-skills/examples/module-select-cases.md +0 -26
  107. package/selected-skills/china-stock-research-skills/examples/quickstart-prompts.md +0 -25
  108. package/selected-skills/investment-skills/.github/workflows/validate.yml +0 -25
  109. package/selected-skills/investment-skills/.tbd/config.yml +0 -107
  110. package/selected-skills/investment-skills/README.md +0 -253
  111. package/selected-skills/investment-skills/docs/development.md +0 -37
  112. package/selected-skills/investment-skills/docs/roadmap.md +0 -25
  113. package/selected-skills/peter-lynch-skill/README.md +0 -305
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@v587d/capital-config",
3
- "version": "2.7.2",
3
+ "version": "2.7.3",
4
4
  "description": "Capital 模式的取数凭据与偏好配置行:卡片坐在 @v587d/capital-generation 插件主页的「配置」段,点这一行本身没有表单。",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@v587d/capital-watchlist",
3
- "version": "2.7.2",
3
+ "version": "2.7.3",
4
4
  "description": "Capital 模式的用户自选股(宿主级清单 + Fuyao 报价快照 + /capital-watchlist 路由 + 输入框菜单弹窗):由 @v587d/capital-generation 随包携带并作为 host 平面行挂载。",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@v587d/capital-charts",
3
- "version": "2.7.2",
3
+ "version": "2.7.3",
4
4
  "description": "Capital 模式的图表前端组件(浏览器半边 + 序列旁路路由):由 @v587d/capital-generation 随包携带并作为 host 平面行挂载。",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -6,7 +6,7 @@
6
6
  * between validation and connect. Closing that window would require a custom
7
7
  * dispatcher; this module keeps the same explicit trade-off as dsh-search-first.
8
8
  */
9
- export declare const LOCAL_FETCH_CLIENT_VERSION = "2.7.2";
9
+ export declare const LOCAL_FETCH_CLIENT_VERSION = "2.7.3";
10
10
  export declare const LOCAL_FETCH_MAX_URL_LENGTH = 2048;
11
11
  export type LocalFetchErrorCode = 'ABORTED' | 'TIMEOUT' | 'INVALID_URL' | 'BLOCKED_URL' | 'DNS' | 'REDIRECT' | 'HTTP' | 'TOO_LARGE' | 'UNSUPPORTED_CONTENT_TYPE';
12
12
  export declare class LocalFetchError extends Error {
@@ -7,7 +7,7 @@
7
7
  * dispatcher; this module keeps the same explicit trade-off as dsh-search-first.
8
8
  */
9
9
  import { htmlToMarkdown, stripInvisibleText } from './html-markdown.js';
10
- export const LOCAL_FETCH_CLIENT_VERSION = '2.7.2';
10
+ export const LOCAL_FETCH_CLIENT_VERSION = '2.7.3';
11
11
  export const LOCAL_FETCH_MAX_URL_LENGTH = 2048;
12
12
  export class LocalFetchError extends Error {
13
13
  code;
@@ -52,7 +52,7 @@ export interface WindCallResult {
52
52
  * `test/chart-composition.test.mjs` 守着(会因漂移而失败),这里原本是写死的第二处,
53
53
  * 一次发版就得记得改两遍。所以本常量由测试一并核对(见 `test/wind-client.test.mjs`)。
54
54
  */
55
- export declare const WIND_CLIENT_VERSION = "2.7.2";
55
+ export declare const WIND_CLIENT_VERSION = "2.7.3";
56
56
  export interface WindClient {
57
57
  callTool(toolName: string, args: Record<string, unknown>, signal?: AbortSignal): Promise<WindCallResult>;
58
58
  }
@@ -35,7 +35,7 @@ export const WIND_SERVER_ENDPOINTS = {
35
35
  * `test/chart-composition.test.mjs` 守着(会因漂移而失败),这里原本是写死的第二处,
36
36
  * 一次发版就得记得改两遍。所以本常量由测试一并核对(见 `test/wind-client.test.mjs`)。
37
37
  */
38
- export const WIND_CLIENT_VERSION = '2.7.2';
38
+ export const WIND_CLIENT_VERSION = '2.7.3';
39
39
  function errorText(error) {
40
40
  return error instanceof Error ? error.message : String(error);
41
41
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@v587d/capital-generation",
3
- "version": "2.7.2",
3
+ "version": "2.7.3",
4
4
  "description": "Capital Generation:面向中国散户的 AI 投资助手插件(Capital mode Agent Preset)",
5
5
  "icon": "assets/cg-icon.png",
6
6
  "author": "v587d",
@@ -38,6 +38,7 @@
38
38
  "selected-skills/china-stock-research-skills",
39
39
  "selected-skills/InvestSkill",
40
40
  "selected-skills/peter-lynch-skill",
41
+ "selected-skills/trading-skills",
41
42
  "cordis.patch.yml",
42
43
  "assets/cg-icon.png",
43
44
  "README.md",
@@ -10,6 +10,15 @@
10
10
  - Imported content: 该 commit 的完整仓库快照,只移除上游自己的 `.gitignore`(见下)。
11
11
  34 颗 skill 在 `plugins/us-stock-analysis/skills/<name>/SKILL.md`;`scripts/`、`prompts/`、
12
12
  `site/`、`qa/`、`doc/`、`data/`、`.github/` 作为可审查材料保留,intake 与 activation 都不执行它们。
13
+ - Packaging: 这颗自己的 `.npmignore` 是排除口径的唯一声明处(`test/packaging.test.mjs` 逐条反查,
14
+ 目录规则与文件规则都问)。挡掉的是上游静态站 `site/`(1.7 MB)、与 skill 正文同源的提示词副本
15
+ `prompts/`(772 KB)、`scripts/`、`qa/`、`doc/`、`data/`、`.github/`、`.cursor/`、`.claude-plugin/`,
16
+ 以及只有人类读者会用的仓库文档:`README*.md` 六个语言/平台变体(含 `plugins/us-stock-analysis/README.md`)、
17
+ `CLAUDE.md`、`GEMINI.md`、`ADDING-NEW-SKILLS.md`、`CI-CD-GUIDE.md`、`CONTRIBUTING.md`、`DEPLOYMENTS.md`、
18
+ `FAQ.md`、`PLATFORM-COMPATIBILITY.md`、`RELEASE_NOTES.md`、`RELEASE-QUICK-REFERENCE.md`、`SECURITY.md`、
19
+ `TODO.md` 与它自己的 `package.json`。根级 `install.sh` 照旧随包保留(本插件从不执行它)。
20
+ 不进可选清单的六颗 skill 也照旧随包,作为可审查材料。全量快照完整住在 git,
21
+ `github:` 安装与"当时是哪个 commit"的复核都不受影响。
13
22
  - Local modifications(三类,逐条可复核;口径与理由见 `docs/dev/selected-skills.md` §8.6 的接入必查清单):
14
23
  1. **34 颗 `SKILL.md` 的 frontmatter 第一键补 `name: <目录名>`。** DSH filesystem provider 要求
15
24
  frontmatter 同时有 `name` 与 `description`,缺 `name` 的文件是**静默跳过**(只 warn)——原样收录
@@ -8,6 +8,10 @@ export const SELECTED_SKILL_SKILL_DIRS = Object.freeze({
8
8
  InvestSkill: 'plugins/us-stock-analysis/skills',
9
9
  // 上游把 SKILL.md 放在仓库根,快照因此套了一层 skills/<name>/(理由见该快照的 UPSTREAM.md)。
10
10
  'peter-lynch-skill': 'skills',
11
+ // 上游把 skill 按主题分了两层(skills/<domain>/<name>/),provider 只枚举 skills 根的直接子目录,
12
+ // 指上去等于发现 0 颗:快照因此平铺掉 <domain>/ 这一层(每颗的 references/、assets/ 跟着走,
13
+ // 正文链接都在自己目录内,不破)。理由与逐颗原分组记在该快照的 UPSTREAM.md。
14
+ 'trading-skills': 'skills',
11
15
  })
12
16
 
13
17
  // Selected-skill metadata owned by Capital Generation. Upstream snapshots remain unchanged.
@@ -698,6 +702,177 @@ export const SELECTED_SKILL_CATALOG = Object.freeze([
698
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.',
699
703
  },
700
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
+ },
701
876
  ])
702
877
 
703
878
  export const SELECTED_SKILL_TAG_LABELS = Object.freeze({
@@ -723,6 +898,7 @@ export const SELECTED_SKILL_TAG_LABELS = Object.freeze({
723
898
  strategy: '战略',
724
899
  tax: '税务',
725
900
  technicals: '技术面',
901
+ 'trade-discipline': '交易纪律',
726
902
  'us-stock': '美股',
727
903
  valuation: '估值',
728
904
  verification: '证据核验',
@@ -749,6 +925,7 @@ export const SELECTED_SKILL_TAG_LABELS = Object.freeze({
749
925
  strategy: 'Strategy',
750
926
  tax: 'Tax',
751
927
  technicals: 'Technicals',
928
+ 'trade-discipline': 'Trade discipline',
752
929
  'us-stock': 'US equity',
753
930
  valuation: 'Valuation',
754
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.
@@ -51,10 +51,11 @@
51
51
  `system-prompt.md` 本来就把取回的东西限定成"来自研究简报"。不为了套 InvestSkill 的改法新造上游没有的模板字段。
52
52
  复核方法:`git clone` 所钉 commit 后 `diff -r`,差异只应包含以上三类;
53
53
  `test/selected-skills-content.test.mjs` 扫正文**结果**、本文件记**理由**,两边任一漂回去都会红。
54
- - Packaging: 这颗**不带 `.npmignore`**——除 `README.md`(13 KB)之外全是运行时正文与溯源,包体积增量约 120 KB,
55
- 没有需要挡的成图、静态站或脚本目录(`china-stock-research-skills` 同样没挡)。
54
+ - Packaging: 这颗带一份 `.npmignore`,只挡上游 `README.md`(13 KB,写给 GitHub 访客的仓库说明)——
55
+ 其余全是运行时正文与溯源,正文一处也没引用那份 README。包体积增量约 107 KB。
56
56
  `package.json` 的 `files` 已逐仓库登记 `selected-skills/peter-lynch-skill`,
57
- `test/packaging.test.mjs` 从 catalog 反查发布清单里的真实 `SKILL.md` / `LICENSE` / `UPSTREAM.md`。
57
+ `test/packaging.test.mjs` 从 catalog 反查发布清单里的真实 `SKILL.md` / `LICENSE` / `UPSTREAM.md`,
58
+ 并反查 `.npmignore` 的每条规则(目录与文件名两类)确实生效。
58
59
  - Catalog 收录判断:`SKILL.md` 内部的 Quick / Deep 二选一**不算**"会接管会话路由的编排 skill"——
59
60
  它不跨 Agent、不改本插件的角色分流,只在本颗的两条工作流之间选择(`china-stock-research-orchestrator`
60
61
  与 InvestSkill 的 `full-report` 是另一类东西)。也不触发 §7(报告交付链路已删除)与 §6.1(出图只走
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026
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,111 @@
1
+ # Upstream Record
2
+
3
+ - Project: Trading Skills —— 19 颗讲交易过程纪律的 skill:下单前的检查(催化剂排布、自选清单分诊、证据缺口、
4
+ 论点压力测试、盈亏比结构、执行计划可操作性、组合集中度)与下单后的复盘学习(交易日志模式、单笔复盘),
5
+ 外加 4 颗把它们串起来的 workflow、一颗仓位计算与一颗券商 API 执行面。
6
+ - Repository: https://github.com/marian2js/trading-skills
7
+ - Upstream commit: `f1ae7d481154b49192681187cb08d39d7e2d4524`(main,2026-03-16,"Run skill-doctor and improve skill triggers")
8
+ - 全仓 31 次提交,全部落在 2026-03-06 至 2026-03-16 这十天里。上游版本文件 `VERSION` = `0.1.0-rc.1`,无 release、无 tag。
9
+ - License: MIT;`LICENSE` 为上游原件、未改写。**注意其 `Copyright (c) 2026` 一行没有署名**(上游就是这么写的),
10
+ 署名按仓库 owner 与 commit author 记为 `marian2js`;catalog 的 `owner` 用同一个值拼仓库链接。
11
+ - Imported content: 该 commit 的完整文件树(`skills/` 下 19 颗 skill + 共享 python 模块 + 仓库级材料),55 个文件 / 约 460 KB。
12
+ 上游带 `.gitignore`(`__pycache__/`、`.env`、`.venv/` 等)——见下面的本地改动 2。
13
+
14
+ - Local modifications(三类,逐条可复核;口径与理由见 `docs/dev/selected-skills.md` §8.6 的接入必查清单):
15
+
16
+ 1. **平铺掉 `<domain>/` 一层。** 上游把 skill 按主题分成两层:`skills/<domain>/<name>/SKILL.md`
17
+ (`idea-discovery`、`market-context`、`position-oversight`、`review-learning`、`thesis-validation`、
18
+ `trade-construction`、`live-trade`、`workflows`)。DSH filesystem provider 只枚举 skills 根的**直接子项**,
19
+ 指 `skills` 等于发现 0 颗;而 provider 与 `test/selected-skills-content.test.mjs`、`test/packaging.test.mjs`、
20
+ `test/persona.test.mjs`、`capital-config` 原文旁路五处都按 `<repo>/<skillsDir>/<name>/SKILL.md` 反查
21
+ (AGENTS.md §9.7 那一族:漂了不报错,只是"勾了那一格、技能永远不出现")。所以快照里是
22
+ `skills/<name>/…`,`SELECTED_SKILL_SKILL_DIRS` 填 `'skills'`。
23
+ 每颗 skill 的 markdown 链接**只指向自己目录内**的 `references/…` 与 `assets/…`(逐颗核过,无 `../`、无跨目录链接),
24
+ 平铺后一条不破。原分组记在这里供核对:
25
+ `idea-discovery` → catalyst-map、watchlist-review;`market-context` → earnings-preview、macro-event-analysis、
26
+ market-regime-analysis;`position-oversight` → position-management;`review-learning` → journal-pattern-analyzer、
27
+ post-trade-review;`thesis-validation` → evidence-gap-check、thesis-validation;`trade-construction` →
28
+ execution-plan-check、portfolio-concentration、position-sizing、risk-reward-sanity-check;`live-trade` → etoro;
29
+ `workflows` → earnings-trade-prep、portfolio-risk-review、post-trade-debrief、pre-trade-check。
30
+ 随之变旧的是上游 `catalog.json` 里的 `path` / `docs_path` 字段与 `docs/examples/` 的路径口径——
31
+ 两者都不进 catalog、也不进发布包(见 Packaging),按"不进 catalog 的正文一律不动"原样保留。
32
+ 2. **删除上游的 `.gitignore`。** 被排除的 ignore 规则会在本仓继续生效,并把"按 commit 重导"的快照
33
+ 与所钉 commit 弄成两种样子(InvestSkill 那一轮就是三个文件被静默挡掉)。vendored 快照不把 ignore 规则带进宿主仓库。
34
+ 3. **取数与执行面口径改写**:8 份 `SKILL.md` + 2 份 `references/calculation-helpers.md`,
35
+ 共 17 处句子级改动(+34 / −13 行)。分析结论、判定档位词汇(`must-watch` / `fragile` / `too concentrated` 一类)、
36
+ 输入清单、输出顺序与 `references/` 的框架、阈值文档一字未改。
37
+ 本颗**没有** `web search` 与记忆回填那一族(`web search` 零命中;每颗都写"缺什么就点名缺、别编",
38
+ `example-mode` 指使用者自带的示例数据并要求标注,不是逃生口),换的是另外三种形态:
39
+ - **谁去取数(6 处)**:`catalyst-map`、`watchlist-review`、`evidence-gap-check`、`thesis-validation`、
40
+ `execution-plan-check`、`portfolio-concentration` 各有一句 `Do not fetch live data unless the user
41
+ explicitly asks to pair this skill with …`。前半句的意图(别自己去堆一堆数据)保留,
42
+ 后半句改成"确实缺一个日期或一个字段时,把标的、字段、as-of 日期写成 brief 交给宿主取数通道——
43
+ 角色分流的宿主里就是负责检索与行情的角色——用回来的东西继续,剩下的照旧标为未知"。
44
+ 顺带这三句原本点名的 `earnings-preview` / `macro-event-analysis` 不在可选清单里(见下面的收录判断)。
45
+ - **没有 shell 就算不了(2 + 2 处)**:`journal-pattern-analyzer:49` 与 `risk-reward-sanity-check:52` 的
46
+ `For agents that support code execution, use [references/calculation-helpers.md] …` 改成
47
+ "本插件的分析角色没有 shell,也不跑 helper 脚本:统计量交给宿主数据侧(角色分流的宿主里委派做统计与质量校验的角色),
48
+ 三笔以内可以在答复里手算并把算式写出来,缺输入的条目留空不补默认值";
49
+ 两颗各自的 `references/calculation-helpers.md` 随之从"复用 `skills/_lib/calculations.py` 里的函数"
50
+ 改写成"这些量是什么、怎么取"(公式按上游 `_lib/calculations.py` 的实现核对:
51
+ `risk_reward_ratio` = |target−entry| / |entry−stop| 每单位、`expectancy` = 胜率×均盈 − 败率×均亏,
52
+ `kelly_fraction` 只是参照值,不作为交给使用者的仓位)。
53
+ - **点名的下一步 skill 未必存在(7 处)**:`catalyst-map`、`watchlist-review`、`evidence-gap-check`、
54
+ `thesis-validation`、`journal-pattern-analyzer`、`execution-plan-check`、`portfolio-concentration` 的
55
+ `Next Skill` 清单原句保留,各加同一句前置条件与退路(InvestSkill 那轮的改法):
56
+ 点名的 skill 只有使用者显式开启才存在于会话里,本插件明确不提供的那两类(下单、给仓位)永远不存在,
57
+ 只能说成选项、不能替使用者跑。
58
+ **没有新增 `Retrieval:` 出处档**:上游根本没有这个枚举(§8.6 第 3 条不适用),
59
+ 不为了套前几颗的改法新造上游没有的模板字段。
60
+
61
+ - 收录判断(19 颗里 9 颗进 catalog,10 颗留在快照里当可审查材料):
62
+ - **进**:`catalyst-map`、`watchlist-review`、`evidence-gap-check`、`thesis-validation`、
63
+ `risk-reward-sanity-check`、`execution-plan-check`、`portfolio-concentration`、
64
+ `journal-pattern-analyzer`、`post-trade-review`。
65
+ `post-trade-review` 一字未动就过闸门(全文无取数、无脚本、无出图,只在 `references/review-rubric.md`
66
+ 里举了一条"高冲击数据日把仓位减 25%"的过程规则例子 → `riskNote` 写明属于过程推演)。
67
+ - **不进 · 执行面**:`etoro`。它是券商公开 API 的操作手册:`SKILL.md:18` "**Keys (request from the user on install)**"
68
+ 与逐步生成密钥的说明、`x-api-key` / `x-user-key` 请求头、`curl -X POST …/trading/execution/…market-open-orders/by-amount`
69
+ 带 `"IsBuy": true, "Leverage": 1`、"Use **non-demo execution endpoints** for real trading"、按 `positionId` 平仓,
70
+ 末尾还指到一个 MCP server。§8.6 第 4 条(执行面)与第 7 条(真实下单)双重排除;本插件不接券商、不下单、
71
+ 凭据只进 credentials 域(§5)。这颗连发布包都不进(`.npmignore`),全量仍住在 git 里。
72
+ - **不进 · 仓位与买卖动作**:`position-sizing`(索取 account equity,输出 `Position Recommendation`:
73
+ 股数/合约数/账户风险百分比)、`position-management`(`hold, trim, tighten risk, close, or wait` + `Best Next Action`)。
74
+ 与 `docs/reference/external-skill-scan-2026-10.md` 观察名单里既写的同一口径:
75
+ 「评级、买卖动作和仓位决策属于明确冲突,不能直接集成」。
76
+ - **不进 · 接管会话路由**:`pre-trade-check`、`earnings-trade-prep`、`portfolio-risk-review`、`post-trade-debrief`
77
+ 四颗 workflow。上游自己的 "Workflow routing" 段按结果分流到 11–12 颗子 skill 并给出
78
+ `ready` / `reject` / `hold through with conditions` 一类决断,与本插件的角色路由冲突
79
+ (`china-stock-research-orchestrator` 与 InvestSkill 的 `full-report` 是同一条理由)。
80
+ - **不进 · 数据层与本插件不兼容**:`earnings-preview`、`macro-event-analysis`、`market-regime-analysis`。
81
+ 上游校验器把这套取数口径写成硬要求(`scripts/validate_repo.py:146` 要求这三颗必须写
82
+ `ask which supported provider`):向用户点选 FMP/Polygon/TradingEconomics、在对话里认领"usable access details"、
83
+ 然后 `curl "…apikey=<FMP_API_KEY>"`(三颗共 18 处 curl + 3 份 `data-providers.md`)。本插件没有这些服务商的凭据,
84
+ 也不为它们开第二条取数口子;改写成"委派宿主通道"会让这 10 份 provider 文档变成死路,因此整颗留原文不改。
85
+ 另外 `earnings-preview` 与 catalog 里已收录的 InvestSkill 同名那颗**撞车**——provider 的启用集合只按 `name` 认,
86
+ `test/persona.test.mjs` 钉住 name 全局唯一,收进来必然出问题。
87
+ - `test/selected-skills-provider.test.mjs` 用「skills 根目录 − 排除清单」派生本颗的可选清单,
88
+ `test/persona.test.mjs` 另把 `etoro` / `position-sizing` / `position-management` / `pre-trade-check` 明确断为不进 catalog。
89
+ - 复核方法:`git clone` 所钉 commit 后,把上游 `skills/<domain>/<name>` 与快照 `skills/<name>` 逐颗 `diff -r`——
90
+ 差异只应包含以上三类(10 份文件、17 处句子级改动;其余 11 颗与 `_lib/`、`LICENSE` 逐字节相同)。
91
+ `test/selected-skills-content.test.mjs` 扫正文**结果**、本文件记**理由**,两边任一漂回去都会红。
92
+ - Packaging: 这颗带 `.npmignore`,挡的是非运行内容:`docs/`(上游文档站与 18 份 walkthrough)、
93
+ `scripts/`(上游的 catalog 生成与仓库校验 python)、`.github/`、`catalog.json`(上游自己的索引,与本仓
94
+ `selected-skills/catalog.js` 无关)、`README.md` / `CONTRIBUTING.md` / `CHANGELOG.md` / `VERSION` / `Makefile`、
95
+ `skills/_lib/`(共享 python 计算模块,本插件没有 shell 可跑它),以及合规口径那条 `skills/etoro/`(券商执行面,见上)。
96
+ 其余不进可选清单的 skill 照 InvestSkill 先例**随包保留**作为可审查材料:provider 的 `list()` / `get()`
97
+ 与 `/capital-skills/<name>.md` 旁路都按 catalog 闭集过滤,运行时读不到它们。
98
+ `package.json` 的 `files` 已逐仓库登记 `selected-skills/trading-skills`,
99
+ `test/packaging.test.mjs` 从 catalog 反查发布清单里的真实 `SKILL.md` / `LICENSE` / `UPSTREAM.md`,并反查上面每条目录规则确实生效。
100
+ - Maintenance snapshot (checked 2026-10-11): 31 次提交集中在 2026-03-06 至 2026-03-16,此后 209 天无提交;
101
+ 16 stars、6 forks,`0.1.0-rc.1` 未发 release。因此标 `watchlist`——与 `china-stock-research-skills`、
102
+ `peter-lynch-skill` 同一口径(内容可用、维护薄,启用前请使用者自行复核来源),不是内容缺陷。
103
+ See [GitHub commit history](https://github.com/marian2js/trading-skills/commits/main/)。
104
+ - Runtime status: `watchlist` / 默认关闭的显式实验。只有使用者在「插件」→ Capital Generation →「精选 Skills」
105
+ 里逐格打开,它们才对**之后新建**的 Capital 根 Agent 可见;子 Agent 不继承,上游脚本从不执行。
106
+ 能力标签带来的新词是 `trade-discipline`(交易纪律 / Trade discipline),市场口径继续用 `us-stock`;
107
+ `riskNote` 里逐条写明各颗不做什么(不下单、不改单、不给仓位数字、不预测表现)。
108
+ - Review status: 2026-11-06 复查上游、许可证与维护状态。内容按美股与境外交易习惯写(SPY/QQQ/ES 期货、
109
+ 美股时段与盘前盘后、FINRA/Fidelity/Schwab 口径的集中度阈值、EURUSD 与 CFD/杠杆工具),
110
+ **不声称适用 A 股**,也不得直接当作 A 股规则;它提供的是过程纪律而不是信号或收益承诺,
111
+ 所有金融主张须回到原始证据核验。本文件与本仓的收录判断不构成对上游观点的背书。
@@ -0,0 +1,119 @@
1
+ ---
2
+ name: catalyst-map
3
+ description: Build a ranked map of the catalysts that could move a watchlist, theme, or portfolio by showing what matters, when it matters, and how those events could transmit across related names or exposures.
4
+ ---
5
+
6
+ # Catalyst Map
7
+
8
+ Use this skill when the user wants a practical map of what could move a watchlist, sector, theme, or portfolio over a defined window, not just a raw event list.
9
+
10
+ This skill will not:
11
+
12
+ - predict the market reaction to a catalyst
13
+ - replace detailed earnings or macro-event analysis for a single event
14
+ - pretend every calendar item deserves equal attention
15
+
16
+ ## Role
17
+
18
+ Act like a cross-asset catalyst planner. Your job is to identify the few events, milestones, and dependencies that actually matter, then show how they could affect the user's names or exposures.
19
+
20
+ ## When to use it
21
+
22
+ Use it when the user wants to:
23
+
24
+ - organize upcoming catalysts for a watchlist or theme
25
+ - understand which events matter most for a sector, basket, or portfolio
26
+ - connect company, macro, policy, product, regulatory, or industry catalysts into one map
27
+ - decide which names need deeper prep and which catalysts only deserve background monitoring
28
+
29
+ ## Inputs and context
30
+
31
+ Ask for:
32
+
33
+ - the watchlist, theme, sector, or portfolio slice being mapped
34
+ - the timeframe: next session, next week, next month, next quarter
35
+ - the user's objective: swing prep, event-risk awareness, long-term monitoring, or idea discovery
36
+ - any known catalysts already in view, such as earnings, product launches, CPI, FOMC, OPEC, trial data, policy dates, investor days, or guidance updates
37
+ - which exposures matter most: single names, suppliers, customers, indexes, sectors, or macro-sensitive holdings
38
+
39
+ Helpful but optional:
40
+
41
+ - notes on what the user already believes matters most
42
+ - regime or macro context already established elsewhere
43
+ - whether the map is for trading entries, portfolio defense, or investor monitoring
44
+
45
+ Use the user's materials first.
46
+
47
+ If the user gives only a vague theme and no timeframe or exposures, say what is missing and keep the map provisional rather than inventing a false catalyst schedule.
48
+
49
+ The map is built from what the user already has. When a date or a session really is missing, do not go and gather it from here: write the exact brief (event or ticker, the field needed, the as-of date) and hand it to the host's own retrieval path — in a role-split host, the agent that owns web retrieval and market data — then keep mapping from what comes back and leave the rest unknown.
50
+
51
+ ## Analysis process
52
+
53
+ 1. Reconstruct the watchlist, theme, or exposure set and define the time window.
54
+ 2. List the catalysts that could realistically move those names in that window.
55
+ 3. Rank the catalysts by decision relevance, not by headline count.
56
+ 4. Explain the transmission path for each important catalyst: direct issuer effect, peer read-through, supply-chain effect, macro sensitivity, policy channel, or sentiment shift.
57
+ 5. Separate high-priority catalysts from background noise.
58
+ 6. Flag which names are most exposed to each catalyst and where multiple names depend on the same event.
59
+ 7. End with the next research step for the top catalysts: deeper earnings prep, macro analysis, thesis validation, or simple monitoring.
60
+
61
+ Use [references/catalyst-framework.md](references/catalyst-framework.md) when you need the default checklist for ranking, transmission, and overlap.
62
+
63
+ ## Core Assessment Framework
64
+
65
+ Assess each catalyst on five anchors before calling it important:
66
+
67
+ - `Timing Relevance`: whether the catalyst falls inside the user's actual decision window. Example: next week's CPI matters for a near-term rate-sensitive trade; a vague six-month product roadmap may not.
68
+ - `Transmission Strength`: whether the event can directly move the user's names or exposures. Example: a benchmark earnings report may affect suppliers, peers, and sector ETFs, not just the reporting company.
69
+ - `Decision Impact`: whether the event could change position plans, holding periods, or risk tolerance. Example: a catalyst that forces shorter holding periods has more decision impact than a low-signal conference appearance.
70
+ - `Overlap`: whether multiple names or positions depend on the same catalyst chain. Example: owning several semis plus a tech ETF may create more catalyst clustering than the ticker list suggests.
71
+ - `Preparation Need`: whether the catalyst requires deeper work now or only background awareness. Example: an earnings date with a live debate deserves prep; a low-information placeholder date may only deserve a note.
72
+
73
+ Use the anchors to classify:
74
+
75
+ - `primary catalyst`: high decision relevance and strong transmission into the user's names or exposures
76
+ - `secondary catalyst`: worth monitoring, but less likely to dominate the plan
77
+ - `background`: context only, unless other conditions make it more important later
78
+
79
+ ## Evidence That Would Invalidate This Analysis
80
+
81
+ - the timeframe changes enough to reorder catalyst importance
82
+ - a date moves, is canceled, or turns out to be less relevant than assumed
83
+ - the user's watchlist or portfolio exposure changes materially
84
+ - a catalyst's transmission path was overstated or duplicated another event
85
+ - new macro, earnings, or policy information makes a previously secondary catalyst primary
86
+
87
+ ## Output structure
88
+
89
+ Prefer this output order:
90
+
91
+ 1. `Catalyst Summary`
92
+ 2. `Primary Catalysts`
93
+ 3. `Secondary Catalysts`
94
+ 4. `Transmission Map`
95
+ 5. `Crowding Or Overlap Risks`
96
+ 6. `Next Skill`
97
+
98
+ Always include:
99
+
100
+ - the timeframe and objective used
101
+ - which catalysts matter most and why
102
+ - which names or exposures are linked to each key catalyst
103
+ - where multiple names depend on the same event chain
104
+ - what requires deeper prep now versus background monitoring
105
+ - whether the next step is `earnings-preview`, `macro-event-analysis`, `market-regime-analysis`, `thesis-validation`, or no further action yet
106
+
107
+ A skill named above is an option for the user, not a step this role can take: only the skills the user switched on exist in this session, and the ones this plugin deliberately does not offer — placing orders, setting position size — are not reachable at all. Say what you would check next and let the user decide.
108
+
109
+ ## Best practices
110
+
111
+ - do not confuse more calendar entries with better preparation
112
+ - do not list catalysts without explaining why they matter to the user's actual names
113
+ - do not bury shared exposure to the same catalyst chain
114
+ - do not turn a catalyst map into a directional prediction
115
+
116
+ ## Usage examples
117
+
118
+ - "Use `catalyst-map` on my semis watchlist for the next three weeks and show me the company, macro, and policy events that matter most."
119
+ - "Use `catalyst-map` on this energy portfolio for the next month and tell me which catalysts deserve deep prep versus simple monitoring."