skill-flow 1.0.2 → 1.0.4
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/README.md +62 -23
- package/README.zh.md +63 -25
- package/dist/cli.js +13 -39
- package/dist/cli.js.map +1 -1
- package/dist/domain/types.d.ts +12 -1
- package/dist/services/doctor-service.js +1 -1
- package/dist/services/doctor-service.js.map +1 -1
- package/dist/services/skill-flow.d.ts +16 -13
- package/dist/services/skill-flow.js +158 -5
- package/dist/services/skill-flow.js.map +1 -1
- package/dist/services/source-service.d.ts +11 -1
- package/dist/services/source-service.js +60 -18
- package/dist/services/source-service.js.map +1 -1
- package/dist/services/workflow-service.d.ts +2 -2
- package/dist/services/workflow-service.js +17 -4
- package/dist/services/workflow-service.js.map +1 -1
- package/dist/services/workspace-bootstrap-service.d.ts +25 -0
- package/dist/services/workspace-bootstrap-service.js +148 -0
- package/dist/services/workspace-bootstrap-service.js.map +1 -0
- package/dist/state/store.js +1 -0
- package/dist/state/store.js.map +1 -1
- package/dist/tests/skill-flow.test.js +1458 -0
- package/dist/tests/skill-flow.test.js.map +1 -1
- package/dist/tui/config-app.d.ts +3 -0
- package/dist/tui/config-app.js +61 -1
- package/dist/tui/config-app.js.map +1 -1
- package/dist/tui/find-app.d.ts +1 -1
- package/dist/tui/find-app.js +36 -4
- package/dist/tui/find-app.js.map +1 -1
- package/dist/utils/format.js +1 -1
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/naming.d.ts +1 -0
- package/dist/utils/naming.js +7 -1
- package/dist/utils/naming.js.map +1 -1
- package/dist/utils/source-id.js +4 -0
- package/dist/utils/source-id.js.map +1 -1
- package/package.json +10 -1
- package/.gstack/browse-network.log +0 -1
- package/.gstack/browse.json +0 -7
- package/.gstack/qa-reports/base-branch.txt +0 -1
- package/.gstack/qa-reports/qa-report-skill-flow-cli-2026-03-22.md +0 -159
- package/.gstack/qa-reports/qa-report-skill-manager-2026-03-22.md +0 -60
- package/docs/DESIGN.md +0 -407
- package/docs/PRD/PRD-1.0.0.md +0 -1862
- package/docs/PRD/renew/PRD-0.0.0.md +0 -26
- package/docs/PRD/renew/PRD-0.0.1.md +0 -408
- package/docs/PRD/renew/PRD-0.0.2.md +0 -705
- package/docs/PRD/renew/PRD-0.0.3.md +0 -740
- package/docs/PRD/renew/PRD-0.0.4.md +0 -1494
- package/docs/README.md +0 -242
- package/docs/plan/PLAN_v1.0.0.md +0 -663
- package/docs/plan/PLAN_v1.0.1.md +0 -845
- package/docs/refrences/README.md +0 -9
- package/docs/refrences/agent-skill-paths.md +0 -274
- package/docs/refrences/config-state-reconciliation.md +0 -199
- package/docs/refrences/naming-dedupe-warning-rules.md +0 -482
- package/img/img-1.jpg +0 -0
package/dist/tui/find-app.js
CHANGED
|
@@ -1,15 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useMemo, useState } from "react";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useState } from "react";
|
|
3
3
|
import { Box, Text, useApp, useInput, useStdout } from "ink";
|
|
4
4
|
import { buildFindCommand } from "../utils/find-command.js";
|
|
5
5
|
export function FindApp({ app, query, candidates }) {
|
|
6
6
|
const { exit } = useApp();
|
|
7
7
|
const { stdout } = useStdout();
|
|
8
|
+
const [loadedCandidates, setLoadedCandidates] = useState(candidates);
|
|
9
|
+
const [loadError, setLoadError] = useState();
|
|
10
|
+
const [loadWarnings, setLoadWarnings] = useState([]);
|
|
8
11
|
const [cursor, setCursor] = useState(0);
|
|
9
12
|
const [state, setState] = useState({ phase: "list" });
|
|
10
|
-
const visibleCandidates = useMemo(() =>
|
|
13
|
+
const visibleCandidates = useMemo(() => (loadedCandidates ?? []).slice(0, 30), [loadedCandidates]);
|
|
11
14
|
const selected = visibleCandidates[cursor];
|
|
12
15
|
const columns = getColumns(stdout?.columns ?? 100);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (candidates) {
|
|
18
|
+
setLoadedCandidates(candidates);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
let cancelled = false;
|
|
22
|
+
void app.findSkills(query).then((result) => {
|
|
23
|
+
if (cancelled) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (!result.ok) {
|
|
27
|
+
setLoadError(result.errors[0]?.message ?? "Search failed.");
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
setLoadedCandidates(result.data.candidates);
|
|
31
|
+
setLoadWarnings(result.warnings.map((warning) => warning.message));
|
|
32
|
+
});
|
|
33
|
+
return () => {
|
|
34
|
+
cancelled = true;
|
|
35
|
+
};
|
|
36
|
+
}, [app, candidates, query]);
|
|
13
37
|
useInput((input, key) => {
|
|
14
38
|
if (key.escape || input === "q") {
|
|
15
39
|
if (state.phase === "confirm" || state.phase === "error") {
|
|
@@ -64,10 +88,18 @@ export function FindApp({ app, query, candidates }) {
|
|
|
64
88
|
});
|
|
65
89
|
}
|
|
66
90
|
});
|
|
91
|
+
if (!loadedCandidates && !loadError) {
|
|
92
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Find Skills" }), _jsxs(Text, { color: "gray", children: ["query: ", query] }), _jsx(Text, { color: "yellow", children: "Searching local, Git catalogs, and ClawHub..." }), _jsx(Text, { color: "gray", children: "Press q or Esc to exit." })] }));
|
|
93
|
+
}
|
|
94
|
+
if (loadError) {
|
|
95
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Find Skills" }), _jsx(Text, { color: "red", children: loadError }), _jsx(Text, { color: "gray", children: "Press q or Esc to exit." })] }));
|
|
96
|
+
}
|
|
67
97
|
if (visibleCandidates.length === 0) {
|
|
68
98
|
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: ["No matching skills found for \"", query, "\"."] }), _jsx(Text, { color: "gray", children: "Press q or Esc to exit." })] }));
|
|
69
99
|
}
|
|
70
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Find Skills" }), _jsxs(Text, { color: "gray", children: ["query: ", query, " \u00B7 results: ", visibleCandidates.length,
|
|
100
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Find Skills" }), _jsxs(Text, { color: "gray", children: ["query: ", query, " \u00B7 results: ", visibleCandidates.length, (loadedCandidates?.length ?? 0) > visibleCandidates.length
|
|
101
|
+
? ` / ${loadedCandidates?.length ?? 0}`
|
|
102
|
+
: ""] }), loadWarnings.map((warning) => (_jsxs(Text, { color: "yellow", children: ["warning: ", warning] }, warning))), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { bold: true, children: pad("No.", columns.index) }), _jsx(Text, { bold: true, children: pad("Skill", columns.name) }), _jsx(Text, { bold: true, children: "Repository" })] }), visibleCandidates.map((candidate, index) => {
|
|
71
103
|
const active = index === cursor;
|
|
72
104
|
return (_jsx(Box, { children: _jsxs(Text, { ...(active ? { color: "cyan" } : {}), children: [pad(`${index + 1}.`, columns.index), pad(candidate.installed ? `${candidate.title} *` : candidate.title, columns.name), candidate.sourceLabel] }) }, candidate.id));
|
|
73
105
|
}), selected ? (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { children: ["selected: ", _jsx(Text, { color: "cyan", children: selected.title }), " \u00B7 ", selected.sourceLabel] }), state.phase === "list" ? (_jsx(Text, { color: "gray", children: "Enter preview add command \u00B7 Up/Down move \u00B7 Esc/q exit" })) : null, state.phase === "confirm" ? (_jsxs(_Fragment, { children: [_jsxs(Text, { children: ["next: ", buildFindCommand(selected) ?? "already installed"] }), _jsx(Text, { color: "gray", children: "Enter install \u00B7 Esc back" })] })) : null, state.phase === "installing" ? _jsx(Text, { color: "yellow", children: "Installing..." }) : null, state.phase === "done" ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "green", children: state.message }), state.warnings.map((warning) => (_jsxs(Text, { color: "yellow", children: ["warning: ", warning] }, warning))), _jsx(Text, { color: "gray", children: "Press Enter, q, or Esc to exit." })] })) : null, state.phase === "error" ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "red", children: state.message }), _jsx(Text, { color: "gray", children: "Esc back" })] })) : null] })) : null] }));
|
package/dist/tui/find-app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-app.js","sourceRoot":"","sources":["../../src/tui/find-app.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"find-app.js","sourceRoot":"","sources":["../../src/tui/find-app.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAG7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAe5D,MAAM,UAAU,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAgB;IAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAA+B,UAAU,CAAC,CAAC;IACnG,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAsB,CAAC;IACjE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAC3C,CAAC,gBAAgB,CAAC,CACnB,CAAC;IACF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;IAEnD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,EAAE,CAAC;YACf,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACzC,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,gBAAgB,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YACD,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5C,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAE7B,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;gBACzD,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3B,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3B,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpC,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YAED,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YAClC,KAAK,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAClD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;oBACd,QAAQ,CAAC;wBACP,KAAK,EAAE,MAAM;wBACb,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;qBAC1B,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC;QACpC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,kCAAmB,EAC7B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBAAS,KAAK,IAAQ,EACxC,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,8DAAqD,EACzE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wCAA+B,IAC7C,CACP,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,kCAAmB,EAC7B,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,SAAS,GAAQ,EACpC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wCAA+B,IAC7C,CACP,CAAC;IACJ,CAAC;IAED,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,kDAAgC,KAAK,WAAU,EACpD,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wCAA+B,IAC7C,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,kCAAmB,EAC7B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBACR,KAAK,uBAAc,iBAAiB,CAAC,MAAM,EAClD,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM;wBACzD,CAAC,CAAC,MAAM,gBAAgB,EAAE,MAAM,IAAI,CAAC,EAAE;wBACvC,CAAC,CAAC,EAAE,IACD,EACN,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC7B,MAAC,IAAI,IAAe,KAAK,EAAC,QAAQ,0BACtB,OAAO,KADR,OAAO,CAEX,CACR,CAAC,EACF,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,IAAI,kBAAE,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAQ,EAC7C,KAAC,IAAI,IAAC,IAAI,kBAAE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAQ,EAC9C,KAAC,IAAI,IAAC,IAAI,iCAAkB,IACxB,EACL,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;gBAC1C,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC;gBAChC,OAAO,CACL,KAAC,GAAG,cACF,MAAC,IAAI,OAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aACjD,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,EACnC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EACjF,SAAS,CAAC,WAAW,IACjB,IALC,SAAS,CAAC,EAAE,CAMhB,CACP,CAAC;YACJ,CAAC,CAAC,EAED,QAAQ,CAAC,CAAC,CAAC,CACV,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,MAAC,IAAI,6BACO,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,CAAC,KAAK,GAAQ,cAAI,QAAQ,CAAC,WAAW,IACvE,EACN,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CACxB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,gFAA6D,CAChF,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAC3B,8BACE,MAAC,IAAI,yBAAQ,gBAAgB,CAAC,QAAQ,CAAC,IAAI,mBAAmB,IAAQ,EACtE,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,8CAAgC,IACjD,CACJ,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,8BAAqB,CAAC,CAAC,CAAC,IAAI,EAC/E,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CACxB,8BACE,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,KAAK,CAAC,OAAO,GAAQ,EACzC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC/B,MAAC,IAAI,IAAe,KAAK,EAAC,QAAQ,0BACtB,OAAO,KADR,OAAO,CAEX,CACR,CAAC,EACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,gDAAuC,IACxD,CACJ,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CACzB,8BACE,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,CAAC,OAAO,GAAQ,EACxC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,yBAAgB,IACjC,CACJ,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAiB,EAAE,SAAyB;IACzE,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO;YACtC,CAAC,CAAC,WAAW,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;YAChE,CAAC,CAAC,WAAW,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,EAAE,EAAE,EAAE,KAAc,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACzF,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAa;YACjB,OAAO,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,SAAS,MAAM,CAAC,IAAI,CAAC,SAAS,UAAU;YAC1F,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAChC,SAAS,CAAC,MAAM,CAAC,OAAO,EACxB,SAAS,CAAC,MAAM,CAAC,aAAa;YAC5B,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE;YAC1C,CAAC,CAAC,SAAS,CACd,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,EAAE,EAAE,EAAE,KAAc,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACzF,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAa;YACjB,OAAO,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,SAAS,MAAM,CAAC,IAAI,CAAC,SAAS,UAAU;YAC1F,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,KAAc,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACnC,OAAO;QACL,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC7C,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACnF,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC"}
|
package/dist/utils/format.js
CHANGED
|
@@ -4,7 +4,7 @@ import { formatGroupLabel } from "./naming.js";
|
|
|
4
4
|
export function formatWorkflowList(summaries) {
|
|
5
5
|
if (summaries.length === 0) {
|
|
6
6
|
return [
|
|
7
|
-
"No
|
|
7
|
+
"No skills groups yet",
|
|
8
8
|
"Add a source to discover a grouped set of related skills.",
|
|
9
9
|
].join("\n");
|
|
10
10
|
}
|
package/dist/utils/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,kBAAkB,CAAC,SAA4B;IAC7D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/naming.d.ts
CHANGED
package/dist/utils/naming.js
CHANGED
|
@@ -33,11 +33,17 @@ export function parseGitHubRepo(locator) {
|
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
35
|
export function formatGroupLabel(source) {
|
|
36
|
+
if (source.kind === "local") {
|
|
37
|
+
return `${source.displayName}@local`;
|
|
38
|
+
}
|
|
39
|
+
if (source.kind === "clawhub") {
|
|
40
|
+
return `${source.displayName}@clawhub`;
|
|
41
|
+
}
|
|
36
42
|
const githubRepo = parseGitHubRepo(source.locator);
|
|
37
43
|
if (!githubRepo) {
|
|
38
44
|
return source.displayName;
|
|
39
45
|
}
|
|
40
|
-
return `${source.displayName}
|
|
46
|
+
return `${source.displayName}@${githubRepo.owner}`;
|
|
41
47
|
}
|
|
42
48
|
export function formatGroupRef(source) {
|
|
43
49
|
return `${formatGroupLabel(source)} [${source.id}]`;
|
package/dist/utils/naming.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/source-id.js
CHANGED
|
@@ -40,6 +40,10 @@ export function deriveSourceId(locator) {
|
|
|
40
40
|
if (githubRepo) {
|
|
41
41
|
return slugify(`${githubRepo.owner}-${githubRepo.repo}`);
|
|
42
42
|
}
|
|
43
|
+
const trimmed = locator.replace(/\/+$/, "");
|
|
44
|
+
if (path.isAbsolute(trimmed)) {
|
|
45
|
+
return slugify(path.basename(trimmed) || locator);
|
|
46
|
+
}
|
|
43
47
|
return slugify(deriveDisplayName(locator) || locator);
|
|
44
48
|
}
|
|
45
49
|
//# sourceMappingURL=source-id.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-id.js","sourceRoot":"","sources":["../../src/utils/source-id.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,cAAc,CAAC,IAAI,CAAC;IACrE,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,OAAO,CAAC,WAAW,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;AACxD,CAAC"}
|
|
1
|
+
{"version":3,"file":"source-id.js","sourceRoot":"","sources":["../../src/utils/source-id.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,cAAc,CAAC,IAAI,CAAC;IACrE,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,OAAO,CAAC,WAAW,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,OAAO,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC;AACxD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skill-flow",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Workflow-first management for AI agent skills. Group, project, and sync skills across multiple agents with explicit state tracking.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli.js",
|
|
7
7
|
"bin": {
|
|
8
8
|
"skill-flow": "dist/cli.js"
|
|
9
9
|
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md",
|
|
13
|
+
"README.zh.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
10
16
|
"scripts": {
|
|
11
17
|
"build": "tsc -p tsconfig.json",
|
|
12
18
|
"dev": "tsx src/cli.tsx",
|
|
@@ -35,6 +41,9 @@
|
|
|
35
41
|
"url": "https://github.com/VintLin/skill-flow/issues"
|
|
36
42
|
},
|
|
37
43
|
"homepage": "https://github.com/VintLin/skill-flow#readme",
|
|
44
|
+
"engines": {
|
|
45
|
+
"node": ">=20"
|
|
46
|
+
},
|
|
38
47
|
"dependencies": {
|
|
39
48
|
"commander": "^14.0.3",
|
|
40
49
|
"ink": "^6.8.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[2026-03-21T10:24:32.733Z] GET file:///tmp/gstack-sketch-skill-flow.html → 200 (5ms, 7267B)
|
package/.gstack/browse.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
main
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
# QA Report
|
|
2
|
-
|
|
3
|
-
Date: 2026-03-22
|
|
4
|
-
Target: `skill-flow` CLI v1.0.1
|
|
5
|
-
Mode: full functional regression
|
|
6
|
-
Base branch: `main`
|
|
7
|
-
Baseline commit: `c21868e`
|
|
8
|
-
Final status: `DONE_WITH_CONCERNS`
|
|
9
|
-
|
|
10
|
-
## Summary
|
|
11
|
-
|
|
12
|
-
- Automated baseline passed: `npm run build`, `npm test` (`49 passed`)
|
|
13
|
-
- Verified manually:
|
|
14
|
-
- Git add with `--path`
|
|
15
|
-
- `list`
|
|
16
|
-
- `update --all`
|
|
17
|
-
- `uninstall`
|
|
18
|
-
- GitHub tree URL add
|
|
19
|
-
- ClawHub add / update / uninstall
|
|
20
|
-
- Blocking issue found:
|
|
21
|
-
- `find` / `search` can hang for 15s+ on cold start because built-in catalog search waits on many remote Git repos
|
|
22
|
-
|
|
23
|
-
## Health Score
|
|
24
|
-
|
|
25
|
-
- Baseline: 82
|
|
26
|
-
- Final: 82
|
|
27
|
-
|
|
28
|
-
Rationale:
|
|
29
|
-
- Functional: mostly works
|
|
30
|
-
- Performance: materially degraded for `find`
|
|
31
|
-
- Reliability: build/tests clean, but discovery cold start is not ship-ready
|
|
32
|
-
|
|
33
|
-
## Tested Flows
|
|
34
|
-
|
|
35
|
-
### 1. Git add with path filtering
|
|
36
|
-
|
|
37
|
-
Command pattern:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
node dist/cli.js add <local-repo> --path skills/find-skills
|
|
41
|
-
node dist/cli.js list
|
|
42
|
-
node dist/cli.js update --all
|
|
43
|
-
node dist/cli.js uninstall repo
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Observed:
|
|
47
|
-
- add succeeded
|
|
48
|
-
- only one skill was registered
|
|
49
|
-
- list/update/uninstall all behaved correctly
|
|
50
|
-
|
|
51
|
-
### 2. GitHub tree URL add
|
|
52
|
-
|
|
53
|
-
Command:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
node dist/cli.js add https://github.com/vercel-labs/skills/tree/main/skills/find-skills
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Observed:
|
|
60
|
-
- succeeded
|
|
61
|
-
- installed as repo-level source `vercel-labs-skills`
|
|
62
|
-
- leaf count was `1`
|
|
63
|
-
- runtime was about `7.76s`
|
|
64
|
-
|
|
65
|
-
### 3. ClawHub lifecycle
|
|
66
|
-
|
|
67
|
-
Command pattern:
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
node dist/cli.js add clawhub:find-skills-skill
|
|
71
|
-
node dist/cli.js update --all
|
|
72
|
-
node dist/cli.js list
|
|
73
|
-
node dist/cli.js uninstall clawhub-find-skills-skill
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Observed:
|
|
77
|
-
- add/update/uninstall all succeeded
|
|
78
|
-
- `list` reported the source as `PARTIAL` because of a metadata warning:
|
|
79
|
-
- `name should match parent directory name 'find-skills-skill'`
|
|
80
|
-
|
|
81
|
-
Assessment:
|
|
82
|
-
- functional flow passes
|
|
83
|
-
- warning is noisy but not a blocker
|
|
84
|
-
|
|
85
|
-
## Findings
|
|
86
|
-
|
|
87
|
-
### ISSUE-001
|
|
88
|
-
|
|
89
|
-
- Severity: critical
|
|
90
|
-
- Category: performance / functional
|
|
91
|
-
- Title: `find` does not complete promptly on cold start
|
|
92
|
-
- Status: deferred
|
|
93
|
-
|
|
94
|
-
What happens:
|
|
95
|
-
- `find` / `search` attempts to search the full built-in Git catalog set
|
|
96
|
-
- on a fresh state root, many built-in repos are not cached
|
|
97
|
-
- command can remain blocked for 15s+ even when a local result already exists
|
|
98
|
-
- `--json` has the same issue
|
|
99
|
-
|
|
100
|
-
Repro:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
export SKILL_FLOW_STATE_ROOT="$(mktemp -d)/state"
|
|
104
|
-
node dist/cli.js add <local-repo> --path skills/find-skills
|
|
105
|
-
perl -e 'alarm shift; exec @ARGV' 15 node dist/cli.js find find
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
Observed output before timeout:
|
|
109
|
-
|
|
110
|
-
```text
|
|
111
|
-
1. find-skills local installed
|
|
112
|
-
Find useful skills quickly.
|
|
113
|
-
repo · skills/find-skills
|
|
114
|
-
next: already installed
|
|
115
|
-
|
|
116
|
-
2. Using Skills builtin-git
|
|
117
|
-
...
|
|
118
|
-
warning: Unable to refresh built-in source 'https://github.com/anthropics/skills.git': Error: Built-in source 'https://github.com/anthropics/skills.git' timed out.
|
|
119
|
-
...
|
|
120
|
-
time: command terminated abnormally
|
|
121
|
-
real 15.02
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Impact:
|
|
125
|
-
- makes `find` feel hung
|
|
126
|
-
- especially bad on first use or slow network
|
|
127
|
-
- blocks the main new v1.0.1 discovery path
|
|
128
|
-
|
|
129
|
-
Recommendation:
|
|
130
|
-
- redesign built-in catalog search so it does not depend on cloning every remote repo during request time
|
|
131
|
-
- acceptable solutions include a prebuilt index, explicit catalog sync step, or a lightweight remote metadata search path
|
|
132
|
-
|
|
133
|
-
### ISSUE-002
|
|
134
|
-
|
|
135
|
-
- Severity: medium
|
|
136
|
-
- Category: UX
|
|
137
|
-
- Title: ClawHub install shows as `PARTIAL` immediately after successful add
|
|
138
|
-
- Status: deferred
|
|
139
|
-
|
|
140
|
-
Observed:
|
|
141
|
-
|
|
142
|
-
```text
|
|
143
|
-
find-skills-skill PARTIAL 1 skills 0 targets, 1 warnings
|
|
144
|
-
warning: .: name should match parent directory name 'find-skills-skill'
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Impact:
|
|
148
|
-
- user sees warning/partial state on a successful install
|
|
149
|
-
- creates uncertainty about whether the source is healthy
|
|
150
|
-
|
|
151
|
-
## Ship Readiness
|
|
152
|
-
|
|
153
|
-
- `add`, `update`, and `uninstall` are in good shape
|
|
154
|
-
- `find/search` is functionally correct in some cases but not performance-safe enough for cold-start use
|
|
155
|
-
- v1.0.1 is not fully ship-ready if discovery is considered a headline feature
|
|
156
|
-
|
|
157
|
-
## PR Summary
|
|
158
|
-
|
|
159
|
-
QA found 2 issues, fixed 0, health score 82 -> 82.
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# QA Report: skill-flow
|
|
2
|
-
|
|
3
|
-
Date: 2026-03-22
|
|
4
|
-
Mode: full CLI QA
|
|
5
|
-
Scope: build, unit tests, empty-state CLI flows, add/apply/update/uninstall end-to-end flow, interactive config smoke check
|
|
6
|
-
|
|
7
|
-
## Coverage
|
|
8
|
-
|
|
9
|
-
- `npm test`
|
|
10
|
-
- `npm run build`
|
|
11
|
-
- `node dist/cli.js --help`
|
|
12
|
-
- Empty state:
|
|
13
|
-
- `list`
|
|
14
|
-
- `doctor`
|
|
15
|
-
- `config`
|
|
16
|
-
- `uninstall missing`
|
|
17
|
-
- End-to-end fixture workflow:
|
|
18
|
-
- `add <git-source>`
|
|
19
|
-
- `list`
|
|
20
|
-
- `doctor`
|
|
21
|
-
- `applyDraft(...)` through app service with real state root + target roots
|
|
22
|
-
- `update --all` after upstream repo change
|
|
23
|
-
- `uninstall <sourceId>`
|
|
24
|
-
|
|
25
|
-
## Findings
|
|
26
|
-
|
|
27
|
-
### ISSUE-001
|
|
28
|
-
|
|
29
|
-
- Severity: medium
|
|
30
|
-
- Title: `uninstall` reported success for unknown workflow groups
|
|
31
|
-
- Repro:
|
|
32
|
-
1. Start with a fresh state root.
|
|
33
|
-
2. Run `node dist/cli.js uninstall missing`.
|
|
34
|
-
- Expected:
|
|
35
|
-
- Command should fail and say the workflow group is not registered.
|
|
36
|
-
- Actual:
|
|
37
|
-
- Command printed `Removed: missing` and exited `0`.
|
|
38
|
-
- Fix status: verified
|
|
39
|
-
|
|
40
|
-
## Fix
|
|
41
|
-
|
|
42
|
-
- Updated source removal to reject unknown workflow groups with `SOURCE_NOT_FOUND`.
|
|
43
|
-
- Added regression test coverage for uninstalling an unknown workflow group.
|
|
44
|
-
|
|
45
|
-
## Verification
|
|
46
|
-
|
|
47
|
-
- `npm test` -> 33 passed
|
|
48
|
-
- `npm run build` -> passed
|
|
49
|
-
- `node dist/cli.js uninstall missing` -> prints `Workflow group 'missing' is not registered.` and exits `1`
|
|
50
|
-
- End-to-end fixture flow still passes:
|
|
51
|
-
- add source
|
|
52
|
-
- apply targets
|
|
53
|
-
- doctor healthy
|
|
54
|
-
- update after source change
|
|
55
|
-
- uninstall existing source
|
|
56
|
-
- list returns empty state
|
|
57
|
-
|
|
58
|
-
## Summary
|
|
59
|
-
|
|
60
|
-
QA found 1 issue, fixed 1, deferred 0.
|