skillgauntlet 1.1.1 → 1.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/LICENSE +201 -201
- package/README.md +44 -1
- package/bin/skillgauntlet.js +380 -131
- package/lib/automerge.js +107 -0
- package/lib/browse.js +58 -0
- package/lib/chart.js +160 -0
- package/lib/depth.js +4 -1
- package/lib/discover.js +27 -2
- package/lib/findhost.js +83 -0
- package/lib/i18n.js +405 -39
- package/lib/models.js +46 -0
- package/lib/report.js +1 -1
- package/lib/schema.js +90 -0
- package/lib/scrub.js +186 -0
- package/lib/static.js +24 -13
- package/lib/submission.js +325 -0
- package/lib/submit.js +208 -0
- package/lib/ticker.js +39 -0
- package/lib/trial.js +65 -13
- package/lib/ui.js +40 -2
- package/lib/update.js +73 -0
- package/package.json +4 -2
- package/schemas/submission-1.json +210 -0
package/lib/i18n.js
CHANGED
|
@@ -13,6 +13,8 @@ const MESSAGES = {
|
|
|
13
13
|
srcInstalledHint: '扫 .agents/skills、.claude/skills、.codex/skills',
|
|
14
14
|
srcPath: '另一个本地目录',
|
|
15
15
|
srcRepo: 'GitHub 仓库(未安装)',
|
|
16
|
+
srcRepoHint: 'owner/repo · 可分享结果',
|
|
17
|
+
sourceNote: '提示:想把测试结果分享到公开榜单,最省事的是选“GitHub 仓库”:程序会自动知道技能来自哪个仓库的哪个提交。已安装的技能和本地目录也可以分享,但前提是它在带 GitHub origin 的 git 仓库里、改动已提交并推送;否则要自己补上仓库地址和提交,结果页会给出命令。',
|
|
16
18
|
noInstalled: '本机没有找到已安装的技能。',
|
|
17
19
|
foundInstalled: '找到 {n} 个已安装的技能。',
|
|
18
20
|
scopeQ: '测哪些?',
|
|
@@ -21,10 +23,10 @@ const MESSAGES = {
|
|
|
21
23
|
scopeOne: '只测一个',
|
|
22
24
|
scopeOneHint: '方向键选择',
|
|
23
25
|
pickOneQ: '用 ↑ ↓ 选,回车确认',
|
|
24
|
-
askRepo: '输入技能来源(owner/repo
|
|
25
|
-
needRepo: '需要 owner/repo
|
|
26
|
+
askRepo: '输入技能来源(owner/repo 或完整 GitHub 链接;只测其中一个可写 owner/repo/技能名)',
|
|
27
|
+
needRepo: '需要 owner/repo 或完整 GitHub 链接,例如 mattpocock/skills',
|
|
26
28
|
noSkill: '这个地址里没有找到 SKILL.md。',
|
|
27
|
-
multiFound: '
|
|
29
|
+
multiFound: '这个仓库里有 {n} 个技能。',
|
|
28
30
|
notFoundNamed: '没找到名为 {name} 的技能。可选:{list}',
|
|
29
31
|
|
|
30
32
|
hostQ: '在哪个宿主里测?',
|
|
@@ -34,11 +36,9 @@ const MESSAGES = {
|
|
|
34
36
|
hostCodebuddyHint: '能测触发率(WorkBuddy 背后的命令行)',
|
|
35
37
|
codebuddyNote: 'CodeBuddy Code 的技能调用在事件流里与 Claude Code 同形(名为 Skill 的 tool_use)。用它自己的账号额度,需先在命令行里 /login;本宿主只做触发层,不做增益层。模型栏留空用 CodeBuddy 账号的默认模型;填 deepseek-flash 则走 DeepSeek(DEEPSEEK_API_KEY)。',
|
|
36
38
|
needDeepseekKey: '要用 DeepSeek 模型,请先在环境变量里设 DEEPSEEK_API_KEY(只放变量,不要把密钥写进命令行或文件)。',
|
|
37
|
-
codebuddyEstimate: '{skills} 个技能 × 约 {trials} 次试跑(含出题 1 次),用 CodeBuddy 账号额度,无现金花费。',
|
|
38
39
|
hostCodewhale: 'Codewhale',
|
|
39
40
|
hostCodewhaleHint: '能测触发率(原 DeepSeek-TUI,用 DeepSeek 模型)',
|
|
40
|
-
codewhaleNote: 'Codewhale 的技能调用在事件流里是名为 load_skill 的工具调用:第一个 input.name 等于被测技能才算触发(查询和列目录不算)。试跑在一个只装了被测技能的临时 HOME 里进行,只开放 load_skill 这一个工具;用 DEEPSEEK_API_KEY
|
|
41
|
-
codewhaleEstimate: '{skills} 个技能 × 约 {trials} 次试跑(含出题 1 次),花 DeepSeek 现金,每次约几分钱。',
|
|
41
|
+
codewhaleNote: 'Codewhale 的技能调用在事件流里是名为 load_skill 的工具调用:第一个 input.name 等于被测技能才算触发(查询和列目录不算)。试跑在一个只装了被测技能的临时 HOME 里进行,只开放 load_skill 这一个工具;用 DEEPSEEK_API_KEY。费用取决于后端和你的计划。这是 Codewhale 的数字,不与其他宿主的合并比较。需要 codewhale 在 PATH 里(npm install -g codewhale --allow-scripts=codewhale)。',
|
|
42
42
|
hostCodex: 'Codex',
|
|
43
43
|
hostCodexHint: '触发不可观测:只测静态与激活探针',
|
|
44
44
|
codexNote: 'Codex 把技能当作宿主侧上下文注入,事件流里没有"技能被调用"这一项(只有 command_execution / file_change / mcp_tool_call 等)。所以这里不给触发率——给了就是编的。替代方案是激活探针:同一请求装与不装各跑一次,比首个动作与改动文件。',
|
|
@@ -62,28 +62,40 @@ const MESSAGES = {
|
|
|
62
62
|
|
|
63
63
|
depthQ: '测到什么程度?',
|
|
64
64
|
depthQuick: '快速',
|
|
65
|
-
depthQuickHint: '
|
|
65
|
+
depthQuickHint: '约 2–5 分钟 · 初筛触发率,题少,结论仅供参考',
|
|
66
66
|
depthStandard: '标准',
|
|
67
67
|
depthStandardHint: '~5 分钟 · 触发率有置信区间',
|
|
68
68
|
depthDeep: '深度',
|
|
69
69
|
depthDeepHint: '~10 分钟 · 加只读探索与配对增益',
|
|
70
70
|
providerQ: '用哪个后端?',
|
|
71
71
|
provClaude: 'Claude Code 订阅',
|
|
72
|
-
provClaudeHint: '不花现金,占周额度',
|
|
73
72
|
provDeepseek: 'DeepSeek',
|
|
74
|
-
provDeepseekHint: '花现金很少,不占订阅额度',
|
|
75
73
|
provManual: '手动输入模型名',
|
|
76
74
|
modelQ: '模型',
|
|
75
|
+
modelOptionalQ: '模型(直接回车 = 默认模型)',
|
|
76
|
+
contributeQ: '要把这 {n} 次运行贡献到公开榜单吗?(会先清理本机路径和密钥,让你预览,你再次同意后才开 GitHub PR)',
|
|
77
|
+
waitElapsed: '已用 {s} 秒',
|
|
78
|
+
waitAbort: '仍在等待模型返回,可按 Ctrl+C 中止',
|
|
79
|
+
modelDefault: '默认模型',
|
|
80
|
+
modelOther: '其他(手动输入)',
|
|
81
|
+
browseTitle: '用 ↑ ↓ 选目录,回车确认。当前:{dir}',
|
|
82
|
+
browseUse: '✔ 选择当前目录',
|
|
83
|
+
browseUp: '↑ 上一级',
|
|
84
|
+
browseHome: '⌂ 主目录',
|
|
85
|
+
browseDrives: '切换盘符',
|
|
86
|
+
browseType: '✎ 手动输入路径…',
|
|
87
|
+
browseHasSkill: '含 SKILL.md',
|
|
77
88
|
modelCheap: '最省',
|
|
78
89
|
modelDaily: '最贴近日常',
|
|
79
90
|
modelExpensive: '最贵',
|
|
80
91
|
needBaseUrl: '需要先设置后端:\n ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic\n ANTHROPIC_AUTH_TOKEN=<你的 key>',
|
|
81
92
|
backendLine: '后端:{backend} 模型:{model}',
|
|
82
|
-
estimate: '即将运行:{skills} 个技能 × {trials} 次试跑 ≈ 每个 {minutes} 分钟,合计约 {totalMinutes} 分钟\n费用取决于后端和计划:订阅走额度,DeepSeek 按量计费(这里不估金额)',
|
|
83
93
|
confirmRun: '继续?',
|
|
84
94
|
cancelled: '已取消。免费的静态层不需要确认:npx skillgauntlet static <目录>',
|
|
85
95
|
staticDone: '静态层:{verdicts}',
|
|
86
|
-
drafting: '
|
|
96
|
+
drafting: '正在出题(一次模型调用,可能要几分钟)…',
|
|
97
|
+
hostPing: '正在确认 {host} 已登录…',
|
|
98
|
+
hostNotReady: '{host} 没有响应,多半是还没登录。请先在它的命令行里输入 /login,登录后再重新运行。({why})',
|
|
87
99
|
drafted: '出了 {q} 道题,{c} 条触发条款(已缓存,下次直接复用)',
|
|
88
100
|
queriesReused: '复用缓存的 {n} 道题({file}),省一次出题调用',
|
|
89
101
|
negativesChecked: '{n} 条负样本都填出了可核实的借用词',
|
|
@@ -101,12 +113,73 @@ const MESSAGES = {
|
|
|
101
113
|
resumeMismatch: '不能续跑:{what} 原来是 {was},现在是 {got}。不同条件的记录不能合并,请改回原值,或另开一次新运行。',
|
|
102
114
|
resumeQueriesChanged: '不能续跑:题集和这次运行用的不一致(题集文件被改过或丢失)。',
|
|
103
115
|
resumeSkillChanged: '不能续跑:SKILL.md 在这次运行开始后被改过。',
|
|
104
|
-
shareState: '
|
|
116
|
+
shareState: '测评结果只保存在你本机,不会自动上传。想把某次运行贡献给公开榜单,运行:{cmd}。它会先清理本机路径和密钥、让你看清要提交什么,你同意之后才开 GitHub PR。',
|
|
105
117
|
inputEnded: '输入结束',
|
|
106
118
|
err: '出错:{msg}',
|
|
107
119
|
badSource: '看不懂这个地址:{spec}(可以是本地目录,或 owner/repo)',
|
|
108
120
|
noSkillUnder: '{target} 下没有找到 SKILL.md',
|
|
109
121
|
resumeUsage: '用法:skillgauntlet resume <运行目录> [--model M] [--runs N] [--max-explore N]',
|
|
122
|
+
'ui.yes': '是(y)',
|
|
123
|
+
'ui.no': '否(n)',
|
|
124
|
+
backHint: '← 或 Esc:返回上一步',
|
|
125
|
+
'chart.stats': 'SKILL.md 约 {tokens} tokens · 描述 {desc} 字 · {files} 个文件',
|
|
126
|
+
'chart.conditions': '宿主 {host} · 模型 {model} · {trials} 次试跑({failed} 次失败,不计入)',
|
|
127
|
+
'chart.allZero': '一次都没触发:更可能是宿主没读到这个技能(路径、安装或权限),而不是技能写得差。先看下面“改做了什么”,再检查技能是否装在宿主能读到的位置。',
|
|
128
|
+
'chart.missedTitle': '该触发却没触发的 {n} 次,模型改做了什么',
|
|
129
|
+
'chart.missedList': '没触发的题(→ 它先用的工具)',
|
|
130
|
+
'chart.noTool': '没调用工具',
|
|
131
|
+
'chart.otherSkill': '改用别的技能:{name}',
|
|
132
|
+
'chart.more': '…还有 {n} 题,见完整报告',
|
|
133
|
+
'chart.wrongTitle': '不该触发却触发的 {n} 次',
|
|
134
|
+
modelUnknown: '{host} 的模型清单里没有“{model}”。它现在支持:{list}。请重新选一个,或选“默认模型”。',
|
|
135
|
+
updateAvail: '有新版本 {latest}(你现在用的是 {current})。',
|
|
136
|
+
updateQ: '要更新吗?',
|
|
137
|
+
updateNow: '更新并重新启动',
|
|
138
|
+
updateSkip: '先用当前版本(这个版本不再提醒)',
|
|
139
|
+
updating: '正在下载新版 {latest}…',
|
|
140
|
+
updateFailed: '更新没有成功:{why}。继续使用当前版本 {current}。',
|
|
141
|
+
waitCloning: '正在下载仓库(大仓库可能要几十秒)…',
|
|
142
|
+
waitAnalyze: '正在做静态检查…',
|
|
143
|
+
waitModels: '正在读取 {host} 的模型列表…',
|
|
144
|
+
waitSearch: '正在这台电脑上查找 {host}…',
|
|
145
|
+
'chart.probeAsk': '同一个请求各跑一次:装了这个技能 vs 没装,比较它第一步做了什么、最后做出了哪些文件',
|
|
146
|
+
'chart.firstAction': '第一步',
|
|
147
|
+
'chart.filesMade': '产出文件',
|
|
148
|
+
'chart.noAction': '(没有动作)',
|
|
149
|
+
'chart.noFiles': '(没有产出)',
|
|
150
|
+
'chart.probeNoEffect': '读法:装与不装几乎没差别。可能这个请求用不上它,也可能技能没起作用;只跑了一次,不能下结论。',
|
|
151
|
+
'chart.probeEffect': '读法:产出的文件不一样,装了技能后行为确实有变化。这说明它起了作用,但不能证明变化是“调用了技能”造成的,也不代表更好。',
|
|
152
|
+
'chart.probeMixed': '读法:第一步和产出只有一项不同,信号弱;只跑了一次,不能下结论。',
|
|
153
|
+
'chart.static': '静态检查(不调用模型)',
|
|
154
|
+
'chart.staticLegend': '✓ 通过 ! 警告(值得看一眼) ✗ 失败(建议处理);每项的完整说明见完整报告',
|
|
155
|
+
noSubmitNoSource: '这次的结果暂时不能自动提交:程序看不出这个技能来自哪个公开仓库的哪个提交。\n有两种办法:\n 1. 如果技能在带 GitHub origin 的 git 仓库里,把改动提交并推送到 GitHub,再对同一目录重测(榜单会核对公开仓库里的 SKILL.md 与你测的一致)。\n 2. 你知道它的仓库和提交,直接用下面的命令补上(--subdir 是技能在仓库里的子目录,在仓库根目录就省略):\n {cmd}',
|
|
156
|
+
'chart.trigger': '触发率:该用这个技能的时候,它被用上了吗',
|
|
157
|
+
'chart.verdict': '结论',
|
|
158
|
+
'chart.grade.well': '触发准确',
|
|
159
|
+
'chart.grade.fair': '触发一般',
|
|
160
|
+
'chart.grade.poorly': '触发有明显问题',
|
|
161
|
+
'chart.grade.insufficient': '样本太少,只能参考',
|
|
162
|
+
'chart.recall': '该触发时,触发了',
|
|
163
|
+
'chart.fpr': '不该触发时,却触发了',
|
|
164
|
+
'chart.ci': '95% 区间 {lo}–{hi}',
|
|
165
|
+
'chart.legend': '逐题:● 触发了 ◐ 偶尔触发 ○ 没触发',
|
|
166
|
+
'chart.should': '应触发的题',
|
|
167
|
+
'chart.shouldNot': '不该触发的题',
|
|
168
|
+
'chart.incomplete': '还有 {n} 次试跑没跑完,数字只覆盖已完成的部分',
|
|
169
|
+
'chart.probe': '激活探针:装与不装,行为一样吗',
|
|
170
|
+
'chart.probeNote': 'Codex 看不到“技能被调用”,所以这里没有触发率。',
|
|
171
|
+
'chart.gain': '增益:装与不装,做得一样好吗',
|
|
172
|
+
'chart.gainLegend': '每项是一条程序能判分的要求,条越长越符合',
|
|
173
|
+
'chart.full': '完整报告:{path}',
|
|
174
|
+
progressLine: '试跑',
|
|
175
|
+
draftFirst: '接下来先为每个技能出题(每个技能 1 次模型调用),出完会告诉你确切的试跑次数,你同意后才开始试跑。费用取决于后端和你的计划。',
|
|
176
|
+
trialsQ: '{q} 道题 × {runs} 次 = {n} 次试跑,约 {minutes} 分钟。',
|
|
177
|
+
trialsGo: '开始试跑',
|
|
178
|
+
trialsAll: '开始,后面的技能不再逐个询问',
|
|
179
|
+
trialsSkip: '这个不跑了',
|
|
180
|
+
trialsDeclined: '没有试跑。题目已缓存,下次不会重复出题。',
|
|
181
|
+
noSubmitProbe: '这次是 Codex 的激活探针,没有触发率,榜单只收触发率结果,所以不能提交。',
|
|
182
|
+
noSubmitNoRun: '这次没有可提交的完整运行。',
|
|
110
183
|
'ui.yesWords': 'y,yes,是',
|
|
111
184
|
'ui.noWords': 'n,no,否',
|
|
112
185
|
usage: `SkillGauntlet
|
|
@@ -115,6 +188,7 @@ const MESSAGES = {
|
|
|
115
188
|
npx skillgauntlet static <目录> 只跑层 0,不调用模型
|
|
116
189
|
npx skillgauntlet static <目录> --json
|
|
117
190
|
npx skillgauntlet resume <运行目录> 续跑被中断或自动停止的运行(出错和超时的会重试)
|
|
191
|
+
npx skillgauntlet submit <运行目录> 清理后提交一次运行到公开榜单(先预览,同意才开 PR;--dry-run 只预览)
|
|
118
192
|
加 --lang zh|ja|en 或设置 SG_LANG 可指定语言
|
|
119
193
|
|
|
120
194
|
层
|
|
@@ -123,11 +197,59 @@ const MESSAGES = {
|
|
|
123
197
|
2 增益 装与不装对比,任务由程序判定 调用模型
|
|
124
198
|
|
|
125
199
|
层 0 总是最先跑:它免费,能在你花钱之前筛掉大部分问题。`,
|
|
200
|
+
submitUsage: '用法:skillgauntlet submit <运行目录> [--dry-run] [--yes] [--github-user 用户名] [--skill-dir 目录] [--repo URL --commit SHA [--subdir 路径]] [--out 目录] [--skip-remote-check]',
|
|
201
|
+
submitNoRun: '读不了 {dir} 里的运行:需要有 meta.json 和 raw.jsonl',
|
|
202
|
+
submitNoSummary: '{dir} 里没有 summary.json,说明这次运行没跑完。请先用 `skillgauntlet resume` 续跑完。',
|
|
203
|
+
submitNoQueries: '{dir} 里没有 queries.json(v1.1 之前的运行没存题目)。提交必须带题目,所以这次运行不能提交,请重新跑一次。',
|
|
204
|
+
submitNotTrigger: '只有在 claude-code、codebuddy、codewhale 上跑完的触发层运行才能提交(这一份的宿主是“{host}”,或者是探针)',
|
|
205
|
+
submitUnfinished: '{dir} 里的运行被中断或自动停止了。请先用 `skillgauntlet resume` 续跑完。',
|
|
206
|
+
submitQueriesChanged: 'queries.json 和 meta.json 里记录的哈希对不上,说明题目在运行之后被改过',
|
|
207
|
+
submitNoSource: '看不出这个技能来自哪个公开仓库、哪个提交。请在带 origin 远程的 git 检出里运行,或加上 --repo https://github.com/owner/repo --commit <40 位 sha> [--subdir 路径]。',
|
|
208
|
+
submitBadCommit: '“{commit}”不是完整的 40 位提交哈希',
|
|
209
|
+
submitDirty: '技能所在的检出里有未提交的改动,公开仓库里没有任何提交与被测内容一致。请提交或还原后重测。',
|
|
210
|
+
submitNoSkillMd: '{dir} 里没有 SKILL.md;请用 --skill-dir 指定技能目录',
|
|
211
|
+
submitSkillChanged: 'SKILL.md 在这次运行之后被改过,结果说的是另一个文件',
|
|
212
|
+
submitSecrets: '清理之后数据里仍有像密钥或本机路径的文字,所以没有打包:',
|
|
213
|
+
submitInvalid: '打包结果不符合 schemas/submission-1.json({n} 处问题):',
|
|
214
|
+
submitNoUser: '看不出你的 GitHub 登录名。请先 `gh auth login`,或加上 --github-user <登录名>。',
|
|
215
|
+
submitRemoteFail: '读不到 {repo} 在提交 {commit} 的 SKILL.md。该提交必须已推送到那个公开仓库,CI 也会做同样的检查。(离线时可用 --skip-remote-check。)',
|
|
216
|
+
submitRemoteMismatch: '{repo}@{commit} 处的 SKILL.md 哈希是 {got},不是 {want}:钉住的提交和被测文件对不上。',
|
|
217
|
+
submitPreviewTitle: '下面就是将要提交的全部内容。到目前为止什么都没有上传。',
|
|
218
|
+
submitPreviewSkill: ' 技能 {skill} ({repo} @ {commit}{subdir})',
|
|
219
|
+
submitPreviewSha: ' SKILL.md sha256 {sha}…',
|
|
220
|
+
submitPreviewRun: ' 运行 {host} {hostVersion},模型 {model};{trials} 次试验,{questions} 道题,运行器 {runner}',
|
|
221
|
+
submitPreviewResult: ' 结果 评级“{grade}”,召回 {recall},误触发 {fpr}',
|
|
222
|
+
submitPreviewFiles: ' 文件 {files}',
|
|
223
|
+
submitPreviewScrub: ' 已清理 {what}',
|
|
224
|
+
submitScrubNone: '没有需要清理的内容',
|
|
225
|
+
submitPreviewWhere: ' 完整内容 {dir}(同意之前请打开文件看一遍)',
|
|
226
|
+
submitPreviewPath: ' 提交位置 {upstream} 的 submissions/{path}/',
|
|
227
|
+
submitPublic: '提交就是以你的 GitHub 名义开一个公开 PR,之后一直公开。数据以 CC BY-NC-SA 4.0 发布。第一次提交 PR 时,CLA Assistant 机器人会发一个链接,请你签一次贡献者许可协议(CLA.md)。这个工具无法证明试验真的跑过,项目也不声称能证明;结果起步是“社区单样本”。',
|
|
228
|
+
submitAsk: '现在 fork {upstream}、推送分支并开 PR 吗?',
|
|
229
|
+
submitCancelled: '没有提交任何东西。打包结果留在 {dir}。',
|
|
230
|
+
submitDry: '仅预览:没有提交任何东西。打包结果在 {dir}。',
|
|
231
|
+
submitGhMissing: '没有安装 GitHub CLI(gh)或还没登录,所以没法在这里直接开 PR。',
|
|
232
|
+
submitManual: '手动提交的步骤:\n 1. 在 GitHub 上 fork https://github.com/{upstream},再把你的 fork clone 到本地。\n 2. 把\n {dir}\n 里的四个文件原名复制到你 clone 里的 submissions/{path}/。\n 3. 新建分支提交并推送,向 {upstream} 的 main 分支开 PR;GitHub 提供模板时选“submission”。\n 4. 机器人要求时签 CLA。几分钟内 CI 会在 PR 里留言。',
|
|
233
|
+
submitForking: ' 正在 fork {upstream}(如果你还没有 fork)…',
|
|
234
|
+
submitPreparing: ' 正在准备分支…',
|
|
235
|
+
submitPushing: ' 正在把分支推到你的 fork…',
|
|
236
|
+
submitOpening: ' 正在开 PR…',
|
|
237
|
+
submitPrOpened: 'PR 已开:{url}',
|
|
238
|
+
submitNext: '接下来:机器人要求时签 CLA,然后等 PR 里的 CI 留言。留言会写通过,或者精确写出缺什么。合并由维护者操作。',
|
|
239
|
+
submitGhFail: 'GitHub 步骤失败:{msg}',
|
|
126
240
|
modelRemap: '后端 {host} 会静默改写 Anthropic 模型名,"{model}" 测的不是你指定的模型;请传该后端自己的模型名',
|
|
127
241
|
hostMissing: '没有找到宿主 {host}(PATH 里没有 {bin})。{how};也可以重新运行并选择其他宿主(Claude Code、CodeBuddy、Codewhale、Codex)。',
|
|
128
242
|
installCodebuddy: '安装方法:npm install -g @tencent-ai/codebuddy-code',
|
|
129
|
-
installCodewhale: '
|
|
243
|
+
installCodewhale: '安装方法:npm install -g codewhale --allow-scripts=codewhale',
|
|
130
244
|
installClaude: '安装方法:npm install -g @anthropic-ai/claude-code',
|
|
245
|
+
hostNotOnPath: 'PATH 里没有 {host}。',
|
|
246
|
+
hostFixQ: '怎么办?',
|
|
247
|
+
hostUseFound: '使用在这台电脑上找到的:{path}',
|
|
248
|
+
hostInstallNow: '现在安装:{cmd}',
|
|
249
|
+
hostOther: '换一个宿主',
|
|
250
|
+
hostInstalling: '正在安装 {host},输出就在下面,请等它结束…',
|
|
251
|
+
hostInstallFailed: '安装没有成功:{why}',
|
|
252
|
+
hostStillMissing: '装完之后还是没有找到 {host},请换一个宿主,或重新打开终端后再运行。',
|
|
131
253
|
|
|
132
254
|
// ---- report: shared ----
|
|
133
255
|
'report.path': '路径:',
|
|
@@ -257,6 +379,8 @@ const MESSAGES = {
|
|
|
257
379
|
srcInstalledHint: 'scans .agents/skills, .claude/skills, .codex/skills',
|
|
258
380
|
srcPath: 'Another local directory',
|
|
259
381
|
srcRepo: 'GitHub repository (not installed)',
|
|
382
|
+
srcRepoHint: 'owner/repo · results can be shared',
|
|
383
|
+
sourceNote: 'Tip: to share the results on the public leaderboard, the easiest is "GitHub repository": the program then knows which repository and commit the skill came from. An installed skill or a local folder can be shared too, but only if it is in a git repository with a GitHub origin and its changes are committed and pushed; otherwise you supply the repository and commit yourself, and the results page gives you the command.',
|
|
260
384
|
noInstalled: 'No installed skills found on this machine.',
|
|
261
385
|
foundInstalled: 'Found {n} installed skills.',
|
|
262
386
|
scopeQ: 'Which ones?',
|
|
@@ -265,10 +389,10 @@ const MESSAGES = {
|
|
|
265
389
|
scopeOne: 'Just one',
|
|
266
390
|
scopeOneHint: 'pick with arrow keys',
|
|
267
391
|
pickOneQ: '↑ ↓ to move, enter to confirm',
|
|
268
|
-
askRepo: 'Source of the skill (owner/repo
|
|
269
|
-
needRepo: 'Expected owner/repo, e.g. mattpocock/skills',
|
|
392
|
+
askRepo: 'Source of the skill (owner/repo or a full GitHub link; owner/repo/skill-name for one skill)',
|
|
393
|
+
needRepo: 'Expected owner/repo or a full GitHub link, e.g. mattpocock/skills',
|
|
270
394
|
noSkill: 'No SKILL.md found there.',
|
|
271
|
-
multiFound: '
|
|
395
|
+
multiFound: 'This repository has {n} skills.',
|
|
272
396
|
notFoundNamed: 'No skill named {name}. Available: {list}',
|
|
273
397
|
|
|
274
398
|
hostQ: 'Which host?',
|
|
@@ -278,11 +402,9 @@ const MESSAGES = {
|
|
|
278
402
|
hostCodebuddyHint: 'trigger rate is measurable (the CLI behind WorkBuddy)',
|
|
279
403
|
codebuddyNote: 'In CodeBuddy Code a skill call appears in the stream as a tool_use named Skill, the same shape as in Claude Code. It spends your CodeBuddy account quota and needs /login in its CLI first. This host runs the trigger layer only, not the gain layer. Leave the model empty for the account default, or type deepseek-flash to use DeepSeek (DEEPSEEK_API_KEY).',
|
|
280
404
|
needDeepseekKey: 'To use a DeepSeek model, set DEEPSEEK_API_KEY in the environment first (a variable only; keep the key out of the command line and files).',
|
|
281
|
-
codebuddyEstimate: '{skills} skill(s) x about {trials} trials (plus one drafting call), spent from the CodeBuddy account, no cash.',
|
|
282
405
|
hostCodewhale: 'Codewhale',
|
|
283
406
|
hostCodewhaleHint: 'trigger rate is measurable (formerly DeepSeek-TUI, runs DeepSeek models)',
|
|
284
|
-
codewhaleNote: 'In Codewhale a skill call is a tool call named load_skill: the first one whose input.name equals the tested skill counts as a trigger (a query or a catalogue listing does not). Trials run in a throw-away HOME holding only the tested skill, with load_skill as the only tool; it uses DEEPSEEK_API_KEY and
|
|
285
|
-
codewhaleEstimate: '{skills} skill(s) x about {trials} trials (plus one drafting call), DeepSeek cash, a few cents each.',
|
|
407
|
+
codewhaleNote: 'In Codewhale a skill call is a tool call named load_skill: the first one whose input.name equals the tested skill counts as a trigger (a query or a catalogue listing does not). Trials run in a throw-away HOME holding only the tested skill, with load_skill as the only tool; it uses DEEPSEEK_API_KEY. Cost depends on the backend and your plan. The number is a Codewhale number and is not merged with another host. It needs codewhale on PATH (npm install -g codewhale --allow-scripts=codewhale).',
|
|
286
408
|
hostCodex: 'Codex',
|
|
287
409
|
hostCodexHint: 'trigger is not observable: static plus an activation probe',
|
|
288
410
|
codexNote: 'Codex injects a skill as host-side context; the event stream has no "skill was used" item (only command_execution, file_change, mcp_tool_call). A trigger rate here would have to be invented, so instead there is an activation probe: the same request with and without the skill, comparing the first action and the files changed.',
|
|
@@ -306,28 +428,40 @@ const MESSAGES = {
|
|
|
306
428
|
|
|
307
429
|
depthQ: 'How deep?',
|
|
308
430
|
depthQuick: 'Quick',
|
|
309
|
-
depthQuickHint: '~
|
|
431
|
+
depthQuickHint: '~2–5 min · a first look at the trigger rate, few questions, indicative only',
|
|
310
432
|
depthStandard: 'Standard',
|
|
311
433
|
depthStandardHint: '~5 min · trigger rate with intervals',
|
|
312
434
|
depthDeep: 'Deep',
|
|
313
435
|
depthDeepHint: '~10 min · adds read-only exploration and paired gain',
|
|
314
436
|
providerQ: 'Which backend?',
|
|
315
437
|
provClaude: 'Claude Code subscription',
|
|
316
|
-
provClaudeHint: 'no cash, spends weekly quota',
|
|
317
438
|
provDeepseek: 'DeepSeek',
|
|
318
|
-
provDeepseekHint: 'little cash, no quota',
|
|
319
439
|
provManual: 'Type a model name',
|
|
320
440
|
modelQ: 'Model',
|
|
441
|
+
modelOptionalQ: 'Model (press Enter for the default)',
|
|
442
|
+
contributeQ: 'Contribute {n} run(s) to the public leaderboard? (Local paths and keys are scrubbed first, you see a preview, and a GitHub pull request is opened only after you agree again)',
|
|
443
|
+
waitElapsed: '{s} s elapsed',
|
|
444
|
+
waitAbort: 'still waiting for the model; Ctrl+C aborts',
|
|
445
|
+
modelDefault: 'Default model',
|
|
446
|
+
modelOther: 'Other (type it)',
|
|
447
|
+
browseTitle: '↑ ↓ to pick a folder, enter to confirm. Now in: {dir}',
|
|
448
|
+
browseUse: '✔ Use this folder',
|
|
449
|
+
browseUp: '↑ Up one level',
|
|
450
|
+
browseHome: '⌂ Home folder',
|
|
451
|
+
browseDrives: 'Switch drive',
|
|
452
|
+
browseType: '✎ Type a path…',
|
|
453
|
+
browseHasSkill: 'has SKILL.md',
|
|
321
454
|
modelCheap: 'cheapest',
|
|
322
455
|
modelDaily: 'closest to daily use',
|
|
323
456
|
modelExpensive: 'most expensive',
|
|
324
457
|
needBaseUrl: 'Set the backend first:\n ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic\n ANTHROPIC_AUTH_TOKEN=<your key>',
|
|
325
458
|
backendLine: 'Backend: {backend} model: {model}',
|
|
326
|
-
estimate: 'About to run: {skills} skill(s) × {trials} trials ≈ {minutes} min each, {totalMinutes} min in total\nCost depends on the backend and plan: a subscription spends quota, DeepSeek bills per use (no amount is estimated here)',
|
|
327
459
|
confirmRun: 'Continue?',
|
|
328
460
|
cancelled: 'Cancelled. The free static layer needs no confirmation: npx skillgauntlet static <dir>',
|
|
329
461
|
staticDone: 'Static: {verdicts}',
|
|
330
|
-
drafting: 'Drafting questions (one model call)…',
|
|
462
|
+
drafting: 'Drafting questions (one model call, may take a few minutes)…',
|
|
463
|
+
hostPing: 'Checking that {host} is signed in…',
|
|
464
|
+
hostNotReady: '{host} did not answer, most likely because it is not signed in. Run /login in its CLI first, then run this again. ({why})',
|
|
331
465
|
drafted: '{q} queries over {c} trigger clauses (cached for reuse)',
|
|
332
466
|
queriesReused: 'reusing {n} cached questions ({file}), one drafting call saved',
|
|
333
467
|
negativesChecked: 'all {n} negatives name verifiable borrowed wording',
|
|
@@ -345,12 +479,73 @@ const MESSAGES = {
|
|
|
345
479
|
resumeMismatch: 'Cannot resume: {what} was {was}, now {got}. Records from different conditions cannot be pooled; use the original value or start a new run.',
|
|
346
480
|
resumeQueriesChanged: 'Cannot resume: the question set no longer matches the one this run used (the file was edited or is missing).',
|
|
347
481
|
resumeSkillChanged: 'Cannot resume: SKILL.md changed after this run started.',
|
|
348
|
-
shareState: '
|
|
482
|
+
shareState: 'Results stay on this machine and are never uploaded automatically. To contribute a run to the public leaderboard, run: {cmd}. It scrubs local paths and keys, shows you exactly what would be submitted, and opens a GitHub pull request only after you agree.',
|
|
349
483
|
inputEnded: 'input ended',
|
|
350
484
|
err: 'Error: {msg}',
|
|
351
485
|
badSource: 'Cannot read this address: {spec} (use a local directory or owner/repo)',
|
|
352
486
|
noSkillUnder: 'no SKILL.md under {target}',
|
|
353
487
|
resumeUsage: 'usage: skillgauntlet resume <run-dir> [--model M] [--runs N] [--max-explore N]',
|
|
488
|
+
'ui.yes': 'Yes (y)',
|
|
489
|
+
'ui.no': 'No (n)',
|
|
490
|
+
backHint: '← or Esc: back one step',
|
|
491
|
+
'chart.stats': 'SKILL.md about {tokens} tokens · description {desc} chars · {files} file(s)',
|
|
492
|
+
'chart.conditions': 'host {host} · model {model} · {trials} trials ({failed} failed, not counted)',
|
|
493
|
+
'chart.allZero': 'Nothing triggered at all: more likely the host could not read this skill (path, install or permissions) than that the skill is badly written. Look at what it did instead below, then check the skill sits where the host can read it.',
|
|
494
|
+
'chart.missedTitle': 'The {n} misses: what the model did instead',
|
|
495
|
+
'chart.missedList': 'Questions that did not trigger (→ first tool used)',
|
|
496
|
+
'chart.noTool': 'no tool',
|
|
497
|
+
'chart.otherSkill': 'used another skill: {name}',
|
|
498
|
+
'chart.more': '…{n} more, see the full report',
|
|
499
|
+
'chart.wrongTitle': '{n} times it triggered when it should not have',
|
|
500
|
+
modelUnknown: '{host} does not list a model called "{model}". It currently supports: {list}. Pick another, or choose the default model.',
|
|
501
|
+
updateAvail: 'A newer version {latest} is available (you are on {current}).',
|
|
502
|
+
updateQ: 'Update?',
|
|
503
|
+
updateNow: 'Update and restart',
|
|
504
|
+
updateSkip: 'Keep this version (do not ask about this one again)',
|
|
505
|
+
updating: 'Downloading {latest}…',
|
|
506
|
+
updateFailed: 'The update did not work: {why}. Continuing with {current}.',
|
|
507
|
+
waitCloning: 'Downloading the repository (a big one can take tens of seconds)…',
|
|
508
|
+
waitAnalyze: 'Running the static checks…',
|
|
509
|
+
waitModels: 'Reading the model list from {host}…',
|
|
510
|
+
waitSearch: 'Looking for {host} on this computer…',
|
|
511
|
+
'chart.probeAsk': 'The same request run twice: with this skill installed vs without, comparing the first step and the files made',
|
|
512
|
+
'chart.firstAction': 'first step',
|
|
513
|
+
'chart.filesMade': 'files made',
|
|
514
|
+
'chart.noAction': '(no action)',
|
|
515
|
+
'chart.noFiles': '(none)',
|
|
516
|
+
'chart.probeNoEffect': 'Reading: with and without the skill it looked about the same. The request may not need it, or the skill had no effect; one run each is not a conclusion.',
|
|
517
|
+
'chart.probeEffect': 'Reading: the files differ, so behaviour did change with the skill installed. That shows it had an effect, not that the change came from "invoking the skill", nor that it is better.',
|
|
518
|
+
'chart.probeMixed': 'Reading: only one of the first step and the output differs, a weak signal; one run each is not a conclusion.',
|
|
519
|
+
'chart.static': 'Static checks (no model calls)',
|
|
520
|
+
'chart.staticLegend': '✓ pass ! warning (worth a look) ✗ fail (should be handled); each check is explained in the full report',
|
|
521
|
+
noSubmitNoSource: 'These results cannot be submitted automatically yet: the program cannot tell which public repository and commit this skill came from.\nTwo ways forward:\n 1. If the skill is in a git repository with a GitHub origin, commit and push your changes, then test the same folder again (the leaderboard checks that SKILL.md in the public repository matches what you tested).\n 2. If you know its repository and commit, add them with the command below (--subdir is the skill\'s folder inside the repository; leave it out at the repository root):\n {cmd}',
|
|
522
|
+
'chart.trigger': 'Trigger rate: is the skill used when it should be?',
|
|
523
|
+
'chart.verdict': 'Verdict',
|
|
524
|
+
'chart.grade.well': 'triggers accurately',
|
|
525
|
+
'chart.grade.fair': 'triggers so-so',
|
|
526
|
+
'chart.grade.poorly': 'clear trigger problems',
|
|
527
|
+
'chart.grade.insufficient': 'too few samples, indicative only',
|
|
528
|
+
'chart.recall': 'Triggered when it should',
|
|
529
|
+
'chart.fpr': 'Triggered when it should not',
|
|
530
|
+
'chart.ci': '95% interval {lo}–{hi}',
|
|
531
|
+
'chart.legend': 'Per question: ● triggered ◐ sometimes ○ did not',
|
|
532
|
+
'chart.should': 'Should trigger',
|
|
533
|
+
'chart.shouldNot': 'Should not trigger',
|
|
534
|
+
'chart.incomplete': '{n} trial(s) did not finish; the numbers cover only the finished ones',
|
|
535
|
+
'chart.probe': 'Activation probe: same behaviour with and without the skill?',
|
|
536
|
+
'chart.probeNote': 'Codex does not show "skill used", so there is no trigger rate here.',
|
|
537
|
+
'chart.gain': 'Gain: is the work better with the skill?',
|
|
538
|
+
'chart.gainLegend': 'Each item is a requirement a program can grade; a longer bar means more of it is met',
|
|
539
|
+
'chart.full': 'Full report: {path}',
|
|
540
|
+
progressLine: 'Trials',
|
|
541
|
+
draftFirst: 'Next, questions are drafted for each skill (one model call per skill). You will then be told the exact number of trials and nothing is run until you agree. Cost depends on the backend and your plan.',
|
|
542
|
+
trialsQ: '{q} questions × {runs} run(s) = {n} trials, about {minutes} min.',
|
|
543
|
+
trialsGo: 'Start the trials',
|
|
544
|
+
trialsAll: 'Start, and do not ask again for the next skills',
|
|
545
|
+
trialsSkip: 'Skip this one',
|
|
546
|
+
trialsDeclined: 'No trials were run. The questions are cached, so they will not be drafted again.',
|
|
547
|
+
noSubmitProbe: 'This was Codex\'s activation probe: it has no trigger rate, and the leaderboard only takes trigger-rate results, so it cannot be submitted.',
|
|
548
|
+
noSubmitNoRun: 'There is no complete run to submit.',
|
|
354
549
|
'ui.yesWords': 'y,yes',
|
|
355
550
|
'ui.noWords': 'n,no',
|
|
356
551
|
usage: `SkillGauntlet
|
|
@@ -359,6 +554,7 @@ const MESSAGES = {
|
|
|
359
554
|
npx skillgauntlet static <dir> layer 0 only, no model calls
|
|
360
555
|
npx skillgauntlet static <dir> --json
|
|
361
556
|
npx skillgauntlet resume <run-dir> continue an interrupted or stopped run (errors and timeouts are retried)
|
|
557
|
+
npx skillgauntlet submit <run-dir> scrub and submit a run to the public leaderboard (preview first, PR only if you agree; --dry-run previews)
|
|
362
558
|
add --lang zh|ja|en or set SG_LANG to choose the language
|
|
363
559
|
|
|
364
560
|
Layers
|
|
@@ -367,11 +563,59 @@ Layers
|
|
|
367
563
|
2 gain with the skill vs without it, on tasks a program can grade model calls
|
|
368
564
|
|
|
369
565
|
Layer 0 always runs first: it is free, and it disqualifies most problems before you pay.`,
|
|
566
|
+
submitUsage: 'usage: skillgauntlet submit <run-dir> [--dry-run] [--yes] [--github-user NAME] [--skill-dir DIR] [--repo URL --commit SHA [--subdir PATH]] [--out DIR] [--skip-remote-check]',
|
|
567
|
+
submitNoRun: 'cannot read the run in {dir}: it needs meta.json and raw.jsonl',
|
|
568
|
+
submitNoSummary: '{dir} has no summary.json, so the run did not finish. Finish it with `skillgauntlet resume` first.',
|
|
569
|
+
submitNoQueries: '{dir} has no queries.json (runs made before v1.1 did not save their questions). A submission needs them, so this run cannot be submitted; run it again.',
|
|
570
|
+
submitNotTrigger: 'only finished trigger-layer runs on claude-code, codebuddy or codewhale can be submitted (this one is host "{host}", or a probe)',
|
|
571
|
+
submitUnfinished: 'the run in {dir} was interrupted or stopped. Finish it with `skillgauntlet resume` first.',
|
|
572
|
+
submitQueriesChanged: 'queries.json no longer matches the hash recorded in meta.json, so it was edited after the run',
|
|
573
|
+
submitNoSource: 'cannot tell which public repo and commit this skill came from. Run from a git checkout that has an origin remote, or pass --repo https://github.com/owner/repo --commit <40-character sha> [--subdir path].',
|
|
574
|
+
submitBadCommit: '"{commit}" is not a full 40-character commit hash',
|
|
575
|
+
submitDirty: 'the skill checkout has uncommitted changes, so no public commit matches what was tested. Commit or revert them and test again.',
|
|
576
|
+
submitNoSkillMd: 'no SKILL.md in {dir}; pass --skill-dir <the skill directory>',
|
|
577
|
+
submitSkillChanged: 'SKILL.md changed after this run was made, so the result is about a different file',
|
|
578
|
+
submitSecrets: 'after scrubbing, the data still holds text that looks like a secret or a local path, so nothing was packaged:',
|
|
579
|
+
submitInvalid: 'the package does not match schemas/submission-1.json ({n} problems):',
|
|
580
|
+
submitNoUser: 'cannot tell your GitHub login. Log in with `gh auth login`, or pass --github-user <login>.',
|
|
581
|
+
submitRemoteFail: 'could not read SKILL.md from {repo} at commit {commit}. The commit must be pushed to that public repo; CI checks the same thing. (--skip-remote-check is for working offline.)',
|
|
582
|
+
submitRemoteMismatch: 'SKILL.md at {repo}@{commit} hashes to {got}, not {want}: the pinned commit does not match the file that was tested.',
|
|
583
|
+
submitPreviewTitle: 'This is exactly what would be submitted. Nothing has been uploaded yet.',
|
|
584
|
+
submitPreviewSkill: ' skill {skill} ({repo} @ {commit}{subdir})',
|
|
585
|
+
submitPreviewSha: ' SKILL.md sha256 {sha}…',
|
|
586
|
+
submitPreviewRun: ' run {host} {hostVersion}, model {model}; {trials} trials, {questions} questions, runner {runner}',
|
|
587
|
+
submitPreviewResult: ' result grade "{grade}", recall {recall}, false positives {fpr}',
|
|
588
|
+
submitPreviewFiles: ' files {files}',
|
|
589
|
+
submitPreviewScrub: ' scrubbed {what}',
|
|
590
|
+
submitScrubNone: 'nothing needed removing',
|
|
591
|
+
submitPreviewWhere: ' full text {dir} (open the files and read them before you agree)',
|
|
592
|
+
submitPreviewPath: ' goes to submissions/{path}/ in {upstream}',
|
|
593
|
+
submitPublic: 'A submission is a public pull request under your GitHub name, and it stays public. The data is published under CC BY-NC-SA 4.0. Your first pull request asks you to sign the Contributor License Agreement (CLA.md) once, through a link the CLA Assistant bot posts. This tool cannot prove that the trials were really run, and the project does not claim it can; the result starts as a "community single sample".',
|
|
594
|
+
submitAsk: 'Fork {upstream}, push a branch and open the pull request now?',
|
|
595
|
+
submitCancelled: 'Nothing was submitted. The package stays at {dir}.',
|
|
596
|
+
submitDry: 'Dry run: nothing was submitted. The package is at {dir}.',
|
|
597
|
+
submitGhMissing: 'GitHub CLI (gh) is not installed or not logged in, so no pull request can be opened from here.',
|
|
598
|
+
submitManual: 'To submit by hand:\n 1. Fork https://github.com/{upstream} on GitHub, then clone your fork.\n 2. Copy the four files from\n {dir}\n into submissions/{path}/ in your clone, keeping the file names.\n 3. Commit them on a new branch, push it, and open a pull request against the main branch of {upstream}. Pick the "submission" template when GitHub offers it.\n 4. Sign the CLA when the bot asks. CI comments on the pull request within a few minutes.',
|
|
599
|
+
submitForking: ' forking {upstream} (if you have no fork yet)…',
|
|
600
|
+
submitPreparing: ' preparing the branch…',
|
|
601
|
+
submitPushing: ' pushing the branch to your fork…',
|
|
602
|
+
submitOpening: ' opening the pull request…',
|
|
603
|
+
submitPrOpened: 'Pull request opened: {url}',
|
|
604
|
+
submitNext: 'Next: sign the CLA if the bot asks, then wait for the CI comment on the pull request. It says pass, or exactly what is missing. A maintainer does the merging.',
|
|
605
|
+
submitGhFail: 'GitHub step failed: {msg}',
|
|
370
606
|
modelRemap: 'backend {host} remaps Anthropic model names, so "{model}" would test a different model; pass that backend\'s own model id',
|
|
371
607
|
hostMissing: 'Host {host} was not found ({bin} is not on PATH). {how}, or run again and pick another host (Claude Code, CodeBuddy, Codewhale, Codex).',
|
|
372
608
|
installCodebuddy: 'To install: npm install -g @tencent-ai/codebuddy-code',
|
|
373
|
-
installCodewhale: 'To install:
|
|
609
|
+
installCodewhale: 'To install: npm install -g codewhale --allow-scripts=codewhale',
|
|
374
610
|
installClaude: 'To install: npm install -g @anthropic-ai/claude-code',
|
|
611
|
+
hostNotOnPath: '{host} is not on PATH.',
|
|
612
|
+
hostFixQ: 'What now?',
|
|
613
|
+
hostUseFound: 'Use the one found on this computer: {path}',
|
|
614
|
+
hostInstallNow: 'Install it now: {cmd}',
|
|
615
|
+
hostOther: 'Pick another host',
|
|
616
|
+
hostInstalling: 'Installing {host}; its output is shown below, please wait for it to finish…',
|
|
617
|
+
hostInstallFailed: 'The install did not succeed: {why}',
|
|
618
|
+
hostStillMissing: '{host} still was not found after installing. Pick another host, or open a new terminal and run this again.',
|
|
375
619
|
|
|
376
620
|
'report.path': 'Path: ',
|
|
377
621
|
'report.skillMd': 'SKILL.md: {chars} chars ≈ {tokens} tokens; description {desc} chars',
|
|
@@ -496,6 +740,8 @@ Layer 0 always runs first: it is free, and it disqualifies most problems before
|
|
|
496
740
|
srcInstalledHint: '.agents/skills、.claude/skills、.codex/skills を走査',
|
|
497
741
|
srcPath: '別のローカルディレクトリ',
|
|
498
742
|
srcRepo: 'GitHub リポジトリ(未インストール)',
|
|
743
|
+
srcRepoHint: 'owner/repo · 結果を共有できます',
|
|
744
|
+
sourceNote: 'ヒント:結果を公開リーダーボードで共有するなら「GitHub リポジトリ」が最も簡単です。スキルがどのリポジトリのどのコミットかをプログラムが自動で把握します。インストール済みのスキルやローカルフォルダも共有できますが、GitHub の origin を持つ git リポジトリにあり、変更がコミット・プッシュ済みであることが条件です。そうでなければリポジトリとコミットを自分で指定します(結果画面にコマンドが表示されます)。',
|
|
499
745
|
noInstalled: 'このマシンにインストール済みのスキルが見つかりません。',
|
|
500
746
|
foundInstalled: 'インストール済みのスキルが {n} 件見つかりました。',
|
|
501
747
|
scopeQ: 'どれをテストしますか?',
|
|
@@ -504,10 +750,10 @@ Layer 0 always runs first: it is free, and it disqualifies most problems before
|
|
|
504
750
|
scopeOne: '1 件だけ',
|
|
505
751
|
scopeOneHint: '矢印キーで選択',
|
|
506
752
|
pickOneQ: '↑ ↓ で選び、Enter で確定',
|
|
507
|
-
askRepo: 'スキルの取得元(owner/repo
|
|
508
|
-
needRepo: 'owner/repo
|
|
753
|
+
askRepo: 'スキルの取得元(owner/repo または GitHub の URL。1 件だけなら owner/repo/スキル名)',
|
|
754
|
+
needRepo: 'owner/repo または GitHub の URL で入力してください(例:mattpocock/skills)',
|
|
509
755
|
noSkill: 'そのアドレスに SKILL.md が見つかりません。',
|
|
510
|
-
multiFound: '
|
|
756
|
+
multiFound: 'このリポジトリにはスキルが {n} 件あります。',
|
|
511
757
|
notFoundNamed: '{name} というスキルは見つかりません。候補:{list}',
|
|
512
758
|
|
|
513
759
|
hostQ: 'どのホストでテストしますか?',
|
|
@@ -519,11 +765,9 @@ Layer 0 always runs first: it is free, and it disqualifies most problems before
|
|
|
519
765
|
hostCodebuddyHint: '発動率を測定できます(WorkBuddy の背後にある CLI)',
|
|
520
766
|
codebuddyNote: 'CodeBuddy Code では、スキルの呼び出しはイベントストリームに Skill という名前の tool_use として現れ、Claude Code と同じ形です。CodeBuddy アカウントの利用枠を使うため、先に CLI で /login が必要です。このホストでは発動レイヤーのみを実行し、効果レイヤーは実行しません。モデル欄を空にするとアカウントの既定モデル、deepseek-flash と入力すると DeepSeek(DEEPSEEK_API_KEY)を使います。',
|
|
521
767
|
needDeepseekKey: 'DeepSeek のモデルを使うには、先に環境変数 DEEPSEEK_API_KEY を設定してください(変数にのみ置き、キーをコマンドラインやファイルに書かないでください)。',
|
|
522
|
-
codebuddyEstimate: '{skills} 個のスキル × 約 {trials} 回の試行(質問作成 1 回を含む)。CodeBuddy アカウントの利用枠を使い、現金はかかりません。',
|
|
523
768
|
hostCodewhale: 'Codewhale',
|
|
524
769
|
hostCodewhaleHint: '発動率を測定できます(旧 DeepSeek-TUI、DeepSeek のモデルで動作)',
|
|
525
|
-
codewhaleNote: 'Codewhale では、スキルの呼び出しは load_skill という名前のツール呼び出しです。最初の呼び出しの input.name が対象スキルと一致した場合のみ発動とみなします(検索や一覧表示は含みません)。試行は対象スキルだけを入れた使い捨ての HOME で行い、使えるツールは load_skill のみです。DEEPSEEK_API_KEY
|
|
526
|
-
codewhaleEstimate: '{skills} 個のスキル × 約 {trials} 回の試行(質問作成 1 回を含む)。DeepSeek の現金がかかり、1 回あたり数セント程度です。',
|
|
770
|
+
codewhaleNote: 'Codewhale では、スキルの呼び出しは load_skill という名前のツール呼び出しです。最初の呼び出しの input.name が対象スキルと一致した場合のみ発動とみなします(検索や一覧表示は含みません)。試行は対象スキルだけを入れた使い捨ての HOME で行い、使えるツールは load_skill のみです。DEEPSEEK_API_KEY を使います。費用はバックエンドとプランによります。これは Codewhale の数値であり、他のホストの数値とは合算・比較しません。codewhale が PATH 上に必要です(npm install -g codewhale --allow-scripts=codewhale)。',
|
|
527
771
|
codexNote: 'Codex はスキルをホスト側のコンテキストとして注入するため、イベントストリームに「スキルが使われた」という項目がありません(command_execution / file_change / mcp_tool_call などのみ)。ここで発動率を出すと作り話になるので出しません。代わりに有効化プローブを使います:同じリクエストをスキルあり・なしで 1 回ずつ実行し、最初の動作と変更されたファイルを比べます。',
|
|
528
772
|
probeQ: '有効化プローブを実行しますか?(2 回実行)',
|
|
529
773
|
probeRun: 'プローブ実行中(スキルあり、次にスキルなし)…',
|
|
@@ -545,28 +789,40 @@ Layer 0 always runs first: it is free, and it disqualifies most problems before
|
|
|
545
789
|
|
|
546
790
|
depthQ: 'どこまで深くテストしますか?',
|
|
547
791
|
depthQuick: 'クイック',
|
|
548
|
-
depthQuickHint: '約
|
|
792
|
+
depthQuickHint: '約 2〜5 分 · 発動率の簡易チェック(質問少なめ、参考値)',
|
|
549
793
|
depthStandard: '標準',
|
|
550
794
|
depthStandardHint: '約 5 分 · 信頼区間つきの発動率',
|
|
551
795
|
depthDeep: '詳細',
|
|
552
796
|
depthDeepHint: '約 10 分 · 読み取り専用の探索とペア比較の効果測定を追加',
|
|
553
797
|
providerQ: 'どのバックエンドを使いますか?',
|
|
554
798
|
provClaude: 'Claude Code サブスクリプション',
|
|
555
|
-
provClaudeHint: '現金不要、週間の利用枠を消費',
|
|
556
799
|
provDeepseek: 'DeepSeek',
|
|
557
|
-
provDeepseekHint: '現金はごくわずか、サブスクの利用枠は消費しない',
|
|
558
800
|
provManual: 'モデル名を手入力',
|
|
559
801
|
modelQ: 'モデル',
|
|
802
|
+
modelOptionalQ: 'モデル(Enter で既定のモデル)',
|
|
803
|
+
contributeQ: '{n} 件の実行を公開リーダーボードに提供しますか?(ローカルパスとキーを除去し、プレビューを見せたうえで、もう一度同意した後にだけ GitHub のプルリクエストを開きます)',
|
|
804
|
+
waitElapsed: '{s} 秒経過',
|
|
805
|
+
waitAbort: 'モデルの応答を待っています。Ctrl+C で中止できます',
|
|
806
|
+
modelDefault: '既定のモデル',
|
|
807
|
+
modelOther: 'その他(手入力)',
|
|
808
|
+
browseTitle: '↑ ↓ でフォルダを選び、Enter で確定。現在:{dir}',
|
|
809
|
+
browseUse: '✔ このフォルダを使う',
|
|
810
|
+
browseUp: '↑ 一つ上へ',
|
|
811
|
+
browseHome: '⌂ ホームフォルダ',
|
|
812
|
+
browseDrives: 'ドライブを切り替え',
|
|
813
|
+
browseType: '✎ パスを入力…',
|
|
814
|
+
browseHasSkill: 'SKILL.md あり',
|
|
560
815
|
modelCheap: '最安',
|
|
561
816
|
modelDaily: '普段使いに最も近い',
|
|
562
817
|
modelExpensive: '最も高価',
|
|
563
818
|
needBaseUrl: '先にバックエンドを設定してください:\n ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic\n ANTHROPIC_AUTH_TOKEN=<あなたの key>',
|
|
564
819
|
backendLine: 'バックエンド:{backend} モデル:{model}',
|
|
565
|
-
estimate: '実行予定:{skills} 件のスキル × {trials} 回の試行 ≈ 1 件あたり {minutes} 分、合計約 {totalMinutes} 分\n費用はバックエンドとプランによります:サブスクリプションは利用枠を消費し、DeepSeek は従量課金です(ここでは金額を見積もりません)',
|
|
566
820
|
confirmRun: '続行しますか?',
|
|
567
821
|
cancelled: 'キャンセルしました。無料の静的チェックは確認不要です:npx skillgauntlet static <ディレクトリ>',
|
|
568
822
|
staticDone: '静的チェック:{verdicts}',
|
|
569
|
-
drafting: 'テスト用の質問を作成中(モデル呼び出し 1
|
|
823
|
+
drafting: 'テスト用の質問を作成中(モデル呼び出し 1 回、数分かかることがあります)…',
|
|
824
|
+
hostPing: '{host} にサインイン済みか確認中…',
|
|
825
|
+
hostNotReady: '{host} から応答がありません。サインインしていない可能性が高いです。先にその CLI で /login を実行してから、もう一度実行してください。({why})',
|
|
570
826
|
drafted: '{c} 件の発動条項について {q} 問を作成しました(キャッシュ済み、次回は再利用)',
|
|
571
827
|
queriesReused: 'キャッシュ済みの {n} 問({file})を再利用、質問作成の呼び出しを 1 回節約',
|
|
572
828
|
negativesChecked: '否定例 {n} 件すべてに検証可能な借用語があります',
|
|
@@ -584,17 +840,126 @@ Layer 0 always runs first: it is free, and it disqualifies most problems before
|
|
|
584
840
|
resumeMismatch: '再開できません:{what} は元は {was} でしたが、今回は {got} です。条件の異なる記録は統合できません。元の値に戻すか、新しい実行を始めてください。',
|
|
585
841
|
resumeQueriesChanged: '再開できません:質問セットがこの実行で使ったものと一致しません(ファイルが編集されたか、見つかりません)。',
|
|
586
842
|
resumeSkillChanged: '再開できません:この実行の開始後に SKILL.md が変更されています。',
|
|
587
|
-
shareState: '
|
|
843
|
+
shareState: '結果はこのマシンに保存されるだけで、自動的にアップロードされることはありません。実行を公開リーダーボードに提供するには、{cmd} を実行します。ローカルパスやキーを除去し、提出内容をそのまま見せたうえで、同意した後にだけ GitHub のプルリクエストを開きます。',
|
|
588
844
|
inputEnded: '入力が終了しました',
|
|
589
845
|
err: 'エラー:{msg}',
|
|
846
|
+
submitUsage: '使い方:skillgauntlet submit <実行ディレクトリ> [--dry-run] [--yes] [--github-user 名前] [--skill-dir DIR] [--repo URL --commit SHA [--subdir PATH]] [--out DIR] [--skip-remote-check]',
|
|
847
|
+
submitNoRun: '{dir} の実行を読めません:meta.json と raw.jsonl が必要です',
|
|
848
|
+
submitNoSummary: '{dir} に summary.json がないため、この実行は完了していません。先に `skillgauntlet resume` で完了させてください。',
|
|
849
|
+
submitNoQueries: '{dir} に queries.json がありません(v1.1 より前の実行は質問を保存していません)。提出には質問が必要なので、この実行は提出できません。もう一度実行してください。',
|
|
850
|
+
submitNotTrigger: '提出できるのは claude-code、codebuddy、codewhale で完了したトリガー層の実行だけです(この実行のホストは「{host}」か、プローブです)',
|
|
851
|
+
submitUnfinished: '{dir} の実行は中断または停止しています。先に `skillgauntlet resume` で完了させてください。',
|
|
852
|
+
submitQueriesChanged: 'queries.json が meta.json に記録されたハッシュと一致しません。実行後に編集されています',
|
|
853
|
+
submitNoSource: 'このスキルがどの公開リポジトリのどのコミットか分かりません。origin リモートのある git チェックアウトで実行するか、--repo https://github.com/owner/repo --commit <40桁の sha> [--subdir パス] を指定してください。',
|
|
854
|
+
submitBadCommit: '「{commit}」は 40 桁の完全なコミットハッシュではありません',
|
|
855
|
+
submitDirty: 'スキルのチェックアウトに未コミットの変更があり、テストした内容と一致する公開コミットがありません。コミットまたは元に戻して、再テストしてください。',
|
|
856
|
+
submitNoSkillMd: '{dir} に SKILL.md がありません。--skill-dir でスキルのディレクトリを指定してください',
|
|
857
|
+
submitSkillChanged: 'この実行の後で SKILL.md が変更されたため、結果は別のファイルについてのものです',
|
|
858
|
+
submitSecrets: '整理後もデータに秘密情報やローカルパスらしき文字列が残っているため、パッケージ化しませんでした:',
|
|
859
|
+
submitInvalid: 'パッケージが schemas/submission-1.json に一致しません({n} 件):',
|
|
860
|
+
submitNoUser: 'GitHub のログイン名が分かりません。`gh auth login` するか、--github-user <ログイン名> を指定してください。',
|
|
861
|
+
submitRemoteFail: '{repo} のコミット {commit} から SKILL.md を読めませんでした。そのコミットは公開リポジトリにプッシュされている必要があり、CI も同じ確認をします。(オフライン時のみ --skip-remote-check)',
|
|
862
|
+
submitRemoteMismatch: '{repo}@{commit} の SKILL.md のハッシュは {got} で、{want} ではありません。固定したコミットがテストしたファイルと一致しません。',
|
|
863
|
+
submitPreviewTitle: '提出される内容はこれがすべてです。まだ何もアップロードされていません。',
|
|
864
|
+
submitPreviewSkill: ' スキル {skill} ({repo} @ {commit}{subdir})',
|
|
865
|
+
submitPreviewSha: ' SKILL.md sha256 {sha}…',
|
|
866
|
+
submitPreviewRun: ' 実行 {host} {hostVersion}、モデル {model};{trials} 試行、{questions} 問、ランナー {runner}',
|
|
867
|
+
submitPreviewResult: ' 結果 評価「{grade}」、再現率 {recall}、誤トリガー {fpr}',
|
|
868
|
+
submitPreviewFiles: ' ファイル {files}',
|
|
869
|
+
submitPreviewScrub: ' 整理済み {what}',
|
|
870
|
+
submitScrubNone: '除去が必要なものはありませんでした',
|
|
871
|
+
submitPreviewWhere: ' 全文 {dir}(同意する前にファイルを開いて確認してください)',
|
|
872
|
+
submitPreviewPath: ' 提出先 {upstream} の submissions/{path}/',
|
|
873
|
+
submitPublic: '提出はあなたの GitHub 名義の公開プルリクエストで、公開されたままになります。データは CC BY-NC-SA 4.0 で公開されます。最初のプルリクエストでは、CLA Assistant ボットが投稿するリンクから、貢献者ライセンス契約(CLA.md)に一度署名してください。このツールは試行が実際に行われたことを証明できず、プロジェクトも証明できるとは主張しません。結果は「コミュニティ単一サンプル」から始まります。',
|
|
874
|
+
submitAsk: '今すぐ {upstream} を fork してブランチをプッシュし、プルリクエストを開きますか?',
|
|
875
|
+
submitCancelled: '何も提出していません。パッケージは {dir} に残っています。',
|
|
876
|
+
submitDry: 'ドライラン:何も提出していません。パッケージは {dir} にあります。',
|
|
877
|
+
submitGhMissing: 'GitHub CLI(gh)がないかログインしていないため、ここからプルリクエストを開けません。',
|
|
878
|
+
submitManual: '手動で提出する手順:\n 1. GitHub で https://github.com/{upstream} を fork し、自分の fork を clone します。\n 2. \n {dir}\n の 4 つのファイルを、名前のまま clone 内の submissions/{path}/ にコピーします。\n 3. 新しいブランチでコミットしてプッシュし、{upstream} の main ブランチにプルリクエストを開きます。GitHub がテンプレートを出したら「submission」を選びます。\n 4. ボットに求められたら CLA に署名します。数分以内に CI がコメントします。',
|
|
879
|
+
submitForking: ' {upstream} を fork しています(まだ fork がない場合)…',
|
|
880
|
+
submitPreparing: ' ブランチを準備しています…',
|
|
881
|
+
submitPushing: ' ブランチを自分の fork にプッシュしています…',
|
|
882
|
+
submitOpening: ' プルリクエストを開いています…',
|
|
883
|
+
submitPrOpened: 'プルリクエストを開きました:{url}',
|
|
884
|
+
submitNext: '次に、ボットに求められたら CLA に署名し、プルリクエストへの CI コメントを待ちます。コメントには合格か、何が足りないかが正確に書かれます。マージはメンテナが行います。',
|
|
885
|
+
submitGhFail: 'GitHub の手順で失敗しました:{msg}',
|
|
590
886
|
modelRemap: 'バックエンド {host} は Anthropic のモデル名を黙って書き換えるため、「{model}」では指定したモデルをテストできません。そのバックエンド自身のモデル名を指定してください',
|
|
591
887
|
hostMissing: 'ホスト {host} が見つかりません(PATH に {bin} がありません)。{how}。または、もう一度実行して別のホスト(Claude Code、CodeBuddy、Codewhale、Codex)を選んでください。',
|
|
592
888
|
installCodebuddy: 'インストール方法:npm install -g @tencent-ai/codebuddy-code',
|
|
593
|
-
installCodewhale: '
|
|
889
|
+
installCodewhale: 'インストール方法:npm install -g codewhale --allow-scripts=codewhale',
|
|
594
890
|
installClaude: 'インストール方法:npm install -g @anthropic-ai/claude-code',
|
|
891
|
+
hostNotOnPath: '{host} が PATH にありません。',
|
|
892
|
+
hostFixQ: 'どうしますか?',
|
|
893
|
+
hostUseFound: 'このコンピューターで見つかったものを使う:{path}',
|
|
894
|
+
hostInstallNow: '今すぐインストール:{cmd}',
|
|
895
|
+
hostOther: '別のホストを選ぶ',
|
|
896
|
+
hostInstalling: '{host} をインストール中です。出力は下に表示されます。終わるまでお待ちください…',
|
|
897
|
+
hostInstallFailed: 'インストールに失敗しました:{why}',
|
|
898
|
+
hostStillMissing: 'インストール後も {host} が見つかりません。別のホストを選ぶか、新しいターミナルで再実行してください。',
|
|
595
899
|
badSource: 'このアドレスを解釈できません:{spec}(ローカルディレクトリか owner/repo を指定してください)',
|
|
596
900
|
noSkillUnder: '{target} の下に SKILL.md が見つかりません',
|
|
597
901
|
resumeUsage: '使い方:skillgauntlet resume <実行ディレクトリ> [--model M] [--runs N] [--max-explore N]',
|
|
902
|
+
'ui.yes': 'はい(y)',
|
|
903
|
+
'ui.no': 'いいえ(n)',
|
|
904
|
+
backHint: '← または Esc:一つ前に戻る',
|
|
905
|
+
'chart.stats': 'SKILL.md 約 {tokens} トークン · 説明 {desc} 文字 · {files} ファイル',
|
|
906
|
+
'chart.conditions': 'ホスト {host} · モデル {model} · {trials} 回の試行({failed} 回失敗、集計外)',
|
|
907
|
+
'chart.allZero': '一度も発動しませんでした。スキルの出来が悪いというより、ホストがこのスキルを読めていない(パス・インストール・権限)可能性が高いです。下の「代わりに何をしたか」を見て、ホストが読める場所にスキルがあるか確認してください。',
|
|
908
|
+
'chart.missedTitle': '発動すべきなのに発動しなかった {n} 回、モデルは代わりに何をしたか',
|
|
909
|
+
'chart.missedList': '発動しなかった質問(→ 最初に使ったツール)',
|
|
910
|
+
'chart.noTool': 'ツールなし',
|
|
911
|
+
'chart.otherSkill': '別のスキルを使用:{name}',
|
|
912
|
+
'chart.more': '…ほか {n} 件は詳細レポートへ',
|
|
913
|
+
'chart.wrongTitle': '発動すべきでないのに発動した {n} 回',
|
|
914
|
+
modelUnknown: '{host} のモデル一覧に「{model}」はありません。現在対応:{list}。別のものを選ぶか、既定のモデルを選んでください。',
|
|
915
|
+
updateAvail: '新しいバージョン {latest} があります(現在は {current})。',
|
|
916
|
+
updateQ: '更新しますか?',
|
|
917
|
+
updateNow: '更新して再起動',
|
|
918
|
+
updateSkip: '今のバージョンのまま使う(このバージョンは再通知しない)',
|
|
919
|
+
updating: '{latest} をダウンロード中…',
|
|
920
|
+
updateFailed: '更新に失敗しました:{why}。現在の {current} で続行します。',
|
|
921
|
+
waitCloning: 'リポジトリをダウンロード中(大きいものは数十秒かかります)…',
|
|
922
|
+
waitAnalyze: '静的チェックを実行中…',
|
|
923
|
+
waitModels: '{host} のモデル一覧を読み込み中…',
|
|
924
|
+
waitSearch: 'このコンピューターで {host} を検索中…',
|
|
925
|
+
'chart.probeAsk': '同じ依頼を 2 回実行:このスキルあり vs なし。最初の動作と作られたファイルを比較します',
|
|
926
|
+
'chart.firstAction': '最初の動作',
|
|
927
|
+
'chart.filesMade': '作成ファイル',
|
|
928
|
+
'chart.noAction': '(動作なし)',
|
|
929
|
+
'chart.noFiles': '(なし)',
|
|
930
|
+
'chart.probeNoEffect': '読み方:あり/なしでほぼ差がありません。依頼がスキルを必要としないか、スキルが効いていない可能性があります。各 1 回では結論は出せません。',
|
|
931
|
+
'chart.probeEffect': '読み方:作成ファイルが異なるため、スキルの有無で挙動が変わりました。効果はありますが、「スキルを呼び出したから」とは言えず、良くなったとも限りません。',
|
|
932
|
+
'chart.probeMixed': '読み方:最初の動作と成果物のどちらか一方だけが異なり、弱い信号です。各 1 回では結論は出せません。',
|
|
933
|
+
'chart.static': '静的チェック(モデル呼び出しなし)',
|
|
934
|
+
'chart.staticLegend': '✓ 合格 ! 警告(確認推奨) ✗ 不合格(対処推奨)。各項目の説明は詳細レポートに',
|
|
935
|
+
noSubmitNoSource: '今回の結果はまだ自動提出できません:このスキルがどの公開リポジトリのどのコミットか、プログラムには分かりません。\n方法は 2 つあります:\n 1. スキルが GitHub の origin を持つ git リポジトリにあるなら、変更をコミットして GitHub にプッシュし、同じフォルダをもう一度テストします(リーダーボードは公開リポジトリの SKILL.md がテストした内容と一致するか確認します)。\n 2. リポジトリとコミットが分かっているなら、次のコマンドで補います(--subdir はリポジトリ内のスキルのフォルダ。リポジトリ直下なら省略):\n {cmd}',
|
|
936
|
+
'chart.trigger': '発動率:使うべき時にスキルが使われるか',
|
|
937
|
+
'chart.verdict': '評価',
|
|
938
|
+
'chart.grade.well': '正確に発動',
|
|
939
|
+
'chart.grade.fair': '発動はまずまず',
|
|
940
|
+
'chart.grade.poorly': '発動に明らかな問題あり',
|
|
941
|
+
'chart.grade.insufficient': 'サンプルが少なく参考値',
|
|
942
|
+
'chart.recall': '発動すべき時に発動',
|
|
943
|
+
'chart.fpr': '発動すべきでない時に発動',
|
|
944
|
+
'chart.ci': '95% 区間 {lo}–{hi}',
|
|
945
|
+
'chart.legend': '質問ごと:● 発動 ◐ たまに発動 ○ 発動せず',
|
|
946
|
+
'chart.should': '発動すべき質問',
|
|
947
|
+
'chart.shouldNot': '発動すべきでない質問',
|
|
948
|
+
'chart.incomplete': '{n} 回の試行が完了していません。数値は完了分のみです',
|
|
949
|
+
'chart.probe': '有効化プローブ:あり/なしで動作は同じか',
|
|
950
|
+
'chart.probeNote': 'Codex では「スキルが使われた」が見えないため、ここに発動率はありません。',
|
|
951
|
+
'chart.gain': '効果:スキルがあると結果が良くなるか',
|
|
952
|
+
'chart.gainLegend': '各項目はプログラムが採点できる要件です。バーが長いほど満たしています',
|
|
953
|
+
'chart.full': '詳細レポート:{path}',
|
|
954
|
+
progressLine: '試行',
|
|
955
|
+
draftFirst: 'まず各スキルのテスト用質問を作成します(スキルごとにモデル呼び出し 1 回)。その後、試行回数を正確にお知らせし、同意いただいてから試行を開始します。費用はバックエンドとプランによります。',
|
|
956
|
+
trialsQ: '質問 {q} 件 × {runs} 回 = {n} 回の試行、約 {minutes} 分。',
|
|
957
|
+
trialsGo: '試行を開始する',
|
|
958
|
+
trialsAll: '開始し、以降のスキルでは確認しない',
|
|
959
|
+
trialsSkip: 'これは実行しない',
|
|
960
|
+
trialsDeclined: '試行は実行しませんでした。質問はキャッシュ済みで、次回は再作成されません。',
|
|
961
|
+
noSubmitProbe: '今回は Codex の有効化プローブで、発動率がなく、リーダーボードは発動率の結果のみ受け付けるため提出できません。',
|
|
962
|
+
noSubmitNoRun: '提出できる完了済みの実行がありません。',
|
|
598
963
|
'ui.yesWords': 'y,yes,はい,ハイ',
|
|
599
964
|
'ui.noWords': 'n,no,いいえ,イイエ',
|
|
600
965
|
usage: `SkillGauntlet
|
|
@@ -603,6 +968,7 @@ Layer 0 always runs first: it is free, and it disqualifies most problems before
|
|
|
603
968
|
npx skillgauntlet static <ディレクトリ> 層 0 のみ実行(モデル呼び出しなし)
|
|
604
969
|
npx skillgauntlet static <ディレクトリ> --json
|
|
605
970
|
npx skillgauntlet resume <実行ディレクトリ> 中断または自動停止した実行を再開(エラーとタイムアウトは再試行)
|
|
971
|
+
npx skillgauntlet submit <実行ディレクトリ> 整理して公開リーダーボードに提出(先にプレビュー、同意後にのみ PR;--dry-run はプレビューのみ)
|
|
606
972
|
--lang zh|ja|en または環境変数 SG_LANG で言語を指定できます
|
|
607
973
|
|
|
608
974
|
層
|