paper-search-cli 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +2 -6
- package/README.md +147 -653
- package/README.zh.md +268 -0
- package/dist/cli.js +180 -21
- package/dist/cli.js.map +1 -1
- package/dist/config/ConfigService.d.ts +1 -1
- package/dist/config/ConfigService.d.ts.map +1 -1
- package/dist/config/ConfigService.js +1 -3
- package/dist/config/ConfigService.js.map +1 -1
- package/dist/config/ResultCaps.d.ts +4 -0
- package/dist/config/ResultCaps.d.ts.map +1 -0
- package/dist/config/ResultCaps.js +10 -0
- package/dist/config/ResultCaps.js.map +1 -0
- package/dist/core/capabilityProfile.d.ts +18 -0
- package/dist/core/capabilityProfile.d.ts.map +1 -0
- package/dist/core/capabilityProfile.js +153 -0
- package/dist/core/capabilityProfile.js.map +1 -0
- package/dist/core/diagnostics.js +16 -16
- package/dist/core/diagnostics.js.map +1 -1
- package/dist/core/liveSmoke.d.ts +42 -0
- package/dist/core/liveSmoke.d.ts.map +1 -0
- package/dist/core/liveSmoke.js +226 -0
- package/dist/core/liveSmoke.js.map +1 -0
- package/dist/core/platformMetadata.js +2 -2
- package/dist/core/platformMetadata.js.map +1 -1
- package/dist/core/schemas.d.ts +50 -1
- package/dist/core/schemas.d.ts.map +1 -1
- package/dist/core/schemas.js +44 -3
- package/dist/core/schemas.js.map +1 -1
- package/dist/core/textReports.d.ts +21 -0
- package/dist/core/textReports.d.ts.map +1 -0
- package/dist/core/textReports.js +85 -0
- package/dist/core/textReports.js.map +1 -0
- package/dist/core/tools.d.ts.map +1 -1
- package/dist/core/tools.js +6 -1
- package/dist/core/tools.js.map +1 -1
- package/dist/platforms/CORESearcher.d.ts.map +1 -1
- package/dist/platforms/CORESearcher.js +39 -9
- package/dist/platforms/CORESearcher.js.map +1 -1
- package/dist/platforms/OpenAIRESearcher.js +1 -1
- package/dist/platforms/OpenAIRESearcher.js.map +1 -1
- package/dist/services/JournalMetricsService.js +1 -1
- package/dist/services/JournalMetricsService.js.map +1 -1
- package/dist/skills/SkillInstaller.d.ts +108 -0
- package/dist/skills/SkillInstaller.d.ts.map +1 -0
- package/dist/skills/SkillInstaller.js +389 -0
- package/dist/skills/SkillInstaller.js.map +1 -0
- package/package.json +2 -2
- package/skills/paper-search/SKILL.md +50 -143
- package/skills/paper-search/references/capability-routing.md +134 -0
- package/skills/paper-search/references/cli-contract.md +133 -0
- package/skills/paper-search/references/management-layer.md +139 -0
- package/README-sc.md +0 -766
|
@@ -7,162 +7,95 @@ description: |
|
|
|
7
7
|
使用 Semantic Scholar Open Access snippet 索引检索论文正文片段中的方法学细节,
|
|
8
8
|
以及通过 EasyScholar 查询期刊影响因子、JCR/SSCI 分区、中科院分区、JCI、ESI、预警和等级指标。
|
|
9
9
|
当用户提到“搜文献”“找论文”“文献检索”“search papers”“find papers”“literature search”
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
“查一下有没有相关研究”“帮我找几篇参考文献”“看看别人怎么做的”“别人怎么写”
|
|
11
|
+
“Methods 里怎么做的”“Methods 写法”“方法学写法对照”“下载论文 PDF”
|
|
12
|
+
“验证 PMID”“验证 DOI”“正文片段检索”“snippet search”“方法学细节检索”
|
|
13
|
+
“影响因子”“IF”“JCR 分区”“中科院分区”“期刊分区”“期刊等级”
|
|
14
|
+
“目标期刊指标”“journal metrics”等任务时使用。
|
|
14
15
|
此 skill 只负责指导 agent 调用 paper-search CLI;API key 必须通过 paper-search setup、
|
|
15
16
|
paper-search config、.env 或环境变量配置,绝不要写入 Skill 文件。
|
|
16
17
|
---
|
|
17
18
|
|
|
18
19
|
# Paper Search CLI
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
你是学术文献检索调度器。本 Skill 是 Routing Skill:负责把用户意图路由到 `paper-search` CLI,并维护证据、密钥和下载边界。优先通过 `paper-search` CLI 完成论文检索、元数据核验、正文片段检索、期刊指标查询和 PDF 获取;不要把本 Skill 当作密钥、cookie、账号或下载策略的存储位置。
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
Reference 读取规则:
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
- 需要确认安装、配置、doctor、smoke、Skill 同步或健康状态时,读 `references/management-layer.md`。
|
|
26
|
+
- 需要在搜索、期刊指标、PDF 获取、正文片段检索之间做路由时,读 `references/capability-routing.md`。
|
|
27
|
+
- 需要核对稳定 CLI 命令、`paper-search run` 工具名、输出格式或密钥边界时,读 `references/cli-contract.md`。
|
|
28
|
+
- 如果 reference 和实际 `paper-search --help` / `paper-search tools` 冲突,以实际 CLI 为准,并报告需要更新 Skill。
|
|
25
29
|
|
|
26
|
-
|
|
27
|
-
command -v paper-search
|
|
28
|
-
paper-search status --pretty
|
|
29
|
-
```
|
|
30
|
+
## 快速自检
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
第一次使用、环境不确定,或用户问“现在能用哪些能力”时:
|
|
32
33
|
|
|
33
34
|
```bash
|
|
34
|
-
paper-search
|
|
35
|
+
command -v paper-search
|
|
36
|
+
paper-search doctor --pretty
|
|
35
37
|
```
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
需要给用户一份可读健康报告时:
|
|
38
40
|
|
|
39
41
|
```bash
|
|
40
|
-
paper-search
|
|
41
|
-
paper-search config set SEMANTIC_SCHOLAR_API_KEY your_key
|
|
42
|
-
paper-search setup EASYSCHOLAR_KEY
|
|
43
|
-
paper-search config doctor --pretty
|
|
42
|
+
paper-search doctor --format text
|
|
44
43
|
```
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
1. shell 环境变量
|
|
49
|
-
2. 当前目录 `.env`
|
|
50
|
-
3. 用户级配置 `~/.config/paper-search-cli/config.json`
|
|
51
|
-
4. 免费来源的内置默认值
|
|
52
|
-
|
|
53
|
-
## 安装缺失时
|
|
54
|
-
|
|
55
|
-
如果 `paper-search` 不存在,先告知用户需要安装。用户要求你安装时再执行:
|
|
45
|
+
安装缺失时先说明缺失;用户要求安装时再执行:
|
|
56
46
|
|
|
57
47
|
```bash
|
|
58
48
|
npm install -g paper-search-cli
|
|
59
49
|
paper-search setup
|
|
60
|
-
paper-search
|
|
50
|
+
paper-search doctor --pretty
|
|
61
51
|
```
|
|
62
52
|
|
|
63
|
-
|
|
53
|
+
用户问“如何更新”、安装后怀疑 Skill 过期,或 `doctor`/`skills status` 显示 Skill 不同步时,先区分包本体更新和 Skill 同步;不要只运行 `skills update`。完整流程查看 `references/management-layer.md` 的 `Package Update And Capability Setup`。
|
|
64
54
|
|
|
65
|
-
|
|
55
|
+
普通用户更新:
|
|
66
56
|
|
|
67
57
|
```bash
|
|
68
|
-
|
|
69
|
-
paper-search
|
|
70
|
-
paper-search
|
|
71
|
-
paper-search search "graph neural networks" --platform dblp --max-results 5 --pretty
|
|
72
|
-
paper-search search "large language models" --platform openreview --max-results 5 --pretty
|
|
58
|
+
npm install -g paper-search-cli@latest
|
|
59
|
+
paper-search skills update --targets agents --pretty
|
|
60
|
+
paper-search doctor --pretty
|
|
73
61
|
```
|
|
74
62
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
### 精确工具调用
|
|
63
|
+
本地维护者更新:
|
|
78
64
|
|
|
79
65
|
```bash
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
paper-search
|
|
66
|
+
git pull
|
|
67
|
+
npm install
|
|
68
|
+
npm run build
|
|
69
|
+
npm install -g .
|
|
70
|
+
paper-search skills update --targets agents --pretty
|
|
71
|
+
paper-search doctor --pretty
|
|
85
72
|
```
|
|
86
73
|
|
|
87
|
-
|
|
74
|
+
缺少 API key 或 email 时,不要让用户在聊天里发送密钥;提示用户用 `paper-search setup` 或 `paper-search config` 在本机配置。
|
|
88
75
|
|
|
89
|
-
|
|
90
|
-
paper-search run search_semantic_scholar --json-args '{"query":"graph neural network medicine","maxResults":5,"year":"2020-2025"}' --pretty
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### 期刊指标查询
|
|
94
|
-
|
|
95
|
-
当用户询问影响因子、JCR/SSCI 分区、中科院分区、JCI、ESI、预警、北大核心、南大核心、CSCD、A&HCI、CCF、EI 或目标期刊等级时,使用 EasyScholar 原生 CLI 工具,而不是通用论文检索。
|
|
96
|
-
|
|
97
|
-
```bash
|
|
98
|
-
paper-search journal-metrics "Nature" "BMJ" --pretty
|
|
99
|
-
paper-search journal-metrics --file journals.txt --include-raw --pretty
|
|
100
|
-
paper-search run query_journal_metrics --json-args '{"journals":["Nature"],"includeRaw":true}' --pretty
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
返回时优先解释标准化的 `core` 字段:`impact_factor`、`impact_factor_5y`、`jcr_quartile`、`ssci_quartile`、`jci`、`cas_base`、`cas_upgraded`、`cas_small`、`cas_top`、`cas_zone`、`esi`、`warning`、`pku`、`cssci`、`cscd`、`ahci`、`ccf`、`ei`、`china_st_core`。如果需要完整字段,使用 `--include-raw` 并检查 `official_all`、`official_select`、`custom_rank`。
|
|
104
|
-
|
|
105
|
-
EasyScholar 文档要求每秒最多 2 次请求;批量查询时不要并发调用。
|
|
76
|
+
## 功能地图
|
|
106
77
|
|
|
107
|
-
|
|
78
|
+
本 Skill 只有四个文献主功能。`doctor`、`smoke`、`config`、`skills` 是管理层命令,不属于文献任务本身。
|
|
108
79
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
paper-search
|
|
112
|
-
paper-search
|
|
113
|
-
|
|
80
|
+
| 用户意图 | 能力名 | 首选入口 | 关键边界 |
|
|
81
|
+
|---|---|---|---|
|
|
82
|
+
| 搜论文、找相关研究、验证 DOI/PMID、做文献初筛 | `metadata_search` | `paper-search search` 集成入口 / `paper-search run search_*` 精确工具入口 | 只返回和核验论文元数据;Sci-Hub 不属于搜索源 |
|
|
83
|
+
| 查影响因子、JCR/SSCI/中科院分区、JCI、ESI、预警、期刊等级 | `journal_metrics` | `paper-search journal-metrics` / `paper-search run query_journal_metrics` | 这是期刊指标查询,不是论文检索;需要 `EASYSCHOLAR_KEY` |
|
|
84
|
+
| 获取或下载已确认论文的 PDF | `pdf_discovery` | `paper-search download` / `paper-search run download_with_fallback` | 先核验论文身份,再下载;Sci-Hub 是默认开启的最后 fallback |
|
|
85
|
+
| 在论文正文片段中找 Methods/参数/写法线索 | `body_snippet_search` | `paper-search run search_semantic_snippets` | 查 Semantic Scholar OA snippet 索引;需要 `SEMANTIC_SCHOLAR_API_KEY`;不是完整全文解析 |
|
|
114
86
|
|
|
115
|
-
|
|
87
|
+
## 默认工作流
|
|
116
88
|
|
|
117
|
-
|
|
89
|
+
开放式文献任务使用 Two-Stage Paper Workflow:
|
|
118
90
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
| 生物医学、临床、药学、公卫 | `pubmed` | `pmc`, `europepmc`, `semantic`, `crossref` |
|
|
122
|
-
| 正文方法学片段 | `search_semantic_snippets` | 先用 `pubmed`/`semantic` 找题名和同义词 |
|
|
123
|
-
| 计算机、AI、数学、物理 | `arxiv` | `semantic`, `crossref`, `openalex` |
|
|
124
|
-
| 计算机文献目录/会议元数据 | `dblp` | `acm`, `usenix`, `openreview`, `ieee` 需要 key |
|
|
125
|
-
| 跨学科广覆盖 | `crossref` | `openalex`, `semantic` |
|
|
126
|
-
| 开放获取全文发现 | `pmc`, `europepmc`, `core`, `openaire`, `unpaywall` | `download_with_fallback` |
|
|
127
|
-
| 期刊影响因子/分区/等级 | `journal-metrics` | `query_journal_metrics` |
|
|
128
|
-
| 密码学 | `iacr` | `arxiv` |
|
|
129
|
-
| 引用统计排序 | `semantic`, `crossref`, `openalex` | `webofscience`, `scopus` 需要 key |
|
|
130
|
-
| 出版商/付费数据库 | `webofscience`, `ieee`, `scopus`, `sciencedirect`, `springer`/`springerlink`, `wiley` | 仅在 key 已配置时使用 |
|
|
91
|
+
1. 先做 `metadata_search`:检索和核验文献条目,确认题名、作者、年份、期刊、DOI、PMID/PMCID、URL、摘要线索和相关性。
|
|
92
|
+
2. 用户确认条目或任务明确需要 PDF 后,再做 `pdf_discovery`:下载选中的已核验条目;下载失败项记录原因,不阻塞其他条目。
|
|
131
93
|
|
|
132
|
-
|
|
94
|
+
Direct Paper Request 可以跳过广泛发现:用户给出单个 DOI、PMID、PMCID、arXiv ID 或已核验清单并明确要求下载时,先核验目标身份,再进入下载。
|
|
133
95
|
|
|
134
|
-
|
|
135
|
-
- `usenix` 通过 DBLP 返回 USENIX 相关会议/期刊元数据,不抓取 USENIX 搜索页。
|
|
136
|
-
- `springerlink` 是 `springer` 的别名,仍需要 Springer API key。
|
|
96
|
+
## 验证与输出边界
|
|
137
97
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
- 默认把中文问题转为英文关键词。
|
|
141
|
-
- 用 3-8 个核心概念词,不要写成长句。
|
|
142
|
-
- 医学主题可加入 MeSH 或标准术语。
|
|
143
|
-
- 找方法细节时加入软件名、参数名、模型名、章节词,例如 `methods`, `statistical analysis`, `adjusted for`, `bootstrap`, `sensitivity analysis`。
|
|
144
|
-
|
|
145
|
-
## 正文片段检索
|
|
146
|
-
|
|
147
|
-
PubMed 只提供题名、作者、摘要、PMID、DOI、期刊和年份等元数据,不提供论文正文抓取。
|
|
148
|
-
|
|
149
|
-
正文片段检索使用:
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
paper-search run search_semantic_snippets --arg query="CMAverse mediation bootstrap confidence interval" --arg limit=5 --arg fieldsOfStudy=Medicine --pretty
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
使用规则:
|
|
156
|
-
|
|
157
|
-
1. 该工具需要 `SEMANTIC_SCHOLAR_API_KEY`。
|
|
158
|
-
2. 它检索 Semantic Scholar Open Access snippet 索引,不等于完整全文解析。
|
|
159
|
-
3. 只有 `snippetKind="body"` 的结果才能作为正文片段证据;`title` 或 `abstract` 只能作为线索。
|
|
160
|
-
4. 输出正文片段前,必须补齐和核验标题、作者、年份、期刊、DOI 或 PMID。
|
|
161
|
-
5. 如果 snippet 无结果,不代表研究不存在;回退到 `search_pubmed`、`search_semantic_scholar` 或 `search_crossref` 做摘要级检索。
|
|
162
|
-
|
|
163
|
-
## 验证规范
|
|
164
|
-
|
|
165
|
-
输出给用户前,关键论文必须尽量验证:
|
|
98
|
+
关键论文输出前尽量验证:
|
|
166
99
|
|
|
167
100
|
```bash
|
|
168
101
|
paper-search run search_pubmed --arg query="37654321[PMID]" --arg maxResults=1 --pretty
|
|
@@ -173,36 +106,11 @@ paper-search run search_crossref --arg query="full paper title" --arg maxResults
|
|
|
173
106
|
规则:
|
|
174
107
|
|
|
175
108
|
- 不凭模型记忆编造 PMID、DOI、期刊、年份或作者。
|
|
176
|
-
- PMID 必须能被 PubMed
|
|
177
|
-
- DOI 必须能被 DOI 查询或 Crossref/OpenAlex/Semantic Scholar 结果支持。
|
|
109
|
+
- PMID 必须能被 PubMed 查询确认;DOI 必须能被 DOI 查询或 Crossref/OpenAlex/Semantic Scholar 结果支持。
|
|
178
110
|
- 同一论文的 PMID、DOI、题名、第一作者和年份应一致;不一致时标记为可疑。
|
|
179
|
-
-
|
|
180
|
-
|
|
181
|
-
## 输出格式
|
|
182
|
-
|
|
183
|
-
### 文献列表
|
|
184
|
-
|
|
185
|
-
```markdown
|
|
186
|
-
| # | 标题 | 作者 | 年份 | 期刊/来源 | DOI | PMID | 验证 |
|
|
187
|
-
|---|---|---|---:|---|---|---|---|
|
|
188
|
-
| 1 | [Title](URL) | First Author et al. | 2024 | Journal | 10.xxxx/xxxxx | 12345678 | 已验证 |
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
### 正文片段结果
|
|
192
|
-
|
|
193
|
-
```markdown
|
|
194
|
-
### 发现 1
|
|
195
|
-
|
|
196
|
-
**论文:** Full paper title
|
|
197
|
-
**引用:** Author et al. Journal. Year. DOI/PMID.
|
|
198
|
-
**片段类型:** body
|
|
199
|
-
**章节:** Methods / Statistical Analysis
|
|
200
|
-
**来源:** Semantic Scholar URL
|
|
201
|
-
|
|
202
|
-
> snippet text
|
|
203
|
-
```
|
|
111
|
+
- `config` / `doctor` 输出应视为已脱敏,但不要复述、保存或写入任何原始密钥。
|
|
204
112
|
|
|
205
|
-
##
|
|
113
|
+
## 常见失败处理
|
|
206
114
|
|
|
207
115
|
| 场景 | 处理 |
|
|
208
116
|
|---|---|
|
|
@@ -210,7 +118,6 @@ paper-search run search_crossref --arg query="full paper title" --arg maxResults
|
|
|
210
118
|
| API key 缺失 | 提示运行 `paper-search setup`;不要索要或保存 key |
|
|
211
119
|
| EasyScholar key 缺失 | 提示运行 `paper-search setup EASYSCHOLAR_KEY`;不要让用户在聊天中发送 SecretKey |
|
|
212
120
|
| 429 限流 | 降低 `--max-results`,换平台,或提示配置可选 key |
|
|
213
|
-
| EasyScholar 批量查询 | 控制在每秒最多 2 次请求;优先使用单次 `journal-metrics` 多期刊输入,不要并发 |
|
|
214
121
|
| 0 结果 | 放宽关键词,换英文同义词,换平台,或用 `--sources` 扩展 |
|
|
215
122
|
| 下载失败 | 优先开放获取来源和 `download_with_fallback`,报告失败原因 |
|
|
216
123
|
| 用户要求完整正文 | 先下载 PDF;再交给当前环境可用的 PDF/MinerU 解析流程 |
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Capability Routing Reference
|
|
2
|
+
|
|
3
|
+
Use this reference when mapping a user literature request to one of the four main `paper-search` workflow capabilities.
|
|
4
|
+
|
|
5
|
+
## Functional Map
|
|
6
|
+
|
|
7
|
+
| User Intent | Capability | Preferred Entrypoint | Boundary |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| Search papers, find related work, verify DOI/PMID, screen literature | `metadata_search` | `paper-search search` integrated entrypoint / `paper-search run search_*` precise tool entrypoint | Returns and verifies paper metadata only; Sci-Hub is not a search source |
|
|
10
|
+
| Query impact factor, JCR/SSCI/CAS quartiles, JCI, ESI, warnings, journal rank | `journal_metrics` | `paper-search journal-metrics` / `paper-search run query_journal_metrics` | Journal-level lookup, not paper search; requires `EASYSCHOLAR_KEY` |
|
|
11
|
+
| Get or download a verified paper PDF | `pdf_discovery` | `paper-search download` / `paper-search run download_with_fallback` | Verify identity before download; Sci-Hub is the default enabled final fallback |
|
|
12
|
+
| Find Methods text, parameters, software, models, or statistical wording in body snippets | `body_snippet_search` | `paper-search run search_semantic_snippets` | Searches Semantic Scholar OA snippet index; requires `SEMANTIC_SCHOLAR_API_KEY`; not full-text parsing |
|
|
13
|
+
|
|
14
|
+
## Workflow Boundaries
|
|
15
|
+
|
|
16
|
+
Open-ended literature tasks use the Two-Stage Paper Workflow:
|
|
17
|
+
|
|
18
|
+
1. Run `metadata_search`: build and verify a paper list with title, authors, year, journal/source, DOI, PMID/PMCID, URL, abstract clues, and relevance.
|
|
19
|
+
2. Run `pdf_discovery` only after the user confirms selected papers or the task explicitly requires PDFs. Record failed downloads without blocking other items.
|
|
20
|
+
|
|
21
|
+
Direct Paper Requests may skip broad discovery when the user provides a DOI, PMID, PMCID, arXiv ID, or already verified paper list. The target identity still needs verification before download.
|
|
22
|
+
|
|
23
|
+
Do not fabricate PMID, DOI, title, author, journal, or year from model memory. Important citations should include the supported claim, title, authors, journal/source, year, DOI or PMID when available, and a stable URL.
|
|
24
|
+
|
|
25
|
+
## Metadata Search
|
|
26
|
+
|
|
27
|
+
Use `metadata_search` for finding papers, expanding keywords, literature screening, and verifying DOI/PMID/PMCID/arXiv ID.
|
|
28
|
+
|
|
29
|
+
`paper-search search` is the integrated metadata entrypoint:
|
|
30
|
+
|
|
31
|
+
- use `--platform NAME` for one source
|
|
32
|
+
- use `--sources a,b,c` for explicit multi-source search
|
|
33
|
+
- use `--platform all` or `--sources all` only when broad recall matters more than precision
|
|
34
|
+
|
|
35
|
+
It does not call `journal_metrics`, `pdf_discovery`, or `body_snippet_search`.
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
paper-search search "machine learning" --platform crossref --max-results 5 --pretty
|
|
39
|
+
paper-search search "osteoarthritis occupational exposure" --platform pubmed --max-results 10 --pretty
|
|
40
|
+
paper-search search "transformer attention mechanism" --sources arxiv,semantic,crossref --max-results 5 --pretty
|
|
41
|
+
paper-search search "causal inference target trial emulation" --sources all --max-results 5 --pretty
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Precise tool entrypoints:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
paper-search run search_pubmed --arg query="osteoarthritis occupational exposure" --arg maxResults=10 --pretty
|
|
48
|
+
paper-search run search_openalex --arg query="causal inference target trial emulation" --arg maxResults=5 --pretty
|
|
49
|
+
paper-search run get_paper_by_doi --arg doi="10.xxxx/xxxxx" --pretty
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Do not treat `search_scihub` as a search source. It is DOI/URL-targeted lookup, not `metadata_search`.
|
|
53
|
+
|
|
54
|
+
## Journal Metrics
|
|
55
|
+
|
|
56
|
+
Use `journal_metrics` for journal-level metrics: impact factor, JCR/SSCI quartiles, CAS quartiles, JCI, ESI, warnings, and rank.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
paper-search journal-metrics "Nature" "BMJ" --pretty
|
|
60
|
+
paper-search journal-metrics --file journals.txt --include-raw --pretty
|
|
61
|
+
paper-search run query_journal_metrics --json-args '{"journals":["Nature"],"includeRaw":true}' --pretty
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`journal_metrics` requires `EASYSCHOLAR_KEY`. If missing, tell the user to configure it locally:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
paper-search setup EASYSCHOLAR_KEY
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
For batch journal lookups, prefer one `journal-metrics` call with multiple journal names or `--file`; do not run parallel EasyScholar requests.
|
|
71
|
+
|
|
72
|
+
## PDF Discovery
|
|
73
|
+
|
|
74
|
+
Use `pdf_discovery` to get an already verified paper PDF. For open-ended literature tasks, do not begin with batch downloads.
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
paper-search download 2301.12345 --platform arxiv --save-path ./downloads --pretty
|
|
78
|
+
paper-search run download_paper --arg paperId="10.xxxx/xxxxx" --arg platform=springer --arg savePath="./downloads" --pretty
|
|
79
|
+
paper-search run download_with_fallback --json-args '{"source":"crossref","paperId":"10.xxxx/xxxxx","doi":"10.xxxx/xxxxx","title":"Paper title","savePath":"./downloads"}' --pretty
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`download_with_fallback` order:
|
|
83
|
+
|
|
84
|
+
1. source-native download
|
|
85
|
+
2. metadata PDF URL
|
|
86
|
+
3. repository discovery through PMC, Europe PMC, CORE, OpenAIRE
|
|
87
|
+
4. Unpaywall DOI resolution
|
|
88
|
+
5. Sci-Hub as the final fallback
|
|
89
|
+
|
|
90
|
+
Sci-Hub Fallback is enabled by default. To suppress that final stage for one request:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
paper-search run download_with_fallback --json-args '{"source":"crossref","paperId":"10.xxxx/xxxxx","doi":"10.xxxx/xxxxx","title":"Paper title","savePath":"./downloads","useSciHub":false}' --pretty
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
PDF source groups:
|
|
97
|
+
|
|
98
|
+
- `open_access_sources`: arXiv, bioRxiv, medRxiv, PMC, Europe PMC, CORE, OpenAIRE, Unpaywall, OpenAlex OA metadata, Semantic Scholar openAccessPdf, publisher open-access modes, IACR
|
|
99
|
+
- `entitled_access_sources`: Web of Science, ScienceDirect, Scopus, Springer, IEEE, Wiley TDM, or other sources requiring user keys, subscriptions, TDM tokens, or institutional entitlements
|
|
100
|
+
- `scihub_sources`: Sci-Hub, separately identified as the default enabled final fallback; not OA and not entitled access
|
|
101
|
+
|
|
102
|
+
## Body Snippet Search
|
|
103
|
+
|
|
104
|
+
Use `body_snippet_search` to find Methods wording, parameters, software names, model descriptions, statistical analysis text, or similar body-snippet clues.
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
paper-search run search_semantic_snippets --arg query="comparative risk assessment methods uncertainty propagation" --arg limit=5 --arg fieldsOfStudy=Medicine --pretty
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
`search_semantic_snippets` requires `SEMANTIC_SCHOLAR_API_KEY` and uses `limit`, not `maxResults`.
|
|
111
|
+
|
|
112
|
+
Only results with `snippetKind="body"` can be used as body-snippet evidence. Results from `title` or `abstract` are clues only. Before quoting or relying on a snippet, verify title, authors, year, journal/source, DOI or PMID.
|
|
113
|
+
|
|
114
|
+
## Platform Selection
|
|
115
|
+
|
|
116
|
+
| Task | First Choice | Supplements |
|
|
117
|
+
|---|---|---|
|
|
118
|
+
| Biomedical, clinical, pharmaceutical, public health | `pubmed` | `pmc`, `europepmc`, `semantic`, `crossref` |
|
|
119
|
+
| Methods/body snippet clues | `search_semantic_snippets` | Use `pubmed`/`semantic` first for titles and synonyms |
|
|
120
|
+
| Computer science, AI, math, physics | `arxiv` | `semantic`, `crossref`, `openalex` |
|
|
121
|
+
| CS bibliographies and conference metadata | `dblp` | `acm`, `usenix`, `openreview`, `ieee` requires key |
|
|
122
|
+
| Cross-disciplinary coverage | `crossref` | `openalex`, `semantic` |
|
|
123
|
+
| Open-access full-text discovery | `pmc`, `europepmc`, `core`, `openaire`, `unpaywall` | `download_with_fallback` |
|
|
124
|
+
| Journal IF/quartiles/rank | `journal-metrics` | `query_journal_metrics` |
|
|
125
|
+
| Cryptography | `iacr` | `arxiv` |
|
|
126
|
+
| Citation-count sorting | `semantic`, `crossref`, `openalex` | `webofscience`, `scopus` require keys |
|
|
127
|
+
| Publisher or paid databases | `webofscience`, `ieee`, `scopus`, `sciencedirect`, `springer`/`springerlink`, `wiley` | Use only when key is configured |
|
|
128
|
+
|
|
129
|
+
## Query Construction
|
|
130
|
+
|
|
131
|
+
- Translate Chinese research questions into English keywords by default.
|
|
132
|
+
- Use 3-8 core concept terms rather than long sentences.
|
|
133
|
+
- For medical topics, include MeSH or standard terminology when useful.
|
|
134
|
+
- For method details, include software names, parameter names, model names, or section words such as `methods`, `statistical analysis`, `adjusted for`, `bootstrap`, `sensitivity analysis`.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Paper Search CLI Contract
|
|
2
|
+
|
|
3
|
+
This contract records the stable CLI surface that the `paper-search` Routing Skill may rely on. The Routing Skill should stay short and should not describe commands, flags, or defaults that are absent from this contract and the current CLI.
|
|
4
|
+
|
|
5
|
+
## Entrypoints
|
|
6
|
+
|
|
7
|
+
- `paper-search` is the primary executable.
|
|
8
|
+
- `paper-search --version`, `paper-search -v`, and `paper-search version` print the installed version.
|
|
9
|
+
- `paper-search --help` and `paper-search help` print usage.
|
|
10
|
+
- `paper-search tools --pretty` lists direct `run` tool names and schemas.
|
|
11
|
+
- Private API keys, emails, and tokens must be configured through `paper-search setup`, `paper-search config`, `.env`, or shell environment variables. They must not be written into Skill files.
|
|
12
|
+
|
|
13
|
+
## Top-Level Commands
|
|
14
|
+
|
|
15
|
+
- `paper-search search <query> [--platform NAME] [--sources CSV] [--max-results N] [--year YEAR] [--pretty]`
|
|
16
|
+
- `paper-search run <tool-name> --arg key=value --json-args '{"key":"value"}' [--pretty]`
|
|
17
|
+
- `paper-search download <paper-id> --platform NAME [--save-path PATH] [--pretty]`
|
|
18
|
+
- `paper-search journal-metrics <journal...> [--file PATH] [--include-raw] [--pretty]`
|
|
19
|
+
- `paper-search metrics ...` is an alias for `journal-metrics`.
|
|
20
|
+
- `paper-search status [--validate] [--pretty]`
|
|
21
|
+
- `paper-search doctor [--validate] [--format text] [--pretty]`
|
|
22
|
+
- `paper-search smoke --mock [--pretty]`
|
|
23
|
+
- `paper-search smoke --live [--pretty]`
|
|
24
|
+
- `paper-search skills status [--targets CSV] [--pretty]`
|
|
25
|
+
- `paper-search skills diff [--targets CSV] [--format text] [--pretty]`
|
|
26
|
+
- `paper-search skills update [--targets CSV] [--pretty]`
|
|
27
|
+
- `paper-search setup [--all] [--keys CSV] [--install-skills CSV] [--skip-skills]`
|
|
28
|
+
- `paper-search tools [--pretty]`
|
|
29
|
+
- `paper-search diagnostics [--pretty]`
|
|
30
|
+
- `paper-search requirements [--pretty]` is an alias for `diagnostics`.
|
|
31
|
+
- `paper-search config init [--pretty]`
|
|
32
|
+
- `paper-search config path [--pretty]`
|
|
33
|
+
- `paper-search config keys [--pretty]`
|
|
34
|
+
- `paper-search config list [--all] [--pretty]`
|
|
35
|
+
- `paper-search config doctor [--pretty]` is a compatibility config summary; use top-level `doctor` for the full health report.
|
|
36
|
+
- `paper-search config get KEY [--raw] [--pretty]`
|
|
37
|
+
- `paper-search config set KEY VALUE [--pretty]`
|
|
38
|
+
- `paper-search config unset KEY [--pretty]`
|
|
39
|
+
- `paper-search config delete KEY [--pretty]` and `paper-search config remove KEY [--pretty]` are aliases for `unset`.
|
|
40
|
+
- `paper-search config import-env [file] [--pretty]`
|
|
41
|
+
|
|
42
|
+
## Direct Run Tools
|
|
43
|
+
|
|
44
|
+
These names can be used with `paper-search run <tool-name>`:
|
|
45
|
+
|
|
46
|
+
- `search_papers`
|
|
47
|
+
- `search_arxiv`
|
|
48
|
+
- `search_webofscience`
|
|
49
|
+
- `search_pubmed`
|
|
50
|
+
- `search_biorxiv`
|
|
51
|
+
- `search_medrxiv`
|
|
52
|
+
- `search_semantic_scholar`
|
|
53
|
+
- `search_semantic_snippets`
|
|
54
|
+
- `search_iacr`
|
|
55
|
+
- `download_paper`
|
|
56
|
+
- `search_google_scholar`
|
|
57
|
+
- `get_paper_by_doi`
|
|
58
|
+
- `search_scihub`
|
|
59
|
+
- `check_scihub_mirrors`
|
|
60
|
+
- `get_platform_status`
|
|
61
|
+
- `query_journal_metrics`
|
|
62
|
+
- `search_sciencedirect`
|
|
63
|
+
- `search_springer`
|
|
64
|
+
- `search_wiley`
|
|
65
|
+
- `search_scopus`
|
|
66
|
+
- `search_crossref`
|
|
67
|
+
- `search_openalex`
|
|
68
|
+
- `search_unpaywall`
|
|
69
|
+
- `search_pmc`
|
|
70
|
+
- `search_europepmc`
|
|
71
|
+
- `search_core`
|
|
72
|
+
- `search_openaire`
|
|
73
|
+
- `download_with_fallback`
|
|
74
|
+
- `search_dblp`
|
|
75
|
+
- `search_ieee`
|
|
76
|
+
- `search_acm`
|
|
77
|
+
- `search_usenix`
|
|
78
|
+
- `search_openreview`
|
|
79
|
+
- `search_springerlink`
|
|
80
|
+
|
|
81
|
+
## Output Expectations
|
|
82
|
+
|
|
83
|
+
- JSON is the default machine-readable output for agent and script callers.
|
|
84
|
+
- `--pretty` pretty-prints JSON.
|
|
85
|
+
- `--format text` is supported by top-level `doctor` and `skills diff` for explicitly requested human-readable reports.
|
|
86
|
+
- `--include-text` keeps raw tool response text in JSON for commands where the CLI supports it.
|
|
87
|
+
- The Routing Skill should parse JSON when making decisions and use text format only when the user needs a readable report.
|
|
88
|
+
|
|
89
|
+
## Search Command Contract
|
|
90
|
+
|
|
91
|
+
- `paper-search search` is the integrated metadata search entrypoint.
|
|
92
|
+
- Use `--platform NAME` for one source and `--sources a,b,c` for explicit multi-source search.
|
|
93
|
+
- Use `--platform all` or `--sources all` only when broad recall matters more than precision.
|
|
94
|
+
- `search_papers` is the direct tool behind the integrated `search` command.
|
|
95
|
+
- `search_semantic_snippets` uses `limit`, not `maxResults`, and is for body/title/abstract snippets rather than complete full text.
|
|
96
|
+
- `search_unpaywall` resolves DOI-based OA metadata and returns at most one result.
|
|
97
|
+
- `search_scihub` is DOI/URL-targeted lookup and is not a metadata search source.
|
|
98
|
+
- `CORE_MAX_RESULTS_CAP` controls the configurable CORE-only result cap. Default is `100`; hard maximum is `500`. Other platforms keep their own current limits.
|
|
99
|
+
|
|
100
|
+
## Download Command Contract
|
|
101
|
+
|
|
102
|
+
`download_paper` tries source-native download first when available. Unsupported or failed native downloads route into the same fallback funnel used by `download_with_fallback`.
|
|
103
|
+
|
|
104
|
+
`download_with_fallback` order is source-native download, metadata PDF URL, repository discovery through PMC/Europe PMC/CORE/OpenAIRE, Unpaywall DOI resolution, then Sci-Hub as the final fallback.
|
|
105
|
+
|
|
106
|
+
Sci-Hub Fallback is enabled by default. To suppress that final stage for a request, pass:
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{"useSciHub": false}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The Routing Skill must not describe future-only download commands or strategy flags until they appear in `paper-search --help` or `paper-search tools`.
|
|
113
|
+
|
|
114
|
+
## Configuration And Secret Boundaries
|
|
115
|
+
|
|
116
|
+
Configuration sources, in priority order:
|
|
117
|
+
|
|
118
|
+
1. Shell environment variables
|
|
119
|
+
2. Current directory `.env`
|
|
120
|
+
3. User config file under `~/.config/paper-search-cli/config.json`
|
|
121
|
+
4. Free-source built-in defaults
|
|
122
|
+
|
|
123
|
+
Useful configuration commands:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
paper-search setup
|
|
127
|
+
paper-search config set SEMANTIC_SCHOLAR_API_KEY your_key
|
|
128
|
+
paper-search setup EASYSCHOLAR_KEY
|
|
129
|
+
paper-search config list --pretty
|
|
130
|
+
paper-search doctor --pretty
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Do not ask users to paste secrets into chat. Do not write secrets into Skill, README, tests, or logs. `doctor` and `config` output should mask configured secret values.
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Management Layer Reference
|
|
2
|
+
|
|
3
|
+
Use this reference when checking whether `paper-search` is installed, configured, healthy, and synchronized with the installed agent Skill. These commands help the agent decide readiness; they do not perform literature tasks.
|
|
4
|
+
|
|
5
|
+
## Management Commands
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
paper-search doctor --pretty
|
|
9
|
+
paper-search doctor --format text
|
|
10
|
+
paper-search smoke --mock --pretty
|
|
11
|
+
paper-search smoke --live --pretty
|
|
12
|
+
paper-search skills status --pretty
|
|
13
|
+
paper-search skills diff --targets agents --format text
|
|
14
|
+
paper-search skills update --targets agents --pretty
|
|
15
|
+
paper-search tools --pretty
|
|
16
|
+
paper-search config list --pretty
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
| Command | Purpose | Use When |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `paper-search doctor --pretty` | Complete health report: masked config, Capability Profile, platform status, and missing items | First use, uncertain environment, or user asks what capabilities are available |
|
|
22
|
+
| `paper-search doctor --format text` | Human-readable health report | You need to summarize health for the user |
|
|
23
|
+
| `paper-search smoke --mock --pretty` | Offline check of CLI wiring, Capability Profile logic, and Skill sync status logic | After code/install changes, or when network is unavailable |
|
|
24
|
+
| `paper-search smoke --live --pretty` | Small real checks of free metadata, configured key-backed capabilities, and Sci-Hub mirror availability | User asks for local live verification or provider/network issues are suspected |
|
|
25
|
+
| `paper-search skills status --pretty` | Shows whether Installed Skill files match the Bundled Skill | Install/update checks or debugging why an agent reads old Skill text |
|
|
26
|
+
| `paper-search skills diff --targets agents --format text` | Previews managed-file diffs between Bundled Skill and Installed Skill | Before updating Skill files |
|
|
27
|
+
| `paper-search skills update --targets agents --pretty` | Syncs package-managed Skill files into the user Skill directory while preserving Extra Skill Files | After the user confirms Skill update |
|
|
28
|
+
| `paper-search tools --pretty` | Lists `paper-search run` tool names and argument schemas | Unsure about exact tool name or arguments |
|
|
29
|
+
| `paper-search config list --pretty` | Shows masked configuration status | Need to confirm whether key/email/caps are configured |
|
|
30
|
+
|
|
31
|
+
## Doctor
|
|
32
|
+
|
|
33
|
+
`paper-search doctor` is the main health report. It combines masked configuration, Capability Profile, and platform status.
|
|
34
|
+
|
|
35
|
+
Capability Profile entries are independent workflow capabilities:
|
|
36
|
+
|
|
37
|
+
- `metadata_search`: metadata search through configured/free literature sources. Sci-Hub must not be included in metadata search.
|
|
38
|
+
- `body_snippet_search`: Semantic Scholar Open Access snippet search. It requires `SEMANTIC_SCHOLAR_API_KEY`.
|
|
39
|
+
- `journal_metrics`: EasyScholar journal metrics. It requires `EASYSCHOLAR_KEY`.
|
|
40
|
+
- `pdf_discovery`: PDF discovery and download through source-native download, metadata PDF URLs, open-access sources, entitled-access sources when configured, and the default enabled Sci-Hub Fallback.
|
|
41
|
+
- `entitled_access`: user-specific access rights such as publisher API keys, database keys, TDM tokens, or institutional entitlements.
|
|
42
|
+
|
|
43
|
+
Use JSON output for agent decisions. Use `--format text` only when the user needs a readable report.
|
|
44
|
+
|
|
45
|
+
## Smoke
|
|
46
|
+
|
|
47
|
+
`paper-search smoke --mock` is offline and should pass without provider keys.
|
|
48
|
+
|
|
49
|
+
`paper-search smoke --live` performs small real checks:
|
|
50
|
+
|
|
51
|
+
- free metadata check always runs
|
|
52
|
+
- Sci-Hub mirror availability is checked by default without downloading PDFs
|
|
53
|
+
- configured key-backed capabilities get lightweight checks
|
|
54
|
+
- unconfigured key-backed capabilities are marked `skipped`
|
|
55
|
+
|
|
56
|
+
Live smoke severity:
|
|
57
|
+
|
|
58
|
+
- `critical` failures make the command fail.
|
|
59
|
+
- `degraded` means a configured or default-enabled capability did not work as expected and must include remediation, but it is not the same as whole-tool failure.
|
|
60
|
+
- `warning` and `skipped` are informational.
|
|
61
|
+
|
|
62
|
+
When reporting live smoke results, include any `message` and `remediation` for degraded cases.
|
|
63
|
+
|
|
64
|
+
## Skill Sync
|
|
65
|
+
|
|
66
|
+
The npm package ships a Bundled Skill under `skills/paper-search`. Installing or updating user-visible Skill files is explicit.
|
|
67
|
+
|
|
68
|
+
Supported targets:
|
|
69
|
+
|
|
70
|
+
- `agents`
|
|
71
|
+
- `codex`
|
|
72
|
+
- `claude`
|
|
73
|
+
- `cursor`
|
|
74
|
+
- `gemini`
|
|
75
|
+
- `antigravity`
|
|
76
|
+
|
|
77
|
+
Routine sync after package updates:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
paper-search skills status --targets agents --pretty
|
|
81
|
+
paper-search skills diff --targets agents --format text
|
|
82
|
+
paper-search skills update --targets agents --pretty
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
`skills update` overwrites package-managed files and preserves Extra Skill Files. `skills diff` may show diffs only for Managed Skill Files; extra files are listed by name only.
|
|
86
|
+
|
|
87
|
+
## Package Update And Capability Setup
|
|
88
|
+
|
|
89
|
+
`skills update` only syncs Bundled Skill files into the selected Installed Skill directory. It does not update the npm package, GitHub checkout, compiled CLI files, or provider configuration.
|
|
90
|
+
|
|
91
|
+
`paper-search setup` only configures keys, email, and install destinations for the currently installed CLI. It does not update the package body.
|
|
92
|
+
|
|
93
|
+
Ordinary user update path:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npm install -g paper-search-cli@latest
|
|
97
|
+
paper-search skills update --targets agents --pretty
|
|
98
|
+
paper-search doctor --pretty
|
|
99
|
+
paper-search setup
|
|
100
|
+
paper-search smoke --mock --pretty
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Use `doctor` before or after `setup` to inspect the Capability Profile. Missing, unavailable, or degraded capability entries should tell the agent which key, email, source, or environment item the user needs to configure.
|
|
104
|
+
|
|
105
|
+
Maintainer or local-dev update path:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
git pull
|
|
109
|
+
npm install
|
|
110
|
+
npm run build
|
|
111
|
+
npm install -g .
|
|
112
|
+
paper-search skills update --targets agents --pretty
|
|
113
|
+
paper-search doctor --pretty
|
|
114
|
+
paper-search setup
|
|
115
|
+
paper-search smoke --mock --pretty
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Use the local-dev path when validating this repository checkout before publishing or before installing a local build globally.
|
|
119
|
+
|
|
120
|
+
## Configuration Checks
|
|
121
|
+
|
|
122
|
+
Configuration sources, in priority order:
|
|
123
|
+
|
|
124
|
+
1. Shell environment variables
|
|
125
|
+
2. Current directory `.env`
|
|
126
|
+
3. User config file under `~/.config/paper-search-cli/config.json`
|
|
127
|
+
4. Free-source built-in defaults
|
|
128
|
+
|
|
129
|
+
Useful commands:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
paper-search setup
|
|
133
|
+
paper-search config list --pretty
|
|
134
|
+
paper-search config get SEMANTIC_SCHOLAR_API_KEY --pretty
|
|
135
|
+
paper-search config get EASYSCHOLAR_KEY --pretty
|
|
136
|
+
paper-search doctor --pretty
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Do not ask users to paste secrets into chat. Do not write secrets into Skill, README, tests, or logs. `doctor` and `config` output should mask configured secret values.
|