skill-flow 1.0.8 → 1.3.3

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.
Files changed (143) hide show
  1. package/README.md +209 -131
  2. package/README.zh.md +170 -131
  3. package/dist/bridge-command.d.ts +9 -0
  4. package/dist/bridge-command.js +422 -0
  5. package/dist/bridge-command.js.map +1 -0
  6. package/dist/cli.js +68 -8
  7. package/dist/cli.js.map +1 -1
  8. package/package.json +11 -2
  9. package/dist/adapters/channel-adapters.d.ts +0 -8
  10. package/dist/adapters/channel-adapters.js +0 -64
  11. package/dist/adapters/channel-adapters.js.map +0 -1
  12. package/dist/domain/types.d.ts +0 -234
  13. package/dist/domain/types.js +0 -2
  14. package/dist/domain/types.js.map +0 -1
  15. package/dist/services/config-coordinator.d.ts +0 -38
  16. package/dist/services/config-coordinator.js +0 -83
  17. package/dist/services/config-coordinator.js.map +0 -1
  18. package/dist/services/deployment-applier.d.ts +0 -10
  19. package/dist/services/deployment-applier.js +0 -84
  20. package/dist/services/deployment-applier.js.map +0 -1
  21. package/dist/services/deployment-planner.d.ts +0 -16
  22. package/dist/services/deployment-planner.js +0 -366
  23. package/dist/services/deployment-planner.js.map +0 -1
  24. package/dist/services/doctor-service.d.ts +0 -7
  25. package/dist/services/doctor-service.js +0 -204
  26. package/dist/services/doctor-service.js.map +0 -1
  27. package/dist/services/inventory-service.d.ts +0 -17
  28. package/dist/services/inventory-service.js +0 -216
  29. package/dist/services/inventory-service.js.map +0 -1
  30. package/dist/services/skill-flow.d.ts +0 -136
  31. package/dist/services/skill-flow.js +0 -1210
  32. package/dist/services/skill-flow.js.map +0 -1
  33. package/dist/services/source-service.d.ts +0 -57
  34. package/dist/services/source-service.js +0 -809
  35. package/dist/services/source-service.js.map +0 -1
  36. package/dist/services/workflow-service.d.ts +0 -5
  37. package/dist/services/workflow-service.js +0 -45
  38. package/dist/services/workflow-service.js.map +0 -1
  39. package/dist/services/workspace-bootstrap-service.d.ts +0 -25
  40. package/dist/services/workspace-bootstrap-service.js +0 -140
  41. package/dist/services/workspace-bootstrap-service.js.map +0 -1
  42. package/dist/state/store.d.ts +0 -35
  43. package/dist/state/store.js +0 -151
  44. package/dist/state/store.js.map +0 -1
  45. package/dist/tests/add-flow-model.test.d.ts +0 -1
  46. package/dist/tests/add-flow-model.test.js +0 -108
  47. package/dist/tests/add-flow-model.test.js.map +0 -1
  48. package/dist/tests/add-flow-ui.test.d.ts +0 -1
  49. package/dist/tests/add-flow-ui.test.js +0 -16
  50. package/dist/tests/add-flow-ui.test.js.map +0 -1
  51. package/dist/tests/add-prepare-flow.test.d.ts +0 -1
  52. package/dist/tests/add-prepare-flow.test.js +0 -166
  53. package/dist/tests/add-prepare-flow.test.js.map +0 -1
  54. package/dist/tests/add-selection-and-find-command.test.d.ts +0 -1
  55. package/dist/tests/add-selection-and-find-command.test.js +0 -89
  56. package/dist/tests/add-selection-and-find-command.test.js.map +0 -1
  57. package/dist/tests/clawhub.test.d.ts +0 -1
  58. package/dist/tests/clawhub.test.js +0 -63
  59. package/dist/tests/clawhub.test.js.map +0 -1
  60. package/dist/tests/cli-utils.test.d.ts +0 -1
  61. package/dist/tests/cli-utils.test.js +0 -24
  62. package/dist/tests/cli-utils.test.js.map +0 -1
  63. package/dist/tests/config-coordinator.test.d.ts +0 -1
  64. package/dist/tests/config-coordinator.test.js +0 -219
  65. package/dist/tests/config-coordinator.test.js.map +0 -1
  66. package/dist/tests/config-integration.test.d.ts +0 -1
  67. package/dist/tests/config-integration.test.js +0 -276
  68. package/dist/tests/config-integration.test.js.map +0 -1
  69. package/dist/tests/config-ui-utils.test.d.ts +0 -1
  70. package/dist/tests/config-ui-utils.test.js +0 -523
  71. package/dist/tests/config-ui-utils.test.js.map +0 -1
  72. package/dist/tests/find-and-naming-utils.test.d.ts +0 -1
  73. package/dist/tests/find-and-naming-utils.test.js +0 -127
  74. package/dist/tests/find-and-naming-utils.test.js.map +0 -1
  75. package/dist/tests/inventory-service-precedence.test.d.ts +0 -1
  76. package/dist/tests/inventory-service-precedence.test.js +0 -42
  77. package/dist/tests/inventory-service-precedence.test.js.map +0 -1
  78. package/dist/tests/skill-flow.test.d.ts +0 -1
  79. package/dist/tests/skill-flow.test.js +0 -991
  80. package/dist/tests/skill-flow.test.js.map +0 -1
  81. package/dist/tests/source-lifecycle.test.d.ts +0 -1
  82. package/dist/tests/source-lifecycle.test.js +0 -644
  83. package/dist/tests/source-lifecycle.test.js.map +0 -1
  84. package/dist/tests/source-parsing-compatibility.test.d.ts +0 -1
  85. package/dist/tests/source-parsing-compatibility.test.js +0 -72
  86. package/dist/tests/source-parsing-compatibility.test.js.map +0 -1
  87. package/dist/tests/target-definitions.test.d.ts +0 -1
  88. package/dist/tests/target-definitions.test.js +0 -51
  89. package/dist/tests/target-definitions.test.js.map +0 -1
  90. package/dist/tests/test-helpers.d.ts +0 -18
  91. package/dist/tests/test-helpers.js +0 -123
  92. package/dist/tests/test-helpers.js.map +0 -1
  93. package/dist/tui/add-flow-model.d.ts +0 -62
  94. package/dist/tui/add-flow-model.js +0 -206
  95. package/dist/tui/add-flow-model.js.map +0 -1
  96. package/dist/tui/add-flow.d.ts +0 -25
  97. package/dist/tui/add-flow.js +0 -534
  98. package/dist/tui/add-flow.js.map +0 -1
  99. package/dist/tui/config-app.d.ts +0 -178
  100. package/dist/tui/config-app.js +0 -1551
  101. package/dist/tui/config-app.js.map +0 -1
  102. package/dist/tui/find-app.d.ts +0 -9
  103. package/dist/tui/find-app.js +0 -150
  104. package/dist/tui/find-app.js.map +0 -1
  105. package/dist/tui/selection-state.d.ts +0 -8
  106. package/dist/tui/selection-state.js +0 -32
  107. package/dist/tui/selection-state.js.map +0 -1
  108. package/dist/utils/builtin-git-sources.d.ts +0 -5
  109. package/dist/utils/builtin-git-sources.js +0 -23
  110. package/dist/utils/builtin-git-sources.js.map +0 -1
  111. package/dist/utils/clawhub.d.ts +0 -41
  112. package/dist/utils/clawhub.js +0 -94
  113. package/dist/utils/clawhub.js.map +0 -1
  114. package/dist/utils/cli.d.ts +0 -2
  115. package/dist/utils/cli.js +0 -19
  116. package/dist/utils/cli.js.map +0 -1
  117. package/dist/utils/constants.d.ts +0 -23
  118. package/dist/utils/constants.js +0 -195
  119. package/dist/utils/constants.js.map +0 -1
  120. package/dist/utils/find-command.d.ts +0 -2
  121. package/dist/utils/find-command.js +0 -29
  122. package/dist/utils/find-command.js.map +0 -1
  123. package/dist/utils/format.d.ts +0 -7
  124. package/dist/utils/format.js +0 -68
  125. package/dist/utils/format.js.map +0 -1
  126. package/dist/utils/fs.d.ts +0 -16
  127. package/dist/utils/fs.js +0 -144
  128. package/dist/utils/fs.js.map +0 -1
  129. package/dist/utils/git.d.ts +0 -3
  130. package/dist/utils/git.js +0 -12
  131. package/dist/utils/git.js.map +0 -1
  132. package/dist/utils/github-catalog.d.ts +0 -1
  133. package/dist/utils/github-catalog.js +0 -25
  134. package/dist/utils/github-catalog.js.map +0 -1
  135. package/dist/utils/naming.d.ts +0 -29
  136. package/dist/utils/naming.js +0 -115
  137. package/dist/utils/naming.js.map +0 -1
  138. package/dist/utils/result.d.ts +0 -4
  139. package/dist/utils/result.js +0 -15
  140. package/dist/utils/result.js.map +0 -1
  141. package/dist/utils/source-id.d.ts +0 -2
  142. package/dist/utils/source-id.js +0 -49
  143. package/dist/utils/source-id.js.map +0 -1
@@ -1,127 +0,0 @@
1
- import { describe, expect, test } from "vitest";
2
- import { buildFindCommand } from "../utils/find-command.js";
3
- import { buildProjectedSkillName, formatGroupLabel, resolveProjectedSkillNames } from "../utils/naming.js";
4
- import { deriveSourceId } from "../utils/source-id.js";
5
- describe("find and naming utils", () => {
6
- test("normalizes GitHub locators to the same source id across supported formats", () => {
7
- const locators = [
8
- "https://github.com/garrytan/gstack",
9
- "https://github.com/garrytan/gstack.git",
10
- "git@github.com:garrytan/gstack.git",
11
- "garrytan/gstack",
12
- ];
13
- expect(locators.map((locator) => deriveSourceId(locator))).toEqual([
14
- "garrytan-gstack",
15
- "garrytan-gstack",
16
- "garrytan-gstack",
17
- "garrytan-gstack",
18
- ]);
19
- });
20
- test("normalizes ClawHub locators to the same source id across version forms", () => {
21
- expect(deriveSourceId("clawhub:find-skills")).toBe("clawhub-find-skills");
22
- expect(deriveSourceId("clawhub:find-skills@1.2.3")).toBe("clawhub-find-skills");
23
- });
24
- test("builds follow-up commands for search candidates", () => {
25
- expect(buildFindCommand({
26
- id: "builtin:1",
27
- title: "find-skills",
28
- description: "Find skills",
29
- source: "builtin-git",
30
- sourceLabel: "skills(@anthropics)",
31
- sourceId: "anthropics-skills",
32
- sourceKind: "git",
33
- locator: "https://github.com/anthropics/skills.git",
34
- relativePath: "skills/find-skills",
35
- installed: false,
36
- action: {
37
- type: "add-git",
38
- locator: "https://github.com/anthropics/skills.git",
39
- requestedPath: "skills/find-skills",
40
- },
41
- })).toBe("skill-flow add https://github.com/anthropics/skills.git --path skills/find-skills");
42
- expect(buildFindCommand({
43
- id: "clawhub:1",
44
- title: "Find Skills",
45
- description: "Find skills",
46
- source: "clawhub",
47
- sourceLabel: "ClawHub",
48
- sourceId: "clawhub-find-skills",
49
- sourceKind: "clawhub",
50
- locator: "clawhub:find-skills",
51
- installed: false,
52
- action: {
53
- type: "add-clawhub",
54
- slug: "find-skills",
55
- version: "1.2.3",
56
- },
57
- })).toBe("skill-flow add clawhub:find-skills@1.2.3");
58
- });
59
- test("formats GitHub groups as groupName(@owner)", () => {
60
- expect(formatGroupLabel({
61
- id: "garrytan-gstack",
62
- locator: "git@github.com:garrytan/gstack.git",
63
- displayName: "gstack",
64
- })).toBe("gstack@garrytan");
65
- });
66
- test("prefers groupName-skillName for projected collisions", () => {
67
- const projected = resolveProjectedSkillNames([
68
- {
69
- leafId: "a:browse",
70
- groupId: "garrytan-gstack",
71
- groupName: "gstack",
72
- groupAuthor: "garrytan",
73
- skillName: "browse",
74
- },
75
- {
76
- leafId: "b:browse",
77
- groupId: "alice-toolkit",
78
- groupName: "toolkit",
79
- groupAuthor: "alice",
80
- skillName: "browse",
81
- },
82
- ]);
83
- expect(projected.get("a:browse")).toBe(buildProjectedSkillName("gstack", "browse", "garrytan"));
84
- expect(projected.get("b:browse")).toBe(buildProjectedSkillName("toolkit", "browse", "alice"));
85
- });
86
- test("falls back to groupId-skillName when projected names still collide", () => {
87
- const projected = resolveProjectedSkillNames([
88
- {
89
- leafId: "a:browse",
90
- groupId: "alice-gstack",
91
- groupName: "gstack",
92
- groupAuthor: "alice",
93
- skillName: "browse",
94
- },
95
- {
96
- leafId: "b:browse",
97
- groupId: "garrytan-gstack",
98
- groupName: "gstack",
99
- groupAuthor: "garrytan",
100
- skillName: "browse",
101
- },
102
- ]);
103
- expect(projected.get("a:browse")).toBe("gstack(alice)-browse");
104
- expect(projected.get("b:browse")).toBe("gstack(garrytan)-browse");
105
- });
106
- test("prefers author prefix when repo prefix would repeat the skill prefix", () => {
107
- const projected = resolveProjectedSkillNames([
108
- {
109
- leafId: "a:skill-creator",
110
- groupId: "anthropic-skill",
111
- groupName: "skill",
112
- groupAuthor: "anthropic",
113
- skillName: "skill-creator",
114
- },
115
- {
116
- leafId: "b:skill-creator",
117
- groupId: "openai-skill",
118
- groupName: "skill",
119
- groupAuthor: "openai",
120
- skillName: "skill-creator",
121
- },
122
- ]);
123
- expect(projected.get("a:skill-creator")).toBe("anthropic-skill-creator");
124
- expect(projected.get("b:skill-creator")).toBe("openai-skill-creator");
125
- });
126
- });
127
- //# sourceMappingURL=find-and-naming-utils.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"find-and-naming-utils.test.js","sourceRoot":"","sources":["../../src/tests/find-and-naming-utils.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,42 +0,0 @@
1
- import { describe, expect, test } from "vitest";
2
- import { InventoryService } from "../services/inventory-service.js";
3
- import { createRepo, skillDoc, useSkillFlowSandbox, } from "./test-helpers.js";
4
- describe.sequential("inventory discovery precedence", () => {
5
- const sandbox = useSkillFlowSandbox();
6
- test("keeps a root skill ahead of matching duplicates in other buckets", async () => {
7
- const repoPath = await createRepo(sandbox.sandboxRoot, {
8
- "SKILL.md": skillDoc("browse", "Root browse skill."),
9
- "alpha/browse/SKILL.md": skillDoc("browse", "Root browse skill."),
10
- "skills/browse/SKILL.md": skillDoc("browse", "Root browse skill."),
11
- });
12
- const inventory = new InventoryService();
13
- const scanned = await inventory.scanSource("demo-source", repoPath, "demo");
14
- expect(scanned.leafs).toHaveLength(1);
15
- expect(scanned.leafs[0]?.relativePath).toBe(".");
16
- expect(scanned.duplicateLeafs.some((duplicate) => duplicate.path === "alpha/browse" && duplicate.keptPath === ".")).toBe(true);
17
- });
18
- test("prefers standard skill buckets over alphabetically earlier recursive matches", async () => {
19
- const repoPath = await createRepo(sandbox.sandboxRoot, {
20
- "alpha/browse/SKILL.md": skillDoc("browse", "Shared browse skill."),
21
- "skills/browse/SKILL.md": skillDoc("browse", "Shared browse skill."),
22
- "skills/.curated/browse/SKILL.md": skillDoc("browse", "Shared browse skill."),
23
- "skills/.experimental/browse/SKILL.md": skillDoc("browse", "Shared browse skill."),
24
- "skills/.system/browse/SKILL.md": skillDoc("browse", "Shared browse skill."),
25
- });
26
- const inventory = new InventoryService();
27
- const scanned = await inventory.scanSource("demo-source", repoPath, "demo");
28
- expect(scanned.leafs).toHaveLength(1);
29
- expect(scanned.leafs[0]?.relativePath).toBe("skills/browse");
30
- expect(scanned.duplicateLeafs.some((duplicate) => duplicate.path === "alpha/browse" && duplicate.keptPath === "skills/browse")).toBe(true);
31
- });
32
- test("preserves recursive fallback for hidden host directories", async () => {
33
- const repoPath = await createRepo(sandbox.sandboxRoot, {
34
- ".agents/skills/gstack-browse/SKILL.md": skillDoc("gstack-browse", "Host directory skill."),
35
- });
36
- const inventory = new InventoryService();
37
- const scanned = await inventory.scanSource("demo-source", repoPath, "demo");
38
- expect(scanned.leafs).toHaveLength(1);
39
- expect(scanned.leafs[0]?.relativePath).toBe(".agents/skills/gstack-browse");
40
- });
41
- });
42
- //# sourceMappingURL=inventory-service-precedence.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inventory-service-precedence.test.js","sourceRoot":"","sources":["../../src/tests/inventory-service-precedence.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};