@v587d/capital-generation 2.7.11 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/CHANGELOG.md +76 -3
  2. package/README.md +4 -2
  3. package/chart-ui/package.json +1 -1
  4. package/config/package.json +1 -1
  5. package/lib/agents/bash-guard.d.ts +22 -17
  6. package/lib/agents/bash-guard.js +32 -28
  7. package/lib/agents/root-tool-policy.d.ts +29 -3
  8. package/lib/agents/root-tool-policy.js +100 -14
  9. package/lib/index.js +14 -8
  10. package/lib/web-retriever/local-fetch.d.ts +1 -1
  11. package/lib/web-retriever/local-fetch.js +1 -1
  12. package/lib/web-retriever/wind-client.d.ts +1 -1
  13. package/lib/web-retriever/wind-client.js +1 -1
  14. package/package.json +1 -1
  15. package/preset/capital-generation/README.md +22 -15
  16. package/preset/capital-generation/agent.patch.yml +20 -4
  17. package/preset/capital-generation/skills/capital-data-profile/SKILL.md +177 -0
  18. package/preset/capital-generation/skills/capital-data-protocol/SKILL.md +11 -269
  19. package/preset/capital-generation/skills/capital-data-query/SKILL.md +109 -0
  20. package/preset/capital-generation/skills/capital-equity-research/SKILL.md +2 -2
  21. package/preset/capital-generation/skills/capital-orchestration/SKILL.md +3 -2
  22. package/preset/capital-generation/skills/capital-web-evidence/SKILL.md +134 -0
  23. package/preset/capital-generation/skills/capital-web-protocol/SKILL.md +10 -130
  24. package/selected-skills/InvestSkill/UPSTREAM.md +18 -0
  25. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/SKILL.md +10 -296
  26. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/references/10-retrieving-the-filing.md +130 -0
  27. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/references/11-key-metrics-table.md +129 -0
  28. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/references/12-language-mode.md +60 -0
  29. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/SKILL.md +13 -152
  30. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/references/10-analysis-framework.md +75 -0
  31. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/references/11-output-and-signal.md +51 -0
  32. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/references/12-thesis-invalidation.md +44 -0
  33. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/SKILL.md +10 -284
  34. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/references/10-persona.md +113 -0
  35. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/references/11-section-c-company-specific.md +108 -0
  36. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/references/12-section-f-90-day.md +85 -0
  37. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/SKILL.md +11 -433
  38. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/references/10-overview.md +82 -0
  39. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/references/11-porter-s-five-forces.md +137 -0
  40. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/references/12-innovation-disruption-assessment.md +112 -0
  41. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/references/13-input-formats.md +130 -0
  42. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/SKILL.md +12 -639
  43. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/10-analysis-framework.md +138 -0
  44. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/11-dividend-history-and-reliability.md +131 -0
  45. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/12-share-buyback-analysis.md +125 -0
  46. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/13-fcf-deployment-scorecard.md +133 -0
  47. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/references/14-output.md +149 -0
  48. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/SKILL.md +10 -411
  49. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/references/10-analysis-framework.md +194 -0
  50. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/references/11-data-sources.md +196 -0
  51. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/references/12-thesis-invalidation.md +43 -0
  52. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/SKILL.md +11 -234
  53. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/references/10-overview.md +86 -0
  54. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/references/11-phase-4-the-implied.md +60 -0
  55. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/references/12-output-format.md +83 -0
  56. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/references/13-standard-signal-output.md +34 -0
  57. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/SKILL.md +10 -304
  58. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/references/10-key-economic-indicators.md +98 -0
  59. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/references/11-credit-market-indicators.md +114 -0
  60. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/references/12-recession-probability-scoring.md +114 -0
  61. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/SKILL.md +11 -236
  62. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/references/10-overview.md +83 -0
  63. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/references/11-phase-5-overlap-with.md +69 -0
  64. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/references/12-output-format.md +79 -0
  65. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/references/13-standard-signal-output.md +34 -0
  66. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/SKILL.md +11 -243
  67. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/10-overview.md +61 -0
  68. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/11-phase-2-source-hierarchy.md +54 -0
  69. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/12-phase-5-consistency.md +90 -0
  70. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/references/13-notes.md +68 -0
  71. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/SKILL.md +11 -499
  72. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/references/10-overview.md +143 -0
  73. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/references/11-phase-3-financial-statement.md +167 -0
  74. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/references/12-phase-6-management-tone.md +176 -0
  75. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/references/13-thesis-invalidation.md +43 -0
  76. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/SKILL.md +10 -291
  77. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/references/10-overview.md +117 -0
  78. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/references/11-step-3-position-locator.md +112 -0
  79. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/references/12-visualization-support.md +84 -0
  80. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/SKILL.md +10 -457
  81. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/references/10-analysis-framework.md +185 -0
  82. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/references/11-pattern-recognition.md +175 -0
  83. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/references/12-interpretation-guidelines.md +120 -0
  84. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/SKILL.md +11 -503
  85. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/10-analysis-framework.md +132 -0
  86. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/11-ownership-concentration-analysis.md +166 -0
  87. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/12-red-flags-warning-signs.md +192 -0
  88. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/references/13-thesis-invalidation.md +43 -0
  89. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/SKILL.md +11 -264
  90. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/10-overview.md +63 -0
  91. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/11-phase-2-explanation-card.md +108 -0
  92. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/12-output-format.md +88 -0
  93. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/references/13-standard-signal-output.md +34 -0
  94. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/SKILL.md +11 -448
  95. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/references/10-analysis-framework.md +109 -0
  96. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/references/11-implied-volatility-iv-analysis.md +102 -0
  97. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/references/12-earnings-play-analysis.md +109 -0
  98. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/references/13-data-sources.md +159 -0
  99. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/SKILL.md +11 -435
  100. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/references/10-phase-1-portfolio-snapshot.md +124 -0
  101. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/references/11-phase-6-correlation-diversification.md +124 -0
  102. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/references/12-phase-9-rebalancing-decision.md +153 -0
  103. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/references/13-data-verification.md +62 -0
  104. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/SKILL.md +11 -372
  105. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/references/10-overview.md +102 -0
  106. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/references/11-phase-3-the-trim.md +88 -0
  107. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/references/12-phase-6-the-thesis.md +105 -0
  108. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/references/13-input-formats.md +105 -0
  109. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/SKILL.md +10 -250
  110. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/references/10-overview.md +92 -0
  111. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/references/11-phase-4-correlation-spike.md +116 -0
  112. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/references/12-notes.md +65 -0
  113. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/SKILL.md +11 -381
  114. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/10-sector-overview.md +123 -0
  115. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/11-sector-correlation-matrix.md +90 -0
  116. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/12-peer-benchmarking-within-sector.md +92 -0
  117. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/references/13-consumer-staples.md +105 -0
  118. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/SKILL.md +10 -352
  119. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/references/10-analysis-framework.md +110 -0
  120. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/references/11-bearish-thesis-evaluation.md +118 -0
  121. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/references/12-data-sources.md +148 -0
  122. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/SKILL.md +16 -603
  123. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/10-analysis-components.md +122 -0
  124. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/11-dupont-decomposition.md +121 -0
  125. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/12-quality-scoring-framework.md +115 -0
  126. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/13-dcf-framework.md +113 -0
  127. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/14-analyst-consensus-tracking.md +127 -0
  128. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/references/15-thesis-invalidation.md +43 -0
  129. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/SKILL.md +13 -177
  130. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/references/10-scoring-framework.md +85 -0
  131. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/references/11-output-format.md +58 -0
  132. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/references/12-invalidation-and-signal.md +51 -0
  133. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/SKILL.md +12 -595
  134. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/references/10-overview.md +133 -0
  135. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/references/11-method-2-comparable-company.md +127 -0
  136. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/references/12-football-field-summary-valuation.md +140 -0
  137. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/references/13-terminal-value-two-methods.md +121 -0
  138. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/references/14-when-dcf-is.md +110 -0
  139. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/SKILL.md +12 -304
  140. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/references/10-overview.md +73 -0
  141. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/references/11-phase-3-dividends-qualified.md +67 -0
  142. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/references/12-framework-non-us-module.md +61 -0
  143. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/references/13-scoring-tax-efficiency-score.md +83 -0
  144. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/references/14-thesis-invalidation.md +55 -0
  145. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/SKILL.md +16 -612
  146. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/10-chart-pattern-analysis.md +172 -0
  147. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/11-chart-visualization-support.md +181 -0
  148. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/12-multi-timeframe-analysis-mtf.md +95 -0
  149. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/13-advanced-indicators-ichimoku-cloud.md +61 -0
  150. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/14-options-flow-integration.md +95 -0
  151. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/references/15-thesis-invalidation.md +45 -0
  152. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/SKILL.md +10 -274
  153. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/10-overview.md +94 -0
  154. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/11-phase-5-the-pre.md +113 -0
  155. package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/references/12-example.md +90 -0
  156. package/selected-skills/claude-for-financial-services-cn/UPSTREAM.md +1 -0
  157. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-catalyst-calendar/SKILL.md +18 -184
  158. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-catalyst-calendar/references/10-catalyst-types.md +64 -0
  159. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-catalyst-calendar/references/11-workflow-and-calendar.md +131 -0
  160. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-idea-generation/SKILL.md +16 -195
  161. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-idea-generation/references/10-workflow.md +201 -0
  162. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-sector-overview/SKILL.md +17 -156
  163. package/selected-skills/claude-for-financial-services-cn/vertical-plugins/china-finance/skills/china-sector-overview/references/10-workflow.md +161 -0
  164. package/selected-skills/investment-skills/UPSTREAM.md +1 -0
  165. package/selected-skills/investment-skills/skills/buffett-investment-framework/SKILL.md +31 -122
  166. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{01-decision-posture.md → 01-decision-posture-D01-D04.md} +0 -119
  167. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/01-decision-posture-D05-D09.md +123 -0
  168. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/02-business-economics-B01-B03.md +94 -0
  169. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{02-business-economics.md → 02-business-economics-B04-B07.md} +3 -93
  170. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{03-management-governance.md → 03-management-governance-M01-M04.md} +0 -93
  171. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/03-management-governance-M05-M08.md +97 -0
  172. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/04-financial-reality-F01-F03.md +95 -0
  173. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{04-financial-reality.md → 04-financial-reality-F04-F07.md} +3 -94
  174. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{05-valuation.md → 05-valuation-V01-V03.md} +0 -72
  175. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/05-valuation-V04-V06.md +76 -0
  176. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{06-capital-allocation.md → 06-capital-allocation-C01-C04.md} +0 -115
  177. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/06-capital-allocation-C05-C09.md +119 -0
  178. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/{07-risk-monitoring.md → 07-risk-monitoring-R01-R03.md} +0 -94
  179. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/07-risk-monitoring-R04-R07.md +98 -0
  180. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays-S01-S03.md +99 -0
  181. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays-S04-S06.md +72 -0
  182. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays-S07-S09.md +74 -0
  183. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays-S10-S12.md +76 -0
  184. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/09-workflows.md +96 -0
  185. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/10-method.md +12 -0
  186. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/11-deterministic-router.md +11 -0
  187. package/selected-skills/peter-lynch-skill/UPSTREAM.md +1 -0
  188. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/SKILL.md +12 -86
  189. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/10-workflow.md +94 -0
  190. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology-1.md +220 -0
  191. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology-2.md +146 -0
  192. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology-3.md +114 -0
  193. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology-4.md +113 -0
  194. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/methodology.md +8 -521
  195. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-1.md +119 -0
  196. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-2.md +82 -0
  197. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-3.md +158 -0
  198. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research-4.md +123 -0
  199. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/deep/web-research.md +8 -454
  200. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/methodology-1.md +155 -0
  201. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/methodology-2.md +43 -0
  202. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/methodology.md +6 -180
  203. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research-1.md +114 -0
  204. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research-2.md +180 -0
  205. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research-3.md +92 -0
  206. package/selected-skills/peter-lynch-skill/skills/peter-lynch-skill/references/quick/web-research.md +7 -359
  207. package/watchlist/package.json +1 -1
  208. package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays.md +0 -309
@@ -120,33 +120,40 @@
120
120
  coding 工具;插件注册 `read_profile`(allow 里的名字必须先真实存在);更新 `AGENTS.md` 与 `docs/dev/data-roles.md`
121
121
  的角色边界与 `test/persona.test.mjs` 的预留期断言。
122
122
 
123
- ## 5.1 bash:为什么只给 data_junior,以及它到底能做什么
123
+ ## 5.1 shell 与文件口:开 read、保留 bash、不给写(2026-10-15 用户决策)
124
124
 
125
125
  - **动机**:`query_dataset` 只有 `count/min/max/avg/sum`,变化量 / 增幅 / CAGR / 比值这类派生
126
126
  指标没有宿主工具;模型只能拿 `time_facts.first/last` 心算——那正是 §1.3 那次 41,961 字符
127
127
  时间戳心算的同型浪费。所以给 data_junior 一个纯计算兜底。**不是**给它开取数通道。
128
- - **为什么主 Agent 不给**:主 Agent 今天没有任何通用执行 / 文件 / 网络工具(Web 平面把 host 层
129
- 的 `tool-bash` / `tool-fs` / `tool-web` 都 `disabled` 了,本 preset 也不挂回来)。这是一条
130
- 结构性事实,不是 persona 约定:主 Agent 唯一对用户说话、又会读到子 Agent 回传(含网页材料),
131
- 一旦拥有 bash 就等于拿到"注入 → 执行 → 读凭据 → 出网"的完整链路。收敛靠
132
- `ROOT_AGENT_DENIED_TOOLS`(含 `bash` / `pwsh`)。
128
+ - **2026-10-15 起主 Agent 也持有 shell 与 `read`**(用户决策「开 read、同时保留 bash」,推翻
129
+ 2026-09-30 的"主 Agent 不给 shell"):主 Agent 需要 `read` 读 skill 分册与工作区文件
130
+ (此前只能 `bash cat`,能力等价但绕远),shell 保留纯计算兜底。`ROOT_AGENT_DENIED_TOOLS`
131
+ 里的 `bash` / `pwsh` 随之移出,名单改为出图三件套 + 十三个出网工具 + `write` / `edit`。
132
+ - **文件写口不开**:`write` / `edit` 被两层拦住——根侧逐名收敛(主 Agent 视图层)+ 全局
133
+ `tools.guard()`(`registerFsWriteGuard`,调用期按 `composedPreset` 认领,fail-open,细节见
134
+ `docs/dev/bash-gate.md` §1.6)。理由:主 Agent 唯一对用户说话、又会读到子 Agent 回传(含网页
135
+ 材料),写文件等于给"注入 → 落盘 → 被别的环节读回"开口;业务落盘本来就有正路
136
+ (`store.writeContext` 等工具实现),模型手里的写口没有正当用途。通用 `subagent` 行的
137
+ `toolFilter.deny` 同步含 `read` / `write` / `edit`(通用 child 不得读 raw.json,原始 rows
138
+ 永不出工具层)。
133
139
  - **平台成对挂载**:Windows 上 host 层挂的是 `pwsh-sandbox`,没有 `bash-sandbox`;只挂
134
140
  `tool-bash` 会让名为 bash 的工具实际执行 PowerShell。所以两行互补 `disabled`,allow / deny
135
141
  里的名字用 `!!js` 三元表达式按平台选。`tools.restrict()` 对未注册名字报错,所以表达式与行必须
136
142
  同进同退(回归:`test/persona.test.mjs`「shell 行:平台成对挂载……」)。
137
143
  - **不给后台执行**:`enableRunInBackground: false`。本 preset 不挂 `tool-jobs`,开着后台只会让
138
144
  模型拿到一个永远读不回来的 jobId(`job_output` / `job_kill` 不在任何 allow 里)。
139
- - **闸门只有两层,且都不是安全边界**(`src/agents/bash-guard.ts`):
140
- ① 只对**被委派**子会话开放(镜像 `tool-exec.ts` 的 `delegatedSession`,执行层兜住可见性被改坏);
141
- ② 拦掉 `sandbox_permissions`——委派会话的审批策略由框架固定为 `never`,升级必然失败,而且模型
142
- 会收到「the user rejected…」这种把系统拒绝说成用户拒绝的文案。
143
- **刻意不解析 `command`**:本仓实测沙箱只拦写、不拦读(`~/.dsh/.credentials.yaml` 与
144
- `sessions/**` 整机可读)、不拦网络(`curl` 直连 200),而正则挡不住 `node -e` / `python3 -c`
145
- ——那正是引入 bash 的目的。禁区与出网纪律是 data_junior persona 的 `# BASH DISCIPLINE` 软约束。
146
- - **写边界收不窄**:`store.writeContext()` 用**调用方 session** 的 policy 且要求
145
+ - **shell 闸门只剩一层,且不是安全边界**(`src/agents/bash-guard.ts`):拦掉
146
+ `sandbox_permissions` / `justification`——被委派会话的审批策略由框架固定为 `never`,升级必然
147
+ 失败,而且模型会收到「the user rejected…」这种把系统拒绝说成用户拒绝的文案;被委派或身份
148
+ 不可考的调用方 fail closed。主 Agent 的升级走正常 ask 审批(2026-10-15 前的"只对被委派子会话
149
+ 开放"一层随决策移除,断言迁移见 `test/bash-guard.test.mjs`)。**刻意不解析 `command`**:本仓
150
+ 实测沙箱只拦写、不拦读(`~/.dsh/.credentials.yaml` 与 `sessions/**` 整机可读)、不拦网络
151
+ (`curl` 直连 200),而正则挡不住 `node -e` / `python3 -c`——那正是引入 bash 的目的。禁区与
152
+ 出网纪律是 data_junior persona 的 `# BASH DISCIPLINE` 软约束。
153
+ - **写边界收不窄到会话**:`store.writeContext()` 用**调用方 session** 的 policy 且要求
147
154
  `mode ∈ {workspace-write, danger-full-access}`,而 `describe_dataset` 会用 data_junior 的会话写
148
155
  `profile.json`;把它的会话钉成 `read-only` 会直接打断 describe_dataset。bash 与 Dataset 管线
149
- 共用同一把尺子(session policy)。
156
+ 共用同一把尺子(session policy),所以模型侧写口只能靠上一条的调用期闸门收。
150
157
  - **要真正收紧**只有两条路:换掉 `ctx.shell`(容器 / 微 VM / 远端执行器),或给 dsh 进程做出网
151
158
  限制。两者都不是 `ctx.sandbox` 能提供的。
152
159
 
@@ -45,6 +45,8 @@
45
45
  最终答:工具完成后再答,必须含结论、关键证据与来源标注、局限与风险;归因准确,给出观察 / 验证 / 防守选项;勿只报“已交付/已完成”。
46
46
 
47
47
  # RULES & DISCIPLINE
48
+ 读文件只用 read:只读 skill 分册与工作区文件;不读 capital-data/ 落盘(原始行走回传),不读 ~/.dsh/;
49
+ 分册整册读完才算读过。
48
50
  用户倾向与外界观点皆为待检验假设;发现造假、质押、现金流或流动性风险时如实说明并给边界,不制造恐慌。
49
51
  仅在有可复现模型或回测时报告胜率 / 盈亏比 / 概率,并披露区间、样本、费用、方法与失效条件;否则明确「无法可靠测算」。
50
52
  不索取凭据与不必要仓位信息;不保证收益或准确率;极端行情与数据延迟如实说明局限。
@@ -109,7 +111,8 @@
109
111
  工具可见性不是权限隔离,工具层会拒绝非 delegated child。数据请求统一经 data_collector。
110
112
 
111
113
  2. 委派写明问题、标的、时间窗、所需新鲜度与证据用途,让 data_collector 按目录选足相关能力;
112
- 不预设能力数量,不带内部源键名;载荷与重试表 → skill capital-data-protocol。
114
+ 不预设能力数量,不带内部源键名;载荷与重试表 → skill capital-data-protocol,
115
+ 读回 junior 的 profile / query 回传 → skill capital-data-profile / capital-data-query。
113
116
  禁止任何消息携带完整原始 rows。
114
117
 
115
118
  3. 每收到一份 dataset_ready 就登记 DatasetRef,立即复用/创建同一个 data_junior 转交该份数据,
@@ -129,7 +132,7 @@
129
132
  不得冒充行情证据或补位缺失能力。不支持的频率如实披露,用已有粒度降级,不编造。
130
133
 
131
134
 
132
- # ── shell:只给 data_junior(主 Agent 由 root-tool-policy 在自己 scope 上 deny)──────
135
+ # ── shell:主 Agent 与 data_junior 共用(2026-10-15「开 read、同时保留 bash」)────
133
136
  # 边界、为什么不按命令内容 deny、平台门控:见同目录 README.md 的「bash」一节。
134
137
  - id: tool-bash
135
138
  name: '@deepseek-ai/dsh-tool-bash'
@@ -144,6 +147,12 @@
144
147
  config:
145
148
  enableRunInBackground: false
146
149
 
150
+ # ── 文件口:read 开给主 Agent 读 skill 分册 / 工作区文件(2026-10-15 用户决策)────
151
+ # `tool-fs` 一颗挂 read / write / edit:write / edit 由根侧收敛 + 全局写口闸门拦
152
+ # (src/agents/root-tool-policy.ts),落盘只走工具实现;tool-fs-search 本轮不挂。
153
+ - id: tool-fs
154
+ name: '@deepseek-ai/dsh-tool-fs'
155
+
147
156
  - id: tool-subagent-data-collector
148
157
  name: '@deepseek-ai/dsh-tool-subagent'
149
158
  config:
@@ -216,7 +225,8 @@
216
225
  你无外部行情 API、无网页检索、无凭据读取能力,也不索取或保存账户密码。
217
226
 
218
227
  # DUTIES
219
- 0. 第一步先加载协议:调用 Dataset 工具前先 skill capital-data-protocol;描述完成
228
+ 0. 第一步先加载协议:调用 Dataset 工具前先 skill capital-data-profile;要写 query_request
229
+ 或做派生算术再加 skill capital-data-query;描述完成
220
230
  (describe_dataset / profile_dataset)后无条件加载 skill capital-visualization-protocol,
221
231
  再选择 gate。dataset_profile_completed / dataset_query_completed / profile_failed /
222
232
  query_failed 的载荷样例、事实怎么读、data_gap 与 QuerySpec 细则都在 skill 里。
@@ -301,7 +311,8 @@
301
311
 
302
312
  # DUTIES
303
313
  0. 首次检索前先 skill capital-web-protocol,取回来源边界、收敛法则、
304
- Wind 三要素、回传格式与域名核验清单;本 persona 只留硬规则。
314
+ Wind 三要素与降级口径;回传前再 skill capital-web-evidence,取回编号格式、
315
+ 域名核验清单、抓取失败处置与 `ocr`;本 persona 只留硬规则。
305
316
  1. 先定来源再动手:官方正式文件与权威新闻优先 wind_docs(public_document),
306
317
  不要等 anysearch 空转后才想起;候选探索与归属核验走 anysearch。
307
318
  换 provider 前先看 recent_retrievals / provider_tally。
@@ -415,6 +426,11 @@
415
426
  toolFilter:
416
427
  deny:
417
428
  - !!js "process.platform === 'win32' ? 'pwsh' : 'bash'"
429
+ # 文件口全关:通用 child 不得读 raw.json(原始 rows 永不出工具层)也不得写;
430
+ # read_image 刻意不点名(条件注册,名字不在 = 创建子 Agent 失败,且它只读)。
431
+ - read
432
+ - write
433
+ - edit
418
434
  - render_chart
419
435
  - prepare_chart_source
420
436
  - describe_dataset
@@ -0,0 +1,177 @@
1
+ ---
2
+ name: capital-data-profile
3
+ description: Use when reading a Dataset back — describe_dataset as the default entry, the profile payload and its four fact blocks, data_gap requests, and the time axis (axis, windows, calendar filters). Volume 2 of the Capital data protocol; delegation and per-Dataset receipts live in capital-data-protocol, QuerySpec and derived arithmetic in capital-data-query.
4
+ ---
5
+
6
+ # Capital 数据协议 · 第二册:读回 Dataset、缺口与时间轴
7
+
8
+ 本册是数据协议的第二册(§3.0 / §3 / §3.1 / §3.2)。委派与逐份回传在第一册 `capital-data-protocol`,
9
+ 受控查询与派生算术在第三册 `capital-data-query`;三册 §编号连续,跨册引用照原编号点名。
10
+
11
+ **重试那张表(§5)住在第一册** `capital-data-protocol`,本册不重复它:参数类按 `input_schema` 修正后重试、
12
+ 瞬时与执行超时重试 1 次、同一请求重试 2 次仍失败就回传 `failed` 并注明已重试。
13
+
14
+ ## 3.0 读取 Dataset 的默认入口:`describe_dataset`
15
+
16
+ `data_junior` 读一份 Dataset 用 **`describe_dataset`**(一次调用完成 inspect + profile + 可选 queries),
17
+ **不要再走 `inspect_dataset → profile_dataset → query_dataset` 三步**——那三步只保留给单点复核。
18
+
19
+ ```json
20
+ {
21
+ "dataset_id": "ds_01J...",
22
+ "task_id": "task_01J...",
23
+ "columns_of_interest": ["close_price", "volume"],
24
+ "queries": [
25
+ { "group_by": ["report_type"], "aggregates": [{ "function": "count", "as": "n" }], "limit": 20 }
26
+ ]
27
+ }
28
+ ```
29
+
30
+ - **一次一份**:一次调用只传一个 `dataset_id`。本轮有多份数据时,**在同一条 assistant 消息里一次发完**
31
+ 多个调用(宿主会并发执行,结果一起返回),不要一份一份等。
32
+ - 返回 = inspect 元数据(`artifact_ref` / `capability` / `source_label` / `captured_at` / `retention_until` /
33
+ `query_access.shape`)+ profile 四类事实(`statistics` / `categories` / `time_facts` / `structure`)+
34
+ `profile_ref` + 每条 query 的 `result`,或该条自己的 `error`(单条失败不影响其余)。
35
+ - `shape = document` 时 queries **不执行**(宿主跳过并在 `warnings` 说明);文档内容在 `document`。
36
+ - `columns_of_interest` 只对这些列返回 `statistics` / `categories` / `schema`(并同样收窄 `time_facts` 的首末值投影;时间列永远保留),是收窄结果体积的唯一手段。
37
+ - **体积闸门**:结果超过 7000 码点时返回
38
+ `{"status":"too_large","profile_ref":"...","columns":[...],"hint":"..."}`,而不是超长载荷。
39
+ 按 hint 用 `columns_of_interest`(或减少 `queries`,一次最多 8 条)重发一次;文档型按 hint 直接调
40
+ `profile_dataset`。**看到 `too_large` 不是失败**——它带着完整列名,用来让你收窄。
41
+ - 单点复核(只看元数据 / 只要一份完整 profile / 补一条查询)仍可用 `inspect_dataset`、`profile_dataset`、
42
+ `query_dataset`。
43
+
44
+ ## 3. 质检请求与回传(主 Agent ↔ data_junior)
45
+
46
+ 请求:
47
+
48
+ ```json
49
+ {
50
+ "type": "profile_request",
51
+ "task_id": "task_01J...",
52
+ "dataset_ids": ["ds_01J..."],
53
+ "question": "检查数据质量并给出基础统计"
54
+ }
55
+ ```
56
+
57
+ - `dataset_ids` 一律取 `dataset_ready` 回传中的 `dataset_id` 原样值。
58
+ - 只带 DatasetRef 标识与问题描述,**绝不带原始数据行**。
59
+
60
+ 回传:
61
+
62
+ ```json
63
+ {
64
+ "type": "dataset_profile_completed",
65
+ "task_id": "task_01J...",
66
+ "dataset_id": "ds_01J...",
67
+ "profile_ref": "workspace://capital-data/profiles/p_01J...",
68
+ "row_count": 240,
69
+ "columns": ["date", "open", "high", "low", "close", "volume"],
70
+ "schema": {
71
+ "close": { "contract_type": "number", "inferred_type": "number", "missing_count": 0, "null_count": 0, "invalid_count": 0 }
72
+ },
73
+ "validation": { "status": "pass", "violations": [] },
74
+ "quality": { "missing_values": 0, "duplicate_rows": 0, "time_ordered": true },
75
+ "warnings": []
76
+ }
77
+ ```
78
+
79
+ - `schema` 是字段类型和计数的有限摘要;完整 profile 以 `profile_ref` 为准,不把完整 profile 或 raw rows 放进消息。
80
+ - `validation.status=fail` 表示 profile 发现结构化 violations,不表示原始 Dataset 被删除或不可用。
81
+ - 主 Agent 可以在 collector 继续取数时逐份委派 data_junior,显式说「只到 profile」(包括必要的受控 queries);后续只送新到的 dataset_id,不重做已完成的 profile。等 `data_collection_completed` 和补数据回执后,再指示同一个 junior 综合已有结果并完成可视化 gate。
82
+
83
+ 失败:`{ "type": "profile_failed", "task_id": "task_01J...", "error": "...", "code": "..." }`
84
+
85
+ `profile_dataset` 的四类事实(回传时按需引用,不要把整份 profile 抄进消息):
86
+
87
+ | 事实块 | 回答什么问题 |
88
+ |--------|--------------|
89
+ | `statistics`(count/sum/min/max/mean/分位数) | 合计多少、覆盖多少条、区间与集中度 |
90
+ | `categories`(distinct_count + 最多 5 个高频取值) | 有哪些类别、分布如何;`truncated=true` 表示未列全 |
91
+ | `time_facts`(覆盖范围 + 首行/末行取值 + `axis` + `windows`) | 最新值、区间涨跌,以及**这份数据的时间轴怎么读**(见 §3.2)。**必须**用 `first`/`last`;min/max 只是区间极值,把它讲成走势就是编造 |
92
+ | `structure`(路径 + total_elements 或 sampled_elements) | 嵌套里一共有多少条。对象字段用 `.name`、数组元素用 `[]`,未抽样时例如 `sub_tab[].fund_list` 的 `total_elements=40` 就是 40 只基金;若出现 `sampled_elements=50`,只能说明实际检查了 50 项,不是完整数量 |
93
+
94
+ ### 3.2 时间轴:日历由宿主换算,不要自己算毫秒
95
+
96
+ `time_facts` 除覆盖范围与首末行外,还给出**这份数据的时间轴怎么读**:
97
+
98
+ | 字段 | 含义 | 怎么用 |
99
+ |---|---|---|
100
+ | `axis.value_format` | `epoch_ms`(毫秒整数时间列)/ `date_string`(已是 `YYYY-MM-DD`)/ `unknown`(推断不出:先 inspect 或显式传 `time_column`) | `unknown` 时不要假设粒度 |
101
+ | `axis.time_zone` / `axis.utc_offset` | 该列**自身观测到**的时区偏移(如 `Asia/Shanghai` / `+08:00`) | 判断"某天"的边界一律按它,不要按 UTC 猜 |
102
+ | `axis.aligned_to` | `local_midnight` = 取值是当地 00:00 的瞬间(A 股日线的 `date_ms` 就是这样) | 这种列的"当天"要用 `>= 当天午夜` 且 `<= 当天日末` 两个条件才算 |
103
+ | `covered_from_iso` / `covered_to_iso` | 覆盖范围的可读日期 | 回答"数据到哪天",不要再做 epoch→日期换算 |
104
+ | `windows[]` | 近 1 月 / 近 3 月 / 近 1 年 / 年初至今的现成边界:`value_ge`、`value_le`(可直接填进 filter)与 `data_from`、`data_to`(该窗口在数据里**真实存在**的首末日期) | 命中就直接用;`data_from` 已把非交易日夹到相邻交易日 |
105
+
106
+ 需要 `windows` 之外的窗口(任意区间、某年某月、历年 10 月)时:
107
+
108
+ 1. 调 `resolve_data_time_range`,传 `dataset_id` + `period`(可选 `anchor_date`);它按该 Dataset
109
+ 时间列自身的偏移返回 `bounds.bound_ge` / `bounds.bound_le` 与 `range`、`data` 日期;
110
+ 2. 把 `bound_ge` / `bound_le` 原样填进 filter,**不要**自己把日期算成毫秒。
111
+
112
+ `query_dataset` 的 filter 也**直接接受日历写法**(宿主按同一套偏移换算):
113
+
114
+ ```jsonc
115
+ // 三种写法都表示"从 2026-08-23 起",选一种即可
116
+ { "column": "date_ms", "operator": ">=", "value": "2026-08-23" }
117
+ { "column": "date_ms", "operator": ">=", "value": "2026-08" }
118
+ { "column": "date_ms", "operator": ">=", "value": { "period": "last_1_month" } }
119
+ ```
120
+
121
+ - `>=` 取该日当地午夜、`<=` 取该日当地日末、`=` 自动展开成"这一天"的上下界;省略锚点的
122
+ `period` 以该 Dataset 最后一天为准(数据陈旧时相对期不会落空);
123
+ - 结果里时间列会附一列 `*_iso` 可读日期(原值保留,不替换);
124
+ - `>`、`<`、`!=`、`in` 配日期串会报 `query_type_conflict`:日期只有"整天"语义,用它们等于
125
+ 悄悄换一天;要哪几天就直接写 `>=` / `<=`。
126
+
127
+ **硬规则:看到 epoch 毫秒要经过加减乘除才能得出结论时,就是走错了路。** 时间换算一律交给
128
+ `time_facts.axis`、`windows` 与 `resolve_data_time_range`;自己心算毫秒既慢又必然算错口径。
129
+
130
+ 文档型 Dataset(顶层是文档对象、没有行数组,如财务指标、回测结果):`profile_dataset` 返回
131
+ `structure` 结构摘要 + `document` 有界内容(`$` 是文档根),**没有**行列统计,也不包含行数据专用的 `schema`/`validation`;`query_dataset`
132
+ 对它无效。`document.truncated=true` 时必须按 `omitted` 逐条说明省略了哪个路径、保留多少、
133
+ 省略多少,不得只说「已截断」。
134
+
135
+ 硬规则:字段按工具返回原样填入;统计项只报告可计算的部分,数据不足如实说明;
136
+ profile 失败不影响原始 Dataset,可按指示重试。
137
+
138
+
139
+ ## 3.1 数据缺口(data_junior → 主 Agent,中途主动发起)
140
+
141
+ data_junior 发现「问题需要的那份数据还没取」时(不是「数据里没有」),不等回合结束,
142
+ 直接用 `send_message` 发一次:
143
+
144
+ ```json
145
+ {
146
+ "type": "data_gap",
147
+ "task_id": "task_01J...",
148
+ "dataset_id": "ds_01J...",
149
+ "need": "该指数在 2025-06-30 的成分股权重明细",
150
+ "reason": "现有 Dataset 只有指数点位,没有成分字段",
151
+ "suggested_capability": "index_constituents",
152
+ "blocking": true
153
+ }
154
+ ```
155
+
156
+ | 字段 | 规则 |
157
+ |------|------|
158
+ | `type` | 固定 `data_gap` |
159
+ | `task_id` / `dataset_id` | 必须带:主 Agent 可能同时在等多个回传,靠这两个字段对上号 |
160
+ | `need` | 用自然语言写清缺什么数据(标的、区间、口径) |
161
+ | `reason` | 说明为什么现有 Dataset 不够,避免主 Agent 重复取已有的数据 |
162
+ | `suggested_capability` | 可选。只能是**手上 DatasetRef 里出现过的 capability 原值**,或整个省略;不要为了填空编造能力名 |
163
+ | `blocking` | `true` = 不补齐无法继续,可以停在本轮等回信;`false` = 还有别的能先做 |
164
+
165
+ 硬规则:
166
+
167
+ - `data_gap` 是请求不是结论。发出后不得把「无法确认」当终局;同一条缺口只发一次。
168
+ - 子 Agent **不得自行取数**,也不得直接找 `data_collector`:取数一律由主 Agent 中继。
169
+ - 主 Agent 处置:按委派清单复用对应角色取数 → 把新 DatasetRef 用 `send_message` 发回
170
+ **同一个**子 Agent(禁止新建同角色)→ 它接着做完。同参数的重新取数会命中宿主复用,
171
+ 不会重复访问上游,所以该重取就重取。
172
+ - 取数失败时主 Agent 必须回一条失败消息(`data_failed` 或说明性文本)给它,
173
+ 不能让它一直等:框架没有超时与订阅机制。
174
+ - **结束本轮 ≠ 任务完成。** 等数据的子 Agent 会先结束回合,结算通知里那句
175
+ 「finished and will do no further work unless you send it more」在此时是误导;
176
+ 清单里标为「等数据」的子 Agent,收到结算通知后不要认定完成、也不要新建。
177
+ - 只有确认「数据里确实没有该字段」时才回传能力边界,并写明是数据没有、不是没拿到数据。
@@ -1,21 +1,26 @@
1
1
  ---
2
2
  name: capital-data-protocol
3
- description: Use when composing or reading a Capital data message — data_request, per-Dataset dataset_ready, data_failed, data_collection_completed, profile and query payloads, freshness, capability selection, retry discipline, and disclosure fields.
3
+ description: Use when composing or reading a Capital data message — data_request, per-Dataset dataset_ready / data_failed / data_collection_completed, the two-step capability discovery, retry discipline and disclosure fields. Volume 1 of the Capital data protocol; reading a Dataset back lives in capital-data-profile, QuerySpec and derived arithmetic in capital-data-query.
4
4
  ---
5
5
 
6
- # Capital 数据协议(完整版)
6
+ # Capital 数据协议 · 第一册:委派与逐份回传
7
7
 
8
8
  主 Agent 与 `data_collector` / `data_junior` 之间的消息载荷契约。三个角色的 persona 只保留
9
9
  每轮都要生效的硬规则;字段级细节、示例与重试表在本文件。载荷即接口,字段名、数值、日期
10
10
  一律不改写。
11
11
 
12
- ## 0. 谁读哪一节(三个角色动手前都应先加载本 skill)
12
+ 本协议共三册,§编号跨册连续:**本册**管委派与逐份回传(§0 / §1 / §1.1 / §2 / §5),
13
+ 读回 Dataset 在 `capital-data-profile`(§3.0 / §3 / §3.1 / §3.2),受控查询与派生算术在
14
+ `capital-data-query`(§3.3 / §4)。写了 `profile_request` 或 `query_request` 却没读对应那一册,
15
+ 等于凭记忆填载荷字段。
16
+
17
+ ## 0. 谁读哪一节(三个角色动手前先加载对应那一册)
13
18
 
14
19
  | 角色 | 需要 | 说明 |
15
20
  |---|---|---|
16
- | 主 Agent | §1、§3、§4、§5 | 发请求、收回传、输出披露字段 |
17
- | `data_collector` | §1、§1.1、§2、§5 | 收请求、能力发现两步、回传载荷、重试纪律 |
18
- | `data_junior` | §3、§3.1、§4、§5 | 质检回传、数据缺口、受控查询、重试纪律 |
21
+ | 主 Agent | §1、§3、§4、§5 | 发请求、收回传、输出披露字段(§3 / §3.1 / §3.2 在 `capital-data-profile`,§3.3 / §4 在 `capital-data-query`) |
22
+ | `data_collector` | §1、§1.1、§2、§5 | 收请求、能力发现两步、回传载荷、重试纪律(本册即够) |
23
+ | `data_junior` | §3、§3.1、§4、§5 | 质检回传、数据缺口、受控查询、重试纪律(§3 系在 `capital-data-profile`,§3.3 / §4 在 `capital-data-query`,§5 在本册) |
19
24
 
20
25
  ## 1. 数据请求(主 Agent → data_collector)
21
26
 
@@ -132,269 +137,6 @@ description: Use when composing or reading a Capital data message — data_reque
132
137
  不自行改写、不自行拼路径。
133
138
  - Dataset 默认保留 **7 天**(以 `retention_until` 为准),到期后需重新取数。
134
139
 
135
- ## 3.0 读取 Dataset 的默认入口:`describe_dataset`
136
-
137
- `data_junior` 读一份 Dataset 用 **`describe_dataset`**(一次调用完成 inspect + profile + 可选 queries),
138
- **不要再走 `inspect_dataset → profile_dataset → query_dataset` 三步**——那三步只保留给单点复核。
139
-
140
- ```json
141
- {
142
- "dataset_id": "ds_01J...",
143
- "task_id": "task_01J...",
144
- "columns_of_interest": ["close_price", "volume"],
145
- "queries": [
146
- { "group_by": ["report_type"], "aggregates": [{ "function": "count", "as": "n" }], "limit": 20 }
147
- ]
148
- }
149
- ```
150
-
151
- - **一次一份**:一次调用只传一个 `dataset_id`。本轮有多份数据时,**在同一条 assistant 消息里一次发完**
152
- 多个调用(宿主会并发执行,结果一起返回),不要一份一份等。
153
- - 返回 = inspect 元数据(`artifact_ref` / `capability` / `source_label` / `captured_at` / `retention_until` /
154
- `query_access.shape`)+ profile 四类事实(`statistics` / `categories` / `time_facts` / `structure`)+
155
- `profile_ref` + 每条 query 的 `result`,或该条自己的 `error`(单条失败不影响其余)。
156
- - `shape = document` 时 queries **不执行**(宿主跳过并在 `warnings` 说明);文档内容在 `document`。
157
- - `columns_of_interest` 只对这些列返回 `statistics` / `categories` / `schema`(并同样收窄 `time_facts` 的首末值投影;时间列永远保留),是收窄结果体积的唯一手段。
158
- - **体积闸门**:结果超过 7000 码点时返回
159
- `{"status":"too_large","profile_ref":"...","columns":[...],"hint":"..."}`,而不是超长载荷。
160
- 按 hint 用 `columns_of_interest`(或减少 `queries`,一次最多 8 条)重发一次;文档型按 hint 直接调
161
- `profile_dataset`。**看到 `too_large` 不是失败**——它带着完整列名,用来让你收窄。
162
- - 单点复核(只看元数据 / 只要一份完整 profile / 补一条查询)仍可用 `inspect_dataset`、`profile_dataset`、
163
- `query_dataset`。
164
-
165
- ## 3. 质检请求与回传(主 Agent ↔ data_junior)
166
-
167
- 请求:
168
-
169
- ```json
170
- {
171
- "type": "profile_request",
172
- "task_id": "task_01J...",
173
- "dataset_ids": ["ds_01J..."],
174
- "question": "检查数据质量并给出基础统计"
175
- }
176
- ```
177
-
178
- - `dataset_ids` 一律取 `dataset_ready` 回传中的 `dataset_id` 原样值。
179
- - 只带 DatasetRef 标识与问题描述,**绝不带原始数据行**。
180
-
181
- 回传:
182
-
183
- ```json
184
- {
185
- "type": "dataset_profile_completed",
186
- "task_id": "task_01J...",
187
- "dataset_id": "ds_01J...",
188
- "profile_ref": "workspace://capital-data/profiles/p_01J...",
189
- "row_count": 240,
190
- "columns": ["date", "open", "high", "low", "close", "volume"],
191
- "schema": {
192
- "close": { "contract_type": "number", "inferred_type": "number", "missing_count": 0, "null_count": 0, "invalid_count": 0 }
193
- },
194
- "validation": { "status": "pass", "violations": [] },
195
- "quality": { "missing_values": 0, "duplicate_rows": 0, "time_ordered": true },
196
- "warnings": []
197
- }
198
- ```
199
-
200
- - `schema` 是字段类型和计数的有限摘要;完整 profile 以 `profile_ref` 为准,不把完整 profile 或 raw rows 放进消息。
201
- - `validation.status=fail` 表示 profile 发现结构化 violations,不表示原始 Dataset 被删除或不可用。
202
- - 主 Agent 可以在 collector 继续取数时逐份委派 data_junior,显式说「只到 profile」(包括必要的受控 queries);后续只送新到的 dataset_id,不重做已完成的 profile。等 `data_collection_completed` 和补数据回执后,再指示同一个 junior 综合已有结果并完成可视化 gate。
203
-
204
- 失败:`{ "type": "profile_failed", "task_id": "task_01J...", "error": "...", "code": "..." }`
205
-
206
- `profile_dataset` 的四类事实(回传时按需引用,不要把整份 profile 抄进消息):
207
-
208
- | 事实块 | 回答什么问题 |
209
- |--------|--------------|
210
- | `statistics`(count/sum/min/max/mean/分位数) | 合计多少、覆盖多少条、区间与集中度 |
211
- | `categories`(distinct_count + 最多 5 个高频取值) | 有哪些类别、分布如何;`truncated=true` 表示未列全 |
212
- | `time_facts`(覆盖范围 + 首行/末行取值 + `axis` + `windows`) | 最新值、区间涨跌,以及**这份数据的时间轴怎么读**(见 §3.2)。**必须**用 `first`/`last`;min/max 只是区间极值,把它讲成走势就是编造 |
213
- | `structure`(路径 + total_elements 或 sampled_elements) | 嵌套里一共有多少条。对象字段用 `.name`、数组元素用 `[]`,未抽样时例如 `sub_tab[].fund_list` 的 `total_elements=40` 就是 40 只基金;若出现 `sampled_elements=50`,只能说明实际检查了 50 项,不是完整数量 |
214
-
215
- ### 3.2 时间轴:日历由宿主换算,不要自己算毫秒
216
-
217
- `time_facts` 除覆盖范围与首末行外,还给出**这份数据的时间轴怎么读**:
218
-
219
- | 字段 | 含义 | 怎么用 |
220
- |---|---|---|
221
- | `axis.value_format` | `epoch_ms`(毫秒整数时间列)/ `date_string`(已是 `YYYY-MM-DD`)/ `unknown`(推断不出:先 inspect 或显式传 `time_column`) | `unknown` 时不要假设粒度 |
222
- | `axis.time_zone` / `axis.utc_offset` | 该列**自身观测到**的时区偏移(如 `Asia/Shanghai` / `+08:00`) | 判断"某天"的边界一律按它,不要按 UTC 猜 |
223
- | `axis.aligned_to` | `local_midnight` = 取值是当地 00:00 的瞬间(A 股日线的 `date_ms` 就是这样) | 这种列的"当天"要用 `>= 当天午夜` 且 `<= 当天日末` 两个条件才算 |
224
- | `covered_from_iso` / `covered_to_iso` | 覆盖范围的可读日期 | 回答"数据到哪天",不要再做 epoch→日期换算 |
225
- | `windows[]` | 近 1 月 / 近 3 月 / 近 1 年 / 年初至今的现成边界:`value_ge`、`value_le`(可直接填进 filter)与 `data_from`、`data_to`(该窗口在数据里**真实存在**的首末日期) | 命中就直接用;`data_from` 已把非交易日夹到相邻交易日 |
226
-
227
- 需要 `windows` 之外的窗口(任意区间、某年某月、历年 10 月)时:
228
-
229
- 1. 调 `resolve_data_time_range`,传 `dataset_id` + `period`(可选 `anchor_date`);它按该 Dataset
230
- 时间列自身的偏移返回 `bounds.bound_ge` / `bounds.bound_le` 与 `range`、`data` 日期;
231
- 2. 把 `bound_ge` / `bound_le` 原样填进 filter,**不要**自己把日期算成毫秒。
232
-
233
- `query_dataset` 的 filter 也**直接接受日历写法**(宿主按同一套偏移换算):
234
-
235
- ```jsonc
236
- // 三种写法都表示"从 2026-08-23 起",选一种即可
237
- { "column": "date_ms", "operator": ">=", "value": "2026-08-23" }
238
- { "column": "date_ms", "operator": ">=", "value": "2026-08" }
239
- { "column": "date_ms", "operator": ">=", "value": { "period": "last_1_month" } }
240
- ```
241
-
242
- - `>=` 取该日当地午夜、`<=` 取该日当地日末、`=` 自动展开成"这一天"的上下界;省略锚点的
243
- `period` 以该 Dataset 最后一天为准(数据陈旧时相对期不会落空);
244
- - 结果里时间列会附一列 `*_iso` 可读日期(原值保留,不替换);
245
- - `>`、`<`、`!=`、`in` 配日期串会报 `query_type_conflict`:日期只有"整天"语义,用它们等于
246
- 悄悄换一天;要哪几天就直接写 `>=` / `<=`。
247
-
248
- **硬规则:看到 epoch 毫秒要经过加减乘除才能得出结论时,就是走错了路。** 时间换算一律交给
249
- `time_facts.axis`、`windows` 与 `resolve_data_time_range`;自己心算毫秒既慢又必然算错口径。
250
-
251
- 文档型 Dataset(顶层是文档对象、没有行数组,如财务指标、回测结果):`profile_dataset` 返回
252
- `structure` 结构摘要 + `document` 有界内容(`$` 是文档根),**没有**行列统计,也不包含行数据专用的 `schema`/`validation`;`query_dataset`
253
- 对它无效。`document.truncated=true` 时必须按 `omitted` 逐条说明省略了哪个路径、保留多少、
254
- 省略多少,不得只说「已截断」。
255
-
256
- 硬规则:字段按工具返回原样填入;统计项只报告可计算的部分,数据不足如实说明;
257
- profile 失败不影响原始 Dataset,可按指示重试。
258
-
259
- ### 3.3 bash:派生算术的兜底,不是第二条取数通道
260
-
261
- 只有 data_junior 有 `bash`。它存在的唯一理由是 `query_dataset` 的聚合只有
262
- `count / min / max / avg / sum`——**变化量、增幅、CAGR、比值、单位换算**这类派生指标没有宿主
263
- 工具,硬心算既慢又容易错。
264
-
265
- **可以做的**(拿手里已有的数字算):
266
-
267
- ```bash
268
- node -e 'const a=98.2,b=120.5; console.log(((b-a)/a*100).toFixed(2))' # 区间涨幅
269
- python3 -c "print((120.5/98.2)**(252/60)-1)" # 年化
270
- ```
271
-
272
- - **只敲最终参与计算的标量,一次 ≤20 个**:不整行/整表复制原始数字进脚本(2026-10-10 真机:
273
- 两次 bash 把整段聚合行逐数敲进去,转写出笔误又花 7.2K 字符发更正);从工具回执到脚本的每个
274
- 数字**逐一核对**再执行,算完抽查 1-2 个对得上来源。要算的数超过 20 个就拆几批。
275
-
276
- **不许做的**(这是纪律,不是沙箱限制——沙箱只拦写,不拦读与网络):
277
-
278
- | 不许 | 为什么 | 正确做法 |
279
- |---|---|---|
280
- | 读 `capital-data/**`、`raw.json` | 原始行**永不**进入你的上下文;而且工具结果会被剪枝成 head+tail,读了也算错 | 数值走 `describe_dataset` / `query_dataset` 的统计与聚合 |
281
- | 读 `~/.dsh/**`、`sessions/**` | 那是宿主凭据与全部会话日志 | 不碰;需要元数据用工具回执 |
282
- | 读 / 改 `preset/`、`src/`、`test/` | 那是装配与门禁本身 | 不碰 |
283
- | `curl` / `wget` / 任何网络请求、`git clone`、`npm i`、`pip install` | 你的角色没有网络能力,外部材料只经主 Agent 转交 `web_retriever` | 缺外部事实就在回传里写明缺口 |
284
- | 申请更高权限(`sandbox_permissions`) | 委派会话的审批策略被框架固定为 `never`,必然失败 | 不要试;缺数据发 `data_gap` |
285
-
286
- 另外两条:
287
-
288
- - **输出只留结论数字**:bash 的工具结果同样会过剪枝器(>8192 字符中间段被剪掉),把中间过程
289
- 打印出来只会挤掉真正要看的东西;回传时注明算法与口径(如「按首末收盘价、未复权」)。
290
- - **时间窗仍归宿主**:窗口边界一律用 `time_facts.windows` / `resolve_data_time_range`
291
- (§3.2),不要用 `date` 命令自己造边界——口径错了数字就全错,而且没人会发现。
292
-
293
- `profile_dataset` 的统计项:数值字段的 count 与 sum(合计多少、覆盖多少条)、字符串字段的
294
- `distinct_count` 与高频取值、字段类型(observed / contract)、缺失值与显式 null、类型冲突、
295
- 重复主键、时间范围、最小/最大/均值/分位数——**只报告可计算的部分**,数据不足就如实说明。
296
-
297
- ## 3.1 数据缺口(data_junior → 主 Agent,中途主动发起)
298
-
299
- data_junior 发现「问题需要的那份数据还没取」时(不是「数据里没有」),不等回合结束,
300
- 直接用 `send_message` 发一次:
301
-
302
- ```json
303
- {
304
- "type": "data_gap",
305
- "task_id": "task_01J...",
306
- "dataset_id": "ds_01J...",
307
- "need": "该指数在 2025-06-30 的成分股权重明细",
308
- "reason": "现有 Dataset 只有指数点位,没有成分字段",
309
- "suggested_capability": "index_constituents",
310
- "blocking": true
311
- }
312
- ```
313
-
314
- | 字段 | 规则 |
315
- |------|------|
316
- | `type` | 固定 `data_gap` |
317
- | `task_id` / `dataset_id` | 必须带:主 Agent 可能同时在等多个回传,靠这两个字段对上号 |
318
- | `need` | 用自然语言写清缺什么数据(标的、区间、口径) |
319
- | `reason` | 说明为什么现有 Dataset 不够,避免主 Agent 重复取已有的数据 |
320
- | `suggested_capability` | 可选。只能是**手上 DatasetRef 里出现过的 capability 原值**,或整个省略;不要为了填空编造能力名 |
321
- | `blocking` | `true` = 不补齐无法继续,可以停在本轮等回信;`false` = 还有别的能先做 |
322
-
323
- 硬规则:
324
-
325
- - `data_gap` 是请求不是结论。发出后不得把「无法确认」当终局;同一条缺口只发一次。
326
- - 子 Agent **不得自行取数**,也不得直接找 `data_collector`:取数一律由主 Agent 中继。
327
- - 主 Agent 处置:按委派清单复用对应角色取数 → 把新 DatasetRef 用 `send_message` 发回
328
- **同一个**子 Agent(禁止新建同角色)→ 它接着做完。同参数的重新取数会命中宿主复用,
329
- 不会重复访问上游,所以该重取就重取。
330
- - 取数失败时主 Agent 必须回一条失败消息(`data_failed` 或说明性文本)给它,
331
- 不能让它一直等:框架没有超时与订阅机制。
332
- - **结束本轮 ≠ 任务完成。** 等数据的子 Agent 会先结束回合,结算通知里那句
333
- 「finished and will do no further work unless you send it more」在此时是误导;
334
- 清单里标为「等数据」的子 Agent,收到结算通知后不要认定完成、也不要新建。
335
- - 只有确认「数据里确实没有该字段」时才回传能力边界,并写明是数据没有、不是没拿到数据。
336
-
337
- ## 4. 受控查询(主 Agent ↔ data_junior)
338
-
339
- 请求:
340
-
341
- ```json
342
- {
343
- "type": "query_request",
344
- "task_id": "task_01J...",
345
- "dataset_id": "ds_01J...",
346
- "query": {
347
- "dataset_id": "ds_01J...",
348
- "select": ["symbol", "rows", "avg_close"],
349
- "filters": [{ "column": "close_price", "operator": ">", "value": 100 }],
350
- "group_by": ["symbol"],
351
- "aggregates": [
352
- { "function": "count", "as": "rows" },
353
- { "function": "avg", "column": "close_price", "as": "avg_close" }
354
- ],
355
- "order_by": [{ "column": "avg_close", "direction": "desc" }],
356
- "limit": 100
357
- }
358
- }
359
- ```
360
-
361
- - `query` 是固定 JSON QuerySpec,不是 SQL、表达式或脚本;`query_request` 消息可以原样作为 `query_dataset` 工具参数传入,宿主会展开其中的 `query`;也可直接传扁平 QuerySpec。`type` / `task_id` 只属于消息 envelope,不进入实际执行 QuerySpec。
362
- - 只支持 `=`、`!=`、`>`、`>=`、`<`、`<=`、`in`、`is_null`、`not_null`,以及 `count`、`min`、`max`、`avg`、`sum`。
363
- - 必须有 `group_by` 或聚合;`select` 可省略,省略时默认返回分组列与聚合别名;显式 `select` 只能引用分组列或聚合别名。禁止 join、window、having、自定义函数和 raw rows 投影。
364
- - 默认 `error_policy=skip_with_warning`:过滤或数值聚合遇到不兼容脏值时排除该值并在 `warnings` 披露;需要类型全量一致时显式使用 `error_policy=strict`。
365
- - 数组/对象字段(`select`、`group_by`、`aggregates`、`order_by`、`filters`)传**真正的 JSON 数组**,不要序列化成字符串再传;`limit` 传数字。宿主对字符串化的 JSON 做了宽容解析(实测模型很常这么传),但不要依赖它。
366
- - **时间列筛选写日历,不写毫秒**:`date_ms` 这类 epoch 列的 filter 值可直接写 `"2026-08-23"`、
367
- `"2026-08"`、`"2026"` 或 `{ "period": "last_1_month" }`,宿主按该列自身偏移换算边界并自动在结果
368
- 里补 `*_iso`。写法、可用的 period 词表与禁止的算子见 §3.2——**不要**自己把日期算成毫秒。
369
- 同一条 QuerySpec 在 **`describe_dataset` 的 `queries` 与 `query_dataset` 里完全等价**(同一份归一、
370
- 同样的错误码),不必因为"想确认某个入口行不行"而重复试。
371
- - `query_dataset` 取不到原始行:`select` 只能引用分组列或聚合别名,所以「首末/最新值」要用
372
- profile 的 `time_facts`——`time_facts` 已经给了首末行取值,不要用 query 去取。
373
- - `query_dataset` 是受控分组/聚合透视查询,不是通用 raw.json 读取器,也不替代基础描述性 profile。对市场指数、指数组成、基金重仓股等不适合当前 QuerySpec 的数据,不要强行改写查询;不足以回答时如实回传能力边界。自定义查询脚本和自定义执行脚本属于后续 `data_analyst`,不得转移给 data_junior。
374
-
375
- 完成回传:
376
-
377
- ```json
378
- {
379
- "type": "dataset_query_completed",
380
- "task_id": "task_01J...",
381
- "dataset_id": "ds_01J...",
382
- "query_result": {
383
- "columns": ["symbol", "rows", "avg_close"],
384
- "rows": [{ "symbol": "600519.SH", "rows": 20, "avg_close": 1680.5 }],
385
- "matched_row_count": 20,
386
- "group_count": 1,
387
- "returned_count": 1,
388
- "limit": 100,
389
- "warnings": []
390
- }
391
- }
392
- ```
393
-
394
- 失败:`{ "type": "query_failed", "task_id": "task_01J...", "dataset_id": "ds_01J...", "error": "...", "code": "query_type_conflict" }`
395
-
396
- - `query_result.rows` 只能是有限分组键与聚合结果,不得出现未聚合 Dataset row、文件路径、内部路由键或凭据。
397
-
398
140
  ## 5. 重试纪律
399
141
 
400
142