@v587d/capital-generation 2.7.0 → 2.7.2

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 (92) hide show
  1. package/CHANGELOG.md +77 -1
  2. package/LICENSE +1 -1
  3. package/README.md +10 -9
  4. package/THIRD_PARTY_NOTICES.md +14 -4
  5. package/capital-config/client.js +50 -10
  6. package/capital-config/client.src.cjs +376 -62
  7. package/capital-config/index.js +168 -5
  8. package/capital-config/package.json +1 -1
  9. package/capital-watchlist/package.json +1 -1
  10. package/chart-ui/package.json +1 -1
  11. package/lib/agents/selected-skills-provider.js +5 -5
  12. package/lib/index.d.ts +4 -28
  13. package/lib/index.js +8 -18
  14. package/lib/web-retriever/local-fetch.d.ts +1 -1
  15. package/lib/web-retriever/local-fetch.js +1 -1
  16. package/lib/web-retriever/wind-client.d.ts +1 -1
  17. package/lib/web-retriever/wind-client.js +1 -1
  18. package/package.json +3 -1
  19. package/selected-skills/InvestSkill/ADDING-NEW-SKILLS.md +546 -0
  20. package/selected-skills/InvestSkill/CHANGELOG.md +373 -0
  21. package/selected-skills/InvestSkill/CI-CD-GUIDE.md +432 -0
  22. package/selected-skills/InvestSkill/CLAUDE.md +148 -0
  23. package/selected-skills/InvestSkill/CONTRIBUTING.md +291 -0
  24. package/selected-skills/InvestSkill/DEPLOYMENTS.md +321 -0
  25. package/selected-skills/InvestSkill/FAQ.md +509 -0
  26. package/selected-skills/InvestSkill/GEMINI.md +419 -0
  27. package/selected-skills/InvestSkill/LICENSE +21 -0
  28. package/selected-skills/InvestSkill/PLATFORM-COMPATIBILITY.md +529 -0
  29. package/selected-skills/InvestSkill/README-claude-code.md +435 -0
  30. package/selected-skills/InvestSkill/README-cursor.md +475 -0
  31. package/selected-skills/InvestSkill/README-gemini.md +532 -0
  32. package/selected-skills/InvestSkill/README-ollama.md +106 -0
  33. package/selected-skills/InvestSkill/README-zh-TW.md +461 -0
  34. package/selected-skills/InvestSkill/README.md +311 -0
  35. package/selected-skills/InvestSkill/RELEASE-QUICK-REFERENCE.md +230 -0
  36. package/selected-skills/InvestSkill/RELEASE_NOTES.md +121 -0
  37. package/selected-skills/InvestSkill/SECURITY.md +232 -0
  38. package/selected-skills/InvestSkill/TODO.md +28 -0
  39. package/selected-skills/InvestSkill/UPSTREAM.md +62 -0
  40. package/selected-skills/InvestSkill/install.sh +212 -0
  41. package/selected-skills/InvestSkill/package.json +64 -0
  42. package/selected-skills/InvestSkill/plugins/us-stock-analysis/README.md +119 -0
  43. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/SKILL.md +338 -0
  44. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/SKILL.md +233 -0
  45. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/SKILL.md +327 -0
  46. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/chart-master/SKILL.md +648 -0
  47. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/SKILL.md +478 -0
  48. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dcf-valuation/SKILL.md +109 -0
  49. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/SKILL.md +684 -0
  50. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/SKILL.md +456 -0
  51. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/SKILL.md +277 -0
  52. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/SKILL.md +349 -0
  53. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/SKILL.md +279 -0
  54. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/SKILL.md +288 -0
  55. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/SKILL.md +544 -0
  56. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/full-report/SKILL.md +301 -0
  57. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fundamental-analysis/SKILL.md +67 -0
  58. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/SKILL.md +336 -0
  59. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/SKILL.md +502 -0
  60. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/SKILL.md +548 -0
  61. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/SKILL.md +311 -0
  62. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/SKILL.md +495 -0
  63. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/SKILL.md +465 -0
  64. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/SKILL.md +429 -0
  65. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/report-generator/SKILL.md +857 -0
  66. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/research-bundle/SKILL.md +94 -0
  67. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/result-validator/SKILL.md +174 -0
  68. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/SKILL.md +293 -0
  69. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/SKILL.md +426 -0
  70. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/SKILL.md +397 -0
  71. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/SKILL.md +645 -0
  72. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/SKILL.md +244 -0
  73. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/SKILL.md +640 -0
  74. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/SKILL.md +351 -0
  75. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/SKILL.md +654 -0
  76. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/SKILL.md +317 -0
  77. package/selected-skills/README.md +15 -5
  78. package/selected-skills/catalog.js +589 -14
  79. package/selected-skills/investment-skills/UPSTREAM.md +1 -1
  80. package/selected-skills/investment-skills/skills/buffett-investment-framework/SKILL.md +1 -1
  81. package/selected-skills/peter-lynch-skill/LICENSE +21 -0
  82. package/selected-skills/peter-lynch-skill/README.md +305 -0
  83. package/selected-skills/peter-lynch-skill/UPSTREAM.md +71 -0
  84. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/SKILL.md +142 -0
  85. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology.md +587 -0
  86. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/system-prompt.md +102 -0
  87. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research.md +471 -0
  88. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/disclaimer.md +2 -0
  89. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/filing-rules.md +64 -0
  90. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/methodology.md +195 -0
  91. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/system-prompt.md +72 -0
  92. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research.md +379 -0
@@ -0,0 +1,232 @@
1
+ # Security Policy
2
+
3
+ InvestSkill takes security seriously. This document outlines our security practices and how to report vulnerabilities responsibly.
4
+
5
+ ## Security Practices
6
+
7
+ ### What We Protect
8
+
9
+ - **User data**: None collected. InvestSkill runs locally/client-side only.
10
+ - **Code**: Open source, regularly reviewed, well-tested
11
+ - **Dependencies**: Minimal (Node.js standard library only)
12
+ - **Secrets**: No API keys stored in repository
13
+
14
+ ### What to Know
15
+
16
+ > ⚠️ **Important**: InvestSkill provides analysis frameworks, not trading signals. Use analysis independently and consult financial advisors before trading.
17
+
18
+ ### No Data Collection
19
+
20
+ InvestSkill:
21
+ - ✅ Runs completely locally (all processing client-side)
22
+ - ✅ Stores nothing on remote servers
23
+ - ✅ Does not track users
24
+ - ✅ Does not send data externally
25
+ - ✅ Works offline (except Claude Code API calls)
26
+
27
+ ---
28
+
29
+ ## Reporting a Vulnerability
30
+
31
+ ### Security Issues
32
+
33
+ If you discover a security vulnerability, **do NOT open a public issue**.
34
+
35
+ **Instead, email**: security@example.com (or contact repo maintainer privately)
36
+
37
+ Include:
38
+ - Vulnerability type (e.g., injection, credential exposure)
39
+ - Location in code (file, line number)
40
+ - Steps to reproduce
41
+ - Potential impact
42
+ - Suggested fix (if available)
43
+
44
+ **Response timeline**: We aim to respond within 48 hours.
45
+
46
+ ### Privacy Issues
47
+
48
+ If you have privacy concerns about how InvestSkill processes data:
49
+ 1. Review [Privacy](#privacy) section
50
+ 2. Check [Data practices](#what-we-protect)
51
+ 3. Contact maintainer if concerned
52
+
53
+ ---
54
+
55
+ ## Code Security
56
+
57
+ ### Dependency Policy
58
+
59
+ - **Minimal dependencies**: We use only Node.js built-ins
60
+ - **No npm packages**: Reduces attack surface
61
+ - **Version pinning**: All versions locked to specific releases
62
+ - **Regular audits**: Code reviewed before each release
63
+
64
+ ### Code Review
65
+
66
+ All commits:
67
+ - Reviewed before merge
68
+ - Tested with full test suite
69
+ - Validated across all platforms
70
+ - Follow security best practices
71
+
72
+ ### Input Validation
73
+
74
+ InvestSkill:
75
+ - Doesn't accept or validate user credentials
76
+ - Doesn't process payment information
77
+ - Validates file formats (JSON, markdown)
78
+ - Escapes output to prevent injection
79
+
80
+ ---
81
+
82
+ ## Supported Versions
83
+
84
+ | Version | Status | Support |
85
+ |---------|--------|---------|
86
+ | 1.4.0 | ✅ Current | Full support |
87
+ | 1.3.0 | ⚠️ Legacy | Critical fixes only |
88
+ | 1.2.0 & earlier | ❌ Unsupported | No support |
89
+
90
+ **Note**: Update to latest version for security patches and improvements.
91
+
92
+ ---
93
+
94
+ ## Security Checklist for Users
95
+
96
+ Before using InvestSkill:
97
+
98
+ - [ ] Running latest version (v1.4.0+)
99
+ - [ ] Using trusted Claude Code/Cursor/platform version
100
+ - [ ] No credentials or API keys stored in repository
101
+ - [ ] Not sharing analysis with untrusted parties
102
+ - [ ] Understand: Framework = Analysis tool, not trading advice
103
+
104
+ ---
105
+
106
+ ## Compliance & Standards
107
+
108
+ ### What We Follow
109
+
110
+ - ✅ MIT License (open source, permissive)
111
+ - ✅ OWASP Top 10 (security standards)
112
+ - ✅ No GDPR concerns (no user data)
113
+ - ✅ No HIPAA (not medical/healthcare)
114
+ - ✅ No PCI-DSS (no payment processing)
115
+
116
+ ### What We Don't Do
117
+
118
+ - ❌ Store personally identifiable information (PII)
119
+ - ❌ Process payment information
120
+ - ❌ Track user behavior
121
+ - ❌ Require authentication
122
+ - ❌ Connect to external APIs without user knowledge
123
+
124
+ ---
125
+
126
+ ## Incident Response
127
+
128
+ If a security issue is discovered:
129
+
130
+ 1. **Report privately** (don't disclose publicly)
131
+ 2. **Assessment** (we evaluate severity)
132
+ 3. **Fix** (we develop and test a patch)
133
+ 4. **Release** (security patch published)
134
+ 5. **Announce** (security advisory posted)
135
+
136
+ ---
137
+
138
+ ## Responsible Disclosure
139
+
140
+ We appreciate researchers and security professionals who discover issues.
141
+
142
+ **Responsible disclosure means:**
143
+ - ✅ Report privately first
144
+ - ✅ Give us time to patch (typically 90 days)
145
+ - ✅ Not sharing vulnerability publicly before patch
146
+ - ✅ Not accessing systems/data you're not authorized to access
147
+
148
+ **What NOT to do:**
149
+ - ❌ Public disclosure before patch available
150
+ - ❌ Unauthorized access or testing
151
+ - ❌ Data extraction or exfiltration
152
+ - ❌ Ransom or extortion
153
+
154
+ ---
155
+
156
+ ## FAQ
157
+
158
+ ### Is my data safe?
159
+
160
+ **Yes.** InvestSkill:
161
+ - Doesn't store any user data
162
+ - Doesn't send data to external servers
163
+ - Runs completely locally
164
+ - Doesn't track usage
165
+
166
+ ### Do you sell my data?
167
+
168
+ **No.** We don't collect data. There's nothing to sell.
169
+
170
+ ### Is the code trustworthy?
171
+
172
+ **Open source** means the code is publicly auditable:
173
+ - Anyone can review the code
174
+ - Vulnerabilities are visible
175
+ - Community can report issues
176
+ - All changes tracked in git history
177
+
178
+ ### What platforms are safe to use?
179
+
180
+ All InvestSkill platforms are equally safe:
181
+ - Claude Code (official plugin)
182
+ - Cursor IDE (uses local rules)
183
+ - Gemini CLI (local prompts)
184
+ - GitHub Copilot (VS Code, JetBrains)
185
+ - Universal (copy-paste into any LLM)
186
+
187
+ ### What if I find a vulnerability?
188
+
189
+ 1. Email maintainer privately (don't post publicly)
190
+ 2. Include: type, location, steps to reproduce
191
+ 3. Wait for patch before public disclosure
192
+ 4. We'll issue security advisory and credit you
193
+
194
+ ---
195
+
196
+ ## Security Contact
197
+
198
+ **Email**: yennanliu (at) gmail (dot) com or open private security discussion
199
+
200
+ **Response time**: Within 48 hours
201
+
202
+ **Please do NOT**:
203
+ - Open public GitHub issues for vulnerabilities
204
+ - Tweet/post vulnerability details publicly
205
+ - Attempt unauthorized access
206
+
207
+ ---
208
+
209
+ ## Resources
210
+
211
+ - [OWASP Top 10](https://owasp.org/www-project-top-ten/) — Security standards
212
+ - [Responsible Disclosure](https://en.wikipedia.org/wiki/Responsible_disclosure) — Best practices
213
+ - [GitHub Security](https://github.blog/2021-12-01-how-github-keeps-your-data-safe/) — Platform security
214
+
215
+ ---
216
+
217
+ ## Changelog
218
+
219
+ ### Security Updates
220
+
221
+ - **v1.4.0** (2026-02-27): Initial security policy
222
+ - Future updates tracked here
223
+
224
+ ---
225
+
226
+ <div align="center">
227
+
228
+ ### Security is Everyone's Responsibility
229
+
230
+ Thank you for helping keep InvestSkill safe! 🔒
231
+
232
+ </div>
@@ -0,0 +1,28 @@
1
+ # TODO — InvestSkill
2
+
3
+ The curated top five. Everything else — with rationale, effort estimates, and release mapping — lives in the bilingual roadmap: [doc/IMPROVEMENT-ROADMAP.md](doc/IMPROVEMENT-ROADMAP.md) · [繁體中文](doc/IMPROVEMENT-ROADMAP-zh-TW.md). Progress against the roadmap's ten headline items is tracked in its §0 table.
4
+
5
+ The previous long-form backlog (last updated 2026-02-24) is archived at [doc/archive/TODO-2026-02.md](doc/archive/TODO-2026-02.md).
6
+
7
+ ## Top 5
8
+
9
+ 1. **`full-report --depth comprehensive` runs every framework** — add the frameworks missing since v1.8 (`bear-case` above all) plus the new Tier 1 skills where they fit, swap the alias modules for their targets, add `--skip <skill>`. → roadmap §4.3
10
+ 2. **`--lang zh-TW` on every skill + a machine-readable JSON footer** — the remaining two items of the skill contract (§4.1); the footer is what lets `eval-skills.js` and `result-validator` parse results without regex on box-drawing characters.
11
+ 3. **Learning lessons: Macro & the Fed Cycle, Options for Stock Investors** — the two §5.1 lessons still open (Lesson 5 has the material); plus self-check quizzes for Lessons 1–8 and the printable cheat sheet (§5.4). → roadmap §5.1, §5.4
12
+ 4. **Non-US Investor Guide page** — Lesson 11's non-US section is the core; the page adds brokers, FX, and account opening (§5.4). Glossary: the ~16 filing / technical terms still missing (§5.3).
13
+ 5. **Tier 2 skills as demand shows** — `forensic-accounting`, `proxy-governance`, `trade-postmortem` (closed `thesis-tracker` files are its input), `investment-policy`. → roadmap §3.2
14
+
15
+ ## Recently shipped from the roadmap
16
+
17
+ - Stale counts fixed and historical docs archived (§7)
18
+ - Skill contract enforced on every analysis skill — `Data & Sources` header, Data Verification gate, Thesis Invalidation — with `scripts/check-skill-contract.js` in `npm test` (§4.1, §6.3)
19
+ - The three redirect skills reclassified as aliases; honest count of 24 frameworks (§4.2)
20
+ - `thesis-tracker` (§3.1)
21
+ - The rest of Tier 1 — `etf-analysis`, `earnings-preview`, `tax-lens` (with `--non-us`), `risk-stress-test`, `learning-coach` (§3.1)
22
+ - Learning track Part II — Lessons 9–13 (Before Your First Trade · ETFs · Taxes & Accounts incl. non-US · Earnings Season · Psychology & Process), the "When the Answer Is No" case study, self-check quizzes, glossary 44 → 76 (§5.1–5.3; see `doc/LEARNING-GAP-REVIEW.md`)
23
+ - `fact-check` — claim-level verification against primary sources, recomputation, corrected report with inline citations and References; Verification Score feeds `result-validator` Data Quality (not on the roadmap; added on request)
24
+ - `scripts/sync-prompts.js`, `scripts/new-skill.js`, `scripts/eval-skills.js`, `scripts/lib/signal-block.js` (§6.1, §6.2, §6.4, §6.11)
25
+
26
+ ## Deliberately not planned
27
+
28
+ Live-data / broker APIs, crypto and forex, ML price prediction, and changes to the signal block — see roadmap §9 for why.
@@ -0,0 +1,62 @@
1
+ # Upstream Record
2
+
3
+ - Project: InvestSkill(上游以 Claude Code plugin `us-stock-analysis` 的形式发布)
4
+ - Repository: https://github.com/yennanliu/InvestSkill
5
+ - Upstream commit: `c3f2a17cd2b6ac9731beb3b5739592446ad6f556`(main,2026-10-09)
6
+ - 这颗 HEAD 是上游机器人的 daily site review 提交;最后一次**内容**提交是
7
+ `113527fc7e44a723513dc2840becca7ab6eba823`(2026-09-25,PR #32 prompt-audit),同日打 `v1.12.0`。
8
+ catalog 的 `lastCommit` 记的是后者。
9
+ - License: MIT;`LICENSE` 为上游原件(`Copyright (c) 2026 yennanliu`),未改写。
10
+ - Imported content: 该 commit 的完整仓库快照,只移除上游自己的 `.gitignore`(见下)。
11
+ 34 颗 skill 在 `plugins/us-stock-analysis/skills/<name>/SKILL.md`;`scripts/`、`prompts/`、
12
+ `site/`、`qa/`、`doc/`、`data/`、`.github/` 作为可审查材料保留,intake 与 activation 都不执行它们。
13
+ - Local modifications(三类,逐条可复核;口径与理由见 `docs/dev/selected-skills.md` §8.6 的接入必查清单):
14
+ 1. **34 颗 `SKILL.md` 的 frontmatter 第一键补 `name: <目录名>`。** DSH filesystem provider 要求
15
+ frontmatter 同时有 `name` 与 `description`,缺 `name` 的文件是**静默跳过**(只 warn)——原样收录
16
+ 时 34 颗一颗都不会被发现。上游依赖 Claude Code 从目录名推导,所以它自己不需要这一行。
17
+ 2. **删除上游的 `.gitignore`。** 它在宿主仓库里会静默挡掉 `site/build/`:上游用 `build/` 这条目录
18
+ 规则配上 `!site/build/*.js` 的反向白名单,而 git 在被排除的父目录之下无法再 include——留着一个
19
+ 不完整、且与所钉 commit 不一致的快照,比少三个文件更糟。vendored 快照不把 ignore 规则带进宿主仓库。
20
+ 3. **28 颗 catalog skill 的取数口径改写**(168 行删 / 161 行增,全部落在下面五类句子上;
21
+ 不进 catalog 的 6 颗原文未动)。上游正文写给"什么工具都在手边"的宿主,与本插件的取数边界冲突:
22
+ - `1. **Fetch …** — use web search or ask the user for …` → 改为"走宿主自己的取数通道;
23
+ 角色分流的宿主里把标的、字段、as-of 日期写进委派 brief 交出去"(24 处,含 economics / etf /
24
+ sector / risk-stress 的变体与 fact-check 的"只在主张需要时才取现价")。
25
+ - `4. **Flag stale data explicitly** … display this warning before proceeding` 与
26
+ `> ⚠️ **Live data unavailable.** … training-data estimates …` → 改成 `**Stop on missing data**`:
27
+ 点名缺哪些字段、该字段下的分析停止,不回填(23 + 25 处)。
28
+ - 收尾句 `Never silently substitute training-data estimates … ask the user to paste …` → 改成
29
+ "取数是宿主数据通道的职责(委派);只有宿主完全没有检索路径时才谈用户粘贴"(24 处)。
30
+ - 出处块 `Retrieval: <pasted by user | web/tool retrieval | model memory>` → 去掉 `model memory`
31
+ 这一档、加 `delegated retrieval`(27 处);配套那条"`model memory` 配 `Confidence: LOW`"改成
32
+ "记忆不是取数途径:没取到的数字报缺,不写进这一栏"(27 处)。`result-validator` 的评分口径同步改,
33
+ `learning-coach` 检测的"没有检索路径"随之改名。
34
+ - 无密钥 EDGAR 取数阶梯(`10k-digest` / `financial-report-analyst` / `fact-check`):A 档从
35
+ "宿主能抓就自己抓"改成"走宿主检索通道=委派";B 档只在"宿主完全没有检索路径"时谈用户粘贴;
36
+ C 档从"设成 model memory + LOW 继续"改成"缺的就缺着"。**删掉两处 `node scripts/fetch-*.js`
37
+ 指令**——`scripts/` 不进发布包,根角色也没有 shell(AGENTS.md §1.6)。
38
+ 分析结论、方法论、评分表、输出模板与其余正文**一字未改**。
39
+ 复核方法:`git clone` 所钉 commit 后 `diff -r`,差异只应包含以上三类;
40
+ `test/selected-skills-content.test.mjs` 扫正文**结果**、本文件记**理由**,两边任一漂回去都会红。
41
+ - Catalog scope: 28 颗进入 `selected-skills/catalog.js`,六颗留在快照里但不进可选清单:
42
+ - `fundamental-analysis`、`dcf-valuation`、`research-bundle`:上游自己标注的 alias 残片
43
+ (`scripts/lib/skill-registry.js` 的 `ALIAS_SKILLS`),正文已声明分别并入 `stock-eval` /
44
+ `stock-valuation` / `full-report`,勾到它们只会拿到一份速查表而不是在维护的完整模块。
45
+ - `full-report`:上游编排 skill(跑多个模块再合成总分),与 `china-stock-research-orchestrator`
46
+ 被排除是同一条理由——本插件的角色路由是单点决策。
47
+ - `report-generator`:上游的输出口(把别的 skill 结果渲染成 HTML/PDF 存进 `output/`),与已删除并
48
+ 禁止恢复的报告交付链路冲突(`AGENTS.md` §7)。
49
+ - `chart-master`:教 Agent 自己产出 HTML/Chart.js 与 Mermaid 图形,出图一律走 `render_chart`
50
+ 且只有 `visualization_specialist` 持有(`AGENTS.md` §6.1)。
51
+ - Maintenance snapshot(checked 2026-10-10):251 次提交;近 90 天 47 次非机器人提交、近 180 天 111 次;
52
+ 最新 release `v1.12.0`(2026-09-25)。维护活跃,因此标 `experimental`。
53
+ See [GitHub commit history](https://github.com/yennanliu/InvestSkill/commits/main/).
54
+ - Runtime status: `experimental` / 显式实验。默认全关,只在使用者于「插件」→ Capital Generation →「配置」
55
+ 逐格打开后,对**之后新建**的 Capital 根 Agent 可见;子 Agent 不继承。
56
+ - Financial boundary: 正文口径天生是美股(SEC EDGAR / Form 4 / 13F、FRED、美国税制),并且多模块给出
57
+ 0–10 打分与分批仓位的写法。本插件不提供投资建议:每条 catalog 的 `riskNote` 写明打分是自洽度信号、
58
+ 股数区间是推演练习,不是订单,也不承诺表现。
59
+ - Data-fetch assumption: 每颗 skill 开篇都要求 Agent 先用网页搜索取实时报价。**这不授予新权限**——
60
+ 取数仍受本插件的角色与工具边界约束(主 Agent 委派、原始 rows 不出工具层),skill 正文只是方法论材料。
61
+ - Review status: 收录供使用者自行实验,不构成对任何金融方法的背书。复核前先读上面的 Catalog scope,
62
+ 确认排除项没有被人顺手加回。
@@ -0,0 +1,212 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # InvestSkill installer — wires the InvestSkill analysis frameworks into your AI coding agent.
4
+ #
5
+ # curl -fsSL https://raw.githubusercontent.com/yennanliu/InvestSkill/main/install.sh | bash -s -- -a claude
6
+ #
7
+ # There is no runtime and nothing is compiled: the script copies markdown prompts
8
+ # into your project and adds a small pointer block to your agent's config file.
9
+ #
10
+ set -euo pipefail
11
+
12
+ REPO="yennanliu/InvestSkill"
13
+ REF="main"
14
+ AGENT="claude"
15
+ DIR="$PWD"
16
+ GLOBAL=0
17
+
18
+ MARK_BEGIN="<!-- InvestSkill:begin -->"
19
+ MARK_END="<!-- InvestSkill:end -->"
20
+
21
+ AGENTS="claude cursor copilot gemini codex opencode any"
22
+
23
+ # ── output helpers ───────────────────────────────────────────────────────────
24
+ if [ -t 1 ]; then
25
+ B=$'\033[1m'; DIM=$'\033[2m'; GRN=$'\033[32m'; RED=$'\033[31m'; RST=$'\033[0m'
26
+ else
27
+ B=''; DIM=''; GRN=''; RED=''; RST=''
28
+ fi
29
+ say() { printf '%s\n' "$*"; }
30
+ ok() { printf '%s✓%s %s\n' "$GRN" "$RST" "$*"; }
31
+ info() { printf '%s·%s %s\n' "$DIM" "$RST" "$*"; }
32
+ die() { printf '%s✗%s %s\n' "$RED" "$RST" "$*" >&2; exit 1; }
33
+
34
+ usage() {
35
+ cat <<EOF
36
+ ${B}InvestSkill installer${RST}
37
+
38
+ curl -fsSL https://raw.githubusercontent.com/$REPO/main/install.sh | bash -s -- -a AGENT
39
+
40
+ ${B}Options${RST}
41
+ -a AGENT Target agent: $AGENTS (default: claude)
42
+ -d DIR Install into DIR (default: current directory)
43
+ -g Install for the user, not one project (\$HOME instead of DIR)
44
+ -r REF Branch or tag to install from (default: main)
45
+ -l List supported agents and where each one is wired
46
+ -h Show this help
47
+
48
+ ${B}What it installs${RST}
49
+ .investskill/prompts/*.md every framework (and alias), as plain markdown
50
+ plus one agent-native entry point (a skill, a rule, or an instructions block)
51
+ EOF
52
+ }
53
+
54
+ list_agents() {
55
+ cat <<EOF
56
+ ${B}Agent Installs to${RST}
57
+ claude .claude/skills/<skill>/SKILL.md (slash commands)
58
+ cursor .cursor/rules/investskill.mdc
59
+ copilot .github/copilot-instructions.md
60
+ gemini GEMINI.md
61
+ codex AGENTS.md
62
+ opencode AGENTS.md
63
+ any .investskill/prompts/ only (paste into any LLM)
64
+ EOF
65
+ }
66
+
67
+ while getopts ":a:d:r:glh" opt; do
68
+ case "$opt" in
69
+ a) AGENT="$OPTARG" ;;
70
+ d) DIR="$OPTARG" ;;
71
+ r) REF="$OPTARG" ;;
72
+ g) GLOBAL=1 ;;
73
+ l) list_agents; exit 0 ;;
74
+ h) usage; exit 0 ;;
75
+ :) die "Option -$OPTARG needs a value. Try -h." ;;
76
+ \?) die "Unknown option -$OPTARG. Try -h." ;;
77
+ esac
78
+ done
79
+
80
+ AGENT=$(printf '%s' "$AGENT" | tr '[:upper:]' '[:lower:]')
81
+ case " $AGENTS " in
82
+ *" $AGENT "*) ;;
83
+ *) die "Unsupported agent '$AGENT'. Supported: $AGENTS" ;;
84
+ esac
85
+
86
+ [ "$GLOBAL" -eq 1 ] && DIR="$HOME"
87
+ command -v curl >/dev/null 2>&1 || die "curl is required."
88
+ command -v tar >/dev/null 2>&1 || die "tar is required."
89
+ mkdir -p "$DIR" || die "Cannot write to $DIR"
90
+
91
+ # ── fetch ────────────────────────────────────────────────────────────────────
92
+ TMP=$(mktemp -d)
93
+ trap 'rm -rf "$TMP"' EXIT
94
+
95
+ say ""
96
+ say "${B}InvestSkill${RST} → $AGENT ${DIM}($DIR)${RST}"
97
+ info "Downloading ${REPO}@${REF} …"
98
+ curl -fsSL "https://codeload.github.com/$REPO/tar.gz/$REF" \
99
+ | tar -xzf - -C "$TMP" --strip-components=1 \
100
+ || die "Download failed. Check the network, or the -r ref '$REF'."
101
+ [ -d "$TMP/prompts" ] || die "Archive has no prompts/ directory — wrong ref?"
102
+
103
+ # ── always: the frameworks themselves ────────────────────────────────────────
104
+ PROMPTS_REL=".investskill/prompts"
105
+ mkdir -p "$DIR/$PROMPTS_REL"
106
+ cp "$TMP/prompts/"*.md "$DIR/$PROMPTS_REL/"
107
+ # report-generator is an output tool and fundamental-analysis / dcf-valuation /
108
+ # research-bundle are alias stubs that redirect to the skill that absorbed them
109
+ # — all are installed, none is counted as an analysis framework. Keep this list
110
+ # in sync with ALIAS_SKILLS in scripts/lib/skill-registry.js (tests check it).
111
+ COUNT=0
112
+ ALIASES=0
113
+ for f in "$DIR/$PROMPTS_REL"/*.md; do
114
+ # Bash leaves an unmatched glob literal — skip it rather than counting it.
115
+ [ -e "$f" ] || continue
116
+ case "$(basename "$f" .md)" in
117
+ report-generator) ;;
118
+ fundamental-analysis|dcf-valuation|research-bundle) ALIASES=$((ALIASES + 1)) ;;
119
+ *) COUNT=$((COUNT + 1)) ;;
120
+ esac
121
+ done
122
+ ok "$COUNT analysis frameworks (+ $ALIASES aliases + report-generator) → $PROMPTS_REL/"
123
+
124
+ skill_names() { ls -1 "$TMP/prompts" | sed 's/\.md$//' | sort; }
125
+
126
+ # A compact, agent-native pointer block. Kept short on purpose: the detail
127
+ # lives in the prompt files, which the agent reads on demand.
128
+ pointer_block() {
129
+ say "$MARK_BEGIN"
130
+ say "## InvestSkill — investment analysis frameworks"
131
+ say ""
132
+ say "This project includes $COUNT structured US-stock analysis frameworks in \`$PROMPTS_REL/\`."
133
+ say "When the user asks for investment analysis, read the matching framework file and"
134
+ say "follow it exactly — its output contract, tables, and Investment Signal Block."
135
+ say ""
136
+ say "Available frameworks:"
137
+ skill_names | sed 's|^|- `'"$PROMPTS_REL"'/|; s|$|.md`|'
138
+ say ""
139
+ say "Example: *\"Evaluate AAPL\"* → read \`$PROMPTS_REL/stock-eval.md\` and apply it to AAPL."
140
+ say "Educational frameworks only — not financial advice."
141
+ say "$MARK_END"
142
+ }
143
+
144
+ # Append the block once; re-running replaces nothing and duplicates nothing.
145
+ wire_into() {
146
+ target="$DIR/$1"
147
+ mkdir -p "$(dirname "$target")"
148
+ if [ -f "$target" ] && grep -qF "$MARK_BEGIN" "$target"; then
149
+ info "$1 already wired — left untouched"
150
+ return
151
+ fi
152
+ if [ -f "$target" ]; then
153
+ { printf '\n'; pointer_block; } >>"$target"
154
+ ok "Appended InvestSkill block → $1"
155
+ else
156
+ pointer_block >"$target"
157
+ ok "Created $1"
158
+ fi
159
+ }
160
+
161
+ # ── per-agent wiring ─────────────────────────────────────────────────────────
162
+ case "$AGENT" in
163
+ claude)
164
+ src="$TMP/plugins/us-stock-analysis/skills"
165
+ [ -d "$src" ] || die "Archive has no skills/ directory — wrong ref?"
166
+ mkdir -p "$DIR/.claude/skills"
167
+ cp -R "$src/." "$DIR/.claude/skills/"
168
+ ok "$(ls -1 "$src" | wc -l | tr -d ' ') skills → .claude/skills/"
169
+ say ""
170
+ say "Next: run ${B}claude${RST} → ${B}\"Evaluate AAPL with the stock-eval skill\"${RST}"
171
+ info "Prefer the marketplace? /plugin marketplace add $REPO"
172
+ ;;
173
+ cursor)
174
+ mkdir -p "$DIR/.cursor/rules"
175
+ {
176
+ say "---"
177
+ say "description: InvestSkill — US stock analysis frameworks"
178
+ say "globs: [\"**/*.md\"]"
179
+ say "alwaysApply: false"
180
+ say "---"
181
+ say ""
182
+ pointer_block
183
+ } >"$DIR/.cursor/rules/investskill.mdc"
184
+ ok "Created .cursor/rules/investskill.mdc"
185
+ say ""
186
+ say "Next: open the project in Cursor → ${B}@$PROMPTS_REL/stock-eval.md Evaluate Apple${RST}"
187
+ ;;
188
+ copilot)
189
+ wire_into ".github/copilot-instructions.md"
190
+ say ""
191
+ say "Next: in Copilot Chat → ${B}#file:$PROMPTS_REL/stock-eval.md Evaluate Apple${RST}"
192
+ ;;
193
+ gemini)
194
+ wire_into "GEMINI.md"
195
+ say ""
196
+ say "Next: run ${B}gemini${RST} → ${B}@$PROMPTS_REL/stock-eval.md Evaluate Apple${RST}"
197
+ ;;
198
+ codex|opencode)
199
+ wire_into "AGENTS.md"
200
+ say ""
201
+ say "Next: start $AGENT in this directory → ${B}Evaluate AAPL using the stock-eval framework${RST}"
202
+ ;;
203
+ any)
204
+ say ""
205
+ say "Next: paste a framework into any LLM →"
206
+ say " ${B}cat $PROMPTS_REL/stock-eval.md${RST}"
207
+ ;;
208
+ esac
209
+
210
+ say ""
211
+ info "Docs: https://yennj12.js.org/InvestSkill/ · Uninstall: rm -rf $PROMPTS_REL"
212
+ say ""
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "investskill",
3
+ "version": "1.12.0",
4
+ "description": "Professional investment analysis frameworks for US stock markets — works with Claude Code, Cursor, Gemini CLI, GitHub Copilot, and any AI assistant",
5
+ "main": "scripts/test-skills.js",
6
+ "scripts": {
7
+ "test": "node scripts/test-skills.js && node scripts/check-skill-contract.js --quiet && node scripts/sync-prompts.js --check && node scripts/test-edgar.js && node scripts/test-install.js",
8
+ "test:contract": "node scripts/check-skill-contract.js",
9
+ "sync:prompts": "node scripts/sync-prompts.js",
10
+ "sync:prompts:check": "node scripts/sync-prompts.js --check",
11
+ "new:skill": "node scripts/new-skill.js",
12
+ "eval:skills": "node scripts/eval-skills.js",
13
+ "fetch:edgar": "node scripts/fetch-edgar.js",
14
+ "fetch:fundamentals": "node scripts/fetch-fundamentals.js",
15
+ "test:skills": "node scripts/test-skills.js",
16
+ "test:install": "node scripts/test-install.js",
17
+ "test:edgar": "node scripts/test-edgar.js",
18
+ "validate": "node scripts/validate-prompts.js",
19
+ "validate:prompts": "node scripts/validate-prompts.js",
20
+ "build:site": "node site/build/build-site.js",
21
+ "check:links": "node site/build/build-site.js && node scripts/check-links.js",
22
+ "review": "node scripts/site-review.js",
23
+ "verify": "node scripts/setup-verify.js",
24
+ "verify:setup": "node scripts/setup-verify.js",
25
+ "pre-release-check": "node scripts/pre-release-check.js",
26
+ "pre-release": "node scripts/pre-release-check.js && node scripts/validate-prompts.js && npm test",
27
+ "release": "node scripts/release-interactive.js",
28
+ "release:dry-run": "node scripts/release-dry-run.js",
29
+ "publish:cursor": "node scripts/publish-cursor-rules.js",
30
+ "publish:gemini": "node scripts/publish-gemini.js",
31
+ "publish:release-notes": "node scripts/generate-platform-release-notes.js",
32
+ "record:deploy": "node scripts/record-deploy.js",
33
+ "integration-tests": "node scripts/integration-tests.js",
34
+ "integration-tests:verbose": "node scripts/integration-tests.js --verbose",
35
+ "notify:release": "node scripts/notify-release.js"
36
+ },
37
+ "keywords": [
38
+ "investment",
39
+ "stock-analysis",
40
+ "valuation",
41
+ "fundamental-analysis",
42
+ "technical-analysis",
43
+ "portfolio",
44
+ "finance",
45
+ "claude-code",
46
+ "cursor",
47
+ "gemini-cli",
48
+ "github-copilot",
49
+ "prompts"
50
+ ],
51
+ "author": "yennanliu",
52
+ "license": "MIT",
53
+ "repository": {
54
+ "type": "git",
55
+ "url": "https://github.com/yennanliu/InvestSkill"
56
+ },
57
+ "homepage": "https://github.com/yennanliu/InvestSkill",
58
+ "bugs": {
59
+ "url": "https://github.com/yennanliu/InvestSkill/issues"
60
+ },
61
+ "engines": {
62
+ "node": ">=18.0.0"
63
+ }
64
+ }