@vyuhlabs/dxkit 1.2.1 → 1.4.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/CHANGELOG.md +61 -0
- package/README.md +153 -69
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +55 -34
- package/dist/cli.js.map +1 -1
- package/dist/codebase-scanner.d.ts.map +1 -1
- package/dist/codebase-scanner.js +226 -89
- package/dist/codebase-scanner.js.map +1 -1
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +65 -19
- package/dist/detect.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js.map +1 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +3 -1
- package/dist/files.js.map +1 -1
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +25 -10
- package/dist/generator.js.map +1 -1
- package/dist/lib.d.ts +11 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +18 -0
- package/dist/lib.js.map +1 -0
- package/dist/project-yaml.d.ts +13 -0
- package/dist/project-yaml.d.ts.map +1 -0
- package/dist/project-yaml.js +183 -0
- package/dist/project-yaml.js.map +1 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +1 -1
- package/dist/prompts.js.map +1 -1
- package/dist/template-engine.d.ts.map +1 -1
- package/dist/template-engine.js.map +1 -1
- package/package.json +37 -5
- package/templates/.claude/skills/gcloud/SKILL.md +5 -0
- package/templates/.claude/skills/pulumi/SKILL.md +6 -0
- package/templates/.claude/skills/secrets/SKILL.md +7 -0
- package/templates/.claude/skills/test/SKILL.md.template +13 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.hasProjectYaml = hasProjectYaml;
|
|
37
|
+
exports.readProjectYaml = readProjectYaml;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const constants_1 = require("./constants");
|
|
41
|
+
/** Check if .project.yaml exists in the given directory. */
|
|
42
|
+
function hasProjectYaml(cwd) {
|
|
43
|
+
return fs.existsSync(path.join(cwd, '.project.yaml'));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Read .project.yaml and build a ResolvedConfig from it.
|
|
47
|
+
* This is the primary config source when create-devstack has already
|
|
48
|
+
* written the file — dxkit skips detect() and prompts in this case.
|
|
49
|
+
*
|
|
50
|
+
* Returns null if the file is malformed or missing required fields
|
|
51
|
+
* (project.name). The caller should fall back to detect() + prompts.
|
|
52
|
+
*/
|
|
53
|
+
function readProjectYaml(cwd) {
|
|
54
|
+
const filePath = path.join(cwd, '.project.yaml');
|
|
55
|
+
let raw;
|
|
56
|
+
try {
|
|
57
|
+
raw = fs.readFileSync(filePath, 'utf-8');
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
let yaml;
|
|
63
|
+
try {
|
|
64
|
+
yaml = parseSimpleYaml(raw);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
// project.name is required
|
|
70
|
+
if (!yaml.project?.name) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const langs = yaml.languages ?? {};
|
|
74
|
+
const infra = yaml.infrastructure ?? {};
|
|
75
|
+
const tools = yaml.tools ?? {};
|
|
76
|
+
const langEnabled = (name) => langs[name]?.enabled ?? false;
|
|
77
|
+
const infraEnabled = (name) => infra[name]?.enabled ?? false;
|
|
78
|
+
// Find coverage from first enabled language with quality settings
|
|
79
|
+
let coverage = constants_1.DEFAULT_COVERAGE;
|
|
80
|
+
for (const lang of Object.values(langs)) {
|
|
81
|
+
if (lang?.enabled && lang.quality?.coverage) {
|
|
82
|
+
coverage = String(lang.quality.coverage);
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const detected = {
|
|
87
|
+
languages: {
|
|
88
|
+
python: langEnabled('python'),
|
|
89
|
+
go: langEnabled('go'),
|
|
90
|
+
node: langEnabled('node'),
|
|
91
|
+
nextjs: langEnabled('nextjs'),
|
|
92
|
+
rust: langEnabled('rust'),
|
|
93
|
+
csharp: langEnabled('csharp'),
|
|
94
|
+
},
|
|
95
|
+
infrastructure: {
|
|
96
|
+
docker: tools.docker ?? true,
|
|
97
|
+
postgres: infraEnabled('postgres'),
|
|
98
|
+
redis: infraEnabled('redis'),
|
|
99
|
+
},
|
|
100
|
+
tools: {
|
|
101
|
+
gcloud: tools.gcloud ?? false,
|
|
102
|
+
pulumi: tools.pulumi ?? false,
|
|
103
|
+
infisical: tools.infisical ?? false,
|
|
104
|
+
ghCli: tools.github_cli ?? true,
|
|
105
|
+
},
|
|
106
|
+
projectName: yaml.project.name,
|
|
107
|
+
projectDescription: yaml.project.description ?? '',
|
|
108
|
+
versions: {
|
|
109
|
+
python: langs.python?.version ?? constants_1.DEFAULT_VERSIONS.python,
|
|
110
|
+
go: langs.go?.version ?? constants_1.DEFAULT_VERSIONS.go,
|
|
111
|
+
node: langs.node?.version ?? constants_1.DEFAULT_VERSIONS.node,
|
|
112
|
+
rust: langs.rust?.version ?? constants_1.DEFAULT_VERSIONS.rust,
|
|
113
|
+
csharp: langs.csharp?.version ?? constants_1.DEFAULT_VERSIONS.csharp,
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
return {
|
|
117
|
+
...detected,
|
|
118
|
+
coverageThreshold: coverage,
|
|
119
|
+
precommit: tools.precommit ?? true,
|
|
120
|
+
qualityChecks: true,
|
|
121
|
+
aiSessions: true,
|
|
122
|
+
aiPrompts: true,
|
|
123
|
+
claudeCode: tools.claude_code ?? true,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Minimal YAML parser for .project.yaml.
|
|
128
|
+
* Handles the specific structure we expect — nested objects with scalar values.
|
|
129
|
+
* Avoids adding a `yaml` npm dependency to dxkit (which has zero runtime deps).
|
|
130
|
+
*/
|
|
131
|
+
function parseSimpleYaml(raw) {
|
|
132
|
+
const lines = raw.split('\n');
|
|
133
|
+
const result = {};
|
|
134
|
+
const stack = [
|
|
135
|
+
{ indent: -1, obj: result },
|
|
136
|
+
];
|
|
137
|
+
for (const line of lines) {
|
|
138
|
+
// Skip empty lines and comments
|
|
139
|
+
if (!line.trim() || line.trim().startsWith('#'))
|
|
140
|
+
continue;
|
|
141
|
+
const indent = line.search(/\S/);
|
|
142
|
+
const trimmed = line.trim();
|
|
143
|
+
// Pop stack to find parent
|
|
144
|
+
while (stack.length > 1 && stack[stack.length - 1].indent >= indent) {
|
|
145
|
+
stack.pop();
|
|
146
|
+
}
|
|
147
|
+
const parent = stack[stack.length - 1].obj;
|
|
148
|
+
const colonIdx = trimmed.indexOf(':');
|
|
149
|
+
if (colonIdx === -1)
|
|
150
|
+
continue;
|
|
151
|
+
const key = trimmed.slice(0, colonIdx).trim();
|
|
152
|
+
const valueStr = trimmed.slice(colonIdx + 1).trim();
|
|
153
|
+
if (valueStr === '' || valueStr === '{}') {
|
|
154
|
+
// Nested object (or empty object)
|
|
155
|
+
const child = {};
|
|
156
|
+
parent[key] = child;
|
|
157
|
+
if (valueStr !== '{}') {
|
|
158
|
+
stack.push({ indent, obj: child });
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
// Scalar value
|
|
163
|
+
parent[key] = parseScalar(valueStr);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
function parseScalar(value) {
|
|
169
|
+
// Remove surrounding quotes
|
|
170
|
+
if ((value.startsWith("'") && value.endsWith("'")) ||
|
|
171
|
+
(value.startsWith('"') && value.endsWith('"'))) {
|
|
172
|
+
return value.slice(1, -1);
|
|
173
|
+
}
|
|
174
|
+
if (value === 'true')
|
|
175
|
+
return true;
|
|
176
|
+
if (value === 'false')
|
|
177
|
+
return false;
|
|
178
|
+
const num = Number(value);
|
|
179
|
+
if (!isNaN(num) && value !== '')
|
|
180
|
+
return num;
|
|
181
|
+
return value;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=project-yaml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-yaml.js","sourceRoot":"","sources":["../src/project-yaml.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAwBxE,wBAAsB,eAAe,CACnC,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CA+E3D"}
|
package/dist/prompts.js
CHANGED
|
@@ -95,7 +95,7 @@ async function promptForConfig(detected, options) {
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
-
const projectName = options.name || await ask(rl, 'Project name?', detected.projectName);
|
|
98
|
+
const projectName = options.name || (await ask(rl, 'Project name?', detected.projectName));
|
|
99
99
|
const includeFull = await confirm(rl, 'Include quality infrastructure (CI, hooks, linters)?', true);
|
|
100
100
|
const mode = includeFull ? 'full' : 'dx-only';
|
|
101
101
|
let coverageThreshold = constants_1.DEFAULT_COVERAGE;
|
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-engine.d.ts","sourceRoot":"","sources":["../src/template-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,UAAU,CAA0B;
|
|
1
|
+
{"version":3,"file":"template-engine.d.ts","sourceRoot":"","sources":["../src/template-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,UAAU,CAA0B;gBAEhC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAKlF,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAQhC,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,gBAAgB;CASzB;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAER"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-engine.js","sourceRoot":"","sources":["../src/template-engine.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;
|
|
1
|
+
{"version":3,"file":"template-engine.js","sourceRoot":"","sources":["../src/template-engine.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAqDH,0CAMC;AAzDD,MAAa,cAAc;IACjB,SAAS,CAAyB;IAClC,UAAU,CAA0B;IAE5C,YAAY,SAAiC,EAAE,UAAmC;QAChF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACzC,oFAAoF;QACpF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;IAClC,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,kEAAkE;QAClE,MAAM,OAAO,GAAG,6CAA6C,CAAC;QAE9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK;gBAAE,MAAM;YAElB,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;YAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE7D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;YAClD,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;YAErD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,gBAAgB,CAAC,OAAe;QACtC,oDAAoD;QACpD,4EAA4E;QAC5E,OAAO,OAAO,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAChF,0DAA0D;YAC1D,IAAI,MAAM,KAAK,GAAG;gBAAE,OAAO,KAAK,CAAC;YACjC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAhDD,wCAgDC;AAED,yEAAyE;AACzE,SAAgB,eAAe,CAC7B,OAAe,EACf,SAAiC,EACjC,UAAmC;IAEnC,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACpE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vyuhlabs/dxkit",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "AI-native developer experience toolkit for any repository",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Vyuh Labs",
|
|
@@ -18,7 +18,14 @@
|
|
|
18
18
|
"publishConfig": {
|
|
19
19
|
"access": "public"
|
|
20
20
|
},
|
|
21
|
-
"main": "./dist/
|
|
21
|
+
"main": "./dist/lib.js",
|
|
22
|
+
"types": "./dist/lib.d.ts",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/lib.d.ts",
|
|
26
|
+
"default": "./dist/lib.js"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
22
29
|
"engines": {
|
|
23
30
|
"node": ">=18.0.0"
|
|
24
31
|
},
|
|
@@ -32,12 +39,37 @@
|
|
|
32
39
|
"scripts": {
|
|
33
40
|
"build": "node scripts/copy-templates.js && tsc",
|
|
34
41
|
"prepublishOnly": "npm run build",
|
|
35
|
-
"typecheck": "tsc --noEmit"
|
|
42
|
+
"typecheck": "tsc --noEmit",
|
|
43
|
+
"lint": "eslint .",
|
|
44
|
+
"lint:fix": "eslint . --fix",
|
|
45
|
+
"format": "prettier --write .",
|
|
46
|
+
"format:check": "prettier --check .",
|
|
47
|
+
"test": "vitest",
|
|
48
|
+
"test:run": "npm run build && vitest run",
|
|
49
|
+
"test:changed": "vitest run --changed",
|
|
50
|
+
"prepare": "husky || true"
|
|
51
|
+
},
|
|
52
|
+
"lint-staged": {
|
|
53
|
+
"*.{ts,js,mjs,cjs}": [
|
|
54
|
+
"eslint --fix",
|
|
55
|
+
"prettier --write"
|
|
56
|
+
],
|
|
57
|
+
"*.{json,md,yml,yaml}": [
|
|
58
|
+
"prettier --write"
|
|
59
|
+
]
|
|
36
60
|
},
|
|
37
|
-
"dependencies": {},
|
|
38
61
|
"devDependencies": {
|
|
62
|
+
"@eslint/js": "^9.13.0",
|
|
63
|
+
"@types/node": "^20.0.0",
|
|
64
|
+
"eslint": "^9.13.0",
|
|
65
|
+
"eslint-config-prettier": "^9.1.0",
|
|
66
|
+
"globals": "^17.4.0",
|
|
67
|
+
"husky": "^9.1.6",
|
|
68
|
+
"lint-staged": "^15.2.10",
|
|
69
|
+
"prettier": "^3.3.3",
|
|
39
70
|
"typescript": "^5.4.0",
|
|
40
|
-
"
|
|
71
|
+
"typescript-eslint": "^8.11.0",
|
|
72
|
+
"vitest": "^2.1.4"
|
|
41
73
|
},
|
|
42
74
|
"keywords": [
|
|
43
75
|
"vyuh",
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gcloud
|
|
3
3
|
description: Google Cloud Platform operations — gcloud CLI, Cloud Run, GKE, BigQuery, IAM, GCS. Use when asked about GCP, Google Cloud, gcloud commands, or cloud infrastructure.
|
|
4
|
+
paths:
|
|
5
|
+
- '**/cloudbuild.yaml'
|
|
6
|
+
- '**/cloudbuild.yml'
|
|
7
|
+
- '**/.gcloudignore'
|
|
8
|
+
- '**/app.yaml'
|
|
4
9
|
---
|
|
5
10
|
|
|
6
11
|
# Google Cloud (gcloud)
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pulumi
|
|
3
3
|
description: Pulumi infrastructure as code — stacks, previews, deployments, config. Use when asked about IaC, Pulumi, cloud resources, infrastructure provisioning, or stack management.
|
|
4
|
+
paths:
|
|
5
|
+
- 'Pulumi.yaml'
|
|
6
|
+
- 'Pulumi.yml'
|
|
7
|
+
- 'Pulumi.*.yaml'
|
|
8
|
+
- '**/Pulumi.yaml'
|
|
9
|
+
- '**/Pulumi.*.yaml'
|
|
4
10
|
---
|
|
5
11
|
|
|
6
12
|
# Pulumi (Infrastructure as Code)
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: secrets
|
|
3
3
|
description: Manage secrets via Infisical. Use when asked about secrets, environment variables, API keys, .env configuration, or credential management.
|
|
4
|
+
paths:
|
|
5
|
+
- '.env'
|
|
6
|
+
- '.env.*'
|
|
7
|
+
- '**/.env'
|
|
8
|
+
- '**/.env.*'
|
|
9
|
+
- '.infisical.json'
|
|
10
|
+
- '**/.infisical.json'
|
|
4
11
|
---
|
|
5
12
|
|
|
6
13
|
# Secrets Management (Infisical)
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: test
|
|
3
3
|
description: Run tests, check coverage, debug test failures. Use when asked to run tests, write tests, investigate test failures, or check coverage.
|
|
4
|
+
paths:
|
|
5
|
+
- '**/*.test.ts'
|
|
6
|
+
- '**/*.test.tsx'
|
|
7
|
+
- '**/*.test.js'
|
|
8
|
+
- '**/*.test.jsx'
|
|
9
|
+
- '**/*.spec.ts'
|
|
10
|
+
- '**/*.spec.tsx'
|
|
11
|
+
- '**/*.spec.js'
|
|
12
|
+
- '**/*_test.go'
|
|
13
|
+
- '**/test_*.py'
|
|
14
|
+
- '**/*_test.py'
|
|
15
|
+
- '**/tests/**'
|
|
16
|
+
- '**/__tests__/**'
|
|
4
17
|
---
|
|
5
18
|
|
|
6
19
|
# Testing
|