@grvmithas/create-aies-kit 1.0.0 → 1.3.0
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 +36 -25
- package/bin/create-aies-kit.js +119 -41
- package/lib/kit-core/embedded-corpus.js +138 -0
- package/lib/kit-core/generate.js +794 -0
- package/lib/kit-core/install-api.js +173 -0
- package/lib/kit-core/mcp-catalog.js +170 -0
- package/lib/{options.js → kit-core/options.js} +25 -10
- package/package.json +10 -4
- package/lib/scaffold.js +0 -352
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-safe kit helpers — no node:fs, safe for Next.js client components.
|
|
3
|
+
*
|
|
4
|
+
* Layout contract:
|
|
5
|
+
* - IDE root (.cursor / .github / .claude / …) = prompts + skills + agents (+ IDE rules/MCP config)
|
|
6
|
+
* - Repo root shared dirs = cookbook, guides, mcps, templates, policy (never nest these under .github)
|
|
7
|
+
*/
|
|
8
|
+
import { SITE_URL } from './options.js';
|
|
9
|
+
|
|
10
|
+
/** Shared repo-root paths — identical for every IDE. */
|
|
11
|
+
const SHARED = {
|
|
12
|
+
cookbookBase: 'cookbook',
|
|
13
|
+
guidesDir: 'guides',
|
|
14
|
+
mcpsDir: 'mcps',
|
|
15
|
+
templatesDir: 'templates',
|
|
16
|
+
policyFile: 'MODEL_POLICY.md',
|
|
17
|
+
hooksFile: 'aies-hooks.json',
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @param {string} ide
|
|
22
|
+
* @param {{ cookbookId?: string | null }} [opts]
|
|
23
|
+
*/
|
|
24
|
+
export function layoutFor(ide, opts = {}) {
|
|
25
|
+
const cookbookId = opts.cookbookId ?? null;
|
|
26
|
+
const cookbookDir = cookbookId ? `${SHARED.cookbookBase}/${cookbookId}` : SHARED.cookbookBase;
|
|
27
|
+
|
|
28
|
+
switch (ide) {
|
|
29
|
+
case 'cursor':
|
|
30
|
+
return {
|
|
31
|
+
ide,
|
|
32
|
+
...SHARED,
|
|
33
|
+
cookbookDir,
|
|
34
|
+
root: '.cursor',
|
|
35
|
+
rulesFile: '.cursor/rules/aies.mdc',
|
|
36
|
+
skillsDir: '.cursor/skills',
|
|
37
|
+
skillStyle: 'cursor-skill',
|
|
38
|
+
promptsDir: '.cursor/prompts',
|
|
39
|
+
agentsDir: '.cursor/agents',
|
|
40
|
+
mcpFile: '.cursor/mcp.json',
|
|
41
|
+
hooksFile: '.cursor/aies-hooks.json',
|
|
42
|
+
};
|
|
43
|
+
case 'copilot':
|
|
44
|
+
return {
|
|
45
|
+
ide,
|
|
46
|
+
...SHARED,
|
|
47
|
+
cookbookDir,
|
|
48
|
+
root: '.github',
|
|
49
|
+
rulesFile: '.github/copilot-instructions.md',
|
|
50
|
+
skillsDir: '.github/skills',
|
|
51
|
+
skillStyle: 'flat',
|
|
52
|
+
promptsDir: '.github/prompts',
|
|
53
|
+
agentsDir: '.github/agents',
|
|
54
|
+
// Copilot discovery only under .github — MCP config at repo root
|
|
55
|
+
mcpFile: '.mcp.json',
|
|
56
|
+
};
|
|
57
|
+
case 'claude-code':
|
|
58
|
+
return {
|
|
59
|
+
ide,
|
|
60
|
+
...SHARED,
|
|
61
|
+
cookbookDir,
|
|
62
|
+
root: '.claude',
|
|
63
|
+
rulesFile: 'CLAUDE.md',
|
|
64
|
+
skillsDir: '.claude/skills',
|
|
65
|
+
skillStyle: 'cursor-skill',
|
|
66
|
+
promptsDir: '.claude/prompts',
|
|
67
|
+
agentsDir: '.claude/agents',
|
|
68
|
+
mcpFile: '.mcp.json',
|
|
69
|
+
};
|
|
70
|
+
case 'vscode':
|
|
71
|
+
return {
|
|
72
|
+
ide,
|
|
73
|
+
...SHARED,
|
|
74
|
+
cookbookDir,
|
|
75
|
+
root: '.vscode',
|
|
76
|
+
rulesFile: '.vscode/aies-instructions.md',
|
|
77
|
+
skillsDir: '.vscode/skills',
|
|
78
|
+
skillStyle: 'flat',
|
|
79
|
+
promptsDir: '.vscode/prompts',
|
|
80
|
+
agentsDir: '.vscode/agents',
|
|
81
|
+
mcpFile: '.vscode/mcp.json',
|
|
82
|
+
};
|
|
83
|
+
case 'windsurf':
|
|
84
|
+
return {
|
|
85
|
+
ide,
|
|
86
|
+
...SHARED,
|
|
87
|
+
cookbookDir,
|
|
88
|
+
root: '.windsurf',
|
|
89
|
+
rulesFile: '.windsurfrules',
|
|
90
|
+
skillsDir: '.windsurf/skills',
|
|
91
|
+
skillStyle: 'flat',
|
|
92
|
+
promptsDir: '.windsurf/prompts',
|
|
93
|
+
agentsDir: '.windsurf/agents',
|
|
94
|
+
mcpFile: '.windsurf/mcp.json',
|
|
95
|
+
};
|
|
96
|
+
case 'continue':
|
|
97
|
+
return {
|
|
98
|
+
ide,
|
|
99
|
+
...SHARED,
|
|
100
|
+
cookbookDir,
|
|
101
|
+
root: '.continue',
|
|
102
|
+
rulesFile: '.continue/aies-context.md',
|
|
103
|
+
skillsDir: '.continue/skills',
|
|
104
|
+
skillStyle: 'flat',
|
|
105
|
+
promptsDir: '.continue/prompts',
|
|
106
|
+
agentsDir: '.continue/agents',
|
|
107
|
+
mcpFile: '.continue/mcp.json',
|
|
108
|
+
};
|
|
109
|
+
default:
|
|
110
|
+
return layoutFor('vscode', opts);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export function describeInstallLayout(ide, opts = {}) {
|
|
115
|
+
const L = layoutFor(ide, opts);
|
|
116
|
+
return {
|
|
117
|
+
rootFiles: [
|
|
118
|
+
'AIES.md',
|
|
119
|
+
'implementation_plan.md',
|
|
120
|
+
'CLAUDE.md',
|
|
121
|
+
'AGENTS.md',
|
|
122
|
+
'copilot-instructions.md',
|
|
123
|
+
'MODEL_POLICY.md',
|
|
124
|
+
'aies-hooks.json',
|
|
125
|
+
],
|
|
126
|
+
ideRoot: L.root,
|
|
127
|
+
ideOnly: [L.promptsDir, L.skillsDir, L.agentsDir],
|
|
128
|
+
sharedRoot: [L.cookbookDir, L.guidesDir, L.mcpsDir, L.templatesDir],
|
|
129
|
+
rulesFile: L.rulesFile,
|
|
130
|
+
skillsDir: L.skillsDir,
|
|
131
|
+
promptsDir: L.promptsDir,
|
|
132
|
+
cookbookDir: L.cookbookDir,
|
|
133
|
+
guidesDir: L.guidesDir,
|
|
134
|
+
agentsDir: L.agentsDir,
|
|
135
|
+
mcpsDir: L.mcpsDir,
|
|
136
|
+
templatesDir: L.templatesDir,
|
|
137
|
+
mcpFile: L.mcpFile,
|
|
138
|
+
policyFile: L.policyFile,
|
|
139
|
+
hooksFile: L.hooksFile,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export function buildInstallQuery(profile) {
|
|
144
|
+
return new URLSearchParams({
|
|
145
|
+
stack: profile.stack,
|
|
146
|
+
ide: profile.ide,
|
|
147
|
+
role: profile.role,
|
|
148
|
+
maturity: profile.maturity,
|
|
149
|
+
goal: profile.goal,
|
|
150
|
+
model: profile.model ?? 'undecided',
|
|
151
|
+
dataClass: profile.dataClass ?? 'internal',
|
|
152
|
+
}).toString();
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export function getInstallCommands(profile) {
|
|
156
|
+
const q = buildInstallQuery(profile);
|
|
157
|
+
const flags = [
|
|
158
|
+
`--stack ${profile.stack}`,
|
|
159
|
+
`--ide ${profile.ide}`,
|
|
160
|
+
`--role ${profile.role}`,
|
|
161
|
+
`--maturity ${profile.maturity}`,
|
|
162
|
+
`--goal ${profile.goal}`,
|
|
163
|
+
`--model ${profile.model ?? 'undecided'}`,
|
|
164
|
+
`--data-class ${profile.dataClass ?? 'internal'}`,
|
|
165
|
+
'--yes',
|
|
166
|
+
].join(' ');
|
|
167
|
+
return {
|
|
168
|
+
npx: `npx @grvmithas/create-aies-kit ${flags}`,
|
|
169
|
+
enhance: 'npx @grvmithas/create-aies-kit enhance',
|
|
170
|
+
powershell: `irm "${SITE_URL}/api/kit?${q}&shell=ps1" | iex`,
|
|
171
|
+
bash: `curl -fsSL "${SITE_URL}/api/kit?${q}&shell=bash" | bash`,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP recommendations for kit install + enhance.
|
|
3
|
+
* Specs live under content/mcps/; configs here are enable-ready stubs (secrets via env).
|
|
4
|
+
*/
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
|
|
7
|
+
export const MCP_SPECS = [
|
|
8
|
+
{ id: 'github', category: 'version-control', file: 'version-control/github.mcp.md', label: 'GitHub' },
|
|
9
|
+
{ id: 'gitlab', category: 'version-control', file: 'version-control/gitlab.mcp.md', label: 'GitLab' },
|
|
10
|
+
{ id: 'azure-devops', category: 'version-control', file: 'version-control/azure-devops.mcp.md', label: 'Azure DevOps' },
|
|
11
|
+
{ id: 'bitbucket-cloud', category: 'version-control', file: 'version-control/bitbucket-cloud.mcp.md', label: 'Bitbucket Cloud' },
|
|
12
|
+
{ id: 'filesystem', category: 'infrastructure-data', file: 'infrastructure-data/filesystem.mcp.md', label: 'Filesystem' },
|
|
13
|
+
{ id: 'docker', category: 'infrastructure-data', file: 'infrastructure-data/docker.mcp.md', label: 'Docker' },
|
|
14
|
+
{ id: 'kubernetes', category: 'infrastructure-data', file: 'infrastructure-data/kubernetes.mcp.md', label: 'Kubernetes' },
|
|
15
|
+
{ id: 'postgresql', category: 'infrastructure-data', file: 'infrastructure-data/postgresql.mcp.md', label: 'PostgreSQL' },
|
|
16
|
+
{ id: 'redis', category: 'infrastructure-data', file: 'infrastructure-data/redis.mcp.md', label: 'Redis' },
|
|
17
|
+
{ id: 'supabase', category: 'infrastructure-data', file: 'infrastructure-data/supabase.mcp.md', label: 'Supabase' },
|
|
18
|
+
{ id: 'playwright', category: 'browser-testing', file: 'browser-testing/playwright.mcp.md', label: 'Playwright' },
|
|
19
|
+
{ id: 'chrome-devtools', category: 'browser-testing', file: 'browser-testing/chrome-devtools.mcp.md', label: 'Chrome DevTools' },
|
|
20
|
+
{ id: 'sentry', category: 'observability', file: 'observability/sentry.mcp.md', label: 'Sentry' },
|
|
21
|
+
{ id: 'datadog', category: 'observability', file: 'observability/datadog.mcp.md', label: 'Datadog' },
|
|
22
|
+
{ id: 'grafana', category: 'observability', file: 'observability/grafana.mcp.md', label: 'Grafana' },
|
|
23
|
+
{ id: 'opentelemetry', category: 'observability', file: 'observability/opentelemetry.mcp.md', label: 'OpenTelemetry' },
|
|
24
|
+
{ id: 'jira', category: 'project-management', file: 'project-management/jira.mcp.md', label: 'Jira' },
|
|
25
|
+
{ id: 'linear', category: 'project-management', file: 'project-management/linear.mcp.md', label: 'Linear' },
|
|
26
|
+
{ id: 'notion', category: 'project-management', file: 'project-management/notion.mcp.md', label: 'Notion' },
|
|
27
|
+
{ id: 'asana', category: 'project-management', file: 'project-management/asana.mcp.md', label: 'Asana' },
|
|
28
|
+
{ id: 'monday', category: 'project-management', file: 'project-management/monday.mcp.md', label: 'Monday' },
|
|
29
|
+
{ id: 'slack', category: 'communication', file: 'communication/slack.mcp.md', label: 'Slack' },
|
|
30
|
+
{ id: 'microsoft-teams', category: 'communication', file: 'communication/microsoft-teams.mcp.md', label: 'Microsoft Teams' },
|
|
31
|
+
{ id: 'discord', category: 'communication', file: 'communication/discord.mcp.md', label: 'Discord' },
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
/** Runnable stubs — copy into mcpServers only after human approval + secrets. */
|
|
35
|
+
export const MCP_SERVER_STUBS = {
|
|
36
|
+
github: {
|
|
37
|
+
command: 'npx',
|
|
38
|
+
args: ['-y', '@modelcontextprotocol/server-github'],
|
|
39
|
+
env: { GITHUB_PERSONAL_ACCESS_TOKEN: '${GITHUB_TOKEN}' },
|
|
40
|
+
},
|
|
41
|
+
filesystem: {
|
|
42
|
+
command: 'npx',
|
|
43
|
+
args: ['-y', '@modelcontextprotocol/server-filesystem', '${WORKSPACE_ROOT}'],
|
|
44
|
+
},
|
|
45
|
+
docker: {
|
|
46
|
+
command: 'npx',
|
|
47
|
+
args: ['-y', '@modelcontextprotocol/server-docker'],
|
|
48
|
+
},
|
|
49
|
+
postgresql: {
|
|
50
|
+
command: 'npx',
|
|
51
|
+
args: ['-y', '@modelcontextprotocol/server-postgres'],
|
|
52
|
+
env: { POSTGRES_CONNECTION_STRING: '${DATABASE_URL}' },
|
|
53
|
+
},
|
|
54
|
+
redis: {
|
|
55
|
+
command: 'npx',
|
|
56
|
+
args: ['-y', '@modelcontextprotocol/server-redis'],
|
|
57
|
+
env: { REDIS_URL: '${REDIS_URL}' },
|
|
58
|
+
},
|
|
59
|
+
playwright: {
|
|
60
|
+
command: 'npx',
|
|
61
|
+
args: ['-y', '@playwright/mcp@latest'],
|
|
62
|
+
},
|
|
63
|
+
sentry: {
|
|
64
|
+
command: 'npx',
|
|
65
|
+
args: ['-y', '@sentry/mcp-server'],
|
|
66
|
+
env: { SENTRY_AUTH_TOKEN: '${SENTRY_AUTH_TOKEN}' },
|
|
67
|
+
},
|
|
68
|
+
linear: {
|
|
69
|
+
command: 'npx',
|
|
70
|
+
args: ['-y', 'mcp-linear'],
|
|
71
|
+
env: { LINEAR_API_KEY: '${LINEAR_API_KEY}' },
|
|
72
|
+
},
|
|
73
|
+
slack: {
|
|
74
|
+
command: 'npx',
|
|
75
|
+
args: ['-y', '@modelcontextprotocol/server-slack'],
|
|
76
|
+
env: { SLACK_BOT_TOKEN: '${SLACK_BOT_TOKEN}' },
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export function stackMcpIds(stackId) {
|
|
81
|
+
const base = ['github', 'filesystem'];
|
|
82
|
+
switch (stackId) {
|
|
83
|
+
case 'react':
|
|
84
|
+
case 'nextjs':
|
|
85
|
+
case 'react-native':
|
|
86
|
+
return [...base, 'playwright', 'chrome-devtools', 'sentry'];
|
|
87
|
+
case 'nodejs':
|
|
88
|
+
case 'nestjs':
|
|
89
|
+
return [...base, 'docker', 'postgresql', 'redis', 'playwright', 'sentry'];
|
|
90
|
+
case 'python':
|
|
91
|
+
case 'fastapi':
|
|
92
|
+
return [...base, 'docker', 'postgresql', 'redis', 'sentry'];
|
|
93
|
+
case 'java':
|
|
94
|
+
case 'dotnet':
|
|
95
|
+
return [...base, 'docker', 'postgresql', 'kubernetes', 'sentry'];
|
|
96
|
+
default:
|
|
97
|
+
return base;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Heuristic scan of a product repo (enhance mode).
|
|
103
|
+
* @param {string} cwd
|
|
104
|
+
* @param {{ existsSync: Function, readFileSync: Function }} fs
|
|
105
|
+
*/
|
|
106
|
+
export function detectRepoSignals(cwd, fs) {
|
|
107
|
+
const exists = rel => fs.existsSync(path.join(cwd, rel));
|
|
108
|
+
const read = rel => {
|
|
109
|
+
try {
|
|
110
|
+
return fs.readFileSync(path.join(cwd, rel), 'utf8');
|
|
111
|
+
} catch {
|
|
112
|
+
return '';
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const signals = {
|
|
117
|
+
packageJson: exists('package.json'),
|
|
118
|
+
pyproject: exists('pyproject.toml') || exists('requirements.txt'),
|
|
119
|
+
dockerfile: exists('Dockerfile') || exists('docker-compose.yml') || exists('compose.yml'),
|
|
120
|
+
kubernetes: exists('k8s') || exists('kubernetes') || exists('helm') || exists('Chart.yaml'),
|
|
121
|
+
githubActions: exists('.github/workflows'),
|
|
122
|
+
playwright: false,
|
|
123
|
+
sentry: false,
|
|
124
|
+
prisma: false,
|
|
125
|
+
next: false,
|
|
126
|
+
nest: false,
|
|
127
|
+
fastapi: false,
|
|
128
|
+
redis: false,
|
|
129
|
+
postgres: false,
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
const pkg = read('package.json');
|
|
133
|
+
if (pkg) {
|
|
134
|
+
signals.playwright = /playwright/i.test(pkg);
|
|
135
|
+
signals.sentry = /sentry/i.test(pkg);
|
|
136
|
+
signals.prisma = /prisma/i.test(pkg);
|
|
137
|
+
signals.next = /"next"/i.test(pkg);
|
|
138
|
+
signals.nest = /@nestjs/i.test(pkg);
|
|
139
|
+
signals.redis = /ioredis|"redis"/i.test(pkg);
|
|
140
|
+
signals.postgres = /pg\b|postgres|prisma/i.test(pkg);
|
|
141
|
+
}
|
|
142
|
+
const py = read('requirements.txt') + read('pyproject.toml');
|
|
143
|
+
if (py) {
|
|
144
|
+
signals.fastapi = /fastapi/i.test(py);
|
|
145
|
+
signals.sentry = signals.sentry || /sentry/i.test(py);
|
|
146
|
+
signals.redis = signals.redis || /redis/i.test(py);
|
|
147
|
+
signals.postgres = signals.postgres || /psycopg|sqlalchemy|asyncpg/i.test(py);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const ids = new Set(['github', 'filesystem']);
|
|
151
|
+
if (signals.dockerfile) ids.add('docker');
|
|
152
|
+
if (signals.kubernetes) ids.add('kubernetes');
|
|
153
|
+
if (signals.playwright || signals.next) ids.add('playwright');
|
|
154
|
+
if (signals.next || signals.playwright) ids.add('chrome-devtools');
|
|
155
|
+
if (signals.sentry) ids.add('sentry');
|
|
156
|
+
if (signals.postgres || signals.prisma) ids.add('postgresql');
|
|
157
|
+
if (signals.redis) ids.add('redis');
|
|
158
|
+
if (signals.githubActions) ids.add('github');
|
|
159
|
+
|
|
160
|
+
return { signals, recommendedMcpIds: [...ids] };
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export function buildRecommendedMcpConfig(ids) {
|
|
164
|
+
/** @type {Record<string, object>} */
|
|
165
|
+
const recommended = {};
|
|
166
|
+
for (const id of ids) {
|
|
167
|
+
if (MCP_SERVER_STUBS[id]) recommended[id] = MCP_SERVER_STUBS[id];
|
|
168
|
+
}
|
|
169
|
+
return recommended;
|
|
170
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const SITE_URL = 'https://
|
|
1
|
+
export const SITE_URL = 'https://www.ai-standards.dev';
|
|
2
2
|
|
|
3
3
|
export const GOALS = [
|
|
4
4
|
{ id: 'new-product', label: 'Build a new product' },
|
|
@@ -37,16 +37,31 @@ export const IDES = [
|
|
|
37
37
|
{ id: 'continue', label: 'Continue' },
|
|
38
38
|
];
|
|
39
39
|
|
|
40
|
+
export const MODELS = [
|
|
41
|
+
{ id: 'claude', label: 'Claude (Anthropic)' },
|
|
42
|
+
{ id: 'gpt', label: 'GPT (OpenAI)' },
|
|
43
|
+
{ id: 'gemini', label: 'Gemini (Google)' },
|
|
44
|
+
{ id: 'multi', label: 'Multi-model / gateway' },
|
|
45
|
+
{ id: 'local', label: 'Local / open-weight' },
|
|
46
|
+
{ id: 'undecided', label: 'Undecided' },
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
export const DATA_CLASSES = [
|
|
50
|
+
{ id: 'public', label: 'Public' },
|
|
51
|
+
{ id: 'internal', label: 'Internal' },
|
|
52
|
+
{ id: 'confidential', label: 'Confidential / regulated' },
|
|
53
|
+
];
|
|
54
|
+
|
|
40
55
|
export const STACKS = [
|
|
41
|
-
{ id: 'react', label: 'React' },
|
|
42
|
-
{ id: 'nextjs', label: 'Next.js' },
|
|
43
|
-
{ id: 'react-native', label: 'React Native' },
|
|
44
|
-
{ id: 'nodejs', label: 'Node.js' },
|
|
45
|
-
{ id: 'nestjs', label: 'NestJS' },
|
|
46
|
-
{ id: 'python', label: 'Python' },
|
|
47
|
-
{ id: 'fastapi', label: 'FastAPI' },
|
|
48
|
-
{ id: 'java', label: 'Java' },
|
|
49
|
-
{ id: 'dotnet', label: '.NET' },
|
|
56
|
+
{ id: 'react', label: 'React', skillKey: 'skills/react.skill.md', cookbook: 'react' },
|
|
57
|
+
{ id: 'nextjs', label: 'Next.js', skillKey: 'skills/nextjs.skill.md', cookbook: 'nextjs' },
|
|
58
|
+
{ id: 'react-native', label: 'React Native', skillKey: 'skills/react-native.skill.md', cookbook: 'react-native' },
|
|
59
|
+
{ id: 'nodejs', label: 'Node.js', skillKey: 'skills/node.skill.md', cookbook: 'node' },
|
|
60
|
+
{ id: 'nestjs', label: 'NestJS', skillKey: 'skills/node.skill.md', cookbook: 'node' },
|
|
61
|
+
{ id: 'python', label: 'Python', skillKey: 'skills/python.skill.md', cookbook: 'python' },
|
|
62
|
+
{ id: 'fastapi', label: 'FastAPI', skillKey: 'skills/python.skill.md', cookbook: 'python' },
|
|
63
|
+
{ id: 'java', label: 'Java', skillKey: 'skills/java.skill.md', cookbook: 'java' },
|
|
64
|
+
{ id: 'dotnet', label: '.NET', skillKey: 'skills/dotnet.skill.md', cookbook: 'dotnet' },
|
|
50
65
|
];
|
|
51
66
|
|
|
52
67
|
export const STACK_LABELS = Object.fromEntries(STACKS.map(s => [s.id, s.label]));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grvmithas/create-aies-kit",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Scaffold
|
|
3
|
+
"version": "1.3.0",
|
|
4
|
+
"description": "Scaffold a complete AIES (AI Engineering Standard) harness into IDE-native paths — prompts, skills, cookbook, agents, MCP stubs, AGENTS.md.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -13,6 +13,11 @@
|
|
|
13
13
|
"README.md",
|
|
14
14
|
"LICENSE"
|
|
15
15
|
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"vendor": "node ../kit-core/scripts/embed-corpus.mjs && node ./scripts/vendor-kit-core.mjs",
|
|
18
|
+
"prepublishOnly": "npm run vendor",
|
|
19
|
+
"prepack": "npm run vendor"
|
|
20
|
+
},
|
|
16
21
|
"engines": {
|
|
17
22
|
"node": ">=18"
|
|
18
23
|
},
|
|
@@ -25,14 +30,15 @@
|
|
|
25
30
|
"copilot",
|
|
26
31
|
"mcp",
|
|
27
32
|
"aidlc",
|
|
28
|
-
"create-aies-kit"
|
|
33
|
+
"create-aies-kit",
|
|
34
|
+
"agents.md"
|
|
29
35
|
],
|
|
30
36
|
"repository": {
|
|
31
37
|
"type": "git",
|
|
32
38
|
"url": "git+https://github.com/grvmithas/open-ai-engineering-standards.git",
|
|
33
39
|
"directory": "packages/create-aies-kit"
|
|
34
40
|
},
|
|
35
|
-
"homepage": "https://
|
|
41
|
+
"homepage": "https://www.ai-standards.dev/quickstart",
|
|
36
42
|
"bugs": {
|
|
37
43
|
"url": "https://github.com/grvmithas/open-ai-engineering-standards/issues"
|
|
38
44
|
},
|