1仕組みと動作原理
プロンプトによる指示ではなく実行可能スクリプトを中核に採用:インストール(install_gangtise.sh)、認証情報設定(configure_auth.sh)、診断(diagnose.sh)の3つの機能エントリはすべてbash/pythonスクリプトで実装されており、SKILL.mdはルーティングとドキュメントの役割のみを担います。
| 1. Install Gangtise skills (minimal default, workshop alias, full, or `--only` custom) | `scripts/install_gangtise.sh` | See `references/installation_flow.md` |
インストールの仕組み:Huawei Cloud OBS公式バケットから4つのzipパッケージをダウンロード → /tmpに一時展開 → 正規の配置先である ~/.local/share/gangtise-copilot/skills にコピー → 検出された各エージェント(claude-code/openclaw/codex)のskillsディレクトリにシンボリックリンクを作成。
BASE_URL="https://gts-download.obs.myhuaweicloud.com/skills"
認証情報管理の仕組み:単一の共有認証ファイル + スキルごとのシンボリックリンク。configure_auth.sh は accessKey/secretAccessKey を ~/.config/gangtise/authorization.json(mode 600)に書き込み、上流CLI用に ~/.GTS_AUTHORIZATION にベアトークンを保存し、インストール済み各スキルの scripts/.authorization に共有ファイルを指すシンボリックリンクを作成します。
AUTH_FILE="${XDG_CONFIG_DIR}/authorization.json" RUNTIME_TOKEN_FILE="$HOME/.GTS_AUTHORIZATION"
ライブ検証の仕組み:configure_auth.sh と diagnose.sh は認証情報をGangtiseのOAuthエンドポイントにPOSTしてトークンを取得します。diagnose はさらにそのトークンでRAGエンドポイントを叩き、機能レイヤーのアクティブ状態を確認します。応答は classify_response.py で分類されます(トークンやレスポンス本文は出力されません)。
AUTH_ENDPOINT="https://open.gangtise.com/application/auth/oauth/open/loginV2" RAG_ENDPOINT="https://open.gangtise.com/application/open-data/ai/search/knowledge_base"
価値層としての19スキル能力マトリクスルーティング:SKILL.mdには「データ層 6 + ワークフロー層 10 + ツール層 3」のレジストリが組み込まれており、ユーザーのデータに関する質問(Kライン/財務諸表/バリュエーション/アナリストレポート/チーフ見解/オピニオン比較など)を対応する上流スキルとrunnerへルーティングします。
Gangtise's 19 skills form a **two-dimensional matrix** (data tier × operation type) that is not clearly documented. Use this table to route a user question to the right skill
ラッパーの設計思想:上流ファイルを一切内部にベンダー(同梱)しない——リポジトリ内にはGangtiseのスキルコンテンツのコピーを保持せず、実行のたびに正規のOBS URLから現行バージョンを新規ダウンロードします。バグ修正は上流ファイルの直接変更ではなく、ランタイム修復(references/known_issues.md)で行います。
**Never vendor upstream files.** This skill directory contains no copy, fork, or excerpt of any Gangtise skill content.
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| network | 华为云 OBS 技能分发桶 |
| api | Gangtise OAuth loginV2(accessKey/secretAccessKey 换 Bearer token) |
| api | Gangtise RAG knowledge_base 语义检索(diagnose 能力层 liveness) |
| network | GitHub contents API(SKILL.md 回退下载法,非脚本默认路径) |
| cli | curl / unzip / python3 / git(脚本前置检查与执行工具) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトおよびコマンドの実行: scripts/install_gangtise.sh(bash、ダウンロード+解凍+インストール+シンボリックリンク作成)
- 网络端点: 外部ネットワークアクセスの宣言: curl による https://gts-download.obs.myhuaweicloud.com/skills/<bundle>.zip からのダウンロード(4パッケージ)
- 本地工作目录: ファイル読み書きおよび成果物出力: ~/.config/gangtise/authorization.json(mode 600)
5二重目の独立検証
- [ok] OBS 桶下载端点与 bundle 数量(19 技能/4 zip) — install_gangtise.sh BASE_URL 常量 + BUNDLES 数组(4 项,共 19 技能名)与 SKILL.md bundle map 一致;curl --fail -o + wc -c 大小门槛在源码中。
- [ok] 凭证读写在三个脚本中都真实存在 — configure_auth.sh 写 ~/.config/gangtise/authorization.json(600)+ ~/.GTS_AUTHORIZATION + live auth;diagnose.sh 读 authorization.json 的 accessKey/secretAccessKey 并 POST loginV2;均逐字可查。
- [ok] live 验证按 body shape(code==000000)而非 HTTP 码 — configure_auth.sh 'if echo "$response" | grep -q '"code":"000000"'' 与 credentials_setup.md『Gangtise returns HTTP 200 for both success and failure』一致。
- [ok] 诊断只读且不打印 token — diagnose.sh 无写文件语句;classify_response.py docstring『without printing tokens or response bodies』+ 字段白名单(http_status/code/errorType/traceId);tests 断言 'secret' 不出现在分类结果。
- [ok] wrapper 不 vendor 上游 + 上游内容不在本仓 — 目录 glob 无 gangtise-* 上游技能内容(仅 scripts/references/config-template/tests);SKILL.md『no copy, fork, or excerpt of any Gangtise skill content』成立。
- [ok] 安全反例搜索:是否有漏网端点/回调/混淆 — 全目录扫描仅 OBS、open.gangtise.com(loginV2 + knowledge_base + 文档中 skills-backend/open-quote 示例)、api.github.com(SKILL.md 回退法)、status.huaweicloud.com(文档链接);无遥测/无外发到第三方。
- [ok] 功能声明 vs 实际能力 — 『One-click install 19 official skills, configure accessKey/secretAccessKey, run health diagnostics』三项分别对应 install/configure/diagnose 脚本 + SKILL 路由;最小化 preset 规避 ISSUE-007 的说明与 known_issues.md 复现证据一致。
- [ok] 元数据(commit/license/stars) — 本地 HEAD == pin d5c4678cb5d4fd6acc9c922690df035dbd33d247;GitHub API:MIT、stars 1385(2026-09-09 实采)、pushed_at 2026-09-09T12:33:29Z。
6結論
7ba5dccf4fc1c4ad…