@esthernandez/vibe-doc 0.2.0 → 0.2.2
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/classifier/index.js +9 -0
- package/dist/classifier/llm-prompt.d.ts.map +1 -1
- package/dist/classifier/llm-prompt.js +1 -0
- package/dist/classifier/scoring-engine.d.ts +2 -1
- package/dist/classifier/scoring-engine.d.ts.map +1 -1
- package/dist/classifier/scoring-engine.js +16 -0
- package/dist/classifier/signals.d.ts.map +1 -1
- package/dist/classifier/signals.js +46 -7
- package/dist/gap-analyzer/breadcrumbs.d.ts.map +1 -1
- package/dist/gap-analyzer/breadcrumbs.js +77 -0
- package/dist/gap-analyzer/matrix.d.ts +5 -1
- package/dist/gap-analyzer/matrix.d.ts.map +1 -1
- package/dist/gap-analyzer/matrix.js +51 -0
- package/dist/gap-analyzer/tier-assigner.d.ts.map +1 -1
- package/dist/gap-analyzer/tier-assigner.js +14 -2
- package/dist/index.js +3 -1
- package/dist/scanner/file-scanner.d.ts.map +1 -1
- package/dist/scanner/file-scanner.js +10 -2
- package/dist/templates/embedded/adr.md +45 -0
- package/dist/templates/embedded/api-spec.md +55 -0
- package/dist/templates/embedded/changelog-contributing.md +67 -0
- package/dist/templates/embedded/data-model.md +55 -0
- package/dist/templates/embedded/deployment-procedure.md +63 -0
- package/dist/templates/embedded/install-guide.md +49 -0
- package/dist/templates/embedded/readme.md +55 -0
- package/dist/templates/embedded/runbook.md +55 -0
- package/dist/templates/embedded/skill-command-reference.md +77 -0
- package/dist/templates/embedded/test-plan.md +55 -0
- package/dist/templates/embedded/threat-model.md +47 -0
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +4 -0
- package/package.json +1 -1
package/dist/classifier/index.js
CHANGED
|
@@ -106,6 +106,8 @@ function buildLowConfidenceClassification(ruleResults, inventory) {
|
|
|
106
106
|
function mapCategoryToDeploymentContext(category, contexts) {
|
|
107
107
|
const result = [];
|
|
108
108
|
// Determine platform based on category
|
|
109
|
+
// TODO: these platform/environment/scale strings are untyped magic strings —
|
|
110
|
+
// worth promoting to enums when the classifier gets its next overhaul.
|
|
109
111
|
let platform = 'cloud';
|
|
110
112
|
if (category === scoring_engine_1.Category.MobileApplication) {
|
|
111
113
|
platform = 'mobile';
|
|
@@ -113,6 +115,9 @@ function mapCategoryToDeploymentContext(category, contexts) {
|
|
|
113
115
|
else if (category === scoring_engine_1.Category.InfrastructurePlatform) {
|
|
114
116
|
platform = 'kubernetes';
|
|
115
117
|
}
|
|
118
|
+
else if (category === scoring_engine_1.Category.ClaudeCodePlugin) {
|
|
119
|
+
platform = 'plugin';
|
|
120
|
+
}
|
|
116
121
|
// Check for EdgeEmbedded context
|
|
117
122
|
if (contexts.includes(scoring_engine_1.Context.EdgeEmbedded)) {
|
|
118
123
|
platform = 'edge';
|
|
@@ -122,6 +127,10 @@ function mapCategoryToDeploymentContext(category, contexts) {
|
|
|
122
127
|
if (contexts.includes(scoring_engine_1.Context.InternalTooling)) {
|
|
123
128
|
environment = 'staging';
|
|
124
129
|
}
|
|
130
|
+
if (category === scoring_engine_1.Category.ClaudeCodePlugin) {
|
|
131
|
+
// Plugins are distributed, not deployed in the SaaS sense
|
|
132
|
+
environment = 'distribution';
|
|
133
|
+
}
|
|
125
134
|
// Determine scale based on contexts
|
|
126
135
|
let scale = 'small';
|
|
127
136
|
if (contexts.includes(scoring_engine_1.Context.CustomerFacing)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-prompt.d.ts","sourceRoot":"","sources":["../../src/classifier/llm-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAA+B,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,aAAa,GACzB,MAAM,
|
|
1
|
+
{"version":3,"file":"llm-prompt.d.ts","sourceRoot":"","sources":["../../src/classifier/llm-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAA+B,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,aAAa,GACzB,MAAM,CA2DR"}
|
|
@@ -39,6 +39,7 @@ Choose ONE primary category that best describes this project:
|
|
|
39
39
|
- **MobileApplication**: Native or cross-platform mobile apps
|
|
40
40
|
- **AIMLSystem**: ML/AI-focused projects with models, training, inference
|
|
41
41
|
- **IntegrationConnector**: Adapters, SDKs, connectors for third-party services
|
|
42
|
+
- **ClaudeCodePlugin**: A Claude Code plugin or plugin marketplace — characterized by a .claude-plugin/plugin.json manifest, skills/*/SKILL.md files, commands/*.md files, or a .claude-plugin/marketplace.json. No runtime deployment in the traditional sense; distributed to users via npm or a marketplace.
|
|
42
43
|
|
|
43
44
|
## Operational Contexts
|
|
44
45
|
|
|
@@ -10,7 +10,8 @@ export declare enum Category {
|
|
|
10
10
|
InfrastructurePlatform = "InfrastructurePlatform",
|
|
11
11
|
MobileApplication = "MobileApplication",
|
|
12
12
|
AIMLSystem = "AIMLSystem",
|
|
13
|
-
IntegrationConnector = "IntegrationConnector"
|
|
13
|
+
IntegrationConnector = "IntegrationConnector",
|
|
14
|
+
ClaudeCodePlugin = "ClaudeCodePlugin"
|
|
14
15
|
}
|
|
15
16
|
export declare enum Context {
|
|
16
17
|
Regulated = "Regulated",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoring-engine.d.ts","sourceRoot":"","sources":["../../src/classifier/scoring-engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,oBAAY,QAAQ;IAClB,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,YAAY,iBAAiB;IAC7B,sBAAsB,2BAA2B;IACjD,iBAAiB,sBAAsB;IACvC,UAAU,eAAe;IACzB,oBAAoB,yBAAyB;
|
|
1
|
+
{"version":3,"file":"scoring-engine.d.ts","sourceRoot":"","sources":["../../src/classifier/scoring-engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,oBAAY,QAAQ;IAClB,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,YAAY,iBAAiB;IAC7B,sBAAsB,2BAA2B;IACjD,iBAAiB,sBAAsB;IACvC,UAAU,eAAe;IACzB,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;CACtC;AAED,oBAAY,OAAO;IACjB,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EAAE,EACjB,mBAAmB,GAAE,MAAa,GACjC,aAAa,CA0Nf"}
|
|
@@ -16,6 +16,7 @@ var Category;
|
|
|
16
16
|
Category["MobileApplication"] = "MobileApplication";
|
|
17
17
|
Category["AIMLSystem"] = "AIMLSystem";
|
|
18
18
|
Category["IntegrationConnector"] = "IntegrationConnector";
|
|
19
|
+
Category["ClaudeCodePlugin"] = "ClaudeCodePlugin";
|
|
19
20
|
})(Category || (exports.Category = Category = {}));
|
|
20
21
|
var Context;
|
|
21
22
|
(function (Context) {
|
|
@@ -160,6 +161,21 @@ function scoreClassification(signals, confidenceThreshold = 0.85) {
|
|
|
160
161
|
case 'has-github-actions':
|
|
161
162
|
contextScores[Context.InternalTooling] += 1 * w;
|
|
162
163
|
break;
|
|
164
|
+
// Claude Code Plugin signals
|
|
165
|
+
// Weighted to dominate: plugin.json is an unambiguous marker that
|
|
166
|
+
// overrides any incidental web/framework signals in the repo.
|
|
167
|
+
case 'has-claude-plugin-manifest':
|
|
168
|
+
categoryScores[Category.ClaudeCodePlugin] += 20 * w;
|
|
169
|
+
break;
|
|
170
|
+
case 'has-claude-skill-files':
|
|
171
|
+
categoryScores[Category.ClaudeCodePlugin] += 8 * w;
|
|
172
|
+
break;
|
|
173
|
+
case 'has-claude-command-files':
|
|
174
|
+
categoryScores[Category.ClaudeCodePlugin] += 6 * w;
|
|
175
|
+
break;
|
|
176
|
+
case 'has-claude-marketplace':
|
|
177
|
+
categoryScores[Category.ClaudeCodePlugin] += 10 * w;
|
|
178
|
+
break;
|
|
163
179
|
default:
|
|
164
180
|
logger_1.logger.warn(`Unknown signal: ${signal.name}`);
|
|
165
181
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/classifier/signals.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/classifier/signals.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGpD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAkZrE"}
|
|
@@ -12,16 +12,20 @@ const logger_1 = require("../utils/logger");
|
|
|
12
12
|
*/
|
|
13
13
|
function extractSignals(inventory) {
|
|
14
14
|
const signals = [];
|
|
15
|
+
// Normalize paths to forward slashes before any substring matching —
|
|
16
|
+
// otherwise Windows backslash paths break signal detection for anything
|
|
17
|
+
// that looks across path components (.github/workflows, .claude-plugin/...)
|
|
18
|
+
const norm = (s) => s.replace(/\\/g, '/').toLowerCase();
|
|
15
19
|
// Source code patterns
|
|
16
|
-
const sourceFiles = inventory.categories.sourceCode.files.join('|')
|
|
17
|
-
const configFiles = inventory.categories.configuration.files.join('|')
|
|
18
|
-
const infraFiles = inventory.categories.infrastructure.files.join('|')
|
|
19
|
-
const docFiles = inventory.categories.documentation.files.join('|')
|
|
20
|
-
const allFiles = inventory.categories.sourceCode.files
|
|
20
|
+
const sourceFiles = norm(inventory.categories.sourceCode.files.join('|'));
|
|
21
|
+
const configFiles = norm(inventory.categories.configuration.files.join('|'));
|
|
22
|
+
const infraFiles = norm(inventory.categories.infrastructure.files.join('|'));
|
|
23
|
+
const docFiles = norm(inventory.categories.documentation.files.join('|'));
|
|
24
|
+
const allFiles = norm(inventory.categories.sourceCode.files
|
|
21
25
|
.concat(inventory.categories.configuration.files)
|
|
22
26
|
.concat(inventory.categories.infrastructure.files)
|
|
23
|
-
.
|
|
24
|
-
.
|
|
27
|
+
.concat(inventory.categories.documentation.files)
|
|
28
|
+
.join('|'));
|
|
25
29
|
// Express/Fastify/Koa routes
|
|
26
30
|
if (sourceFiles.includes('routes') || sourceFiles.includes('controller')) {
|
|
27
31
|
if (allFiles.includes('express') ||
|
|
@@ -300,6 +304,41 @@ function extractSignals(inventory) {
|
|
|
300
304
|
weight: 1,
|
|
301
305
|
});
|
|
302
306
|
}
|
|
307
|
+
// Claude Code Plugin manifest — the dominant signal for plugin repos.
|
|
308
|
+
// Path-anchored to avoid false positives on stray files named plugin.json.
|
|
309
|
+
if (configFiles.includes('.claude-plugin/plugin.json') ||
|
|
310
|
+
allFiles.includes('.claude-plugin/plugin.json')) {
|
|
311
|
+
signals.push({
|
|
312
|
+
name: 'has-claude-plugin-manifest',
|
|
313
|
+
source: 'file-scanner',
|
|
314
|
+
weight: 10,
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
// Claude Code marketplace manifest (multi-plugin repo)
|
|
318
|
+
if (configFiles.includes('.claude-plugin/marketplace.json') ||
|
|
319
|
+
allFiles.includes('.claude-plugin/marketplace.json')) {
|
|
320
|
+
signals.push({
|
|
321
|
+
name: 'has-claude-marketplace',
|
|
322
|
+
source: 'file-scanner',
|
|
323
|
+
weight: 8,
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
// SKILL.md files under a skills/ directory (plugin skill surface)
|
|
327
|
+
if (docFiles.match(/\/skills\/[^/|]+\/skill\.md/)) {
|
|
328
|
+
signals.push({
|
|
329
|
+
name: 'has-claude-skill-files',
|
|
330
|
+
source: 'file-scanner',
|
|
331
|
+
weight: 6,
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
// Command markdown files under a commands/ directory
|
|
335
|
+
if (docFiles.match(/\/commands\/[^/|]+\.md/)) {
|
|
336
|
+
signals.push({
|
|
337
|
+
name: 'has-claude-command-files',
|
|
338
|
+
source: 'file-scanner',
|
|
339
|
+
weight: 5,
|
|
340
|
+
});
|
|
341
|
+
}
|
|
303
342
|
logger_1.logger.debug(`Extracted ${signals.length} signals from inventory`);
|
|
304
343
|
return signals;
|
|
305
344
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../src/gap-analyzer/breadcrumbs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../src/gap-analyzer/breadcrumbs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAuY1D"}
|
|
@@ -296,6 +296,83 @@ function getBreadcrumbs(docType) {
|
|
|
296
296
|
'What indexing strategy do you use?',
|
|
297
297
|
],
|
|
298
298
|
},
|
|
299
|
+
readme: {
|
|
300
|
+
docType: 'readme',
|
|
301
|
+
keywords: ['readme'],
|
|
302
|
+
filePatterns: ['**/README.md', '**/README', '**/README.*'],
|
|
303
|
+
gitPatterns: ['readme:', 'docs: readme', 'docs:readme'],
|
|
304
|
+
codePatterns: [],
|
|
305
|
+
// Single-file docs: presence of the file is the satisfaction signal.
|
|
306
|
+
// The generate-time template enforces the sections; the gap analyzer
|
|
307
|
+
// only needs to know "does a README exist anywhere?"
|
|
308
|
+
requiredSections: ['present'],
|
|
309
|
+
gapQuestions: [
|
|
310
|
+
'What does your project actually do, in one sentence?',
|
|
311
|
+
'How does a new user install and run it for the first time?',
|
|
312
|
+
'What does a minimal working example look like?',
|
|
313
|
+
'Where should someone go next after reading the README?',
|
|
314
|
+
],
|
|
315
|
+
},
|
|
316
|
+
'install-guide': {
|
|
317
|
+
docType: 'install-guide',
|
|
318
|
+
keywords: ['install', 'setup', 'getting-started'],
|
|
319
|
+
filePatterns: [
|
|
320
|
+
'**/INSTALL.md',
|
|
321
|
+
'**/INSTALLATION.md',
|
|
322
|
+
'**/docs/install*',
|
|
323
|
+
'**/docs/setup*',
|
|
324
|
+
'**/docs/getting-started*',
|
|
325
|
+
],
|
|
326
|
+
gitPatterns: ['install:', 'setup:', 'docs: install'],
|
|
327
|
+
codePatterns: [],
|
|
328
|
+
requiredSections: ['present'],
|
|
329
|
+
gapQuestions: [
|
|
330
|
+
'What does a user need before installing (OS, runtimes, accounts)?',
|
|
331
|
+
'What is the exact command or set of steps to install?',
|
|
332
|
+
'How does a user verify the install worked?',
|
|
333
|
+
'What are the most common installation problems and fixes?',
|
|
334
|
+
],
|
|
335
|
+
},
|
|
336
|
+
'skill-command-reference': {
|
|
337
|
+
docType: 'skill-command-reference',
|
|
338
|
+
keywords: ['skill', 'command'],
|
|
339
|
+
filePatterns: [
|
|
340
|
+
'**/SKILL.md',
|
|
341
|
+
'**/skills/**',
|
|
342
|
+
'**/commands/**',
|
|
343
|
+
'**/docs/commands*',
|
|
344
|
+
'**/docs/skills*',
|
|
345
|
+
],
|
|
346
|
+
gitPatterns: ['skill:', 'command:', 'docs: skill'],
|
|
347
|
+
codePatterns: ['SKILL.md', 'description:', 'commands/'],
|
|
348
|
+
requiredSections: ['present'],
|
|
349
|
+
gapQuestions: [
|
|
350
|
+
'What skills or slash commands does this plugin expose?',
|
|
351
|
+
'For each, what does it do and when should someone reach for it?',
|
|
352
|
+
'What arguments or inputs does each command accept?',
|
|
353
|
+
'What does typical output look like?',
|
|
354
|
+
],
|
|
355
|
+
},
|
|
356
|
+
'changelog-contributing': {
|
|
357
|
+
docType: 'changelog-contributing',
|
|
358
|
+
keywords: ['changelog', 'contributing', 'history'],
|
|
359
|
+
filePatterns: [
|
|
360
|
+
'**/CHANGELOG.md',
|
|
361
|
+
'**/CONTRIBUTING.md',
|
|
362
|
+
'**/HISTORY.md',
|
|
363
|
+
'**/docs/releases*',
|
|
364
|
+
'**/docs/contributing*',
|
|
365
|
+
],
|
|
366
|
+
gitPatterns: ['release:', 'changelog:', 'docs: changelog'],
|
|
367
|
+
codePatterns: [],
|
|
368
|
+
requiredSections: ['present'],
|
|
369
|
+
gapQuestions: [
|
|
370
|
+
'Where do you track notable changes between releases?',
|
|
371
|
+
'How should a contributor get set up and propose changes?',
|
|
372
|
+
'What is the review and merge process?',
|
|
373
|
+
'Is there a code of conduct for contributors?',
|
|
374
|
+
],
|
|
375
|
+
},
|
|
299
376
|
};
|
|
300
377
|
const breadcrumb = breadcrumbs[docType];
|
|
301
378
|
if (!breadcrumb) {
|
|
@@ -9,7 +9,11 @@ export declare enum DocType {
|
|
|
9
9
|
APISpec = "api-spec",
|
|
10
10
|
DeploymentProcedure = "deployment-procedure",
|
|
11
11
|
TestPlan = "test-plan",
|
|
12
|
-
DataModel = "data-model"
|
|
12
|
+
DataModel = "data-model",
|
|
13
|
+
README = "readme",
|
|
14
|
+
InstallGuide = "install-guide",
|
|
15
|
+
SkillCommandReference = "skill-command-reference",
|
|
16
|
+
ChangelogContributing = "changelog-contributing"
|
|
13
17
|
}
|
|
14
18
|
export declare enum Tier {
|
|
15
19
|
Required = "required",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../src/gap-analyzer/matrix.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,oBAAY,OAAO;IACjB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,WAAW,iBAAiB;IAC5B,OAAO,aAAa;IACpB,mBAAmB,yBAAyB;IAC5C,QAAQ,cAAc;IACtB,SAAS,eAAe;
|
|
1
|
+
{"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../../src/gap-analyzer/matrix.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,oBAAY,OAAO;IACjB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,WAAW,iBAAiB;IAC5B,OAAO,aAAa;IACpB,mBAAmB,yBAAyB;IAC5C,QAAQ,cAAc;IACtB,SAAS,eAAe;IACxB,MAAM,WAAW;IACjB,YAAY,kBAAkB;IAC9B,qBAAqB,4BAA4B;IACjD,qBAAqB,2BAA2B;CACjD;AAED,oBAAY,IAAI;IACd,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAsHD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAAE,GACjB,cAAc,EAAE,CAmDlB"}
|
|
@@ -16,6 +16,10 @@ var DocType;
|
|
|
16
16
|
DocType["DeploymentProcedure"] = "deployment-procedure";
|
|
17
17
|
DocType["TestPlan"] = "test-plan";
|
|
18
18
|
DocType["DataModel"] = "data-model";
|
|
19
|
+
DocType["README"] = "readme";
|
|
20
|
+
DocType["InstallGuide"] = "install-guide";
|
|
21
|
+
DocType["SkillCommandReference"] = "skill-command-reference";
|
|
22
|
+
DocType["ChangelogContributing"] = "changelog-contributing";
|
|
19
23
|
})(DocType || (exports.DocType = DocType = {}));
|
|
20
24
|
var Tier;
|
|
21
25
|
(function (Tier) {
|
|
@@ -35,6 +39,7 @@ const BASE_MATRIX = {
|
|
|
35
39
|
MobileApplication: Tier.Recommended,
|
|
36
40
|
AIMLSystem: Tier.Recommended,
|
|
37
41
|
IntegrationConnector: Tier.Recommended,
|
|
42
|
+
ClaudeCodePlugin: Tier.Recommended,
|
|
38
43
|
},
|
|
39
44
|
[DocType.Runbook]: {
|
|
40
45
|
WebApplication: Tier.Required,
|
|
@@ -44,6 +49,7 @@ const BASE_MATRIX = {
|
|
|
44
49
|
MobileApplication: Tier.Required,
|
|
45
50
|
AIMLSystem: Tier.Required,
|
|
46
51
|
IntegrationConnector: Tier.Recommended,
|
|
52
|
+
ClaudeCodePlugin: Tier.Optional,
|
|
47
53
|
},
|
|
48
54
|
[DocType.ThreatModel]: {
|
|
49
55
|
WebApplication: Tier.Recommended,
|
|
@@ -53,6 +59,7 @@ const BASE_MATRIX = {
|
|
|
53
59
|
MobileApplication: Tier.Required,
|
|
54
60
|
AIMLSystem: Tier.Required,
|
|
55
61
|
IntegrationConnector: Tier.Recommended,
|
|
62
|
+
ClaudeCodePlugin: Tier.Optional,
|
|
56
63
|
},
|
|
57
64
|
[DocType.APISpec]: {
|
|
58
65
|
WebApplication: Tier.Required,
|
|
@@ -62,6 +69,7 @@ const BASE_MATRIX = {
|
|
|
62
69
|
MobileApplication: Tier.Recommended,
|
|
63
70
|
AIMLSystem: Tier.Recommended,
|
|
64
71
|
IntegrationConnector: Tier.Required,
|
|
72
|
+
ClaudeCodePlugin: Tier.Optional,
|
|
65
73
|
},
|
|
66
74
|
[DocType.DeploymentProcedure]: {
|
|
67
75
|
WebApplication: Tier.Required,
|
|
@@ -71,6 +79,7 @@ const BASE_MATRIX = {
|
|
|
71
79
|
MobileApplication: Tier.Required,
|
|
72
80
|
AIMLSystem: Tier.Required,
|
|
73
81
|
IntegrationConnector: Tier.Recommended,
|
|
82
|
+
ClaudeCodePlugin: Tier.Optional,
|
|
74
83
|
},
|
|
75
84
|
[DocType.TestPlan]: {
|
|
76
85
|
WebApplication: Tier.Recommended,
|
|
@@ -80,6 +89,7 @@ const BASE_MATRIX = {
|
|
|
80
89
|
MobileApplication: Tier.Required,
|
|
81
90
|
AIMLSystem: Tier.Required,
|
|
82
91
|
IntegrationConnector: Tier.Recommended,
|
|
92
|
+
ClaudeCodePlugin: Tier.Recommended,
|
|
83
93
|
},
|
|
84
94
|
[DocType.DataModel]: {
|
|
85
95
|
WebApplication: Tier.Required,
|
|
@@ -89,6 +99,47 @@ const BASE_MATRIX = {
|
|
|
89
99
|
MobileApplication: Tier.Recommended,
|
|
90
100
|
AIMLSystem: Tier.Required,
|
|
91
101
|
IntegrationConnector: Tier.Optional,
|
|
102
|
+
ClaudeCodePlugin: Tier.Optional,
|
|
103
|
+
},
|
|
104
|
+
[DocType.README]: {
|
|
105
|
+
WebApplication: Tier.Required,
|
|
106
|
+
APIMicroservice: Tier.Required,
|
|
107
|
+
DataPipeline: Tier.Required,
|
|
108
|
+
InfrastructurePlatform: Tier.Required,
|
|
109
|
+
MobileApplication: Tier.Required,
|
|
110
|
+
AIMLSystem: Tier.Required,
|
|
111
|
+
IntegrationConnector: Tier.Required,
|
|
112
|
+
ClaudeCodePlugin: Tier.Required,
|
|
113
|
+
},
|
|
114
|
+
[DocType.InstallGuide]: {
|
|
115
|
+
WebApplication: Tier.Recommended,
|
|
116
|
+
APIMicroservice: Tier.Recommended,
|
|
117
|
+
DataPipeline: Tier.Recommended,
|
|
118
|
+
InfrastructurePlatform: Tier.Required,
|
|
119
|
+
MobileApplication: Tier.Required,
|
|
120
|
+
AIMLSystem: Tier.Recommended,
|
|
121
|
+
IntegrationConnector: Tier.Required,
|
|
122
|
+
ClaudeCodePlugin: Tier.Required,
|
|
123
|
+
},
|
|
124
|
+
[DocType.SkillCommandReference]: {
|
|
125
|
+
WebApplication: Tier.Optional,
|
|
126
|
+
APIMicroservice: Tier.Optional,
|
|
127
|
+
DataPipeline: Tier.Optional,
|
|
128
|
+
InfrastructurePlatform: Tier.Optional,
|
|
129
|
+
MobileApplication: Tier.Optional,
|
|
130
|
+
AIMLSystem: Tier.Optional,
|
|
131
|
+
IntegrationConnector: Tier.Recommended,
|
|
132
|
+
ClaudeCodePlugin: Tier.Required,
|
|
133
|
+
},
|
|
134
|
+
[DocType.ChangelogContributing]: {
|
|
135
|
+
WebApplication: Tier.Recommended,
|
|
136
|
+
APIMicroservice: Tier.Recommended,
|
|
137
|
+
DataPipeline: Tier.Recommended,
|
|
138
|
+
InfrastructurePlatform: Tier.Recommended,
|
|
139
|
+
MobileApplication: Tier.Recommended,
|
|
140
|
+
AIMLSystem: Tier.Recommended,
|
|
141
|
+
IntegrationConnector: Tier.Recommended,
|
|
142
|
+
ClaudeCodePlugin: Tier.Recommended,
|
|
92
143
|
},
|
|
93
144
|
};
|
|
94
145
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tier-assigner.d.ts","sourceRoot":"","sources":["../../src/gap-analyzer/tier-assigner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAkB,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,cAAc,EAAE,EAC9B,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GACnC,GAAG,EAAE,CA+BP;
|
|
1
|
+
{"version":3,"file":"tier-assigner.d.ts","sourceRoot":"","sources":["../../src/gap-analyzer/tier-assigner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAkB,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,cAAc,EAAE,EAC9B,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GACnC,GAAG,EAAE,CA+BP;AAiHD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -67,19 +67,31 @@ function searchForDocumentationEvidence(breadcrumb, inventory) {
|
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
69
|
* Simple glob pattern matcher
|
|
70
|
+
* Normalizes Windows backslashes to forward slashes so glob patterns
|
|
71
|
+
* that reference path segments (e.g., "** /docs/adr/**") work cross-platform.
|
|
70
72
|
*/
|
|
71
73
|
function matchPattern(filePath, pattern) {
|
|
72
74
|
const regex = patternToRegex(pattern);
|
|
73
|
-
|
|
75
|
+
const normalized = filePath.replace(/\\/g, '/').toLowerCase();
|
|
76
|
+
return regex.test(normalized);
|
|
74
77
|
}
|
|
75
78
|
/**
|
|
76
79
|
* Convert glob pattern to regex
|
|
80
|
+
*
|
|
81
|
+
* Uses a placeholder for `**` to prevent the subsequent `*` → `[^/]*`
|
|
82
|
+
* replacement from clobbering the `*` inside `.*`. A naive two-pass
|
|
83
|
+
* replacement silently produced `.[^/]*` for every `**` pattern,
|
|
84
|
+
* which broke glob matching for every doc type.
|
|
77
85
|
*/
|
|
78
86
|
function patternToRegex(pattern) {
|
|
87
|
+
// Escape regex-special characters first
|
|
79
88
|
const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
89
|
+
// Use a placeholder token that can't appear in a normal path
|
|
90
|
+
const DOUBLE_STAR = '\u0000DOUBLESTAR\u0000';
|
|
80
91
|
const globRegex = escaped
|
|
81
|
-
.replace(/\*\*/g,
|
|
92
|
+
.replace(/\*\*/g, DOUBLE_STAR)
|
|
82
93
|
.replace(/\*/g, '[^/]*')
|
|
94
|
+
.replace(new RegExp(DOUBLE_STAR, 'g'), '.*')
|
|
83
95
|
.replace(/\?/g, '.');
|
|
84
96
|
return new RegExp(`^${globRegex}$`, 'i');
|
|
85
97
|
}
|
package/dist/index.js
CHANGED
|
@@ -50,10 +50,12 @@ const generator_1 = require("./generator");
|
|
|
50
50
|
const templates_1 = require("./templates");
|
|
51
51
|
const extractor_1 = require("./generator/extractor");
|
|
52
52
|
const program = new commander_1.Command();
|
|
53
|
+
const pkgJsonPath = path.resolve(__dirname, '..', 'package.json');
|
|
54
|
+
const pkgVersion = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8')).version;
|
|
53
55
|
program
|
|
54
56
|
.name('vibe-doc')
|
|
55
57
|
.description('AI-powered documentation gap analyzer for any codebase')
|
|
56
|
-
.version(
|
|
58
|
+
.version(pkgVersion);
|
|
57
59
|
/**
|
|
58
60
|
* Scan command: Run artifact scanner and save inventory
|
|
59
61
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-scanner.d.ts","sourceRoot":"","sources":["../../src/scanner/file-scanner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,UAAU,cAAc;IACtB,YAAY,EAAE,eAAe,CAAC;IAC9B,cAAc,EAAE,eAAe,CAAC;IAChC,cAAc,EAAE,eAAe,CAAC;IAChC,aAAa,EAAE,eAAe,CAAC;IAC/B,cAAc,EAAE,eAAe,CAAC;IAChC,WAAW,EAAE,eAAe,CAAC;IAC7B,cAAc,EAAE,eAAe,CAAC;IAChC,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,eAAe,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"file-scanner.d.ts","sourceRoot":"","sources":["../../src/scanner/file-scanner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,UAAU,cAAc;IACtB,YAAY,EAAE,eAAe,CAAC;IAC9B,cAAc,EAAE,eAAe,CAAC;IAChC,cAAc,EAAE,eAAe,CAAC;IAChC,aAAa,EAAE,eAAe,CAAC;IAC/B,cAAc,EAAE,eAAe,CAAC;IAChC,WAAW,EAAE,eAAe,CAAC;IAC7B,cAAc,EAAE,eAAe,CAAC;IAChC,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,eAAe,CAAC;CAC7B;AAmDD,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA2B5E"}
|
|
@@ -46,6 +46,14 @@ function categorizeFile(filePath) {
|
|
|
46
46
|
const n = filePath.replace(/\\/g, '/');
|
|
47
47
|
if (n.endsWith('CLAUDE.md'))
|
|
48
48
|
return 'configAsDocs';
|
|
49
|
+
// Claude Code plugin manifests (plugin.json, marketplace.json inside .claude-plugin/)
|
|
50
|
+
if (n.includes('/.claude-plugin/') && n.endsWith('.json'))
|
|
51
|
+
return 'packageConfigs';
|
|
52
|
+
// SKILL.md files and command docs are plugin surface area
|
|
53
|
+
if (n.match(/\/skills\/[^/]+\/SKILL\.md$/i))
|
|
54
|
+
return 'documentation';
|
|
55
|
+
if (n.match(/\/commands\/[^/]+\.md$/i))
|
|
56
|
+
return 'documentation';
|
|
49
57
|
if (n.includes('/.ai/') || n.includes('/.agent/skills/'))
|
|
50
58
|
return 'agentArtifacts';
|
|
51
59
|
if (n.includes('/.claude/'))
|
|
@@ -64,7 +72,7 @@ function categorizeFile(filePath) {
|
|
|
64
72
|
return 'apiSpecs';
|
|
65
73
|
return 'sourceCode';
|
|
66
74
|
}
|
|
67
|
-
function walkDir(dir, maxDepth =
|
|
75
|
+
function walkDir(dir, maxDepth = 6, currentDepth = 0) {
|
|
68
76
|
const files = [];
|
|
69
77
|
if (currentDepth > maxDepth)
|
|
70
78
|
return files;
|
|
@@ -73,7 +81,7 @@ function walkDir(dir, maxDepth = 4, currentDepth = 0) {
|
|
|
73
81
|
for (const entry of entries) {
|
|
74
82
|
if (EXCLUDE_DIRS.has(entry.name))
|
|
75
83
|
continue;
|
|
76
|
-
if (entry.name.startsWith('.') && entry.name !== '.ai' && entry.name !== '.agent' && entry.name !== '.claude' && entry.name !== '.github')
|
|
84
|
+
if (entry.name.startsWith('.') && entry.name !== '.ai' && entry.name !== '.agent' && entry.name !== '.claude' && entry.name !== '.claude-plugin' && entry.name !== '.github')
|
|
77
85
|
continue;
|
|
78
86
|
const fullPath = path.join(dir, entry.name);
|
|
79
87
|
if (entry.isFile()) {
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: adr
|
|
3
|
+
version: 1.0
|
|
4
|
+
templateVersion: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Architecture Decision Record
|
|
8
|
+
|
|
9
|
+
## Status
|
|
10
|
+
|
|
11
|
+
{{user.status}}
|
|
12
|
+
|
|
13
|
+
<!-- NEEDS INPUT: What is the status of this decision? (Proposed, Accepted, Deprecated, Superseded) -->
|
|
14
|
+
|
|
15
|
+
## Context
|
|
16
|
+
|
|
17
|
+
{{extracted.context}}
|
|
18
|
+
|
|
19
|
+
{{user.context}}
|
|
20
|
+
|
|
21
|
+
<!-- NEEDS INPUT: What is the issue that motivated this decision or any context you should record here? -->
|
|
22
|
+
|
|
23
|
+
## Decision
|
|
24
|
+
|
|
25
|
+
{{extracted.decision}}
|
|
26
|
+
|
|
27
|
+
{{user.decision}}
|
|
28
|
+
|
|
29
|
+
<!-- NEEDS INPUT: What is the change that we're proposing or have agreed to do? -->
|
|
30
|
+
|
|
31
|
+
## Consequences
|
|
32
|
+
|
|
33
|
+
{{extracted.consequences}}
|
|
34
|
+
|
|
35
|
+
{{user.consequences}}
|
|
36
|
+
|
|
37
|
+
<!-- NEEDS INPUT: What becomes easier or more difficult to do because of this change? Include positive and negative consequences. -->
|
|
38
|
+
|
|
39
|
+
## Alternatives
|
|
40
|
+
|
|
41
|
+
{{extracted.alternatives}}
|
|
42
|
+
|
|
43
|
+
{{user.alternatives}}
|
|
44
|
+
|
|
45
|
+
<!-- NEEDS INPUT: What other options did you consider and why were they rejected? -->
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: api-spec
|
|
3
|
+
version: 1.0
|
|
4
|
+
templateVersion: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# API Specification
|
|
8
|
+
|
|
9
|
+
## Base URL
|
|
10
|
+
|
|
11
|
+
{{extracted.base-url}}
|
|
12
|
+
|
|
13
|
+
{{user.base-url}}
|
|
14
|
+
|
|
15
|
+
<!-- NEEDS INPUT: What is the base URL for your API? Include protocol, hostname, and port. -->
|
|
16
|
+
|
|
17
|
+
## Endpoints
|
|
18
|
+
|
|
19
|
+
{{extracted.endpoints}}
|
|
20
|
+
|
|
21
|
+
{{user.endpoints}}
|
|
22
|
+
|
|
23
|
+
<!-- NEEDS INPUT: List your primary endpoints. Include HTTP method, path, and brief description. -->
|
|
24
|
+
|
|
25
|
+
## Request Format
|
|
26
|
+
|
|
27
|
+
{{extracted.request-format}}
|
|
28
|
+
|
|
29
|
+
{{user.request-format}}
|
|
30
|
+
|
|
31
|
+
<!-- NEEDS INPUT: Describe the request format. Include content-type, headers, body structure, and examples. -->
|
|
32
|
+
|
|
33
|
+
## Response Format
|
|
34
|
+
|
|
35
|
+
{{extracted.response-format}}
|
|
36
|
+
|
|
37
|
+
{{user.response-format}}
|
|
38
|
+
|
|
39
|
+
<!-- NEEDS INPUT: Describe the response format. Include status codes, body structure, headers, and examples. -->
|
|
40
|
+
|
|
41
|
+
## Error Handling
|
|
42
|
+
|
|
43
|
+
{{extracted.error-handling}}
|
|
44
|
+
|
|
45
|
+
{{user.error-handling}}
|
|
46
|
+
|
|
47
|
+
<!-- NEEDS INPUT: How do you handle errors? Include error codes, error message format, and common errors. -->
|
|
48
|
+
|
|
49
|
+
## Authentication
|
|
50
|
+
|
|
51
|
+
{{extracted.authentication}}
|
|
52
|
+
|
|
53
|
+
{{user.authentication}}
|
|
54
|
+
|
|
55
|
+
<!-- NEEDS INPUT: How do clients authenticate? Include auth mechanisms, required headers, and token formats. -->
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: changelog-contributing
|
|
3
|
+
version: 1.0
|
|
4
|
+
templateVersion: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Changelog and Contributing
|
|
8
|
+
|
|
9
|
+
## Changelog
|
|
10
|
+
|
|
11
|
+
All notable changes to this project are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
12
|
+
|
|
13
|
+
### Unreleased
|
|
14
|
+
|
|
15
|
+
{{user.unreleased}}
|
|
16
|
+
|
|
17
|
+
<!-- NEEDS INPUT: Changes that have landed on main but haven't shipped in a release yet. Group by Added / Changed / Deprecated / Removed / Fixed / Security. -->
|
|
18
|
+
|
|
19
|
+
### {{user.latestVersion}} — {{user.latestDate}}
|
|
20
|
+
|
|
21
|
+
{{extracted.latestRelease}}
|
|
22
|
+
|
|
23
|
+
{{user.latestRelease}}
|
|
24
|
+
|
|
25
|
+
<!-- NEEDS INPUT: The most recent shipped version. Same Added/Changed/etc. grouping. -->
|
|
26
|
+
|
|
27
|
+
### Prior Releases
|
|
28
|
+
|
|
29
|
+
{{extracted.priorReleases}}
|
|
30
|
+
|
|
31
|
+
{{user.priorReleases}}
|
|
32
|
+
|
|
33
|
+
<!-- NEEDS INPUT: Older releases in reverse chronological order. Keep summaries short — point to git tags or GitHub releases for full diffs. -->
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Contributing
|
|
38
|
+
|
|
39
|
+
### How to Contribute
|
|
40
|
+
|
|
41
|
+
{{user.howToContribute}}
|
|
42
|
+
|
|
43
|
+
<!-- NEEDS INPUT: The high-level contributor path — fork, branch, change, PR. Link to the code of conduct and any contributor license terms. -->
|
|
44
|
+
|
|
45
|
+
### Development Setup
|
|
46
|
+
|
|
47
|
+
{{user.devSetup}}
|
|
48
|
+
|
|
49
|
+
<!-- NEEDS INPUT: What a contributor needs to build and test locally. Prerequisites, install commands, how to run the test suite. This may overlap with the install guide — that's fine, contributors need it in one place. -->
|
|
50
|
+
|
|
51
|
+
### Proposing a Change
|
|
52
|
+
|
|
53
|
+
{{user.proposingChange}}
|
|
54
|
+
|
|
55
|
+
<!-- NEEDS INPUT: Branching strategy, commit message format, PR template expectations, and any required checks (tests, linters, type checks) that must pass. -->
|
|
56
|
+
|
|
57
|
+
### Review Process
|
|
58
|
+
|
|
59
|
+
{{user.reviewProcess}}
|
|
60
|
+
|
|
61
|
+
<!-- NEEDS INPUT: Who reviews PRs, what the turnaround looks like, and what approval is required before merge. -->
|
|
62
|
+
|
|
63
|
+
### Code of Conduct
|
|
64
|
+
|
|
65
|
+
{{user.codeOfConduct}}
|
|
66
|
+
|
|
67
|
+
<!-- NEEDS INPUT: A link to the code of conduct or a short statement of expected behavior. -->
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: data-model
|
|
3
|
+
version: 1.0
|
|
4
|
+
templateVersion: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Data Model
|
|
8
|
+
|
|
9
|
+
## Entity Overview
|
|
10
|
+
|
|
11
|
+
{{extracted.entity-overview}}
|
|
12
|
+
|
|
13
|
+
{{user.entity-overview}}
|
|
14
|
+
|
|
15
|
+
<!-- NEEDS INPUT: What are the main entities/tables in your data model? Include brief descriptions of each. -->
|
|
16
|
+
|
|
17
|
+
## Table Schemas
|
|
18
|
+
|
|
19
|
+
{{extracted.table-schemas}}
|
|
20
|
+
|
|
21
|
+
{{user.table-schemas}}
|
|
22
|
+
|
|
23
|
+
<!-- NEEDS INPUT: Describe the schema for each table. Include column names, types, and descriptions. -->
|
|
24
|
+
|
|
25
|
+
## Relationships
|
|
26
|
+
|
|
27
|
+
{{extracted.relationships}}
|
|
28
|
+
|
|
29
|
+
{{user.relationships}}
|
|
30
|
+
|
|
31
|
+
<!-- NEEDS INPUT: What are the relationships between tables? Include foreign keys and cardinality. -->
|
|
32
|
+
|
|
33
|
+
## Constraints
|
|
34
|
+
|
|
35
|
+
{{extracted.constraints}}
|
|
36
|
+
|
|
37
|
+
{{user.constraints}}
|
|
38
|
+
|
|
39
|
+
<!-- NEEDS INPUT: What constraints and validation rules exist? Include unique constraints, check constraints, and business rules. -->
|
|
40
|
+
|
|
41
|
+
## Indexes
|
|
42
|
+
|
|
43
|
+
{{extracted.indexes}}
|
|
44
|
+
|
|
45
|
+
{{user.indexes}}
|
|
46
|
+
|
|
47
|
+
<!-- NEEDS INPUT: What indexes exist and why? Include primary keys, unique indexes, and performance indexes. -->
|
|
48
|
+
|
|
49
|
+
## Migration Strategy
|
|
50
|
+
|
|
51
|
+
{{extracted.migration-strategy}}
|
|
52
|
+
|
|
53
|
+
{{user.migration-strategy}}
|
|
54
|
+
|
|
55
|
+
<!-- NEEDS INPUT: How do you handle schema migrations? Include versioning, rollback strategy, and zero-downtime deployment. -->
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: deployment-procedure
|
|
3
|
+
version: 1.0
|
|
4
|
+
templateVersion: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Deployment Procedure
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
{{extracted.prerequisites}}
|
|
12
|
+
|
|
13
|
+
{{user.prerequisites}}
|
|
14
|
+
|
|
15
|
+
<!-- NEEDS INPUT: What prerequisites must be met before deployment? Include access, tools, accounts, and configurations. -->
|
|
16
|
+
|
|
17
|
+
## Build Process
|
|
18
|
+
|
|
19
|
+
{{extracted.build-process}}
|
|
20
|
+
|
|
21
|
+
{{user.build-process}}
|
|
22
|
+
|
|
23
|
+
<!-- NEEDS INPUT: What are the steps to build the application? Include compilation, dependency installation, and artifact generation. -->
|
|
24
|
+
|
|
25
|
+
## Environment Setup
|
|
26
|
+
|
|
27
|
+
{{extracted.environment-setup}}
|
|
28
|
+
|
|
29
|
+
{{user.environment-setup}}
|
|
30
|
+
|
|
31
|
+
<!-- NEEDS INPUT: What environment variables, secrets, and configurations are required for each environment? -->
|
|
32
|
+
|
|
33
|
+
## Testing Before Deploy
|
|
34
|
+
|
|
35
|
+
{{extracted.testing-before-deploy}}
|
|
36
|
+
|
|
37
|
+
{{user.testing-before-deploy}}
|
|
38
|
+
|
|
39
|
+
<!-- NEEDS INPUT: What tests and validations run before deployment? Include smoke tests, integration tests, and health checks. -->
|
|
40
|
+
|
|
41
|
+
## Deployment Steps
|
|
42
|
+
|
|
43
|
+
{{extracted.deployment-steps}}
|
|
44
|
+
|
|
45
|
+
{{user.deployment-steps}}
|
|
46
|
+
|
|
47
|
+
<!-- NEEDS INPUT: What are the step-by-step deployment instructions? Include database migrations, service restarts, and traffic shifting. -->
|
|
48
|
+
|
|
49
|
+
## Post-Deployment Checks
|
|
50
|
+
|
|
51
|
+
{{extracted.post-deployment-checks}}
|
|
52
|
+
|
|
53
|
+
{{user.post-deployment-checks}}
|
|
54
|
+
|
|
55
|
+
<!-- NEEDS INPUT: What checks verify the deployment was successful? Include health checks, endpoint tests, and monitoring. -->
|
|
56
|
+
|
|
57
|
+
## Rollback Procedure
|
|
58
|
+
|
|
59
|
+
{{extracted.rollback-procedure}}
|
|
60
|
+
|
|
61
|
+
{{user.rollback-procedure}}
|
|
62
|
+
|
|
63
|
+
<!-- NEEDS INPUT: How do you rollback to the previous version? Include steps, data rollback, and communication plan. -->
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: install-guide
|
|
3
|
+
version: 1.0
|
|
4
|
+
templateVersion: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Installation Guide
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
{{extracted.prerequisites}}
|
|
12
|
+
|
|
13
|
+
{{user.prerequisites}}
|
|
14
|
+
|
|
15
|
+
<!-- NEEDS INPUT: What does a user need before they start? OS, runtime versions (Node 18+, Python 3.11+, etc.), required CLI tools, accounts, API keys. Be specific about minimum versions. -->
|
|
16
|
+
|
|
17
|
+
## Install Steps
|
|
18
|
+
|
|
19
|
+
{{extracted.installSteps}}
|
|
20
|
+
|
|
21
|
+
{{user.installSteps}}
|
|
22
|
+
|
|
23
|
+
<!-- NEEDS INPUT: The exact ordered steps. For each step, include the command to run and the expected outcome. If there are multiple install paths (npm vs. git clone vs. marketplace), list them all. -->
|
|
24
|
+
|
|
25
|
+
## Verification
|
|
26
|
+
|
|
27
|
+
{{user.verification}}
|
|
28
|
+
|
|
29
|
+
<!-- NEEDS INPUT: How does a user confirm the install worked? A command they can run (e.g., `vibe-doc --version`), a health-check URL, or a first-use command that should produce expected output. -->
|
|
30
|
+
|
|
31
|
+
## Configuration
|
|
32
|
+
|
|
33
|
+
{{user.configuration}}
|
|
34
|
+
|
|
35
|
+
<!-- NEEDS INPUT: Any required configuration after install — env vars, config files, credentials. If none are required, say so explicitly. -->
|
|
36
|
+
|
|
37
|
+
## Troubleshooting
|
|
38
|
+
|
|
39
|
+
{{extracted.troubleshooting}}
|
|
40
|
+
|
|
41
|
+
{{user.troubleshooting}}
|
|
42
|
+
|
|
43
|
+
<!-- NEEDS INPUT: The three to five most common installation failures and their fixes. Real users have hit these problems — write the fix, not a generic "contact support." -->
|
|
44
|
+
|
|
45
|
+
## Uninstalling
|
|
46
|
+
|
|
47
|
+
{{user.uninstall}}
|
|
48
|
+
|
|
49
|
+
<!-- NEEDS INPUT: How to cleanly remove the project. Include any config files or data directories that need manual cleanup. -->
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: readme
|
|
3
|
+
version: 1.0
|
|
4
|
+
templateVersion: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# {{user.projectName}}
|
|
8
|
+
|
|
9
|
+
{{extracted.tagline}}
|
|
10
|
+
|
|
11
|
+
{{user.tagline}}
|
|
12
|
+
|
|
13
|
+
<!-- NEEDS INPUT: One-sentence description of what this project is and who it's for. -->
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
{{extracted.overview}}
|
|
18
|
+
|
|
19
|
+
{{user.overview}}
|
|
20
|
+
|
|
21
|
+
<!-- NEEDS INPUT: A short paragraph explaining what the project does, the problem it solves, and the audience. Keep it under 100 words. -->
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
{{extracted.installation}}
|
|
26
|
+
|
|
27
|
+
{{user.installation}}
|
|
28
|
+
|
|
29
|
+
<!-- NEEDS INPUT: The shortest path to getting the project installed and working. Include prerequisites and the exact install command. -->
|
|
30
|
+
|
|
31
|
+
## Usage
|
|
32
|
+
|
|
33
|
+
{{extracted.usage}}
|
|
34
|
+
|
|
35
|
+
{{user.usage}}
|
|
36
|
+
|
|
37
|
+
<!-- NEEDS INPUT: A minimal working example showing the most common use case. Prefer a code block or a short step list over prose. -->
|
|
38
|
+
|
|
39
|
+
## Examples
|
|
40
|
+
|
|
41
|
+
{{user.examples}}
|
|
42
|
+
|
|
43
|
+
<!-- NEEDS INPUT: Two or three additional examples covering the next-most-common use cases. Link to a /docs or /examples folder if one exists. -->
|
|
44
|
+
|
|
45
|
+
## Documentation
|
|
46
|
+
|
|
47
|
+
{{user.documentation}}
|
|
48
|
+
|
|
49
|
+
<!-- NEEDS INPUT: Where does a reader go next? Link to fuller docs, a command reference, a changelog, or a contributing guide. -->
|
|
50
|
+
|
|
51
|
+
## License
|
|
52
|
+
|
|
53
|
+
{{user.license}}
|
|
54
|
+
|
|
55
|
+
<!-- NEEDS INPUT: The project's license (usually one line — e.g. "MIT" — and a link to LICENSE). -->
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: runbook
|
|
3
|
+
version: 1.0
|
|
4
|
+
templateVersion: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Runbook
|
|
8
|
+
|
|
9
|
+
## Service Overview
|
|
10
|
+
|
|
11
|
+
{{extracted.service-overview}}
|
|
12
|
+
|
|
13
|
+
{{user.service-overview}}
|
|
14
|
+
|
|
15
|
+
<!-- NEEDS INPUT: What does this service do? What is its primary responsibility? -->
|
|
16
|
+
|
|
17
|
+
## Startup Procedure
|
|
18
|
+
|
|
19
|
+
{{extracted.startup-procedure}}
|
|
20
|
+
|
|
21
|
+
{{user.startup-procedure}}
|
|
22
|
+
|
|
23
|
+
<!-- NEEDS INPUT: What are the steps to start the service? Include environment setup, dependencies, configuration. -->
|
|
24
|
+
|
|
25
|
+
## Health Checks
|
|
26
|
+
|
|
27
|
+
{{extracted.health-checks}}
|
|
28
|
+
|
|
29
|
+
{{user.health-checks}}
|
|
30
|
+
|
|
31
|
+
<!-- NEEDS INPUT: How do you verify the service is healthy? What are the key metrics or checks? -->
|
|
32
|
+
|
|
33
|
+
## Common Issues
|
|
34
|
+
|
|
35
|
+
{{extracted.common-issues}}
|
|
36
|
+
|
|
37
|
+
{{user.common-issues}}
|
|
38
|
+
|
|
39
|
+
<!-- NEEDS INPUT: What are the most common problems and their solutions? -->
|
|
40
|
+
|
|
41
|
+
## Rollback Procedure
|
|
42
|
+
|
|
43
|
+
{{extracted.rollback-procedure}}
|
|
44
|
+
|
|
45
|
+
{{user.rollback-procedure}}
|
|
46
|
+
|
|
47
|
+
<!-- NEEDS INPUT: How do you roll back to a previous version? What steps are required? -->
|
|
48
|
+
|
|
49
|
+
## Escalation Path
|
|
50
|
+
|
|
51
|
+
{{extracted.escalation-path}}
|
|
52
|
+
|
|
53
|
+
{{user.escalation-path}}
|
|
54
|
+
|
|
55
|
+
<!-- NEEDS INPUT: Who should be contacted for different severity levels? What is the on-call process? -->
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: skill-command-reference
|
|
3
|
+
version: 1.0
|
|
4
|
+
templateVersion: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill and Command Reference
|
|
8
|
+
|
|
9
|
+
This document lists every skill and command this plugin exposes, what each one does, and how to invoke it.
|
|
10
|
+
|
|
11
|
+
## Skills
|
|
12
|
+
|
|
13
|
+
{{extracted.skillList}}
|
|
14
|
+
|
|
15
|
+
{{user.skillList}}
|
|
16
|
+
|
|
17
|
+
<!-- NEEDS INPUT: One entry per skill. For each: the skill name, a one-sentence description, when a user should reach for it, and a pointer to the underlying SKILL.md file if applicable. -->
|
|
18
|
+
|
|
19
|
+
### Skill: {{user.skillName}}
|
|
20
|
+
|
|
21
|
+
**Purpose:** {{user.skillPurpose}}
|
|
22
|
+
|
|
23
|
+
**When to use:** {{user.skillWhenToUse}}
|
|
24
|
+
|
|
25
|
+
**Inputs:** {{user.skillInputs}}
|
|
26
|
+
|
|
27
|
+
**Example:**
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
{{user.skillExample}}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
<!-- NEEDS INPUT: Repeat this block for each skill the plugin ships. -->
|
|
34
|
+
|
|
35
|
+
## Commands
|
|
36
|
+
|
|
37
|
+
{{extracted.commandList}}
|
|
38
|
+
|
|
39
|
+
{{user.commandList}}
|
|
40
|
+
|
|
41
|
+
<!-- NEEDS INPUT: One entry per slash command. For each: the command, its purpose, arguments (required and optional), and a minimal example invocation. -->
|
|
42
|
+
|
|
43
|
+
### Command: `{{user.commandName}}`
|
|
44
|
+
|
|
45
|
+
**Purpose:** {{user.commandPurpose}}
|
|
46
|
+
|
|
47
|
+
**Syntax:** `/{{user.commandName}} [arguments]`
|
|
48
|
+
|
|
49
|
+
**Arguments:**
|
|
50
|
+
|
|
51
|
+
{{user.commandArguments}}
|
|
52
|
+
|
|
53
|
+
<!-- NEEDS INPUT: List each argument with name, type, required/optional, and a one-line description. -->
|
|
54
|
+
|
|
55
|
+
**Example:**
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
{{user.commandExample}}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Output:**
|
|
62
|
+
|
|
63
|
+
{{user.commandOutput}}
|
|
64
|
+
|
|
65
|
+
<!-- NEEDS INPUT: What the user sees when the command succeeds. A screenshot, an expected text snippet, or a description of the artifact created. -->
|
|
66
|
+
|
|
67
|
+
## Composition
|
|
68
|
+
|
|
69
|
+
{{user.composition}}
|
|
70
|
+
|
|
71
|
+
<!-- NEEDS INPUT: If the plugin's commands chain together (e.g., /scan → /report → /generate), document the typical workflow here. Show the order and what each step hands to the next. -->
|
|
72
|
+
|
|
73
|
+
## Errors and Edge Cases
|
|
74
|
+
|
|
75
|
+
{{user.errors}}
|
|
76
|
+
|
|
77
|
+
<!-- NEEDS INPUT: The most common failure modes (missing prerequisites, invalid inputs, environment issues) and how the user should respond. -->
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: test-plan
|
|
3
|
+
version: 1.0
|
|
4
|
+
templateVersion: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Test Plan
|
|
8
|
+
|
|
9
|
+
## Test Strategy
|
|
10
|
+
|
|
11
|
+
{{extracted.test-strategy}}
|
|
12
|
+
|
|
13
|
+
{{user.test-strategy}}
|
|
14
|
+
|
|
15
|
+
<!-- NEEDS INPUT: What is your overall testing strategy? Include testing levels, approach, and priorities. -->
|
|
16
|
+
|
|
17
|
+
## Unit Tests
|
|
18
|
+
|
|
19
|
+
{{extracted.unit-tests}}
|
|
20
|
+
|
|
21
|
+
{{user.unit-tests}}
|
|
22
|
+
|
|
23
|
+
<!-- NEEDS INPUT: What components and functions are covered by unit tests? Include test coverage goals. -->
|
|
24
|
+
|
|
25
|
+
## Integration Tests
|
|
26
|
+
|
|
27
|
+
{{extracted.integration-tests}}
|
|
28
|
+
|
|
29
|
+
{{user.integration-tests}}
|
|
30
|
+
|
|
31
|
+
<!-- NEEDS INPUT: What system interactions are tested? Include database, APIs, and third-party services. -->
|
|
32
|
+
|
|
33
|
+
## E2E Tests
|
|
34
|
+
|
|
35
|
+
{{extracted.e2e-tests}}
|
|
36
|
+
|
|
37
|
+
{{user.e2e-tests}}
|
|
38
|
+
|
|
39
|
+
<!-- NEEDS INPUT: What critical user workflows are tested end-to-end? Include scenarios and acceptance criteria. -->
|
|
40
|
+
|
|
41
|
+
## Performance Tests
|
|
42
|
+
|
|
43
|
+
{{extracted.performance-tests}}
|
|
44
|
+
|
|
45
|
+
{{user.performance-tests}}
|
|
46
|
+
|
|
47
|
+
<!-- NEEDS INPUT: What performance characteristics are tested? Include load tests, latency targets, and throughput. -->
|
|
48
|
+
|
|
49
|
+
## Coverage Targets
|
|
50
|
+
|
|
51
|
+
{{extracted.coverage-targets}}
|
|
52
|
+
|
|
53
|
+
{{user.coverage-targets}}
|
|
54
|
+
|
|
55
|
+
<!-- NEEDS INPUT: What are your code coverage targets? Include overall target and critical areas. -->
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
docType: threat-model
|
|
3
|
+
version: 1.0
|
|
4
|
+
templateVersion: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Threat Model
|
|
8
|
+
|
|
9
|
+
## Asset Scope
|
|
10
|
+
|
|
11
|
+
{{extracted.asset-scope}}
|
|
12
|
+
|
|
13
|
+
{{user.asset-scope}}
|
|
14
|
+
|
|
15
|
+
<!-- NEEDS INPUT: What are the valuable assets you need to protect? Include data, infrastructure, and systems. -->
|
|
16
|
+
|
|
17
|
+
## Threat Actors
|
|
18
|
+
|
|
19
|
+
{{extracted.threat-actors}}
|
|
20
|
+
|
|
21
|
+
{{user.threat-actors}}
|
|
22
|
+
|
|
23
|
+
<!-- NEEDS INPUT: Who are the potential threat actors? (e.g., external attackers, malicious insiders, nation-states) -->
|
|
24
|
+
|
|
25
|
+
## Threat Scenarios
|
|
26
|
+
|
|
27
|
+
{{extracted.threat-scenarios}}
|
|
28
|
+
|
|
29
|
+
{{user.threat-scenarios}}
|
|
30
|
+
|
|
31
|
+
<!-- NEEDS INPUT: What are the specific threat scenarios you are concerned about? How might they compromise your assets? -->
|
|
32
|
+
|
|
33
|
+
## Mitigations
|
|
34
|
+
|
|
35
|
+
{{extracted.mitigations}}
|
|
36
|
+
|
|
37
|
+
{{user.mitigations}}
|
|
38
|
+
|
|
39
|
+
<!-- NEEDS INPUT: What controls do you have in place to mitigate these threats? Include technical, process, and organizational controls. -->
|
|
40
|
+
|
|
41
|
+
## Residual Risks
|
|
42
|
+
|
|
43
|
+
{{extracted.residual-risks}}
|
|
44
|
+
|
|
45
|
+
{{user.residual-risks}}
|
|
46
|
+
|
|
47
|
+
<!-- NEEDS INPUT: What risks remain after implementing mitigations? What is your risk tolerance? -->
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAuBvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAuBvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAgBxC;AAED,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/templates/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@esthernandez/vibe-doc",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "AI-powered documentation gap analyzer and generator for modern codebases. Scans your project, classifies your architecture, and generates professional docs from your existing artifacts.",
|
|
5
5
|
"author": "626Labs LLC",
|
|
6
6
|
"license": "MIT",
|