skills/gangtise/SKILL.md
wangyitong a65adcc2e5 Initial commit: merged, deduplicated, and vetted skill collection
Sources: extracted from two upstream archives (skill-repo, skills-main),
merged with the following policy:

- 15 broken symlinks (pointing to /Users/jameslee/.cc-switch/skills or
  ../../.agents/skills on a foreign machine) discarded
- 3 real name collisions with identical content (ai-pair, ifind-http-api,
  zhipu-websearch) kept as one copy
- Functional overlaps deduped keeping the strongest variant:
  - docx family: kept docx (official, full toolchain) + docx-cn
    (GB/T 9704 Chinese official-document constants),
    dropped docx_writer (no scripts, name collided with docx)
  - humanizer family: kept humanizer-zh (6 zh reference docs),
    dropped humanizer (en, redundant for CN workflow)
- Skills that only ran in a foreign environment removed:
  ablemind-ops, app-publish, hlb-design-system, openclaw-adj-skill,
  claude-driver
- alphapai excluded from this public repo because its SKILL.md hard-coded
  live credentials

Result: 25 skills, 572 files, ~7.5 MB.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-13 14:47:12 +08:00

11 KiB
Raw Blame History

name description allowed-tools user-invokable
gangtise Use when the user asks about Chinese equity research, broker reports, analyst opinions, industry chain analysis, investment logic, company deep-dives, economic indicators, or needs to search financial knowledge bases. Triggers: "研报", "研究报告", "投资逻辑", "产业链", "调研提纲", "晨报", "指标查询", "GDP", "销量", "深度研究", "gangtise". Bash WebFetch Read Write Edit Glob Grep AskUserQuestion true

Gangtise Ultra — 投研知识库 & AI Agent API

港股/A股研报知识库智能检索 + AI 深度研究 Agent + 经济指标查询。

Configuration

Base URL: http://39.96.218.64:8009

Auth: All requests require Authorization: Bearer <token> header.

Token Resolution (MUST do before first API call)

Run this bash snippet to resolve the token. It checks multiple sources automatically:

# 1. Environment variable
TOKEN="${GANGTISE_TOKEN:-}"

# 2. .env in current directory
if [ -z "$TOKEN" ] && [ -f .env ]; then
  TOKEN=$(grep -E '^GANGTISE_TOKEN=' .env | cut -d= -f2- | tr -d '"'"'"' ')
fi

# 3. ~/.env global dotenv
if [ -z "$TOKEN" ] && [ -f ~/.env ]; then
  TOKEN=$(grep -E '^GANGTISE_TOKEN=' ~/.env | cut -d= -f2- | tr -d '"'"'"' ')
fi

If $TOKEN is still empty after the above, use AskUserQuestion to ask:

"Gangtise API 需要 Bearer Token 才能调用。请提供 token或者告诉我 .env 文件路径。"

Once obtained, export it for the rest of the session:

export GANGTISE_TOKEN="<the token>"

Verify Connection

curl -s -o /dev/null -w "%{http_code}" http://39.96.218.64:8009/api/docs \
  -H "Authorization: Bearer $TOKEN"
# 200 = OK, 401 = token invalid

API Quick Reference

Endpoint Method Response Use Case
/api/search POST JSON 搜索研报/公告/纪要
/api/search/batch POST JSON 批量搜索多个主题
/api/ai/chat POST JSON/SSE AI 深度研究支持3种返回模式
/api/ai/chat/create-group GET JSON 创建会话(用于多轮对话)
/api/ai/indicator POST JSON 经济/行业指标数据查询
/api/docs GET JSON 完整接口文档

1. Knowledge Search — /api/search

Search broker reports, analyst opinions, company filings, meeting minutes.

curl -s http://39.96.218.64:8009/api/search \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "比亚迪",
    "top": 10,
    "time_range": "1m",
    "resource_types": ["BROKER_REPORT"]
  }'

Parameters:

  • query (required): Search keywords
  • top: 1-20, default 10
  • time_range: 1d 1w 1m 1q 6m 1y all (default 1m)
  • resource_types: Filter array, options:
    • BROKER_REPORT — 券商研报
    • INTERNAL_REPORT — 内部研报
    • ANALYST_OPINION — 首席观点
    • COMPANY_NOTICE — 公司公告
    • MEETING_MINUTES — 会议纪要
    • SURVEY_NOTES — 调研纪要
    • WEB_RESOURCE — 网络资源
    • INDUSTRY_OFFICIAL — 产业公众号

Response: {query, total, time_range, results: [{title, source, date, company, content, source_url, source_id}]}

Each result includes source_url for citation. Use [[n]](source_url) format in replies.

2. Batch Search — /api/search/batch

Search multiple topics at once (max 5).

curl -s http://39.96.218.64:8009/api/search/batch \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "queries": ["比亚迪", "宁德时代", "特斯拉"],
    "top": 5,
    "time_range": "1m"
  }'

Response: {total_queries, time_range, responses: [{query, total, results}]}

3. Agent Deep Research — /api/ai/chat

AI-powered deep analysis with multi-round thinking. Supports 3 return modes.

Response takes 30-120 seconds. Use stream="progress" mode for best LLM experience.

Returns lightweight SSE progress events during thinking, then final JSON result:

curl -s -N http://39.96.218.64:8009/api/ai/chat \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "比亚迪的投资逻辑",
    "forced_agent": "investment_logic",
    "stream": "progress",
    "thinking_detail": "summary"
  }' --max-time 200

Progress events arrive during processing, final result at end:

event: progress
data: {"phase":"think","round":1,"title":"识别问题","seq":1}

event: progress
data: {"phase":"answer","status":"generating"}

event: result
data: {"query":"...","answer":"...","thinking":[...],"usage":{"thinking_rounds":4,"answer_length":5041}}

To extract the final JSON result from progress mode:

curl -s -N ... --max-time 200 | grep '^data:' | tail -1 | sed 's/^data: //' | python3 -m json.tool

JSON Mode (simple, blocking)

Wait for complete result as pure JSON (no streaming):

curl -s http://39.96.218.64:8009/api/ai/chat \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "比亚迪的投资逻辑",
    "forced_agent": "investment_logic",
    "stream": false,
    "include_thinking": true,
    "thinking_detail": "summary"
  }' --max-time 200

Response: {query, group_id, answer, thinking, usage: {thinking_rounds, answer_length}}

Raw SSE Mode (for frontend streaming)

curl -s -N http://39.96.218.64:8009/api/ai/chat \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query": "比亚迪的投资逻辑", "forced_agent": "investment_logic", "stream": true}'

Parameters

  • query (required): Research question
  • stream: Return mode — true (raw SSE, default), false (JSON), "progress" (SSE progress + JSON result)
  • forced_agent: Force a specific agent (default: auto-select). See Agent Selection Guide above for routing logic.
  • include_thinking: Include thinking rounds in response (default true, only for non-raw modes)
  • thinking_detail: "full" (default) or "summary" (titles only, saves tokens)
  • group_id: Pass to maintain conversation context
  • include_search_types: Filter sources [10,20,40,50,60,70,80,90]
  • web_enable: Enable web search (default false)

4. Create Chat Group — /api/ai/chat/create-group

Create a session for multi-turn agent conversations.

curl -s http://39.96.218.64:8009/api/ai/chat/create-group \
  -H "Authorization: Bearer $TOKEN"

Response: {"group_id": 12345}

Pass group_id to subsequent /api/ai/chat calls for context continuity.

5. Indicator Query — /api/ai/indicator

Query macroeconomic data, industry statistics, company operating metrics.

curl -s http://39.96.218.64:8009/api/ai/indicator \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query": "比亚迪仰望销量"}'

Response: {reasoning_content: "...", content: "..."}

  • reasoning_content: Data retrieval process
  • content: Final result (often markdown tables)

Good queries: Company sales, GDP, CPI, PMI, battery installations, EV penetration, commodity prices.

Agent Selection Guide

Match user intent to the right agent. If uncertain, omit forced_agent — the upstream AI will auto-select.

User Intent (keywords) forced_agent What it does
投资逻辑、买入/卖出理由、多空分析、估值 investment_logic 梳理公司核心投资逻辑,分析多空因素
产业链、上下游、竞争格局、行业分析 industry_expert 拆解产业链结构,分析竞争格局和趋势
调研提纲、调研问题、尽调清单 investigation_outline 生成结构化调研问题清单
晨报、今日主题、板块速览、每日简报 theme_daily_report 生成主题/板块晨间简报
查找、搜索、最新研报、有什么消息 searcher 通用信息检索,适合开放性问题
销量、GDP、CPI、产量等具体数字 (use /api/ai/indicator instead)

Routing decision tree:

  1. User asks for specific numbers/data/api/ai/indicator (not agent chat)
  2. User asks for latest reports/news on a topic → /api/search or searcher
  3. User asks "why invest in X" / "X的投资逻辑"investment_logic
  4. User asks about supply chain / industry structureindustry_expert
  5. User asks to prepare for a company visitinvestigation_outline
  6. User asks for a morning briefing / theme summarytheme_daily_report
  7. Unclear → omit forced_agent, let upstream auto-select

Workflow Patterns

Pattern A: Quick Research

User asks about a company or topic → /api/search with relevant keywords → Synthesize results with citations.

Pattern B: Deep Analysis (with agent routing)

User wants deep analysis → Select forced_agent per Agent Selection Guide above → /api/ai/chat with stream="progress" → Present the final answer from event: result.

Example: "分析宁德时代的产业链" → forced_agent: "industry_expert" Example: "比亚迪值得买吗" → forced_agent: "investment_logic" Example: "帮我准备一份调研小鹏汽车的提纲" → forced_agent: "investigation_outline"

Pattern C: Data Query

User asks for specific metrics (sales, GDP, production) → /api/ai/indicator → Present the data table. Do NOT use agent chat for pure data queries.

Pattern D: Comparative Research

User wants to compare multiple companies → /api/search/batch with company names → Cross-reference results.

Pattern E: Multi-Turn Research

Create group → ask initial question → follow up with group_id for contextual conversation.

Pattern F: Combined Research

Complex questions often need multiple API calls:

  1. /api/ai/indicator for hard data (sales, financials)
  2. /api/ai/chat with investment_logic for qualitative analysis
  3. /api/search for latest broker reports as supporting evidence Synthesize all three into a comprehensive answer with citations.

Citation Format

When presenting search results, use this citation format:

In text: 比亚迪1月出口增45% [[1]](source_url)

At end:

## 参考来源
[1] 券商研报《标题》(日期) [查看原文](source_url)

Common Mistakes

Mistake Fix
Forgetting Bearer token Always include Authorization: Bearer $TOKEN
Using stream=true (raw SSE) for LLM Use stream="progress" or stream=false instead
Setting short timeout for agent_chat Allow 200s+ (--max-time 200) for deep research
Not passing group_id for follow-ups Create group first, reuse ID
Searching with overly broad queries Be specific: company name + topic
Including full thinking in responses Use thinking_detail="summary" to save tokens