agent-skills-standard 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/commands/init.js +11 -7
- package/dist/constants/index.d.ts +24 -2
- package/dist/constants/index.js +151 -93
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
**The engine behind High-Density AI coding. Command your AI assistants with professional standards.**
|
|
7
7
|
|
|
8
|
-
The `agent-skills-standard` CLI is the official command-line tool to manage, sync, and version-control engineering standards across all major AI agents (**Cursor, Claude Code, GitHub Copilot,
|
|
8
|
+
The `agent-skills-standard` CLI is the official command-line tool to manage, sync, and version-control engineering standards across all major AI agents (**Cursor, Claude Code, GitHub Copilot, Gemini, Roo Code, OpenCode, and more**).
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -86,7 +86,10 @@ The CLI connects to the [Official Skills Registry](https://github.com/HoangNguye
|
|
|
86
86
|
|
|
87
87
|
- **Flutter**: Clean Architecture, BLoC, AutoRoute, Performance, Security.
|
|
88
88
|
- **Dart**: Idiomatic Patterns, Advanced Tooling.
|
|
89
|
-
- **
|
|
89
|
+
- **TypeScript/JavaScript**: Best practices, Security, Tooling.
|
|
90
|
+
- **React**: Hooks, Patterns, Performance.
|
|
91
|
+
- **NestJS**: Architecture, Microservices, Security.
|
|
92
|
+
- **Next.js**: App Router, RSC, FSD Architecture.
|
|
90
93
|
- **Golang**: (Coming Soon)
|
|
91
94
|
|
|
92
95
|
---
|
package/dist/commands/init.js
CHANGED
|
@@ -145,18 +145,22 @@ class InitCommand {
|
|
|
145
145
|
default: 'https://github.com/HoangNguyen0403/agent-skills-standard',
|
|
146
146
|
},
|
|
147
147
|
]);
|
|
148
|
-
const
|
|
149
|
-
const selectedFramework = constants_1.SUPPORTED_FRAMEWORKS.find((f) => f.id ===
|
|
150
|
-
const isSupported = supportedCategories.includes(
|
|
148
|
+
const framework = answers.framework;
|
|
149
|
+
const selectedFramework = constants_1.SUPPORTED_FRAMEWORKS.find((f) => f.id === framework);
|
|
150
|
+
const isSupported = supportedCategories.includes(framework);
|
|
151
151
|
if (!isSupported) {
|
|
152
|
-
console.log(picocolors_1.default.yellow(`\nNotice: Skills for ${
|
|
152
|
+
console.log(picocolors_1.default.yellow(`\nNotice: Skills for ${framework} are not yet strictly defined and will be added soon.`));
|
|
153
153
|
console.log(picocolors_1.default.gray('The CLI will still generate rule files with global standards.\n'));
|
|
154
154
|
}
|
|
155
155
|
const neededSkills = new Set();
|
|
156
|
-
neededSkills.add(
|
|
156
|
+
neededSkills.add(framework);
|
|
157
157
|
if (selectedFramework) {
|
|
158
158
|
selectedFramework.languages.forEach((l) => neededSkills.add(l));
|
|
159
159
|
}
|
|
160
|
+
// Special case: Next.js and React Native imply React
|
|
161
|
+
if (framework === constants_1.Framework.NextJS || framework === constants_1.Framework.ReactNative) {
|
|
162
|
+
neededSkills.add(constants_1.Framework.React);
|
|
163
|
+
}
|
|
160
164
|
const config = {
|
|
161
165
|
registry: answers.registry,
|
|
162
166
|
agents: answers.agents,
|
|
@@ -184,9 +188,9 @@ class InitCommand {
|
|
|
184
188
|
}
|
|
185
189
|
await fs_extra_1.default.writeFile(configPath, js_yaml_1.default.dump(config));
|
|
186
190
|
console.log(picocolors_1.default.green('\n✅ Initialized .skillsrc with your preferences!'));
|
|
187
|
-
console.log(picocolors_1.default.gray(` Selected framework: ${
|
|
191
|
+
console.log(picocolors_1.default.gray(` Selected framework: ${framework}`));
|
|
188
192
|
console.log(picocolors_1.default.gray(` Auto-enabled languages: ${Array.from(neededSkills)
|
|
189
|
-
.filter((s) => s !==
|
|
193
|
+
.filter((s) => s !== framework)
|
|
190
194
|
.join(', ') || 'none'}`));
|
|
191
195
|
console.log(picocolors_1.default.cyan('\nNext step: Run `agent-skills-standard sync` to generate rule files.'));
|
|
192
196
|
}
|
|
@@ -1,15 +1,37 @@
|
|
|
1
|
+
export declare enum Agent {
|
|
2
|
+
Cursor = "cursor",
|
|
3
|
+
Trae = "trae",
|
|
4
|
+
Claude = "claude",
|
|
5
|
+
Copilot = "copilot",
|
|
6
|
+
Antigravity = "antigravity",
|
|
7
|
+
OpenAI = "openai",
|
|
8
|
+
OpenCode = "opencode",
|
|
9
|
+
Gemini = "gemini",
|
|
10
|
+
Roo = "roo"
|
|
11
|
+
}
|
|
12
|
+
export declare enum Framework {
|
|
13
|
+
Flutter = "flutter",
|
|
14
|
+
NestJS = "nestjs",
|
|
15
|
+
Golang = "golang",
|
|
16
|
+
NextJS = "nextjs",
|
|
17
|
+
React = "react",
|
|
18
|
+
ReactNative = "react-native",
|
|
19
|
+
Angular = "angular"
|
|
20
|
+
}
|
|
1
21
|
export interface AgentDefinition {
|
|
2
|
-
id:
|
|
22
|
+
id: Agent;
|
|
3
23
|
name: string;
|
|
4
24
|
path: string;
|
|
5
25
|
detectionFiles: string[];
|
|
6
26
|
}
|
|
7
27
|
export interface FrameworkDefinition {
|
|
8
|
-
id:
|
|
28
|
+
id: Framework;
|
|
9
29
|
name: string;
|
|
10
30
|
languages: string[];
|
|
11
31
|
detectionFiles: string[];
|
|
12
32
|
detectionDependencies?: string[];
|
|
13
33
|
}
|
|
34
|
+
export declare const getAgentDefinition: (id: Agent) => AgentDefinition;
|
|
35
|
+
export declare const getFrameworkDefinition: (id: Framework) => FrameworkDefinition;
|
|
14
36
|
export declare const SUPPORTED_AGENTS: AgentDefinition[];
|
|
15
37
|
export declare const SUPPORTED_FRAMEWORKS: FrameworkDefinition[];
|
package/dist/constants/index.js
CHANGED
|
@@ -1,95 +1,153 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SUPPORTED_FRAMEWORKS = exports.SUPPORTED_AGENTS = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
]
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
3
|
+
exports.SUPPORTED_FRAMEWORKS = exports.SUPPORTED_AGENTS = exports.getFrameworkDefinition = exports.getAgentDefinition = exports.Framework = exports.Agent = void 0;
|
|
4
|
+
var Agent;
|
|
5
|
+
(function (Agent) {
|
|
6
|
+
Agent["Cursor"] = "cursor";
|
|
7
|
+
Agent["Trae"] = "trae";
|
|
8
|
+
Agent["Claude"] = "claude";
|
|
9
|
+
Agent["Copilot"] = "copilot";
|
|
10
|
+
Agent["Antigravity"] = "antigravity";
|
|
11
|
+
Agent["OpenAI"] = "openai";
|
|
12
|
+
Agent["OpenCode"] = "opencode";
|
|
13
|
+
Agent["Gemini"] = "gemini";
|
|
14
|
+
Agent["Roo"] = "roo";
|
|
15
|
+
})(Agent || (exports.Agent = Agent = {}));
|
|
16
|
+
var Framework;
|
|
17
|
+
(function (Framework) {
|
|
18
|
+
Framework["Flutter"] = "flutter";
|
|
19
|
+
Framework["NestJS"] = "nestjs";
|
|
20
|
+
Framework["Golang"] = "golang";
|
|
21
|
+
Framework["NextJS"] = "nextjs";
|
|
22
|
+
Framework["React"] = "react";
|
|
23
|
+
Framework["ReactNative"] = "react-native";
|
|
24
|
+
Framework["Angular"] = "angular";
|
|
25
|
+
})(Framework || (exports.Framework = Framework = {}));
|
|
26
|
+
const getAgentDefinition = (id) => {
|
|
27
|
+
switch (id) {
|
|
28
|
+
case Agent.Cursor:
|
|
29
|
+
return {
|
|
30
|
+
id,
|
|
31
|
+
name: 'Cursor',
|
|
32
|
+
path: '.cursor/skills',
|
|
33
|
+
detectionFiles: ['.cursor', '.cursorrules'],
|
|
34
|
+
};
|
|
35
|
+
case Agent.Trae:
|
|
36
|
+
return {
|
|
37
|
+
id,
|
|
38
|
+
name: 'Trae',
|
|
39
|
+
path: '.trae/skills',
|
|
40
|
+
detectionFiles: ['.trae'],
|
|
41
|
+
};
|
|
42
|
+
case Agent.Claude:
|
|
43
|
+
return {
|
|
44
|
+
id,
|
|
45
|
+
name: 'Claude Code',
|
|
46
|
+
path: '.claude/skills',
|
|
47
|
+
detectionFiles: ['.claude', 'CLAUDE.md'],
|
|
48
|
+
};
|
|
49
|
+
case Agent.Copilot:
|
|
50
|
+
return {
|
|
51
|
+
id,
|
|
52
|
+
name: 'GitHub Copilot',
|
|
53
|
+
path: '.github/skills',
|
|
54
|
+
detectionFiles: ['.github'],
|
|
55
|
+
};
|
|
56
|
+
case Agent.Antigravity:
|
|
57
|
+
return {
|
|
58
|
+
id,
|
|
59
|
+
name: 'Antigravity',
|
|
60
|
+
path: '.agent/skills',
|
|
61
|
+
detectionFiles: ['.agent'],
|
|
62
|
+
};
|
|
63
|
+
case Agent.OpenAI:
|
|
64
|
+
return {
|
|
65
|
+
id,
|
|
66
|
+
name: 'OpenAI',
|
|
67
|
+
path: '.codex/skills',
|
|
68
|
+
detectionFiles: ['.codex'],
|
|
69
|
+
};
|
|
70
|
+
case Agent.OpenCode:
|
|
71
|
+
return {
|
|
72
|
+
id,
|
|
73
|
+
name: 'OpenCode',
|
|
74
|
+
path: '.opencode/skills',
|
|
75
|
+
detectionFiles: ['.opencode'],
|
|
76
|
+
};
|
|
77
|
+
case Agent.Gemini:
|
|
78
|
+
return {
|
|
79
|
+
id,
|
|
80
|
+
name: 'Gemini',
|
|
81
|
+
path: '.gemini/skills',
|
|
82
|
+
detectionFiles: ['.gemini'],
|
|
83
|
+
};
|
|
84
|
+
case Agent.Roo:
|
|
85
|
+
return {
|
|
86
|
+
id,
|
|
87
|
+
name: 'Roo Code',
|
|
88
|
+
path: '.roo/skills',
|
|
89
|
+
detectionFiles: ['.roo'],
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
exports.getAgentDefinition = getAgentDefinition;
|
|
94
|
+
const getFrameworkDefinition = (id) => {
|
|
95
|
+
switch (id) {
|
|
96
|
+
case Framework.Flutter:
|
|
97
|
+
return {
|
|
98
|
+
id,
|
|
99
|
+
name: 'Flutter',
|
|
100
|
+
languages: ['dart'],
|
|
101
|
+
detectionFiles: ['pubspec.yaml'],
|
|
102
|
+
};
|
|
103
|
+
case Framework.NestJS:
|
|
104
|
+
return {
|
|
105
|
+
id,
|
|
106
|
+
name: 'NestJS',
|
|
107
|
+
languages: ['typescript', 'javascript'],
|
|
108
|
+
detectionFiles: ['nest-cli.json'],
|
|
109
|
+
detectionDependencies: ['@nestjs/core'],
|
|
110
|
+
};
|
|
111
|
+
case Framework.Golang:
|
|
112
|
+
return {
|
|
113
|
+
id,
|
|
114
|
+
name: 'Go (Golang)',
|
|
115
|
+
languages: ['go'],
|
|
116
|
+
detectionFiles: ['go.mod'],
|
|
117
|
+
};
|
|
118
|
+
case Framework.NextJS:
|
|
119
|
+
return {
|
|
120
|
+
id,
|
|
121
|
+
name: 'Next.js',
|
|
122
|
+
languages: ['typescript', 'javascript'],
|
|
123
|
+
detectionFiles: ['next.config.js', 'next.config.mjs'],
|
|
124
|
+
detectionDependencies: ['next'],
|
|
125
|
+
};
|
|
126
|
+
case Framework.React:
|
|
127
|
+
return {
|
|
128
|
+
id,
|
|
129
|
+
name: 'React',
|
|
130
|
+
languages: ['typescript', 'javascript'],
|
|
131
|
+
detectionFiles: [],
|
|
132
|
+
detectionDependencies: ['react', 'react-dom'],
|
|
133
|
+
};
|
|
134
|
+
case Framework.ReactNative:
|
|
135
|
+
return {
|
|
136
|
+
id,
|
|
137
|
+
name: 'React Native',
|
|
138
|
+
languages: ['typescript', 'javascript'],
|
|
139
|
+
detectionFiles: ['metro.config.js'],
|
|
140
|
+
detectionDependencies: ['react-native'],
|
|
141
|
+
};
|
|
142
|
+
case Framework.Angular:
|
|
143
|
+
return {
|
|
144
|
+
id,
|
|
145
|
+
name: 'Angular',
|
|
146
|
+
languages: ['typescript'],
|
|
147
|
+
detectionFiles: ['angular.json'],
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
exports.getFrameworkDefinition = getFrameworkDefinition;
|
|
152
|
+
exports.SUPPORTED_AGENTS = Object.values(Agent).map(exports.getAgentDefinition);
|
|
153
|
+
exports.SUPPORTED_FRAMEWORKS = Object.values(Framework).map(exports.getFrameworkDefinition);
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ const program = new commander_1.Command();
|
|
|
8
8
|
program
|
|
9
9
|
.name('agent-skills-standard')
|
|
10
10
|
.description('A CLI to manage and sync AI agent skills for Cursor, Claude, Copilot, and more.')
|
|
11
|
-
.version('1.1.
|
|
11
|
+
.version('1.1.1');
|
|
12
12
|
program
|
|
13
13
|
.command('init')
|
|
14
14
|
.description('Initialize a .skillsrc configuration file interactively')
|