@su-record/vibe 4.2.39 → 4.2.41
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/dist/cli/common.js +1 -1
- package/dist/cli/heldout.js +3 -3
- package/dist/cli/heldout.js.map +1 -1
- package/dist/cli/human.js +4 -3
- package/dist/cli/human.js.map +1 -1
- package/dist/cli/memory.js +16 -2
- package/dist/cli/memory.js.map +1 -1
- package/dist/cli/setup.js +3 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/work.js +3 -1
- package/dist/cli/work.js.map +1 -1
- package/dist/core/catalogs.js +49 -0
- package/dist/core/catalogs.js.map +1 -0
- package/dist/core/config.js +8 -3
- package/dist/core/config.js.map +1 -1
- package/dist/core/github.js +14 -0
- package/dist/core/github.js.map +1 -1
- package/dist/core/intent.js +6 -6
- package/dist/core/intent.js.map +1 -1
- package/dist/core/research.js +82 -63
- package/dist/core/research.js.map +1 -1
- package/dist/core/skill-index.js +205 -0
- package/dist/core/skill-index.js.map +1 -0
- package/dist/core/skills-sh.js +82 -0
- package/dist/core/skills-sh.js.map +1 -0
- package/dist/core/skills.js +5 -0
- package/dist/core/skills.js.map +1 -1
- package/dist/core/skillsmp.js +27 -23
- package/dist/core/skillsmp.js.map +1 -1
- package/hooks/locations.cjs +1 -1
- package/hooks/notify.js +29 -9
- package/internal/guides/extensions.md +1 -1
- package/internal/skills/vibe-scope/SKILL.md +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import YAML from 'yaml';
|
|
3
|
+
import { catalogDomain } from './catalogs.js';
|
|
4
|
+
import { defaultHome, FOLDERS, vibeConfig } from './locations.js';
|
|
5
|
+
import { DAY_MS } from './recent.js';
|
|
6
|
+
import { readJson, writeJson, nowIso } from './store.js';
|
|
7
|
+
const INDEX_VERSION = 2;
|
|
8
|
+
/** SKILL.md files read at once while a catalog is indexed. */
|
|
9
|
+
const READ_CONCURRENCY = 16;
|
|
10
|
+
const DESCRIPTION_MAX = 300;
|
|
11
|
+
const SCRIPT_FILE = /\.(py|js|mjs|cjs|ts|sh)$/;
|
|
12
|
+
/** Text that only works where the skill was written: Claude's plugin folder and subagent tool, Codex's own commands. */
|
|
13
|
+
const CONVERT_SIGNS = [
|
|
14
|
+
[/CLAUDE_PLUGIN_ROOT/, 'Claude plugin path CLAUDE_PLUGIN_ROOT'],
|
|
15
|
+
[/subagent_type|\bTask tool\b/, 'Claude subagent tool'],
|
|
16
|
+
[/\bclaude plugin\b|\/plugin install/, 'Claude plugin command'],
|
|
17
|
+
];
|
|
18
|
+
/** Tool names one host has and the other lacks; the model can usually substitute them. */
|
|
19
|
+
const ADJUST_SIGNS = [
|
|
20
|
+
[/\b(AskUserQuestion|TodoWrite|ExitPlanMode|WebFetch)\b/, 'Claude tool name'],
|
|
21
|
+
[/\bclaude -p\b/, 'Claude CLI call'],
|
|
22
|
+
[/\bcodex exec\b|\brequest_user_input\b/, 'Codex-only command'],
|
|
23
|
+
];
|
|
24
|
+
const MCP_SIGN = /\bmcp__|\bMCP server\b/i;
|
|
25
|
+
/** One tree request per catalog; a skill is any directory holding SKILL.md, at any depth under `skills/` or the root. */
|
|
26
|
+
export function skillDirsInTree(entries) {
|
|
27
|
+
const out = [];
|
|
28
|
+
for (const e of entries) {
|
|
29
|
+
if (e.type !== 'blob' || !e.path || path.posix.basename(e.path) !== 'SKILL.md')
|
|
30
|
+
continue;
|
|
31
|
+
const dir = path.posix.dirname(e.path);
|
|
32
|
+
if (dir === '.' || dir.includes('node_modules') || dir.includes('/tests/'))
|
|
33
|
+
continue;
|
|
34
|
+
out.push({ name: dir.startsWith('skills/') ? dir.slice('skills/'.length) : dir, dir });
|
|
35
|
+
}
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
function frontmatter(text) {
|
|
39
|
+
const block = /^---\r?\n([\s\S]*?)\r?\n---/.exec(text)?.[1];
|
|
40
|
+
if (!block)
|
|
41
|
+
return { name: '', description: '' };
|
|
42
|
+
try {
|
|
43
|
+
const data = YAML.parse(block);
|
|
44
|
+
const field = (key) => (typeof data?.[key] === 'string' ? data[key].trim() : '');
|
|
45
|
+
return { name: field('name'), description: field('description') };
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return { name: '', description: '' };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/** Whether a skill runs on Claude and Codex as is, after adjusting a few lines, or only after conversion. */
|
|
52
|
+
export function classifySkill(text, files) {
|
|
53
|
+
const fm = frontmatter(text);
|
|
54
|
+
const reasons = [];
|
|
55
|
+
for (const [sign, reason] of CONVERT_SIGNS)
|
|
56
|
+
if (sign.test(text))
|
|
57
|
+
reasons.push(reason);
|
|
58
|
+
const converts = reasons.length > 0;
|
|
59
|
+
for (const [sign, reason] of ADJUST_SIGNS)
|
|
60
|
+
if (sign.test(text))
|
|
61
|
+
reasons.push(reason);
|
|
62
|
+
if (!fm.name || !fm.description)
|
|
63
|
+
reasons.push('frontmatter lacks name or description');
|
|
64
|
+
const needs = [];
|
|
65
|
+
if (files.some((f) => SCRIPT_FILE.test(f)))
|
|
66
|
+
needs.push('scripts');
|
|
67
|
+
if (MCP_SIGN.test(text))
|
|
68
|
+
needs.push('MCP server');
|
|
69
|
+
const install = converts ? 'convert' : reasons.length > 0 || needs.includes('MCP server') ? 'adjust' : 'direct';
|
|
70
|
+
return { description: fm.description.slice(0, DESCRIPTION_MAX), install, reasons, needs };
|
|
71
|
+
}
|
|
72
|
+
async function readSkill(client, repo, file, ref) {
|
|
73
|
+
if (client.raw)
|
|
74
|
+
return client.raw(repo, file, ref);
|
|
75
|
+
const entry = (await client.get(`/repos/${repo}/contents/${file}${ref ? `?ref=${ref}` : ''}`));
|
|
76
|
+
if (typeof entry.content !== 'string')
|
|
77
|
+
return '';
|
|
78
|
+
return entry.encoding === 'base64' ? Buffer.from(entry.content, 'base64').toString('utf-8') : entry.content;
|
|
79
|
+
}
|
|
80
|
+
async function mapPool(items, limit, fn) {
|
|
81
|
+
const out = new Array(items.length);
|
|
82
|
+
let next = 0;
|
|
83
|
+
const worker = async () => {
|
|
84
|
+
while (next < items.length) {
|
|
85
|
+
const i = next++;
|
|
86
|
+
out[i] = await fn(items[i]);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
await Promise.all(Array.from({ length: Math.min(limit, items.length) }, worker));
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
/** A skill a catalog also ships as a build or example copy (same folder name and description) is kept once, at its shortest path. */
|
|
93
|
+
function withoutCopies(skills) {
|
|
94
|
+
const kept = new Map();
|
|
95
|
+
for (const skill of skills) {
|
|
96
|
+
const key = `${path.posix.basename(skill.dir)}\n${skill.description}`;
|
|
97
|
+
const seen = kept.get(key);
|
|
98
|
+
if (!seen || skill.dir.length < seen.dir.length)
|
|
99
|
+
kept.set(key, skill);
|
|
100
|
+
}
|
|
101
|
+
return [...kept.values()];
|
|
102
|
+
}
|
|
103
|
+
function indexFile(home, repo) {
|
|
104
|
+
return vibeConfig(home, FOLDERS.skillIndex, `${repo.replace('/', '__')}.json`);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* A catalog's index: the saved one while it was checked today or its tree is unchanged, else rebuilt (always with
|
|
108
|
+
* `refresh`, or when it was built by another version). A catalog GitHub cannot answer keeps its saved index; with
|
|
109
|
+
* none saved it is left out (null).
|
|
110
|
+
*/
|
|
111
|
+
export async function catalogIndex(client, repo, options = {}) {
|
|
112
|
+
const file = indexFile(options.home ?? defaultHome(), repo);
|
|
113
|
+
const now = options.now ?? Date.now();
|
|
114
|
+
const stored = readJson(file);
|
|
115
|
+
const saved = stored?.version === INDEX_VERSION ? stored : null;
|
|
116
|
+
if (saved && !options.refresh && now - new Date(saved.checkedAt).getTime() < DAY_MS)
|
|
117
|
+
return saved;
|
|
118
|
+
let tree;
|
|
119
|
+
try {
|
|
120
|
+
tree = (await client.get(`/repos/${repo}/git/trees/HEAD?recursive=1`));
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return stored;
|
|
124
|
+
}
|
|
125
|
+
const checkedAt = new Date(now).toISOString();
|
|
126
|
+
if (saved && !options.refresh && tree.sha && saved.tree === tree.sha) {
|
|
127
|
+
const kept = { ...saved, checkedAt };
|
|
128
|
+
writeJson(file, kept);
|
|
129
|
+
return kept;
|
|
130
|
+
}
|
|
131
|
+
let meta = {};
|
|
132
|
+
try {
|
|
133
|
+
meta = (await client.get(`/repos/${repo}`));
|
|
134
|
+
}
|
|
135
|
+
catch { /* stars and license stay unknown */ }
|
|
136
|
+
const entries = tree.tree ?? [];
|
|
137
|
+
const skills = await mapPool(skillDirsInTree(entries), READ_CONCURRENCY, async ({ name, dir }) => {
|
|
138
|
+
const files = entries.filter((e) => e.type === 'blob' && e.path?.startsWith(`${dir}/`)).map((e) => e.path);
|
|
139
|
+
let text = '';
|
|
140
|
+
try {
|
|
141
|
+
text = await readSkill(client, repo, `${dir}/SKILL.md`);
|
|
142
|
+
}
|
|
143
|
+
catch { /* indexed by its name alone */ }
|
|
144
|
+
return { name, dir, ...classifySkill(text, files) };
|
|
145
|
+
});
|
|
146
|
+
const index = {
|
|
147
|
+
version: INDEX_VERSION, repo, domain: catalogDomain(repo), tree: tree.sha ?? nowIso(), checkedAt,
|
|
148
|
+
stars: meta.stargazers_count ?? null, license: meta.license?.spdx_id ?? null, skills: withoutCopies(skills),
|
|
149
|
+
};
|
|
150
|
+
writeJson(file, index);
|
|
151
|
+
return index;
|
|
152
|
+
}
|
|
153
|
+
/** Every catalog's index; the ones GitHub could not answer and that have none saved are named in `missing`. */
|
|
154
|
+
export async function indexCatalogs(client, catalogs, options = {}) {
|
|
155
|
+
const indexes = [];
|
|
156
|
+
const missing = [];
|
|
157
|
+
for (const repo of catalogs) {
|
|
158
|
+
const index = await catalogIndex(client, repo, options);
|
|
159
|
+
if (index)
|
|
160
|
+
indexes.push(index);
|
|
161
|
+
else
|
|
162
|
+
missing.push(repo);
|
|
163
|
+
}
|
|
164
|
+
return { indexes, missing };
|
|
165
|
+
}
|
|
166
|
+
/** SKILL.md files opened to match a declared name; a larger repository needs the skill's folder in the ref. */
|
|
167
|
+
const NAME_LOOKUP_MAX = 100;
|
|
168
|
+
/**
|
|
169
|
+
* The folder of a skill named in a ref at a commit: a folder of that name, else the one whose SKILL.md declares it
|
|
170
|
+
* as its `name` (skills.sh names skills that way), shortest path first; null when neither is found.
|
|
171
|
+
*/
|
|
172
|
+
export async function skillDirByName(client, repo, sha, name) {
|
|
173
|
+
let tree;
|
|
174
|
+
try {
|
|
175
|
+
tree = (await client.get(`/repos/${repo}/git/trees/${sha}?recursive=1`));
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
const dirs = skillDirsInTree(tree.tree ?? []).map((s) => s.dir).sort((a, b) => a.length - b.length);
|
|
181
|
+
const byFolder = dirs.find((d) => path.posix.basename(d) === name);
|
|
182
|
+
if (byFolder)
|
|
183
|
+
return byFolder;
|
|
184
|
+
const declared = await mapPool(dirs.slice(0, NAME_LOOKUP_MAX), READ_CONCURRENCY, async (d) => {
|
|
185
|
+
try {
|
|
186
|
+
return frontmatter(await readSkill(client, repo, `${d}/SKILL.md`, sha)).name;
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
return '';
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
return dirs[declared.indexOf(name)] ?? null;
|
|
193
|
+
}
|
|
194
|
+
const HOW = {
|
|
195
|
+
direct: 'Claude and Codex: install as is',
|
|
196
|
+
adjust: 'Claude and Codex after adjusting',
|
|
197
|
+
convert: 'as is on Claude only; Codex needs conversion',
|
|
198
|
+
};
|
|
199
|
+
/** How a skill can be used, for the line a search shows: the mode, its reasons and what it needs. */
|
|
200
|
+
export function usability(skill) {
|
|
201
|
+
const reasons = skill.reasons.length ? ` (${skill.reasons.join(', ')})` : '';
|
|
202
|
+
const needs = skill.needs.length ? ` · needs ${skill.needs.join(', ')}` : '';
|
|
203
|
+
return `${HOW[skill.install]}${reasons}${needs}`;
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=skill-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-index.js","sourceRoot":"","sources":["../../src/core/skill-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { fetchBoundedJson } from './skillsmp.js';
|
|
2
|
+
/**
|
|
3
|
+
* skills.sh, the registry behind `npx skills find`: a public search with no key that reports how many times each
|
|
4
|
+
* skill was installed. The endpoint is the one that CLI calls, not a documented API, so a failure only drops it.
|
|
5
|
+
*/
|
|
6
|
+
const ENDPOINT = 'https://skills.sh/api/search';
|
|
7
|
+
/** Skills asked of the registry; the ones under the install floor or marked as copies are dropped from these. */
|
|
8
|
+
const REQUEST_LIMIT = 10;
|
|
9
|
+
const RESULT_LIMIT = 5;
|
|
10
|
+
const QUERY_MAX = 200;
|
|
11
|
+
/** Fewer installs than this is treated as noise: the registry's own find skill warns below 100. */
|
|
12
|
+
export const MIN_INSTALLS = 100;
|
|
13
|
+
/** Install counts can be inflated (forks of one repository each report hundreds of thousands), so the source repository needs this many stars. */
|
|
14
|
+
export const MIN_STARS = 100;
|
|
15
|
+
/** Ranks after the scored candidates it is interleaved with, higher with more installs, never above a matching catalog skill. */
|
|
16
|
+
const HINT_SCORE = 3;
|
|
17
|
+
const INSTALLS_DIVISOR = 2;
|
|
18
|
+
const INSTALLS_MAX = 3;
|
|
19
|
+
const SOURCE = /^[\w-]+\/[\w.-]+$/;
|
|
20
|
+
const SKILL_ID = /^[\w][\w.-]*$/;
|
|
21
|
+
export const SKILLS_SH_UNAVAILABLE = 'skills.sh unavailable, limited or invalid; using the other sources';
|
|
22
|
+
export function skillsShCandidate(value) {
|
|
23
|
+
if (!value || typeof value !== 'object')
|
|
24
|
+
return null;
|
|
25
|
+
const item = value;
|
|
26
|
+
const { source, skillId, installs } = item;
|
|
27
|
+
if (typeof source !== 'string' || !SOURCE.test(source) || typeof skillId !== 'string' || !SKILL_ID.test(skillId))
|
|
28
|
+
return null;
|
|
29
|
+
if (source.split('/').some(p => p === '.' || p === '..') || skillId === '..')
|
|
30
|
+
return null;
|
|
31
|
+
if (item.isDuplicate === true || typeof installs !== 'number' || installs < MIN_INSTALLS)
|
|
32
|
+
return null;
|
|
33
|
+
const ref = `${source}@${skillId}`;
|
|
34
|
+
return { kind: 'skill', ref, url: `https://github.com/${source}`, installs,
|
|
35
|
+
why: `skills.sh ${installs.toLocaleString('en-US')} installs (registry count, unverified; inspect the GitHub source)`,
|
|
36
|
+
stars: null, updatedAt: null, license: null, action: `vibe skill add ${ref}`,
|
|
37
|
+
score: HINT_SCORE + Math.min(Math.log10(installs) / INSTALLS_DIVISOR, INSTALLS_MAX) };
|
|
38
|
+
}
|
|
39
|
+
export function skillsShClient(request = fetch) {
|
|
40
|
+
return { unavailable: SKILLS_SH_UNAVAILABLE, search: async (query) => {
|
|
41
|
+
const url = new URL(ENDPOINT);
|
|
42
|
+
url.searchParams.set('q', query.slice(0, QUERY_MAX));
|
|
43
|
+
url.searchParams.set('limit', String(REQUEST_LIMIT));
|
|
44
|
+
try {
|
|
45
|
+
const doc = await fetchBoundedJson(request, url, { Accept: 'application/json' });
|
|
46
|
+
if (!Array.isArray(doc?.skills))
|
|
47
|
+
throw new Error('invalid response');
|
|
48
|
+
const found = doc.skills.map(skillsShCandidate).filter((c) => c !== null)
|
|
49
|
+
.sort((a, b) => (b.installs ?? 0) - (a.installs ?? 0));
|
|
50
|
+
// Mirrors of one skill share its name; the most installed one stands for them.
|
|
51
|
+
const leaf = (c) => c.ref.split('@')[1].toLowerCase();
|
|
52
|
+
return found.filter((c, i) => found.findIndex(o => leaf(o) === leaf(c)) === i).slice(0, RESULT_LIMIT);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
throw new Error(SKILLS_SH_UNAVAILABLE);
|
|
56
|
+
}
|
|
57
|
+
} };
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Registry hits whose GitHub repository has the stars to back the install count; a hit GitHub cannot answer for is
|
|
61
|
+
* kept with its stars unknown, so a GitHub outage does not empty the registry's answer.
|
|
62
|
+
*/
|
|
63
|
+
export async function withSourceStars(github, candidates) {
|
|
64
|
+
const checked = await Promise.all(candidates.map(async (c) => {
|
|
65
|
+
if (c.installs === undefined)
|
|
66
|
+
return c;
|
|
67
|
+
const repo = c.ref.split('@')[0];
|
|
68
|
+
let meta;
|
|
69
|
+
try {
|
|
70
|
+
meta = (await github.get(`/repos/${repo}`));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return c;
|
|
74
|
+
}
|
|
75
|
+
const stars = meta.stargazers_count ?? 0;
|
|
76
|
+
if (stars < MIN_STARS)
|
|
77
|
+
return null;
|
|
78
|
+
return { ...c, stars, license: meta.license?.spdx_id ?? null, why: c.why.replace(' (registry', ` · ${stars.toLocaleString('en-US')} stars (registry`) };
|
|
79
|
+
}));
|
|
80
|
+
return checked.filter((c) => c !== null);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=skills-sh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-sh.js","sourceRoot":"","sources":["../../src/core/skills-sh.ts"],"names":[],"mappings":"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"}
|
package/dist/core/skills.js
CHANGED
|
@@ -14,6 +14,7 @@ import { hostKey } from './research-queries.js';
|
|
|
14
14
|
import { CLAUDE_DIR, CODEX_DIR } from './locations.js';
|
|
15
15
|
import { readState } from './state.js';
|
|
16
16
|
import { HTTP_OK } from './checks/http.js';
|
|
17
|
+
import { skillDirByName } from './skill-index.js';
|
|
17
18
|
/**
|
|
18
19
|
* Project-local skills. Nothing accumulates globally: a skill lives in this repository's
|
|
19
20
|
* `.vibe/skills/installed`, is registered in `.vibe/skills/registry.json`, and is
|
|
@@ -156,6 +157,10 @@ async function locateSkill(client, owner, repo, name, sha) {
|
|
|
156
157
|
/* try the next layout */
|
|
157
158
|
}
|
|
158
159
|
}
|
|
160
|
+
// A registry names a skill by its folder or its declared name; the folder can sit anywhere in the repository.
|
|
161
|
+
const dir = name ? await skillDirByName(client, `${owner}/${repo}`, sha, path.posix.basename(name)) : null;
|
|
162
|
+
if (dir)
|
|
163
|
+
return { dir, entries: (await client.get(`/repos/${owner}/${repo}/contents/${dir}?ref=${sha}`)) };
|
|
159
164
|
throw usage(`no SKILL.md found in ${owner}/${repo}${name ? ` for ${name}` : ''} at ${sha.slice(0, SHORT_SHA)}`);
|
|
160
165
|
}
|
|
161
166
|
const MAX_SKILL_FILES = 200;
|
package/dist/core/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/core/skillsmp.js
CHANGED
|
@@ -38,6 +38,32 @@ export function skillsmpCandidate(value) {
|
|
|
38
38
|
return { kind: 'skill', ref, url: item.githubUrl, why: `SkillsMP discovery (unverified): ${description}`,
|
|
39
39
|
stars: null, updatedAt: null, license: null, action: `vibe skill add ${ref}`, score: HINT_SCORE };
|
|
40
40
|
}
|
|
41
|
+
/** A JSON answer from a fixed endpoint: no redirect, a timeout and a size cap; any failure throws. */
|
|
42
|
+
export async function fetchBoundedJson(request, url, headers) {
|
|
43
|
+
const response = await request(url, { headers, redirect: 'error', signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS) });
|
|
44
|
+
if (!response.ok)
|
|
45
|
+
throw new Error(`HTTP ${response.status}`);
|
|
46
|
+
const reader = response.body?.getReader();
|
|
47
|
+
if (!reader)
|
|
48
|
+
throw new Error('missing response');
|
|
49
|
+
const chunks = [];
|
|
50
|
+
let size = 0;
|
|
51
|
+
try {
|
|
52
|
+
for (;;) {
|
|
53
|
+
const { done, value } = await reader.read();
|
|
54
|
+
if (done)
|
|
55
|
+
break;
|
|
56
|
+
size += value.byteLength;
|
|
57
|
+
if (size > MAX_BYTES)
|
|
58
|
+
throw new Error('response too large');
|
|
59
|
+
chunks.push(value);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
await reader.cancel().catch(() => { });
|
|
64
|
+
}
|
|
65
|
+
return JSON.parse(Buffer.concat(chunks).toString('utf8'));
|
|
66
|
+
}
|
|
41
67
|
export function skillsmpClient(request = fetch) {
|
|
42
68
|
return { search: async (query) => {
|
|
43
69
|
const headers = { Accept: 'application/json' };
|
|
@@ -48,29 +74,7 @@ export function skillsmpClient(request = fetch) {
|
|
|
48
74
|
url.searchParams.set('q', query.slice(0, QUERY_MAX));
|
|
49
75
|
url.searchParams.set('limit', String(RESULT_LIMIT));
|
|
50
76
|
try {
|
|
51
|
-
const
|
|
52
|
-
if (!response.ok)
|
|
53
|
-
throw new Error(`HTTP ${response.status}`);
|
|
54
|
-
const reader = response.body?.getReader();
|
|
55
|
-
if (!reader)
|
|
56
|
-
throw new Error('missing response');
|
|
57
|
-
const chunks = [];
|
|
58
|
-
let size = 0;
|
|
59
|
-
try {
|
|
60
|
-
for (;;) {
|
|
61
|
-
const { done, value } = await reader.read();
|
|
62
|
-
if (done)
|
|
63
|
-
break;
|
|
64
|
-
size += value.byteLength;
|
|
65
|
-
if (size > MAX_BYTES)
|
|
66
|
-
throw new Error('response too large');
|
|
67
|
-
chunks.push(value);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
await reader.cancel().catch(() => { });
|
|
72
|
-
}
|
|
73
|
-
const doc = JSON.parse(Buffer.concat(chunks).toString('utf8'));
|
|
77
|
+
const doc = await fetchBoundedJson(request, url, headers);
|
|
74
78
|
if (doc?.success !== true || !Array.isArray(doc.data?.skills))
|
|
75
79
|
throw new Error('invalid response');
|
|
76
80
|
return doc.data.skills.slice(0, RESULT_LIMIT).map(skillsmpCandidate)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillsmp.js","sourceRoot":"","sources":["../../src/core/skillsmp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skillsmp.js","sourceRoot":"","sources":["../../src/core/skillsmp.ts"],"names":[],"mappings":"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"}
|
package/hooks/locations.cjs
CHANGED
|
@@ -27,7 +27,7 @@ const SETTINGS = {
|
|
|
27
27
|
retest: 'retest.json',
|
|
28
28
|
};
|
|
29
29
|
/** Folders under ~/.config/vibe. */
|
|
30
|
-
const FOLDERS = { knowledge: 'knowledge', reader: 'reader', plugin: 'plugin' };
|
|
30
|
+
const FOLDERS = { knowledge: 'knowledge', reader: 'reader', plugin: 'plugin', skillIndex: 'skill-index' };
|
|
31
31
|
|
|
32
32
|
module.exports = {
|
|
33
33
|
CLAUDE_DIR, CODEX_DIR, AGENTS_DIR, VIBE_CONFIG_DIR, SETTINGS, FOLDERS,
|
package/hooks/notify.js
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* post PostToolUse(Edit|Write): runs `vibe state --json` and tells the model about a voided DONE or open inbox items.
|
|
6
6
|
* pre PreToolUse(Bash): an irreversible command with no recent authorize record is blocked (exit 2) under the
|
|
7
|
-
* strict and
|
|
7
|
+
* strict, irreversible and human token policies, and only warned about under off. Under human the model's
|
|
8
|
+
* own approve, authorize, held-out seal or drop and inbox answer are blocked: those are the person's commands.
|
|
8
9
|
* Partial Bash reads of protected files are blocked; other source/document slices are warned.
|
|
9
10
|
* A test command that already passed on unchanged code is blocked or warned about (retest.cjs).
|
|
10
11
|
* PreToolUse(Read): when the file is over READ_ADVISE_LINES, tells the model that `vibe read <file> --ask`
|
|
@@ -103,6 +104,11 @@ const IRREVERSIBLE = [
|
|
|
103
104
|
['apply', /\bterraform\s+apply\b|\bkubectl\s+apply\b/i],
|
|
104
105
|
['send', /\b(sendmail|mail\s+-s|curl\s+[^|]*-X\s*POST)\b/],
|
|
105
106
|
];
|
|
107
|
+
// Under the `human` token policy approving and authorizing are the person's own commands. Claude Code runs a
|
|
108
|
+
// `! vibe approve` typed in the prompt without calling this hook, so only the model's call reaches it and is stopped.
|
|
109
|
+
const PERSON_ONLY = /(?:^|[\s/])(?:vibe|cli\.js)\s+(?:approve|authorize|heldout\s+(?:seal|drop)|inbox\s+answer)\b/;
|
|
110
|
+
const PREVIEW = /\s--preview\b/;
|
|
111
|
+
const HUMAN_POLICY = 'human';
|
|
106
112
|
const READS_ONLY = /^\s*(?:grep|rg|cat|head|tail|less|ls|find|wc|echo|printf|sed\s+-n|git\s+(?:log|diff|show|status|grep|blame|branch|ls-files))\b/;
|
|
107
113
|
|
|
108
114
|
const hasProjectDir = () => fs.existsSync(path.join(root, PROJECT_DIR));
|
|
@@ -126,15 +132,26 @@ function recentAuthorize(action) {
|
|
|
126
132
|
|
|
127
133
|
if (!ANYWHERE_MODES.includes(mode) && !hasProjectDir()) process.exit(0);
|
|
128
134
|
|
|
129
|
-
function irreversibleNotice(action,
|
|
135
|
+
function irreversibleNotice(action, policy) {
|
|
136
|
+
const blocking = policy !== 'off';
|
|
137
|
+
const how = policy === HUMAN_POLICY
|
|
138
|
+
? `ask the user to type \`! vibe authorize --action ${action}\` in the prompt or run it in their terminal,`
|
|
139
|
+
: `get a human token with \`vibe ask --needs authorize:${action}\` and run \`vibe authorize\` first,`;
|
|
130
140
|
return [
|
|
131
141
|
`[vibe] "${action}" is irreversible and no authorize record exists in the last ${AUTHORIZE_WINDOW_MS / MS_PER_MINUTE} minutes —`,
|
|
132
|
-
`${blocking ? 'blocked: ' : ''}
|
|
133
|
-
'
|
|
142
|
+
`${blocking ? 'blocked: ' : ''}${how}`,
|
|
143
|
+
'as its own command: the gate reads the ledger before this command runs,',
|
|
134
144
|
'so an authorize chained in front of the action is not seen',
|
|
135
145
|
].join(' ');
|
|
136
146
|
}
|
|
137
147
|
|
|
148
|
+
function personNotice(segment) {
|
|
149
|
+
return [
|
|
150
|
+
`[vibe] blocked: under tokens: human, \`${segment}\` is the user's own command —`,
|
|
151
|
+
`stop and ask the user to type \`! ${segment}\` in the prompt (Claude Code) or run it in their terminal`,
|
|
152
|
+
].join(' ');
|
|
153
|
+
}
|
|
154
|
+
|
|
138
155
|
function tokenPolicy() {
|
|
139
156
|
try {
|
|
140
157
|
return JSON.parse(fs.readFileSync(path.join(root, PROJECT_DIR, 'config.json'), 'utf-8')).tokens || 'off';
|
|
@@ -212,14 +229,17 @@ if (mode === 'pre') {
|
|
|
212
229
|
if (slice.decision === 'warn') notes.push(slice.message);
|
|
213
230
|
if (!hasProjectDir()) leave(0);
|
|
214
231
|
// Every segment is judged — `echo x && git push`, `ls; rm -rf build`, `cat x | git push` carry the action in a later one
|
|
232
|
+
const parts = command.split(/&&|\|\||;|\||\n/).map((s) => s.trim()).filter(Boolean);
|
|
233
|
+
const policy = tokenPolicy();
|
|
234
|
+
const ownCommand = policy === HUMAN_POLICY && parts.find((s) => PERSON_ONLY.test(s) && !PREVIEW.test(s));
|
|
235
|
+
if (ownCommand) { process.stderr.write(`${personNotice(ownCommand)}\n`); process.exit(BLOCK_EXIT); }
|
|
215
236
|
// Vibe gates its own execution; its approval and inbox commands must remain reachable.
|
|
216
|
-
const segments =
|
|
217
|
-
// Under strict and
|
|
237
|
+
const segments = parts.filter((s) => !READS_ONLY.test(s) && !/^vibe(?:\s|$)/.test(s));
|
|
238
|
+
// Under strict, irreversible and human the gate blocks (exit 2 stops the tool call in Claude Code); under off it only warns.
|
|
218
239
|
for (const [action, re] of IRREVERSIBLE) {
|
|
219
240
|
if (segments.some((s) => re.test(s)) && !recentAuthorize(action)) {
|
|
220
|
-
|
|
221
|
-
process.
|
|
222
|
-
if (blocking) process.exit(BLOCK_EXIT);
|
|
241
|
+
process.stderr.write(`${irreversibleNotice(action, policy)}\n`);
|
|
242
|
+
if (policy !== 'off') process.exit(BLOCK_EXIT);
|
|
223
243
|
leave(0);
|
|
224
244
|
}
|
|
225
245
|
}
|
|
@@ -4,7 +4,7 @@ Use when the task needs a missing capability or there is a concrete reason an ex
|
|
|
4
4
|
|
|
5
5
|
1. Name the operation and expected benefit. Reuse tools, connectors, skill metadata and findings already in context. Follow the environment's tool priority; it does not require rediscovering known capabilities. Use `vibe skill list` or a focused lookup only when the supplied information leaves a relevant gap. Read only the selected skill's instructions. These are sources to choose from, not a mandatory sequence of lookups.
|
|
6
6
|
2. If the available capability is insufficient or a meaningful improvement is plausible, use `vibe skill search <query>` or `vibe research <query>` with the actual task and constraints. Start with one focused search and inspect a small shortlist. Expand only when a specific unresolved requirement justifies it; stop when a suitable option is found or further search is less useful than direct work. Do not run a periodic scanner or a separate model to choose skills.
|
|
7
|
-
3. Search
|
|
7
|
+
3. Search reads the skill index first: every skill of the default catalogs, spread over domains (design, video, diagrams, documents, marketing, research, web data, backend, mobile, workspace, security), matched by name and description. Each candidate says how Claude and Codex can use it — install as is, adjust a few host-specific lines, or convert — and what it needs (scripts, an MCP server); that line is an automatic reading of the text, not a test. `vibe skill index` builds or refreshes the index. Prefer a skill that produces the requested result over one that coaches the working method. Search also asks skills.sh, the registry behind `npx skills find`, and the optional SkillsMP. A skills.sh hit shows its install count and its repository's stars; hits under 100 installs, copies and repositories under 100 stars are dropped, because install counts can be inflated. Registry lines are unverified hints; inspect the original GitHub skill, not just its registry page. Inspect the candidate's instructions, executable effects, source/revision, maintenance evidence, dependencies, permissions and failure behavior. A popular name or attractive description is not proof of quality. Check the actual host requirements: Claude/Codex labels alone establish neither compatibility nor incompatibility. Instructions may transfer while client-specific tools, hooks or shell commands need adaptation. Do not claim compatibility before testing the required operation.
|
|
8
8
|
4. For an evaluation-only request, stop with a supported recommendation and explicit unknowns; installation and execution verification below apply when adoption or use is requested. Reuse an installed skill when it fits. For an external candidate, use the existing installation path, including `vibe skill add owner/repo[@name] --pin <revision>` where supported. Honor existing installation authority; if new authority is necessary, prepare the exact candidate, revision, effects and target before asking once. Preserve existing user files and register project skills internally rather than adding public Vibe commands. Search permission is not permission for unrelated external effects.
|
|
9
9
|
5. Verify the relevant operation on representative local input and important failure cases. Check that it stays within the requested scope; successful installation is not successful task execution. Reuse trustworthy evidence for the same revision and environment, and recheck affected behavior when they change. Do not run paid generation or external mutations merely as a probe. Separate a plausible benefit from a measured improvement, counting setup and extra model calls when comparing cost.
|
|
10
10
|
6. If no candidate fits, solve one-off work directly. Create or adapt a skill only when the procedure is worth reusing: `vibe skill create <name> --check run|file|http|eval` is a starting point, not a finished capability. Do not build a new plugin manager or capability registry to complete a single task.
|
|
@@ -39,7 +39,7 @@ Needed before building (if any): {tools · skills · access}
|
|
|
39
39
|
To proceed, {paste {token} | say yes}.
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
7. When the user pastes the number (or says yes when no token was issued), run `vibe approve "{number}" --json` (or `vibe approve --json`). Unanswered material questions or changed evidence need resolution first; never substitute their defaults. On `code 3` show the actual reason and follow it. A material change returns to step 3; an unchanged approval needs no new interview. An old authorization does not cover a new action or target.
|
|
42
|
+
7. When the user pastes the number (or says yes when no token was issued), run `vibe approve "{number}" --json` (or `vibe approve --json`). Under `tokens: human` the approval is the user's own command: ask them to type `! vibe approve` in the prompt or run it in their terminal, and never run it yourself (the hook blocks it). Unanswered material questions or changed evidence need resolution first; never substitute their defaults. On `code 3` show the actual reason and follow it. A material change returns to step 3; an unchanged approval needs no new interview. An old authorization does not cover a new action or target.
|
|
43
43
|
8. When the state is APPROVED and any accepted skill is installed, move to `vibe-build`.
|
|
44
44
|
|
|
45
45
|
## Never
|