@scientificsaas/vibecheck 0.1.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/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const init_1 = require("./commands/init");
6
+ const program = new commander_1.Command();
7
+ program
8
+ .name('vibecheck')
9
+ .description('Memory and rules for AI CLI agents - automatically enforces project standards while you vibe code')
10
+ .version('0.1.0');
11
+ program
12
+ .command('init')
13
+ .description('Initialize Vibecheck in the current directory')
14
+ .action(init_1.initCommand);
15
+ program.parse();
16
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAE9C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,mGAAmG,CAAC;KAChH,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function initCommand(): Promise<void>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAyGA,wBAAsB,WAAW,kBAoFhC"}
@@ -0,0 +1,213 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.initCommand = initCommand;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const inquirer_1 = __importDefault(require("inquirer"));
43
+ const VIBECHECK_DIR = '.vibecheck';
44
+ const AGENTS_FILE = 'AGENTS.md';
45
+ const RULE_FILES = {
46
+ architecture: {
47
+ filename: 'architecture.json',
48
+ content: {
49
+ _meta: {
50
+ category: 'architecture',
51
+ description: 'Rules for file placement, routing paradigms, folder structures, and module boundaries.'
52
+ },
53
+ rules: []
54
+ }
55
+ },
56
+ stack: {
57
+ filename: 'stack.json',
58
+ content: {
59
+ _meta: {
60
+ category: 'stack',
61
+ description: 'Project-specific tools, libraries, ORMs, state managers, and data-fetching methods to be used.'
62
+ },
63
+ rules: []
64
+ }
65
+ },
66
+ conventions: {
67
+ filename: 'conventions.json',
68
+ content: {
69
+ _meta: {
70
+ category: 'conventions',
71
+ description: 'Coding styles, UI themes, design systems, error-handling wrappers, and naming conventions.'
72
+ },
73
+ rules: []
74
+ }
75
+ },
76
+ security: {
77
+ filename: 'security.json',
78
+ content: {
79
+ _meta: {
80
+ category: 'security',
81
+ description: 'Security invariants, authentication checks, input validation, and access control rules.'
82
+ },
83
+ rules: []
84
+ }
85
+ },
86
+ testing: {
87
+ filename: 'testing.json',
88
+ content: {
89
+ _meta: {
90
+ category: 'testing',
91
+ description: 'Testing frameworks, mocking strategies, and test file placement and naming.'
92
+ },
93
+ rules: []
94
+ }
95
+ }
96
+ };
97
+ const SUPPORTED_AGENTS = [
98
+ { code: 'claude', name: 'Claude Code', commandDir: '.claude/commands', agentsFile: '.claude/AGENTS.md' },
99
+ { code: 'cursor', name: 'Cursor', commandDir: '.cursor/commands', agentsFile: '.cursor/AGENTS.md' },
100
+ { code: 'codex', name: 'Codex', commandDir: '.codex/commands', agentsFile: '.codex/AGENTS.md' },
101
+ { code: 'gemini', name: 'Gemini CLI', commandDir: '.gemini/commands', agentsFile: '.gemini/AGENTS.md' },
102
+ { code: 'windsurf', name: 'Windsurf', commandDir: '.windsurf/commands', agentsFile: '.windsurf/AGENTS.md' },
103
+ { code: 'opencode', name: 'Opencode', commandDir: '.opencode/commands', agentsFile: '.opencode/AGENTS.md' }
104
+ ];
105
+ const GUARDRAIL_CONTENT = `
106
+ ## Vibecheck Guardrail
107
+
108
+ Before writing code, read the relevant files in \`.vibecheck/\` (architecture.json, stack.json, conventions.json, security.json, testing.json) and strictly apply the patterns found inside.
109
+
110
+ `;
111
+ const UPDATE_RULES_CONTENT = `---
112
+ description: Analyze project and update vibecheck rules
113
+ ---
114
+
115
+ Analyze this project's codebase and update the rule files in \`.vibecheck/\` with patterns that reflect the project's conventions.
116
+
117
+ ## Instructions
118
+
119
+ 1. **Identify new patterns** - Extract PRINCIPLES, not specific code snippets. The rules must be flexible enough to apply to future, unwritten code.
120
+
121
+ 2. **Merge with existing rules** - Maintain a MAXIMUM of 10 rules per category.
122
+
123
+ 3. **Overwrite obsolete rules** - If a new rule makes an old rule obsolete, OVERWRITE IT (this prevents context rot).
124
+
125
+ 4. **Ignore bad patterns** - If the diff contains hacky code, inline styles, or bad security practices, IGNORE IT.
126
+
127
+ 5. **Only extract best practices** - Focus on patterns that represent good engineering.
128
+
129
+ ## Files to Update
130
+
131
+ - \`.vibecheck/architecture.json\` - File placement, routing, folder structures
132
+ - \`.vibecheck/stack.json\` - Libraries, ORMs, state managers, data-fetching
133
+ - \`.vibecheck/conventions.json\` - Coding styles, naming conventions, design patterns
134
+ - \`.vibecheck/security.json\` - Auth, validation, access control
135
+ - \`.vibecheck/testing.json\` - Testing frameworks, mocking, test structure
136
+
137
+ For each file, read the current rules, analyze the codebase for relevant patterns, and update the rules array with the most important principles (max 10 per category).
138
+ `;
139
+ async function initCommand() {
140
+ console.log('\n🪩 Vibecheck - Memory for AI CLI agents\n');
141
+ const projectRoot = process.cwd();
142
+ const vibecheckDir = path.join(projectRoot, VIBECHECK_DIR);
143
+ if (fs.existsSync(vibecheckDir)) {
144
+ const { shouldReinit } = await inquirer_1.default.prompt([
145
+ {
146
+ type: 'confirm',
147
+ name: 'shouldReinit',
148
+ message: 'Vibecheck is already initialized. Do you want to reconfigure?',
149
+ default: false
150
+ }
151
+ ]);
152
+ if (!shouldReinit) {
153
+ console.log('\nVibecheck initialization cancelled.\n');
154
+ return;
155
+ }
156
+ }
157
+ const { selectedAgents } = await inquirer_1.default.prompt([
158
+ {
159
+ type: 'checkbox',
160
+ name: 'selectedAgents',
161
+ message: 'Select your AI coding agent(s):',
162
+ choices: SUPPORTED_AGENTS.map(agent => ({
163
+ name: agent.name,
164
+ value: agent.code
165
+ })),
166
+ validate: (answer) => {
167
+ if (answer.length < 1) {
168
+ return 'You must select at least one agent.';
169
+ }
170
+ return true;
171
+ }
172
+ }
173
+ ]);
174
+ console.log('\nšŸ“ Creating rule files...\n');
175
+ fs.mkdirSync(vibecheckDir, { recursive: true });
176
+ for (const [key, file] of Object.entries(RULE_FILES)) {
177
+ const filePath = path.join(vibecheckDir, file.filename);
178
+ fs.writeFileSync(filePath, JSON.stringify(file.content, null, 2));
179
+ console.log(` āœ“ Created .vibecheck/${file.filename}`);
180
+ }
181
+ console.log('\nšŸ”§ Configuring agents...\n');
182
+ for (const agentCode of selectedAgents) {
183
+ const agent = SUPPORTED_AGENTS.find(a => a.code === agentCode);
184
+ if (!agent)
185
+ continue;
186
+ const commandDir = path.join(projectRoot, agent.commandDir);
187
+ const agentsFile = path.join(projectRoot, agent.agentsFile);
188
+ fs.mkdirSync(commandDir, { recursive: true });
189
+ const updateRulesPath = path.join(commandDir, 'update-rules.md');
190
+ fs.writeFileSync(updateRulesPath, UPDATE_RULES_CONTENT);
191
+ console.log(` āœ“ Created ${agent.commandDir}/update-rules.md`);
192
+ if (fs.existsSync(agentsFile)) {
193
+ const existingContent = fs.readFileSync(agentsFile, 'utf-8');
194
+ if (!existingContent.includes('Vibecheck Guardrail')) {
195
+ fs.appendFileSync(agentsFile, GUARDRAIL_CONTENT);
196
+ console.log(` āœ“ Updated ${agent.agentsFile}`);
197
+ }
198
+ else {
199
+ console.log(` āœ“ ${agent.agentsFile} already has guardrail`);
200
+ }
201
+ }
202
+ else {
203
+ fs.writeFileSync(agentsFile, GUARDRAIL_CONTENT);
204
+ console.log(` āœ“ Created ${agent.agentsFile}`);
205
+ }
206
+ }
207
+ console.log('\nāœ… Vibecheck initialized successfully!\n');
208
+ console.log('šŸ“‹ Next steps:');
209
+ console.log(' 1. Run /update-rules in your AI agent to analyze your project');
210
+ console.log(' 2. The agent will populate the rules in .vibecheck/');
211
+ console.log(' 3. Future code generation will automatically apply these rules\n');
212
+ }
213
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export * from './types';
2
+ export interface RuleMeta {
3
+ category: 'architecture' | 'stack' | 'conventions' | 'security' | 'testing';
4
+ description: string;
5
+ }
6
+ export interface Rule {
7
+ id: string;
8
+ principle: string;
9
+ rationale: string;
10
+ examples?: string[];
11
+ }
12
+ export interface RuleFile {
13
+ _meta: RuleMeta;
14
+ rules: Rule[];
15
+ }
16
+ export interface InitOptions {
17
+ force?: boolean;
18
+ skipEnvCheck?: boolean;
19
+ }
20
+ export type AIClient = 'claude' | 'cursor' | 'gemini' | 'opencode' | 'codex';
21
+ export interface Config {
22
+ apiKey: string;
23
+ clients: AIClient[];
24
+ maxRulesPerCategory: number;
25
+ maxDiffTokens: number;
26
+ ignoredPatterns: string[];
27
+ }
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,MAAM,WAAW,QAAQ;IACrB,QAAQ,EAAE,cAAc,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;IAC5E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE7E,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B"}
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB"}
@@ -0,0 +1,5 @@
1
+ export interface DevKitConfig {
2
+ version: string;
3
+ initializedAt: string;
4
+ }
5
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@scientificsaas/vibecheck",
3
+ "version": "0.1.0",
4
+ "description": "Memory and rules for AI CLI agents",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "@scientificsaas/vibecheck": "dist/cli.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "ts-node src/cli.ts",
13
+ "test": "jest",
14
+ "prepublishOnly": "npm run build"
15
+ },
16
+ "keywords": [
17
+ "ai",
18
+ "development",
19
+ "cli",
20
+ "memory",
21
+ "rules",
22
+ "vibecoding",
23
+ "cursor",
24
+ "claude",
25
+ "codex",
26
+ "gemini"
27
+ ],
28
+ "author": "",
29
+ "license": "MIT",
30
+ "dependencies": {
31
+ "commander": "^11.1.0",
32
+ "inquirer": "^8.2.6"
33
+ },
34
+ "devDependencies": {
35
+ "@types/inquirer": "^8.2.10",
36
+ "@types/jest": "^30.0.0",
37
+ "@types/node": "^20.11.5",
38
+ "jest": "^29.7.0",
39
+ "ts-jest": "^29.4.5",
40
+ "ts-node": "^10.9.2",
41
+ "typescript": "^5.3.3"
42
+ },
43
+ "engines": {
44
+ "node": ">=20.20.0"
45
+ }
46
+ }