Not in the top 1,000 by GitHub stars

Veblin/invest-skills

大A研究助手,仅作为学习不作为决策的依据

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

scripts/wb_bundle/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b2857b0599de → b2857b0599de

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b2857b0599de

No earlier version was observed for comparison.

Compare on GitHub

skills/invest-a-discover-scan/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b2857b0599de → b2857b0599de

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b2857b0599de

No earlier version was observed for comparison.

Compare on GitHub

skills/invest-a-etf/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b2857b0599de → b2857b0599de

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b2857b0599de

No earlier version was observed for comparison.

Compare on GitHub

skills/invest-a-gap-scan/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b2857b0599de → b2857b0599de

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b2857b0599de

No earlier version was observed for comparison.

Compare on GitHub

skills/invest-a-journal/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b2857b0599de → b2857b0599de

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b2857b0599de

No earlier version was observed for comparison.

Compare on GitHub

skills/invest-a-pattern-scan/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b2857b0599de → b2857b0599de

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b2857b0599de

No earlier version was observed for comparison.

Compare on GitHub

skills/invest-a-pulse/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b2857b0599de → b2857b0599de

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b2857b0599de

No earlier version was observed for comparison.

Compare on GitHub

skills/invest-a-stock/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b2857b0599de → b2857b0599de

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b2857b0599de

No earlier version was observed for comparison.

Compare on GitHub

skills/invest-hk-stock/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

b2857b0599de → b2857b0599de

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → b2857b0599de

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit b2857b0599de563604cd3baf054a1c157da36f88

git clone --filter=blob:none --no-checkout https://github.com/Veblin/invest-skills.git .hotskills/veblin-invest-skills && git -C .hotskills/veblin-invest-skills checkout --detach b2857b0599de563604cd3baf054a1c157da36f88 # Copy each selected skill directory from .hotskills/veblin-invest-skills into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/Veblin/invest-skills.git .hotskills/veblin-invest-skills && git -C .hotskills/veblin-invest-skills checkout --detach b2857b0599de563604cd3baf054a1c157da36f88 # Copy each selected skill directory from .hotskills/veblin-invest-skills into .agents/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/Veblin/invest-skills.git .hotskills/veblin-invest-skills && git -C .hotskills/veblin-invest-skills checkout --detach b2857b0599de563604cd3baf054a1c157da36f88 # Copy each selected skill directory from .hotskills/veblin-invest-skills into .gemini/skills/<skill-name>/
17GitHub stars
0stars in 7 days
9skills in this repository
15commits in 30 days

Heat

1.6
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Oct 25, 202617

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

invest-skills

When your agent uses it

A股投研技能集:个股投研、ETF研究、交易日志、市场情绪脉搏、跳空缺口扫描、底部形态扫描、港股研究、低估发现扫描,八大技能共用一个 Python 数据引擎,产出带来源追溯的研究备忘录。研究工具,非决策工具。触发词:个股投研/估值/财报/ETF/指数基金/交易日志/买入评估/卖出评估/市场情绪/大盘/市场脉搏/缺口扫描/跳空扫描/双底/形态扫描/三角形底/底部形态/港股/AH比价/南向资金/低估/发现/便宜/估值扫描

What it loads into context

Frontmatter

192 tokens

Always available to the agent

SKILL.md

1,185 tokens

When the skill is activated

Reference documents

188,706 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 子技能路由表
  2. 环境约定(重要)
  3. Step 0 — 首次使用:环境自检(每个新会话先跑一次)
  4. 输出位置
  5. 边界

Scripts executed separately

  • bootstrap.sh
  • ../../skills/invest-a-discover-scan/scripts/discover_fillback.py
  • ../../skills/invest-a-discover-scan/scripts/discover_scan.py
  • ../../skills/invest-a-discover-scan/scripts/lib/__init__.py
  • ../../skills/invest-a-discover-scan/scripts/lib/_invest_path.py
  • ../../skills/invest-a-discover-scan/scripts/lib/lenses.py
  • ../../skills/invest-a-discover-scan/scripts/lib/pool.py
  • ../../skills/invest-a-discover-scan/scripts/lib/quality.py
  • ../../skills/invest-a-discover-scan/scripts/lib/snapshot.py
  • ../../skills/invest-a-discover-scan/scripts/lib/sources.py
  • ../../skills/invest-a-discover-scan/scripts/lib/sources_hk.py
  • ../../skills/invest-a-discover-scan/tests/_scan_cli.py
  • ../../skills/invest-a-discover-scan/tests/conftest.py
  • ../../skills/invest-a-discover-scan/tests/test_cli.py
  • ../../skills/invest-a-discover-scan/tests/test_discover_pool.py
  • ../../skills/invest-a-discover-scan/tests/test_lenses.py
  • ../../skills/invest-a-discover-scan/tests/test_quality.py
  • ../../skills/invest-a-discover-scan/tests/test_snapshot.py
  • ../../skills/invest-a-discover-scan/tests/test_sources.py
  • ../../skills/invest-a-discover-scan/tests/test_sources_hk.py
  • ../../skills/invest-a-etf/scripts/__init__.py
  • ../../skills/invest-a-etf/scripts/etf.py
  • ../../skills/invest-a-etf/scripts/lib/__init__.py
  • ../../skills/invest-a-etf/scripts/lib/_invest_path.py
  • ../../skills/invest-a-etf/scripts/lib/assets/chart.umd.min.js
  • ../../skills/invest-a-etf/scripts/lib/etf_data.py
  • ../../skills/invest-a-etf/scripts/lib/etf_generation.py
  • ../../skills/invest-a-etf/scripts/lib/etf_html.py
  • ../../skills/invest-a-etf/scripts/lib/etf_md.py
  • ../../skills/invest-a-etf/scripts/lib/etf_peers.py
  • ../../skills/invest-a-etf/scripts/lib/etf_playbook.py
  • ../../skills/invest-a-etf/scripts/lib/etf_research.py
  • ../../skills/invest-a-etf/scripts/lib/etf_timeline.py
  • ../../skills/invest-a-etf/scripts/lib/futures_basis.py
  • ../../skills/invest-a-etf/scripts/lib/index_pe_snapshot.py
  • ../../skills/invest-a-etf/scripts/lib/industry_snapshot.py
  • ../../skills/invest-a-etf/scripts/lib/sector_flow.py
  • ../../skills/invest-a-etf/tests/conftest.py
  • ../../skills/invest-a-etf/tests/test_etf_159920_disclosure.py
  • ../../skills/invest-a-etf/tests/test_etf_boll_bandwidth.py
  • ../../skills/invest-a-etf/tests/test_etf_cache_fixes.py
  • ../../skills/invest-a-etf/tests/test_etf_cli.py
  • ../../skills/invest-a-etf/tests/test_etf_data_status.py
  • ../../skills/invest-a-etf/tests/test_etf_decision.py
  • ../../skills/invest-a-etf/tests/test_etf_exposure.py
  • ../../skills/invest-a-etf/tests/test_etf_flags.py
  • ../../skills/invest-a-etf/tests/test_etf_generation.py
  • ../../skills/invest-a-etf/tests/test_etf_holdings.py
  • ../../skills/invest-a-etf/tests/test_etf_html.py
  • ../../skills/invest-a-etf/tests/test_etf_identity.py
  • ../../skills/invest-a-etf/tests/test_etf_index_pe.py
  • ../../skills/invest-a-etf/tests/test_etf_kline.py
  • ../../skills/invest-a-etf/tests/test_etf_map.py
  • ../../skills/invest-a-etf/tests/test_etf_md.py
  • ../../skills/invest-a-etf/tests/test_etf_peers.py
  • ../../skills/invest-a-etf/tests/test_etf_playbook.py
  • ../../skills/invest-a-etf/tests/test_etf_same_index_evidence.py
  • ../../skills/invest-a-etf/tests/test_etf_scale_semantics.py
  • ../../skills/invest-a-etf/tests/test_etf_share_flow.py
  • ../../skills/invest-a-etf/tests/test_etf_share_split.py
  • ../../skills/invest-a-etf/tests/test_etf_share_window.py
  • ../../skills/invest-a-etf/tests/test_etf_spot_cache.py
  • ../../skills/invest-a-etf/tests/test_etf_timeline.py
  • ../../skills/invest-a-etf/tests/test_etf_tracking.py
  • ../../skills/invest-a-etf/tests/test_etf_tradability.py
  • ../../skills/invest-a-etf/tests/test_etf_valuation_guide.py
  • ../../skills/invest-a-etf/tests/test_futures_basis.py
  • ../../skills/invest-a-etf/tests/test_index_pe_snapshot.py
  • ../../skills/invest-a-etf/tests/test_operating_research.py
  • ../../skills/invest-a-etf/tests/test_r1_staleness.py
  • ../../skills/invest-a-etf/tests/test_sector_flow.py
  • ../../skills/invest-a-etf/tests/test_v026_p1_fixes.py
  • ../../skills/invest-a-event-calendar/scripts/__init__.py
  • ../../skills/invest-a-event-calendar/scripts/macro_calendar.py
  • ../../skills/invest-a-event-calendar/scripts/theme_calendar.py
  • ../../skills/invest-a-event-calendar/scripts/unlock_calendar.py
  • ../../skills/invest-a-event-calendar/tests/test_calendar.py
  • ../../skills/invest-a-event-calendar/tests/test_macro_calendar.py
  • ../../skills/invest-a-event-calendar/tests/test_macro_cli.py
  • ../../skills/invest-a-event-calendar/tests/test_pool.py
  • ../../skills/invest-a-event-calendar/tests/test_theme_calendar.py
  • ../../skills/invest-a-gap-scan/scripts/__init__.py
  • ../../skills/invest-a-gap-scan/scripts/eval_forward.py
  • ../../skills/invest-a-gap-scan/scripts/lib/__init__.py
  • ../../skills/invest-a-gap-scan/scripts/lib/_invest_path.py
  • ../../skills/invest-a-gap-scan/scripts/lib/gap_scanner.py
  • ../../skills/invest-a-gap-scan/scripts/lib/kline_source.py
  • ../../skills/invest-a-gap-scan/scripts/lib/qfq.py
  • ../../skills/invest-a-gap-scan/scripts/lib/report_formatter.py
  • ../../skills/invest-a-gap-scan/scripts/lib/skip_reasons.py
  • ../../skills/invest-a-gap-scan/scripts/lib/suspension.py
  • ../../skills/invest-a-gap-scan/scripts/lib/universe.py
  • ../../skills/invest-a-gap-scan/scripts/record_hits.py
  • ../../skills/invest-a-gap-scan/scripts/scan.py
  • ../../skills/invest-a-gap-scan/tests/__init__.py
  • ../../skills/invest-a-gap-scan/tests/conftest.py
  • ../../skills/invest-a-gap-scan/tests/test_backtest_eval.py
  • ../../skills/invest-a-gap-scan/tests/test_create_source.py
  • ../../skills/invest-a-gap-scan/tests/test_gap_scanner.py
  • ../../skills/invest-a-gap-scan/tests/test_kline_group.py
  • ../../skills/invest-a-gap-scan/tests/test_qfq.py
  • ../../skills/invest-a-gap-scan/tests/test_report_smoke.py
  • ../../skills/invest-a-gap-scan/tests/test_suspension.py
  • ../../skills/invest-a-gap-scan/tests/test_universe.py
  • ../../skills/invest-a-journal/scripts/journal.py
  • ../../skills/invest-a-journal/scripts/lib/__init__.py
  • ../../skills/invest-a-journal/scripts/lib/_invest_path.py
  • ../../skills/invest-a-journal/scripts/lib/db.py
  • ../../skills/invest-a-journal/scripts/lib/etf_data.py
  • ../../skills/invest-a-journal/scripts/lib/market_microstructure.py
  • ../../skills/invest-a-journal/scripts/lib/query_data.py
  • ../../skills/invest-a-journal/tests/conftest.py
  • ../../skills/invest-a-journal/tests/test_chip_clearance.py
  • ../../skills/invest-a-journal/tests/test_compute_technical_stock.py
  • ../../skills/invest-a-journal/tests/test_db_rollback.py
  • ../../skills/invest-a-journal/tests/test_env_guardrail.py
  • ../../skills/invest-a-journal/tests/test_etf_shim.py
  • ../../skills/invest-a-journal/tests/test_futures_basis_freshness.py
  • ../../skills/invest-a-journal/tests/test_inaction_watch_show.py
  • ../../skills/invest-a-journal/tests/test_journal_module_loader.py
  • ../../skills/invest-a-journal/tests/test_journal_v026.py
  • ../../skills/invest-a-journal/tests/test_labels_v2.py
  • ../../skills/invest-a-journal/tests/test_macro_snapshot.py
  • ../../skills/invest-a-journal/tests/test_market_form.py
  • ../../skills/invest-a-journal/tests/test_microstructure_via_bridge.py
  • ../../skills/invest-a-journal/tests/test_position_nav.py
  • ../../skills/invest-a-journal/tests/test_query_data_etf.py
  • ../../skills/invest-a-journal/tests/test_query_helpers.py
  • ../../skills/invest-a-journal/tests/test_safe_collect_ordering.py
  • ../../skills/invest-a-journal/tests/test_sell_link.py
  • ../../skills/invest-a-journal/tests/test_session_date_fields.py
  • ../../skills/invest-a-journal/tests/test_snapshot_status.py
  • ../../skills/invest-a-journal/tests/test_store_isolation.py
  • ../../skills/invest-a-journal/tests/test_szse_turnover.py
  • ../../skills/invest-a-journal/tests/test_v027_csindex_noise.py
  • ../../skills/invest-a-journal/tests/test_wrong_frequency.py
  • ../../skills/invest-a-journal/tests/test_zt_seesaw.py
  • ../../skills/invest-a-pattern-scan/scripts/lib/_invest_path.py
  • ../../skills/invest-a-pattern-scan/scripts/lib/feature_patterns.py
  • ../../skills/invest-a-pattern-scan/scripts/lib/kline_source.py
  • ../../skills/invest-a-pattern-scan/scripts/lib/pattern_scanner.py
  • ../../skills/invest-a-pattern-scan/scripts/lib/universe.py
  • ../../skills/invest-a-pattern-scan/scripts/scan.py
  • ../../skills/invest-a-pattern-scan/tests/test_feature_patterns.py
  • ../../skills/invest-a-pattern-scan/tests/test_scanner_smoke.py
  • ../../skills/invest-a-stock/scripts/agent_facts.py
  • ../../skills/invest-a-stock/scripts/check_report.sh
  • ../../skills/invest-a-stock/scripts/invest.py
  • ../../skills/invest-a-stock/scripts/lib/__init__.py
  • ../../skills/invest-a-stock/scripts/lib/_invest_path.py
  • ../../skills/invest-a-stock/scripts/lib/analysis_schema.py
  • ../../skills/invest-a-stock/scripts/lib/analysis_status.py
  • ../../skills/invest-a-stock/scripts/lib/analysis_templates.py
  • ../../skills/invest-a-stock/scripts/lib/archiver.py
  • ../../skills/invest-a-stock/scripts/lib/assets/echarts.umd.min.js
  • ../../skills/invest-a-stock/scripts/lib/attribution.py
  • ../../skills/invest-a-stock/scripts/lib/catalyst.py
  • ../../skills/invest-a-stock/scripts/lib/chain.py
  • ../../skills/invest-a-stock/scripts/lib/climate.py
  • ../../skills/invest-a-stock/scripts/lib/collector/__init__.py
  • ../../skills/invest-a-stock/scripts/lib/collector/_base.py
  • ../../skills/invest-a-stock/scripts/lib/collector/_kline_cache.py
  • ../../skills/invest-a-stock/scripts/lib/collector/_legacy.py
  • ../../skills/invest-a-stock/scripts/lib/collector/_orchestrate.py
  • ../../skills/invest-a-stock/scripts/lib/collector/_sources.py
  • ../../skills/invest-a-stock/scripts/lib/data_util.py
  • ../../skills/invest-a-stock/scripts/lib/db_util.py
  • ../../skills/invest-a-stock/scripts/lib/env.py
  • ../../skills/invest-a-stock/scripts/lib/events.py
  • ../../skills/invest-a-stock/scripts/lib/evidence.py
  • ../../skills/invest-a-stock/scripts/lib/financial_rigor.py
  • ../../skills/invest-a-stock/scripts/lib/financials.py
  • ../../skills/invest-a-stock/scripts/lib/fusion.py
  • ../../skills/invest-a-stock/scripts/lib/futures_data.py
  • ../../skills/invest-a-stock/scripts/lib/html_charts.py
  • ../../skills/invest-a-stock/scripts/lib/income_driver.py
  • ../../skills/invest-a-stock/scripts/lib/industry/__init__.py
  • ../../skills/invest-a-stock/scripts/lib/industry/banks.py
  • ../../skills/invest-a-stock/scripts/lib/industry/base.py
  • ../../skills/invest-a-stock/scripts/lib/industry/tech_hardware.py
  • ../../skills/invest-a-stock/scripts/lib/insight_model.py
  • ../../skills/invest-a-stock/scripts/lib/json_util.py
  • ../../skills/invest-a-stock/scripts/lib/kline_cache.py
  • ../../skills/invest-a-stock/scripts/lib/lhb.py
  • ../../skills/invest-a-stock/scripts/lib/lint.py
  • ../../skills/invest-a-stock/scripts/lib/macro.py
  • ../../skills/invest-a-stock/scripts/lib/manifest.py
  • ../../skills/invest-a-stock/scripts/lib/market_daily.py
  • ../../skills/invest-a-stock/scripts/lib/market_pulse.py
  • ../../skills/invest-a-stock/scripts/lib/md_subset.py
  • ../../skills/invest-a-stock/scripts/lib/news_scanner.py
  • ../../skills/invest-a-stock/scripts/lib/notice_body.py
  • ../../skills/invest-a-stock/scripts/lib/nums.py
  • ../../skills/invest-a-stock/scripts/lib/participant_scan.py
  • ../../skills/invest-a-stock/scripts/lib/planner.py
  • ../../skills/invest-a-stock/scripts/lib/portfolio_review.py
  • ../../skills/invest-a-stock/scripts/lib/positions.py
  • ../../skills/invest-a-stock/scripts/lib/proxy.py
  • ../../skills/invest-a-stock/scripts/lib/qfq.py
  • ../../skills/invest-a-stock/scripts/lib/quality_check.py
  • ../../skills/invest-a-stock/scripts/lib/render.py
  • ../../skills/invest-a-stock/scripts/lib/render_dcf.py
  • ../../skills/invest-a-stock/scripts/lib/render_extras.py
  • ../../skills/invest-a-stock/scripts/lib/render_html.py
  • ../../skills/invest-a-stock/scripts/lib/render_icons.py
  • ../../skills/invest-a-stock/scripts/lib/render_insight.py
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/__init__.py
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/_base.py
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/_concise.py
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/_legacy.py
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/_v2.py
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/_v3.py
  • ../../skills/invest-a-stock/scripts/lib/render_risk.py
  • ../../skills/invest-a-stock/scripts/lib/render_utils.py
  • ../../skills/invest-a-stock/scripts/lib/report_audit.py
  • ../../skills/invest-a-stock/scripts/lib/report_snapshot.py
  • ../../skills/invest-a-stock/scripts/lib/rerank.py
  • ../../skills/invest-a-stock/scripts/lib/research_profile.py
  • ../../skills/invest-a-stock/scripts/lib/risk_reward.py
  • ../../skills/invest-a-stock/scripts/lib/risk_scanner.py
  • ../../skills/invest-a-stock/scripts/lib/schema.py
  • ../../skills/invest-a-stock/scripts/lib/scoring.py
  • ../../skills/invest-a-stock/scripts/lib/search_cache.py
  • ../../skills/invest-a-stock/scripts/lib/shared_codes.py
  • ../../skills/invest-a-stock/scripts/lib/shared_dates.py
  • ../../skills/invest-a-stock/scripts/lib/stats.py
  • ../../skills/invest-a-stock/scripts/lib/store.py
  • ../../skills/invest-a-stock/scripts/lib/style_match.py
  • ../../skills/invest-a-stock/scripts/lib/technical.py
  • ../../skills/invest-a-stock/scripts/lib/trade_cal.py
  • ../../skills/invest-a-stock/scripts/lib/tushare_client.py
  • ../../skills/invest-a-stock/scripts/lib/valuation.py
  • ../../skills/invest-a-stock/scripts/lib/version.py
  • ../../skills/invest-a-stock/scripts/merge_collections.py
  • ../../skills/invest-a-stock/scripts/valuation_calc.py
  • ../../skills/invest-a-stock/tests/conftest.py
  • ../../skills/invest-a-stock/tests/fixtures/__init__.py
  • ../../skills/invest-a-stock/tests/fixtures/collections.py
  • ../../skills/invest-a-stock/tests/stock_testutil.py
  • ../../skills/invest-a-stock/tests/test_agent_facts.py
  • ../../skills/invest-a-stock/tests/test_analysis_schema.py
  • ../../skills/invest-a-stock/tests/test_analysis_templates.py
  • ../../skills/invest-a-stock/tests/test_atomic_json_contract.py
  • ../../skills/invest-a-stock/tests/test_attribution.py
  • ../../skills/invest-a-stock/tests/test_catalyst.py
  • ../../skills/invest-a-stock/tests/test_chain.py
  • ../../skills/invest-a-stock/tests/test_cli_dispatch.py
  • ../../skills/invest-a-stock/tests/test_cli_html.py
  • ../../skills/invest-a-stock/tests/test_climate.py
  • ../../skills/invest-a-stock/tests/test_collector.py
  • ../../skills/invest-a-stock/tests/test_collector_fixes.py
  • ../../skills/invest-a-stock/tests/test_collector_run_cache.py
  • ../../skills/invest-a-stock/tests/test_collector_zombie_cache.py
  • ../../skills/invest-a-stock/tests/test_cross_validation.py
  • ../../skills/invest-a-stock/tests/test_d3_sourcing_labels.py
  • ../../skills/invest-a-stock/tests/test_default_store.py
  • ../../skills/invest-a-stock/tests/test_disposition_hint.py
  • ../../skills/invest-a-stock/tests/test_entry_check_precision.py
  • ../../skills/invest-a-stock/tests/test_env.py
  • ../../skills/invest-a-stock/tests/test_events.py
  • ../../skills/invest-a-stock/tests/test_events_notice_types.py
  • ../../skills/invest-a-stock/tests/test_evidence.py
  • ../../skills/invest-a-stock/tests/test_fast_report_pipeline.py
  • ../../skills/invest-a-stock/tests/test_financial_rigor.py
  • ../../skills/invest-a-stock/tests/test_financials.py
  • ../../skills/invest-a-stock/tests/test_full_analysis_cli.py
  • ../../skills/invest-a-stock/tests/test_fusion.py
  • ../../skills/invest-a-stock/tests/test_futures_data.py
  • ../../skills/invest-a-stock/tests/test_html_charts.py
  • ../../skills/invest-a-stock/tests/test_industry_success_factors.py
  • ../../skills/invest-a-stock/tests/test_injection_shield.py
  • ../../skills/invest-a-stock/tests/test_insight_analysis_cli.py
  • ../../skills/invest-a-stock/tests/test_insight_discoveries_chains.py
  • ../../skills/invest-a-stock/tests/test_insight_report.py
  • ../../skills/invest-a-stock/tests/test_invest_cli_help.py
  • ../../skills/invest-a-stock/tests/test_lhb.py
  • ../../skills/invest-a-stock/tests/test_lint.py
  • ../../skills/invest-a-stock/tests/test_macro_extended.py
  • ../../skills/invest-a-stock/tests/test_manifest.py
  • ../../skills/invest-a-stock/tests/test_market_daily.py
  • ../../skills/invest-a-stock/tests/test_market_status_basis.py
  • ../../skills/invest-a-stock/tests/test_md_subset.py
  • ../../skills/invest-a-stock/tests/test_merge_collections.py
  • ../../skills/invest-a-stock/tests/test_news_scanner.py
  • ../../skills/invest-a-stock/tests/test_notice_body.py
  • ../../skills/invest-a-stock/tests/test_orchestrate_blocks.py
  • ../../skills/invest-a-stock/tests/test_parse_fetched_at_parity.py
  • ../../skills/invest-a-stock/tests/test_participant_scan.py
  • ../../skills/invest-a-stock/tests/test_pcr_freshness.py
  • ../../skills/invest-a-stock/tests/test_pe_loss_missing_consistency.py
  • ../../skills/invest-a-stock/tests/test_peer_cli.py
  • ../../skills/invest-a-stock/tests/test_peer_market_caps.py
  • ../../skills/invest-a-stock/tests/test_percentile_core_shared.py
  • ../../skills/invest-a-stock/tests/test_portfolio_review.py
  • ../../skills/invest-a-stock/tests/test_positions.py
  • ../../skills/invest-a-stock/tests/test_price_basis_label.py
  • ../../skills/invest-a-stock/tests/test_proxy.py
  • ../../skills/invest-a-stock/tests/test_qc_render_output_regression.py
  • ../../skills/invest-a-stock/tests/test_quality_check.py
  • ../../skills/invest-a-stock/tests/test_r12h.py
  • ../../skills/invest-a-stock/tests/test_redundancy_phase23.py
  • ../../skills/invest-a-stock/tests/test_render_code_review_fixes.py
  • ../../skills/invest-a-stock/tests/test_render_concise_fixes.py
  • ../../skills/invest-a-stock/tests/test_render_extras.py
  • ../../skills/invest-a-stock/tests/test_render_html.py
  • ../../skills/invest-a-stock/tests/test_render_v2.py
  • ../../skills/invest-a-stock/tests/test_report_audit.py
  • ../../skills/invest-a-stock/tests/test_report_diff_history.py
  • ../../skills/invest-a-stock/tests/test_report_filepath.py
  • ../../skills/invest-a-stock/tests/test_report_qc_gates.py
  • ../../skills/invest-a-stock/tests/test_report_snapshot.py
  • ../../skills/invest-a-stock/tests/test_rerank.py
  • ../../skills/invest-a-stock/tests/test_research.py
  • ../../skills/invest-a-stock/tests/test_research_profile.py
  • ../../skills/invest-a-stock/tests/test_risk_reward.py
  • ../../skills/invest-a-stock/tests/test_risk_scanner.py
  • ../../skills/invest-a-stock/tests/test_schema.py
  • ../../skills/invest-a-stock/tests/test_search_cache.py
  • ../../skills/invest-a-stock/tests/test_sector_sync_collector.py
  • ../../skills/invest-a-stock/tests/test_segments_collector.py
  • ../../skills/invest-a-stock/tests/test_store_diff.py
  • ../../skills/invest-a-stock/tests/test_store_pipeline.py
  • ../../skills/invest-a-stock/tests/test_store_public_connection.py
  • ../../skills/invest-a-stock/tests/test_style_match.py
  • ../../skills/invest-a-stock/tests/test_sw_member_all.py
  • ../../skills/invest-a-stock/tests/test_technical.py
  • ../../skills/invest-a-stock/tests/test_technical_v019.py
  • ../../skills/invest-a-stock/tests/test_test_hygiene.py
  • ../../skills/invest-a-stock/tests/test_thesis_dates.py
  • ../../skills/invest-a-stock/tests/test_tushare_client.py
  • ../../skills/invest-a-stock/tests/test_v013_phase1.py
  • ../../skills/invest-a-stock/tests/test_v013_phase2.py
  • ../../skills/invest-a-stock/tests/test_v013_phase3.py
  • ../../skills/invest-a-stock/tests/test_v013_phase4.py
  • ../../skills/invest-a-stock/tests/test_v014.py
  • ../../skills/invest-a-stock/tests/test_v015_fixes.py
  • ../../skills/invest-a-stock/tests/test_v017.py
  • ../../skills/invest-a-stock/tests/test_v017_e2e.py
  • ../../skills/invest-a-stock/tests/test_v018.py
  • ../../skills/invest-a-stock/tests/test_v026_p0_fixes.py
  • ../../skills/invest-a-stock/tests/test_v026_review_fixes.py
  • ../../skills/invest-a-stock/tests/test_v027_fixes.py
  • ../../skills/invest-a-stock/tests/test_v028_fixes.py
  • ../../skills/invest-a-stock/tests/test_v030_reading_layers.py
  • ../../skills/invest-a-stock/tests/test_v031_c1_fin_series.py
  • ../../skills/invest-a-stock/tests/test_v031_c2_rf.py
  • ../../skills/invest-a-stock/tests/test_v031_c3_bank_leverage.py
  • ../../skills/invest-a-stock/tests/test_v031_mainline_rev.py
  • ../../skills/invest-a-stock/tests/test_v031_priority_review.py
  • ../../skills/invest-a-stock/tests/test_v031_reading_surface.py
  • ../../skills/invest-a-stock/tests/test_valuation.py
  • ../../skills/invest-a-stock/tests/test_version.py
  • ../../skills/invest-a-stock/tests/test_version_sync.py
  • ../../skills/invest-hk-stock/scripts/hk.py
  • ../../skills/invest-hk-stock/scripts/lib/__init__.py
  • ../../skills/invest-hk-stock/scripts/lib/_invest_path.py
  • ../../skills/invest-hk-stock/scripts/lib/hk_ah.py
  • ../../skills/invest-hk-stock/scripts/lib/hk_calendar.py
  • ../../skills/invest-hk-stock/scripts/lib/hk_codes.py
  • ../../skills/invest-hk-stock/scripts/lib/hk_compare.py
  • ../../skills/invest-hk-stock/scripts/lib/hk_financials.py
  • ../../skills/invest-hk-stock/scripts/lib/hk_kline.py
  • ../../skills/invest-hk-stock/scripts/lib/hk_quote.py
  • ../../skills/invest-hk-stock/scripts/lib/hk_southbound.py
  • ../../skills/invest-hk-stock/scripts/lib/hk_tushare.py
  • ../../skills/invest-hk-stock/scripts/lib/hk_valuation.py
  • ../../skills/invest-hk-stock/scripts/lib/hk_yfinance.py
  • ../../skills/invest-hk-stock/tests/_hk_cli.py
  • ../../skills/invest-hk-stock/tests/conftest.py
  • ../../skills/invest-hk-stock/tests/test_hk_ah.py
  • ../../skills/invest-hk-stock/tests/test_hk_ah_align.py
  • ../../skills/invest-hk-stock/tests/test_hk_calendar.py
  • ../../skills/invest-hk-stock/tests/test_hk_codes.py
  • ../../skills/invest-hk-stock/tests/test_hk_compare.py
  • ../../skills/invest-hk-stock/tests/test_hk_data.py
  • ../../skills/invest-hk-stock/tests/test_hk_quote.py
  • ../../skills/invest-hk-stock/tests/test_hk_southbound.py
  • ../../skills/lib/__init__.py
  • ../../skills/lib/backtest.py
  • ../../skills/lib/cache.py
  • ../../skills/lib/codes.py
  • ../../skills/lib/config_backtest.py
  • ../../skills/lib/data_bridge.py
  • ../../skills/lib/data_util.py
  • ../../skills/lib/dates.py
  • ../../skills/lib/db_util.py
  • ../../skills/lib/decision_review.py
  • ../../skills/lib/decision_schema.py
  • ../../skills/lib/env.py
  • ../../skills/lib/evidence_tags.py
  • ../../skills/lib/freshness.py
  • ../../skills/lib/invest_path.py
  • ../../skills/lib/kline_cache.py
  • ../../skills/lib/lmw.py
  • ../../skills/lib/logutil.py
  • ../../skills/lib/market_microstructure.py
  • ../../skills/lib/market_pctile.py
  • ../../skills/lib/market_pulse.py
  • ../../skills/lib/multiple_testing.py
  • ../../skills/lib/nums.py
  • ../../skills/lib/proxy.py
  • ../../skills/lib/qfq.py
  • ../../skills/lib/quote_tencent.py
  • ../../skills/lib/report_qc.py
  • ../../skills/lib/sector_sync.py
  • ../../skills/lib/skill_paths.py
  • ../../skills/lib/snapshot_core.py
  • ../../skills/lib/stats.py
  • ../../skills/lib/technical.py
  • ../../skills/lib/tests/test_b06_qc_record.py
  • ../../skills/lib/tests/test_backtest.py
  • ../../skills/lib/tests/test_backtest_futures_fixes.py
  • ../../skills/lib/tests/test_build_skillhub_packages.py
  • ../../skills/lib/tests/test_cache.py
  • ../../skills/lib/tests/test_codes.py
  • ../../skills/lib/tests/test_config_backtest.py
  • ../../skills/lib/tests/test_data_bridge.py
  • ../../skills/lib/tests/test_data_util.py
  • ../../skills/lib/tests/test_dates.py
  • ../../skills/lib/tests/test_db_util.py
  • ../../skills/lib/tests/test_decision_review.py
  • ../../skills/lib/tests/test_decision_schema.py
  • ../../skills/lib/tests/test_dev_log_wiring.py
  • ../../skills/lib/tests/test_dist_doc_refs.py
  • ../../skills/lib/tests/test_h6_events.py
  • ../../skills/lib/tests/test_hypothesis_registry.py
  • ../../skills/lib/tests/test_invest_path_shims.py
  • ../../skills/lib/tests/test_kline_cache.py
  • ../../skills/lib/tests/test_law_contract_v031.py
  • ../../skills/lib/tests/test_lib_version.py
  • ../../skills/lib/tests/test_lmw.py
  • ../../skills/lib/tests/test_logutil.py
  • ../../skills/lib/tests/test_market_pctile.py
  • ../../skills/lib/tests/test_market_pulse.py
  • ../../skills/lib/tests/test_market_service_owner.py
  • ../../skills/lib/tests/test_multiple_testing.py
  • ../../skills/lib/tests/test_qfq.py
  • ../../skills/lib/tests/test_qfq_contract.py
  • ../../skills/lib/tests/test_quote_tencent.py
  • ../../skills/lib/tests/test_r1_sourcing_layer.py
  • ../../skills/lib/tests/test_r2_module_identity.py
  • ../../skills/lib/tests/test_report_qc.py
  • ../../skills/lib/tests/test_scenario_triggers.py
  • ../../skills/lib/tests/test_sector_sync.py
  • ../../skills/lib/tests/test_shared_owner_migration.py
  • ../../skills/lib/tests/test_skill_paths.py
  • ../../skills/lib/tests/test_snapshot_core.py
  • ../../skills/lib/tests/test_stats.py
  • ../../skills/lib/tests/test_technical_adx.py
  • ../../skills/lib/tests/test_trade_cal.py
  • ../../skills/lib/tests/test_unlock_source.py
  • ../../skills/lib/tests/test_v025_doc_checks.py
  • ../../skills/lib/tests/test_v026_doc_checks.py
  • ../../skills/lib/tests/test_v030_doc_checks.py
  • ../../skills/lib/tests/test_v031_evidence_tags.py
  • ../../skills/lib/tests/test_volume_price.py
  • ../../skills/lib/tests/test_zt_rotation_bundle.py
  • ../../skills/lib/trade_cal.py
  • ../../skills/lib/tushare_client.py
  • ../../skills/lib/unlock_source.py
  • ../../skills/lib/version.py
  • ../../skills/lib/volume_price.py

Files

  • ../../.claude-plugin/marketplace.jsonasset5,169 bytes
  • ../../.claude-plugin/marketplace.json.inasset5,233 bytes
  • ../../.claude-plugin/plugin.jsonasset776 bytes
  • ../../.claude-plugin/plugin.json.inasset784 bytes
  • ../../hooks/hooks.jsonasset279 bytes
  • ../../hooks/hooks.jsonasset279 bytes
  • README-安装.mddoc3,552 bytes
  • SKILL.mdcore3,831 bytes
  • SKILL.mdcore3,831 bytes
  • SKILL.mdcore3,831 bytes
  • bootstrap.shruns3,176 bytes
  • ../../skills/invest-a-discover-scan/SKILL.mddoc6,449 bytes
  • ../../skills/invest-a-discover-scan/references/rules.mddoc4,910 bytes
  • ../../skills/invest-a-discover-scan/references/sources.mddoc6,324 bytes
  • ../../skills/invest-a-discover-scan/scripts/discover_fillback.pyruns1,212 bytes
  • ../../skills/invest-a-discover-scan/scripts/discover_scan.pyruns37,401 bytes
  • ../../skills/invest-a-discover-scan/scripts/lib/__init__.pyruns288 bytes
  • ../../skills/invest-a-discover-scan/scripts/lib/_invest_path.pyruns962 bytes
  • ../../skills/invest-a-discover-scan/scripts/lib/lenses.pyruns9,617 bytes
  • ../../skills/invest-a-discover-scan/scripts/lib/pool.pyruns2,554 bytes
  • ../../skills/invest-a-discover-scan/scripts/lib/quality.pyruns6,146 bytes
  • ../../skills/invest-a-discover-scan/scripts/lib/snapshot.pyruns4,847 bytes
  • ../../skills/invest-a-discover-scan/scripts/lib/sources.pyruns17,846 bytes
  • ../../skills/invest-a-discover-scan/scripts/lib/sources_hk.pyruns14,102 bytes
  • ../../skills/invest-a-discover-scan/tests/_scan_cli.pyruns957 bytes
  • ../../skills/invest-a-discover-scan/tests/conftest.pyruns683 bytes
  • ../../skills/invest-a-discover-scan/tests/test_cli.pyruns37,725 bytes
  • ../../skills/invest-a-discover-scan/tests/test_discover_pool.pyruns2,894 bytes
  • ../../skills/invest-a-discover-scan/tests/test_lenses.pyruns9,538 bytes
  • ../../skills/invest-a-discover-scan/tests/test_quality.pyruns4,925 bytes
  • ../../skills/invest-a-discover-scan/tests/test_snapshot.pyruns4,537 bytes
  • ../../skills/invest-a-discover-scan/tests/test_sources.pyruns7,006 bytes
  • ../../skills/invest-a-discover-scan/tests/test_sources_hk.pyruns8,172 bytes
  • ../../skills/invest-a-etf/SKILL.mddoc53,939 bytes
  • ../../skills/invest-a-etf/events/512660.jsonasset1,827 bytes
  • ../../skills/invest-a-etf/events/562590.jsonasset4,224 bytes
  • ../../skills/invest-a-etf/events/588000.jsonasset3,807 bytes
  • ../../skills/invest-a-etf/events/README.mddoc1,481 bytes
  • ../../skills/invest-a-etf/references/etf-hedge-map.mddoc5,607 bytes
  • ../../skills/invest-a-etf/references/operating-research.mddoc4,996 bytes
  • ../../skills/invest-a-etf/references/report-template.mddoc15,683 bytes
  • ../../skills/invest-a-etf/scripts/__init__.pyruns0 bytes
  • ../../skills/invest-a-etf/scripts/etf.pyruns76,716 bytes
  • ../../skills/invest-a-etf/scripts/lib/__init__.pyruns0 bytes
  • ../../skills/invest-a-etf/scripts/lib/_invest_path.pyruns510 bytes
  • ../../skills/invest-a-etf/scripts/lib/assets/chart.umd.min.jsruns205,222 bytes
  • ../../skills/invest-a-etf/scripts/lib/etf_data.pyruns301,481 bytes
  • ../../skills/invest-a-etf/scripts/lib/etf_generation.pyruns11,548 bytes
  • ../../skills/invest-a-etf/scripts/lib/etf_html.pyruns89,595 bytes
  • ../../skills/invest-a-etf/scripts/lib/etf_md.pyruns14,878 bytes
  • ../../skills/invest-a-etf/scripts/lib/etf_peers.pyruns27,790 bytes
  • ../../skills/invest-a-etf/scripts/lib/etf_playbook.pyruns6,317 bytes
  • ../../skills/invest-a-etf/scripts/lib/etf_research.pyruns27,694 bytes
  • ../../skills/invest-a-etf/scripts/lib/etf_timeline.pyruns8,643 bytes
  • ../../skills/invest-a-etf/scripts/lib/futures_basis.pyruns6,286 bytes
  • ../../skills/invest-a-etf/scripts/lib/index_pe_snapshot.pyruns8,637 bytes
  • ../../skills/invest-a-etf/scripts/lib/industry_snapshot.pyruns9,764 bytes
  • ../../skills/invest-a-etf/scripts/lib/sector_flow.pyruns33,995 bytes
  • ../../skills/invest-a-etf/tests/conftest.pyruns2,485 bytes
  • ../../skills/invest-a-etf/tests/fixtures/159920_history_247.jsonasset11,590 bytes
  • ../../skills/invest-a-etf/tests/fixtures/md_skeleton.mddoc4,303 bytes
  • ../../skills/invest-a-etf/tests/test_etf_159920_disclosure.pyruns8,272 bytes
  • ../../skills/invest-a-etf/tests/test_etf_boll_bandwidth.pyruns3,879 bytes
  • ../../skills/invest-a-etf/tests/test_etf_cache_fixes.pyruns17,908 bytes
  • ../../skills/invest-a-etf/tests/test_etf_cli.pyruns45,963 bytes
  • ../../skills/invest-a-etf/tests/test_etf_data_status.pyruns38,537 bytes
  • ../../skills/invest-a-etf/tests/test_etf_decision.pyruns8,884 bytes
  • ../../skills/invest-a-etf/tests/test_etf_exposure.pyruns13,374 bytes
  • ../../skills/invest-a-etf/tests/test_etf_flags.pyruns5,774 bytes
  • ../../skills/invest-a-etf/tests/test_etf_generation.pyruns11,308 bytes
  • ../../skills/invest-a-etf/tests/test_etf_holdings.pyruns16,411 bytes
  • ../../skills/invest-a-etf/tests/test_etf_html.pyruns53,513 bytes
  • ../../skills/invest-a-etf/tests/test_etf_identity.pyruns16,355 bytes
  • ../../skills/invest-a-etf/tests/test_etf_index_pe.pyruns16,576 bytes
  • ../../skills/invest-a-etf/tests/test_etf_kline.pyruns7,005 bytes
  • ../../skills/invest-a-etf/tests/test_etf_map.pyruns3,209 bytes
  • ../../skills/invest-a-etf/tests/test_etf_md.pyruns6,913 bytes
  • ../../skills/invest-a-etf/tests/test_etf_peers.pyruns13,993 bytes
  • ../../skills/invest-a-etf/tests/test_etf_playbook.pyruns8,185 bytes
  • ../../skills/invest-a-etf/tests/test_etf_same_index_evidence.pyruns14,702 bytes
  • ../../skills/invest-a-etf/tests/test_etf_scale_semantics.pyruns4,903 bytes
  • ../../skills/invest-a-etf/tests/test_etf_share_flow.pyruns9,305 bytes
  • ../../skills/invest-a-etf/tests/test_etf_share_split.pyruns8,510 bytes
  • ../../skills/invest-a-etf/tests/test_etf_share_window.pyruns8,053 bytes
  • ../../skills/invest-a-etf/tests/test_etf_spot_cache.pyruns4,783 bytes
  • ../../skills/invest-a-etf/tests/test_etf_timeline.pyruns21,387 bytes
  • ../../skills/invest-a-etf/tests/test_etf_tracking.pyruns45,583 bytes
  • ../../skills/invest-a-etf/tests/test_etf_tradability.pyruns4,575 bytes
  • ../../skills/invest-a-etf/tests/test_etf_valuation_guide.pyruns1,640 bytes
  • ../../skills/invest-a-etf/tests/test_futures_basis.pyruns4,664 bytes
  • ../../skills/invest-a-etf/tests/test_index_pe_snapshot.pyruns16,535 bytes
  • ../../skills/invest-a-etf/tests/test_operating_research.pyruns16,432 bytes
  • ../../skills/invest-a-etf/tests/test_r1_staleness.pyruns14,650 bytes
  • ../../skills/invest-a-etf/tests/test_sector_flow.pyruns31,330 bytes
  • ../../skills/invest-a-etf/tests/test_v026_p1_fixes.pyruns9,935 bytes
  • ../../skills/invest-a-event-calendar/README.mddoc16,117 bytes
  • ../../skills/invest-a-event-calendar/references/fomc_meetings.yamlasset2,985 bytes
  • ../../skills/invest-a-event-calendar/references/macro_sources.yamlasset8,253 bytes
  • ../../skills/invest-a-event-calendar/references/political_calendar.yamlasset1,625 bytes
  • ../../skills/invest-a-event-calendar/scripts/__init__.pyruns0 bytes
  • ../../skills/invest-a-event-calendar/scripts/macro_calendar.pyruns41,421 bytes
  • ../../skills/invest-a-event-calendar/scripts/theme_calendar.pyruns23,615 bytes
  • ../../skills/invest-a-event-calendar/scripts/unlock_calendar.pyruns53,349 bytes
  • ../../skills/invest-a-event-calendar/tests/test_calendar.pyruns10,168 bytes
  • ../../skills/invest-a-event-calendar/tests/test_macro_calendar.pyruns44,127 bytes
  • ../../skills/invest-a-event-calendar/tests/test_macro_cli.pyruns18,155 bytes
  • ../../skills/invest-a-event-calendar/tests/test_pool.pyruns23,646 bytes
  • ../../skills/invest-a-event-calendar/tests/test_theme_calendar.pyruns21,126 bytes
  • ../../skills/invest-a-gap-scan/SKILL.mddoc24,606 bytes
  • ../../skills/invest-a-gap-scan/scripts/__init__.pyruns0 bytes
  • ../../skills/invest-a-gap-scan/scripts/eval_forward.pyruns12,859 bytes
  • ../../skills/invest-a-gap-scan/scripts/lib/__init__.pyruns0 bytes
  • ../../skills/invest-a-gap-scan/scripts/lib/_invest_path.pyruns510 bytes
  • ../../skills/invest-a-gap-scan/scripts/lib/gap_scanner.pyruns33,778 bytes
  • ../../skills/invest-a-gap-scan/scripts/lib/kline_source.pyruns27,718 bytes
  • ../../skills/invest-a-gap-scan/scripts/lib/qfq.pyruns1,489 bytes
  • ../../skills/invest-a-gap-scan/scripts/lib/report_formatter.pyruns29,514 bytes
  • ../../skills/invest-a-gap-scan/scripts/lib/skip_reasons.pyruns1,265 bytes
  • ../../skills/invest-a-gap-scan/scripts/lib/suspension.pyruns4,916 bytes
  • ../../skills/invest-a-gap-scan/scripts/lib/universe.pyruns22,307 bytes
  • ../../skills/invest-a-gap-scan/scripts/record_hits.pyruns5,672 bytes
  • ../../skills/invest-a-gap-scan/scripts/scan.pyruns26,044 bytes
  • ../../skills/invest-a-gap-scan/tests/__init__.pyruns0 bytes
  • ../../skills/invest-a-gap-scan/tests/conftest.pyruns249 bytes
  • ../../skills/invest-a-gap-scan/tests/test_backtest_eval.pyruns2,919 bytes
  • ../../skills/invest-a-gap-scan/tests/test_create_source.pyruns7,129 bytes
  • ../../skills/invest-a-gap-scan/tests/test_gap_scanner.pyruns53,679 bytes
  • ../../skills/invest-a-gap-scan/tests/test_kline_group.pyruns2,059 bytes
  • ../../skills/invest-a-gap-scan/tests/test_qfq.pyruns16,219 bytes
  • ../../skills/invest-a-gap-scan/tests/test_report_smoke.pyruns31,896 bytes
  • ../../skills/invest-a-gap-scan/tests/test_suspension.pyruns13,988 bytes
  • ../../skills/invest-a-gap-scan/tests/test_universe.pyruns5,127 bytes
  • ../../skills/invest-a-journal/SKILL.mddoc39,676 bytes
  • ../../skills/invest-a-journal/references/etf-hedge-map.mddoc328 bytes
  • ../../skills/invest-a-journal/references/evaluation-criteria.mddoc8,574 bytes
  • ../../skills/invest-a-journal/scripts/journal.pyruns13,644 bytes
  • ../../skills/invest-a-journal/scripts/lib/__init__.pyruns0 bytes
  • ../../skills/invest-a-journal/scripts/lib/_invest_path.pyruns510 bytes
  • ../../skills/invest-a-journal/scripts/lib/db.pyruns25,167 bytes
  • ../../skills/invest-a-journal/scripts/lib/etf_data.pyruns9,248 bytes
  • ../../skills/invest-a-journal/scripts/lib/market_microstructure.pyruns1,420 bytes
  • ../../skills/invest-a-journal/scripts/lib/query_data.pyruns22,560 bytes
  • ../../skills/invest-a-journal/tests/conftest.pyruns5,764 bytes
  • ../../skills/invest-a-journal/tests/test_chip_clearance.pyruns21,314 bytes
  • ../../skills/invest-a-journal/tests/test_compute_technical_stock.pyruns1,564 bytes
  • ../../skills/invest-a-journal/tests/test_db_rollback.pyruns1,109 bytes
  • ../../skills/invest-a-journal/tests/test_env_guardrail.pyruns5,603 bytes
  • ../../skills/invest-a-journal/tests/test_etf_shim.pyruns12,504 bytes
  • ../../skills/invest-a-journal/tests/test_futures_basis_freshness.pyruns19,579 bytes
  • ../../skills/invest-a-journal/tests/test_inaction_watch_show.pyruns2,801 bytes
  • ../../skills/invest-a-journal/tests/test_journal_module_loader.pyruns5,862 bytes
  • ../../skills/invest-a-journal/tests/test_journal_v026.pyruns3,950 bytes
  • ../../skills/invest-a-journal/tests/test_labels_v2.pyruns3,158 bytes
  • ../../skills/invest-a-journal/tests/test_macro_snapshot.pyruns5,980 bytes
  • ../../skills/invest-a-journal/tests/test_market_form.pyruns15,959 bytes
  • ../../skills/invest-a-journal/tests/test_microstructure_via_bridge.pyruns1,946 bytes
  • ../../skills/invest-a-journal/tests/test_position_nav.pyruns7,572 bytes
  • ../../skills/invest-a-journal/tests/test_query_data_etf.pyruns4,896 bytes
  • ../../skills/invest-a-journal/tests/test_query_helpers.pyruns1,487 bytes
  • ../../skills/invest-a-journal/tests/test_safe_collect_ordering.pyruns7,907 bytes
  • ../../skills/invest-a-journal/tests/test_sell_link.pyruns6,595 bytes
  • ../../skills/invest-a-journal/tests/test_session_date_fields.pyruns2,779 bytes
  • ../../skills/invest-a-journal/tests/test_snapshot_status.pyruns3,645 bytes
  • ../../skills/invest-a-journal/tests/test_store_isolation.pyruns9,720 bytes
  • ../../skills/invest-a-journal/tests/test_szse_turnover.pyruns2,939 bytes
  • ../../skills/invest-a-journal/tests/test_v027_csindex_noise.pyruns4,488 bytes
  • ../../skills/invest-a-journal/tests/test_wrong_frequency.pyruns6,074 bytes
  • ../../skills/invest-a-journal/tests/test_zt_seesaw.pyruns4,491 bytes
  • ../../skills/invest-a-pattern-scan/SKILL.mddoc5,322 bytes
  • ../../skills/invest-a-pattern-scan/scripts/lib/_invest_path.pyruns734 bytes
  • ../../skills/invest-a-pattern-scan/scripts/lib/feature_patterns.pyruns16,088 bytes
  • ../../skills/invest-a-pattern-scan/scripts/lib/kline_source.pyruns399 bytes
  • ../../skills/invest-a-pattern-scan/scripts/lib/pattern_scanner.pyruns9,316 bytes
  • ../../skills/invest-a-pattern-scan/scripts/lib/universe.pyruns391 bytes
  • ../../skills/invest-a-pattern-scan/scripts/scan.pyruns4,778 bytes
  • ../../skills/invest-a-pattern-scan/tests/test_feature_patterns.pyruns17,551 bytes
  • ../../skills/invest-a-pattern-scan/tests/test_scanner_smoke.pyruns9,216 bytes
  • ../../skills/invest-a-pulse/SKILL.mddoc32,432 bytes
  • ../../skills/invest-a-stock/SKILL.mddoc58,986 bytes
  • ../../skills/invest-a-stock/references/agent-prompts.mddoc25,521 bytes
  • ../../skills/invest-a-stock/references/deep-sop.mddoc6,715 bytes
  • ../../skills/invest-a-stock/references/financials.mddoc7,694 bytes
  • ../../skills/invest-a-stock/references/game-theory.mddoc3,384 bytes
  • ../../skills/invest-a-stock/references/ic-framework.mddoc5,766 bytes
  • ../../skills/invest-a-stock/references/modules.mddoc4,265 bytes
  • ../../skills/invest-a-stock/references/references-format.mddoc2,128 bytes
  • ../../skills/invest-a-stock/references/sentiment.mddoc2,900 bytes
  • ../../skills/invest-a-stock/references/source-guide.mddoc11,185 bytes
  • ../../skills/invest-a-stock/references/trade-structure.mddoc5,345 bytes
  • ../../skills/invest-a-stock/scripts/agent_facts.pyruns23,061 bytes
  • ../../skills/invest-a-stock/scripts/check_report.shruns1,456 bytes
  • ../../skills/invest-a-stock/scripts/invest.pyruns158,641 bytes
  • ../../skills/invest-a-stock/scripts/lib/__init__.pyruns62 bytes
  • ../../skills/invest-a-stock/scripts/lib/_invest_path.pyruns510 bytes
  • ../../skills/invest-a-stock/scripts/lib/analysis_schema.pyruns28,974 bytes
  • ../../skills/invest-a-stock/scripts/lib/analysis_status.pyruns1,986 bytes
  • ../../skills/invest-a-stock/scripts/lib/analysis_templates.pyruns18,609 bytes
  • ../../skills/invest-a-stock/scripts/lib/archiver.pyruns1,559 bytes
  • ../../skills/invest-a-stock/scripts/lib/assets/echarts.umd.min.jsruns1,121,883 bytes
  • ../../skills/invest-a-stock/scripts/lib/attribution.pyruns2,207 bytes
  • ../../skills/invest-a-stock/scripts/lib/catalyst.pyruns15,646 bytes
  • ../../skills/invest-a-stock/scripts/lib/chain.pyruns7,792 bytes
  • ../../skills/invest-a-stock/scripts/lib/climate.pyruns17,655 bytes
  • ../../skills/invest-a-stock/scripts/lib/collector/__init__.pyruns614 bytes
  • ../../skills/invest-a-stock/scripts/lib/collector/_base.pyruns16,931 bytes
  • ../../skills/invest-a-stock/scripts/lib/collector/_kline_cache.pyruns3,191 bytes
  • ../../skills/invest-a-stock/scripts/lib/collector/_legacy.pyruns2,872 bytes
  • ../../skills/invest-a-stock/scripts/lib/collector/_orchestrate.pyruns208,527 bytes
  • ../../skills/invest-a-stock/scripts/lib/collector/_sources.pyruns56,613 bytes
  • ../../skills/invest-a-stock/scripts/lib/data_util.pyruns278 bytes
  • ../../skills/invest-a-stock/scripts/lib/db_util.pyruns401 bytes
  • ../../skills/invest-a-stock/scripts/lib/env.pyruns895 bytes
  • ../../skills/invest-a-stock/scripts/lib/events.pyruns36,871 bytes
  • ../../skills/invest-a-stock/scripts/lib/evidence.pyruns5,744 bytes
  • ../../skills/invest-a-stock/scripts/lib/financial_rigor.pyruns16,506 bytes
  • ../../skills/invest-a-stock/scripts/lib/financials.pyruns14,368 bytes
  • ../../skills/invest-a-stock/scripts/lib/fusion.pyruns10,045 bytes
  • ../../skills/invest-a-stock/scripts/lib/futures_data.pyruns14,478 bytes
  • ../../skills/invest-a-stock/scripts/lib/html_charts.pyruns30,985 bytes
  • ../../skills/invest-a-stock/scripts/lib/income_driver.pyruns16,788 bytes
  • ../../skills/invest-a-stock/scripts/lib/industry/__init__.pyruns1,154 bytes
  • ../../skills/invest-a-stock/scripts/lib/industry/banks.pyruns7,661 bytes
  • ../../skills/invest-a-stock/scripts/lib/industry/base.pyruns7,041 bytes
  • ../../skills/invest-a-stock/scripts/lib/industry/tech_hardware.pyruns7,714 bytes
  • ../../skills/invest-a-stock/scripts/lib/insight_model.pyruns55,289 bytes
  • ../../skills/invest-a-stock/scripts/lib/json_util.pyruns3,851 bytes
  • ../../skills/invest-a-stock/scripts/lib/kline_cache.pyruns264 bytes
  • ../../skills/invest-a-stock/scripts/lib/lhb.pyruns9,895 bytes
  • ../../skills/invest-a-stock/scripts/lib/lint.pyruns18,755 bytes
  • ../../skills/invest-a-stock/scripts/lib/macro.pyruns63,498 bytes
  • ../../skills/invest-a-stock/scripts/lib/manifest.pyruns10,287 bytes
  • ../../skills/invest-a-stock/scripts/lib/market_daily.pyruns5,305 bytes
  • ../../skills/invest-a-stock/scripts/lib/market_pulse.pyruns278 bytes
  • ../../skills/invest-a-stock/scripts/lib/md_subset.pyruns10,174 bytes
  • ../../skills/invest-a-stock/scripts/lib/news_scanner.pyruns7,375 bytes
  • ../../skills/invest-a-stock/scripts/lib/notice_body.pyruns8,093 bytes
  • ../../skills/invest-a-stock/scripts/lib/nums.pyruns403 bytes
  • ../../skills/invest-a-stock/scripts/lib/participant_scan.pyruns12,368 bytes
  • ../../skills/invest-a-stock/scripts/lib/planner.pyruns8,004 bytes
  • ../../skills/invest-a-stock/scripts/lib/portfolio_review.pyruns9,458 bytes
  • ../../skills/invest-a-stock/scripts/lib/positions.pyruns15,598 bytes
  • ../../skills/invest-a-stock/scripts/lib/proxy.pyruns893 bytes
  • ../../skills/invest-a-stock/scripts/lib/qfq.pyruns272 bytes
  • ../../skills/invest-a-stock/scripts/lib/quality_check.pyruns13,656 bytes
  • ../../skills/invest-a-stock/scripts/lib/render.pyruns3,047 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_dcf.pyruns36,630 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_extras.pyruns2,192 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_html.pyruns87,452 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_icons.pyruns1,003 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_insight.pyruns24,854 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/__init__.pyruns532 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/_base.pyruns32,417 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/_concise.pyruns44,519 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/_legacy.pyruns484 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/_v2.pyruns27,911 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_markdown/_v3.pyruns228,363 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_risk.pyruns68,643 bytes
  • ../../skills/invest-a-stock/scripts/lib/render_utils.pyruns31,832 bytes
  • ../../skills/invest-a-stock/scripts/lib/report_audit.pyruns5,068 bytes
  • ../../skills/invest-a-stock/scripts/lib/report_snapshot.pyruns16,087 bytes
  • ../../skills/invest-a-stock/scripts/lib/rerank.pyruns4,806 bytes
  • ../../skills/invest-a-stock/scripts/lib/research_profile.pyruns14,766 bytes
  • ../../skills/invest-a-stock/scripts/lib/risk_reward.pyruns13,957 bytes
  • ../../skills/invest-a-stock/scripts/lib/risk_scanner.pyruns23,167 bytes
  • ../../skills/invest-a-stock/scripts/lib/schema.pyruns20,734 bytes
  • ../../skills/invest-a-stock/scripts/lib/scoring.pyruns29,049 bytes
  • ../../skills/invest-a-stock/scripts/lib/search_cache.pyruns6,425 bytes
  • ../../skills/invest-a-stock/scripts/lib/shared_codes.pyruns697 bytes
  • ../../skills/invest-a-stock/scripts/lib/shared_dates.pyruns1,721 bytes
  • ../../skills/invest-a-stock/scripts/lib/stats.pyruns364 bytes
  • ../../skills/invest-a-stock/scripts/lib/store.pyruns66,255 bytes
  • ../../skills/invest-a-stock/scripts/lib/style_match.pyruns7,658 bytes
  • ../../skills/invest-a-stock/scripts/lib/technical.pyruns321 bytes
  • ../../skills/invest-a-stock/scripts/lib/trade_cal.pyruns1,126 bytes
  • ../../skills/invest-a-stock/scripts/lib/tushare_client.pyruns873 bytes
  • ../../skills/invest-a-stock/scripts/lib/valuation.pyruns49,630 bytes
  • ../../skills/invest-a-stock/scripts/lib/version.pyruns262 bytes
  • ../../skills/invest-a-stock/scripts/merge_collections.pyruns18,410 bytes
  • ../../skills/invest-a-stock/scripts/references/compliance_rules.yamlasset47,844 bytes
  • ../../skills/invest-a-stock/scripts/references/compliance_rules.yamlasset47,844 bytes
  • ../../skills/invest-a-stock/scripts/references/compliance_rules.yamlasset47,844 bytes
  • ../../skills/invest-a-stock/scripts/references/compliance_rules.yamlasset47,844 bytes
  • ../../skills/invest-a-stock/scripts/references/event_type_taxonomy.yamlasset4,155 bytes
  • ../../skills/invest-a-stock/scripts/valuation_calc.pyruns84,754 bytes
  • ../../skills/invest-a-stock/tests/conftest.pyruns2,485 bytes
  • ../../skills/invest-a-stock/tests/fixtures/__init__.pyruns34 bytes
  • ../../skills/invest-a-stock/tests/fixtures/collections.pyruns4,462 bytes
  • ../../skills/invest-a-stock/tests/fixtures/v0.2.4/588000_nav_history.jsonasset22,270 bytes
  • ../../skills/invest-a-stock/tests/fixtures/v0.2.4/classify_inputs.jsonasset115,592 bytes
  • ../../skills/invest-a-stock/tests/fixtures/v0.2.4/limit_up_trigger_kline.jsonasset4,269 bytes
  • ../../skills/invest-a-stock/tests/fixtures/v0.2.4/woge_limit_streak_kline.jsonasset3,999 bytes
  • ../../skills/invest-a-stock/tests/fixtures/v0.2.9/catl_2021_2023_snapshot.jsonasset833 bytes
  • ../../skills/invest-a-stock/tests/stock_testutil.pyruns1,821 bytes
  • ../../skills/invest-a-stock/tests/test_agent_facts.pyruns15,726 bytes
  • ../../skills/invest-a-stock/tests/test_analysis_schema.pyruns24,827 bytes
  • ../../skills/invest-a-stock/tests/test_analysis_templates.pyruns28,401 bytes
  • ../../skills/invest-a-stock/tests/test_atomic_json_contract.pyruns4,754 bytes
  • ../../skills/invest-a-stock/tests/test_attribution.pyruns3,132 bytes
  • ../../skills/invest-a-stock/tests/test_catalyst.pyruns8,854 bytes
  • ../../skills/invest-a-stock/tests/test_chain.pyruns3,909 bytes
  • ../../skills/invest-a-stock/tests/test_cli_dispatch.pyruns13,153 bytes
  • ../../skills/invest-a-stock/tests/test_cli_html.pyruns1,495 bytes
  • ../../skills/invest-a-stock/tests/test_climate.pyruns16,210 bytes
  • ../../skills/invest-a-stock/tests/test_collector.pyruns22,453 bytes
  • ../../skills/invest-a-stock/tests/test_collector_fixes.pyruns68,898 bytes
  • ../../skills/invest-a-stock/tests/test_collector_run_cache.pyruns10,871 bytes
  • ../../skills/invest-a-stock/tests/test_collector_zombie_cache.pyruns2,659 bytes
  • ../../skills/invest-a-stock/tests/test_cross_validation.pyruns8,258 bytes
  • ../../skills/invest-a-stock/tests/test_d3_sourcing_labels.pyruns5,138 bytes
  • ../../skills/invest-a-stock/tests/test_default_store.pyruns33,569 bytes
  • ../../skills/invest-a-stock/tests/test_disposition_hint.pyruns6,368 bytes
  • ../../skills/invest-a-stock/tests/test_entry_check_precision.pyruns6,376 bytes
  • ../../skills/invest-a-stock/tests/test_env.pyruns6,335 bytes
  • ../../skills/invest-a-stock/tests/test_events.pyruns41,787 bytes
  • ../../skills/invest-a-stock/tests/test_events_notice_types.pyruns9,233 bytes
  • ../../skills/invest-a-stock/tests/test_evidence.pyruns4,874 bytes
  • ../../skills/invest-a-stock/tests/test_fast_report_pipeline.pyruns8,484 bytes
  • ../../skills/invest-a-stock/tests/test_financial_rigor.pyruns3,926 bytes
  • ../../skills/invest-a-stock/tests/test_financials.pyruns19,081 bytes
  • ../../skills/invest-a-stock/tests/test_full_analysis_cli.pyruns4,964 bytes
  • ../../skills/invest-a-stock/tests/test_fusion.pyruns25,940 bytes
  • ../../skills/invest-a-stock/tests/test_futures_data.pyruns14,264 bytes
  • ../../skills/invest-a-stock/tests/test_html_charts.pyruns20,715 bytes
  • ../../skills/invest-a-stock/tests/test_industry_success_factors.pyruns8,170 bytes
  • ../../skills/invest-a-stock/tests/test_injection_shield.pyruns3,663 bytes
  • ../../skills/invest-a-stock/tests/test_insight_analysis_cli.pyruns12,534 bytes
  • ../../skills/invest-a-stock/tests/test_insight_discoveries_chains.pyruns33,106 bytes
  • ../../skills/invest-a-stock/tests/test_insight_report.pyruns22,033 bytes
  • ../../skills/invest-a-stock/tests/test_invest_cli_help.pyruns1,000 bytes
  • ../../skills/invest-a-stock/tests/test_lhb.pyruns17,731 bytes
  • ../../skills/invest-a-stock/tests/test_lint.pyruns43,670 bytes
  • ../../skills/invest-a-stock/tests/test_macro_extended.pyruns43,280 bytes
  • ../../skills/invest-a-stock/tests/test_manifest.pyruns4,000 bytes
  • ../../skills/invest-a-stock/tests/test_market_daily.pyruns2,288 bytes
  • ../../skills/invest-a-stock/tests/test_market_status_basis.pyruns5,014 bytes
  • ../../skills/invest-a-stock/tests/test_md_subset.pyruns2,962 bytes
  • ../../skills/invest-a-stock/tests/test_merge_collections.pyruns12,271 bytes
  • ../../skills/invest-a-stock/tests/test_news_scanner.pyruns5,463 bytes
  • ../../skills/invest-a-stock/tests/test_notice_body.pyruns9,215 bytes
  • ../../skills/invest-a-stock/tests/test_orchestrate_blocks.pyruns12,803 bytes
  • ../../skills/invest-a-stock/tests/test_parse_fetched_at_parity.pyruns1,517 bytes
  • ../../skills/invest-a-stock/tests/test_participant_scan.pyruns8,679 bytes
  • ../../skills/invest-a-stock/tests/test_pcr_freshness.pyruns31,015 bytes
  • ../../skills/invest-a-stock/tests/test_pe_loss_missing_consistency.pyruns9,784 bytes
  • ../../skills/invest-a-stock/tests/test_peer_cli.pyruns2,310 bytes
  • ../../skills/invest-a-stock/tests/test_peer_market_caps.pyruns4,147 bytes
  • ../../skills/invest-a-stock/tests/test_percentile_core_shared.pyruns2,475 bytes
  • ../../skills/invest-a-stock/tests/test_portfolio_review.pyruns13,147 bytes
  • ../../skills/invest-a-stock/tests/test_positions.pyruns13,105 bytes
  • ../../skills/invest-a-stock/tests/test_price_basis_label.pyruns6,234 bytes
  • ../../skills/invest-a-stock/tests/test_proxy.pyruns14,806 bytes
  • ../../skills/invest-a-stock/tests/test_qc_render_output_regression.pyruns17,464 bytes
  • ../../skills/invest-a-stock/tests/test_quality_check.pyruns7,094 bytes
  • ../../skills/invest-a-stock/tests/test_r12h.pyruns23,044 bytes
  • ../../skills/invest-a-stock/tests/test_redundancy_phase23.pyruns7,022 bytes
  • ../../skills/invest-a-stock/tests/test_render_code_review_fixes.pyruns31,079 bytes
  • ../../skills/invest-a-stock/tests/test_render_concise_fixes.pyruns4,173 bytes
  • ../../skills/invest-a-stock/tests/test_render_extras.pyruns11,666 bytes
  • ../../skills/invest-a-stock/tests/test_render_html.pyruns36,892 bytes
  • ../../skills/invest-a-stock/tests/test_render_v2.pyruns11,503 bytes
  • ../../skills/invest-a-stock/tests/test_report_audit.pyruns5,507 bytes
  • ../../skills/invest-a-stock/tests/test_report_diff_history.pyruns4,185 bytes
  • ../../skills/invest-a-stock/tests/test_report_filepath.pyruns2,831 bytes
  • ../../skills/invest-a-stock/tests/test_report_qc_gates.pyruns47,676 bytes
  • ../../skills/invest-a-stock/tests/test_report_snapshot.pyruns61,942 bytes
  • ../../skills/invest-a-stock/tests/test_rerank.pyruns7,694 bytes
  • ../../skills/invest-a-stock/tests/test_research.pyruns13,284 bytes
  • ../../skills/invest-a-stock/tests/test_research_profile.pyruns28,470 bytes
  • ../../skills/invest-a-stock/tests/test_risk_reward.pyruns3,443 bytes
  • ../../skills/invest-a-stock/tests/test_risk_scanner.pyruns11,694 bytes
  • ../../skills/invest-a-stock/tests/test_schema.pyruns7,075 bytes
  • ../../skills/invest-a-stock/tests/test_search_cache.pyruns2,136 bytes
  • ../../skills/invest-a-stock/tests/test_sector_sync_collector.pyruns17,596 bytes
  • ../../skills/invest-a-stock/tests/test_segments_collector.pyruns11,672 bytes
  • ../../skills/invest-a-stock/tests/test_store_diff.pyruns32,758 bytes
  • ../../skills/invest-a-stock/tests/test_store_pipeline.pyruns5,861 bytes
  • ../../skills/invest-a-stock/tests/test_store_public_connection.pyruns4,756 bytes
  • ../../skills/invest-a-stock/tests/test_style_match.pyruns10,638 bytes
  • ../../skills/invest-a-stock/tests/test_sw_member_all.pyruns24,804 bytes
  • ../../skills/invest-a-stock/tests/test_technical.pyruns20,584 bytes
  • ../../skills/invest-a-stock/tests/test_technical_v019.pyruns1,646 bytes
  • ../../skills/invest-a-stock/tests/test_test_hygiene.pyruns2,684 bytes
  • ../../skills/invest-a-stock/tests/test_thesis_dates.pyruns6,221 bytes
  • ../../skills/invest-a-stock/tests/test_tushare_client.pyruns20,131 bytes
  • ../../skills/invest-a-stock/tests/test_v013_phase1.pyruns26,824 bytes
  • ../../skills/invest-a-stock/tests/test_v013_phase2.pyruns24,220 bytes
  • ../../skills/invest-a-stock/tests/test_v013_phase3.pyruns12,480 bytes
  • ../../skills/invest-a-stock/tests/test_v013_phase4.pyruns8,685 bytes
  • ../../skills/invest-a-stock/tests/test_v014.pyruns10,329 bytes
  • ../../skills/invest-a-stock/tests/test_v015_fixes.pyruns32,327 bytes
  • ../../skills/invest-a-stock/tests/test_v017.pyruns24,980 bytes
  • ../../skills/invest-a-stock/tests/test_v017_e2e.pyruns2,872 bytes
  • ../../skills/invest-a-stock/tests/test_v018.pyruns79,171 bytes
  • ../../skills/invest-a-stock/tests/test_v026_p0_fixes.pyruns15,263 bytes
  • ../../skills/invest-a-stock/tests/test_v026_review_fixes.pyruns25,812 bytes
  • ../../skills/invest-a-stock/tests/test_v027_fixes.pyruns8,456 bytes
  • ../../skills/invest-a-stock/tests/test_v028_fixes.pyruns1,808 bytes
  • ../../skills/invest-a-stock/tests/test_v030_reading_layers.pyruns36,929 bytes
  • ../../skills/invest-a-stock/tests/test_v031_c1_fin_series.pyruns10,000 bytes
  • ../../skills/invest-a-stock/tests/test_v031_c2_rf.pyruns5,644 bytes
  • ../../skills/invest-a-stock/tests/test_v031_c3_bank_leverage.pyruns4,850 bytes
  • ../../skills/invest-a-stock/tests/test_v031_mainline_rev.pyruns23,046 bytes
  • ../../skills/invest-a-stock/tests/test_v031_priority_review.pyruns6,059 bytes
  • ../../skills/invest-a-stock/tests/test_v031_reading_surface.pyruns12,376 bytes
  • ../../skills/invest-a-stock/tests/test_valuation.pyruns53,480 bytes
  • ../../skills/invest-a-stock/tests/test_version.pyruns1,280 bytes
  • ../../skills/invest-a-stock/tests/test_version_sync.pyruns9,696 bytes
  • ../../skills/invest-hk-stock/SKILL.mddoc6,671 bytes
  • ../../skills/invest-hk-stock/references/hk-caliber.mddoc6,275 bytes
  • ../../skills/invest-hk-stock/scripts/hk.pyruns58,815 bytes
  • ../../skills/invest-hk-stock/scripts/lib/__init__.pyruns388 bytes
  • ../../skills/invest-hk-stock/scripts/lib/_invest_path.pyruns772 bytes
  • ../../skills/invest-hk-stock/scripts/lib/hk_ah.pyruns22,294 bytes
  • ../../skills/invest-hk-stock/scripts/lib/hk_calendar.pyruns4,987 bytes
  • ../../skills/invest-hk-stock/scripts/lib/hk_codes.pyruns2,135 bytes
  • ../../skills/invest-hk-stock/scripts/lib/hk_compare.pyruns7,174 bytes
  • ../../skills/invest-hk-stock/scripts/lib/hk_financials.pyruns3,841 bytes
  • ../../skills/invest-hk-stock/scripts/lib/hk_kline.pyruns2,459 bytes
  • ../../skills/invest-hk-stock/scripts/lib/hk_quote.pyruns3,100 bytes
  • ../../skills/invest-hk-stock/scripts/lib/hk_southbound.pyruns22,726 bytes
  • ../../skills/invest-hk-stock/scripts/lib/hk_tushare.pyruns2,939 bytes
  • ../../skills/invest-hk-stock/scripts/lib/hk_valuation.pyruns2,630 bytes
  • ../../skills/invest-hk-stock/scripts/lib/hk_yfinance.pyruns3,321 bytes
  • ../../skills/invest-hk-stock/tests/_hk_cli.pyruns1,231 bytes
  • ../../skills/invest-hk-stock/tests/conftest.pyruns674 bytes
  • ../../skills/invest-hk-stock/tests/test_hk_ah.pyruns18,104 bytes
  • ../../skills/invest-hk-stock/tests/test_hk_ah_align.pyruns16,315 bytes
  • ../../skills/invest-hk-stock/tests/test_hk_calendar.pyruns4,386 bytes
  • ../../skills/invest-hk-stock/tests/test_hk_codes.pyruns1,412 bytes
  • ../../skills/invest-hk-stock/tests/test_hk_compare.pyruns17,570 bytes
  • ../../skills/invest-hk-stock/tests/test_hk_data.pyruns3,945 bytes
  • ../../skills/invest-hk-stock/tests/test_hk_quote.pyruns2,546 bytes
  • ../../skills/invest-hk-stock/tests/test_hk_southbound.pyruns28,404 bytes
  • ../../skills/lib/__init__.pyruns318 bytes
  • ../../skills/lib/backtest.pyruns17,625 bytes
  • ../../skills/lib/cache.pyruns13,550 bytes
  • ../../skills/lib/codes.pyruns4,802 bytes
  • ../../skills/lib/config_backtest.pyruns6,562 bytes
  • ../../skills/lib/data_bridge.pyruns21,335 bytes
  • ../../skills/lib/data_util.pyruns3,646 bytes
  • ../../skills/lib/dates.pyruns11,556 bytes
  • ../../skills/lib/db_util.pyruns6,428 bytes
  • ../../skills/lib/decision_review.pyruns10,039 bytes
  • ../../skills/lib/decision_schema.pyruns7,484 bytes
  • ../../skills/lib/env.pyruns13,602 bytes
  • ../../skills/lib/evidence_tags.pyruns7,134 bytes
  • ../../skills/lib/freshness.pyruns4,300 bytes
  • ../../skills/lib/invest_path.pyruns10,864 bytes
  • ../../skills/lib/kline_cache.pyruns6,140 bytes
  • ../../skills/lib/lmw.pyruns12,340 bytes
  • ../../skills/lib/logutil.pyruns6,861 bytes
  • ../../skills/lib/market_microstructure.pyruns104,844 bytes
  • ../../skills/lib/market_pctile.pyruns4,447 bytes
  • ../../skills/lib/market_pulse.pyruns904 bytes
  • ../../skills/lib/multiple_testing.pyruns6,901 bytes
  • ../../skills/lib/nums.pyruns3,771 bytes
  • ../../skills/lib/proxy.pyruns20,060 bytes
  • ../../skills/lib/qfq.pyruns5,555 bytes
  • ../../skills/lib/quote_tencent.pyruns10,199 bytes
  • ../../skills/lib/references/backtest_prereg/C10_预注册.mddoc3,787 bytes
  • ../../skills/lib/references/backtest_prereg/C11_预注册.mddoc5,552 bytes
  • ../../skills/lib/references/backtest_prereg/C12_预注册.mddoc4,808 bytes
  • ../../skills/lib/references/backtest_prereg/C17_预注册.mddoc4,784 bytes
  • ../../skills/lib/references/backtest_prereg/C3_预注册.mddoc5,275 bytes
  • ../../skills/lib/references/backtest_prereg/C7_预注册.mddoc4,429 bytes
  • ../../skills/lib/references/backtest_prereg/C8_预注册.mddoc5,229 bytes
  • ../../skills/lib/references/backtest_prereg/F1_预注册.mddoc1,608 bytes
  • ../../skills/lib/references/backtest_prereg/F2_预注册.mddoc1,099 bytes
  • ../../skills/lib/references/backtest_prereg/F3_预注册.mddoc1,113 bytes
  • ../../skills/lib/references/backtest_prereg/H1_预注册.mddoc1,442 bytes
  • ../../skills/lib/references/backtest_prereg/H2_预注册.mddoc1,642 bytes
  • ../../skills/lib/references/backtest_prereg/H3_预注册.mddoc1,293 bytes
  • ../../skills/lib/references/backtest_prereg/H4_预注册.mddoc1,769 bytes
  • ../../skills/lib/references/backtest_prereg/H6_预注册.mddoc2,357 bytes
  • ../../skills/lib/references/capital-mechanisms.mddoc11,364 bytes
  • ../../skills/lib/references/chip-clearance.mddoc7,136 bytes
  • ../../skills/lib/references/data-interface-map.mddoc20,772 bytes
  • ../../skills/lib/references/delivery-qc.mddoc18,439 bytes
  • ../../skills/lib/references/development-rules.mddoc13,331 bytes
  • ../../skills/lib/references/financial-semantics.mddoc11,648 bytes
  • ../../skills/lib/references/hypothesis-registry.mddoc15,772 bytes
  • ../../skills/lib/references/market-service-owner.mddoc4,846 bytes
  • ../../skills/lib/references/report-conventions.mddoc61,501 bytes
  • ../../skills/lib/references/scenario-plans.mddoc9,168 bytes
  • ../../skills/lib/report_qc.pyruns217,913 bytes
  • ../../skills/lib/sector_sync.pyruns50,149 bytes
  • ../../skills/lib/skill_paths.pyruns2,870 bytes
  • ../../skills/lib/snapshot_core.pyruns6,950 bytes
  • ../../skills/lib/stats.pyruns6,411 bytes
  • ../../skills/lib/technical.pyruns44,551 bytes
  • ../../skills/lib/tests/test_b06_qc_record.pyruns96,795 bytes
  • ../../skills/lib/tests/test_backtest.pyruns10,048 bytes
  • ../../skills/lib/tests/test_backtest_futures_fixes.pyruns8,276 bytes
  • ../../skills/lib/tests/test_build_skillhub_packages.pyruns52,907 bytes
  • ../../skills/lib/tests/test_cache.pyruns5,155 bytes
  • ../../skills/lib/tests/test_codes.pyruns3,458 bytes
  • ../../skills/lib/tests/test_config_backtest.pyruns5,407 bytes
  • ../../skills/lib/tests/test_data_bridge.pyruns20,635 bytes
  • ../../skills/lib/tests/test_data_util.pyruns2,207 bytes
  • ../../skills/lib/tests/test_dates.pyruns6,599 bytes
  • ../../skills/lib/tests/test_db_util.pyruns6,648 bytes
  • ../../skills/lib/tests/test_decision_review.pyruns9,297 bytes
  • ../../skills/lib/tests/test_decision_schema.pyruns8,528 bytes
  • ../../skills/lib/tests/test_dev_log_wiring.pyruns6,740 bytes
  • ../../skills/lib/tests/test_dist_doc_refs.pyruns5,088 bytes
  • ../../skills/lib/tests/test_h6_events.pyruns6,067 bytes
  • ../../skills/lib/tests/test_hypothesis_registry.pyruns4,225 bytes
  • ../../skills/lib/tests/test_invest_path_shims.pyruns2,013 bytes
  • ../../skills/lib/tests/test_kline_cache.pyruns7,602 bytes
  • ../../skills/lib/tests/test_law_contract_v031.pyruns8,243 bytes
  • ../../skills/lib/tests/test_lib_version.pyruns2,478 bytes
  • ../../skills/lib/tests/test_lmw.pyruns10,048 bytes
  • ../../skills/lib/tests/test_logutil.pyruns12,175 bytes
  • ../../skills/lib/tests/test_market_pctile.pyruns3,874 bytes
  • ../../skills/lib/tests/test_market_pulse.pyruns3,104 bytes
  • ../../skills/lib/tests/test_market_service_owner.pyruns4,592 bytes
  • ../../skills/lib/tests/test_multiple_testing.pyruns4,671 bytes
  • ../../skills/lib/tests/test_qfq.pyruns6,219 bytes
  • ../../skills/lib/tests/test_qfq_contract.pyruns4,384 bytes
  • ../../skills/lib/tests/test_quote_tencent.pyruns9,007 bytes
  • ../../skills/lib/tests/test_r1_sourcing_layer.pyruns8,018 bytes
  • ../../skills/lib/tests/test_r2_module_identity.pyruns6,711 bytes
  • ../../skills/lib/tests/test_report_qc.pyruns62,205 bytes
  • ../../skills/lib/tests/test_scenario_triggers.pyruns4,565 bytes
  • ../../skills/lib/tests/test_sector_sync.pyruns50,975 bytes
  • ../../skills/lib/tests/test_shared_owner_migration.pyruns10,525 bytes
  • ../../skills/lib/tests/test_skill_paths.pyruns2,887 bytes
  • ../../skills/lib/tests/test_snapshot_core.pyruns3,530 bytes
  • ../../skills/lib/tests/test_stats.pyruns3,670 bytes
  • ../../skills/lib/tests/test_technical_adx.pyruns6,856 bytes
  • ../../skills/lib/tests/test_trade_cal.pyruns7,216 bytes
  • ../../skills/lib/tests/test_unlock_source.pyruns3,944 bytes
  • ../../skills/lib/tests/test_v025_doc_checks.pyruns12,377 bytes
  • ../../skills/lib/tests/test_v026_doc_checks.pyruns23,969 bytes
  • ../../skills/lib/tests/test_v030_doc_checks.pyruns17,718 bytes
  • ../../skills/lib/tests/test_v031_evidence_tags.pyruns5,604 bytes
  • ../../skills/lib/tests/test_volume_price.pyruns18,708 bytes
  • ../../skills/lib/tests/test_zt_rotation_bundle.pyruns8,813 bytes
  • ../../skills/lib/trade_cal.pyruns10,132 bytes
  • ../../skills/lib/tushare_client.pyruns26,979 bytes
  • ../../skills/lib/unlock_source.pyruns5,381 bytes
  • ../../skills/lib/version.pyruns1,520 bytes
  • ../../skills/lib/volume_price.pyruns22,888 bytes
Read SKILL.md

# invest-skills(A股投研技能集入口)

本包是 8 个投研技能的 bundle:**共用一个 Python 数据引擎**,子技能是流程指令 + 引擎命令。

## 子技能路由表

| 用户意图(触发词) | 先 Read 的文件 | 说明 |
|---|---|---|
| 个股投研 / 估值 / 财报 | `skills/invest-a-stock/SKILL.md` | 九模块研究备忘录 |
| ETF / 指数基金 | `skills/invest-a-etf/SKILL.md` | 指数估值/折溢价/跟踪质量 |
| 交易日志 / 买入评估 / 卖出评估 | `skills/invest-a-journal/SKILL.md` | 四维评估 + 落库 |
| 市场情绪 / 大盘 / 市场脉搏 | `skills/invest-a-pulse/SKILL.md` | 五维情绪 + 环境标签 |
| 缺口扫描 / 跳空扫描 | `skills/invest-a-gap-scan/SKILL.md` | 成分股池缺口扫描 |
| 双底 / 形态扫描 / 三角形底 / 底部形态 | `skills/invest-a-pattern-scan/SKILL.md` | LMW 双底/三角形底 |
View the complete source on GitHub

Skills included

  • invest-skills
  • invest-a-discover-scan
  • invest-a-etf
  • invest-a-gap-scan
  • invest-a-journal
  • invest-a-pattern-scan
  • invest-a-pulse
  • invest-a-stock
  • invest-hk-stock

Repository facts

License
MIT
Created
Jun 9, 2026
Last pushed
Oct 15, 2026
Forks
3
Open issues
2
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 4, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 59 notes
  • hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/wb_bundle/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/wb_bundle/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/invest-a-etf/scripts/lib/assets/chart.umd.min.js:13 Analysis incomplete: physical or joined line exceeds character limit
  • skills/invest-a-etf/scripts/lib/assets/chart.umd.min.js:11 Analysis incomplete: physical or joined line exceeds character limit
  • skills/invest-a-etf/scripts/lib/assets/chart.umd.min.js:12 Analysis incomplete: physical or joined line exceeds character limit
  • skills/invest-a-etf/scripts/lib/assets/chart.umd.min.js:19 Analysis incomplete: physical or joined line exceeds character limit
  • skills/invest-a-etf/scripts/lib/assets/chart.umd.min.js:17 Analysis incomplete: physical or joined line exceeds character limit
  • skills/invest-a-stock/scripts/lib/assets/echarts.umd.min.js:1 Analysis incomplete: file exceeds text byte budget
  • skills/invest-a-stock/scripts/lib/assets/echarts.umd.min.js:35 Analysis incomplete: physical or joined line exceeds character limit
  • skills/invest-a-stock/scripts/lib/assets/echarts.umd.min.js:33 Analysis incomplete: physical or joined line exceeds character limit
  • skills/invest-a-stock/scripts/lib/assets/echarts.umd.min.js:34 Analysis incomplete: physical or joined line exceeds character limit
  • skills/invest-a-stock/scripts/lib/assets/echarts.umd.min.js:45 Analysis incomplete: physical or joined line exceeds character limit
  • skills/invest-a-stock/scripts/lib/assets/echarts.umd.min.js:43 Analysis incomplete: physical or joined line exceeds character limit
  • skills/invest-a-stock/scripts/references/compliance_rules.yaml:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/invest-a-stock/scripts/references/compliance_rules.yaml:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/invest-a-stock/scripts/references/compliance_rules.yaml:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/invest-a-discover-scan/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/invest-a-etf/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/invest-a-etf/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 2,094 signals by file

.claude-plugin/marketplace.json

  • Network accessline 3
    "owner": {     "name": "invest:a-stock",     "url": "https://github.com/Veblin/invest-skills"
  • Network accessline 4
    "name": "invest:a-stock",     "url": "https://github.com/Veblin/invest-skills"   },
  • Network accessline 5
    "url": "https://github.com/Veblin/invest-skills"
  • Network accessline 15
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 16
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 17
    "url": "https://github.com/Veblin"
  • Network accessline 19
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 20
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "stock-analysis", "china-stock", "equity-research", "financial-analysis", "a-share", "claude-code", "learning"]
  • Network accessline 21
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 28
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 29
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 30
    "url": "https://github.com/Veblin"
  • Network accessline 32
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 33
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "stock-analysis", "china-stock", "gap-scan", "a-share", "claude-code", "learning"]
  • Network accessline 34
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 41
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 42
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 43
    "url": "https://github.com/Veblin"
  • Network accessline 45
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 46
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "trading-journal", "china-stock", "a-share", "claude-code", "learning"]
  • Network accessline 47
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 54
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 55
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 56
    "url": "https://github.com/Veblin"
  • Network accessline 58
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 59
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "etf", "china-stock", "a-share", "claude-code", "learning"]
  • Network accessline 60
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 67
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 68
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 69
    "url": "https://github.com/Veblin"
  • Network accessline 71
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 72
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "stock-analysis", "china-stock", "pattern-scan", "a-share", "claude-code", "learning"]
  • Network accessline 73
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 80
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 81
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 82
    "url": "https://github.com/Veblin"
  • Network accessline 84
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 85
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "market-sentiment", "china-stock", "a-share", "claude-code", "learning"]
  • Network accessline 86
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 93
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 94
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 95
    "url": "https://github.com/Veblin"
  • Network accessline 97
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 98
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "hong-kong-stock", "hk-stock", "claude-code", "learning"]
  • Network accessline 99
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 106
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 107
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 108
    "url": "https://github.com/Veblin"
  • Network accessline 110
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 111
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "stock-screener", "valuation", "discovery", "china-stock", "a-share", "claude-code", "learning"]
  • Network accessline 112
    "homepage": "https://github.com/Veblin/invest-skills",

.claude-plugin/marketplace.json.in

  • Network accessline 3
    "owner": {     "name": "invest:a-stock",     "url": "https://github.com/Veblin/invest-skills"
  • Network accessline 4
    "name": "invest:a-stock",     "url": "https://github.com/Veblin/invest-skills"   },
  • Network accessline 5
    "url": "https://github.com/Veblin/invest-skills"
  • Network accessline 15
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 16
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 17
    "url": "https://github.com/Veblin"
  • Network accessline 19
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 20
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "stock-analysis", "china-stock", "equity-research", "financial-analysis", "a-share", "claude-code", "learning"]
  • Network accessline 21
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 28
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 29
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 30
    "url": "https://github.com/Veblin"
  • Network accessline 32
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 33
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "stock-analysis", "china-stock", "gap-scan", "a-share", "claude-code", "learning"]
  • Network accessline 34
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 41
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 42
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 43
    "url": "https://github.com/Veblin"
  • Network accessline 45
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 46
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "trading-journal", "china-stock", "a-share", "claude-code", "learning"]
  • Network accessline 47
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 54
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 55
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 56
    "url": "https://github.com/Veblin"
  • Network accessline 58
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 59
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "etf", "china-stock", "a-share", "claude-code", "learning"]
  • Network accessline 60
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 67
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 68
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 69
    "url": "https://github.com/Veblin"
  • Network accessline 71
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 72
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "stock-analysis", "china-stock", "pattern-scan", "a-share", "claude-code", "learning"]
  • Network accessline 73
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 80
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 81
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 82
    "url": "https://github.com/Veblin"
  • Network accessline 84
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 85
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "market-sentiment", "china-stock", "a-share", "claude-code", "learning"]
  • Network accessline 86
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 93
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 94
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 95
    "url": "https://github.com/Veblin"
  • Network accessline 97
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 98
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "hong-kong-stock", "hk-stock", "claude-code", "learning"]
  • Network accessline 99
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 106
    "author": {         "name": "Veblin",         "url": "https://github.com/Veblin"
  • Network accessline 107
    "name": "Veblin",         "url": "https://github.com/Veblin"       },
  • Network accessline 108
    "url": "https://github.com/Veblin"
  • Network accessline 110
    "source": "./",       "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 111
    "category": "finance",       "homepage": "https://github.com/Veblin/invest-skills",       "tags": ["investment", "stock-screener", "valuation", "discovery", "china-stock", "a-share", "claude-code", "learning"]
  • Network accessline 112
    "homepage": "https://github.com/Veblin/invest-skills",

.claude-plugin/plugin.json

  • Network accessline 5
    "author": {     "name": "Veblin",     "url": "https://github.com/Veblin"
  • Network accessline 6
    "name": "Veblin",     "url": "https://github.com/Veblin"   },
  • Network accessline 7
    "url": "https://github.com/Veblin"
  • Network accessline 8
    },   "homepage": "https://github.com/Veblin/invest-skills",   "repository": "https://github.com/Veblin/invest-skills",
  • Network accessline 9
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 10
    "repository": "https://github.com/Veblin/invest-skills",

.claude-plugin/plugin.json.in

  • Network accessline 5
    "author": {     "name": "Veblin",     "url": "https://github.com/Veblin"
  • Network accessline 6
    "name": "Veblin",     "url": "https://github.com/Veblin"   },
  • Network accessline 7
    "url": "https://github.com/Veblin"
  • Network accessline 8
    },   "homepage": "https://github.com/Veblin/invest-skills",   "repository": "https://github.com/Veblin/invest-skills",
  • Network accessline 9
    "homepage": "https://github.com/Veblin/invest-skills",
  • Network accessline 10
    "repository": "https://github.com/Veblin/invest-skills",

scripts/archive/backtest_calendar.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable

scripts/wb_bundle/README-安装.md

  • Access to secretsline 57
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]

scripts/wb_bundle/bootstrap.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Network accessline 26
    echo ""   echo "macOS / Linux —— 终端执行:"   echo "  curl -LsSf https://astral.sh/uv/install.sh | sh"
  • Network accessline 27
    echo "macOS / Linux —— 终端执行:"   echo "  curl -LsSf https://astral.sh/uv/install.sh | sh"   echo "  # 装完后新开终端,或执行: source ~/.local/bin/env"
  • Dangerous shell operationline 28
    echo "  curl -LsSf https://astral.sh/uv/install.sh | sh"
  • Network accessline 28
    echo "  curl -LsSf https://astral.sh/uv/install.sh | sh"
  • Network accessline 33
    echo ""     echo ">> 检测到 --install,正在自动安装 uv ..."     curl -LsSf https://astral.sh/uv/install.sh | sh
  • Network accessline 34
    echo ">> 检测到 --install,正在自动安装 uv ..."     curl -LsSf https://astral.sh/uv/install.sh | sh     UV="$(find_uv)"
  • Dangerous shell operationline 35
    curl -LsSf https://astral.sh/uv/install.sh | sh
  • Network accessline 35
    curl -LsSf https://astral.sh/uv/install.sh | sh
  • Access to secretsline 78
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Access to secretsline 82
    [Credential-related source omitted]

skills/invest-a-discover-scan/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write
  • Broad permissionsline 1
    Bash, Read, Write

skills/invest-a-discover-scan/scripts/discover_fillback.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3

skills/invest-a-discover-scan/scripts/discover_scan.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3

skills/invest-a-discover-scan/scripts/lib/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/scripts/lib/_invest_path.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/scripts/lib/lenses.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/scripts/lib/pool.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/scripts/lib/quality.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/scripts/lib/snapshot.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 32
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]

skills/invest-a-discover-scan/scripts/lib/sources.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 57
    [Credential-related source omitted]
  • Access to secretsline 57
    [Credential-related source omitted]
  • Access to secretsline 298
    [Credential-related source omitted]
  • Access to secretsline 298
    [Credential-related source omitted]
  • Access to secretsline 306
    [Credential-related source omitted]
  • Access to secretsline 306
    [Credential-related source omitted]
  • Network accessline 307
    if not key:             raise RuntimeError("无 FRED_API_KEY")         url = (f"https://api.stlouisfed.org/fred/series/observations?series_id=DGS10"
  • Network accessline 307
    if not key:             raise RuntimeError("无 FRED_API_KEY")         url = (f"https://api.stlouisfed.org/fred/series/observations?series_id=DGS10"
  • Network accessline 308
    [Credential-related source omitted]
  • Network accessline 308
    [Credential-related source omitted]
  • Access to secretsline 308
    [Credential-related source omitted]
  • Access to secretsline 308
    [Credential-related source omitted]
  • Network accessline 309
    [Credential-related source omitted]
  • Network accessline 309
    [Credential-related source omitted]
  • Network accessline 310
    [Credential-related source omitted]
  • Network accessline 310
    [Credential-related source omitted]
  • Access to secretsline 310
    [Credential-related source omitted]
  • Access to secretsline 310
    [Credential-related source omitted]
  • Network accessline 311
    with urllib.request.urlopen(url, timeout=20) as resp:  # noqa: S310 固定官方主机
  • Network accessline 311
    with urllib.request.urlopen(url, timeout=20) as resp:  # noqa: S310 固定官方主机

skills/invest-a-discover-scan/scripts/lib/sources_hk.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 173
    chunk = symbols[i: i + BATCH_SIZE]         CALL_COUNT["r_hk"] += 1         url = "https://qt.gtimg.cn/q=" + ",".join(f"r_hk{s}" for s in chunk)
  • Network accessline 173
    chunk = symbols[i: i + BATCH_SIZE]         CALL_COUNT["r_hk"] += 1         url = "https://qt.gtimg.cn/q=" + ",".join(f"r_hk{s}" for s in chunk)
  • Network accessline 174
    CALL_COUNT["r_hk"] += 1         url = "https://qt.gtimg.cn/q=" + ",".join(f"r_hk{s}" for s in chunk)         try:
  • Network accessline 174
    CALL_COUNT["r_hk"] += 1         url = "https://qt.gtimg.cn/q=" + ",".join(f"r_hk{s}" for s in chunk)         try:
  • Network accessline 175
    url = "https://qt.gtimg.cn/q=" + ",".join(f"r_hk{s}" for s in chunk)         try:             req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
  • Network accessline 175
    url = "https://qt.gtimg.cn/q=" + ",".join(f"r_hk{s}" for s in chunk)         try:             req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
  • Network accessline 176
    try:             req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})             raw = urllib.request.urlopen(req, timeout=20).read().decode("gbk", errors="replace")
  • Network accessline 176
    try:             req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})             raw = urllib.request.urlopen(req, timeout=20).read().decode("gbk", errors="replace")
  • Network accessline 177
    req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
  • Network accessline 177
    req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
  • Network accessline 178
    raw = urllib.request.urlopen(req, timeout=20).read().decode("gbk", errors="replace")
  • Network accessline 178
    raw = urllib.request.urlopen(req, timeout=20).read().decode("gbk", errors="replace")

skills/invest-a-discover-scan/tests/_scan_cli.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/tests/conftest.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/tests/test_cli.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/tests/test_discover_pool.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/tests/test_lenses.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/tests/test_quality.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/tests/test_snapshot.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/tests/test_sources.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-discover-scan/tests/test_sources_hk.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write, WebSearch
  • Broad permissionsline 1
    Bash, Read, Write, WebSearch

skills/invest-a-etf/events/512660.json

  • Network accessline 1
    {"date": "2026-01-07", "event": "特朗普提出 2027 财年美国军费从 1 万亿美元大幅提升至 1.5 万亿美元(较原计划 +66%),全球军费进入上升通道预期升温", "source_url": "http://www.nbd.com.cn/articles/2026-01-08/4211999.html", "published_date": "2026-01-08", "confidence": "二手"}
  • Network accessline 1
    {"date": "2026-01-07", "event": "特朗普提出 2027 财年美国军费从 1 万亿美元大幅提升至 1.5 万亿美元(较原计划 +66%),全球军费进入上升通道预期升温", "source_url": "http://www.nbd.com.cn/articles/2026-01-08/4211999.html", "published_date": "2026-01-08", "confidence": "二手"}
  • Network accessline 2
    {"date": "2026-01-12", "event": "军工开年暴涨:军工ETF华宝(512810)单周狂飙 13.57% 刷新历史纪录,华力创通 20CM 涨停,航天电子/中国卫通 7 天 5 板,商业航天成分股批量新高", "source_url": "https://www.sohu.com/a/975157794_122014422", "published_date": "2026-01-12", "confidence": "二手"}
  • Network accessline 2
    {"date": "2026-01-12", "event": "军工开年暴涨:军工ETF华宝(512810)单周狂飙 13.57% 刷新历史纪录,华力创通 20CM 涨停,航天电子/中国卫通 7 天 5 板,商业航天成分股批量新高", "source_url": "https://www.sohu.com/a/975157794_122014422", "published_date": "2026-01-12", "confidence": "二手"}
  • Network accessline 3
    {"date": "2026-01-13", "event": "长征八号甲运载火箭在海南商业航天发射场成功发射卫星互联网低轨 18 组卫星", "source_url": "https://www.sohu.com/a/975884496_122014422", "published_date": "2026-01-14", "confidence": "二手"}
  • Network accessline 3
    {"date": "2026-01-13", "event": "长征八号甲运载火箭在海南商业航天发射场成功发射卫星互联网低轨 18 组卫星", "source_url": "https://www.sohu.com/a/975884496_122014422", "published_date": "2026-01-14", "confidence": "二手"}
  • Network accessline 4
    {"date": "2026-04-08", "event": "地缘冲突显著缓和、油价从高位回落,A 股高风偏板块超跌反弹", "source_url": "https://finance.eastmoney.com/a/202604083697641478.html", "published_date": "2026-04-08", "confidence": "二手"}
  • Network accessline 4
    {"date": "2026-04-08", "event": "地缘冲突显著缓和、油价从高位回落,A 股高风偏板块超跌反弹", "source_url": "https://finance.eastmoney.com/a/202604083697641478.html", "published_date": "2026-04-08", "confidence": "二手"}
  • Network accessline 5
    {"date": "2026-07-13", "event": "军工领跌全市场(卫星相关指数跌超 8%):长征十号乙火箭海上回收成功后的「利好出尽」卖出 + 大盘系统性调整 + 前期获利盘集中兑现", "source_url": "https://fund.eastmoney.com/a/202607133804260125.html", "published_date": "2026-07-13", "confidence": "二手"}
  • Network accessline 5
    {"date": "2026-07-13", "event": "军工领跌全市场(卫星相关指数跌超 8%):长征十号乙火箭海上回收成功后的「利好出尽」卖出 + 大盘系统性调整 + 前期获利盘集中兑现", "source_url": "https://fund.eastmoney.com/a/202607133804260125.html", "published_date": "2026-07-13", "confidence": "二手"}
  • Network accessline 6
    {"date": "2026-07-14", "event": "板块继续回调(-2.85%),但 512660 单日获约 2.28 亿元资金净流入(逆市布局),机构认为调整主要为情绪与交易层面波动", "source_url": "https://www.163.com/dy/article/L1QS4PGM0512B07B.html", "published_date": "2026-07-14", "confidence": "二手"}
  • Network accessline 6
    {"date": "2026-07-14", "event": "板块继续回调(-2.85%),但 512660 单日获约 2.28 亿元资金净流入(逆市布局),机构认为调整主要为情绪与交易层面波动", "source_url": "https://www.163.com/dy/article/L1QS4PGM0512B07B.html", "published_date": "2026-07-14", "confidence": "二手"}

skills/invest-a-etf/events/562590.json

  • Network accessline 1
    {"date": "2025-08-22", "event": "AI 算力产业高景气 + 国产替代驱动 2025 年 8 月科技牛,云计算/算力主题指数单月大涨(光模块/CPO/AI 服务器全线爆发)", "source_url": "https://stock.jrj.com.cn/2025/08/25080952657259.shtml", "published_date": "2025-08-25", "confidence": "二手"}
  • Network accessline 1
    {"date": "2025-08-22", "event": "AI 算力产业高景气 + 国产替代驱动 2025 年 8 月科技牛,云计算/算力主题指数单月大涨(光模块/CPO/AI 服务器全线爆发)", "source_url": "https://stock.jrj.com.cn/2025/08/25080952657259.shtml", "published_date": "2025-08-25", "confidence": "二手"}
  • Network accessline 2
    {"date": "2025-08-28", "event": "寒武纪(算力权重股)股价超越贵州茅台登顶 A 股「股王」,半导体龙头带动指数当日大涨", "source_url": "https://www.21jingji.com/article/20250828/herald/d188455eee7415b05031ad8e820d7f8a.html", "published_date": "2025-08-28", "confidence": "二手"}
  • Network accessline 2
    {"date": "2025-08-28", "event": "寒武纪(算力权重股)股价超越贵州茅台登顶 A 股「股王」,半导体龙头带动指数当日大涨", "source_url": "https://www.21jingji.com/article/20250828/herald/d188455eee7415b05031ad8e820d7f8a.html", "published_date": "2025-08-28", "confidence": "二手"}
  • Network accessline 3
    {"date": "2025-09-24", "event": "阿里云栖大会开幕(吴泳铭:在 3800 亿 CAPEX 基础上继续加码 AI 投入)+ 美光财报超预期 + 存储涨价潮 + 国产光刻机突破,芯片/算力板块爆发", "source_url": "https://finance.eastmoney.com/a/202509243522457848.html", "published_date": "2025-09-24", "confidence": "二手"}
  • Network accessline 3
    {"date": "2025-09-24", "event": "阿里云栖大会开幕(吴泳铭:在 3800 亿 CAPEX 基础上继续加码 AI 投入)+ 美光财报超预期 + 存储涨价潮 + 国产光刻机突破,芯片/算力板块爆发", "source_url": "https://finance.eastmoney.com/a/202509243522457848.html", "published_date": "2025-09-24", "confidence": "二手"}
  • Network accessline 4
    {"date": "2026-03-03", "event": "中东局势恶化、国际油价突破每桶 100 美元,科技/算力板块 3 月调整在主流宽基中跌幅最深(科创50 月度 -15.57%)", "source_url": "https://finance.sina.com.cn/money/fund/jjgsgd/2026-04-30/doc-inhwhraa6184231.shtml", "published_date": "2026-04-30", "confiden
  • Network accessline 4
    {"date": "2026-03-03", "event": "中东局势恶化、国际油价突破每桶 100 美元,科技/算力板块 3 月调整在主流宽基中跌幅最深(科创50 月度 -15.57%)", "source_url": "https://finance.sina.com.cn/money/fund/jjgsgd/2026-04-30/doc-inhwhraa6184231.shtml", "published_date": "2026-04-30", "confiden
  • Network accessline 5
    {"date": "2026-04-08", "event": "地缘冲突显著缓和、油价从高位回落,科技板块超跌反弹(半导体权重约 70% 高弹性)", "source_url": "https://finance.eastmoney.com/a/202604083697641478.html", "published_date": "2026-04-08", "confidence": "二手"}
  • Network accessline 5
    {"date": "2026-04-08", "event": "地缘冲突显著缓和、油价从高位回落,科技板块超跌反弹(半导体权重约 70% 高弹性)", "source_url": "https://finance.eastmoney.com/a/202604083697641478.html", "published_date": "2026-04-08", "confidence": "二手"}
  • Network accessline 6
    {"date": "2026-06-29", "event": "国务院常务会议专题研究人工智能产业发展(加快关键技术攻关、推进超大规模智算集群建设),云计算/算力板块大涨", "source_url": "https://www.nbd.com.cn/articles/2026-06-30/4442323.html", "published_date": "2026-06-30", "confidence": "二手"}
  • Network accessline 6
    {"date": "2026-06-29", "event": "国务院常务会议专题研究人工智能产业发展(加快关键技术攻关、推进超大规模智算集群建设),云计算/算力板块大涨", "source_url": "https://www.nbd.com.cn/articles/2026-06-30/4442323.html", "published_date": "2026-06-30", "confidence": "二手"}
  • Network accessline 7
    {"date": "2026-07-02", "event": "海外 AI 叙事动摇(Meta 进军云基建被解读为算力过剩、黑石 QTS 终止超千亿美元数据中心项目,费城半导体指数大跌 6%+),云计算 ETF 单日 -9.32%", "source_url": "https://finance.eastmoney.com/a/202607233818874394.html", "published_date": "2026-07-23", "confidence": "二
  • Network accessline 7
    {"date": "2026-07-02", "event": "海外 AI 叙事动摇(Meta 进军云基建被解读为算力过剩、黑石 QTS 终止超千亿美元数据中心项目,费城半导体指数大跌 6%+),云计算 ETF 单日 -9.32%", "source_url": "https://finance.eastmoney.com/a/202607233818874394.html", "published_date": "2026-07-23", "confidence": "二
  • Network accessline 8
    {"date": "2026-07-16", "event": "长鑫科技启动科创板申购(发行价 8.66 元,募资约 579 亿元,科创板史上第二大 IPO),超级 IPO 流动性虹吸担忧压制算力/半导体板块", "source_url": "https://finance.eastmoney.com/a/202607233818874394.html", "published_date": "2026-07-23", "confidence": "二手"}
  • Network accessline 8
    {"date": "2026-07-16", "event": "长鑫科技启动科创板申购(发行价 8.66 元,募资约 579 亿元,科创板史上第二大 IPO),超级 IPO 流动性虹吸担忧压制算力/半导体板块", "source_url": "https://finance.eastmoney.com/a/202607233818874394.html", "published_date": "2026-07-23", "confidence": "二手"}
  • Network accessline 9
    {"date": "2026-07-21", "event": "A 股 V 型绝地反击:国新/诚通等国家队资金累计入市超 500 亿元、证监会召开投资者座谈会,云计算 ETF 单日 +15.49%", "source_url": "https://stcn.com/article/detail/4033252.html", "published_date": "2026-07-22", "confidence": "二手"}
  • Network accessline 9
    {"date": "2026-07-21", "event": "A 股 V 型绝地反击:国新/诚通等国家队资金累计入市超 500 亿元、证监会召开投资者座谈会,云计算 ETF 单日 +15.49%", "source_url": "https://stcn.com/article/detail/4033252.html", "published_date": "2026-07-22", "confidence": "二手"}
  • Network accessline 10
    {"date": "2026-07-28", "event": "英伟达推进总规模超 7500 亿美元 AI 基础设施交易,市场担忧「循环融资」人为抬高海外 AI 需求与估值", "source_url": "https://finance.eastmoney.com/a/202607283823348178.html", "published_date": "2026-07-28", "confidence": "二手"}
  • Network accessline 10
    {"date": "2026-07-28", "event": "英伟达推进总规模超 7500 亿美元 AI 基础设施交易,市场担忧「循环融资」人为抬高海外 AI 需求与估值", "source_url": "https://finance.eastmoney.com/a/202607283823348178.html", "published_date": "2026-07-28", "confidence": "二手"}
  • Network accessline 11
    {"date": "2026-07-30", "event": "国家发改委形势通报会:深入实施「东数西算」工程、统筹布局有序建设算力设施、加快人工智能法立法进程", "source_url": "https://www.cnfin.com/hg-lb/detail/20260731/4448865_1.html", "published_date": "2026-07-31", "confidence": "二手"}
  • Network accessline 11
    {"date": "2026-07-30", "event": "国家发改委形势通报会:深入实施「东数西算」工程、统筹布局有序建设算力设施、加快人工智能法立法进程", "source_url": "https://www.cnfin.com/hg-lb/detail/20260731/4448865_1.html", "published_date": "2026-07-31", "confidence": "二手"}
  • Network accessline 12
    {"date": "2026-07-30", "event": "科创50 单日急挫逾 6% 跌至 4 月底以来最低,7 月累计跌近 29%;分析认为芯片股疲弱更像结构性轮动与全球 AI 交易去杠杆", "source_url": "https://www.aastocks.com/tc/stocks/news/aafn-con/NOW.1535723/recommend-news/AAFN", "published_date": "2026-07-30", "confide
  • Network accessline 12
    {"date": "2026-07-30", "event": "科创50 单日急挫逾 6% 跌至 4 月底以来最低,7 月累计跌近 29%;分析认为芯片股疲弱更像结构性轮动与全球 AI 交易去杠杆", "source_url": "https://www.aastocks.com/tc/stocks/news/aafn-con/NOW.1535723/recommend-news/AAFN", "published_date": "2026-07-30", "confide
  • Network accessline 13
    {"date": "2026-08-05", "event": "北美「四朵云」Q2 财报超预期(AWS/微软 Azure/谷歌云高增)+ 海外云厂商 CAPEX 提速(上半年四家合计 2927 亿美元 +83.64%),云计算板块强势反弹", "source_url": "https://www.jiemian.com/article/14870693.html", "published_date": "2026-08-04", "confidence": "二手"}
  • Network accessline 13
    {"date": "2026-08-05", "event": "北美「四朵云」Q2 财报超预期(AWS/微软 Azure/谷歌云高增)+ 海外云厂商 CAPEX 提速(上半年四家合计 2927 亿美元 +83.64%),云计算板块强势反弹", "source_url": "https://www.jiemian.com/article/14870693.html", "published_date": "2026-08-04", "confidence": "二手"}

skills/invest-a-etf/events/588000.json

  • Network accessline 1
    {"date": "2025-08-22", "event": "AI 算力产业高景气 + 国产替代驱动科创50 8 月单月大涨约 28% 创历史最大月涨幅(光模块/CPO/AI 服务器全线爆发)", "source_url": "https://stock.jrj.com.cn/2025/08/25080952657259.shtml", "published_date": "2025-08-25", "confidence": "二手"}
  • Network accessline 1
    {"date": "2025-08-22", "event": "AI 算力产业高景气 + 国产替代驱动科创50 8 月单月大涨约 28% 创历史最大月涨幅(光模块/CPO/AI 服务器全线爆发)", "source_url": "https://stock.jrj.com.cn/2025/08/25080952657259.shtml", "published_date": "2025-08-25", "confidence": "二手"}
  • Network accessline 2
    {"date": "2025-08-28", "event": "寒武纪(科创50 权重股)股价超越贵州茅台登顶 A 股「股王」,半导体龙头带动指数当日大涨创新高", "source_url": "https://www.21jingji.com/article/20250828/herald/d188455eee7415b05031ad8e820d7f8a.html", "published_date": "2025-08-28", "confidence": "二手"}
  • Network accessline 2
    {"date": "2025-08-28", "event": "寒武纪(科创50 权重股)股价超越贵州茅台登顶 A 股「股王」,半导体龙头带动指数当日大涨创新高", "source_url": "https://www.21jingji.com/article/20250828/herald/d188455eee7415b05031ad8e820d7f8a.html", "published_date": "2025-08-28", "confidence": "二手"}
  • Network accessline 3
    {"date": "2026-03-03", "event": "中东局势恶化、国际油价突破每桶 100 美元,科创50 3 月调整在主流宽基中跌幅最深(月度 -15.57%,2 月以来最大回撤 20.72%)", "source_url": "https://finance.sina.com.cn/money/fund/jjgsgd/2026-04-30/doc-inhwhraa6184231.shtml", "published_date": "2026-04-30", 
  • Network accessline 3
    {"date": "2026-03-03", "event": "中东局势恶化、国际油价突破每桶 100 美元,科创50 3 月调整在主流宽基中跌幅最深(月度 -15.57%,2 月以来最大回撤 20.72%)", "source_url": "https://finance.sina.com.cn/money/fund/jjgsgd/2026-04-30/doc-inhwhraa6184231.shtml", "published_date": "2026-04-30", 
  • Network accessline 4
    {"date": "2026-04-08", "event": "地缘冲突显著缓和、油价从高位回落,科创50 单日大涨超 3% 开启 4 月超跌反弹(半导体权重约 70% 高弹性)", "source_url": "https://finance.eastmoney.com/a/202604083697641478.html", "published_date": "2026-04-08", "confidence": "二手"}
  • Network accessline 4
    {"date": "2026-04-08", "event": "地缘冲突显著缓和、油价从高位回落,科创50 单日大涨超 3% 开启 4 月超跌反弹(半导体权重约 70% 高弹性)", "source_url": "https://finance.eastmoney.com/a/202604083697641478.html", "published_date": "2026-04-08", "confidence": "二手"}
  • Network accessline 5
    {"date": "2026-06-15", "event": "科创50 指数 2026 上半年定期调整生效:华虹公司/源杰科技/摩尔线程/沐曦股份调入,华大智造/天岳先进/特宝生物/三一重能调出(6/12 收市后生效)", "source_url": "https://www.cnfin.com/announ/detail/index.html?id=833408363293&code=000016&dannoun=indexdetail&announ=index", "
  • Network accessline 5
    {"date": "2026-06-15", "event": "科创50 指数 2026 上半年定期调整生效:华虹公司/源杰科技/摩尔线程/沐曦股份调入,华大智造/天岳先进/特宝生物/三一重能调出(6/12 收市后生效)", "source_url": "https://www.cnfin.com/announ/detail/index.html?id=833408363293&code=000016&dannoun=indexdetail&announ=index", "
  • Network accessline 6
    {"date": "2026-06-29", "event": "国务院常务会议专题研究人工智能产业发展(加快关键技术攻关、推进超大规模智算集群建设),科创50 大涨创历史新高,上半年累计涨幅 64.25%", "source_url": "https://www.nbd.com.cn/articles/2026-06-30/4442323.html", "published_date": "2026-06-30", "confidence": "二手"}
  • Network accessline 6
    {"date": "2026-06-29", "event": "国务院常务会议专题研究人工智能产业发展(加快关键技术攻关、推进超大规模智算集群建设),科创50 大涨创历史新高,上半年累计涨幅 64.25%", "source_url": "https://www.nbd.com.cn/articles/2026-06-30/4442323.html", "published_date": "2026-06-30", "confidence": "二手"}
  • Network accessline 7
    {"date": "2026-07-02", "event": "海外 AI 叙事动摇(Meta 进军云基建被解读为算力过剩、黑石 QTS 终止超千亿美元数据中心项目,费城半导体指数大跌 6%+),科创50 单日 -7.70% 创年内最大单日跌幅", "source_url": "https://finance.eastmoney.com/a/202607233818874394.html", "published_date": "2026-07-23", "confiden
  • Network accessline 7
    {"date": "2026-07-02", "event": "海外 AI 叙事动摇(Meta 进军云基建被解读为算力过剩、黑石 QTS 终止超千亿美元数据中心项目,费城半导体指数大跌 6%+),科创50 单日 -7.70% 创年内最大单日跌幅", "source_url": "https://finance.eastmoney.com/a/202607233818874394.html", "published_date": "2026-07-23", "confiden
  • Network accessline 8
    {"date": "2026-07-16", "event": "长鑫科技启动科创板申购(发行价 8.66 元,募资约 579 亿元,科创板史上第二大 IPO),超级 IPO 流动性虹吸担忧压制半导体板块", "source_url": "https://finance.eastmoney.com/a/202607233818874394.html", "published_date": "2026-07-23", "confidence": "二手"}
  • Network accessline 8
    {"date": "2026-07-16", "event": "长鑫科技启动科创板申购(发行价 8.66 元,募资约 579 亿元,科创板史上第二大 IPO),超级 IPO 流动性虹吸担忧压制半导体板块", "source_url": "https://finance.eastmoney.com/a/202607233818874394.html", "published_date": "2026-07-23", "confidence": "二手"}
  • Network accessline 9
    {"date": "2026-07-21", "event": "A 股 V 型绝地反击:国新/诚通等国家队资金累计入市超 500 亿元、证监会召开投资者座谈会,科创50 大涨 10.73% 创年内最大单日涨幅", "source_url": "https://stcn.com/article/detail/4033252.html", "published_date": "2026-07-22", "confidence": "二手"}
  • Network accessline 9
    {"date": "2026-07-21", "event": "A 股 V 型绝地反击:国新/诚通等国家队资金累计入市超 500 亿元、证监会召开投资者座谈会,科创50 大涨 10.73% 创年内最大单日涨幅", "source_url": "https://stcn.com/article/detail/4033252.html", "published_date": "2026-07-22", "confidence": "二手"}
  • Network accessline 10
    {"date": "2026-07-28", "event": "英伟达推进总规模超 7500 亿美元 AI 基础设施交易,市场担忧「循环融资」人为抬高海外 AI 需求与估值,科创50 再跌 6.32%", "source_url": "https://finance.eastmoney.com/a/202607283823348178.html", "published_date": "2026-07-28", "confidence": "二手"}
  • Network accessline 10
    {"date": "2026-07-28", "event": "英伟达推进总规模超 7500 亿美元 AI 基础设施交易,市场担忧「循环融资」人为抬高海外 AI 需求与估值,科创50 再跌 6.32%", "source_url": "https://finance.eastmoney.com/a/202607283823348178.html", "published_date": "2026-07-28", "confidence": "二手"}
  • Network accessline 11
    {"date": "2026-07-30", "event": "科创50 单日急挫逾 6% 跌至 4 月底以来最低,7 月累计跌近 29%(此前三个月曾飙升约 75%);分析认为芯片股疲弱更像结构性轮动与全球 AI 交易去杠杆", "source_url": "https://www.aastocks.com/tc/stocks/news/aafn-con/NOW.1535723/recommend-news/AAFN", "published_date": "2026-0
  • Network accessline 11
    {"date": "2026-07-30", "event": "科创50 单日急挫逾 6% 跌至 4 月底以来最低,7 月累计跌近 29%(此前三个月曾飙升约 75%);分析认为芯片股疲弱更像结构性轮动与全球 AI 交易去杠杆", "source_url": "https://www.aastocks.com/tc/stocks/news/aafn-con/NOW.1535723/recommend-news/AAFN", "published_date": "2026-0

skills/invest-a-etf/events/README.md

  • Network accessline 6
    {"date": "2026-05-11", "event": "科创50 指数创历史新高", "source_url": "https://example.com/x", "published_date": "2026-05-11", "confidence": "一手"}
  • Network accessline 6
    {"date": "2026-05-11", "event": "科创50 指数创历史新高", "source_url": "https://example.com/x", "published_date": "2026-05-11", "confidence": "一手"}

skills/invest-a-etf/scripts/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/etf.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3

skills/invest-a-etf/scripts/lib/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/lib/_invest_path.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/lib/assets/chart.umd.min.js

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 3
    * Original file: /npm/chart.js@4.4.0/dist/chart.umd.js  *  * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
  • Network accessline 3
    * Original file: /npm/chart.js@4.4.0/dist/chart.umd.js  *  * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
  • Network accessline 4
    *  * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files  */
  • Network accessline 4
    *  * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files  */
  • Network accessline 5
    * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
  • Network accessline 5
    * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
  • Network accessline 7
    /*!  * Chart.js v4.4.0  * https://www.chartjs.org
  • Network accessline 7
    /*!  * Chart.js v4.4.0  * https://www.chartjs.org
  • Network accessline 8
    * Chart.js v4.4.0  * https://www.chartjs.org  * (c) 2023 Chart.js Contributors
  • Network accessline 8
    * Chart.js v4.4.0  * https://www.chartjs.org  * (c) 2023 Chart.js Contributors
  • Network accessline 9
    * https://www.chartjs.org
  • Network accessline 9
    * https://www.chartjs.org
  • Possible obfuscationline 13
    !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Obje
  • Possible obfuscationline 13
    !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Obje
  • Network accessline 14
    /*!  * @kurkle/color v0.3.2  * https://github.com/kurkle/color#readme
  • Network accessline 14
    /*!  * @kurkle/color v0.3.2  * https://github.com/kurkle/color#readme
  • Network accessline 15
    * @kurkle/color v0.3.2  * https://github.com/kurkle/color#readme  * (c) 2023 Jukka Kurkela
  • Network accessline 15
    * @kurkle/color v0.3.2  * https://github.com/kurkle/color#readme  * (c) 2023 Jukka Kurkela
  • Network accessline 16
    * https://github.com/kurkle/color#readme
  • Network accessline 16
    * https://github.com/kurkle/color#readme
  • Possible obfuscationline 19
    */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),
  • Possible obfuscationline 19
    */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),

skills/invest-a-etf/scripts/lib/etf_data.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 236
    {"claim": "基金名称/代码/上市地",              "source_type": "上交所基金公告(做市服务,2026-06-11)",              "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260611_10821513.shtml",
  • Network accessline 236
    {"claim": "基金名称/代码/上市地",              "source_type": "上交所基金公告(做市服务,2026-06-11)",              "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260611_10821513.shtml",
  • Network accessline 237
    "source_type": "上交所基金公告(做市服务,2026-06-11)",              "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260611_10821513.shtml",              "as_of": "2026-06-11",
  • Network accessline 237
    "source_type": "上交所基金公告(做市服务,2026-06-11)",              "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260611_10821513.shtml",              "as_of": "2026-06-11",
  • Network accessline 238
    "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260611_10821513.shtml",
  • Network accessline 238
    "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260611_10821513.shtml",
  • Network accessline 244
    {"claim": "资产类型/复制方式/基准",              "source_type": "基金产品资料概要更新(管理人,编制 2024-06-20)",              "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",
  • Network accessline 244
    {"claim": "资产类型/复制方式/基准",              "source_type": "基金产品资料概要更新(管理人,编制 2024-06-20)",              "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",
  • Network accessline 245
    "source_type": "基金产品资料概要更新(管理人,编制 2024-06-20)",              "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",              "as_of": "2024-06-20",
  • Network accessline 245
    "source_type": "基金产品资料概要更新(管理人,编制 2024-06-20)",              "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",              "as_of": "2024-06-20",
  • Network accessline 246
    "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",
  • Network accessline 246
    "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",
  • Network accessline 263
    {"claim": "基金名称/主代码/上市地/生效日",              "source_type": "基金 2025 年年度报告(管理人华夏基金,披露 2026-03-31)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",
  • Network accessline 263
    {"claim": "基金名称/主代码/上市地/生效日",              "source_type": "基金 2025 年年度报告(管理人华夏基金,披露 2026-03-31)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",
  • Network accessline 264
    "source_type": "基金 2025 年年度报告(管理人华夏基金,披露 2026-03-31)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",              "as_of": "2025-12-31(报告期)", "quote": "基金名称 华夏中证 5G 通信主
  • Network accessline 264
    "source_type": "基金 2025 年年度报告(管理人华夏基金,披露 2026-03-31)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",              "as_of": "2025-12-31(报告期)", "quote": "基金名称 华夏中证 5G 通信主
  • Network accessline 265
    "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",
  • Network accessline 265
    "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",
  • Network accessline 286
    {"claim": "基金名称/代码/上市地",              "source_type": "上交所基金公告(做市服务,2026-05-28)",              "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260528_10820053.shtml",
  • Network accessline 286
    {"claim": "基金名称/代码/上市地",              "source_type": "上交所基金公告(做市服务,2026-05-28)",              "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260528_10820053.shtml",
  • Network accessline 287
    "source_type": "上交所基金公告(做市服务,2026-05-28)",              "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260528_10820053.shtml",              "as_of": "2026-05-28", "quote": "上证红利交易型开放式指数证券投资基金(基金代码:510880)提供主做市服
  • Network accessline 287
    "source_type": "上交所基金公告(做市服务,2026-05-28)",              "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260528_10820053.shtml",              "as_of": "2026-05-28", "quote": "上证红利交易型开放式指数证券投资基金(基金代码:510880)提供主做市服
  • Network accessline 288
    "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260528_10820053.shtml",
  • Network accessline 288
    "url": "https://www.sse.com.cn/disclosure/announcement/general/jjzssgg/c/c_20260528_10820053.shtml",
  • Network accessline 293
    {"claim": "资产类型/策略(因子)/标的指数",              "source_type": "更新招募说明书(管理人华泰柏瑞,2026 年第 1 号,2026-06-13)",              "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",
  • Network accessline 293
    {"claim": "资产类型/策略(因子)/标的指数",              "source_type": "更新招募说明书(管理人华泰柏瑞,2026 年第 1 号,2026-06-13)",              "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",
  • Network accessline 294
    "source_type": "更新招募说明书(管理人华泰柏瑞,2026 年第 1 号,2026-06-13)",              "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",              "as_of": "2026-06-13",
  • Network accessline 294
    "source_type": "更新招募说明书(管理人华泰柏瑞,2026 年第 1 号,2026-06-13)",              "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",              "as_of": "2026-06-13",
  • Network accessline 295
    "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",
  • Network accessline 295
    "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",
  • Network accessline 332
    {"claim": "基金名称/主代码/管理人/托管人/生效日/上市地/运作方式",              "source_type": "基金 2026 年中期报告(管理人华夏基金;报告期末 2026-06-30)",              "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 332
    {"claim": "基金名称/主代码/管理人/托管人/生效日/上市地/运作方式",              "source_type": "基金 2026 年中期报告(管理人华夏基金;报告期末 2026-06-30)",              "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 333
    "source_type": "基金 2026 年中期报告(管理人华夏基金;报告期末 2026-06-30)",              "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",              "as_of": "2026-06-30(报告期末;渠道披露 2026-08-31)",
  • Network accessline 333
    "source_type": "基金 2026 年中期报告(管理人华夏基金;报告期末 2026-06-30)",              "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",              "as_of": "2026-06-30(报告期末;渠道披露 2026-08-31)",
  • Network accessline 334
    "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 334
    "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 342
    {"claim": "资产类型/复制方式/业绩比较基准(含汇率调整)",              "source_type": "同上(§2.2 基金产品说明 / §4.4.1 投资策略和运作分析)",              "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 342
    {"claim": "资产类型/复制方式/业绩比较基准(含汇率调整)",              "source_type": "同上(§2.2 基金产品说明 / §4.4.1 投资策略和运作分析)",              "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 343
    "source_type": "同上(§2.2 基金产品说明 / §4.4.1 投资策略和运作分析)",              "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",              "as_of": "2026-06-30(报告期末)",
  • Network accessline 343
    "source_type": "同上(§2.2 基金产品说明 / §4.4.1 投资策略和运作分析)",              "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",              "as_of": "2026-06-30(报告期末)",
  • Network accessline 344
    "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 344
    "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 352
    {"claim": "业绩比较基准细化公式 + 估值/开放日/汇率规则(跨境时点条款)",              "source_type": "招募说明书(更新)2026-07-20(管理人华夏基金)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"
  • Network accessline 352
    {"claim": "业绩比较基准细化公式 + 估值/开放日/汇率规则(跨境时点条款)",              "source_type": "招募说明书(更新)2026-07-20(管理人华夏基金)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"
  • Network accessline 353
    "source_type": "招募说明书(更新)2026-07-20(管理人华夏基金)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"                     "794ad3cf4e4941b0a65e89ecddbbf5b8.pdf",
  • Network accessline 353
    "source_type": "招募说明书(更新)2026-07-20(管理人华夏基金)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"                     "794ad3cf4e4941b0a65e89ecddbbf5b8.pdf",
  • Network accessline 354
    "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"
  • Network accessline 354
    "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"
  • Network accessline 368
    {"claim": "官网产品页身份字段(基金全称/代码/币种)",              "source_type": "管理人官网产品页(华夏基金;页面无版本号,读取日 2026-10-10)",              "url": "https://www.chinaamc.com/fund/159920/index.shtml",
  • Network accessline 368
    {"claim": "官网产品页身份字段(基金全称/代码/币种)",              "source_type": "管理人官网产品页(华夏基金;页面无版本号,读取日 2026-10-10)",              "url": "https://www.chinaamc.com/fund/159920/index.shtml",
  • Network accessline 369
    "source_type": "管理人官网产品页(华夏基金;页面无版本号,读取日 2026-10-10)",              "url": "https://www.chinaamc.com/fund/159920/index.shtml",              "as_of": "2026-10-10(读取日)",
  • Network accessline 369
    "source_type": "管理人官网产品页(华夏基金;页面无版本号,读取日 2026-10-10)",              "url": "https://www.chinaamc.com/fund/159920/index.shtml",              "as_of": "2026-10-10(读取日)",
  • Network accessline 370
    "url": "https://www.chinaamc.com/fund/159920/index.shtml",
  • Network accessline 370
    "url": "https://www.chinaamc.com/fund/159920/index.shtml",
  • Network accessline 392
    {"claim": "基金全称/简称/代码/基金类型/交易币种",              "source_type": "基金产品资料概要更新(管理人华夏基金,编制 2026-05-28)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",
  • Network accessline 392
    {"claim": "基金全称/简称/代码/基金类型/交易币种",              "source_type": "基金产品资料概要更新(管理人华夏基金,编制 2026-05-28)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",
  • Network accessline 393
    "source_type": "基金产品资料概要更新(管理人华夏基金,编制 2026-05-28)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",              "as_of": "2026-05-29",
  • Network accessline 393
    "source_type": "基金产品资料概要更新(管理人华夏基金,编制 2026-05-28)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",              "as_of": "2026-05-29",
  • Network accessline 394
    "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",
  • Network accessline 394
    "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",
  • Network accessline 400
    {"claim": "标的指数/业绩比较基准/被动复制",              "source_type": "同上(§二(一) 投资目标与投资策略)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",
  • Network accessline 400
    {"claim": "标的指数/业绩比较基准/被动复制",              "source_type": "同上(§二(一) 投资目标与投资策略)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",
  • Network accessline 401
    "source_type": "同上(§二(一) 投资目标与投资策略)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",              "as_of": "2026-05-29",
  • Network accessline 401
    "source_type": "同上(§二(一) 投资目标与投资策略)",              "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",              "as_of": "2026-05-29",
  • Network accessline 402
    "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",
  • Network accessline 402
    "url": "https://www.chinaamc.com/upload/resources/file/2026/05/29/9ffa5179b7af4248a2c92b949f2cf617.pdf",
  • Network accessline 432
    "source_type": "基金产品资料概要更新(管理人,编制 2024-06-20)",             "version": "产品资料概要更新(2024-06-20 编制)",             "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",
  • Network accessline 432
    "source_type": "基金产品资料概要更新(管理人,编制 2024-06-20)",             "version": "产品资料概要更新(2024-06-20 编制)",             "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",
  • Network accessline 433
    "version": "产品资料概要更新(2024-06-20 编制)",             "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",             "as_of": "2024-06-20",
  • Network accessline 433
    "version": "产品资料概要更新(2024-06-20 编制)",             "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",             "as_of": "2024-06-20",
  • Network accessline 434
    "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",
  • Network accessline 434
    "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/510300_20240620_7SNV.pdf",
  • Network accessline 453
    "source_type": "基金 2025 年年度报告(报表附注 7.4.10.2)",             "version": "2025 年年度报告(披露日 2026-03-31)",             "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",
  • Network accessline 453
    "source_type": "基金 2025 年年度报告(报表附注 7.4.10.2)",             "version": "2025 年年度报告(披露日 2026-03-31)",             "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",
  • Network accessline 454
    "version": "2025 年年度报告(披露日 2026-03-31)",             "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",             "as_of": "2025-12-31(报告期)",
  • Network accessline 454
    "version": "2025 年年度报告(披露日 2026-03-31)",             "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",             "as_of": "2025-12-31(报告期)",
  • Network accessline 455
    "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",
  • Network accessline 455
    "url": "https://www.chinaamc.com/upload/resources/file/2026/03/31/cc00948747a74f66984d8ecff8214cac.pdf",
  • Network accessline 480
    "source_type": "更新招募说明书 2026 年第 1 号(管理人,合同文件版本)",             "version": "更新招募说明书 2026 年第 1 号(2026-06-13)",             "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",
  • Network accessline 480
    "source_type": "更新招募说明书 2026 年第 1 号(管理人,合同文件版本)",             "version": "更新招募说明书 2026 年第 1 号(2026-06-13)",             "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",
  • Network accessline 481
    "version": "更新招募说明书 2026 年第 1 号(2026-06-13)",             "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",             "as_of": "2026-06-13",
  • Network accessline 481
    "version": "更新招募说明书 2026 年第 1 号(2026-06-13)",             "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",             "as_of": "2026-06-13",
  • Network accessline 482
    "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",
  • Network accessline 482
    "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2026-06-13/510880_20260613_RW6R.pdf",
  • Network accessline 513
    "version": "招募说明书(更新)2026-07-20;产品资料概要 2026-05-29;"                        "官网费率页(无版本号,读取日 2026-10-10);中期报告 2026-06-30",             "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"
  • Network accessline 513
    "version": "招募说明书(更新)2026-07-20;产品资料概要 2026-05-29;"                        "官网费率页(无版本号,读取日 2026-10-10);中期报告 2026-06-30",             "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"
  • Network accessline 514
    "官网费率页(无版本号,读取日 2026-10-10);中期报告 2026-06-30",             "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"                    "794ad3cf4e4941b0a65e89ecddbbf5b8.pdf",
  • Network accessline 514
    "官网费率页(无版本号,读取日 2026-10-10);中期报告 2026-06-30",             "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"                    "794ad3cf4e4941b0a65e89ecddbbf5b8.pdf",
  • Network accessline 515
    "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"
  • Network accessline 515
    "url": "https://www.chinaamc.com/upload/resources/file/2026/07/20/"
  • Network accessline 568
    "source": {             "source_type": "基金 2026 年中期报告(§3.2.1 / §4.4.2)",             "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 568
    "source": {             "source_type": "基金 2026 年中期报告(§3.2.1 / §4.4.2)",             "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 569
    "source_type": "基金 2026 年中期报告(§3.2.1 / §4.4.2)",             "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",             "as_of": "2026-06-30(报告期末)",
  • Network accessline 569
    "source_type": "基金 2026 年中期报告(§3.2.1 / §4.4.2)",             "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",             "as_of": "2026-06-30(报告期末)",
  • Network accessline 570
    "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 570
    "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 671
    "source": {             "source_type": "基金 2026 年中期报告(§6/§7)",             "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 671
    "source": {             "source_type": "基金 2026 年中期报告(§6/§7)",             "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 672
    "source_type": "基金 2026 年中期报告(§6/§7)",             "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",             "as_of": "2026-06-30(报告期末)", "read_at": "2026-10-10",
  • Network accessline 672
    "source_type": "基金 2026 年中期报告(§6/§7)",             "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",             "as_of": "2026-06-30(报告期末)", "read_at": "2026-10-10",
  • Network accessline 673
    "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 673
    "url": "https://static.howbuy.com/gkxx/ggfile//2026/2026-8/2026-08-31/5514889.pdf",
  • Network accessline 709
    "source": {             "source_type": "基金份额拆分公告(管理人华夏基金,2026-04-15)",             "url": "https://www.chinaamc.com/upload/resources/file/2026/04/15/"
  • Network accessline 709
    "source": {             "source_type": "基金份额拆分公告(管理人华夏基金,2026-04-15)",             "url": "https://www.chinaamc.com/upload/resources/file/2026/04/15/"
  • Network accessline 710
    "source_type": "基金份额拆分公告(管理人华夏基金,2026-04-15)",             "url": "https://www.chinaamc.com/upload/resources/file/2026/04/15/"                    "9c8e5a50d59348229bfa529be6bdadc4.pdf",
  • Network accessline 710
    "source_type": "基金份额拆分公告(管理人华夏基金,2026-04-15)",             "url": "https://www.chinaamc.com/upload/resources/file/2026/04/15/"                    "9c8e5a50d59348229bfa529be6bdadc4.pdf",
  • Network accessline 711
    "url": "https://www.chinaamc.com/upload/resources/file/2026/04/15/"
  • Network accessline 711
    "url": "https://www.chinaamc.com/upload/resources/file/2026/04/15/"
  • Network accessline 809
    "as_of": "文件日期列",         "original_disclosure": True,         "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/cons/{code}cons.xls",
  • Network accessline 809
    "as_of": "文件日期列",         "original_disclosure": True,         "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/cons/{code}cons.xls",
  • Network accessline 810
    "original_disclosure": True,         "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/cons/{code}cons.xls",     },
  • Network accessline 810
    "original_disclosure": True,         "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/cons/{code}cons.xls",     },
  • Network accessline 811
    "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/cons/{code}cons.xls",
  • Network accessline 811
    "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/cons/{code}cons.xls",
  • Network accessline 816
    "as_of": "文件日期列(权重文件通常为上月月末)",         "original_disclosure": True,         "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/closeweight/{code}closeweight.xls",
  • Network accessline 816
    "as_of": "文件日期列(权重文件通常为上月月末)",         "original_disclosure": True,         "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/closeweight/{code}closeweight.xls",
  • Network accessline 817
    "original_disclosure": True,         "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/closeweight/{code}closeweight.xls",     },
  • Network accessline 817
    "original_disclosure": True,         "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/closeweight/{code}closeweight.xls",     },
  • Network accessline 818
    "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/closeweight/{code}closeweight.xls",
  • Network accessline 818
    "url_template": "https://oss-ch.csindex.com.cn/static/html/csindex/public/uploads/file/autofile/closeweight/{code}closeweight.xls",
  • Network accessline 2022
    _EM_F10_URL = "https://fundf10.eastmoney.com/FundArchivesDatas.aspx"
  • Network accessline 2022
    _EM_F10_URL = "https://fundf10.eastmoney.com/FundArchivesDatas.aspx"
  • Network accessline 2026
    "(KHTML, like Gecko) Chrome/120.0 Safari/537.36"     ),     "Referer": "https://fundf10.eastmoney.com/ccmx_{symbol}.html",
  • Network accessline 2026
    "(KHTML, like Gecko) Chrome/120.0 Safari/537.36"     ),     "Referer": "https://fundf10.eastmoney.com/ccmx_{symbol}.html",
  • Network accessline 2027
    ),     "Referer": "https://fundf10.eastmoney.com/ccmx_{symbol}.html", }
  • Network accessline 2027
    ),     "Referer": "https://fundf10.eastmoney.com/ccmx_{symbol}.html", }
  • Network accessline 2028
    "Referer": "https://fundf10.eastmoney.com/ccmx_{symbol}.html",
  • Network accessline 2028
    "Referer": "https://fundf10.eastmoney.com/ccmx_{symbol}.html",

skills/invest-a-etf/scripts/lib/etf_generation.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/lib/etf_html.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/lib/etf_md.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/lib/etf_peers.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/lib/etf_playbook.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/lib/etf_research.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/lib/etf_timeline.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 5
    {"date": "2026-05-11", "event": "…", "source_url": "https://…",
  • Network accessline 5
    {"date": "2026-05-11", "event": "…", "source_url": "https://…",

skills/invest-a-etf/scripts/lib/futures_basis.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/lib/index_pe_snapshot.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/lib/industry_snapshot.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/scripts/lib/sector_flow.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/conftest.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_159920_disclosure.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_boll_bandwidth.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_cache_fixes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_cli.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_data_status.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_decision.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_exposure.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 260
    h = self._holdings([10.0, 10.0])         ev = {"600001": {"业务证据": "x", "期间": "Q2", "事件": "e", "关联命题": "p",                          "来源": {"url": "https://x", "sha256": "ab", "locator": "§1"}}}
  • Network accessline 260
    h = self._holdings([10.0, 10.0])         ev = {"600001": {"业务证据": "x", "期间": "Q2", "事件": "e", "关联命题": "p",                          "来源": {"url": "https://x", "sha256": "ab", "locator": "§1"}}}
  • Network accessline 261
    ev = {"600001": {"业务证据": "x", "期间": "Q2", "事件": "e", "关联命题": "p",                          "来源": {"url": "https://x", "sha256": "ab", "locator": "§1"}}}         out = build_evidence_budget("515050", target_cov_pct=15.0, max_names=10,
  • Network accessline 261
    ev = {"600001": {"业务证据": "x", "期间": "Q2", "事件": "e", "关联命题": "p",                          "来源": {"url": "https://x", "sha256": "ab", "locator": "§1"}}}         out = build_evidence_budget("515050", target_cov_pct=15.0, max_names=10,
  • Network accessline 262
    "来源": {"url": "https://x", "sha256": "ab", "locator": "§1"}}}
  • Network accessline 262
    "来源": {"url": "https://x", "sha256": "ab", "locator": "§1"}}}
  • Network accessline 270
    def test_invalid_evidence_source_marks_row_and_excludes_weight(self):         h = self._holdings([10.0, 10.0])         ev = {"600001": {"业务证据": "x", "来源": {"url": "https://x"}}}
  • Network accessline 270
    def test_invalid_evidence_source_marks_row_and_excludes_weight(self):         h = self._holdings([10.0, 10.0])         ev = {"600001": {"业务证据": "x", "来源": {"url": "https://x"}}}
  • Network accessline 271
    h = self._holdings([10.0, 10.0])         ev = {"600001": {"业务证据": "x", "来源": {"url": "https://x"}}}         out = build_evidence_budget("515050", target_cov_pct=15.0, max_names=10,
  • Network accessline 271
    h = self._holdings([10.0, 10.0])         ev = {"600001": {"业务证据": "x", "来源": {"url": "https://x"}}}         out = build_evidence_budget("515050", target_cov_pct=15.0, max_names=10,
  • Network accessline 272
    ev = {"600001": {"业务证据": "x", "来源": {"url": "https://x"}}}
  • Network accessline 272
    ev = {"600001": {"业务证据": "x", "来源": {"url": "https://x"}}}

skills/invest-a-etf/tests/test_etf_flags.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_generation.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_holdings.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 88
    return (         "<h4 class='t'><label class='left'><a title='卫星ETF永赢' "         "href='http://fund.eastmoney.com/159206.html'>卫星ETF永赢</a>"
  • Network accessline 88
    return (         "<h4 class='t'><label class='left'><a title='卫星ETF永赢' "         "href='http://fund.eastmoney.com/159206.html'>卫星ETF永赢</a>"
  • Network accessline 89
    "<h4 class='t'><label class='left'><a title='卫星ETF永赢' "         "href='http://fund.eastmoney.com/159206.html'>卫星ETF永赢</a>"         "&nbsp;&nbsp;2026年2季度股票投资明细</label>"
  • Network accessline 89
    "<h4 class='t'><label class='left'><a title='卫星ETF永赢' "         "href='http://fund.eastmoney.com/159206.html'>卫星ETF永赢</a>"         "&nbsp;&nbsp;2026年2季度股票投资明细</label>"
  • Network accessline 90
    "href='http://fund.eastmoney.com/159206.html'>卫星ETF永赢</a>"
  • Network accessline 90
    "href='http://fund.eastmoney.com/159206.html'>卫星ETF永赢</a>"

skills/invest-a-etf/tests/test_etf_html.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 867
    payload["quote"]["source"] = "fund_etf_spot_em"     payload["kline"]["source"] = "fund_open_fund_info_em"     payload["profile"]["fees"] = {"status": "ok", "source": "https://example.com/fee.pdf"}
  • Network accessline 867
    payload["quote"]["source"] = "fund_etf_spot_em"     payload["kline"]["source"] = "fund_open_fund_info_em"     payload["profile"]["fees"] = {"status": "ok", "source": "https://example.com/fee.pdf"}
  • Network accessline 868
    payload["kline"]["source"] = "fund_open_fund_info_em"     payload["profile"]["fees"] = {"status": "ok", "source": "https://example.com/fee.pdf"}     payload["research"] = {"sources": [
  • Network accessline 868
    payload["kline"]["source"] = "fund_open_fund_info_em"     payload["profile"]["fees"] = {"status": "ok", "source": "https://example.com/fee.pdf"}     payload["research"] = {"sources": [
  • Network accessline 869
    payload["profile"]["fees"] = {"status": "ok", "source": "https://example.com/fee.pdf"}
  • Network accessline 869
    payload["profile"]["fees"] = {"status": "ok", "source": "https://example.com/fee.pdf"}
  • Network accessline 870
    payload["research"] = {"sources": [         {"id": "S1", "title": "某公司2026年半年度报告",          "url": "https://example.com/a.pdf"}]}
  • Network accessline 870
    payload["research"] = {"sources": [         {"id": "S1", "title": "某公司2026年半年度报告",          "url": "https://example.com/a.pdf"}]}
  • Network accessline 871
    {"id": "S1", "title": "某公司2026年半年度报告",          "url": "https://example.com/a.pdf"}]}     html = render_etf_html(payload, md_text=MD_TEXT)
  • Network accessline 871
    {"id": "S1", "title": "某公司2026年半年度报告",          "url": "https://example.com/a.pdf"}]}     html = render_etf_html(payload, md_text=MD_TEXT)
  • Network accessline 872
    "url": "https://example.com/a.pdf"}]}
  • Network accessline 872
    "url": "https://example.com/a.pdf"}]}
  • Network accessline 877
    assert "某公司2026年半年度报告" in refs        # 实际披露来源     assert "天天基金" in refs                       # 采集渠道如实标注     assert "https://example.com/fee.pdf" in refs    # 费率材料来源
  • Network accessline 877
    assert "某公司2026年半年度报告" in refs        # 实际披露来源     assert "天天基金" in refs                       # 采集渠道如实标注     assert "https://example.com/fee.pdf" in refs    # 费率材料来源
  • Network accessline 879
    assert "https://example.com/fee.pdf" in refs    # 费率材料来源
  • Network accessline 879
    assert "https://example.com/fee.pdf" in refs    # 费率材料来源
  • Network accessline 936
    "source_type": "基金 2025 年年度报告(报表附注 7.4.10.2)",         "version": "2025 年年度报告(披露日 2026-03-31)",         "url": "https://example.com/fee.pdf",
  • Network accessline 936
    "source_type": "基金 2025 年年度报告(报表附注 7.4.10.2)",         "version": "2025 年年度报告(披露日 2026-03-31)",         "url": "https://example.com/fee.pdf",
  • Network accessline 937
    "version": "2025 年年度报告(披露日 2026-03-31)",         "url": "https://example.com/fee.pdf",         "locator": "报表附注 7.4.10.2.1 管理费"}}
  • Network accessline 937
    "version": "2025 年年度报告(披露日 2026-03-31)",         "url": "https://example.com/fee.pdf",         "locator": "报表附注 7.4.10.2.1 管理费"}}
  • Network accessline 938
    "url": "https://example.com/fee.pdf",
  • Network accessline 938
    "url": "https://example.com/fee.pdf",
  • Network accessline 939
    "locator": "报表附注 7.4.10.2.1 管理费"}}     refs = _slice(render_etf_html(payload, md_text=MD_TEXT), "refs")     assert "https://example.com/fee.pdf" in refs
  • Network accessline 939
    "locator": "报表附注 7.4.10.2.1 管理费"}}     refs = _slice(render_etf_html(payload, md_text=MD_TEXT), "refs")     assert "https://example.com/fee.pdf" in refs
  • Network accessline 940
    refs = _slice(render_etf_html(payload, md_text=MD_TEXT), "refs")     assert "https://example.com/fee.pdf" in refs     assert "基金 2025 年年度报告" in refs
  • Network accessline 940
    refs = _slice(render_etf_html(payload, md_text=MD_TEXT), "refs")     assert "https://example.com/fee.pdf" in refs     assert "基金 2025 年年度报告" in refs
  • Network accessline 941
    assert "https://example.com/fee.pdf" in refs
  • Network accessline 941
    assert "https://example.com/fee.pdf" in refs
  • Network accessline 1007
    "evidence": [             {"claim": "全称/代码", "locator": "§一 产品概况",              "url": "https://example.com/pds.pdf", "verified_at": "2026-10-13"},
  • Network accessline 1007
    "evidence": [             {"claim": "全称/代码", "locator": "§一 产品概况",              "url": "https://example.com/pds.pdf", "verified_at": "2026-10-13"},
  • Network accessline 1008
    {"claim": "全称/代码", "locator": "§一 产品概况",              "url": "https://example.com/pds.pdf", "verified_at": "2026-10-13"},             {"claim": "标的指数", "locator": "§二(一) 投资目标",
  • Network accessline 1008
    {"claim": "全称/代码", "locator": "§一 产品概况",              "url": "https://example.com/pds.pdf", "verified_at": "2026-10-13"},             {"claim": "标的指数", "locator": "§二(一) 投资目标",
  • Network accessline 1009
    "url": "https://example.com/pds.pdf", "verified_at": "2026-10-13"},
  • Network accessline 1009
    "url": "https://example.com/pds.pdf", "verified_at": "2026-10-13"},
  • Network accessline 1028
    payload = _real_identity_payload()     refs = _slice(render_etf_html(payload, md_text=MD_TEXT), "refs")     assert "https://example.com/pds.pdf" in refs
  • Network accessline 1028
    payload = _real_identity_payload()     refs = _slice(render_etf_html(payload, md_text=MD_TEXT), "refs")     assert "https://example.com/pds.pdf" in refs
  • Network accessline 1029
    refs = _slice(render_etf_html(payload, md_text=MD_TEXT), "refs")     assert "https://example.com/pds.pdf" in refs     assert "§一 产品概况" in refs and "§二(一) 投资目标" in refs
  • Network accessline 1029
    refs = _slice(render_etf_html(payload, md_text=MD_TEXT), "refs")     assert "https://example.com/pds.pdf" in refs     assert "§一 产品概况" in refs and "§二(一) 投资目标" in refs
  • Network accessline 1030
    assert "https://example.com/pds.pdf" in refs
  • Network accessline 1030
    assert "https://example.com/pds.pdf" in refs
  • Network accessline 1043
    payload["profile"]["identity"] = {         "verification": {"status": "unknown"},         "evidence": [{"url": "https://example.com/unverified.pdf", "locator": "§一"}]}
  • Network accessline 1043
    payload["profile"]["identity"] = {         "verification": {"status": "unknown"},         "evidence": [{"url": "https://example.com/unverified.pdf", "locator": "§一"}]}
  • Network accessline 1044
    "verification": {"status": "unknown"},         "evidence": [{"url": "https://example.com/unverified.pdf", "locator": "§一"}]}     payload["data_status"] = {"dimensions": {
  • Network accessline 1044
    "verification": {"status": "unknown"},         "evidence": [{"url": "https://example.com/unverified.pdf", "locator": "§一"}]}     payload["data_status"] = {"dimensions": {
  • Network accessline 1045
    "evidence": [{"url": "https://example.com/unverified.pdf", "locator": "§一"}]}
  • Network accessline 1045
    "evidence": [{"url": "https://example.com/unverified.pdf", "locator": "§一"}]}
  • Network accessline 1053
    refs = _slice(render_etf_html(payload, md_text=MD_TEXT), "refs")     for bad in ("旧直连源", "旧直连份额源", "源X", "源Y", "Tushare fund_share",                 "https://example.com/unverified.pdf", "原文已核"):
  • Network accessline 1053
    refs = _slice(render_etf_html(payload, md_text=MD_TEXT), "refs")     for bad in ("旧直连源", "旧直连份额源", "源X", "源Y", "Tushare fund_share",                 "https://example.com/unverified.pdf", "原文已核"):
  • Network accessline 1054
    for bad in ("旧直连源", "旧直连份额源", "源X", "源Y", "Tushare fund_share",                 "https://example.com/unverified.pdf", "原文已核"):         assert bad not in refs, bad
  • Network accessline 1054
    for bad in ("旧直连源", "旧直连份额源", "源X", "源Y", "Tushare fund_share",                 "https://example.com/unverified.pdf", "原文已核"):         assert bad not in refs, bad
  • Network accessline 1055
    "https://example.com/unverified.pdf", "原文已核"):
  • Network accessline 1055
    "https://example.com/unverified.pdf", "原文已核"):

skills/invest-a-etf/tests/test_etf_identity.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 314
    assert ident["evidence"], "588000 原文证据缺失"         ev = ident["evidence"][0]         assert ev["url"].startswith("https://www.chinaamc.com/")
  • Network accessline 314
    assert ident["evidence"], "588000 原文证据缺失"         ev = ident["evidence"][0]         assert ev["url"].startswith("https://www.chinaamc.com/")
  • Network accessline 315
    ev = ident["evidence"][0]         assert ev["url"].startswith("https://www.chinaamc.com/")         assert ev["sha256"] == "3932364340512b2e503ad4c66e3bb6f328a6910c83758fe177cd7eb93ea02bac"
  • Network accessline 315
    ev = ident["evidence"][0]         assert ev["url"].startswith("https://www.chinaamc.com/")         assert ev["sha256"] == "3932364340512b2e503ad4c66e3bb6f328a6910c83758fe177cd7eb93ea02bac"
  • Network accessline 316
    assert ev["url"].startswith("https://www.chinaamc.com/")
  • Network accessline 316
    assert ev["url"].startswith("https://www.chinaamc.com/")

skills/invest-a-etf/tests/test_etf_index_pe.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_kline.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_map.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_md.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_peers.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_playbook.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_same_index_evidence.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 28
    _SUM_EVIDENCE = {     "source_type": "基金产品资料概要(管理人/交易所原文)",     "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/x.pdf",
  • Network accessline 28
    _SUM_EVIDENCE = {     "source_type": "基金产品资料概要(管理人/交易所原文)",     "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/x.pdf",
  • Network accessline 29
    "source_type": "基金产品资料概要(管理人/交易所原文)",     "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/x.pdf",     "as_of": "2024-06-20", "read_at": "2026-10-08",
  • Network accessline 29
    "source_type": "基金产品资料概要(管理人/交易所原文)",     "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/x.pdf",     "as_of": "2024-06-20", "read_at": "2026-10-08",
  • Network accessline 30
    "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/x.pdf",
  • Network accessline 30
    "url": "https://www.sse.com.cn/disclosure/fund/announcement/c/new/2024-06-20/x.pdf",
  • Network accessline 207
    "关联命题": "AI 资本开支 → 800G/1.6T 光模块需求",                 "来源": {"source_type": "深交所公告(巨潮)",                          "url": "https://www.cninfo.com.cn/announcement/xxx",
  • Network accessline 207
    "关联命题": "AI 资本开支 → 800G/1.6T 光模块需求",                 "来源": {"source_type": "深交所公告(巨潮)",                          "url": "https://www.cninfo.com.cn/announcement/xxx",
  • Network accessline 208
    "来源": {"source_type": "深交所公告(巨潮)",                          "url": "https://www.cninfo.com.cn/announcement/xxx",                          "sha256": "b" * 64, "locator": "公告正文第 2 页「业绩变动原因」",
  • Network accessline 208
    "来源": {"source_type": "深交所公告(巨潮)",                          "url": "https://www.cninfo.com.cn/announcement/xxx",                          "sha256": "b" * 64, "locator": "公告正文第 2 页「业绩变动原因」",
  • Network accessline 209
    "url": "https://www.cninfo.com.cn/announcement/xxx",
  • Network accessline 209
    "url": "https://www.cninfo.com.cn/announcement/xxx",
  • Network accessline 225
    def test_incomplete_source_not_counted_as_evidence(self, monkeypatch):         self._patch(monkeypatch)         evidence = {"300308": {"业务证据": "x", "来源": {"url": "https://x"}}}
  • Network accessline 225
    def test_incomplete_source_not_counted_as_evidence(self, monkeypatch):         self._patch(monkeypatch)         evidence = {"300308": {"业务证据": "x", "来源": {"url": "https://x"}}}
  • Network accessline 226
    self._patch(monkeypatch)         evidence = {"300308": {"业务证据": "x", "来源": {"url": "https://x"}}}         out = etf_data.build_evidence_budget(
  • Network accessline 226
    self._patch(monkeypatch)         evidence = {"300308": {"业务证据": "x", "来源": {"url": "https://x"}}}         out = etf_data.build_evidence_budget(
  • Network accessline 227
    evidence = {"300308": {"业务证据": "x", "来源": {"url": "https://x"}}}
  • Network accessline 227
    evidence = {"300308": {"业务证据": "x", "来源": {"url": "https://x"}}}

skills/invest-a-etf/tests/test_etf_scale_semantics.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_share_flow.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_share_split.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_share_window.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_spot_cache.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_timeline.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 392
    ]     events = [         {"date": "2026-05-11", "event": "指数创历史新高", "source_url": "https://a",
  • Network accessline 392
    ]     events = [         {"date": "2026-05-11", "event": "指数创历史新高", "source_url": "https://a",
  • Network accessline 393
    events = [         {"date": "2026-05-11", "event": "指数创历史新高", "source_url": "https://a",          "published_date": "2026-05-11", "confidence": "一手"},   # 同日
  • Network accessline 393
    events = [         {"date": "2026-05-11", "event": "指数创历史新高", "source_url": "https://a",          "published_date": "2026-05-11", "confidence": "一手"},   # 同日
  • Network accessline 394
    {"date": "2026-05-11", "event": "指数创历史新高", "source_url": "https://a",
  • Network accessline 394
    {"date": "2026-05-11", "event": "指数创历史新高", "source_url": "https://a",
  • Network accessline 395
    "published_date": "2026-05-11", "confidence": "一手"},   # 同日         {"date": "2026-05-12", "event": "半导体设备景气报道", "source_url": "https://b",          "published_date": "2026-05-12", "confidence": "二手"},   # 前一交易日 = 05-11 对齐(邻近)
  • Network accessline 395
    "published_date": "2026-05-11", "confidence": "一手"},   # 同日         {"date": "2026-05-12", "event": "半导体设备景气报道", "source_url": "https://b",          "published_date": "2026-05-12", "confidence": "二手"},   # 前一交易日 = 05-11 对齐(邻近)
  • Network accessline 396
    {"date": "2026-05-12", "event": "半导体设备景气报道", "source_url": "https://b",
  • Network accessline 396
    {"date": "2026-05-12", "event": "半导体设备景气报道", "source_url": "https://b",
  • Network accessline 397
    "published_date": "2026-05-12", "confidence": "二手"},   # 前一交易日 = 05-11 对齐(邻近)         {"date": "2026-05-14", "event": "权重股中报预告", "source_url": "https://c",          "published_date": "2026-05-14", "confidence": "二手"},   # 后一交易日 = 05-15 对齐(邻
  • Network accessline 397
    "published_date": "2026-05-12", "confidence": "二手"},   # 前一交易日 = 05-11 对齐(邻近)         {"date": "2026-05-14", "event": "权重股中报预告", "source_url": "https://c",          "published_date": "2026-05-14", "confidence": "二手"},   # 后一交易日 = 05-15 对齐(邻
  • Network accessline 398
    {"date": "2026-05-14", "event": "权重股中报预告", "source_url": "https://c",
  • Network accessline 398
    {"date": "2026-05-14", "event": "权重股中报预告", "source_url": "https://c",
  • Network accessline 399
    "published_date": "2026-05-14", "confidence": "二手"},   # 后一交易日 = 05-15 对齐(邻近)         {"date": "2026-06-01", "event": "无大波动邻近", "source_url": "https://d",          "published_date": "2026-06-01", "confidence": "一手"},   # 未对齐
  • Network accessline 399
    "published_date": "2026-05-14", "confidence": "二手"},   # 后一交易日 = 05-15 对齐(邻近)         {"date": "2026-06-01", "event": "无大波动邻近", "source_url": "https://d",          "published_date": "2026-06-01", "confidence": "一手"},   # 未对齐
  • Network accessline 400
    {"date": "2026-06-01", "event": "无大波动邻近", "source_url": "https://d",
  • Network accessline 400
    {"date": "2026-06-01", "event": "无大波动邻近", "source_url": "https://d",
  • Network accessline 430
    ok_file = tmp_path / "events_ok.json"     ok_file.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '
  • Network accessline 430
    ok_file = tmp_path / "events_ok.json"     ok_file.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '
  • Network accessline 431
    ok_file.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '         '"published_date": "2026-05-11", "confidence": "一手"}\n'
  • Network accessline 431
    ok_file.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '         '"published_date": "2026-05-11", "confidence": "一手"}\n'
  • Network accessline 432
    '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '
  • Network accessline 432
    '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '
  • Network accessline 433
    '"published_date": "2026-05-11", "confidence": "一手"}\n'         '{"date": "2026-05-12", "event": "B", "source_url": "https://b", '         '"published_date": "2026-05-12T10:00:00", "confidence": "二手"}\n',
  • Network accessline 433
    '"published_date": "2026-05-11", "confidence": "一手"}\n'         '{"date": "2026-05-12", "event": "B", "source_url": "https://b", '         '"published_date": "2026-05-12T10:00:00", "confidence": "二手"}\n',
  • Network accessline 434
    '{"date": "2026-05-12", "event": "B", "source_url": "https://b", '
  • Network accessline 434
    '{"date": "2026-05-12", "event": "B", "source_url": "https://b", '
  • Network accessline 446
    bad1 = tmp_path / "events_missing_url.json"     bad1.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '
  • Network accessline 446
    bad1 = tmp_path / "events_missing_url.json"     bad1.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '
  • Network accessline 447
    bad1.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '         '"published_date": "2026-05-11", "confidence": "一手"}\n'
  • Network accessline 447
    bad1.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '         '"published_date": "2026-05-11", "confidence": "一手"}\n'
  • Network accessline 448
    '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '
  • Network accessline 448
    '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '
  • Network accessline 459
    bad2 = tmp_path / "events_bad_date.json"     bad2.write_text(         '{"date": "2026/05/11", "event": "A", "source_url": "https://a", '
  • Network accessline 459
    bad2 = tmp_path / "events_bad_date.json"     bad2.write_text(         '{"date": "2026/05/11", "event": "A", "source_url": "https://a", '
  • Network accessline 460
    bad2.write_text(         '{"date": "2026/05/11", "event": "A", "source_url": "https://a", '         '"published_date": "2026-05-11", "confidence": "一手"}\n',
  • Network accessline 460
    bad2.write_text(         '{"date": "2026/05/11", "event": "A", "source_url": "https://a", '         '"published_date": "2026-05-11", "confidence": "一手"}\n',
  • Network accessline 461
    '{"date": "2026/05/11", "event": "A", "source_url": "https://a", '
  • Network accessline 461
    '{"date": "2026/05/11", "event": "A", "source_url": "https://a", '
  • Network accessline 470
    bad3 = tmp_path / "events_bad_conf.json"     bad3.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '
  • Network accessline 470
    bad3 = tmp_path / "events_bad_conf.json"     bad3.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '
  • Network accessline 471
    bad3.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '         '"published_date": "2026-05-11", "confidence": "第三方"}\n',
  • Network accessline 471
    bad3.write_text(         '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '         '"published_date": "2026-05-11", "confidence": "第三方"}\n',
  • Network accessline 472
    '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '
  • Network accessline 472
    '{"date": "2026-05-11", "event": "A", "source_url": "https://a", '

skills/invest-a-etf/tests/test_etf_tracking.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 845
    [Credential-related source omitted]
  • Access to secretsline 845
    [Credential-related source omitted]
  • Access to secretsline 855
    [Credential-related source omitted]
  • Access to secretsline 855
    [Credential-related source omitted]

skills/invest-a-etf/tests/test_etf_tradability.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_etf_valuation_guide.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_futures_basis.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_index_pe_snapshot.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_operating_research.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 27
    "selection": [{"code": "688008", "reason": "接口环节与需求兑现"},                       {"code": "688012", "reason": "设备环节竞争解释"}],         "sources": [{"id": "S1", "url": "https://example.com/company.pdf",
  • Network accessline 27
    "selection": [{"code": "688008", "reason": "接口环节与需求兑现"},                       {"code": "688012", "reason": "设备环节竞争解释"}],         "sources": [{"id": "S1", "url": "https://example.com/company.pdf",
  • Network accessline 28
    {"code": "688012", "reason": "设备环节竞争解释"}],         "sources": [{"id": "S1", "url": "https://example.com/company.pdf",                      "title": "公司原始披露", "source_type": "original", "sha256": sha,
  • Network accessline 28
    {"code": "688012", "reason": "设备环节竞争解释"}],         "sources": [{"id": "S1", "url": "https://example.com/company.pdf",                      "title": "公司原始披露", "source_type": "original", "sha256": sha,
  • Network accessline 29
    "sources": [{"id": "S1", "url": "https://example.com/company.pdf",
  • Network accessline 29
    "sources": [{"id": "S1", "url": "https://example.com/company.pdf",
  • Network accessline 67
    p = payload()     calls = []     def fetch(code):
  • Network accessline 67
    p = payload()     calls = []     def fetch(code):
  • Network accessline 68
    calls = []     def fetch(code):         calls.append(code)
  • Network accessline 68
    calls = []     def fetch(code):         calls.append(code)
  • Network accessline 69
    def fetch(code):
  • Network accessline 69
    def fetch(code):
  • Network accessline 171
    def test_financial_failure_remains_visible(prepared):     _, path = prepared     def fetch(c):
  • Network accessline 171
    def test_financial_failure_remains_visible(prepared):     _, path = prepared     def fetch(c):
  • Network accessline 172
    _, path = prepared     def fetch(c):         raise TimeoutError("opaque upstream")
  • Network accessline 172
    _, path = prepared     def fetch(c):         raise TimeoutError("opaque upstream")
  • Network accessline 173
    def fetch(c):
  • Network accessline 173
    def fetch(c):

skills/invest-a-etf/tests/test_r1_staleness.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_sector_flow.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-etf/tests/test_v026_p1_fixes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 160
    class _FakeSess:             def get(self, url, timeout=None):                 assert url.startswith("http://qt.gtimg.cn/q=sh512660")
  • Network accessline 160
    class _FakeSess:             def get(self, url, timeout=None):                 assert url.startswith("http://qt.gtimg.cn/q=sh512660")
  • Network accessline 161
    def get(self, url, timeout=None):                 assert url.startswith("http://qt.gtimg.cn/q=sh512660")                 return _FakeResp()
  • Network accessline 161
    def get(self, url, timeout=None):                 assert url.startswith("http://qt.gtimg.cn/q=sh512660")                 return _FakeResp()
  • Network accessline 162
    assert url.startswith("http://qt.gtimg.cn/q=sh512660")
  • Network accessline 162
    assert url.startswith("http://qt.gtimg.cn/q=sh512660")

skills/invest-a-event-calendar/README.md

  • Access to secretsline 151
    [Credential-related source omitted]
  • Access to secretsline 154
    [Credential-related source omitted]

skills/invest-a-event-calendar/references/fomc_meetings.yaml

  • Network accessline 21
    last_verified: "2026-09-10" source_url: "https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm"
  • Network accessline 22
    source_url: "https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm"
  • Network accessline 23
    # 决议公布时刻的来源(勿凭印象改):**fomccalendars.htm 日程页不公布时刻**—— # 该值取自美联储新闻稿页头的 "For release at 2:00 p.m. EDT",例: #   https://www.federalreserve.gov/newsevents/pressreleases/monetary20260429a.htm
  • Network accessline 24
    # 该值取自美联储新闻稿页头的 "For release at 2:00 p.m. EDT",例: #   https://www.federalreserve.gov/newsevents/pressreleases/monetary20260429a.htm # 北京时间为**次日** 02:00(夏令时 EDT)/ 03:00(冬令时 EST)→ 引擎按北京日期 +1 天归并。
  • Network accessline 25
    #   https://www.federalreserve.gov/newsevents/pressreleases/monetary20260429a.htm

skills/invest-a-event-calendar/references/political_calendar.yaml

  • Network accessline 26
    end: "2026-11-03"     tentative: false     url: "https://www.usa.gov/midterm-elections"
  • Network accessline 27
    tentative: false     url: "https://www.usa.gov/midterm-elections"   - name: "中国重要会议期(四季度政策窗口)"
  • Network accessline 28
    url: "https://www.usa.gov/midterm-elections"

skills/invest-a-event-calendar/scripts/__init__.py

  • Executable scriptline 1
    Executable file

skills/invest-a-event-calendar/scripts/macro_calendar.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 12
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Network accessline 514
    _FRED_URL = "https://api.stlouisfed.org/fred/releases/dates"
  • Access to secretsline 517
    [Credential-related source omitted]
  • Access to secretsline 521
    [Credential-related source omitted]
  • Network accessline 525
    }     url = f"{_FRED_URL}?{urllib.parse.urlencode(params)}"     with urllib.request.urlopen(url, timeout=30) as resp:  # noqa: S310 —— 固定官方主机
  • Network accessline 526
    url = f"{_FRED_URL}?{urllib.parse.urlencode(params)}"     with urllib.request.urlopen(url, timeout=30) as resp:  # noqa: S310 —— 固定官方主机         return json.loads(resp.read().decode("utf-8"))
  • Network accessline 527
    with urllib.request.urlopen(url, timeout=30) as resp:  # noqa: S310 —— 固定官方主机
  • Access to secretsline 542
    [Credential-related source omitted]

skills/invest-a-event-calendar/scripts/theme_calendar.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/invest-a-event-calendar/scripts/unlock_calendar.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 789
    [Credential-related source omitted]

skills/invest-a-event-calendar/tests/test_calendar.py

  • Executable scriptline 1
    Executable file

skills/invest-a-event-calendar/tests/test_macro_calendar.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 398
    [Credential-related source omitted]
  • Access to secretsline 400
    [Credential-related source omitted]
  • Network accessline 417
    _FOMC_YAML = """ last_verified: "2026-09-10" source_url: "https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm"
  • Network accessline 418
    last_verified: "2026-09-10" source_url: "https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm" meetings:
  • Network accessline 419
    source_url: "https://www.federalreserve.gov/monetarypolicy/fomccalendars.htm"
  • Access to secretsline 532
    [Credential-related source omitted]
  • Access to secretsline 534
    [Credential-related source omitted]

skills/invest-a-event-calendar/tests/test_macro_cli.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 75
    [Credential-related source omitted]
  • Access to secretsline 134
    [Credential-related source omitted]
  • Access to secretsline 137
    [Credential-related source omitted]
  • Access to secretsline 231
    [Credential-related source omitted]

skills/invest-a-event-calendar/tests/test_pool.py

  • Executable scriptline 1
    Executable file

skills/invest-a-event-calendar/tests/test_theme_calendar.py

  • Executable scriptline 1
    Executable file
  • Network accessline 70
    assert not tc.is_official_source("题材热度第一")     assert not tc.is_official_source("论坛帖子"), "未知渠道不得被当作官方确认"     assert tc.is_official_source("https://www.gov.cn/zhengce/"), "权威域名 URL 应可用"
  • Network accessline 72
    assert tc.is_official_source("https://www.gov.cn/zhengce/"), "权威域名 URL 应可用"

skills/invest-a-gap-scan/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write, WebSearch, WebFetch
  • Broad permissionsline 1
    Bash, Read, Write, WebSearch, WebFetch

skills/invest-a-gap-scan/scripts/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/scripts/eval_forward.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/scripts/lib/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/scripts/lib/_invest_path.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/scripts/lib/gap_scanner.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/scripts/lib/kline_source.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/scripts/lib/qfq.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/scripts/lib/report_formatter.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/scripts/lib/skip_reasons.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/scripts/lib/suspension.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/scripts/lib/universe.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 542
    [Credential-related source omitted]
  • Access to secretsline 542
    [Credential-related source omitted]
  • Access to secretsline 543
    [Credential-related source omitted]
  • Access to secretsline 543
    [Credential-related source omitted]

skills/invest-a-gap-scan/scripts/record_hits.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/scripts/scan.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3

skills/invest-a-gap-scan/tests/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/tests/conftest.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/tests/test_backtest_eval.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/tests/test_create_source.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]
  • Access to secretsline 131
    [Credential-related source omitted]
  • Access to secretsline 131
    [Credential-related source omitted]
  • Access to secretsline 145
    [Credential-related source omitted]
  • Access to secretsline 145
    [Credential-related source omitted]

skills/invest-a-gap-scan/tests/test_gap_scanner.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/tests/test_kline_group.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/tests/test_qfq.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/tests/test_report_smoke.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/tests/test_suspension.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-gap-scan/tests/test_universe.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write
  • Broad permissionsline 1
    Bash, Read, Write

skills/invest-a-journal/scripts/journal.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3

skills/invest-a-journal/scripts/lib/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/scripts/lib/_invest_path.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/scripts/lib/db.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/scripts/lib/etf_data.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/scripts/lib/market_microstructure.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/scripts/lib/query_data.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/conftest.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_chip_clearance.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_compute_technical_stock.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_db_rollback.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_env_guardrail.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_etf_shim.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 115
    [Credential-related source omitted]
  • Access to secretsline 115
    [Credential-related source omitted]

skills/invest-a-journal/tests/test_futures_basis_freshness.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_inaction_watch_show.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_journal_module_loader.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_journal_v026.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_labels_v2.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_macro_snapshot.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_market_form.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_microstructure_via_bridge.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_position_nav.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_query_data_etf.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_query_helpers.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_safe_collect_ordering.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_sell_link.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_session_date_fields.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_snapshot_status.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_store_isolation.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_szse_turnover.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_v027_csindex_noise.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_wrong_frequency.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-journal/tests/test_zt_seesaw.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-pattern-scan/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write
  • Broad permissionsline 1
    Bash, Read, Write

skills/invest-a-pattern-scan/scripts/lib/_invest_path.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-pattern-scan/scripts/lib/feature_patterns.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-pattern-scan/scripts/lib/kline_source.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-pattern-scan/scripts/lib/pattern_scanner.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-pattern-scan/scripts/lib/universe.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-pattern-scan/scripts/scan.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3

skills/invest-a-pattern-scan/tests/test_feature_patterns.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-pattern-scan/tests/test_scanner_smoke.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-pulse/SKILL.md

  • Broad permissionsline 1
    Bash, Read
  • Broad permissionsline 1
    Bash, Read

skills/invest-a-stock/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write, WebSearch, WebFetch
  • Broad permissionsline 1
    Bash, Read, Write, WebSearch, WebFetch
  • Access to secretsline 15
    [Credential-related source omitted]
  • Access to secretsline 15
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 640
    [Credential-related source omitted]
  • Access to secretsline 640
    [Credential-related source omitted]

skills/invest-a-stock/references/source-guide.md

  • Network accessline 14
    | 数据源 | 接口 | 稳定性 | 需要Token | 说明 | |--------|------|--------|-----------|------| | **Tushare Pro** | `stock_basic` / `daily` / `fina_indicator` / `top10_floatholders` / `moneyflow` / `sw_daily` | ★★★★ | 是 | **主数据源**;2000 分解锁财务/资金/普通指数;**`sw_
  • Network accessline 14
    | 数据源 | 接口 | 稳定性 | 需要Token | 说明 | |--------|------|--------|-----------|------| | **Tushare Pro** | `stock_basic` / `daily` / `fina_indicator` / `top10_floatholders` / `moneyflow` / `sw_daily` | ★★★★ | 是 | **主数据源**;2000 分解锁财务/资金/普通指数;**`sw_
  • Network accessline 15
    |--------|------|--------|-----------|------| | **Tushare Pro** | `stock_basic` / `daily` / `fina_indicator` / `top10_floatholders` / `moneyflow` / `sw_daily` | ★★★★ | 是 | **主数据源**;2000 分解锁财务/资金/普通指数;**`sw_daily` 申万行业日线需 5000 分**([文档](https
  • Network accessline 15
    |--------|------|--------|-----------|------| | **Tushare Pro** | `stock_basic` / `daily` / `fina_indicator` / `top10_floatholders` / `moneyflow` / `sw_daily` | ★★★★ | 是 | **主数据源**;2000 分解锁财务/资金/普通指数;**`sw_daily` 申万行业日线需 5000 分**([文档](https
  • Network accessline 16
    | **Tushare Pro** | `stock_basic` / `daily` / `fina_indicator` / `top10_floatholders` / `moneyflow` / `sw_daily` | ★★★★ | 是 | **主数据源**;2000 分解锁财务/资金/普通指数;**`sw_daily` 申万行业日线需 5000 分**([文档](https://tushare.pro/document/2?doc_id=327)),不足时回退 a
  • Network accessline 16
    | **Tushare Pro** | `stock_basic` / `daily` / `fina_indicator` / `top10_floatholders` / `moneyflow` / `sw_daily` | ★★★★ | 是 | **主数据源**;2000 分解锁财务/资金/普通指数;**`sw_daily` 申万行业日线需 5000 分**([文档](https://tushare.pro/document/2?doc_id=327)),不足时回退 a
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Network accessline 27
    **TickFlow** ([GitHub 3.4k stars](https://github.com/weilinxie/tickflow)) 是由 efinance 作者开发的免费 A 股行情库,提供独立数据管道(非东方财富爬虫),用于 K 线交叉验证。
  • Network accessline 27
    **TickFlow** ([GitHub 3.4k stars](https://github.com/weilinxie/tickflow)) 是由 efinance 作者开发的免费 A 股行情库,提供独立数据管道(非东方财富爬虫),用于 K 线交叉验证。
  • Access to secretsline 105
    [Credential-related source omitted]
  • Access to secretsline 105
    [Credential-related source omitted]

skills/invest-a-stock/scripts/agent_facts.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3

skills/invest-a-stock/scripts/check_report.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Executable scriptline 1
    #!/usr/bin/env bash

skills/invest-a-stock/scripts/invest.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Access to secretsline 3418
    [Credential-related source omitted]
  • Access to secretsline 3418
    [Credential-related source omitted]
  • Access to secretsline 3418
    [Credential-related source omitted]

skills/invest-a-stock/scripts/lib/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/_invest_path.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/analysis_schema.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 85
    # URL 内的数字不要求绑定 fact——但**只豁免 URL 自身跨度内的 token**。 # 早期实现写的是「该行出现过 http 即豁免整行」(review #10 实测: # `来源 https://x.com/p/123 该季增长 999%` 的 999 被整行放过,与本函数
  • Network accessline 85
    # URL 内的数字不要求绑定 fact——但**只豁免 URL 自身跨度内的 token**。 # 早期实现写的是「该行出现过 http 即豁免整行」(review #10 实测: # `来源 https://x.com/p/123 该季增长 999%` 的 999 被整行放过,与本函数
  • Network accessline 86
    # 早期实现写的是「该行出现过 http 即豁免整行」(review #10 实测: # `来源 https://x.com/p/123 该季增长 999%` 的 999 被整行放过,与本函数 # docstring「不能豁免整行」自相矛盾,且放过的恰是 P0 要拦的编造数字)。
  • Network accessline 86
    # 早期实现写的是「该行出现过 http 即豁免整行」(review #10 实测: # `来源 https://x.com/p/123 该季增长 999%` 的 999 被整行放过,与本函数 # docstring「不能豁免整行」自相矛盾,且放过的恰是 P0 要拦的编造数字)。
  • Network accessline 87
    # `来源 https://x.com/p/123 该季增长 999%` 的 999 被整行放过,与本函数
  • Network accessline 87
    # `来源 https://x.com/p/123 该季增长 999%` 的 999 被整行放过,与本函数

skills/invest-a-stock/scripts/lib/analysis_status.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/analysis_templates.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/archiver.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/assets/echarts.umd.min.js

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 9
    * with the License.  You may obtain a copy of the License at * *   http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 9
    * with the License.  You may obtain a copy of the License at * *   http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 10
    * *   http://www.apache.org/licenses/LICENSE-2.0 *
  • Network accessline 10
    * *   http://www.apache.org/licenses/LICENSE-2.0 *
  • Network accessline 11
    *   http://www.apache.org/licenses/LICENSE-2.0
  • Network accessline 11
    *   http://www.apache.org/licenses/LICENSE-2.0
  • Possible obfuscationline 35
    ***************************************************************************** */var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.
  • Possible obfuscationline 35
    ***************************************************************************** */var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.
  • Network accessline 41
    *     * LICENSE     * https://github.com/ecomfe/zrender/blob/master/LICENSE
  • Network accessline 41
    *     * LICENSE     * https://github.com/ecomfe/zrender/blob/master/LICENSE
  • Network accessline 42
    * LICENSE     * https://github.com/ecomfe/zrender/blob/master/LICENSE     */
  • Network accessline 42
    * LICENSE     * https://github.com/ecomfe/zrender/blob/master/LICENSE     */
  • Network accessline 43
    * https://github.com/ecomfe/zrender/blob/master/LICENSE
  • Network accessline 43
    * https://github.com/ecomfe/zrender/blob/master/LICENSE
  • Possible obfuscationline 45
    var yo={},mo={};var xo,_o=function(){function t(t,e,n){var i=this;this._sleepAfterStill=10,this._stillFrameAccum=0,this._needsRefresh=!0,this._needsRefreshHover=!1,this._darkMode=!1,n=n||{},this.dom=e,this.id=t;var o=new Mn,a=n.renderer||"c
  • Possible obfuscationline 45
    var yo={},mo={};var xo,_o=function(){function t(t,e,n){var i=this;this._sleepAfterStill=10,this._stillFrameAccum=0,this._needsRefresh=!0,this._needsRefreshHover=!1,this._darkMode=!1,n=n||{},this.dom=e,this.id=t;var o=new Mn,a=n.renderer||"c

skills/invest-a-stock/scripts/lib/attribution.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/catalyst.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 296
    ("公告事件", _fetch_announcement_events)):         try:             events, err = fetch(symbol, days)
  • Network accessline 296
    ("公告事件", _fetch_announcement_events)):         try:             events, err = fetch(symbol, days)
  • Network accessline 297
    try:             events, err = fetch(symbol, days)         except Exception as exc:  # noqa: BLE001 —— 单腿异常不得中断整块采集
  • Network accessline 297
    try:             events, err = fetch(symbol, days)         except Exception as exc:  # noqa: BLE001 —— 单腿异常不得中断整块采集
  • Network accessline 298
    events, err = fetch(symbol, days)
  • Network accessline 298
    events, err = fetch(symbol, days)

skills/invest-a-stock/scripts/lib/chain.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/climate.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/collector/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/collector/_base.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 141
    [Credential-related source omitted]
  • Access to secretsline 141
    [Credential-related source omitted]

skills/invest-a-stock/scripts/lib/collector/_kline_cache.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 34
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]
  • Network accessline 57
    def _wrapped() -> list[dict] | None:         data = fetch()
  • Network accessline 57
    def _wrapped() -> list[dict] | None:         data = fetch()
  • Network accessline 58
    data = fetch()
  • Network accessline 58
    data = fetch()

skills/invest-a-stock/scripts/lib/collector/_legacy.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/collector/_orchestrate.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 2296
    [Credential-related source omitted]
  • Access to secretsline 2296
    [Credential-related source omitted]
  • Network accessline 2834
    return (             "available (akshare fallback; Tushare sw_daily 需 5000 积分,见 "             "https://tushare.pro/document/2?doc_id=327)"
  • Network accessline 2834
    return (             "available (akshare fallback; Tushare sw_daily 需 5000 积分,见 "             "https://tushare.pro/document/2?doc_id=327)"
  • Network accessline 2835
    "available (akshare fallback; Tushare sw_daily 需 5000 积分,见 "             "https://tushare.pro/document/2?doc_id=327)"         )
  • Network accessline 2835
    "available (akshare fallback; Tushare sw_daily 需 5000 积分,见 "             "https://tushare.pro/document/2?doc_id=327)"         )
  • Network accessline 2836
    "https://tushare.pro/document/2?doc_id=327)"
  • Network accessline 2836
    "https://tushare.pro/document/2?doc_id=327)"
  • Access to secretsline 3234
    [Credential-related source omitted]
  • Access to secretsline 3234
    [Credential-related source omitted]
  • Access to secretsline 3237
    [Credential-related source omitted]
  • Access to secretsline 3237
    [Credential-related source omitted]
  • Network accessline 3240
    "observation_end": _fred_date(_today()),     })     url = f"https://api.stlouisfed.org/fred/series/observations?{params}"
  • Network accessline 3240
    "observation_end": _fred_date(_today()),     })     url = f"https://api.stlouisfed.org/fred/series/observations?{params}"
  • Network accessline 3241
    })     url = f"https://api.stlouisfed.org/fred/series/observations?{params}"     try:
  • Network accessline 3241
    })     url = f"https://api.stlouisfed.org/fred/series/observations?{params}"     try:
  • Network accessline 3242
    url = f"https://api.stlouisfed.org/fred/series/observations?{params}"     try:         with urllib.request.urlopen(url, timeout=15) as resp:
  • Network accessline 3242
    url = f"https://api.stlouisfed.org/fred/series/observations?{params}"     try:         with urllib.request.urlopen(url, timeout=15) as resp:
  • Network accessline 3243
    try:         with urllib.request.urlopen(url, timeout=15) as resp:             payload = json.loads(resp.read().decode())
  • Network accessline 3243
    try:         with urllib.request.urlopen(url, timeout=15) as resp:             payload = json.loads(resp.read().decode())
  • Network accessline 3244
    with urllib.request.urlopen(url, timeout=15) as resp:
  • Network accessline 3244
    with urllib.request.urlopen(url, timeout=15) as resp:
  • Network accessline 4270
    unavailable_msg=(             "申万行业指数不可得;Tushare sw_daily 需 5000 积分"             "(https://tushare.pro/document/2?doc_id=327),"
  • Network accessline 4270
    unavailable_msg=(             "申万行业指数不可得;Tushare sw_daily 需 5000 积分"             "(https://tushare.pro/document/2?doc_id=327),"
  • Network accessline 4271
    "申万行业指数不可得;Tushare sw_daily 需 5000 积分"             "(https://tushare.pro/document/2?doc_id=327),"             "2000 分档已尝试 akshare 回退"
  • Network accessline 4271
    "申万行业指数不可得;Tushare sw_daily 需 5000 积分"             "(https://tushare.pro/document/2?doc_id=327),"             "2000 分档已尝试 akshare 回退"
  • Network accessline 4272
    "(https://tushare.pro/document/2?doc_id=327),"
  • Network accessline 4272
    "(https://tushare.pro/document/2?doc_id=327),"

skills/invest-a-stock/scripts/lib/collector/_sources.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 122
    global _run_kline_quote_cache_day     if os.environ.get("INVEST_QUOTE_CACHE", "1") == "0":         return fetch()
  • Network accessline 122
    global _run_kline_quote_cache_day     if os.environ.get("INVEST_QUOTE_CACHE", "1") == "0":         return fetch()
  • Network accessline 123
    [Credential-related source omitted]
  • Network accessline 123
    [Credential-related source omitted]
  • Access to secretsline 123
    [Credential-related source omitted]
  • Access to secretsline 123
    [Credential-related source omitted]
  • Network accessline 124
    return fetch()
  • Network accessline 124
    return fetch()
  • Network accessline 138
    return sliced             return None  # 0 行切片 → None(对齐直连空窗口语义,不判成功)     rows = fetch()
  • Network accessline 138
    return sliced             return None  # 0 行切片 → None(对齐直连空窗口语义,不判成功)     rows = fetch()
  • Network accessline 139
    return None  # 0 行切片 → None(对齐直连空窗口语义,不判成功)     rows = fetch()     if not rows:
  • Network accessline 139
    return None  # 0 行切片 → None(对齐直连空窗口语义,不判成功)     rows = fetch()     if not rows:
  • Network accessline 140
    rows = fetch()
  • Network accessline 140
    rows = fetch()

skills/invest-a-stock/scripts/lib/data_util.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/db_util.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/env.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/events.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/evidence.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/financial_rigor.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/financials.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/fusion.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/futures_data.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]

skills/invest-a-stock/scripts/lib/html_charts.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/income_driver.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/industry/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/industry/banks.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/industry/base.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/industry/tech_hardware.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/insight_model.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/json_util.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/kline_cache.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/lhb.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/lint.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/macro.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 97
    [Credential-related source omitted]
  • Access to secretsline 97
    [Credential-related source omitted]
  • Access to secretsline 100
    [Credential-related source omitted]
  • Access to secretsline 100
    [Credential-related source omitted]
  • Network accessline 103
    "observation_end": _to_iso_date(_today()),     })     url = f"https://api.stlouisfed.org/fred/series/observations?{params}"
  • Network accessline 103
    "observation_end": _to_iso_date(_today()),     })     url = f"https://api.stlouisfed.org/fred/series/observations?{params}"
  • Network accessline 104
    })     url = f"https://api.stlouisfed.org/fred/series/observations?{params}"     try:
  • Network accessline 104
    })     url = f"https://api.stlouisfed.org/fred/series/observations?{params}"     try:
  • Network accessline 105
    url = f"https://api.stlouisfed.org/fred/series/observations?{params}"     try:         with urllib.request.urlopen(url, timeout=15) as resp:
  • Network accessline 105
    url = f"https://api.stlouisfed.org/fred/series/observations?{params}"     try:         with urllib.request.urlopen(url, timeout=15) as resp:
  • Network accessline 106
    try:         with urllib.request.urlopen(url, timeout=15) as resp:             payload = json.loads(resp.read().decode())
  • Network accessline 106
    try:         with urllib.request.urlopen(url, timeout=15) as resp:             payload = json.loads(resp.read().decode())
  • Network accessline 107
    with urllib.request.urlopen(url, timeout=15) as resp:
  • Network accessline 107
    with urllib.request.urlopen(url, timeout=15) as resp:
  • Network accessline 138
    url = "https://query1.finance.yahoo.com/v8/finance/chart/%5ESOX?interval=1d&range=5d"     try:         req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
  • Network accessline 138
    url = "https://query1.finance.yahoo.com/v8/finance/chart/%5ESOX?interval=1d&range=5d"     try:         req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
  • Network accessline 139
    try:         req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})         with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 139
    try:         req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})         with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 140
    req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
  • Network accessline 140
    req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
  • Network accessline 141
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 141
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Access to secretsline 255
    [Credential-related source omitted]
  • Access to secretsline 255
    [Credential-related source omitted]
  • Network accessline 329
    sess = requests.Session()
  • Network accessline 329
    sess = requests.Session()
  • Network accessline 348
    if _session is None:         _session = _new_nyfed_session()     xls_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/ACMTermPremium.xls"
  • Network accessline 348
    if _session is None:         _session = _new_nyfed_session()     xls_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/ACMTermPremium.xls"
  • Network accessline 349
    _session = _new_nyfed_session()     xls_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/ACMTermPremium.xls"     try:
  • Network accessline 349
    _session = _new_nyfed_session()     xls_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/ACMTermPremium.xls"     try:
  • Network accessline 350
    xls_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/ACMTermPremium.xls"
  • Network accessline 350
    xls_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/ACMTermPremium.xls"
  • Network accessline 357
    except Exception as exc:         logger.warning("ACMTP10 xls fetch failed: %s", exc)     csv_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/acmPlot_data.csv"
  • Network accessline 357
    except Exception as exc:         logger.warning("ACMTP10 xls fetch failed: %s", exc)     csv_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/acmPlot_data.csv"
  • Network accessline 358
    logger.warning("ACMTP10 xls fetch failed: %s", exc)     csv_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/acmPlot_data.csv"     try:
  • Network accessline 358
    logger.warning("ACMTP10 xls fetch failed: %s", exc)     csv_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/acmPlot_data.csv"     try:
  • Network accessline 359
    csv_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/acmPlot_data.csv"
  • Network accessline 359
    csv_url = "https://www.newyorkfed.org/medialibrary/media/research/data_indicators/acmPlot_data.csv"

skills/invest-a-stock/scripts/lib/manifest.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/market_daily.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 34
    [Credential-related source omitted]
  • Access to secretsline 34
    [Credential-related source omitted]

skills/invest-a-stock/scripts/lib/market_pulse.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/md_subset.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/news_scanner.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 5
    [Credential-related source omitted]
  • Access to secretsline 5
    [Credential-related source omitted]
  • Access to secretsline 126
    [Credential-related source omitted]
  • Access to secretsline 126
    [Credential-related source omitted]
  • Network accessline 132
    query = f"{name} {symbol} 最新 新闻"     try:         r = requests.post(
  • Network accessline 132
    query = f"{name} {symbol} 最新 新闻"     try:         r = requests.post(
  • Network accessline 133
    try:         r = requests.post(             "https://api.tavily.com/search",
  • Network accessline 133
    try:         r = requests.post(             "https://api.tavily.com/search",
  • Network accessline 134
    r = requests.post(
  • Network accessline 134
    r = requests.post(
  • Network accessline 135
    "https://api.tavily.com/search",
  • Network accessline 135
    "https://api.tavily.com/search",
  • Access to secretsline 137
    [Credential-related source omitted]
  • Access to secretsline 137
    [Credential-related source omitted]

skills/invest-a-stock/scripts/lib/notice_body.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 32
    _API = "https://np-cnotice-stock.eastmoney.com/api/content/ann"
  • Network accessline 32
    _API = "https://np-cnotice-stock.eastmoney.com/api/content/ann"
  • Network accessline 33
    _UA = {"User-Agent": "Mozilla/5.0", "Referer": "https://data.eastmoney.com/"}
  • Network accessline 33
    _UA = {"User-Agent": "Mozilla/5.0", "Referer": "https://data.eastmoney.com/"}
  • Network accessline 139
    try:         with akshare_direct_session():             req = urllib.request.Request(url, headers=_UA)
  • Network accessline 139
    try:         with akshare_direct_session():             req = urllib.request.Request(url, headers=_UA)
  • Network accessline 140
    with akshare_direct_session():             req = urllib.request.Request(url, headers=_UA)             with urllib.request.urlopen(req, timeout=timeout) as resp:
  • Network accessline 140
    with akshare_direct_session():             req = urllib.request.Request(url, headers=_UA)             with urllib.request.urlopen(req, timeout=timeout) as resp:
  • Network accessline 141
    req = urllib.request.Request(url, headers=_UA)
  • Network accessline 141
    req = urllib.request.Request(url, headers=_UA)
  • Network accessline 142
    with urllib.request.urlopen(req, timeout=timeout) as resp:
  • Network accessline 142
    with urllib.request.urlopen(req, timeout=timeout) as resp:

skills/invest-a-stock/scripts/lib/nums.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/participant_scan.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/planner.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/portfolio_review.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/positions.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/proxy.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/qfq.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/quality_check.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_dcf.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_extras.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_html.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_icons.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_insight.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_markdown/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_markdown/_base.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_markdown/_concise.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_markdown/_legacy.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_markdown/_v2.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_markdown/_v3.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_risk.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/render_utils.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/report_audit.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/report_snapshot.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/rerank.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/research_profile.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/risk_reward.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/risk_scanner.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/schema.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/scoring.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/search_cache.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 44
    [Credential-related source omitted]
  • Access to secretsline 44
    [Credential-related source omitted]

skills/invest-a-stock/scripts/lib/shared_codes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/shared_dates.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/stats.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/store.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/style_match.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/technical.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/trade_cal.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/tushare_client.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/valuation.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/lib/version.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/scripts/merge_collections.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3

skills/invest-a-stock/scripts/valuation_calc.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3

skills/invest-a-stock/tests/conftest.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/fixtures/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/fixtures/collections.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/stock_testutil.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_agent_facts.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_analysis_schema.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 359
    [{"id": "F1", "value": 1.0, "formula": "1.0"}],             facts_md="事实 [来源: engine]",             analysis_md="来源 https://x.com/p/123 的公开页。(证据 B)",
  • Network accessline 359
    [{"id": "F1", "value": 1.0, "formula": "1.0"}],             facts_md="事实 [来源: engine]",             analysis_md="来源 https://x.com/p/123 的公开页。(证据 B)",
  • Network accessline 360
    facts_md="事实 [来源: engine]",             analysis_md="来源 https://x.com/p/123 的公开页。(证据 B)",         )) == []
  • Network accessline 360
    facts_md="事实 [来源: engine]",             analysis_md="来源 https://x.com/p/123 的公开页。(证据 B)",         )) == []
  • Network accessline 361
    analysis_md="来源 https://x.com/p/123 的公开页。(证据 B)",
  • Network accessline 361
    analysis_md="来源 https://x.com/p/123 的公开页。(证据 B)",
  • Network accessline 366
    [{"id": "F1", "value": 1.0, "formula": "1.0"}],             facts_md="事实 [来源: engine]",             analysis_md="来源 https://x.com/p/123 该季增长 999%。(证据 B)",
  • Network accessline 366
    [{"id": "F1", "value": 1.0, "formula": "1.0"}],             facts_md="事实 [来源: engine]",             analysis_md="来源 https://x.com/p/123 该季增长 999%。(证据 B)",
  • Network accessline 367
    facts_md="事实 [来源: engine]",             analysis_md="来源 https://x.com/p/123 该季增长 999%。(证据 B)",         ))
  • Network accessline 367
    facts_md="事实 [来源: engine]",             analysis_md="来源 https://x.com/p/123 该季增长 999%。(证据 B)",         ))
  • Network accessline 368
    analysis_md="来源 https://x.com/p/123 该季增长 999%。(证据 B)",
  • Network accessline 368
    analysis_md="来源 https://x.com/p/123 该季增长 999%。(证据 B)",

skills/invest-a-stock/tests/test_analysis_templates.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_atomic_json_contract.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_attribution.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_catalyst.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_chain.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_cli_dispatch.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_cli_html.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_climate.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_collector.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 98
    [Credential-related source omitted]
  • Network accessline 98
    [Credential-related source omitted]
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 98
    [Credential-related source omitted]
  • Network accessline 99
    [Credential-related source omitted]
  • Network accessline 99
    [Credential-related source omitted]
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 102
    [Credential-related source omitted]
  • Access to secretsline 102
    [Credential-related source omitted]
  • Access to secretsline 103
    [Credential-related source omitted]
  • Access to secretsline 103
    [Credential-related source omitted]
  • Access to secretsline 106
    [Credential-related source omitted]
  • Access to secretsline 106
    [Credential-related source omitted]
  • Access to secretsline 108
    [Credential-related source omitted]
  • Access to secretsline 108
    [Credential-related source omitted]
  • Access to secretsline 109
    [Credential-related source omitted]
  • Access to secretsline 109
    [Credential-related source omitted]

skills/invest-a-stock/tests/test_collector_fixes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 676
    r = _q_tencent_quote("600000")         assert captured["url"] == "http://qt.gtimg.cn/q=sh600000"
  • Network accessline 676
    r = _q_tencent_quote("600000")         assert captured["url"] == "http://qt.gtimg.cn/q=sh600000"
  • Network accessline 677
    assert captured["url"] == "http://qt.gtimg.cn/q=sh600000"
  • Network accessline 677
    assert captured["url"] == "http://qt.gtimg.cn/q=sh600000"

skills/invest-a-stock/tests/test_collector_run_cache.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_collector_zombie_cache.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_cross_validation.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_d3_sourcing_labels.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_default_store.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 222
    [Credential-related source omitted]
  • Access to secretsline 222
    [Credential-related source omitted]
  • Access to secretsline 325
    [Credential-related source omitted]
  • Access to secretsline 325
    [Credential-related source omitted]

skills/invest-a-stock/tests/test_disposition_hint.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_entry_check_precision.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_env.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Access to secretsline 37
    [Credential-related source omitted]
  • Access to secretsline 56
    [Credential-related source omitted]
  • Access to secretsline 56
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]
  • Access to secretsline 60
    [Credential-related source omitted]
  • Access to secretsline 60
    [Credential-related source omitted]
  • Access to secretsline 64
    [Credential-related source omitted]
  • Access to secretsline 64
    [Credential-related source omitted]
  • Access to secretsline 73
    [Credential-related source omitted]
  • Access to secretsline 73
    [Credential-related source omitted]
  • Access to secretsline 168
    [Credential-related source omitted]
  • Access to secretsline 168
    [Credential-related source omitted]
  • Access to secretsline 169
    [Credential-related source omitted]
  • Access to secretsline 169
    [Credential-related source omitted]
  • Access to secretsline 170
    [Credential-related source omitted]
  • Access to secretsline 170
    [Credential-related source omitted]
  • Access to secretsline 171
    [Credential-related source omitted]
  • Access to secretsline 171
    [Credential-related source omitted]

skills/invest-a-stock/tests/test_events.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 473
    "logic_relation": "强化",                 "source": "akshare stock_individual_notice_report",                 "url": "http://example.com",
  • Network accessline 473
    "logic_relation": "强化",                 "source": "akshare stock_individual_notice_report",                 "url": "http://example.com",
  • Network accessline 474
    "source": "akshare stock_individual_notice_report",                 "url": "http://example.com",             },
  • Network accessline 474
    "source": "akshare stock_individual_notice_report",                 "url": "http://example.com",             },
  • Network accessline 475
    "url": "http://example.com",
  • Network accessline 475
    "url": "http://example.com",
  • Network accessline 616
    mock_notice.return_value = MockDataFrame([             {"代码": "600176", "名称": "中国巨石", "公告标题": "关于回购公司股份的公告",              "公告类型": "回购", "公告日期": "2026-06-15", "网址": "http://example.com"},
  • Network accessline 616
    mock_notice.return_value = MockDataFrame([             {"代码": "600176", "名称": "中国巨石", "公告标题": "关于回购公司股份的公告",              "公告类型": "回购", "公告日期": "2026-06-15", "网址": "http://example.com"},
  • Network accessline 617
    {"代码": "600176", "名称": "中国巨石", "公告标题": "关于回购公司股份的公告",              "公告类型": "回购", "公告日期": "2026-06-15", "网址": "http://example.com"},             {"代码": "600176", "名称": "中国巨石", "公告标题": "2025年年度报告",
  • Network accessline 617
    {"代码": "600176", "名称": "中国巨石", "公告标题": "关于回购公司股份的公告",              "公告类型": "回购", "公告日期": "2026-06-15", "网址": "http://example.com"},             {"代码": "600176", "名称": "中国巨石", "公告标题": "2025年年度报告",
  • Network accessline 618
    "公告类型": "回购", "公告日期": "2026-06-15", "网址": "http://example.com"},
  • Network accessline 618
    "公告类型": "回购", "公告日期": "2026-06-15", "网址": "http://example.com"},

skills/invest-a-stock/tests/test_events_notice_types.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_evidence.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_fast_report_pipeline.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_financial_rigor.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_financials.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 164
    [Credential-related source omitted]
  • Access to secretsline 164
    [Credential-related source omitted]

skills/invest-a-stock/tests/test_full_analysis_cli.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_fusion.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_futures_data.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_html_charts.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_industry_success_factors.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_injection_shield.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 50
    assert _is_safe_href("javascript:alert(1)") is False     assert _is_safe_href("data:text/html;base64,xx") is False     assert _is_safe_href("https://a.b/c") is True
  • Network accessline 50
    assert _is_safe_href("javascript:alert(1)") is False     assert _is_safe_href("data:text/html;base64,xx") is False     assert _is_safe_href("https://a.b/c") is True
  • Network accessline 51
    assert _is_safe_href("data:text/html;base64,xx") is False     assert _is_safe_href("https://a.b/c") is True     assert _is_safe_href("#refs") is True
  • Network accessline 51
    assert _is_safe_href("data:text/html;base64,xx") is False     assert _is_safe_href("https://a.b/c") is True     assert _is_safe_href("#refs") is True
  • Network accessline 52
    assert _is_safe_href("https://a.b/c") is True
  • Network accessline 52
    assert _is_safe_href("https://a.b/c") is True
  • Network accessline 55
    assert 'href="javascript:' not in out     assert "javascript:alert(1)" in out  # 字面保留(已转义)     out2 = render_markdown("[x](https://a.b/c)")
  • Network accessline 55
    assert 'href="javascript:' not in out     assert "javascript:alert(1)" in out  # 字面保留(已转义)     out2 = render_markdown("[x](https://a.b/c)")
  • Network accessline 56
    assert "javascript:alert(1)" in out  # 字面保留(已转义)     out2 = render_markdown("[x](https://a.b/c)")     assert 'href="https://a.b/c' in out2
  • Network accessline 56
    assert "javascript:alert(1)" in out  # 字面保留(已转义)     out2 = render_markdown("[x](https://a.b/c)")     assert 'href="https://a.b/c' in out2
  • Network accessline 57
    out2 = render_markdown("[x](https://a.b/c)")
  • Network accessline 57
    out2 = render_markdown("[x](https://a.b/c)")
  • Network accessline 58
    assert 'href="https://a.b/c' in out2
  • Network accessline 58
    assert 'href="https://a.b/c' in out2

skills/invest-a-stock/tests/test_insight_analysis_cli.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_insight_discoveries_chains.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_insight_report.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_invest_cli_help.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_lhb.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_lint.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_macro_extended.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 35
    [Credential-related source omitted]

skills/invest-a-stock/tests/test_manifest.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_market_daily.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_market_status_basis.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_md_subset.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_merge_collections.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_news_scanner.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 19
    label, score = classify_credibility("上交所公告", "重大事项", "http://www.sse.com.cn")
  • Network accessline 19
    label, score = classify_credibility("上交所公告", "重大事项", "http://www.sse.com.cn")
  • Network accessline 86
    label, score = classify_credibility(             "某公司季度经营数据发布", "内容摘要",             "https://www.eastmoney.com/news/123",
  • Network accessline 86
    label, score = classify_credibility(             "某公司季度经营数据发布", "内容摘要",             "https://www.eastmoney.com/news/123",
  • Network accessline 87
    "某公司季度经营数据发布", "内容摘要",             "https://www.eastmoney.com/news/123",         )
  • Network accessline 87
    "某公司季度经营数据发布", "内容摘要",             "https://www.eastmoney.com/news/123",         )
  • Network accessline 88
    "https://www.eastmoney.com/news/123",
  • Network accessline 88
    "https://www.eastmoney.com/news/123",

skills/invest-a-stock/tests/test_notice_body.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 23
    @pytest.mark.parametrize("url,expected", [     ("https://data.eastmoney.com/notices/detail/600176/AN202609171829519061.html",
  • Network accessline 23
    @pytest.mark.parametrize("url,expected", [     ("https://data.eastmoney.com/notices/detail/600176/AN202609171829519061.html",
  • Network accessline 24
    ("https://data.eastmoney.com/notices/detail/600176/AN202609171829519061.html",
  • Network accessline 24
    ("https://data.eastmoney.com/notices/detail/600176/AN202609171829519061.html",
  • Network accessline 25
    "AN202609171829519061"),     ("https://data.eastmoney.com/notices/detail/300750/AN202609211829726640.html",      "AN202609211829726640"),
  • Network accessline 25
    "AN202609171829519061"),     ("https://data.eastmoney.com/notices/detail/300750/AN202609211829726640.html",      "AN202609211829726640"),
  • Network accessline 26
    ("https://data.eastmoney.com/notices/detail/300750/AN202609211829726640.html",
  • Network accessline 26
    ("https://data.eastmoney.com/notices/detail/300750/AN202609211829726640.html",
  • Network accessline 27
    "AN202609211829726640"),     ("", None),     ("https://example.com/no-code.html", None),
  • Network accessline 27
    "AN202609211829726640"),     ("", None),     ("https://example.com/no-code.html", None),
  • Network accessline 28
    ("", None),     ("https://example.com/no-code.html", None), ])
  • Network accessline 28
    ("", None),     ("https://example.com/no-code.html", None), ])
  • Network accessline 29
    ("https://example.com/no-code.html", None),
  • Network accessline 29
    ("https://example.com/no-code.html", None),
  • Network accessline 150
    r = NB.fetch_notice_body("")     assert r["status"] == "missing"     assert NB.fetch_body_by_url("https://example.com/x.html")["status"] == "missing"
  • Network accessline 150
    r = NB.fetch_notice_body("")     assert r["status"] == "missing"     assert NB.fetch_body_by_url("https://example.com/x.html")["status"] == "missing"
  • Network accessline 152
    assert NB.fetch_body_by_url("https://example.com/x.html")["status"] == "missing"
  • Network accessline 152
    assert NB.fetch_body_by_url("https://example.com/x.html")["status"] == "missing"
  • Network accessline 244
    _stub_net(monkeypatch, "公告正文")     rc = invest.cmd_notice_body(argparse.Namespace(         target="https://data.eastmoney.com/notices/detail/600176/AN000000000000000010.html",
  • Network accessline 244
    _stub_net(monkeypatch, "公告正文")     rc = invest.cmd_notice_body(argparse.Namespace(         target="https://data.eastmoney.com/notices/detail/600176/AN000000000000000010.html",
  • Network accessline 245
    rc = invest.cmd_notice_body(argparse.Namespace(         target="https://data.eastmoney.com/notices/detail/600176/AN000000000000000010.html",         no_cache=True, json=False))
  • Network accessline 245
    rc = invest.cmd_notice_body(argparse.Namespace(         target="https://data.eastmoney.com/notices/detail/600176/AN000000000000000010.html",         no_cache=True, json=False))
  • Network accessline 246
    target="https://data.eastmoney.com/notices/detail/600176/AN000000000000000010.html",
  • Network accessline 246
    target="https://data.eastmoney.com/notices/detail/600176/AN000000000000000010.html",

skills/invest-a-stock/tests/test_orchestrate_blocks.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_parse_fetched_at_parity.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_participant_scan.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_pcr_freshness.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_pe_loss_missing_consistency.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_peer_cli.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_peer_market_caps.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_percentile_core_shared.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_portfolio_review.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_positions.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_price_basis_label.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_proxy.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 15
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 15
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 23
    [Credential-related source omitted]
  • Network accessline 32
    实测(2026-10-14):urllib.getproxies()/requests.get_environ_proxies()
  • Network accessline 32
    实测(2026-10-14):urllib.getproxies()/requests.get_environ_proxies()
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]
  • Network accessline 56
    monkeypatch.delenv(key, raising=False)         monkeypatch.setenv("NO_PROXY", "localhost")         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 56
    monkeypatch.delenv(key, raising=False)         monkeypatch.setenv("NO_PROXY", "localhost")         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 57
    monkeypatch.setenv("NO_PROXY", "localhost")         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")         info = detect_proxy()
  • Network accessline 57
    monkeypatch.setenv("NO_PROXY", "localhost")         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")         info = detect_proxy()
  • Network accessline 58
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 58
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Access to secretsline 66
    [Credential-related source omitted]
  • Access to secretsline 66
    [Credential-related source omitted]
  • Network accessline 68
    monkeypatch.delenv(key, raising=False)         monkeypatch.setenv("no_proxy", "localhost,127.0.0.1")         assert requests_use_proxy("https://push2.eastmoney.com") is False
  • Network accessline 68
    monkeypatch.delenv(key, raising=False)         monkeypatch.setenv("no_proxy", "localhost,127.0.0.1")         assert requests_use_proxy("https://push2.eastmoney.com") is False
  • Network accessline 69
    monkeypatch.setenv("no_proxy", "localhost,127.0.0.1")         assert requests_use_proxy("https://push2.eastmoney.com") is False         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 69
    monkeypatch.setenv("no_proxy", "localhost,127.0.0.1")         assert requests_use_proxy("https://push2.eastmoney.com") is False         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 70
    assert requests_use_proxy("https://push2.eastmoney.com") is False
  • Network accessline 70
    assert requests_use_proxy("https://push2.eastmoney.com") is False
  • Network accessline 71
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 71
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 72
    assert requests_use_proxy("https://push2.eastmoney.com") is True
  • Network accessline 72
    assert requests_use_proxy("https://push2.eastmoney.com") is True
  • Network accessline 85
    monkeypatch.setenv("HTTP_PROXY", "http://test-proxy:8080")
  • Network accessline 85
    monkeypatch.setenv("HTTP_PROXY", "http://test-proxy:8080")
  • Network accessline 86
    monkeypatch.setenv("ALL_PROXY", "http://test-proxy:8080")
  • Network accessline 86
    monkeypatch.setenv("ALL_PROXY", "http://test-proxy:8080")
  • Access to secretsline 89
    [Credential-related source omitted]
  • Access to secretsline 89
    [Credential-related source omitted]
  • Access to secretsline 90
    [Credential-related source omitted]
  • Access to secretsline 90
    [Credential-related source omitted]
  • Network accessline 91
    [Credential-related source omitted]
  • Network accessline 91
    [Credential-related source omitted]
  • Access to secretsline 91
    [Credential-related source omitted]
  • Access to secretsline 91
    [Credential-related source omitted]
  • Network accessline 93
    [Credential-related source omitted]
  • Network accessline 93
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Network accessline 99
    proxy_mod._warned = False         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 99
    proxy_mod._warned = False         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 100
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 100
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 101
    monkeypatch.setenv("ALL_PROXY", "http://127.0.0.1:7890")
  • Network accessline 101
    monkeypatch.setenv("ALL_PROXY", "http://127.0.0.1:7890")
  • Network accessline 112
    proxy_mod._warned = False         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 112
    proxy_mod._warned = False         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 113
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 113
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 124
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 124
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 141
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 141
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 209
    monkeypatch.setenv("HTTP_PROXY", "http://test-proxy:8080")
  • Network accessline 209
    monkeypatch.setenv("HTTP_PROXY", "http://test-proxy:8080")
  • Access to secretsline 218
    [Credential-related source omitted]
  • Access to secretsline 218
    [Credential-related source omitted]
  • Network accessline 226
    t.join()         assert errors == []         assert os.environ.get("HTTP_PROXY") == "http://test-proxy:8080"
  • Network accessline 226
    t.join()         assert errors == []         assert os.environ.get("HTTP_PROXY") == "http://test-proxy:8080"
  • Network accessline 228
    [Credential-related source omitted]
  • Network accessline 228
    [Credential-related source omitted]
  • Access to secretsline 228
    [Credential-related source omitted]
  • Access to secretsline 228
    [Credential-related source omitted]
  • Network accessline 234
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 234
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 255
    monkeypatch.setenv("HTTP_PROXY", "http://test-proxy:8080")
  • Network accessline 255
    monkeypatch.setenv("HTTP_PROXY", "http://test-proxy:8080")
  • Access to secretsline 262
    [Credential-related source omitted]
  • Access to secretsline 262
    [Credential-related source omitted]
  • Network accessline 270
    t.join()         assert errors == []         assert os.environ.get("HTTP_PROXY") == "http://test-proxy:8080"
  • Network accessline 270
    t.join()         assert errors == []         assert os.environ.get("HTTP_PROXY") == "http://test-proxy:8080"
  • Network accessline 272
    [Credential-related source omitted]
  • Network accessline 272
    [Credential-related source omitted]
  • Access to secretsline 272
    [Credential-related source omitted]
  • Access to secretsline 272
    [Credential-related source omitted]
  • Network accessline 283
    monkeypatch.setenv("HTTP_PROXY", "http://test-proxy:8080")
  • Network accessline 283
    monkeypatch.setenv("HTTP_PROXY", "http://test-proxy:8080")
  • Network accessline 284
    monkeypatch.setenv("ALL_PROXY", "http://test-proxy:8080")
  • Network accessline 284
    monkeypatch.setenv("ALL_PROXY", "http://test-proxy:8080")
  • Access to secretsline 292
    [Credential-related source omitted]
  • Access to secretsline 292
    [Credential-related source omitted]
  • Network accessline 294
    [Credential-related source omitted]
  • Network accessline 294
    [Credential-related source omitted]
  • Access to secretsline 294
    [Credential-related source omitted]
  • Access to secretsline 294
    [Credential-related source omitted]
  • Network accessline 295
    [Credential-related source omitted]
  • Network accessline 295
    [Credential-related source omitted]
  • Access to secretsline 295
    [Credential-related source omitted]
  • Access to secretsline 295
    [Credential-related source omitted]
  • Network accessline 304
    proxy_mod._warned = False         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 304
    proxy_mod._warned = False         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 305
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 305
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 324
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 324
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 342
    proxy_mod._warned = False         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 342
    proxy_mod._warned = False         monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 343
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Network accessline 343
    monkeypatch.setenv("HTTP_PROXY", "http://127.0.0.1:7890")
  • Access to secretsline 354
    [Credential-related source omitted]
  • Access to secretsline 354
    [Credential-related source omitted]
  • Network accessline 366
    monkeypatch.setenv("HTTP_PROXY", "http://test-proxy:8080")         with akshare_direct_session():             assert requests.request is not orig_request
  • Network accessline 366
    monkeypatch.setenv("HTTP_PROXY", "http://test-proxy:8080")         with akshare_direct_session():             assert requests.request is not orig_request

skills/invest-a-stock/tests/test_qc_render_output_regression.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_quality_check.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_r12h.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_redundancy_phase23.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_render_code_review_fixes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_render_concise_fixes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_render_extras.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_render_html.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_render_v2.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_report_audit.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_report_diff_history.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_report_filepath.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_report_qc_gates.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_report_snapshot.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_rerank.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_research.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_research_profile.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_risk_reward.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_risk_scanner.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_schema.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_search_cache.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_sector_sync_collector.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 368
    # 第二次加载:不再短路返回残破模块,而是重新走完整 exec(计数 +1)
  • Dangerous shell operationline 368
    # 第二次加载:不再短路返回残破模块,而是重新走完整 exec(计数 +1)

skills/invest-a-stock/tests/test_segments_collector.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_store_diff.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_store_pipeline.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_store_public_connection.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_style_match.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_sw_member_all.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_technical.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_technical_v019.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_test_hygiene.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_thesis_dates.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_tushare_client.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 75
    [Credential-related source omitted]
  • Access to secretsline 75
    [Credential-related source omitted]
  • Network accessline 218
    口径见官方《积分与频次权限对应表》(https://tushare.pro/document/1?doc_id=290);
  • Network accessline 218
    口径见官方《积分与频次权限对应表》(https://tushare.pro/document/1?doc_id=290);
  • Access to secretsline 442
    [Credential-related source omitted]
  • Access to secretsline 442
    [Credential-related source omitted]
  • Access to secretsline 459
    [Credential-related source omitted]
  • Access to secretsline 459
    [Credential-related source omitted]
  • Access to secretsline 465
    [Credential-related source omitted]
  • Access to secretsline 465
    [Credential-related source omitted]

skills/invest-a-stock/tests/test_v013_phase1.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 75
    [Credential-related source omitted]
  • Access to secretsline 75
    [Credential-related source omitted]
  • Access to secretsline 309
    [Credential-related source omitted]
  • Access to secretsline 309
    [Credential-related source omitted]
  • Access to secretsline 325
    [Credential-related source omitted]
  • Access to secretsline 325
    [Credential-related source omitted]

skills/invest-a-stock/tests/test_v013_phase2.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 447
    [Credential-related source omitted]
  • Access to secretsline 447
    [Credential-related source omitted]
  • Access to secretsline 448
    [Credential-related source omitted]
  • Access to secretsline 448
    [Credential-related source omitted]

skills/invest-a-stock/tests/test_v013_phase3.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v013_phase4.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v014.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v015_fixes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 269
    [Credential-related source omitted]
  • Access to secretsline 269
    [Credential-related source omitted]
  • Network accessline 304
    monkeypatch.setattr("lib.env.is_fred_available", lambda _c: True)         monkeypatch.setattr(             "urllib.request.urlopen",
  • Network accessline 304
    monkeypatch.setattr("lib.env.is_fred_available", lambda _c: True)         monkeypatch.setattr(             "urllib.request.urlopen",
  • Network accessline 305
    monkeypatch.setattr(             "urllib.request.urlopen",             lambda *a, **k: _Resp(),
  • Network accessline 305
    monkeypatch.setattr(             "urllib.request.urlopen",             lambda *a, **k: _Resp(),
  • Network accessline 306
    "urllib.request.urlopen",
  • Network accessline 306
    "urllib.request.urlopen",
  • Access to secretsline 310
    [Credential-related source omitted]
  • Access to secretsline 310
    [Credential-related source omitted]
  • Network accessline 339
    monkeypatch.setattr(             "urllib.request.urlopen",
  • Network accessline 339
    monkeypatch.setattr(             "urllib.request.urlopen",
  • Network accessline 340
    "urllib.request.urlopen",
  • Network accessline 340
    "urllib.request.urlopen",
  • Network accessline 351
    monkeypatch.setattr("urllib.request.urlopen", _boom)
  • Network accessline 351
    monkeypatch.setattr("urllib.request.urlopen", _boom)

skills/invest-a-stock/tests/test_v017.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v017_e2e.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]

skills/invest-a-stock/tests/test_v018.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v026_p0_fixes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v026_review_fixes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v027_fixes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v028_fixes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v030_reading_layers.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 357
    "credibility": "official", "credibility_score": 0.95,                                "title": "某公告", "source": "notice",                                "url": "https://example.invalid/a"}]}
  • Network accessline 357
    "credibility": "official", "credibility_score": 0.95,                                "title": "某公告", "source": "notice",                                "url": "https://example.invalid/a"}]}
  • Network accessline 358
    "title": "某公告", "source": "notice",                                "url": "https://example.invalid/a"}]}     out = render_report_v3(coll, "600176", mode="full")
  • Network accessline 358
    "title": "某公告", "source": "notice",                                "url": "https://example.invalid/a"}]}     out = render_report_v3(coll, "600176", mode="full")
  • Network accessline 359
    "url": "https://example.invalid/a"}]}
  • Network accessline 359
    "url": "https://example.invalid/a"}]}

skills/invest-a-stock/tests/test_v031_c1_fin_series.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v031_c2_rf.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v031_c3_bank_leverage.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v031_mainline_rev.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v031_priority_review.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_v031_reading_surface.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_valuation.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 1056
    monkeypatch.setattr(_proxy, "no_proxy_session", lambda: _FakeCtx())         out = _get_quote_tencent("600519")         assert captured["url"] == "http://qt.gtimg.cn/q=sh600519"
  • Network accessline 1056
    monkeypatch.setattr(_proxy, "no_proxy_session", lambda: _FakeCtx())         out = _get_quote_tencent("600519")         assert captured["url"] == "http://qt.gtimg.cn/q=sh600519"
  • Network accessline 1057
    out = _get_quote_tencent("600519")         assert captured["url"] == "http://qt.gtimg.cn/q=sh600519"         assert out["price"] == 18.52
  • Network accessline 1057
    out = _get_quote_tencent("600519")         assert captured["url"] == "http://qt.gtimg.cn/q=sh600519"         assert out["price"] == 18.52
  • Network accessline 1058
    assert captured["url"] == "http://qt.gtimg.cn/q=sh600519"
  • Network accessline 1058
    assert captured["url"] == "http://qt.gtimg.cn/q=sh600519"

skills/invest-a-stock/tests/test_version.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-a-stock/tests/test_version_sync.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 55
    (root / "README.md").write_text(         "# test\n\n[![Release]"         f"(https://img.shields.io/github/v/release/Veblin/invest-skills?label=v{version})]\n",
  • Network accessline 55
    (root / "README.md").write_text(         "# test\n\n[![Release]"         f"(https://img.shields.io/github/v/release/Veblin/invest-skills?label=v{version})]\n",
  • Network accessline 56
    "# test\n\n[![Release]"         f"(https://img.shields.io/github/v/release/Veblin/invest-skills?label=v{version})]\n",         encoding="utf-8",
  • Network accessline 56
    "# test\n\n[![Release]"         f"(https://img.shields.io/github/v/release/Veblin/invest-skills?label=v{version})]\n",         encoding="utf-8",
  • Network accessline 57
    f"(https://img.shields.io/github/v/release/Veblin/invest-skills?label=v{version})]\n",
  • Network accessline 57
    f"(https://img.shields.io/github/v/release/Veblin/invest-skills?label=v{version})]\n",

skills/invest-hk-stock/SKILL.md

  • Broad permissionsline 1
    Bash, Read, WebSearch, WebFetch, Write
  • Broad permissionsline 1
    Bash, Read, WebSearch, WebFetch, Write

skills/invest-hk-stock/scripts/hk.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3

skills/invest-hk-stock/scripts/lib/__init__.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/scripts/lib/_invest_path.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/scripts/lib/hk_ah.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Access to secretsline 377
    [Credential-related source omitted]
  • Access to secretsline 377
    [Credential-related source omitted]
  • Network accessline 381
    def _latest(series: str) -> tuple[str, float] | None:             url = (f"https://api.stlouisfed.org/fred/series/observations?series_id={series}"
  • Network accessline 381
    def _latest(series: str) -> tuple[str, float] | None:             url = (f"https://api.stlouisfed.org/fred/series/observations?series_id={series}"
  • Network accessline 382
    [Credential-related source omitted]
  • Network accessline 382
    [Credential-related source omitted]
  • Network accessline 383
    [Credential-related source omitted]
  • Network accessline 383
    [Credential-related source omitted]
  • Access to secretsline 383
    [Credential-related source omitted]
  • Access to secretsline 383
    [Credential-related source omitted]
  • Network accessline 384
    with urllib.request.urlopen(url, timeout=20) as resp:  # noqa: S310 固定官方主机
  • Network accessline 384
    with urllib.request.urlopen(url, timeout=20) as resp:  # noqa: S310 固定官方主机

skills/invest-hk-stock/scripts/lib/hk_calendar.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/scripts/lib/hk_codes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/scripts/lib/hk_compare.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/scripts/lib/hk_financials.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/scripts/lib/hk_kline.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 3
    2026-09-06 实测:`https://ifzq.gtimg.cn/appstock/app/fqkline/get?param=hk00700,day,,,N,qfq`
  • Network accessline 3
    2026-09-06 实测:`https://ifzq.gtimg.cn/appstock/app/fqkline/get?param=hk00700,day,,,N,qfq`
  • Network accessline 18
    FQKLINE_URL = "https://ifzq.gtimg.cn/appstock/app/fqkline/get"
  • Network accessline 18
    FQKLINE_URL = "https://ifzq.gtimg.cn/appstock/app/fqkline/get"
  • Network accessline 27
    code = parse_hk_symbol(sym)     params = {"param": f"hk{code},day,,,{days},qfq"}     resp = requests.get(FQKLINE_URL, params=params, timeout=timeout,
  • Network accessline 27
    code = parse_hk_symbol(sym)     params = {"param": f"hk{code},day,,,{days},qfq"}     resp = requests.get(FQKLINE_URL, params=params, timeout=timeout,
  • Network accessline 28
    params = {"param": f"hk{code},day,,,{days},qfq"}     resp = requests.get(FQKLINE_URL, params=params, timeout=timeout,                         headers={"User-Agent": "Mozilla/5.0"})
  • Network accessline 28
    params = {"param": f"hk{code},day,,,{days},qfq"}     resp = requests.get(FQKLINE_URL, params=params, timeout=timeout,                         headers={"User-Agent": "Mozilla/5.0"})
  • Network accessline 29
    resp = requests.get(FQKLINE_URL, params=params, timeout=timeout,
  • Network accessline 29
    resp = requests.get(FQKLINE_URL, params=params, timeout=timeout,

skills/invest-hk-stock/scripts/lib/hk_quote.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Network accessline 25
    TENCENT_HK_URL = "http://qt.gtimg.cn/q=r_hk{sym}"
  • Network accessline 25
    TENCENT_HK_URL = "http://qt.gtimg.cn/q=r_hk{sym}"
  • Network accessline 63
    import requests     code = parse_hk_symbol(sym)     resp = requests.get(
  • Network accessline 63
    import requests     code = parse_hk_symbol(sym)     resp = requests.get(
  • Network accessline 64
    code = parse_hk_symbol(sym)     resp = requests.get(         TENCENT_HK_URL.format(sym=code),
  • Network accessline 64
    code = parse_hk_symbol(sym)     resp = requests.get(         TENCENT_HK_URL.format(sym=code),
  • Network accessline 65
    resp = requests.get(
  • Network accessline 65
    resp = requests.get(

skills/invest-hk-stock/scripts/lib/hk_southbound.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/scripts/lib/hk_tushare.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/scripts/lib/hk_valuation.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/scripts/lib/hk_yfinance.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/tests/_hk_cli.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/tests/conftest.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/tests/test_hk_ah.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/tests/test_hk_ah_align.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/tests/test_hk_calendar.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/tests/test_hk_codes.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/tests/test_hk_compare.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/tests/test_hk_data.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/tests/test_hk_quote.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/invest-hk-stock/tests/test_hk_southbound.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file

skills/lib/__init__.py

  • Executable scriptline 1
    Executable file

skills/lib/backtest.py

  • Executable scriptline 1
    Executable file

skills/lib/cache.py

  • Executable scriptline 1
    Executable file

skills/lib/codes.py

  • Executable scriptline 1
    Executable file

skills/lib/config_backtest.py

  • Executable scriptline 1
    Executable file

skills/lib/data_bridge.py

  • Executable scriptline 1
    Executable file

skills/lib/data_util.py

  • Executable scriptline 1
    Executable file

skills/lib/dates.py

  • Executable scriptline 1
    Executable file

skills/lib/db_util.py

  • Executable scriptline 1
    Executable file

skills/lib/decision_review.py

  • Executable scriptline 1
    Executable file

skills/lib/decision_schema.py

  • Executable scriptline 1
    Executable file

skills/lib/env.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 3
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Access to secretsline 40
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]
  • Access to secretsline 72
    [Credential-related source omitted]
  • Access to secretsline 75
    [Credential-related source omitted]
  • Access to secretsline 104
    [Credential-related source omitted]
  • Network accessline 112
    [Credential-related source omitted]
  • Access to secretsline 112
    [Credential-related source omitted]
  • Network accessline 113
    "description": "Tushare Token",         "how_to_get": "前往 https://tushare.pro 注册并获取 API Token(需积分 ≥120)",         "affected_features": [
  • Network accessline 114
    "how_to_get": "前往 https://tushare.pro 注册并获取 API Token(需积分 ≥120)",
  • Access to secretsline 124
    [Credential-related source omitted]
  • Network accessline 125
    [Credential-related source omitted]
  • Access to secretsline 125
    [Credential-related source omitted]
  • Network accessline 126
    "description": "FRED API Key",         "how_to_get": "前往 https://fred.stlouisfed.org/docs/api/api_key.html 免费申请",         "affected_features": [
  • Network accessline 127
    [Credential-related source omitted]
  • Access to secretsline 127
    [Credential-related source omitted]
  • Access to secretsline 135
    [Credential-related source omitted]
  • Network accessline 136
    [Credential-related source omitted]
  • Access to secretsline 136
    [Credential-related source omitted]
  • Network accessline 137
    "description": "Tavily API Key",         "how_to_get": "前往 https://tavily.com 注册并获取 API Key",         "affected_features": [
  • Network accessline 138
    "how_to_get": "前往 https://tavily.com 注册并获取 API Key",
  • Access to secretsline 172
    [Credential-related source omitted]
  • Access to secretsline 188
    [Credential-related source omitted]
  • Access to secretsline 223
    [Credential-related source omitted]
  • Access to secretsline 231
    [Credential-related source omitted]
  • Network accessline 246
    try:         with no_proxy_session() as sess:             r = sess.get("http://qt.gtimg.cn/q=sh600519", timeout=3)
  • Network accessline 247
    with no_proxy_session() as sess:             r = sess.get("http://qt.gtimg.cn/q=sh600519", timeout=3)         return r.status_code == 200 and "~" in r.text
  • Network accessline 248
    r = sess.get("http://qt.gtimg.cn/q=sh600519", timeout=3)
  • Access to secretsline 315
    [Credential-related source omitted]
  • Access to secretsline 327
    [Credential-related source omitted]
  • Network accessline 338
    requests/urllib3/urllib/http.client 在未显式传 timeout 时都会回落到
  • Access to secretsline 344
    [Credential-related source omitted]
  • Access to secretsline 358
    [Credential-related source omitted]
  • Access to secretsline 360
    [Credential-related source omitted]
  • Access to secretsline 361
    [Credential-related source omitted]
  • Access to secretsline 365
    [Credential-related source omitted]
  • Access to secretsline 366
    [Credential-related source omitted]

skills/lib/evidence_tags.py

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 31
    _VS16 = r"<U+FE0F>?"

skills/lib/freshness.py

  • Executable scriptline 1
    Executable file

skills/lib/invest_path.py

  • Executable scriptline 1
    Executable file

skills/lib/kline_cache.py

  • Executable scriptline 1
    Executable file
  • Network accessline 126
    if not self._is_enabled():             return fetch()
  • Network accessline 127
    return fetch()
  • Network accessline 131
    on_hit()             return hit         data = fetch()
  • Network accessline 132
    return hit         data = fetch()         if data:
  • Network accessline 133
    data = fetch()

skills/lib/lmw.py

  • Executable scriptline 1
    Executable file

skills/lib/logutil.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 114
    [Credential-related source omitted]

skills/lib/market_microstructure.py

  • Executable scriptline 1
    Executable file
  • Network accessline 1103
    today = shanghai_today()     url = "http://www.szse.cn/api/report/ShowReport"
  • Network accessline 1104
    url = "http://www.szse.cn/api/report/ShowReport"
  • Network accessline 1110
    "random": "0.39339437497296137",     }     r = requests.get(url, params=params, timeout=20)
  • Network accessline 1111
    }     r = requests.get(url, params=params, timeout=20)     r.raise_for_status()
  • Network accessline 1112
    r = requests.get(url, params=params, timeout=20)

skills/lib/market_pctile.py

  • Executable scriptline 1
    Executable file

skills/lib/market_pulse.py

  • Executable scriptline 1
    Executable file

skills/lib/multiple_testing.py

  • Executable scriptline 1
    Executable file

skills/lib/nums.py

  • Executable scriptline 1
    Executable file

skills/lib/proxy.py

  • Executable scriptline 1
    Executable file
  • Network accessline 48
    PUSH2_EASTMONEY_URL = "https://push2his.eastmoney.com/api/qt/stock/kline/get"
  • Access to secretsline 66
    [Credential-related source omitted]
  • Access to secretsline 174
    [Credential-related source omitted]
  • Access to secretsline 189
    [Credential-related source omitted]
  • Access to secretsline 193
    [Credential-related source omitted]
  • Access to secretsline 204
    [Credential-related source omitted]
  • Access to secretsline 206
    [Credential-related source omitted]
  • Access to secretsline 208
    [Credential-related source omitted]
  • Access to secretsline 239
    [Credential-related source omitted]
  • Access to secretsline 241
    [Credential-related source omitted]
  • Network accessline 324
    end = now.strftime("%Y%m%d")     try:         r = requests.get(
  • Network accessline 325
    try:         r = requests.get(             PUSH2_EASTMONEY_URL,
  • Network accessline 326
    r = requests.get(
  • Network accessline 342
    "Chrome/120.0.0.0 Safari/537.36"                 ),                 "Referer": "https://quote.eastmoney.com/",
  • Network accessline 343
    ),                 "Referer": "https://quote.eastmoney.com/",             },
  • Network accessline 344
    "Referer": "https://quote.eastmoney.com/",
  • Access to secretsline 369
    [Credential-related source omitted]
  • Network accessline 537
    sess = requests.Session()

skills/lib/qfq.py

  • Executable scriptline 1
    Executable file

skills/lib/quote_tencent.py

  • Executable scriptline 1
    Executable file
  • Network accessline 67
    TENCENT_QUOTE_URL = "http://qt.gtimg.cn/q="

skills/lib/references/data-interface-map.md

  • Access to secretsline 184
    [Credential-related source omitted]
  • Access to secretsline 185
    [Credential-related source omitted]

skills/lib/references/development-rules.md

  • Access to secretsline 258
    [Credential-related source omitted]

skills/lib/references/financial-semantics.md

  • Network accessline 10
    - 会计事实按企业适用的会计准则与实际披露读取。中期的资产负债表时点、利润表期间和累计现金流不得互换;依据 [财政部《企业会计准则第32号》第五条](https://kjs.mof.gov.cn/zt/kjzzss/kuaijizhunzeshishi/200806/t20080618_46249.htm),另见 [财政部季报现金流口径答复](https://www.mof.gov.cn/bd/mhwzzxly/hjs/202301/t20230129_3864201.htm
  • Network accessline 11
    - 每股收益和披露 ROE 保留法定定义;依据 [证监会编报规则第9号](https://www.csrc.gov.cn/csrc/c101864/c1024649/content.shtml)。每股收益的分母须考虑加权平均股数;港股采用 IFRS 时参见 [IAS 33](https://www.ifrs.org/issued-standards/list-of-standards/ias-33-earnings-per-share.html/)。

skills/lib/report_qc.py

  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Possible obfuscationline 1061
    r"^[//]\s*[⚠❓]<U+FE0F>?\s*[中弱](?:\s*[((]([^()()]{1,80})[))])?", rest)
  • Possible obfuscationline 1061
    r"^[//]\s*[⚠❓]<U+FE0F>?\s*[中弱](?:\s*[((]([^()()]{1,80})[))])?", rest)
  • Possible obfuscationline 1061
    r"^[//]\s*[⚠❓]<U+FE0F>?\s*[中弱](?:\s*[((]([^()()]{1,80})[))])?", rest)
  • Possible obfuscationline 1061
    r"^[//]\s*[⚠❓]<U+FE0F>?\s*[中弱](?:\s*[((]([^()()]{1,80})[))])?", rest)
  • Access to secretsline 4005
    [Credential-related source omitted]
  • Access to secretsline 4005
    [Credential-related source omitted]
  • Access to secretsline 4005
    [Credential-related source omitted]
  • Access to secretsline 4005
    [Credential-related source omitted]
  • Access to secretsline 4010
    [Credential-related source omitted]
  • Access to secretsline 4010
    [Credential-related source omitted]
  • Access to secretsline 4010
    [Credential-related source omitted]
  • Access to secretsline 4010
    [Credential-related source omitted]

skills/lib/sector_sync.py

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 675
    rm = index_returns[d]
  • Dangerous shell operationline 680
    xs.append([1.0, abs(rm), rm * rm])

skills/lib/skill_paths.py

  • Executable scriptline 1
    Executable file

skills/lib/snapshot_core.py

  • Executable scriptline 1
    Executable file

skills/lib/stats.py

  • Executable scriptline 1
    Executable file

skills/lib/technical.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_b06_qc_record.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_backtest.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_backtest_futures_fixes.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_build_skillhub_packages.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 588
    [Credential-related source omitted]
  • Access to secretsline 606
    [Credential-related source omitted]
  • Access to secretsline 610
    [Credential-related source omitted]
  • Access to secretsline 614
    [Credential-related source omitted]
  • Access to secretsline 617
    [Credential-related source omitted]
  • Access to secretsline 619
    [Credential-related source omitted]
  • Network accessline 697
    "budget": {"max_names": 1, "target_cov_pct": 8},         "selection": [{"code": "688008", "reason": "检验经营变化"}],         "sources": [{"id": "S1", "url": "https://example.com/original.pdf",
  • Network accessline 698
    "selection": [{"code": "688008", "reason": "检验经营变化"}],         "sources": [{"id": "S1", "url": "https://example.com/original.pdf",                      "title": "离线原文", "source_type": "original", "sha256": sha,
  • Network accessline 699
    "sources": [{"id": "S1", "url": "https://example.com/original.pdf",
  • Access to secretsline 937
    [Credential-related source omitted]

skills/lib/tests/test_cache.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_codes.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_config_backtest.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_data_bridge.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_data_util.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_dates.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_db_util.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_decision_review.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_decision_schema.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_dev_log_wiring.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_dist_doc_refs.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_h6_events.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_hypothesis_registry.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_invest_path_shims.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_kline_cache.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_law_contract_v031.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_lib_version.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_lmw.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_logutil.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_market_pctile.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_market_pulse.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_market_service_owner.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_multiple_testing.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_qfq.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_qfq_contract.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_quote_tencent.py

  • Executable scriptline 1
    Executable file
  • Network accessline 65
    @pytest.mark.parametrize("symbol,expected", [         ("600000", "http://qt.gtimg.cn/q=sh600000"),
  • Network accessline 66
    ("600000", "http://qt.gtimg.cn/q=sh600000"),
  • Network accessline 67
    ("512660", "http://qt.gtimg.cn/q=sh512660"),
  • Network accessline 68
    ("159915", "http://qt.gtimg.cn/q=sz159915"),
  • Network accessline 69
    ("600176.SH", "http://qt.gtimg.cn/q=sh600176"),  # 收敛:剥离后缀(旧 valuation 直接拼后缀必失败)
  • Network accessline 191
    assert q["price"] == 18.52         assert q["amount"] == pytest.approx(323831 * 1e4)         assert sess.calls == [("http://qt.gtimg.cn/q=sh600000", 5.0)]
  • Network accessline 193
    assert sess.calls == [("http://qt.gtimg.cn/q=sh600000", 5.0)]

skills/lib/tests/test_r1_sourcing_layer.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_r2_module_identity.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_report_qc.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_scenario_triggers.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_sector_sync.py

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 178
    rm = 0.0005 + 0.01 * math.sin(t / 7.0)
  • Dangerous shell operationline 181
    csad_t = 0.02 - 0.005 * abs(rm) + gamma2 * rm * rm
  • Dangerous shell operationline 182
    # 30 只成分股:20 只 = Rm + CSAD_t,10 只 = Rm − CSAD_t → mean|dev| = CSAD_t
  • Dangerous shell operationline 183
    returns_by_day[d] = [rm + csad_t] * 20 + [rm - csad_t] * 10
  • Dangerous shell operationline 198
    rm = np.array([idx_ret_by_date[d] for d in dts])
  • Dangerous shell operationline 201
    A = np.vstack([np.ones_like(rm), np.abs(rm), rm ** 2]).T
  • Dangerous shell operationline 226
    rm = 0.0005 + 0.01 * math.sin(t / 7.0)
  • Dangerous shell operationline 229
    csad_t = (0.02 - 0.005 * abs(rm) - 0.5 * rm * rm
  • Dangerous shell operationline 231
    returns_by_day[d] = [rm + csad_t] * 20 + [rm - csad_t] * 10
  • Dangerous shell operationline 237
    rm = np.array([idx_ret_by_date[d] for d in dts])
  • Dangerous shell operationline 240
    A = np.vstack([np.ones_like(rm), np.abs(rm), rm ** 2]).T
  • Dangerous shell operationline 268
    rm = np.array([idx_ret_by_date[d] for d in keep])
  • Dangerous shell operationline 271
    A = np.vstack([np.ones_like(rm), np.abs(rm), rm ** 2]).T
  • Dangerous shell operationline 289
    rm = -0.04 + 0.003 * math.sin(_)  # 下行档(高波:噪声 0.003)
  • Dangerous shell operationline 291
    stk.append(1.1 * rm + 0.001 * math.cos(_ * 2))
  • Dangerous shell operationline 293
    rm = 0.04 + 0.001 * math.sin(_ * 3)  # 上行档(低波:噪声 0.001)
  • Dangerous shell operationline 295
    stk.append(1.1 * rm + 0.001 * math.cos(_ * 5))
  • Dangerous shell operationline 297
    rm = 0.01 * math.sin(_ * 7)
  • Dangerous shell operationline 299
    stk.append(1.1 * rm + 0.001 * math.cos(_ * 11))
  • Network accessline 605
    if name == "index_hist_sw":                 hist_symbols.append(str(kwargs.get("symbol")))             return fetch(name, *args, **kwargs)
  • Network accessline 607
    return fetch(name, *args, **kwargs)
  • Network accessline 764
    def _lagged(name, *a, **k):             df = fetch(name, *a, **k)
  • Network accessline 765
    df = fetch(name, *a, **k)

skills/lib/tests/test_shared_owner_migration.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 105
    [Credential-related source omitted]

skills/lib/tests/test_skill_paths.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_snapshot_core.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_stats.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_technical_adx.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_trade_cal.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_unlock_source.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_v025_doc_checks.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_v026_doc_checks.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_v030_doc_checks.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_v031_evidence_tags.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_volume_price.py

  • Executable scriptline 1
    Executable file

skills/lib/tests/test_zt_rotation_bundle.py

  • Executable scriptline 1
    Executable file

skills/lib/trade_cal.py

  • Executable scriptline 1
    Executable file

skills/lib/tushare_client.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 5
    [Credential-related source omitted]
  • Network accessline 36
    TUSHARE_API_URL = "https://api.tushare.pro"
  • Network accessline 42
    # 官方「积分与频次权限对应表」(https://tushare.pro/document/1?doc_id=290):
  • Network accessline 57
    # 官方最低积分(以各接口文档为准;用于降级提示) # sw_daily: https://tushare.pro/document/2?doc_id=327
  • Network accessline 58
    # sw_daily: https://tushare.pro/document/2?doc_id=327
  • Access to secretsline 93
    [Credential-related source omitted]
  • Access to secretsline 156
    [Credential-related source omitted]
  • Access to secretsline 157
    [Credential-related source omitted]
  • Access to secretsline 159
    [Credential-related source omitted]
  • Access to secretsline 163
    [Credential-related source omitted]
  • Network accessline 178
    DAILY_CALL_LIMIT if daily_call_limit is None else daily_call_limit         )         self._session = requests.Session()
  • Network accessline 179
    )         self._session = requests.Session()         self._session.trust_env = False
  • Network accessline 180
    self._session = requests.Session()
  • Access to secretsline 208
    [Credential-related source omitted]

skills/lib/unlock_source.py

  • Executable scriptline 1
    Executable file

skills/lib/version.py

  • Executable scriptline 1
    Executable file

skills/lib/volume_price.py

  • Executable scriptline 1
    Executable file

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Combined signals: 1 fact
Declared and executed: 7 facts
Signal confidence: 492 facts

and 442 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md scripts/wb_bundle/SKILL.md.cursor/skills/<skill-name>/
Gemini CLINativeManifest gemini-extension.json.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md scripts/wb_bundle/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md scripts/wb_bundle/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.