mirror of
https://github.com/Fission-AI/OpenSpec.git
synced 2026-10-02 05:24:34 +08:00
feat(veai): add skills-only support (#848)
* feat: Add support for Veai coding agent * chore(changeset): track Veai support * docs(changeset): clarify Veai user impact --------- Co-authored-by: TabishB <tabishbidiwale@gmail.com> Co-authored-by: Clay Good <hi@claygood.com>
This commit is contained in:
co-authored by
TabishB
Clay Good
parent
3c3e6e3d42
commit
5a360c2088
@@ -0,0 +1,7 @@
|
||||
---
|
||||
"@fission-ai/openspec": minor
|
||||
---
|
||||
|
||||
### New Features
|
||||
|
||||
- **Veai support**: select `veai` during init to install OpenSpec workflows as project skills under `.veai/skills/`.
|
||||
@@ -48,6 +48,7 @@ The id goes to `openspec init --tools <id>` to skip the picker ([CLI](cli.md)).
|
||||
| Qoder | `qoder` | `.qoder/skills/` | `/openspec-apply-change` | `.qoder/commands/opsx/` | `/opsx:apply` |
|
||||
| Qwen Code | `qwen` | `.qwen/skills/` | `/openspec-apply-change` | `.qwen/commands/` | `/opsx-apply` |
|
||||
| Trae | `trae` | `.trae/skills/` | `/openspec-apply-change` | `.trae/commands/` | `/opsx-apply` |
|
||||
| [Veai](https://veai.ru/docs/veai/download) | `veai` | `.veai/skills/` | `/openspec-apply-change` | none | none |
|
||||
| ZCode | `zcode` | `.zcode/skills/` | `/openspec-apply-change` | `.zcode/commands/opsx/` | `/opsx:apply` |
|
||||
| Zoo Code | `roocode` | `.roo/skills/` | `/openspec-apply-change` | `.roo/commands/` | `/opsx-apply` |
|
||||
| Other / Universal | `agents` | `.agents/skills/` | `/openspec-apply-change` | none | none |
|
||||
|
||||
@@ -82,6 +82,7 @@ export const AI_TOOLS: AIToolOption[] = [
|
||||
{ name: 'Rovo Dev CLI', value: 'rovodev', available: true, successLabel: 'Rovo Dev CLI', skillsDir: '.rovodev', detectionPaths: ['.rovodev/skills', '.rovodev'] },
|
||||
{ name: 'Zoo Code', value: 'roocode', available: true, successLabel: 'Zoo Code', skillsDir: '.roo', requiresIdeRestart: true },
|
||||
{ name: 'Trae', value: 'trae', available: true, successLabel: 'Trae', skillsDir: '.trae', requiresIdeRestart: true },
|
||||
{ name: 'Veai', value: 'veai', available: true, successLabel: 'Veai', skillsDir: '.veai' },
|
||||
{ name: 'Zed Agent', value: 'zed', available: true, successLabel: 'Zed Agent', skillsDir: '.agents', detectionPaths: ['.zed', '.agents/skills'] },
|
||||
{ name: 'ZCode', value: 'zcode', available: true, successLabel: 'ZCode', skillsDir: '.zcode' },
|
||||
// Vendor-neutral target for assistants that read the shared `.agents` root.
|
||||
|
||||
@@ -2217,6 +2217,20 @@ describe('InitCommand - profile and detection features', () => {
|
||||
expect(startHint).not.toContain('/opsx:propose');
|
||||
});
|
||||
|
||||
it('should install Veai as a skills-only tool', async () => {
|
||||
const initCommand = new InitCommand({ tools: 'veai', force: true });
|
||||
await initCommand.execute(testDir);
|
||||
|
||||
const skillFile = path.join(testDir, '.veai', 'skills', 'openspec-apply-change', 'SKILL.md');
|
||||
expect(await fileExists(skillFile)).toBe(true);
|
||||
expect(await directoryExists(path.join(testDir, '.veai', 'commands'))).toBe(false);
|
||||
|
||||
const skillContent = await fs.readFile(skillFile, 'utf-8');
|
||||
expect(skillContent).toContain('/openspec-');
|
||||
expect(skillContent).not.toContain('/opsx:');
|
||||
expect(skillContent).not.toContain('/opsx-');
|
||||
});
|
||||
|
||||
it('should name the workflows the core profile leaves out (#1076)', async () => {
|
||||
const initCommand = new InitCommand({ tools: 'claude', force: true });
|
||||
await initCommand.execute(testDir);
|
||||
|
||||
Reference in New Issue
Block a user