specweave 1.0.508 ā 1.0.509
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/dist/src/adapters/aider/adapter.d.ts.map +1 -1
- package/dist/src/adapters/aider/adapter.js +9 -9
- package/dist/src/adapters/aider/adapter.js.map +1 -1
- package/dist/src/adapters/amazonq/adapter.d.ts.map +1 -1
- package/dist/src/adapters/amazonq/adapter.js +9 -9
- package/dist/src/adapters/amazonq/adapter.js.map +1 -1
- package/dist/src/adapters/cline/adapter.d.ts.map +1 -1
- package/dist/src/adapters/cline/adapter.js +9 -9
- package/dist/src/adapters/cline/adapter.js.map +1 -1
- package/dist/src/adapters/codex/adapter.d.ts +3 -3
- package/dist/src/adapters/codex/adapter.js +10 -10
- package/dist/src/adapters/codex/adapter.js.map +1 -1
- package/dist/src/adapters/continue/adapter.d.ts +3 -3
- package/dist/src/adapters/continue/adapter.d.ts.map +1 -1
- package/dist/src/adapters/continue/adapter.js +13 -13
- package/dist/src/adapters/continue/adapter.js.map +1 -1
- package/dist/src/adapters/copilot/adapter.d.ts +3 -4
- package/dist/src/adapters/copilot/adapter.d.ts.map +1 -1
- package/dist/src/adapters/copilot/adapter.js +13 -14
- package/dist/src/adapters/copilot/adapter.js.map +1 -1
- package/dist/src/adapters/cursor/adapter.d.ts +3 -3
- package/dist/src/adapters/cursor/adapter.js +10 -10
- package/dist/src/adapters/cursor/adapter.js.map +1 -1
- package/dist/src/adapters/jetbrains/adapter.d.ts.map +1 -1
- package/dist/src/adapters/jetbrains/adapter.js +10 -10
- package/dist/src/adapters/jetbrains/adapter.js.map +1 -1
- package/dist/src/adapters/registry.yaml +32 -32
- package/dist/src/adapters/tabnine/adapter.d.ts.map +1 -1
- package/dist/src/adapters/tabnine/adapter.js +9 -9
- package/dist/src/adapters/tabnine/adapter.js.map +1 -1
- package/dist/src/adapters/trae/adapter.d.ts.map +1 -1
- package/dist/src/adapters/trae/adapter.js +9 -9
- package/dist/src/adapters/trae/adapter.js.map +1 -1
- package/dist/src/adapters/windsurf/adapter.d.ts +3 -4
- package/dist/src/adapters/windsurf/adapter.d.ts.map +1 -1
- package/dist/src/adapters/windsurf/adapter.js +13 -14
- package/dist/src/adapters/windsurf/adapter.js.map +1 -1
- package/dist/src/adapters/zed/adapter.d.ts.map +1 -1
- package/dist/src/adapters/zed/adapter.js +9 -9
- package/dist/src/adapters/zed/adapter.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/agents/sw-architect.md +1 -1
- package/plugins/specweave/lib/integrations/jira/jira-spec-sync.js +100 -90
- package/plugins/specweave/lib/integrations/jira/jira-status-sync.js +54 -2
- package/plugins/specweave/skills/architect/SKILL.md +2 -2
- package/plugins/specweave/skills/team-lead/agents/frontend.md +1 -2
|
@@ -77,7 +77,7 @@ export class CursorAdapter extends AdapterBase {
|
|
|
77
77
|
const cursorDir = path.join(options.projectPath, '.cursor');
|
|
78
78
|
await fs.ensureDir(cursorDir);
|
|
79
79
|
await fs.ensureDir(path.join(cursorDir, 'context'));
|
|
80
|
-
await fs.ensureDir(path.join(cursorDir, '
|
|
80
|
+
await fs.ensureDir(path.join(cursorDir, 'skills'));
|
|
81
81
|
// Copy files
|
|
82
82
|
await super.install(options);
|
|
83
83
|
console.log('\n⨠Cursor adapter installed!');
|
|
@@ -126,29 +126,29 @@ Docs: AGENTS.md, .cursor/README.md
|
|
|
126
126
|
}
|
|
127
127
|
/**
|
|
128
128
|
* Compile and install a plugin for Cursor.
|
|
129
|
-
* Writes each SKILL.md as a separate file in `.cursor/
|
|
129
|
+
* Writes each SKILL.md as a separate file in `.cursor/skills/`.
|
|
130
130
|
*/
|
|
131
131
|
async compilePlugin(plugin) {
|
|
132
|
-
const
|
|
132
|
+
const skillsDir = '.cursor/skills';
|
|
133
133
|
console.log(`\nš¦ Installing plugin skills for Cursor: ${plugin.manifest.name}`);
|
|
134
|
-
await this.writeSkillFiles(plugin,
|
|
135
|
-
console.log(` ā ${plugin.skills.length} skill(s) written to ${
|
|
134
|
+
await this.writeSkillFiles(plugin, skillsDir);
|
|
135
|
+
console.log(` ā ${plugin.skills.length} skill(s) written to ${skillsDir}/`);
|
|
136
136
|
console.log(`\nā
Plugin ${plugin.manifest.name} installed for Cursor!`);
|
|
137
137
|
}
|
|
138
138
|
/**
|
|
139
|
-
* Unload a plugin from Cursor ā removes skill files from `.cursor/
|
|
139
|
+
* Unload a plugin from Cursor ā removes skill files from `.cursor/skills/`.
|
|
140
140
|
*/
|
|
141
141
|
async unloadPlugin(pluginName) {
|
|
142
142
|
console.log(`\nšļø Unloading plugin from Cursor: ${pluginName}`);
|
|
143
|
-
await this.removeSkillFiles(pluginName, '.cursor/
|
|
144
|
-
console.log(` ā Removed from .cursor/
|
|
143
|
+
await this.removeSkillFiles(pluginName, '.cursor/skills');
|
|
144
|
+
console.log(` ā Removed from .cursor/skills/`);
|
|
145
145
|
console.log(`\nā
Plugin ${pluginName} unloaded!`);
|
|
146
146
|
}
|
|
147
147
|
/**
|
|
148
|
-
* Get installed plugins for Cursor by scanning `.cursor/
|
|
148
|
+
* Get installed plugins for Cursor by scanning `.cursor/skills/`.
|
|
149
149
|
*/
|
|
150
150
|
async getInstalledPlugins() {
|
|
151
|
-
return await this.listInstalledPluginsInDir('.cursor/
|
|
151
|
+
return await this.listInstalledPluginsInDir('.cursor/skills');
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/cursor/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,OAAO,aAAc,SAAQ,WAAW;IAA9C;;QACE,SAAI,GAAG,QAAQ,CAAC;QAChB,gBAAW,GAAG,yEAAyE,CAAC;QACxF,oBAAe,GAAG,MAAe,CAAC;IAmJpC,CAAC;IAjJC;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtD,OAAO,YAAY,IAAI,YAAY,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE,uCAAuC;gBACnD,UAAU,EAAE,uCAAuC;gBACnD,WAAW,EAAE,8BAA8B;aAC5C;YACD;gBACE,UAAU,EAAE,iCAAiC;gBAC7C,UAAU,EAAE,iCAAiC;gBAC7C,WAAW,EAAE,wBAAwB;aACtC;YACD;gBACE,UAAU,EAAE,qCAAqC;gBACjD,UAAU,EAAE,qCAAqC;gBACjD,WAAW,EAAE,4BAA4B;aAC1C;YACD;gBACE,UAAU,EAAE,kCAAkC;gBAC9C,UAAU,EAAE,kCAAkC;gBAC9C,WAAW,EAAE,yBAAyB;aACvC;YACD;gBACE,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,mBAAmB;gBAC/B,WAAW,EAAE,8BAA8B;aAC5C;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAElE,kCAAkC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACpD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/cursor/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/jetbrains/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,IAAI,SAAe;IACnB,WAAW,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/jetbrains/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,IAAI,SAAe;IACnB,WAAW,SAA4D;IACvE,eAAe,EAAG,MAAM,CAAU;IAE5B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,QAAQ,IAAI,WAAW,EAAE;IAInB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,eAAe,IAAI,OAAO;IAIpB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxC,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,eAAe,IAAI,MAAM;CAQ1B"}
|
|
@@ -8,18 +8,18 @@ export class JetBrainsAdapter extends AdapterBase {
|
|
|
8
8
|
constructor() {
|
|
9
9
|
super(...arguments);
|
|
10
10
|
this.name = 'jetbrains';
|
|
11
|
-
this.description = 'JetBrains adapter ā skills installed in .
|
|
11
|
+
this.description = 'JetBrains adapter ā skills installed in .junie/skills/';
|
|
12
12
|
this.automationLevel = 'semi';
|
|
13
13
|
}
|
|
14
14
|
async detect() {
|
|
15
|
-
return await this.fileExists('.aiassistant') || await this.commandExists('idea');
|
|
15
|
+
return await this.fileExists('.junie') || await this.fileExists('.aiassistant') || await this.commandExists('idea');
|
|
16
16
|
}
|
|
17
17
|
getFiles() {
|
|
18
18
|
return [];
|
|
19
19
|
}
|
|
20
20
|
async install(options) {
|
|
21
21
|
console.log('\nš¦ Installing JetBrains Adapter\n');
|
|
22
|
-
await fs.ensureDir(path.join(options.projectPath, '.
|
|
22
|
+
await fs.ensureDir(path.join(options.projectPath, '.junie/skills'));
|
|
23
23
|
console.log('\n⨠JetBrains adapter installed!');
|
|
24
24
|
console.log(' Run `specweave refresh-plugins` to install skills.');
|
|
25
25
|
}
|
|
@@ -27,20 +27,20 @@ export class JetBrainsAdapter extends AdapterBase {
|
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
29
|
async compilePlugin(plugin) {
|
|
30
|
-
const
|
|
30
|
+
const skillsDir = '.junie/skills';
|
|
31
31
|
console.log(`\nš¦ Installing plugin skills for JetBrains: ${plugin.manifest.name}`);
|
|
32
|
-
await this.writeSkillFiles(plugin,
|
|
33
|
-
console.log(` ā ${plugin.skills.length} skill(s) written to ${
|
|
32
|
+
await this.writeSkillFiles(plugin, skillsDir);
|
|
33
|
+
console.log(` ā ${plugin.skills.length} skill(s) written to ${skillsDir}/`);
|
|
34
34
|
console.log(`\nā
Plugin ${plugin.manifest.name} installed for JetBrains!`);
|
|
35
35
|
}
|
|
36
36
|
async unloadPlugin(pluginName) {
|
|
37
37
|
console.log(`\nšļø Unloading plugin from JetBrains: ${pluginName}`);
|
|
38
|
-
await this.removeSkillFiles(pluginName, '.
|
|
39
|
-
console.log(` ā Removed from .
|
|
38
|
+
await this.removeSkillFiles(pluginName, '.junie/skills');
|
|
39
|
+
console.log(` ā Removed from .junie/skills/`);
|
|
40
40
|
console.log(`\nā
Plugin ${pluginName} unloaded!`);
|
|
41
41
|
}
|
|
42
42
|
async getInstalledPlugins() {
|
|
43
|
-
return await this.listInstalledPluginsInDir('.
|
|
43
|
+
return await this.listInstalledPluginsInDir('.junie/skills');
|
|
44
44
|
}
|
|
45
45
|
async postInstall(options) {
|
|
46
46
|
console.log(this.getInstructions());
|
|
@@ -49,7 +49,7 @@ export class JetBrainsAdapter extends AdapterBase {
|
|
|
49
49
|
return `
|
|
50
50
|
JetBrains Adapter
|
|
51
51
|
|
|
52
|
-
Skills installed in .
|
|
52
|
+
Skills installed in .junie/skills/.
|
|
53
53
|
Run: specweave refresh-plugins
|
|
54
54
|
`;
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/jetbrains/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAAjD;;QACE,SAAI,GAAG,WAAW,CAAC;QACnB,gBAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/jetbrains/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAAjD;;QACE,SAAI,GAAG,WAAW,CAAC;QACnB,gBAAW,GAAG,wDAAwD,CAAC;QACvE,oBAAe,GAAG,MAAe,CAAC;IAoDpC,CAAC;IAlDC,KAAK,CAAC,MAAM;QACV,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtH,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,MAAM,SAAS,GAAG,eAAe,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,gDAAgD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,wBAAwB,SAAS,GAAG,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,IAAI,2BAA2B,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,OAAO,CAAC,GAAG,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAuB;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,eAAe;QACb,OAAO;;;;;KAKN,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -71,12 +71,12 @@ adapters:
|
|
|
71
71
|
priority: P1
|
|
72
72
|
|
|
73
73
|
- name: copilot
|
|
74
|
-
description: "GitHub Copilot adapter - Skills installed in .github/
|
|
74
|
+
description: "GitHub Copilot adapter - Skills installed in .github/copilot/skills/"
|
|
75
75
|
automation_level: basic
|
|
76
76
|
status: active
|
|
77
77
|
directory: copilot
|
|
78
78
|
features:
|
|
79
|
-
- .github/
|
|
79
|
+
- .github/copilot/skills/*.instructions.md per-context skill files
|
|
80
80
|
- Works with GitHub Copilot VS Code extension and IDE integrations
|
|
81
81
|
- Skills auto-read as workspace instructions
|
|
82
82
|
requirements:
|
|
@@ -137,12 +137,12 @@ adapters:
|
|
|
137
137
|
priority: P1
|
|
138
138
|
|
|
139
139
|
- name: windsurf
|
|
140
|
-
description: "Windsurf adapter - Skills installed in .windsurf/
|
|
140
|
+
description: "Windsurf adapter - Skills installed in .windsurf/skills/"
|
|
141
141
|
automation_level: semi
|
|
142
142
|
status: active
|
|
143
143
|
directory: windsurf
|
|
144
144
|
features:
|
|
145
|
-
- .windsurf/
|
|
145
|
+
- .windsurf/skills/*.md skill files auto-loaded by Windsurf
|
|
146
146
|
- Semi-automation with AGENTS.md workflow instructions
|
|
147
147
|
requirements:
|
|
148
148
|
- Windsurf editor installed
|
|
@@ -151,12 +151,12 @@ adapters:
|
|
|
151
151
|
priority: P1
|
|
152
152
|
|
|
153
153
|
- name: continue
|
|
154
|
-
description: "Continue.dev adapter - Skills installed in .continue/
|
|
154
|
+
description: "Continue.dev adapter - Skills installed in .continue/skills/"
|
|
155
155
|
automation_level: semi
|
|
156
156
|
status: active
|
|
157
157
|
directory: continue
|
|
158
158
|
features:
|
|
159
|
-
- .continue/
|
|
159
|
+
- .continue/skills/*.md skill files auto-loaded by Continue extension
|
|
160
160
|
- Files loaded in lexicographic order
|
|
161
161
|
requirements:
|
|
162
162
|
- Continue.dev VS Code or JetBrains extension
|
|
@@ -165,12 +165,12 @@ adapters:
|
|
|
165
165
|
priority: P1
|
|
166
166
|
|
|
167
167
|
- name: cline
|
|
168
|
-
description: "Cline adapter - Skills installed in .cline/
|
|
168
|
+
description: "Cline adapter - Skills installed in .cline/skills/"
|
|
169
169
|
automation_level: semi
|
|
170
170
|
status: active
|
|
171
171
|
directory: cline
|
|
172
172
|
features:
|
|
173
|
-
- .cline/
|
|
173
|
+
- .cline/skills/*.md skill context files
|
|
174
174
|
- Agentic task execution support
|
|
175
175
|
requirements:
|
|
176
176
|
- Cline VS Code extension
|
|
@@ -194,12 +194,12 @@ adapters:
|
|
|
194
194
|
priority: P2
|
|
195
195
|
|
|
196
196
|
- name: zed
|
|
197
|
-
description: "Zed adapter - Skills installed in .
|
|
197
|
+
description: "Zed adapter - Skills installed in .zed/skills/"
|
|
198
198
|
automation_level: semi
|
|
199
199
|
status: active
|
|
200
200
|
directory: zed
|
|
201
201
|
features:
|
|
202
|
-
- .
|
|
202
|
+
- .zed/skills/*.md project skill files auto-loaded by Zed AI
|
|
203
203
|
- MCP support for extensibility
|
|
204
204
|
requirements:
|
|
205
205
|
- Zed editor installed
|
|
@@ -208,12 +208,12 @@ adapters:
|
|
|
208
208
|
priority: P2
|
|
209
209
|
|
|
210
210
|
- name: amazonq
|
|
211
|
-
description: "Amazon Q Developer adapter - Skills installed in .amazonq/
|
|
211
|
+
description: "Amazon Q Developer adapter - Skills installed in .amazonq/skills/"
|
|
212
212
|
automation_level: semi
|
|
213
213
|
status: active
|
|
214
214
|
directory: amazonq
|
|
215
215
|
features:
|
|
216
|
-
- .amazonq/
|
|
216
|
+
- .amazonq/skills/*.md files auto-loaded on startup
|
|
217
217
|
- Enterprise-grade AI coding assistant
|
|
218
218
|
requirements:
|
|
219
219
|
- Amazon Q Developer extension or CLI
|
|
@@ -222,12 +222,12 @@ adapters:
|
|
|
222
222
|
priority: P2
|
|
223
223
|
|
|
224
224
|
- name: jetbrains
|
|
225
|
-
description: "JetBrains
|
|
225
|
+
description: "JetBrains Junie adapter - Skills installed in .junie/skills/"
|
|
226
226
|
automation_level: semi
|
|
227
227
|
status: active
|
|
228
228
|
directory: jetbrains
|
|
229
229
|
features:
|
|
230
|
-
- .
|
|
230
|
+
- .junie/skills/*.md skill files loaded by JetBrains Junie
|
|
231
231
|
- Works with IntelliJ IDEA, WebStorm, PyCharm, etc.
|
|
232
232
|
requirements:
|
|
233
233
|
- JetBrains IDE with AI Assistant plugin
|
|
@@ -236,12 +236,12 @@ adapters:
|
|
|
236
236
|
priority: P2
|
|
237
237
|
|
|
238
238
|
- name: aider
|
|
239
|
-
description: "Aider adapter - Skills installed in .aider/"
|
|
239
|
+
description: "Aider adapter - Skills installed in .aider/skills/"
|
|
240
240
|
automation_level: semi
|
|
241
241
|
status: active
|
|
242
242
|
directory: aider
|
|
243
243
|
features:
|
|
244
|
-
- .aider/*.md skill context files
|
|
244
|
+
- .aider/skills/*.md skill context files
|
|
245
245
|
- CLI-first AI coding assistant
|
|
246
246
|
requirements:
|
|
247
247
|
- Aider CLI installed (pip install aider-chat)
|
|
@@ -250,12 +250,12 @@ adapters:
|
|
|
250
250
|
priority: P2
|
|
251
251
|
|
|
252
252
|
- name: tabnine
|
|
253
|
-
description: "Tabnine adapter - Skills installed in .tabnine/
|
|
253
|
+
description: "Tabnine adapter - Skills installed in .tabnine/skills/"
|
|
254
254
|
automation_level: basic
|
|
255
255
|
status: active
|
|
256
256
|
directory: tabnine
|
|
257
257
|
features:
|
|
258
|
-
- .tabnine/
|
|
258
|
+
- .tabnine/skills/*.md custom skill files auto-loaded
|
|
259
259
|
- Enterprise AI code completion
|
|
260
260
|
requirements:
|
|
261
261
|
- Tabnine extension (VS Code, JetBrains, etc.)
|
|
@@ -278,12 +278,12 @@ adapters:
|
|
|
278
278
|
priority: P2
|
|
279
279
|
|
|
280
280
|
- name: trae
|
|
281
|
-
description: "Trae adapter - Skills installed in .trae/
|
|
281
|
+
description: "Trae adapter - Skills installed in .trae/skills/"
|
|
282
282
|
automation_level: semi
|
|
283
283
|
status: active
|
|
284
284
|
directory: trae
|
|
285
285
|
features:
|
|
286
|
-
- .trae/
|
|
286
|
+
- .trae/skills/*.md skill files
|
|
287
287
|
- ByteDance AI coding assistant
|
|
288
288
|
- MCP support
|
|
289
289
|
requirements:
|
|
@@ -360,20 +360,20 @@ capabilities:
|
|
|
360
360
|
instruction_file:
|
|
361
361
|
claude: .claude/skills + agents
|
|
362
362
|
antigravity: .agent/skills/
|
|
363
|
-
codex: .codex/
|
|
363
|
+
codex: .codex/skills/
|
|
364
364
|
opencode: .opencode/skills/
|
|
365
|
-
copilot: .github/
|
|
366
|
-
cursor: .cursor/
|
|
367
|
-
windsurf: .windsurf/
|
|
368
|
-
cline: .cline/
|
|
365
|
+
copilot: .github/copilot/skills/
|
|
366
|
+
cursor: .cursor/skills/
|
|
367
|
+
windsurf: .windsurf/skills/
|
|
368
|
+
cline: .cline/skills/
|
|
369
369
|
gemini: .gemini/
|
|
370
|
-
amazonq: .amazonq/
|
|
371
|
-
jetbrains: .
|
|
372
|
-
continue: .continue/
|
|
373
|
-
aider: .aider/
|
|
374
|
-
trae: .trae/
|
|
375
|
-
zed: .
|
|
376
|
-
tabnine: .tabnine/
|
|
370
|
+
amazonq: .amazonq/skills/
|
|
371
|
+
jetbrains: .junie/skills/
|
|
372
|
+
continue: .continue/skills/
|
|
373
|
+
aider: .aider/skills/
|
|
374
|
+
trae: .trae/skills/
|
|
375
|
+
zed: .zed/skills/
|
|
376
|
+
tabnine: .tabnine/skills/
|
|
377
377
|
kimi: .kimi/skills/
|
|
378
378
|
generic: AGENTS.md
|
|
379
379
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/tabnine/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,cAAe,SAAQ,WAAW;IAC7C,IAAI,SAAa;IACjB,WAAW,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/tabnine/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,cAAe,SAAQ,WAAW;IAC7C,IAAI,SAAa;IACjB,WAAW,SAA4D;IACvE,eAAe,EAAG,OAAO,CAAU;IAE7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,QAAQ,IAAI,WAAW,EAAE;IAInB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,eAAe,IAAI,OAAO;IAIpB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxC,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,eAAe,IAAI,MAAM;CAQ1B"}
|
|
@@ -8,7 +8,7 @@ export class TabnineAdapter extends AdapterBase {
|
|
|
8
8
|
constructor() {
|
|
9
9
|
super(...arguments);
|
|
10
10
|
this.name = 'tabnine';
|
|
11
|
-
this.description = 'Tabnine adapter ā skills installed in .tabnine/
|
|
11
|
+
this.description = 'Tabnine adapter ā skills installed in .tabnine/skills/';
|
|
12
12
|
this.automationLevel = 'basic';
|
|
13
13
|
}
|
|
14
14
|
async detect() {
|
|
@@ -19,7 +19,7 @@ export class TabnineAdapter extends AdapterBase {
|
|
|
19
19
|
}
|
|
20
20
|
async install(options) {
|
|
21
21
|
console.log('\nš¦ Installing Tabnine Adapter\n');
|
|
22
|
-
await fs.ensureDir(path.join(options.projectPath, '.tabnine/
|
|
22
|
+
await fs.ensureDir(path.join(options.projectPath, '.tabnine/skills'));
|
|
23
23
|
console.log('\n⨠Tabnine adapter installed!');
|
|
24
24
|
console.log(' Run `specweave refresh-plugins` to install skills.');
|
|
25
25
|
}
|
|
@@ -27,20 +27,20 @@ export class TabnineAdapter extends AdapterBase {
|
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
29
|
async compilePlugin(plugin) {
|
|
30
|
-
const
|
|
30
|
+
const skillsDir = '.tabnine/skills';
|
|
31
31
|
console.log(`\nš¦ Installing plugin skills for Tabnine: ${plugin.manifest.name}`);
|
|
32
|
-
await this.writeSkillFiles(plugin,
|
|
33
|
-
console.log(` ā ${plugin.skills.length} skill(s) written to ${
|
|
32
|
+
await this.writeSkillFiles(plugin, skillsDir);
|
|
33
|
+
console.log(` ā ${plugin.skills.length} skill(s) written to ${skillsDir}/`);
|
|
34
34
|
console.log(`\nā
Plugin ${plugin.manifest.name} installed for Tabnine!`);
|
|
35
35
|
}
|
|
36
36
|
async unloadPlugin(pluginName) {
|
|
37
37
|
console.log(`\nšļø Unloading plugin from Tabnine: ${pluginName}`);
|
|
38
|
-
await this.removeSkillFiles(pluginName, '.tabnine/
|
|
39
|
-
console.log(` ā Removed from .tabnine/
|
|
38
|
+
await this.removeSkillFiles(pluginName, '.tabnine/skills');
|
|
39
|
+
console.log(` ā Removed from .tabnine/skills/`);
|
|
40
40
|
console.log(`\nā
Plugin ${pluginName} unloaded!`);
|
|
41
41
|
}
|
|
42
42
|
async getInstalledPlugins() {
|
|
43
|
-
return await this.listInstalledPluginsInDir('.tabnine/
|
|
43
|
+
return await this.listInstalledPluginsInDir('.tabnine/skills');
|
|
44
44
|
}
|
|
45
45
|
async postInstall(options) {
|
|
46
46
|
console.log(this.getInstructions());
|
|
@@ -49,7 +49,7 @@ export class TabnineAdapter extends AdapterBase {
|
|
|
49
49
|
return `
|
|
50
50
|
Tabnine Adapter
|
|
51
51
|
|
|
52
|
-
Skills installed in .tabnine/
|
|
52
|
+
Skills installed in .tabnine/skills/.
|
|
53
53
|
Run: specweave refresh-plugins
|
|
54
54
|
`;
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/tabnine/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,OAAO,cAAe,SAAQ,WAAW;IAA/C;;QACE,SAAI,GAAG,SAAS,CAAC;QACjB,gBAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/tabnine/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,OAAO,cAAe,SAAQ,WAAW;IAA/C;;QACE,SAAI,GAAG,SAAS,CAAC;QACjB,gBAAW,GAAG,wDAAwD,CAAC;QACvE,oBAAe,GAAG,OAAgB,CAAC;IAoDrC,CAAC;IAlDC,KAAK,CAAC,MAAM;QACV,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,MAAM,SAAS,GAAG,iBAAiB,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,8CAA8C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAClF,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,wBAAwB,SAAS,GAAG,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,IAAI,yBAAyB,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,OAAO,CAAC,GAAG,CAAC,yCAAyC,UAAU,EAAE,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAuB;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,eAAe;QACb,OAAO;;;;;KAKN,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/trae/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,WAAY,SAAQ,WAAW;IAC1C,IAAI,SAAU;IACd,WAAW,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/trae/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,WAAY,SAAQ,WAAW;IAC1C,IAAI,SAAU;IACd,WAAW,SAAsD;IACjE,eAAe,EAAG,MAAM,CAAU;IAE5B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAUhC,QAAQ,IAAI,WAAW,EAAE;IAInB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,eAAe,IAAI,OAAO;IAIpB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxC,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,eAAe,IAAI,MAAM;CAQ1B"}
|
|
@@ -8,7 +8,7 @@ export class TraeAdapter extends AdapterBase {
|
|
|
8
8
|
constructor() {
|
|
9
9
|
super(...arguments);
|
|
10
10
|
this.name = 'trae';
|
|
11
|
-
this.description = 'Trae adapter ā skills installed in .trae/
|
|
11
|
+
this.description = 'Trae adapter ā skills installed in .trae/skills/';
|
|
12
12
|
this.automationLevel = 'semi';
|
|
13
13
|
}
|
|
14
14
|
async detect() {
|
|
@@ -26,7 +26,7 @@ export class TraeAdapter extends AdapterBase {
|
|
|
26
26
|
}
|
|
27
27
|
async install(options) {
|
|
28
28
|
console.log('\nš¦ Installing Trae Adapter\n');
|
|
29
|
-
await fs.ensureDir(path.join(options.projectPath, '.trae/
|
|
29
|
+
await fs.ensureDir(path.join(options.projectPath, '.trae/skills'));
|
|
30
30
|
console.log('\n⨠Trae adapter installed!');
|
|
31
31
|
console.log(' Run `specweave refresh-plugins` to install skills.');
|
|
32
32
|
}
|
|
@@ -34,20 +34,20 @@ export class TraeAdapter extends AdapterBase {
|
|
|
34
34
|
return true;
|
|
35
35
|
}
|
|
36
36
|
async compilePlugin(plugin) {
|
|
37
|
-
const
|
|
37
|
+
const skillsDir = '.trae/skills';
|
|
38
38
|
console.log(`\nš¦ Installing plugin skills for Trae: ${plugin.manifest.name}`);
|
|
39
|
-
await this.writeSkillFiles(plugin,
|
|
40
|
-
console.log(` ā ${plugin.skills.length} skill(s) written to ${
|
|
39
|
+
await this.writeSkillFiles(plugin, skillsDir);
|
|
40
|
+
console.log(` ā ${plugin.skills.length} skill(s) written to ${skillsDir}/`);
|
|
41
41
|
console.log(`\nā
Plugin ${plugin.manifest.name} installed for Trae!`);
|
|
42
42
|
}
|
|
43
43
|
async unloadPlugin(pluginName) {
|
|
44
44
|
console.log(`\nšļø Unloading plugin from Trae: ${pluginName}`);
|
|
45
|
-
await this.removeSkillFiles(pluginName, '.trae/
|
|
46
|
-
console.log(` ā Removed from .trae/
|
|
45
|
+
await this.removeSkillFiles(pluginName, '.trae/skills');
|
|
46
|
+
console.log(` ā Removed from .trae/skills/`);
|
|
47
47
|
console.log(`\nā
Plugin ${pluginName} unloaded!`);
|
|
48
48
|
}
|
|
49
49
|
async getInstalledPlugins() {
|
|
50
|
-
return await this.listInstalledPluginsInDir('.trae/
|
|
50
|
+
return await this.listInstalledPluginsInDir('.trae/skills');
|
|
51
51
|
}
|
|
52
52
|
async postInstall(options) {
|
|
53
53
|
console.log(this.getInstructions());
|
|
@@ -56,7 +56,7 @@ export class TraeAdapter extends AdapterBase {
|
|
|
56
56
|
return `
|
|
57
57
|
Trae Adapter
|
|
58
58
|
|
|
59
|
-
Skills installed in .trae/
|
|
59
|
+
Skills installed in .trae/skills/.
|
|
60
60
|
Run: specweave refresh-plugins
|
|
61
61
|
`;
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/trae/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,OAAO,WAAY,SAAQ,WAAW;IAA5C;;QACE,SAAI,GAAG,MAAM,CAAC;QACd,gBAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/trae/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,OAAO,WAAY,SAAQ,WAAW;IAA5C;;QACE,SAAI,GAAG,MAAM,CAAC;QACd,gBAAW,GAAG,kDAAkD,CAAC;QACjE,oBAAe,GAAG,MAAe,CAAC;IA0DpC,CAAC;IAxDC,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YACnD,QAAQ,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,MAAM,SAAS,GAAG,cAAc,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,2CAA2C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,wBAAwB,SAAS,GAAG,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,OAAO,CAAC,GAAG,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,YAAY,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAuB;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,eAAe;QACb,OAAO;;;;;KAKN,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Windsurf Adapter
|
|
3
3
|
*
|
|
4
4
|
* Semi-automation adapter for Windsurf (by Codeium).
|
|
5
|
-
* Uses
|
|
5
|
+
* Uses skill files in .windsurf/skills/ for context-specific instructions.
|
|
6
6
|
*/
|
|
7
7
|
import { AdapterBase } from '../adapter-base.js';
|
|
8
8
|
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
@@ -34,8 +34,7 @@ export declare class WindsurfAdapter extends AdapterBase {
|
|
|
34
34
|
/**
|
|
35
35
|
* Compile and install a plugin for Windsurf
|
|
36
36
|
*
|
|
37
|
-
* Writes skill SKILL.md files
|
|
38
|
-
* into .windsurf/rules/ for auto-loading by Windsurf.
|
|
37
|
+
* Writes skill SKILL.md files into .windsurf/skills/ for auto-loading by Windsurf.
|
|
39
38
|
*
|
|
40
39
|
* @param plugin Plugin to install
|
|
41
40
|
*/
|
|
@@ -43,7 +42,7 @@ export declare class WindsurfAdapter extends AdapterBase {
|
|
|
43
42
|
/**
|
|
44
43
|
* Unload a plugin from Windsurf
|
|
45
44
|
*
|
|
46
|
-
* Removes
|
|
45
|
+
* Removes plugin skill files from .windsurf/skills/
|
|
47
46
|
*
|
|
48
47
|
* @param pluginName Name of plugin to unload
|
|
49
48
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/windsurf/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,IAAI,SAAc;IAClB,WAAW,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/windsurf/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,IAAI,SAAc;IAClB,WAAW,SAAyE;IACpF,eAAe,EAAG,MAAM,CAAU;IAElC;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAMhC;;OAEG;IACH,QAAQ,IAAI,WAAW,EAAE;IAIzB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrD;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;;;OAMG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlD;;;;;;OAMG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9C;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,MAAM;CAW1B"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Windsurf Adapter
|
|
3
3
|
*
|
|
4
4
|
* Semi-automation adapter for Windsurf (by Codeium).
|
|
5
|
-
* Uses
|
|
5
|
+
* Uses skill files in .windsurf/skills/ for context-specific instructions.
|
|
6
6
|
*/
|
|
7
7
|
import * as path from 'path';
|
|
8
8
|
import * as fs from '../../utils/fs-native.js';
|
|
@@ -11,7 +11,7 @@ export class WindsurfAdapter extends AdapterBase {
|
|
|
11
11
|
constructor() {
|
|
12
12
|
super(...arguments);
|
|
13
13
|
this.name = 'windsurf';
|
|
14
|
-
this.description = 'Windsurf adapter - Semi-automation with
|
|
14
|
+
this.description = 'Windsurf adapter - Semi-automation with skills in .windsurf/skills/';
|
|
15
15
|
this.automationLevel = 'semi';
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
@@ -37,8 +37,8 @@ export class WindsurfAdapter extends AdapterBase {
|
|
|
37
37
|
*/
|
|
38
38
|
async install(options) {
|
|
39
39
|
console.log('\nš¦ Installing Windsurf Adapter\n');
|
|
40
|
-
const
|
|
41
|
-
await fs.ensureDir(
|
|
40
|
+
const skillsDir = path.join(options.projectPath, '.windsurf', 'skills');
|
|
41
|
+
await fs.ensureDir(skillsDir);
|
|
42
42
|
console.log('\n⨠Windsurf adapter installed!');
|
|
43
43
|
console.log(' Run `specweave refresh-plugins` to install skills.');
|
|
44
44
|
}
|
|
@@ -51,36 +51,35 @@ export class WindsurfAdapter extends AdapterBase {
|
|
|
51
51
|
/**
|
|
52
52
|
* Compile and install a plugin for Windsurf
|
|
53
53
|
*
|
|
54
|
-
* Writes skill SKILL.md files
|
|
55
|
-
* into .windsurf/rules/ for auto-loading by Windsurf.
|
|
54
|
+
* Writes skill SKILL.md files into .windsurf/skills/ for auto-loading by Windsurf.
|
|
56
55
|
*
|
|
57
56
|
* @param plugin Plugin to install
|
|
58
57
|
*/
|
|
59
58
|
async compilePlugin(plugin) {
|
|
60
|
-
const
|
|
59
|
+
const skillsDir = '.windsurf/skills';
|
|
61
60
|
console.log(`\nš¦ Installing plugin skills for Windsurf: ${plugin.manifest.name}`);
|
|
62
|
-
await this.writeSkillFiles(plugin,
|
|
63
|
-
console.log(` ā ${plugin.skills.length} skill(s) written to ${
|
|
61
|
+
await this.writeSkillFiles(plugin, skillsDir, '.md');
|
|
62
|
+
console.log(` ā ${plugin.skills.length} skill(s) written to ${skillsDir}/`);
|
|
64
63
|
console.log(`\nā
Plugin ${plugin.manifest.name} installed for Windsurf!`);
|
|
65
64
|
}
|
|
66
65
|
/**
|
|
67
66
|
* Unload a plugin from Windsurf
|
|
68
67
|
*
|
|
69
|
-
* Removes
|
|
68
|
+
* Removes plugin skill files from .windsurf/skills/
|
|
70
69
|
*
|
|
71
70
|
* @param pluginName Name of plugin to unload
|
|
72
71
|
*/
|
|
73
72
|
async unloadPlugin(pluginName) {
|
|
74
73
|
console.log(`\nšļø Unloading plugin from Windsurf: ${pluginName}`);
|
|
75
|
-
await this.removeSkillFiles(pluginName, '.windsurf/
|
|
76
|
-
console.log(` ā Removed from .windsurf/
|
|
74
|
+
await this.removeSkillFiles(pluginName, '.windsurf/skills', '.md');
|
|
75
|
+
console.log(` ā Removed from .windsurf/skills/`);
|
|
77
76
|
console.log(`\nā
Plugin ${pluginName} unloaded!`);
|
|
78
77
|
}
|
|
79
78
|
/**
|
|
80
79
|
* Get list of installed plugins for Windsurf
|
|
81
80
|
*/
|
|
82
81
|
async getInstalledPlugins() {
|
|
83
|
-
return await this.listInstalledPluginsInDir('.windsurf/
|
|
82
|
+
return await this.listInstalledPluginsInDir('.windsurf/skills');
|
|
84
83
|
}
|
|
85
84
|
/**
|
|
86
85
|
* Post-installation instructions
|
|
@@ -95,7 +94,7 @@ export class WindsurfAdapter extends AdapterBase {
|
|
|
95
94
|
return `
|
|
96
95
|
Windsurf Adapter
|
|
97
96
|
|
|
98
|
-
Skills are installed in .windsurf/
|
|
97
|
+
Skills are installed in .windsurf/skills/ ā Windsurf loads *.md skill files automatically.
|
|
99
98
|
|
|
100
99
|
Quick Start:
|
|
101
100
|
Run: specweave refresh-plugins
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/windsurf/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAAhD;;QACE,SAAI,GAAG,UAAU,CAAC;QAClB,gBAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/adapters/windsurf/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAAhD;;QACE,SAAI,GAAG,UAAU,CAAC;QAClB,gBAAW,GAAG,qEAAqE,CAAC;QACpF,oBAAe,GAAG,MAAe,CAAC;IAiGpC,CAAC;IA/FC;;;;;;OAMG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAClD,OAAO,MAAM,IAAI,MAAM,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,MAAM,SAAS,GAAG,kBAAkB,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,+CAA+C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACnF,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,wBAAwB,SAAS,GAAG,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,IAAI,0BAA0B,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,OAAO,CAAC,GAAG,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,YAAY,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAuB;QACvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO;;;;;;;;KAQN,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/zed/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,UAAW,SAAQ,WAAW;IACzC,IAAI,SAAS;IACb,WAAW,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/adapters/zed/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,qBAAa,UAAW,SAAQ,WAAW;IACzC,IAAI,SAAS;IACb,WAAW,SAAoD;IAC/D,eAAe,EAAG,MAAM,CAAU;IAE5B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,QAAQ,IAAI,WAAW,EAAE;IAInB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,eAAe,IAAI,OAAO;IAIpB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxC,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,eAAe,IAAI,MAAM;CAQ1B"}
|