@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,432 +0,0 @@
1
- # InvestSkill Multi-Platform CI/CD Guide
2
-
3
- This document explains how the automated CI/CD system releases InvestSkill to all supported AI platforms.
4
-
5
- ## Overview
6
-
7
- The CI/CD pipeline automatically:
8
- 1. **Validates** code quality and structure
9
- 2. **Tests** all 30 analysis frameworks
10
- 3. **Detects** version changes
11
- 4. **Publishes** to multiple platforms
12
- 5. **Records** deployment history
13
-
14
- ### Supported Platforms
15
-
16
- ✅ **Claude Code** — Official plugin marketplace
17
- ✅ **Cursor** — Rules registry (.cursor/rules)
18
- ✅ **Gemini CLI** — Prompt library (GEMINI.md + prompts/)
19
- ✅ **GitHub Copilot** — Workspace instructions (.github/copilot-instructions.md)
20
- ✅ **Any AI Tool** — Universal prompts (prompts/ directory)
21
-
22
- ---
23
-
24
- ## Workflow Architecture
25
-
26
- ### 1. Validation Pipeline (Always Runs)
27
-
28
- **File**: `.github/workflows/validate.yml`
29
- **Triggers**: Push to main/develop, Pull Requests
30
-
31
- Checks:
32
- - ✅ JSON syntax (marketplace.json, plugin.json)
33
- - ✅ Required files exist
34
- - ✅ Plugin structure is valid
35
- - ✅ SKILL.md frontmatter is correct
36
- - ✅ Version consistency across files
37
- - ✅ Unit tests pass
38
-
39
- ### 2. Test Suite (Always Runs)
40
-
41
- **File**: `.github/workflows/test.yml`
42
- **Triggers**: Every push and PR
43
-
44
- Tests:
45
- - ✅ Every skill directory has a SKILL.md and a matching prompt
46
- - ✅ Prompt files are valid
47
- - ✅ Output formats match standards
48
- - ✅ Signal blocks are properly formatted
49
-
50
- ### 3. Auto-Deploy Workflow (On Version Change)
51
-
52
- **File**: `.github/workflows/auto-deploy.yml`
53
- **Triggers**: After successful test suite on main branch
54
-
55
- Detects version changes in `.claude-plugin/marketplace.json` and automatically:
56
-
57
- 1. **Detect version** — Checks if marketplace version changed
58
- 2. **Validate** — Runs final validation before publishing
59
- 3. **Build packages** — Creates distribution artifacts
60
- 4. **Publish** — Releases to all platforms
61
- 5. **Record** — Updates DEPLOYMENTS.md
62
-
63
- ---
64
-
65
- ## Release Process
66
-
67
- ### Trigger a Release
68
-
69
- 1. **Bump version** in marketplace and plugin files:
70
-
71
- ```bash
72
- # Edit .claude-plugin/marketplace.json
73
- # Change: "version": "X.Y.Z"
74
-
75
- # Edit plugins/us-stock-analysis/.claude-plugin/plugin.json
76
- # Change: "version": "X.Y.Z"
77
- ```
78
-
79
- 2. **Update CHANGELOG.md**:
80
-
81
- ```markdown
82
- ## [X.Y.Z] - YYYY-MM-DD
83
-
84
- ### Added
85
- - Feature description
86
-
87
- ### Changed
88
- - Change description
89
-
90
- ### Fixed
91
- - Bug fix description
92
- ```
93
-
94
- 3. **Commit changes**:
95
-
96
- ```bash
97
- git add .claude-plugin/marketplace.json plugins/us-stock-analysis/.claude-plugin/plugin.json CHANGELOG.md
98
- git commit -m "chore: bump version to X.Y.Z"
99
- git push origin main
100
- ```
101
-
102
- 4. **GitHub Actions detects version change** and automatically:
103
- - Validates everything
104
- - Publishes to all platforms
105
- - Updates DEPLOYMENTS.md
106
- - Creates GitHub release with artifacts
107
-
108
- ### Example Release
109
-
110
- ```bash
111
- # Version: 1.4.0
112
- # Updated: marketplace.json, plugin.json, CHANGELOG.md
113
-
114
- $ git push origin main
115
-
116
- # Auto-deploy.yml triggers after tests pass:
117
- # ✅ Version change detected: 1.3.0 → 1.4.0
118
- # ✅ Pre-deployment validation passed
119
- # ✅ Built release packages
120
- # ✅ Published to Claude Code marketplace
121
- # ✅ Published Cursor rules
122
- # ✅ Published Gemini CLI prompts
123
- # ✅ Generated platform-specific release notes
124
- # ✅ Recorded deployment in DEPLOYMENTS.md
125
- ```
126
-
127
- ---
128
-
129
- ## Platform-Specific Publishing
130
-
131
- ### 1. Claude Code Plugin Marketplace
132
-
133
- **What happens**:
134
- - GitHub Release created with artifacts
135
- - `dist/invest-skill-marketplace-X.Y.Z.tar.gz` uploaded
136
- - `dist/us-stock-analysis-X.Y.Z.tar.gz` uploaded
137
- - SHA256 checksums generated
138
-
139
- **Installation**:
140
- ```bash
141
- /plugin marketplace add yennanliu/InvestSkill
142
- /plugin install us-stock-analysis
143
- ```
144
-
145
- **Script**: Built-in via GitHub Actions
146
- **Triggered by**: Version change detection
147
-
148
- ---
149
-
150
- ### 2. Cursor Rules Publishing
151
-
152
- **What happens**:
153
- - `.cursor/rules/invest-skill.mdc` packaged as `cursor-rules-X.Y.Z.mdc`
154
- - Metadata JSON created: `cursor-rules-metadata.json`
155
- - Artifacts included in GitHub release
156
-
157
- **Installation**:
158
- ```bash
159
- # Auto-loaded if in InvestSkill repository
160
- cd InvestSkill && cursor .
161
-
162
- # Or manually: copy .cursor/rules/invest-skill.mdc to your project
163
- ```
164
-
165
- **Script**: `scripts/publish-cursor-rules.js`
166
- **Triggered by**: `auto-deploy.yml` after successful tests
167
-
168
- **Registry Integration** (Future):
169
- - Set `CURSOR_REGISTRY_TOKEN` environment variable
170
- - Rules will publish to Cursor registry automatically
171
- - Currently falls back to GitHub release artifacts
172
-
173
- ---
174
-
175
- ### 3. Gemini CLI Prompts
176
-
177
- **What happens**:
178
- - All prompts (`prompts/*.md`) packaged as `gemini-prompts-X.Y.Z.tar.gz`
179
- - GEMINI.md configuration included
180
- - Metadata JSON created: `gemini-metadata.json`
181
- - Installation guide: `GEMINI-INSTALLATION.md`
182
-
183
- **Installation**:
184
- ```bash
185
- cd /path/to/InvestSkill
186
- gemini
187
- > @prompts/stock-valuation.md Analyze AAPL
188
- ```
189
-
190
- **Script**: `scripts/publish-gemini.js`
191
- **Triggered by**: `auto-deploy.yml` after successful tests
192
-
193
- **Registry Integration** (Future):
194
- - Set `GEMINI_REGISTRY_TOKEN` environment variable
195
- - Set `GEMINI_REGISTRY_URL` (optional)
196
- - Prompts will publish to Gemini registry
197
- - Currently falls back to GitHub release artifacts
198
-
199
- ---
200
-
201
- ### 4. GitHub Copilot
202
-
203
- **What happens**:
204
- - `.github/copilot-instructions.md` updated in repository
205
- - Copilot auto-loads instructions when repository is opened
206
- - Release notes include Copilot setup
207
-
208
- **Installation**:
209
- ```bash
210
- # Clone repository
211
- git clone https://github.com/yennanliu/InvestSkill.git
212
- cd InvestSkill
213
-
214
- # Open in VS Code or JetBrains IDE
215
- code .
216
- # or
217
- # Right-click folder → Open with IntelliJ IDEA
218
-
219
- # Open Copilot Chat (Cmd+K)
220
- # Copilot auto-loads instructions
221
- ```
222
-
223
- **What's automated**:
224
- - No publishing step needed (lives in repository)
225
- - Auto-updates on every commit
226
-
227
- ---
228
-
229
- ### 5. Universal Prompts (Any AI Tool)
230
-
231
- **What happens**:
232
- - All prompts packaged as standalone files
233
- - Users can copy/paste into any AI chat
234
- - Released as artifacts in GitHub release
235
-
236
- **Installation**:
237
- ```bash
238
- # Copy prompt file to clipboard
239
- cat prompts/stock-valuation.md | pbcopy
240
-
241
- # Paste into ChatGPT, Claude.ai, etc.
242
- # Ask: "Analyze AAPL using the framework above"
243
- ```
244
-
245
- **What's automated**:
246
- - Included in GitHub release as source files
247
-
248
- ---
249
-
250
- ## Platform Release Notes
251
-
252
- The system automatically generates platform-specific release notes:
253
-
254
- | File | Platform | Purpose |
255
- |------|----------|---------|
256
- | CLAUDE-CODE-RELEASE-NOTES.md | Claude Code | Installation & usage for plugin |
257
- | CURSOR-RELEASE-NOTES.md | Cursor | Installation & usage for rules |
258
- | GEMINI-RELEASE-NOTES.md | Gemini CLI | Installation & usage for prompts |
259
- | COPILOT-RELEASE-NOTES.md | Copilot | Installation & usage for workspace |
260
- | UNIVERSAL-RELEASE-NOTES.md | Any AI | Installation & usage for prompts |
261
-
262
- **Generated by**: `scripts/generate-platform-release-notes.js`
263
- **Location**: `dist/` directory
264
- **Included in**: GitHub release artifacts
265
-
266
- ---
267
-
268
- ## Deployment History
269
-
270
- **File**: `DEPLOYMENTS.md`
271
-
272
- Auto-updated after each successful release. Shows:
273
- - Version number
274
- - Deployment timestamp
275
- - Commit SHA
276
- - Number of skills
277
- - Links to GitHub release and CI run
278
- - Status for each platform
279
-
280
- ```markdown
281
- ## v1.4.0 — 2026-02-27 15:30 UTC
282
-
283
- | Field | Value |
284
- |-------|-------|
285
- | Version | `1.4.0` |
286
- | Commit | `a1b2c3d` |
287
- | Deployed at | 2026-02-27 15:30 UTC |
288
- | Skills | 18 |
289
- | Release | [GitHub Release](https://...) |
290
-
291
- ### Marketplace targets
292
-
293
- | Target | Status | Install |
294
- |--------|--------|---------|
295
- | **Claude Code** | ✅ Deployed | `/plugin install us-stock-analysis` |
296
- | **Cursor** | ✅ Updated | Copy `.cursor/rules/invest-skill.mdc` |
297
- | **Gemini CLI** | ✅ Updated | Reference `GEMINI.md` |
298
- | **GitHub Copilot** | ✅ Updated | Auto-applied |
299
- ```
300
-
301
- ---
302
-
303
- ## Environment Variables (For Registry Publishing)
304
-
305
- Add these to GitHub Secrets to enable direct registry publishing:
306
-
307
- ```
308
- # Cursor Registry (Optional)
309
- CURSOR_REGISTRY_TOKEN=<your-cursor-registry-token>
310
-
311
- # Gemini Registry (Optional)
312
- GEMINI_REGISTRY_TOKEN=<your-gemini-registry-token>
313
- GEMINI_REGISTRY_URL=https://registry.gemini.ai (optional)
314
- ```
315
-
316
- Without these variables, the system falls back to GitHub release artifacts, which still works perfectly.
317
-
318
- ---
319
-
320
- ## Debugging the CI/CD
321
-
322
- ### View Workflow Logs
323
-
324
- 1. Go to: https://github.com/yennanliu/InvestSkill/actions
325
- 2. Click on a workflow run
326
- 3. View logs for each step
327
-
328
- ### Common Issues
329
-
330
- #### Version not detected
331
-
332
- ```bash
333
- # Make sure versions match across files:
334
- jq '.metadata.version' .claude-plugin/marketplace.json
335
- jq '.version' plugins/us-stock-analysis/.claude-plugin/plugin.json
336
-
337
- # They must be identical
338
- ```
339
-
340
- #### Validation failed
341
-
342
- ```bash
343
- # Run local validation:
344
- node scripts/test-skills.js
345
-
346
- # Check JSON:
347
- jq empty .claude-plugin/marketplace.json
348
- jq empty plugins/us-stock-analysis/.claude-plugin/plugin.json
349
- ```
350
-
351
- #### Release artifacts not created
352
-
353
- ```bash
354
- # Check dist/ directory exists
355
- mkdir -p dist
356
-
357
- # Verify tar commands work locally
358
- tar -czf dist/test.tar.gz .
359
- ```
360
-
361
- ---
362
-
363
- ## Extending the CI/CD
364
-
365
- ### Add a New Platform
366
-
367
- 1. Create a new script: `scripts/publish-<platform>.js`
368
- 2. Add platform-specific publishing logic
369
- 3. Update `.github/workflows/auto-deploy.yml`:
370
- ```yaml
371
- - name: Publish to <Platform>
372
- run: node scripts/publish-<platform>.js
373
- env:
374
- PLATFORM_VERSION: ${{ env.VERSION }}
375
- ```
376
- 4. Update record-deploy.js to include new platform
377
- 5. Add platform-specific release notes generation
378
-
379
- ### Add a New Validation Check
380
-
381
- 1. Update `.github/workflows/validate.yml`
382
- 2. Add new check step with validation logic
383
- 3. Exit with error code if validation fails
384
-
385
- ### Add a New Test Suite
386
-
387
- 1. Create test file: `scripts/test-<feature>.js`
388
- 2. Add to `.github/workflows/test.yml`
389
- 3. Run on every commit
390
-
391
- ---
392
-
393
- ## Release Checklist
394
-
395
- Before bumping version:
396
-
397
- - [ ] All features complete and tested
398
- - [ ] CHANGELOG.md updated with details
399
- - [ ] README.md updated if needed
400
- - [ ] All platform docs updated (GEMINI.md, etc.)
401
- - [ ] No uncommitted changes
402
- - [ ] Tests passing locally
403
-
404
- When bumping version:
405
-
406
- - [ ] Update `.claude-plugin/marketplace.json`
407
- - [ ] Update `plugins/us-stock-analysis/.claude-plugin/plugin.json`
408
- - [ ] Update CHANGELOG.md
409
- - [ ] Commit changes to main
410
- - [ ] Wait for auto-deploy to complete
411
- - [ ] Verify GitHub release created
412
- - [ ] Verify DEPLOYMENTS.md updated
413
-
414
- ---
415
-
416
- ## Support
417
-
418
- For CI/CD issues or questions:
419
-
420
- 1. Check workflow logs: https://github.com/yennanliu/InvestSkill/actions
421
- 2. Open an issue: https://github.com/yennanliu/InvestSkill/issues
422
- 3. Check CHANGELOG.md for recent updates
423
-
424
- ---
425
-
426
- ## References
427
-
428
- - [GitHub Actions Documentation](https://docs.github.com/en/actions)
429
- - [Claude Code Plugin Development](https://code.claude.com/docs/plugins)
430
- - [Cursor Rules Guide](https://cursor.sh/docs/rules)
431
- - [Gemini CLI Documentation](https://gemini.ai/docs)
432
- - [GitHub Copilot Configuration](https://docs.github.com/en/copilot/managing-copilot/configure-personal-settings)
@@ -1,148 +0,0 @@
1
- # CLAUDE.md
2
-
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
-
5
- ## Commands
6
-
7
- ```bash
8
- npm test # Run all unit tests (skill/structure + install script)
9
- npm run test:skills # Skill/structure tests only (270+ checks)
10
- npm run test:install # install.sh tests (static checks + sandboxed runs)
11
- npm run validate # Validate prompt file contents and format
12
- npm run pre-release # Full pre-release check: pre-release-check + validate + test
13
- npm run verify # Verify local setup is correct
14
- npm run release:dry-run # Preview release without making changes
15
- npm run integration-tests # Run integration tests
16
- ```
17
-
18
- Validate JSON manifests manually:
19
- ```bash
20
- jq empty plugins/us-stock-analysis/.claude-plugin/plugin.json
21
- jq empty .claude-plugin/marketplace.json
22
- ```
23
-
24
- ## Architecture
25
-
26
- InvestSkill is a **prompt-engineering plugin**, not traditional software. There is no application runtime — the "skills" are structured markdown frameworks that guide AI assistants through investment analysis workflows.
27
-
28
- ### Skill Distribution Model
29
-
30
- Each skill lives in two forms simultaneously:
31
-
32
- 1. **`plugins/us-stock-analysis/skills/<name>/SKILL.md`** — Claude Code form, includes YAML frontmatter (`---\ndescription: ...\n---`) and uses slash command syntax
33
- 2. **`prompts/<name>.md`** — Universal form, identical content but with frontmatter stripped, AI-agnostic (no slash commands)
34
-
35
- These two files must stay in sync. The `prompts/` version is what Cursor, Gemini CLI, GitHub Copilot, and ChatGPT users access.
36
-
37
- ### Platform Config Files
38
-
39
- | File | Platform |
40
- |------|----------|
41
- | `plugins/us-stock-analysis/.claude-plugin/plugin.json` | Claude Code plugin manifest |
42
- | `.claude-plugin/marketplace.json` | Claude marketplace listing |
43
- | `.cursor/rules/invest-skill.mdc` | Cursor IDE auto-loading rules |
44
- | `.github/copilot-instructions.md` | GitHub Copilot auto-loading |
45
- | `GEMINI.md` | Gemini CLI auto-loading |
46
-
47
- ### Signal Block Requirement
48
-
49
- Every SKILL.md and every `prompts/*.md` must close with the standardized Investment Signal section: the box-drawn block (UTF-8 box-drawing characters), followed only by the Score Guide / Confidence / Horizon lines, an optional one-paragraph mapping note, and the `**Disclaimer:**` line. Nothing else may follow the block. `check-skill-contract.js` and Test 5/7 validate the block's presence; the closing order is a convention every skill follows.
50
-
51
- ## Adding a New Skill (12-step process)
52
-
53
- See `ADDING-NEW-SKILLS.md` for the full walkthrough. Key steps:
54
-
55
- 1. Create `plugins/us-stock-analysis/skills/<name>/SKILL.md` with frontmatter
56
- 2. Create `prompts/<name>.md` — same content, no frontmatter, no platform-specific syntax
57
- 3. Skills are auto-discovered from the `skills/` directory — no changes needed in `plugin.json`
58
- 4. Bump version in **all three**: `plugin.json`, `.claude-plugin/marketplace.json` (both `metadata.version` and the plugin entry), and `package.json` (must match — see Version Consistency Rule)
59
- 5. Update `.cursor/rules/invest-skill.mdc`, `.github/copilot-instructions.md`, `GEMINI.md` (table row + example + directory tree)
60
- 6. Update `README.md` and platform-specific `README-*.md` files (framework table row + count)
61
- 7. **Update the site** (both English and Traditional Chinese — see Site Update Rule)
62
- 8. Add entry to `CHANGELOG.md`
63
- 9. Run `npm run pre-release` (pre-release-check + validate + `npm test`) to confirm all tests pass
64
- 10. Run `npm run build:site` to confirm the site builds and the new skill lands in the right category
65
-
66
- ## Site Update Rule
67
-
68
- The public site (`site/`) is generated by `site/build/build-site.js` and deployed by CI — the `_site/` output is gitignored, so you commit **source**, not built HTML. **Whenever a skill is added, renamed, or removed, update the site in the same change:**
69
-
70
- 1. **`site/build/build-site.js` → `SKILL_CATEGORIES`** — add the skill to the correct category so it appears in the right group on `skills.html` (an unlisted skill still renders, but falls into a generic "Other" bucket). Keep these categories mirroring the README's framework table.
71
- 2. **`site/content/CHOOSE-A-SKILL.md` and `CHOOSE-A-SKILL-zh-TW.md`** — add a "goal → skill" row so users can discover it (both languages).
72
- 3. **`site/content/COOKBOOK.md` and `COOKBOOK-zh-TW.md`** — update the framework count and, if the skill warrants it, add a usage recipe (both languages).
73
- 4. Per-skill reference pages (`skill-<name>.html`) are auto-generated from `prompts/<name>.md` — no manual page needed.
74
- 5. Run `npm run build:site` and confirm: `All N frameworks` shows the new count, `skill-<name>.html` is generated, and the skill is not stranded under "Other".
75
-
76
- Always update **both** the English and Traditional Chinese (`-zh-TW`) variants of any site content file you touch.
77
-
78
- ## QA Report Retention Rule
79
-
80
- The daily site review (`npm run review` / `.github/workflows/site-review.yml`) writes `qa/site_review_YYYYMMDD.md`. **Only the last 5 days are kept** — `scripts/site-review.js` prunes older reports on every run (`RETENTION_DAYS`), and the workflow stages `qa/` with `git add -A` so those deletions land in the same commit. `qa/PROJECT-REVIEW.md` is the hand-written qualitative review and is never pruned.
81
-
82
- ## Install Script Rule
83
-
84
- `install.sh` is the one-command curl installer (`curl -fsSL .../install.sh | bash -s -- -a <agent>`). It is tested by `scripts/test-install.js` (`npm run test:install`) and by `.github/workflows/install-script.yml`.
85
-
86
- When you touch `install.sh`:
87
-
88
- 1. **Adding or renaming an agent** means four places, or the tests fail: the `AGENTS` list in `install.sh`, its branch in the per-agent `case` block, its row in `list_agents()`, and the matching entry in `INSTALL_TARGETS` in `site/build/build-site.js` (id + advertised `path`). The parity checks in `scripts/test-install.js` compare all of these.
89
- 2. **Keep it shellcheck-clean** at `--severity=warning` (`shellcheck --severity=warning --shell=bash install.sh`) — CI fails otherwise.
90
- 3. **Never overwrite a user's file.** Existing instruction files are appended to inside the `MARK_BEGIN`/`MARK_END` block, and a second run must leave the tree byte-identical. Both properties are asserted.
91
- 4. `rm -rf` may only ever target the script's own `mktemp -d` directory (`$TMP`). Enforced by both the test suite and the lint job.
92
- 5. The tests run `install.sh` for real in a sandbox with a `curl` test double serving a tarball built from the working tree — no network, but the actual download → extract → copy → wire path executes. `KEEP_INSTALL_TEST_DIR=1` keeps the sandbox for inspection.
93
-
94
- Documented curl commands in `README*.md` and `site/content/COOKBOOK*.md` are checked too: the URL must be the `raw.githubusercontent.com/yennanliu/InvestSkill/<ref>/install.sh` form and every `-a AGENT` must be a supported agent.
95
-
96
- ## Bring-Your-Own-Data Helpers Rule
97
-
98
- InvestSkill has **no runtime**: the skills fetch nothing. Two optional, zero-dependency Node scripts exist so a user without a tool-enabled assistant can still paste a primary source — `scripts/fetch-edgar.js` (an EDGAR filing → `data/filings/<TICKER>/` as `.htm`, stripped `.txt`, and a `.json` of header fields) and `scripts/fetch-fundamentals.js` (SEC XBRL companyfacts → `data/fixtures/<TICKER>.md`, same shape as the ZEPH eval fixture). Shared plumbing is `scripts/lib/edgar.js`.
99
-
100
- - They stay **outside the plugin**, and `npm test` never runs them against the SEC (they need the network) — only their offline suite below; `npm run fetch:edgar` / `fetch:fundamentals` are the only user-facing wiring. Do not add data fetching to any SKILL.md — the skills carry the *recipe* (URLs a tool-enabled host can follow) in `10k-digest`, `financial-report-analyst`, and `fact-check`, and the Data & Accuracy page documents it.
101
- - **Never commit filings or generated real-ticker packs.** `data/filings/` and `data/fixtures/*` (except the fictional `ZEPH.md`) are ignored via `.gitignore`; real numbers go stale and PDFs bloat a markdown plugin.
102
- - Save text, not PDFs — the skills consume text. No Playwright / headless-browser dependency.
103
- - Honour SEC fair access: an identifying `User-Agent` (`EDGAR_USER_AGENT` env) and paced requests (`edgar.js` enforces the interval).
104
- - **Tests:** `scripts/test-edgar.js` (`npm run test:edgar`, part of `npm test` and the `test.yml` / `pr-check.yml` / `validate.yml` workflows) covers the library in-process and runs both CLIs as subprocesses against the fetch double `scripts/lib/edgar-mock-fetch.js` — no network. Add a route to the double when you add an endpoint; keep the synthetic AAPL facts equal to the real FY2025 figures so the pack stays sanity-checkable. When you change what the helpers fetch, also run them once against a real ticker.
105
-
106
- ## Version Consistency Rule
107
-
108
- All three version fields must match at all times:
109
- - `plugins/us-stock-analysis/.claude-plugin/plugin.json` → `"version"`
110
- - `.claude-plugin/marketplace.json` → `"metadata.version"` (and the plugin entry's `version`)
111
- - `package.json` → `"version"`
112
-
113
- Verify with: `jq '.version' plugins/us-stock-analysis/.claude-plugin/plugin.json && jq '.metadata.version' .claude-plugin/marketplace.json && jq '.version' package.json`
114
-
115
- This is enforced by the consistency checks in `npm test`.
116
-
117
- ## Release Timing Rule
118
-
119
- Choosing the version number and *when* to cut the release both matter — don't tag prematurely.
120
-
121
- **Which number to bump (SemVer):**
122
- - **MINOR** (`1.8.x → 1.9.0`) — a new skill/framework, or a meaningful new capability. (Adding `bear-case` and `position-ladder` were minor bumps.)
123
- - **PATCH** (`1.9.0 → 1.9.1`) — fixes, doc/site tweaks, prompt refinements with no new skill.
124
- - **MAJOR** (`1.x → 2.0.0`) — breaking changes to skill names, output contracts, or the plugin layout.
125
-
126
- **When to stamp the date and tag:**
127
- - The `## [X.Y.Z] - YYYY-MM-DD` heading in `CHANGELOG.md` must carry the **actual release date**, not the day you started the work. If the ship date is uncertain, keep the changes under `## [Unreleased]` and let the release step stamp the date when the release is actually cut.
128
- - The git tag `vX.Y.Z` is created by `npm run release` (`release-interactive.js`), which commits the version bump, tags, and triggers CI. **Create the tag at release time — do not tag ahead of merge.** Preview first with `npm run release:dry-run`.
129
- - Feature work lands on a branch → PR → merge to `main`; the tag/release is cut from `main` once merged. The manifest version can be bumped in the feature branch (tests require CHANGELOG ↔ manifest version parity), but the *tag* waits until the release is genuinely happening.
130
- - Batch small changes: prefer one clean `1.9.0` release over tagging every intermediate commit. Cut the release when the set of changes is coherent and green (`npm run pre-release` passes).
131
-
132
- ## Framework Count Rule
133
-
134
- The **advertised framework count** = number of skills in `plugins/us-stock-analysis/skills/` **minus output-only tools** (`report-generator`) **minus alias/redirect stubs** (`fundamental-analysis`, `dcf-valuation`, `research-bundle`). It is currently **30 analysis frameworks** (34 skill directories − 1 output tool − 3 aliases). The classification lives in one place — `scripts/lib/skill-registry.js` (`OUTPUT_TOOLS`, `ALIAS_SKILLS`, `META_SKILLS`) — and is imported by `test-skills.js`, `test-install.js`, `check-skill-contract.js`, and `site/build/build-site.js`. The alias list is mirrored in `install.sh`'s `case` block (the install tests check parity).
135
-
136
- - Keep this number consistent across `README.md`, `README-zh-TW.md`, `site/content/CHOOSE-A-SKILL(-zh-TW).md`, `site/content/COOKBOOK(-zh-TW).md`, and `plugin.json`'s description.
137
- - `site/build/build-site.js` derives it automatically (`FRAMEWORK_COUNT`) — never hardcode a count there.
138
- - Enforced by the consistency checks in `npm test` (stale totals like 18/21 will fail):
139
- - **Test 11** checks the six site-facing `COUNT_DOCS` for "N frameworks" claims.
140
- - **Test 13** checks the cross-AI configs (`GEMINI.md`, `.cursor/rules/invest-skill.mdc`, `.github/copilot-instructions.md`) — every prompt must be referenced (a new skill can't be silently omitted from a platform), and every "N frameworks" claim must equal the advertised count. It also checks the COOKBOOK plugin-list skill counts equal the skill-directory count.
141
-
142
- ## Current State
143
-
144
- - **Version**: 1.12.0 (plugin.json = marketplace.json = package.json)
145
- - **Skills**: 34 directories in `plugins/us-stock-analysis/skills/` (auto-discovered)
146
- - **Advertised frameworks**: 30 analysis frameworks (34 − `report-generator` − 3 aliases)
147
- - **Prompts**: 34 universal files in `prompts/` — **generated** from SKILL.md by `scripts/sync-prompts.js` (never hand-edit them; `--check` runs in `npm test`)
148
- - **Node**: ≥18.0.0 required