superskill 0.2.2 → 0.2.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.
Files changed (141) hide show
  1. package/.claude-plugin/marketplace.json +23 -0
  2. package/.claude-plugin/plugin.json +12 -0
  3. package/.mcp.json +9 -0
  4. package/LICENSE-COMMERCIAL.md +46 -0
  5. package/dist/setup/configure.js +21 -1
  6. package/dist/setup/configure.js.map +1 -1
  7. package/dist/setup/teardown.js +13 -5
  8. package/dist/setup/teardown.js.map +1 -1
  9. package/package.json +7 -1
  10. package/dist/commands/brainstorm.test.d.ts +0 -1
  11. package/dist/commands/brainstorm.test.js +0 -110
  12. package/dist/commands/brainstorm.test.js.map +0 -1
  13. package/dist/commands/context.test.d.ts +0 -1
  14. package/dist/commands/context.test.js +0 -230
  15. package/dist/commands/context.test.js.map +0 -1
  16. package/dist/commands/decide.test.d.ts +0 -1
  17. package/dist/commands/decide.test.js +0 -109
  18. package/dist/commands/decide.test.js.map +0 -1
  19. package/dist/commands/graph.test.d.ts +0 -1
  20. package/dist/commands/graph.test.js +0 -215
  21. package/dist/commands/graph.test.js.map +0 -1
  22. package/dist/commands/learn.test.d.ts +0 -1
  23. package/dist/commands/learn.test.js +0 -241
  24. package/dist/commands/learn.test.js.map +0 -1
  25. package/dist/commands/read.test.d.ts +0 -1
  26. package/dist/commands/read.test.js +0 -48
  27. package/dist/commands/read.test.js.map +0 -1
  28. package/dist/commands/resume.test.d.ts +0 -1
  29. package/dist/commands/resume.test.js +0 -243
  30. package/dist/commands/resume.test.js.map +0 -1
  31. package/dist/commands/search.test.d.ts +0 -1
  32. package/dist/commands/search.test.js +0 -61
  33. package/dist/commands/search.test.js.map +0 -1
  34. package/dist/commands/session.test.d.ts +0 -1
  35. package/dist/commands/session.test.js +0 -231
  36. package/dist/commands/session.test.js.map +0 -1
  37. package/dist/commands/skill/index.test.d.ts +0 -1
  38. package/dist/commands/skill/index.test.js +0 -137
  39. package/dist/commands/skill/index.test.js.map +0 -1
  40. package/dist/commands/skill/install.test.d.ts +0 -1
  41. package/dist/commands/skill/install.test.js +0 -225
  42. package/dist/commands/skill/install.test.js.map +0 -1
  43. package/dist/commands/skill/list.test.d.ts +0 -1
  44. package/dist/commands/skill/list.test.js +0 -101
  45. package/dist/commands/skill/list.test.js.map +0 -1
  46. package/dist/commands/skill/schema.test.d.ts +0 -1
  47. package/dist/commands/skill/schema.test.js +0 -142
  48. package/dist/commands/skill/schema.test.js.map +0 -1
  49. package/dist/commands/skill/validate.test.d.ts +0 -1
  50. package/dist/commands/skill/validate.test.js +0 -171
  51. package/dist/commands/skill/validate.test.js.map +0 -1
  52. package/dist/commands/task.test.d.ts +0 -1
  53. package/dist/commands/task.test.js +0 -395
  54. package/dist/commands/task.test.js.map +0 -1
  55. package/dist/commands/todo.test.d.ts +0 -1
  56. package/dist/commands/todo.test.js +0 -324
  57. package/dist/commands/todo.test.js.map +0 -1
  58. package/dist/commands/write.test.d.ts +0 -1
  59. package/dist/commands/write.test.js +0 -79
  60. package/dist/commands/write.test.js.map +0 -1
  61. package/dist/config.test.d.ts +0 -1
  62. package/dist/config.test.js +0 -147
  63. package/dist/config.test.js.map +0 -1
  64. package/dist/core/executor.test.d.ts +0 -1
  65. package/dist/core/executor.test.js +0 -206
  66. package/dist/core/executor.test.js.map +0 -1
  67. package/dist/core/registry.test.d.ts +0 -1
  68. package/dist/core/registry.test.js +0 -213
  69. package/dist/core/registry.test.js.map +0 -1
  70. package/dist/integration/coordination.test.d.ts +0 -1
  71. package/dist/integration/coordination.test.js +0 -286
  72. package/dist/integration/coordination.test.js.map +0 -1
  73. package/dist/integration/project-artifacts.test.d.ts +0 -1
  74. package/dist/integration/project-artifacts.test.js +0 -275
  75. package/dist/integration/project-artifacts.test.js.map +0 -1
  76. package/dist/integration/registry-graph.test.d.ts +0 -1
  77. package/dist/integration/registry-graph.test.js +0 -157
  78. package/dist/integration/registry-graph.test.js.map +0 -1
  79. package/dist/integration/vault-lifecycle.test.d.ts +0 -1
  80. package/dist/integration/vault-lifecycle.test.js +0 -183
  81. package/dist/integration/vault-lifecycle.test.js.map +0 -1
  82. package/dist/lib/auto-number.test.d.ts +0 -1
  83. package/dist/lib/auto-number.test.js +0 -88
  84. package/dist/lib/auto-number.test.js.map +0 -1
  85. package/dist/lib/auto-profile.test.d.ts +0 -1
  86. package/dist/lib/auto-profile.test.js +0 -227
  87. package/dist/lib/auto-profile.test.js.map +0 -1
  88. package/dist/lib/escape-regex.test.d.ts +0 -1
  89. package/dist/lib/escape-regex.test.js +0 -27
  90. package/dist/lib/escape-regex.test.js.map +0 -1
  91. package/dist/lib/frontmatter.test.d.ts +0 -1
  92. package/dist/lib/frontmatter.test.js +0 -192
  93. package/dist/lib/frontmatter.test.js.map +0 -1
  94. package/dist/lib/project-detector.test.d.ts +0 -1
  95. package/dist/lib/project-detector.test.js +0 -117
  96. package/dist/lib/project-detector.test.js.map +0 -1
  97. package/dist/lib/safe-external-path.test.d.ts +0 -1
  98. package/dist/lib/safe-external-path.test.js +0 -99
  99. package/dist/lib/safe-external-path.test.js.map +0 -1
  100. package/dist/lib/search-engine.test.d.ts +0 -1
  101. package/dist/lib/search-engine.test.js +0 -120
  102. package/dist/lib/search-engine.test.js.map +0 -1
  103. package/dist/lib/session-registry.test.d.ts +0 -1
  104. package/dist/lib/session-registry.test.js +0 -199
  105. package/dist/lib/session-registry.test.js.map +0 -1
  106. package/dist/lib/stack-detector.test.d.ts +0 -1
  107. package/dist/lib/stack-detector.test.js +0 -110
  108. package/dist/lib/stack-detector.test.js.map +0 -1
  109. package/dist/lib/token-estimator.test.d.ts +0 -1
  110. package/dist/lib/token-estimator.test.js +0 -65
  111. package/dist/lib/token-estimator.test.js.map +0 -1
  112. package/dist/lib/tool-detector.test.d.ts +0 -1
  113. package/dist/lib/tool-detector.test.js +0 -170
  114. package/dist/lib/tool-detector.test.js.map +0 -1
  115. package/dist/lib/vault-fs.test.d.ts +0 -1
  116. package/dist/lib/vault-fs.test.js +0 -210
  117. package/dist/lib/vault-fs.test.js.map +0 -1
  118. package/dist/setup/configure.test.d.ts +0 -1
  119. package/dist/setup/configure.test.js +0 -112
  120. package/dist/setup/configure.test.js.map +0 -1
  121. package/dist/setup/detect.test.d.ts +0 -1
  122. package/dist/setup/detect.test.js +0 -44
  123. package/dist/setup/detect.test.js.map +0 -1
  124. package/dist/setup/instructions.test.d.ts +0 -1
  125. package/dist/setup/instructions.test.js +0 -84
  126. package/dist/setup/instructions.test.js.map +0 -1
  127. package/dist/setup/json-config.test.d.ts +0 -1
  128. package/dist/setup/json-config.test.js +0 -92
  129. package/dist/setup/json-config.test.js.map +0 -1
  130. package/dist/setup/setup-integration.test.d.ts +0 -1
  131. package/dist/setup/setup-integration.test.js +0 -72
  132. package/dist/setup/setup-integration.test.js.map +0 -1
  133. package/dist/setup/teardown.test.d.ts +0 -1
  134. package/dist/setup/teardown.test.js +0 -105
  135. package/dist/setup/teardown.test.js.map +0 -1
  136. package/dist/setup/toml-config.test.d.ts +0 -1
  137. package/dist/setup/toml-config.test.js +0 -49
  138. package/dist/setup/toml-config.test.js.map +0 -1
  139. package/dist/test-helpers.test.d.ts +0 -1
  140. package/dist/test-helpers.test.js +0 -90
  141. package/dist/test-helpers.test.js.map +0 -1
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "superskill",
3
+ "owner": {
4
+ "name": "Permanu (Atharva Pandey)",
5
+ "email": "license@permanu.com"
6
+ },
7
+ "metadata": {
8
+ "description": "Universal skill marketplace + knowledge vault for AI coding agents",
9
+ "version": "0.2.1"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "superskill",
14
+ "source": {
15
+ "source": "url",
16
+ "url": "https://github.com/permanu/superskill.git"
17
+ },
18
+ "description": "Universal skill marketplace + knowledge vault. Auto-detects your stack, resolves skill collisions across 9 repos, loads expert methodologies (TDD, brainstorming, code review, debugging, security, etc.) on demand.",
19
+ "version": "0.2.1",
20
+ "strict": true
21
+ }
22
+ ]
23
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "superskill",
3
+ "version": "0.2.0",
4
+ "description": "Universal skill marketplace + knowledge vault for AI coding agents. Auto-detects your stack, loads expert methodologies (TDD, brainstorming, code review, debugging, security, etc.) on demand.",
5
+ "author": {
6
+ "name": "Permanu (Atharva Pandey)",
7
+ "url": "https://permanu.com"
8
+ },
9
+ "repository": "https://github.com/permanu/superskill",
10
+ "license": "AGPL-3.0-or-later",
11
+ "keywords": ["skills", "marketplace", "knowledge-base", "context", "vault", "tdd", "brainstorming", "code-review", "multi-tool"]
12
+ }
package/.mcp.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "superskill": {
3
+ "command": "npx",
4
+ "args": ["-y", "superskill@latest"],
5
+ "env": {
6
+ "VAULT_PATH": "${VAULT_PATH:-~/Vaults/ai}"
7
+ }
8
+ }
9
+ }
@@ -0,0 +1,46 @@
1
+ # SuperSkill Commercial License
2
+
3
+ ## Overview
4
+
5
+ SuperSkill is dual-licensed:
6
+ - **AGPL-3.0-or-later** for open source and personal use
7
+ - **Commercial License** for businesses exceeding the revenue threshold
8
+
9
+ ## When You Need a Commercial License
10
+
11
+ A Commercial License is required when ALL of the following are true:
12
+ 1. Your organization uses SuperSkill in a commercial product or service
13
+ 2. Your organization's annual gross revenue exceeds **USD $1,000,000**
14
+ 3. You do not wish to comply with AGPL-3.0 obligations (source disclosure)
15
+
16
+ Organizations below the revenue threshold may use SuperSkill under AGPL-3.0 without a commercial license.
17
+
18
+ ## Attribution Requirement (All Users)
19
+
20
+ ALL users of SuperSkill, including AGPL users, must:
21
+ - Include "Powered by SuperSkill" attribution in any product, documentation, or service that uses SuperSkill
22
+ - Maintain the original copyright notices in source code
23
+ - Not remove or alter any license headers
24
+
25
+ ## Commercial License Terms
26
+
27
+ The Commercial License includes:
28
+ - Permission to use SuperSkill without AGPL source disclosure requirements
29
+ - Permission to create proprietary modifications
30
+ - Priority support channel access
31
+ - License to use the SuperSkill name and logo in your product
32
+
33
+ ## Pricing
34
+
35
+ Commercial license fees are based on organization size:
36
+ - **$1M - $10M annual revenue**: $500/year
37
+ - **$10M - $50M annual revenue**: $2,000/year
38
+ - **$50M+ annual revenue**: $5,000/year
39
+
40
+ ## Contact
41
+
42
+ For commercial licensing inquiries: license@permanu.com
43
+
44
+ ## Effective Date
45
+
46
+ These terms are effective as of March 2026.
@@ -2,7 +2,7 @@
2
2
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
3
3
  import { dirname } from "path";
4
4
  import { INSTRUCTION_TEXT } from "./types.js";
5
- import { readJsonConfig, writeJsonConfig, addMcpEntry } from "./json-config.js";
5
+ import { readJsonConfig, writeJsonConfig, addMcpEntry, removeMcpEntry } from "./json-config.js";
6
6
  import { insertTomlBlock } from "./toml-config.js";
7
7
  import { writeMarkdownInstruction, writeMdcInstruction, } from "./instructions.js";
8
8
  export function buildMcpEntry(commandType, envKey, vaultPath, extraFields) {
@@ -33,6 +33,26 @@ export function configureClient(detected, vaultPath, options = {}) {
33
33
  instructionConfigured: false,
34
34
  };
35
35
  try {
36
+ // 0. Migrate: remove old obsidian-mcp / obsidian-kb entries
37
+ const LEGACY_NAMES = ["obsidian-mcp", "obsidian-kb"];
38
+ if (!options.dryRun && config.configFormat === "json" && existsSync(mcpConfigPath)) {
39
+ try {
40
+ let migrated = readJsonConfig(mcpConfigPath);
41
+ if (migrated) {
42
+ let anyLegacyRemoved = false;
43
+ for (const oldName of LEGACY_NAMES) {
44
+ const result = removeMcpEntry(migrated, config.rootKey, oldName);
45
+ if (result?.removed) {
46
+ migrated = result.config;
47
+ anyLegacyRemoved = true;
48
+ }
49
+ }
50
+ if (anyLegacyRemoved)
51
+ writeJsonConfig(mcpConfigPath, migrated);
52
+ }
53
+ }
54
+ catch { /* migration is best-effort */ }
55
+ }
36
56
  // 1. Configure MCP entry
37
57
  if (config.configFormat === "json") {
38
58
  if (options.dryRun) {
@@ -1 +1 @@
1
- {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/setup/configure.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,UAAU,aAAa,CAC3B,WAA+B,EAC/B,MAAc,EACd,SAAiB,EACjB,WAAqC;IAErC,MAAM,IAAI,GAA4B,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzD,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB;IACvC,OAAO;;;;;gBAKO,SAAS,GAAG,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,QAAwB,EACxB,SAAiB,EACjB,UAAiD,EAAE;IAEnD,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;IAC5D,MAAM,MAAM,GAAgB;QAC1B,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,aAAa,EAAE,KAAK;QACpB,qBAAqB,EAAE,KAAK;KAC7B,CAAC;IAEF,IAAI,CAAC;QACH,yBAAyB;QACzB,IAAI,MAAM,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;gBAC/C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtB,MAAM,CAAC,KAAK,GAAG,mBAAmB,aAAa,YAAY,CAAC;oBAC5D,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,MAAM,KAAK,GAAG,aAAa,CACzB,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,MAAM,EACb,SAAS,EACT,MAAM,CAAC,WAAW,CACnB,CAAC;gBACF,MAAM,MAAM,GAAG,WAAW,CACxB,QAAQ,EACR,MAAM,CAAC,OAAO,EACd,YAAY,EACZ,KAAK,EACL,OAAO,CAAC,KAAK,CACd,CAAC;gBACF,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;oBACzB,MAAM,CAAC,OAAO,GAAG,0BAA0B,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9C,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,eAAe;YACf,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC;oBACvC,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC;oBACtC,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBACxC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC/D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,MAAM,CAAC,OAAO,GAAG,0BAA0B,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;oBACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1D,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/C,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,MAAM,CAAC,mBAAmB,KAAK,MAAM,EAAE,CAAC;YAC1C,gBAAgB;QAClB,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACtC,CAAC;aAAM,IAAI,MAAM,CAAC,mBAAmB,KAAK,eAAe,IAAI,eAAe,EAAE,CAAC;YAC7E,MAAM,MAAM,GAAG,wBAAwB,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACxE,MAAM,CAAC,qBAAqB,GAAG,MAAM,KAAK,QAAQ,CAAC;YACnD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,4BAA4B,CAAC;YAChG,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,mBAAmB,KAAK,UAAU,IAAI,eAAe,EAAE,CAAC;YACxE,mBAAmB,CAAC,eAAe,CAAC,CAAC;YACrC,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACtC,CAAC;aAAM,IAAI,MAAM,CAAC,mBAAmB,KAAK,cAAc,IAAI,eAAe,EAAE,CAAC;YAC5E,yEAAyE;YACzE,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC;YAC1C,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtD,mBAAmB,UAAU,+BAA+B,CAAC;gBAC/D,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,YAAY,GAAa,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC5C,QAAQ,CAAC,YAAY,GAAG,CAAC,GAAG,YAAY,EAAE,eAAe,CAAC,CAAC;gBAC3D,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACxC,CAAC;YACD,oCAAoC;YACpC,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,aAAa,CAAC,eAAe,EAAE,gBAAgB,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YACjE,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,CAAC,KAAK,GAAI,CAAW,CAAC,OAAO,CAAC;IACtC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/setup/configure.ts"],"names":[],"mappings":"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"}
@@ -13,17 +13,25 @@ export function teardownClient(detected, options = {}) {
13
13
  instructionRemoved: false,
14
14
  };
15
15
  try {
16
- // 1. Remove MCP entry
16
+ // 1. Remove MCP entry (current name + legacy names)
17
+ const MCP_NAMES = ["superskill", "obsidian-mcp", "obsidian-kb"];
17
18
  if (config.configFormat === "json") {
18
19
  if (options.dryRun) {
19
20
  result.mcpRemoved = true;
20
21
  }
21
22
  else if (existsSync(mcpConfigPath)) {
22
- const existing = readJsonConfig(mcpConfigPath);
23
+ let existing = readJsonConfig(mcpConfigPath);
23
24
  if (existing) {
24
- const { config: updated, removed } = removeMcpEntry(existing, config.rootKey, "superskill");
25
- if (removed) {
26
- writeJsonConfig(mcpConfigPath, updated);
25
+ let anyRemoved = false;
26
+ for (const name of MCP_NAMES) {
27
+ const { config: updated, removed } = removeMcpEntry(existing, config.rootKey, name);
28
+ if (removed) {
29
+ existing = updated;
30
+ anyRemoved = true;
31
+ }
32
+ }
33
+ if (anyRemoved) {
34
+ writeJsonConfig(mcpConfigPath, existing);
27
35
  result.mcpRemoved = true;
28
36
  }
29
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/setup/teardown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/setup/teardown.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superskill",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Universal agentic knowledge base + context optimizer + skill marketplace for AI tools",
5
5
  "type": "module",
6
6
  "main": "dist/mcp-server.js",
@@ -20,8 +20,14 @@
20
20
  },
21
21
  "files": [
22
22
  "dist/",
23
+ "!dist/**/*.test.js",
24
+ "!dist/**/*.test.d.ts",
25
+ "!dist/**/*.test.js.map",
26
+ ".claude-plugin/",
27
+ ".mcp.json",
23
28
  "README.md",
24
29
  "LICENSE",
30
+ "LICENSE-COMMERCIAL.md",
25
31
  "CHANGELOG.md"
26
32
  ],
27
33
  "scripts": {
@@ -1 +0,0 @@
1
- export {};
@@ -1,110 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
- import { mkdir, rm } from "fs/promises";
3
- import { homedir } from "os";
4
- import { join } from "path";
5
- import { brainstormCommand } from "./brainstorm.js";
6
- import { VaultFS } from "../lib/vault-fs.js";
7
- function createCommandContext(vaultFs, overrides) {
8
- return {
9
- vaultFs,
10
- vaultPath: vaultFs.root,
11
- sessionRegistry: {},
12
- config: {},
13
- log: { debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn() },
14
- ...overrides,
15
- };
16
- }
17
- describe("brainstormCommand", () => {
18
- let vaultRoot;
19
- let vaultFs;
20
- let ctx;
21
- beforeEach(async () => {
22
- vaultRoot = join(homedir(), `.vault-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
23
- await mkdir(vaultRoot, { recursive: true });
24
- vaultFs = new VaultFS(vaultRoot);
25
- ctx = createCommandContext(vaultFs);
26
- });
27
- afterEach(async () => {
28
- await rm(vaultRoot, { recursive: true, force: true });
29
- });
30
- describe("create new brainstorm", () => {
31
- it("creates new brainstorm file with frontmatter", async () => {
32
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
33
- await mkdir(join(vaultRoot, "projects/test-project/brainstorms"), { recursive: true });
34
- const result = await brainstormCommand({
35
- topic: "My Brainstorm",
36
- content: "First idea",
37
- project: "test-project",
38
- }, ctx);
39
- expect(result.path).toBe("projects/test-project/brainstorms/my-brainstorm.md");
40
- expect(result.total_entries).toBe(1);
41
- const content = await vaultFs.read(result.path);
42
- expect(content).toContain("type: brainstorm");
43
- expect(content).toContain("project: test-project");
44
- expect(content).toContain("# My Brainstorm");
45
- expect(content).toContain("First idea");
46
- });
47
- it("creates frontmatter with draft status", async () => {
48
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
49
- await mkdir(join(vaultRoot, "projects/test-project/brainstorms"), { recursive: true });
50
- const result = await brainstormCommand({
51
- topic: "Test Topic",
52
- content: "content",
53
- project: "test-project",
54
- }, ctx);
55
- const content = await vaultFs.read(result.path);
56
- expect(content).toContain("status: draft");
57
- });
58
- it("slugifies topic with special characters", async () => {
59
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
60
- await mkdir(join(vaultRoot, "projects/test-project/brainstorms"), { recursive: true });
61
- const result = await brainstormCommand({
62
- topic: "My Special Topic! @#$",
63
- content: "content",
64
- project: "test-project",
65
- }, ctx);
66
- expect(result.path).toContain("my-special-topic");
67
- });
68
- });
69
- describe("append to existing brainstorm", () => {
70
- it("appends new entry to existing brainstorm", async () => {
71
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
72
- await mkdir(join(vaultRoot, "projects/test-project/brainstorms"), { recursive: true });
73
- await brainstormCommand({
74
- topic: "Existing Topic",
75
- content: "First entry",
76
- project: "test-project",
77
- }, ctx);
78
- const result = await brainstormCommand({
79
- topic: "Existing Topic",
80
- content: "Second entry",
81
- project: "test-project",
82
- }, ctx);
83
- expect(result.total_entries).toBe(2);
84
- const content = await vaultFs.read(result.path);
85
- expect(content).toContain("First entry");
86
- expect(content).toContain("Second entry");
87
- });
88
- it("counts entries correctly after multiple appends", async () => {
89
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
90
- await mkdir(join(vaultRoot, "projects/test-project/brainstorms"), { recursive: true });
91
- await brainstormCommand({
92
- topic: "Multi Entry",
93
- content: "Entry 1",
94
- project: "test-project",
95
- }, ctx);
96
- await brainstormCommand({
97
- topic: "Multi Entry",
98
- content: "Entry 2",
99
- project: "test-project",
100
- }, ctx);
101
- const result = await brainstormCommand({
102
- topic: "Multi Entry",
103
- content: "Entry 3",
104
- project: "test-project",
105
- }, ctx);
106
- expect(result.total_entries).toBe(3);
107
- });
108
- });
109
- });
110
- //# sourceMappingURL=brainstorm.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"brainstorm.test.js","sourceRoot":"","sources":["../../src/commands/brainstorm.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,230 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
- import { mkdir, rm } from "fs/promises";
3
- import { homedir } from "os";
4
- import { join } from "path";
5
- import { contextCommand } from "./context.js";
6
- import { VaultFS } from "../lib/vault-fs.js";
7
- function createCommandContext(vaultFs, overrides) {
8
- return {
9
- vaultFs,
10
- vaultPath: vaultFs.root,
11
- sessionRegistry: {},
12
- config: {},
13
- log: { debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn() },
14
- ...overrides,
15
- };
16
- }
17
- describe("contextCommand", () => {
18
- let vaultRoot;
19
- let vaultFs;
20
- let ctx;
21
- beforeEach(async () => {
22
- vaultRoot = join(homedir(), `.vault-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
23
- await mkdir(vaultRoot, { recursive: true });
24
- vaultFs = new VaultFS(vaultRoot);
25
- ctx = createCommandContext(vaultFs);
26
- });
27
- afterEach(async () => {
28
- await rm(vaultRoot, { recursive: true, force: true });
29
- });
30
- describe("missing context file", () => {
31
- it("returns message when context file does not exist", async () => {
32
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
33
- const result = await contextCommand({
34
- project: "test-project",
35
- }, ctx);
36
- expect(result.project_slug).toBe("test-project");
37
- expect(result.context_md).toContain("No context file found");
38
- expect(result.token_estimate).toBe(20);
39
- expect(result.sections).toEqual([]);
40
- expect(result.truncated).toBe(false);
41
- });
42
- });
43
- describe("summary mode (default)", () => {
44
- it("returns context content with truncation if over budget", async () => {
45
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
46
- await mkdir(join(vaultRoot, "projects/test-project"), { recursive: true });
47
- const longContent = "a".repeat(10000);
48
- await vaultFs.write(`projects/test-project/context.md`, `---
49
- type: context
50
- project: test-project
51
- ---
52
-
53
- # Project Context
54
-
55
- ## Overview
56
-
57
- ${longContent}
58
-
59
- ## Details
60
-
61
- More content here.
62
- `);
63
- const result = await contextCommand({
64
- project: "test-project",
65
- maxTokens: 100,
66
- }, ctx);
67
- expect(result.truncated).toBe(true);
68
- expect(result.token_estimate).toBeLessThan(100);
69
- });
70
- it("extracts section headings", async () => {
71
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
72
- await mkdir(join(vaultRoot, "projects/test-project"), { recursive: true });
73
- await vaultFs.write(`projects/test-project/context.md`, `---
74
- type: context
75
- project: test-project
76
- ---
77
-
78
- # Project Context
79
-
80
- ## Overview
81
-
82
- Overview content.
83
-
84
- ## Tech Stack
85
-
86
- Stack details.
87
-
88
- ## Architecture
89
-
90
- Arch details.
91
- `);
92
- const result = await contextCommand({
93
- project: "test-project",
94
- }, ctx);
95
- expect(result.sections).toContain("Overview");
96
- expect(result.sections).toContain("Tech Stack");
97
- expect(result.sections).toContain("Architecture");
98
- });
99
- });
100
- describe("full mode", () => {
101
- it("returns full context without truncation", async () => {
102
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
103
- await mkdir(join(vaultRoot, "projects/test-project"), { recursive: true });
104
- const longContent = "a".repeat(10000);
105
- await vaultFs.write(`projects/test-project/context.md`, `---
106
- type: context
107
- ---
108
-
109
- # Project Context
110
-
111
- ${longContent}
112
- `);
113
- const result = await contextCommand({
114
- project: "test-project",
115
- detailLevel: "full",
116
- }, ctx);
117
- expect(result.truncated).toBe(false);
118
- expect(result.context_md).toContain(longContent);
119
- expect(result.token_estimate).toBeGreaterThan(2000);
120
- });
121
- });
122
- describe("learning count", () => {
123
- it("counts learning files", async () => {
124
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
125
- await mkdir(join(vaultRoot, "projects/test-project/learnings"), { recursive: true });
126
- await mkdir(join(vaultRoot, "projects/test-project"), { recursive: true });
127
- await vaultFs.write(`projects/test-project/context.md`, `---
128
- type: context
129
- ---
130
-
131
- # Context
132
- `);
133
- await vaultFs.write(`projects/test-project/learnings/001-test.md`, `---
134
- type: learning
135
- ---
136
-
137
- # Learning 1
138
- `);
139
- await vaultFs.write(`projects/test-project/learnings/002-test.md`, `---
140
- type: learning
141
- ---
142
-
143
- # Learning 2
144
- `);
145
- const result = await contextCommand({
146
- project: "test-project",
147
- }, ctx);
148
- expect(result.learning_count).toBe(2);
149
- });
150
- it("returns 0 when learnings directory does not exist", async () => {
151
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
152
- await mkdir(join(vaultRoot, "projects/test-project"), { recursive: true });
153
- await vaultFs.write(`projects/test-project/context.md`, `---
154
- type: context
155
- ---
156
-
157
- # Context
158
- `);
159
- const result = await contextCommand({
160
- project: "test-project",
161
- }, ctx);
162
- expect(result.learning_count).toBe(0);
163
- });
164
- });
165
- describe("last session", () => {
166
- it("extracts last session info", async () => {
167
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
168
- await mkdir(join(vaultRoot, "projects/test-project/sessions"), { recursive: true });
169
- await mkdir(join(vaultRoot, "projects/test-project"), { recursive: true });
170
- await vaultFs.write(`projects/test-project/context.md`, `---
171
- type: context
172
- ---
173
-
174
- # Context
175
- `);
176
- await vaultFs.write(`projects/test-project/sessions/2024-01-15-session-abc123.md`, `---
177
- type: session
178
- outcome: Implemented feature X
179
- completed_at: "2024-01-15T10:30:00Z"
180
- ---
181
-
182
- # Session
183
- `);
184
- const result = await contextCommand({
185
- project: "test-project",
186
- }, ctx);
187
- expect(result.last_session).not.toBeNull();
188
- expect(result.last_session.outcome).toBe("Implemented feature X");
189
- expect(result.last_session.completed_at).toBe("2024-01-15T10:30:00Z");
190
- });
191
- it("returns null when no sessions exist", async () => {
192
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
193
- await mkdir(join(vaultRoot, "projects/test-project"), { recursive: true });
194
- await vaultFs.write(`projects/test-project/context.md`, `---
195
- type: context
196
- ---
197
-
198
- # Context
199
- `);
200
- const result = await contextCommand({
201
- project: "test-project",
202
- }, ctx);
203
- expect(result.last_session).toBeNull();
204
- });
205
- it("falls back to created date if completed_at missing", async () => {
206
- await vaultFs.write("project-map.json", JSON.stringify({ projects: { "test-project": "/tmp/test" } }));
207
- await mkdir(join(vaultRoot, "projects/test-project/sessions"), { recursive: true });
208
- await mkdir(join(vaultRoot, "projects/test-project"), { recursive: true });
209
- await vaultFs.write(`projects/test-project/context.md`, `---
210
- type: context
211
- ---
212
-
213
- # Context
214
- `);
215
- await vaultFs.write(`projects/test-project/sessions/2024-01-15-session-abc.md`, `---
216
- type: session
217
- outcome: Test session
218
- created: "2024-01-15"
219
- ---
220
-
221
- # Session
222
- `);
223
- const result = await contextCommand({
224
- project: "test-project",
225
- }, ctx);
226
- expect(result.last_session.completed_at).toBe("2024-01-15");
227
- });
228
- });
229
- });
230
- //# sourceMappingURL=context.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../src/commands/context.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};