@su-record/vibe 3.2.19 → 3.2.21

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.
Files changed (49) hide show
  1. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  2. package/dist/cli/setup/ProjectSetup.js +13 -1
  3. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  4. package/dist/tools/dispatch/deterministicSignals.d.ts.map +1 -1
  5. package/dist/tools/dispatch/deterministicSignals.js +15 -10
  6. package/dist/tools/dispatch/deterministicSignals.js.map +1 -1
  7. package/dist/tools/dispatch/vibePaths.d.ts +7 -0
  8. package/dist/tools/dispatch/vibePaths.d.ts.map +1 -0
  9. package/dist/tools/dispatch/vibePaths.js +35 -0
  10. package/dist/tools/dispatch/vibePaths.js.map +1 -0
  11. package/dist/tools/spec/validateSpecDocument.d.ts.map +1 -1
  12. package/dist/tools/spec/validateSpecDocument.js +33 -6
  13. package/dist/tools/spec/validateSpecDocument.js.map +1 -1
  14. package/hooks/scripts/code-check.js +90 -16
  15. package/hooks/scripts/lib/anchor.js +15 -4
  16. package/hooks/scripts/lib/inbox.js +10 -2
  17. package/package.json +1 -1
  18. package/dist/infra/lib/DeepInit.d.ts +0 -60
  19. package/dist/infra/lib/DeepInit.d.ts.map +0 -1
  20. package/dist/infra/lib/DeepInit.js +0 -245
  21. package/dist/infra/lib/DeepInit.js.map +0 -1
  22. package/dist/infra/lib/FrameworkDetector.d.ts +0 -56
  23. package/dist/infra/lib/FrameworkDetector.d.ts.map +0 -1
  24. package/dist/infra/lib/FrameworkDetector.js +0 -287
  25. package/dist/infra/lib/FrameworkDetector.js.map +0 -1
  26. package/dist/infra/lib/ModelRouter.d.ts +0 -48
  27. package/dist/infra/lib/ModelRouter.d.ts.map +0 -1
  28. package/dist/infra/lib/ModelRouter.js +0 -216
  29. package/dist/infra/lib/ModelRouter.js.map +0 -1
  30. package/dist/infra/lib/ReviewRace.d.ts +0 -86
  31. package/dist/infra/lib/ReviewRace.d.ts.map +0 -1
  32. package/dist/infra/lib/ReviewRace.js +0 -454
  33. package/dist/infra/lib/ReviewRace.js.map +0 -1
  34. package/dist/infra/lib/RuleBuildSystem.d.ts +0 -157
  35. package/dist/infra/lib/RuleBuildSystem.d.ts.map +0 -1
  36. package/dist/infra/lib/RuleBuildSystem.js +0 -550
  37. package/dist/infra/lib/RuleBuildSystem.js.map +0 -1
  38. package/dist/infra/lib/SkillQualityGate.d.ts +0 -42
  39. package/dist/infra/lib/SkillQualityGate.d.ts.map +0 -1
  40. package/dist/infra/lib/SkillQualityGate.js +0 -220
  41. package/dist/infra/lib/SkillQualityGate.js.map +0 -1
  42. package/dist/infra/lib/SkillRepository.d.ts +0 -134
  43. package/dist/infra/lib/SkillRepository.d.ts.map +0 -1
  44. package/dist/infra/lib/SkillRepository.js +0 -500
  45. package/dist/infra/lib/SkillRepository.js.map +0 -1
  46. package/dist/infra/lib/UltraQA.d.ts +0 -89
  47. package/dist/infra/lib/UltraQA.d.ts.map +0 -1
  48. package/dist/infra/lib/UltraQA.js +0 -301
  49. package/dist/infra/lib/UltraQA.js.map +0 -1
@@ -1,550 +0,0 @@
1
- /**
2
- * Rule Build System - Compile individual rule files into consolidated AGENTS.md
3
- * Inspired by agent-skills architecture
4
- */
5
- import { readFile, writeFile, readdir } from 'fs/promises';
6
- import { join, basename } from 'path';
7
- export const IMPACT_ORDER = {
8
- 'CRITICAL': 0,
9
- 'HIGH': 1,
10
- 'MEDIUM-HIGH': 2,
11
- 'MEDIUM': 3,
12
- 'LOW-MEDIUM': 4,
13
- 'LOW': 5
14
- };
15
- /**
16
- * Parse YAML frontmatter from markdown file
17
- */
18
- function parseFrontmatter(content) {
19
- const frontmatter = {};
20
- let body = content;
21
- if (content.startsWith('---')) {
22
- const endIndex = content.indexOf('---', 3);
23
- if (endIndex !== -1) {
24
- const frontmatterText = content.slice(3, endIndex).trim();
25
- frontmatterText.split('\n').forEach(line => {
26
- const colonIndex = line.indexOf(':');
27
- if (colonIndex !== -1) {
28
- const key = line.slice(0, colonIndex).trim();
29
- const value = line.slice(colonIndex + 1).trim().replace(/^["']|["']$/g, '');
30
- frontmatter[key] = value;
31
- }
32
- });
33
- body = content.slice(endIndex + 3).trim();
34
- }
35
- }
36
- return { frontmatter, body };
37
- }
38
- /**
39
- * Parse a rule markdown file
40
- */
41
- export async function parseRuleFile(filePath) {
42
- const rawContent = await readFile(filePath, 'utf-8');
43
- const content = rawContent.replace(/\r\n/g, '\n'); // Normalize line endings
44
- const { frontmatter, body } = parseFrontmatter(content);
45
- const lines = body.split('\n');
46
- // Extract title (first ## heading)
47
- let title = '';
48
- let titleLine = 0;
49
- for (let i = 0; i < lines.length; i++) {
50
- if (lines[i].startsWith('##')) {
51
- title = lines[i].replace(/^##+\s*/, '').trim();
52
- titleLine = i;
53
- break;
54
- }
55
- }
56
- let impact = 'MEDIUM';
57
- let impactDescription = '';
58
- let explanation = '';
59
- const examples = [];
60
- const references = [];
61
- let currentExample = null;
62
- let inCodeBlock = false;
63
- let codeBlockLanguage = 'typescript';
64
- let codeBlockContent = [];
65
- let afterCodeBlock = false;
66
- let additionalText = [];
67
- for (let i = titleLine + 1; i < lines.length; i++) {
68
- const line = lines[i];
69
- // Impact line
70
- if (line.includes('**Impact:')) {
71
- const match = line.match(/\*\*Impact:\s*(\w+(?:-\w+)?)\s*(?:\(([^)]+)\))?/i);
72
- if (match) {
73
- impact = match[1].toUpperCase();
74
- impactDescription = match[2] || '';
75
- }
76
- continue;
77
- }
78
- // Code block handling
79
- if (line.startsWith('```')) {
80
- if (inCodeBlock) {
81
- if (currentExample) {
82
- currentExample.code = codeBlockContent.join('\n');
83
- currentExample.language = codeBlockLanguage;
84
- }
85
- codeBlockContent = [];
86
- inCodeBlock = false;
87
- afterCodeBlock = true;
88
- }
89
- else {
90
- inCodeBlock = true;
91
- codeBlockLanguage = line.slice(3).trim() || 'typescript';
92
- codeBlockContent = [];
93
- afterCodeBlock = false;
94
- }
95
- continue;
96
- }
97
- if (inCodeBlock) {
98
- codeBlockContent.push(line);
99
- continue;
100
- }
101
- // Example label detection
102
- const labelMatch = line.match(/^\*\*([^:]+?):\*?\*?$/);
103
- if (labelMatch) {
104
- if (currentExample) {
105
- if (additionalText.length > 0) {
106
- currentExample.additionalText = additionalText.join('\n\n');
107
- additionalText = [];
108
- }
109
- examples.push(currentExample);
110
- }
111
- afterCodeBlock = false;
112
- const fullLabel = labelMatch[1].trim();
113
- const descMatch = fullLabel.match(/^([A-Za-z]+(?:\s+[A-Za-z]+)*)\s*\(([^()]+)\)$/);
114
- currentExample = {
115
- label: descMatch ? descMatch[1].trim() : fullLabel,
116
- description: descMatch ? descMatch[2].trim() : undefined,
117
- code: '',
118
- language: codeBlockLanguage,
119
- };
120
- continue;
121
- }
122
- // Reference links
123
- if (line.startsWith('Reference:') || line.startsWith('References:')) {
124
- if (currentExample) {
125
- if (additionalText.length > 0) {
126
- currentExample.additionalText = additionalText.join('\n\n');
127
- additionalText = [];
128
- }
129
- examples.push(currentExample);
130
- currentExample = null;
131
- }
132
- const refMatch = line.match(/\[([^\]]+)\]\(([^)]+)\)/g);
133
- if (refMatch) {
134
- refMatch.forEach(ref => {
135
- const m = ref.match(/\[([^\]]+)\]\(([^)]+)\)/);
136
- if (m)
137
- references.push(m[2]);
138
- });
139
- }
140
- continue;
141
- }
142
- // Regular text
143
- if (line.trim() && !line.startsWith('#')) {
144
- if (!currentExample && !inCodeBlock) {
145
- explanation += (explanation ? '\n\n' : '') + line;
146
- }
147
- else if (currentExample && afterCodeBlock) {
148
- additionalText.push(line);
149
- }
150
- }
151
- }
152
- // Handle last example
153
- if (currentExample) {
154
- if (additionalText.length > 0) {
155
- currentExample.additionalText = additionalText.join('\n\n');
156
- }
157
- examples.push(currentExample);
158
- }
159
- // Section mapping from filename prefix
160
- const filename = basename(filePath);
161
- const sectionMap = {
162
- security: 1,
163
- performance: 2,
164
- architecture: 3,
165
- complexity: 4,
166
- testing: 5,
167
- typescript: 6,
168
- react: 7,
169
- advanced: 8,
170
- };
171
- const area = filename.split('-')[0];
172
- const section = frontmatter.section ? parseInt(frontmatter.section) : (sectionMap[area] || 0);
173
- const rule = {
174
- id: '',
175
- title: frontmatter.title || title,
176
- section,
177
- impact: frontmatter.impact || impact,
178
- impactDescription: frontmatter.impactDescription || impactDescription,
179
- explanation: explanation.trim(),
180
- examples,
181
- references: frontmatter.references
182
- ? frontmatter.references.split(',').map(r => r.trim())
183
- : references,
184
- tags: frontmatter.tags
185
- ? frontmatter.tags.split(',').map(t => t.trim())
186
- : undefined,
187
- };
188
- return { section, rule };
189
- }
190
- /**
191
- * Generate markdown from sections
192
- */
193
- export function generateMarkdown(sections, metadata) {
194
- let md = `# ${metadata.title}\n\n`;
195
- md += `**Version ${metadata.version}**\n`;
196
- if (metadata.organization) {
197
- md += `${metadata.organization}\n`;
198
- }
199
- md += `${metadata.date}\n\n`;
200
- md += `> **Note:**\n`;
201
- md += `> This document is for AI agents and LLMs to follow when maintaining,\n`;
202
- md += `> generating, or refactoring code. Optimized for automation.\n\n`;
203
- md += `---\n\n`;
204
- md += `## Abstract\n\n`;
205
- md += `${metadata.abstract}\n\n`;
206
- md += `---\n\n`;
207
- md += `## Table of Contents\n\n`;
208
- // Generate TOC
209
- sections.forEach(section => {
210
- const anchor = `${section.number}-${section.title.toLowerCase().replace(/\s+/g, '-')}`;
211
- md += `${section.number}. [${section.title}](#${anchor}) — **${section.impact}**\n`;
212
- section.rules.forEach(rule => {
213
- const ruleAnchor = `${rule.id}-${rule.title}`.toLowerCase().replace(/\s+/g, '-').replace(/[^\w-]/g, '');
214
- md += ` - ${rule.id} [${rule.title}](#${ruleAnchor})\n`;
215
- });
216
- });
217
- md += `\n---\n\n`;
218
- // Generate sections
219
- sections.forEach(section => {
220
- md += `## ${section.number}. ${section.title}\n\n`;
221
- md += `**Impact: ${section.impact}${section.impactDescription ? ` (${section.impactDescription})` : ''}**\n\n`;
222
- if (section.introduction) {
223
- md += `${section.introduction}\n\n`;
224
- }
225
- section.rules.forEach(rule => {
226
- md += `### ${rule.id} ${rule.title}\n\n`;
227
- md += `**Impact: ${rule.impact}${rule.impactDescription ? ` (${rule.impactDescription})` : ''}**\n\n`;
228
- md += `${rule.explanation}\n\n`;
229
- rule.examples.forEach(example => {
230
- if (example.description) {
231
- md += `**${example.label}: ${example.description}**\n\n`;
232
- }
233
- else {
234
- md += `**${example.label}:**\n\n`;
235
- }
236
- if (example.code && example.code.trim()) {
237
- md += `\`\`\`${example.language || 'typescript'}\n`;
238
- md += `${example.code}\n`;
239
- md += `\`\`\`\n\n`;
240
- }
241
- if (example.additionalText) {
242
- md += `${example.additionalText}\n\n`;
243
- }
244
- });
245
- if (rule.references && rule.references.length > 0) {
246
- md += `Reference: ${rule.references.map(ref => `[${ref}](${ref})`).join(', ')}\n\n`;
247
- }
248
- });
249
- md += `---\n\n`;
250
- });
251
- // Add references section
252
- if (metadata.references && metadata.references.length > 0) {
253
- md += `## References\n\n`;
254
- metadata.references.forEach((ref, i) => {
255
- md += `${i + 1}. [${ref}](${ref})\n`;
256
- });
257
- }
258
- return md;
259
- }
260
- /**
261
- * Build AGENTS.md from individual rule files
262
- */
263
- export async function buildRulesDocument(rulesDir, outputFile, metadata) {
264
- const files = await readdir(rulesDir);
265
- const ruleFiles = files.filter(f => f.endsWith('.md') && !f.startsWith('_') && f !== 'README.md').sort();
266
- const ruleData = [];
267
- for (const file of ruleFiles) {
268
- const filePath = join(rulesDir, file);
269
- try {
270
- const parsed = await parseRuleFile(filePath);
271
- ruleData.push(parsed);
272
- }
273
- catch (error) {
274
- console.error(`Error parsing ${file}:`, error);
275
- }
276
- }
277
- // Group by section
278
- const sectionsMap = new Map();
279
- ruleData.forEach(({ section, rule }) => {
280
- if (!sectionsMap.has(section)) {
281
- const sectionMeta = metadata.sectionMeta?.[section];
282
- sectionsMap.set(section, {
283
- number: section,
284
- title: sectionMeta?.title || `Section ${section}`,
285
- impact: sectionMeta?.impact || rule.impact,
286
- introduction: sectionMeta?.introduction,
287
- rules: [],
288
- });
289
- }
290
- sectionsMap.get(section).rules.push(rule);
291
- });
292
- // Sort rules and assign IDs
293
- sectionsMap.forEach(section => {
294
- section.rules.sort((a, b) => a.title.localeCompare(b.title, 'en-US'));
295
- section.rules.forEach((rule, index) => {
296
- rule.id = `${section.number}.${index + 1}`;
297
- rule.subsection = index + 1;
298
- });
299
- });
300
- const sections = Array.from(sectionsMap.values()).sort((a, b) => a.number - b.number);
301
- const markdown = generateMarkdown(sections, {
302
- version: metadata.version,
303
- title: metadata.title,
304
- organization: metadata.organization,
305
- date: metadata.date || new Date().toLocaleDateString('en-US', { month: 'long', year: 'numeric' }),
306
- abstract: metadata.abstract,
307
- references: metadata.references,
308
- });
309
- await writeFile(outputFile, markdown, 'utf-8');
310
- return { sections: sections.length, rules: ruleData.length };
311
- }
312
- /**
313
- * Extract test cases from rules for LLM evaluation
314
- */
315
- export function extractTestCases(rules) {
316
- const testCases = [];
317
- rules.forEach(rule => {
318
- rule.examples.forEach(example => {
319
- const label = example.label.toLowerCase();
320
- const isBad = label.includes('incorrect') || label.includes('wrong') || label.includes('bad');
321
- const isGood = label.includes('correct') || label.includes('good');
322
- if ((isBad || isGood) && example.code.trim()) {
323
- testCases.push({
324
- ruleId: rule.id,
325
- ruleTitle: rule.title,
326
- type: isBad ? 'bad' : 'good',
327
- code: example.code,
328
- language: example.language || 'typescript',
329
- description: example.description || `${example.label} example for ${rule.title}`,
330
- });
331
- }
332
- });
333
- });
334
- return testCases;
335
- }
336
- /**
337
- * Extract test cases from rules directory
338
- */
339
- export async function extractTestCasesFromDir(rulesDir, outputFile) {
340
- const files = await readdir(rulesDir);
341
- const ruleFiles = files.filter(f => f.endsWith('.md') && !f.startsWith('_') && f !== 'README.md');
342
- const allTestCases = [];
343
- for (const file of ruleFiles) {
344
- const filePath = join(rulesDir, file);
345
- try {
346
- const { rule } = await parseRuleFile(filePath);
347
- rule.id = file.replace('.md', ''); // Temporary ID
348
- const testCases = extractTestCases([rule]);
349
- allTestCases.push(...testCases);
350
- }
351
- catch (error) {
352
- console.error(`Error processing ${file}:`, error);
353
- }
354
- }
355
- await writeFile(outputFile, JSON.stringify(allTestCases, null, 2), 'utf-8');
356
- return {
357
- total: allTestCases.length,
358
- bad: allTestCases.filter(tc => tc.type === 'bad').length,
359
- good: allTestCases.filter(tc => tc.type === 'good').length,
360
- };
361
- }
362
- /**
363
- * Validate rule file structure
364
- */
365
- export function validateRule(rule) {
366
- const errors = [];
367
- if (!rule.title)
368
- errors.push('Missing title');
369
- if (!rule.explanation)
370
- errors.push('Missing explanation');
371
- if (!rule.impact)
372
- errors.push('Missing impact level');
373
- if (rule.examples.length === 0)
374
- errors.push('No examples provided');
375
- const hasIncorrect = rule.examples.some(e => e.label.toLowerCase().includes('incorrect') || e.label.toLowerCase().includes('bad'));
376
- const hasCorrect = rule.examples.some(e => e.label.toLowerCase().includes('correct') || e.label.toLowerCase().includes('good'));
377
- if (!hasIncorrect && !hasCorrect) {
378
- errors.push('Should have at least one Incorrect or Correct example');
379
- }
380
- return { valid: errors.length === 0, errors };
381
- }
382
- /**
383
- * Get impact level color for display
384
- */
385
- export function getImpactColor(impact) {
386
- switch (impact) {
387
- case 'CRITICAL': return '\x1b[31m'; // Red
388
- case 'HIGH': return '\x1b[33m'; // Yellow
389
- case 'MEDIUM-HIGH': return '\x1b[33m';
390
- case 'MEDIUM': return '\x1b[36m'; // Cyan
391
- case 'LOW-MEDIUM': return '\x1b[36m';
392
- case 'LOW': return '\x1b[32m'; // Green
393
- default: return '\x1b[0m';
394
- }
395
- }
396
- /**
397
- * Compare two impact levels
398
- */
399
- export function compareImpact(a, b) {
400
- return IMPACT_ORDER[a] - IMPACT_ORDER[b];
401
- }
402
- // --- Rules TDD (Pressure Testing) ---
403
- const DEFAULT_PRESSURE_CONFIG = {
404
- minExamples: 2,
405
- requireBothTypes: true,
406
- requireRationalization: false,
407
- minCodeLength: 20,
408
- };
409
- const RATIONALIZATION_KEYWORDS = [
410
- 'excuse', 'why wrong', 'avoid', 'rationalization',
411
- '변명', '왜 틀렸', '합리화', '회피',
412
- ];
413
- /**
414
- * Pressure-test a single rule for completeness and quality
415
- * Returns weighted score (0-100) with 70+ = passed
416
- */
417
- export function pressureTestRule(rule, config = {}) {
418
- const cfg = { ...DEFAULT_PRESSURE_CONFIG, ...config };
419
- const issues = [];
420
- // Check 1: Has examples (20 points)
421
- const hasExamples = rule.examples.length >= 1;
422
- if (!hasExamples)
423
- issues.push('No examples provided');
424
- // Check 2: Has both Incorrect + Correct (25 points)
425
- const hasIncorrect = rule.examples.some(e => /incorrect|wrong|bad|❌/i.test(e.label));
426
- const hasCorrect = rule.examples.some(e => /correct|good|✅/i.test(e.label));
427
- const hasBothTypes = hasIncorrect && hasCorrect;
428
- if (!hasBothTypes)
429
- issues.push('Missing Incorrect or Correct example');
430
- // Check 3: Has rationalization counters (20 points)
431
- const fullText = `${rule.explanation} ${rule.examples.map(e => e.code).join(' ')}`;
432
- const hasRationalization = RATIONALIZATION_KEYWORDS.some(kw => fullText.toLowerCase().includes(kw.toLowerCase()));
433
- if (cfg.requireRationalization && !hasRationalization) {
434
- issues.push('No rationalization counter patterns found');
435
- }
436
- // Check 4: Has edge cases / 3+ examples (15 points)
437
- const hasEdgeCases = rule.examples.length >= 3;
438
- if (!hasEdgeCases)
439
- issues.push(`Only ${rule.examples.length} examples (recommend 3+)`);
440
- // Check 5: Example code quality (20 points)
441
- const codeExamples = rule.examples.filter(e => e.code.trim().length > 0);
442
- const avgCodeLength = codeExamples.length > 0
443
- ? codeExamples.reduce((sum, e) => sum + e.code.length, 0) / codeExamples.length
444
- : 0;
445
- const exampleQuality = Math.min(100, Math.round((avgCodeLength / cfg.minCodeLength) * 100));
446
- // Calculate weighted coverage score
447
- const coverageScore = (hasExamples ? 20 : 0) +
448
- (hasBothTypes ? 25 : 0) +
449
- (hasRationalization ? 20 : 0) +
450
- (hasEdgeCases ? 15 : 0) +
451
- Math.round(exampleQuality * 0.2);
452
- return {
453
- ruleId: rule.id,
454
- ruleTitle: rule.title,
455
- scores: {
456
- hasExamples,
457
- hasBothTypes,
458
- hasRationalization,
459
- hasEdgeCases,
460
- exampleQuality,
461
- coverageScore,
462
- },
463
- issues,
464
- passed: coverageScore >= 70,
465
- };
466
- }
467
- /**
468
- * Batch pressure-test all rules in a directory
469
- */
470
- export async function pressureTestRulesDirectory(rulesDir, config = {}) {
471
- const files = await readdir(rulesDir);
472
- const ruleFiles = files.filter(f => f.endsWith('.md') && !f.startsWith('_') && f !== 'README.md');
473
- const results = [];
474
- for (const file of ruleFiles) {
475
- const filePath = join(rulesDir, file);
476
- try {
477
- const { rule } = await parseRuleFile(filePath);
478
- rule.id = file.replace('.md', '');
479
- results.push(pressureTestRule(rule, config));
480
- }
481
- catch {
482
- results.push({
483
- ruleId: file,
484
- ruleTitle: file,
485
- scores: {
486
- hasExamples: false,
487
- hasBothTypes: false,
488
- hasRationalization: false,
489
- hasEdgeCases: false,
490
- exampleQuality: 0,
491
- coverageScore: 0,
492
- },
493
- issues: ['Failed to parse rule file'],
494
- passed: false,
495
- });
496
- }
497
- }
498
- return {
499
- total: results.length,
500
- passed: results.filter(r => r.passed).length,
501
- failed: results.filter(r => !r.passed).length,
502
- results,
503
- };
504
- }
505
- /**
506
- * Format pressure test results as markdown report
507
- */
508
- export function formatPressureTestReport(summary) {
509
- const lines = [];
510
- const passRate = summary.total > 0
511
- ? Math.round((summary.passed / summary.total) * 100)
512
- : 0;
513
- lines.push('# Rules TDD - Pressure Test Report\n');
514
- lines.push(`| Metric | Value |`);
515
- lines.push(`|--------|-------|`);
516
- lines.push(`| Total Rules | ${summary.total} |`);
517
- lines.push(`| Passed | ${summary.passed} |`);
518
- lines.push(`| Failed | ${summary.failed} |`);
519
- lines.push(`| Pass Rate | ${passRate}% |`);
520
- lines.push('');
521
- const failed = summary.results.filter(r => !r.passed);
522
- if (failed.length > 0) {
523
- lines.push('## Failed Rules\n');
524
- for (const r of failed) {
525
- lines.push(`### ${r.ruleId}: ${r.ruleTitle} (${r.scores.coverageScore}/100)\n`);
526
- lines.push(`| Check | Status |`);
527
- lines.push(`|-------|--------|`);
528
- lines.push(`| Examples | ${r.scores.hasExamples ? '✅' : '❌'} |`);
529
- lines.push(`| Both Types | ${r.scores.hasBothTypes ? '✅' : '❌'} |`);
530
- lines.push(`| Rationalization | ${r.scores.hasRationalization ? '✅' : '❌'} |`);
531
- lines.push(`| Edge Cases (3+) | ${r.scores.hasEdgeCases ? '✅' : '❌'} |`);
532
- lines.push(`| Code Quality | ${r.scores.exampleQuality}/100 |`);
533
- if (r.issues.length > 0) {
534
- lines.push(`\n**Issues:** ${r.issues.join(', ')}\n`);
535
- }
536
- }
537
- }
538
- const passed = summary.results.filter(r => r.passed);
539
- if (passed.length > 0) {
540
- lines.push('## Passed Rules\n');
541
- lines.push(`| Rule | Score | Rationalization |`);
542
- lines.push(`|------|-------|-----------------|`);
543
- for (const r of passed) {
544
- const rat = r.scores.hasRationalization ? '✅' : '⚠️';
545
- lines.push(`| ${r.ruleTitle} | ${r.scores.coverageScore}/100 | ${rat} |`);
546
- }
547
- }
548
- return lines.join('\n');
549
- }
550
- //# sourceMappingURL=RuleBuildSystem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RuleBuildSystem.js","sourceRoot":"","sources":["../../../src/infra/lib/RuleBuildSystem.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- /**
2
- * Skill Quality Gate
3
- * 저장할 메모리/스킬의 품질을 검증
4
- *
5
- * @deprecated Not wired into the vibe runtime (no hook/skill/CLI consumer).
6
- * No consumer in the shipped pipeline.
7
- * Retained for API compatibility; may be removed in a future major.
8
- */
9
- export interface QualityCheckResult {
10
- isValid: boolean;
11
- score: number;
12
- issues: string[];
13
- suggestions: string[];
14
- category: 'principle' | 'discovery' | 'decision' | 'code' | 'generic';
15
- }
16
- /**
17
- * 메모리/스킬 품질 검증
18
- */
19
- export declare function validateSkillQuality(key: string, value: string, category?: string): QualityCheckResult;
20
- /**
21
- * 원칙 형태로 변환 도우미
22
- */
23
- export declare function suggestPrincipleFormat(value: string): string;
24
- /**
25
- * 스킬 분류
26
- */
27
- export declare function classifySkill(value: string): {
28
- type: 'principle' | 'discovery' | 'decision' | 'reference' | 'generic';
29
- confidence: number;
30
- };
31
- /**
32
- * 저장 전 검증 래퍼
33
- */
34
- export declare function validateBeforeSave(key: string, value: string, options?: {
35
- bypassValidation?: boolean;
36
- minScore?: number;
37
- }): {
38
- canSave: boolean;
39
- result: QualityCheckResult;
40
- formattedFeedback: string;
41
- };
42
- //# sourceMappingURL=SkillQualityGate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SkillQualityGate.d.ts","sourceRoot":"","sources":["../../../src/infra/lib/SkillQualityGate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;CACvE;AAoDD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,kBAAkB,CAyFpB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;IAC5C,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IACvE,UAAU,EAAE,MAAM,CAAC;CACpB,CAsCA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CA6B7E"}