cerber-core 1.0.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.
Files changed (67) hide show
  1. package/.cerber-example/BIBLE.md +132 -0
  2. package/.cerber-example/CERBER_LAW.md +200 -0
  3. package/.cerber-example/connections/contracts/booking-to-pricing.json +44 -0
  4. package/.cerber-example/connections/contracts/pricing-to-booking.json +37 -0
  5. package/.cerber-example/modules/booking-calendar/MODULE.md +225 -0
  6. package/.cerber-example/modules/booking-calendar/contract.json +106 -0
  7. package/.cerber-example/modules/booking-calendar/dependencies.json +8 -0
  8. package/.cerber-example/modules/pricing-engine/MODULE.md +160 -0
  9. package/.cerber-example/modules/pricing-engine/contract.json +64 -0
  10. package/.cerber-example/modules/pricing-engine/dependencies.json +8 -0
  11. package/CHANGELOG.md +68 -0
  12. package/LICENSE +21 -0
  13. package/README.md +1379 -0
  14. package/bin/cerber +105 -0
  15. package/bin/cerber-focus +31 -0
  16. package/bin/cerber-guardian +90 -0
  17. package/bin/cerber-health +113 -0
  18. package/bin/cerber-morning +19 -0
  19. package/bin/cerber-repair +21 -0
  20. package/dist/cerber/index.d.ts +47 -0
  21. package/dist/cerber/index.d.ts.map +1 -0
  22. package/dist/cerber/index.js +154 -0
  23. package/dist/cerber/index.js.map +1 -0
  24. package/dist/guardian/index.d.ts +70 -0
  25. package/dist/guardian/index.d.ts.map +1 -0
  26. package/dist/guardian/index.js +271 -0
  27. package/dist/guardian/index.js.map +1 -0
  28. package/dist/index.d.ts +9 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +9 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/types.d.ts +76 -0
  33. package/dist/types.d.ts.map +1 -0
  34. package/dist/types.js +5 -0
  35. package/dist/types.js.map +1 -0
  36. package/examples/backend-schema.ts +72 -0
  37. package/examples/frontend-schema.ts +67 -0
  38. package/examples/health-checks.ts +196 -0
  39. package/examples/solo-integration/README.md +457 -0
  40. package/examples/solo-integration/package.json +47 -0
  41. package/examples/team-integration/README.md +347 -0
  42. package/examples/team-integration/package.json +23 -0
  43. package/package.json +104 -0
  44. package/solo/README.md +258 -0
  45. package/solo/config/performance-budget.json +53 -0
  46. package/solo/config/solo-contract.json +71 -0
  47. package/solo/lib/feature-flags.ts +177 -0
  48. package/solo/scripts/cerber-auto-repair.js +260 -0
  49. package/solo/scripts/cerber-daily-check.js +282 -0
  50. package/solo/scripts/cerber-dashboard.js +191 -0
  51. package/solo/scripts/cerber-deps-health.js +247 -0
  52. package/solo/scripts/cerber-docs-sync.js +304 -0
  53. package/solo/scripts/cerber-flags-check.js +229 -0
  54. package/solo/scripts/cerber-performance-budget.js +271 -0
  55. package/solo/scripts/cerber-rollback.js +229 -0
  56. package/solo/scripts/cerber-snapshot.js +319 -0
  57. package/team/README.md +327 -0
  58. package/team/config/team-contract.json +27 -0
  59. package/team/lib/module-system.ts +157 -0
  60. package/team/scripts/cerber-add-module.sh +195 -0
  61. package/team/scripts/cerber-connections-check.sh +186 -0
  62. package/team/scripts/cerber-focus.sh +170 -0
  63. package/team/scripts/cerber-module-check.sh +165 -0
  64. package/team/scripts/cerber-team-morning.sh +210 -0
  65. package/team/templates/BIBLE_TEMPLATE.md +52 -0
  66. package/team/templates/CONNECTION_TEMPLATE.json +20 -0
  67. package/team/templates/MODULE_TEMPLATE.md +60 -0
@@ -0,0 +1,319 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Cerber SOLO - Snapshot Tool
5
+ *
6
+ * Extends Cerber Core with automation for solo developers
7
+ *
8
+ * Captures:
9
+ * - Git statistics
10
+ * - File counts
11
+ * - LOC metrics
12
+ * - Guardian status
13
+ * - Saves to .cerber/snapshots/ (30-day retention)
14
+ *
15
+ * @author Stefan Pitek
16
+ * @copyright 2026 Stefan Pitek
17
+ * @license MIT
18
+ */
19
+
20
+ const fs = require('fs');
21
+ const path = require('path');
22
+ const { execSync } = require('child_process');
23
+
24
+ console.log('📸 Cerber SOLO - Daily Snapshot\n');
25
+
26
+ const snapshotDir = path.join(process.cwd(), '.cerber', 'snapshots');
27
+ const date = new Date();
28
+ const dateStr = date.toISOString().split('T')[0];
29
+ const timestamp = date.toISOString();
30
+
31
+ // Create snapshot directory
32
+ if (!fs.existsSync(snapshotDir)) {
33
+ fs.mkdirSync(snapshotDir, { recursive: true });
34
+ console.log(`✅ Created snapshot directory: ${snapshotDir}\n`);
35
+ }
36
+
37
+ const snapshot = {
38
+ date: dateStr,
39
+ timestamp: timestamp,
40
+ version: '2.0-solo'
41
+ };
42
+
43
+ /**
44
+ * Capture Git statistics
45
+ */
46
+ function captureGitStats() {
47
+ console.log('📊 Capturing Git statistics...');
48
+
49
+ try {
50
+ // Total commits
51
+ const totalCommits = execSync('git rev-list --all --count', {
52
+ encoding: 'utf8',
53
+ stdio: 'pipe'
54
+ }).trim();
55
+
56
+ snapshot.git = {
57
+ totalCommits: parseInt(totalCommits)
58
+ };
59
+
60
+ // Today's commits
61
+ const todayCommits = execSync(`git log --since="00:00:00" --oneline | wc -l`, {
62
+ encoding: 'utf8',
63
+ stdio: 'pipe'
64
+ }).trim();
65
+
66
+ snapshot.git.commitsToday = parseInt(todayCommits);
67
+
68
+ // Current branch
69
+ const branch = execSync('git rev-parse --abbrev-ref HEAD', {
70
+ encoding: 'utf8',
71
+ stdio: 'pipe'
72
+ }).trim();
73
+
74
+ snapshot.git.branch = branch;
75
+
76
+ // Get today's stats
77
+ try {
78
+ const stats = execSync(`git diff --shortstat HEAD~1..HEAD 2>/dev/null || echo "0 files changed"`, {
79
+ encoding: 'utf8',
80
+ stdio: 'pipe'
81
+ }).trim();
82
+
83
+ const filesMatch = stats.match(/(\d+) file[s]? changed/);
84
+ const insertionsMatch = stats.match(/(\d+) insertion[s]?\(\+\)/);
85
+ const deletionsMatch = stats.match(/(\d+) deletion[s]?\(-\)/);
86
+
87
+ snapshot.git.filesChanged = filesMatch ? parseInt(filesMatch[1]) : 0;
88
+ snapshot.git.linesAdded = insertionsMatch ? parseInt(insertionsMatch[1]) : 0;
89
+ snapshot.git.linesRemoved = deletionsMatch ? parseInt(deletionsMatch[1]) : 0;
90
+ } catch (error) {
91
+ // First commit or no changes
92
+ snapshot.git.filesChanged = 0;
93
+ snapshot.git.linesAdded = 0;
94
+ snapshot.git.linesRemoved = 0;
95
+ }
96
+
97
+ console.log(` ✅ Total commits: ${snapshot.git.totalCommits}`);
98
+ console.log(` ✅ Today's commits: ${snapshot.git.commitsToday}`);
99
+ console.log(` ✅ Branch: ${snapshot.git.branch}`);
100
+ console.log(` ✅ Files changed: ${snapshot.git.filesChanged}`);
101
+ console.log(` ✅ Lines: +${snapshot.git.linesAdded} -${snapshot.git.linesRemoved}`);
102
+ } catch (error) {
103
+ console.log(' ⚠️ Not a git repository');
104
+ snapshot.git = { error: 'Not a git repository' };
105
+ }
106
+
107
+ console.log();
108
+ }
109
+
110
+ /**
111
+ * Count files by type
112
+ */
113
+ function captureFileCounts() {
114
+ console.log('📁 Counting files...');
115
+
116
+ const extensions = {
117
+ '.ts': 0,
118
+ '.tsx': 0,
119
+ '.js': 0,
120
+ '.jsx': 0,
121
+ '.json': 0,
122
+ '.md': 0
123
+ };
124
+
125
+ function countFiles(dir) {
126
+ if (!fs.existsSync(dir)) return;
127
+
128
+ // Skip node_modules, dist, build, etc.
129
+ const skipDirs = ['node_modules', 'dist', 'build', '.git', '.next', 'out', 'coverage'];
130
+ const dirName = path.basename(dir);
131
+ if (skipDirs.includes(dirName)) return;
132
+
133
+ const files = fs.readdirSync(dir);
134
+
135
+ files.forEach(file => {
136
+ const filePath = path.join(dir, file);
137
+ const stat = fs.statSync(filePath);
138
+
139
+ if (stat.isDirectory()) {
140
+ countFiles(filePath);
141
+ } else {
142
+ const ext = path.extname(file);
143
+ if (extensions.hasOwnProperty(ext)) {
144
+ extensions[ext]++;
145
+ }
146
+ }
147
+ });
148
+ }
149
+
150
+ countFiles(process.cwd());
151
+
152
+ snapshot.files = extensions;
153
+
154
+ const total = Object.values(extensions).reduce((a, b) => a + b, 0);
155
+ console.log(` ✅ Total files: ${total}`);
156
+ Object.entries(extensions).forEach(([ext, count]) => {
157
+ if (count > 0) {
158
+ console.log(` ${ext}: ${count}`);
159
+ }
160
+ });
161
+
162
+ console.log();
163
+ }
164
+
165
+ /**
166
+ * Count lines of code
167
+ */
168
+ function captureLOC() {
169
+ console.log('📏 Counting lines of code...');
170
+
171
+ try {
172
+ // Use cloc if available, otherwise use simple wc
173
+ try {
174
+ const clocOutput = execSync('cloc . --json 2>/dev/null', {
175
+ encoding: 'utf8',
176
+ maxBuffer: 10 * 1024 * 1024
177
+ });
178
+
179
+ const clocData = JSON.parse(clocOutput);
180
+
181
+ if (clocData.SUM) {
182
+ snapshot.loc = {
183
+ total: clocData.SUM.code || 0,
184
+ comments: clocData.SUM.comment || 0,
185
+ blank: clocData.SUM.blank || 0
186
+ };
187
+
188
+ console.log(` ✅ Code lines: ${snapshot.loc.total}`);
189
+ console.log(` ✅ Comments: ${snapshot.loc.comments}`);
190
+ console.log(` ✅ Blank lines: ${snapshot.loc.blank}`);
191
+ }
192
+ } catch (error) {
193
+ // cloc not available, use simple line count
194
+ const tsLines = execSync(`find . -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" | grep -v node_modules | xargs wc -l 2>/dev/null | tail -1 | awk '{print $1}' || echo 0`, {
195
+ encoding: 'utf8'
196
+ }).trim();
197
+
198
+ snapshot.loc = {
199
+ total: parseInt(tsLines) || 0,
200
+ method: 'simple'
201
+ };
202
+
203
+ console.log(` ✅ Estimated lines: ${snapshot.loc.total}`);
204
+ console.log(' ℹ️ Install cloc for detailed stats');
205
+ }
206
+ } catch (error) {
207
+ console.log(' ⚠️ Could not count LOC');
208
+ snapshot.loc = { error: error.message };
209
+ }
210
+
211
+ console.log();
212
+ }
213
+
214
+ /**
215
+ * Check Guardian status
216
+ */
217
+ function captureGuardianStatus() {
218
+ console.log('🛡️ Checking Guardian status...');
219
+
220
+ const guardianPaths = [
221
+ 'scripts/validate-schema.mjs',
222
+ 'scripts/validate-schema.js',
223
+ '.husky/pre-commit'
224
+ ];
225
+
226
+ const guardianExists = guardianPaths.some(p =>
227
+ fs.existsSync(path.join(process.cwd(), p))
228
+ );
229
+
230
+ snapshot.guardian = {
231
+ installed: guardianExists
232
+ };
233
+
234
+ console.log(` ${guardianExists ? '✅' : '⚠️'} Guardian: ${guardianExists ? 'installed' : 'not detected'}`);
235
+ console.log();
236
+ }
237
+
238
+ /**
239
+ * Check package.json info
240
+ */
241
+ function capturePackageInfo() {
242
+ console.log('📦 Checking package info...');
243
+
244
+ const packagePath = path.join(process.cwd(), 'package.json');
245
+
246
+ if (fs.existsSync(packagePath)) {
247
+ try {
248
+ const packageData = JSON.parse(fs.readFileSync(packagePath, 'utf8'));
249
+
250
+ snapshot.package = {
251
+ name: packageData.name || 'unknown',
252
+ version: packageData.version || '0.0.0',
253
+ dependencies: Object.keys(packageData.dependencies || {}).length,
254
+ devDependencies: Object.keys(packageData.devDependencies || {}).length
255
+ };
256
+
257
+ console.log(` ✅ Project: ${snapshot.package.name}@${snapshot.package.version}`);
258
+ console.log(` ✅ Dependencies: ${snapshot.package.dependencies}`);
259
+ console.log(` ✅ Dev dependencies: ${snapshot.package.devDependencies}`);
260
+ } catch (error) {
261
+ console.log(' ⚠️ Could not parse package.json');
262
+ }
263
+ } else {
264
+ console.log(' ℹ️ No package.json found');
265
+ }
266
+
267
+ console.log();
268
+ }
269
+
270
+ // Capture all data
271
+ captureGitStats();
272
+ captureFileCounts();
273
+ captureLOC();
274
+ captureGuardianStatus();
275
+ capturePackageInfo();
276
+
277
+ // Save snapshot
278
+ const snapshotPath = path.join(snapshotDir, `${dateStr}.json`);
279
+ fs.writeFileSync(snapshotPath, JSON.stringify(snapshot, null, 2), 'utf8');
280
+
281
+ console.log('💾 Snapshot saved!');
282
+ console.log(` Location: ${snapshotPath}\n`);
283
+
284
+ // Cleanup old snapshots (keep 30 days)
285
+ console.log('🧹 Cleaning up old snapshots...');
286
+
287
+ try {
288
+ const files = fs.readdirSync(snapshotDir);
289
+ const now = Date.now();
290
+ const thirtyDaysAgo = now - (30 * 24 * 60 * 60 * 1000);
291
+
292
+ let deleted = 0;
293
+
294
+ files.forEach(file => {
295
+ const filePath = path.join(snapshotDir, file);
296
+ const stat = fs.statSync(filePath);
297
+
298
+ if (stat.mtime.getTime() < thirtyDaysAgo) {
299
+ fs.unlinkSync(filePath);
300
+ deleted++;
301
+ }
302
+ });
303
+
304
+ if (deleted > 0) {
305
+ console.log(` ✅ Deleted ${deleted} old snapshot(s)`);
306
+ } else {
307
+ console.log(` ✅ No old snapshots to delete`);
308
+ }
309
+ } catch (error) {
310
+ console.log(' ⚠️ Could not cleanup old snapshots');
311
+ }
312
+
313
+ console.log();
314
+ console.log('='.repeat(60));
315
+ console.log('\n✅ Snapshot complete!\n');
316
+ console.log('📊 View your snapshots in: .cerber/snapshots/\n');
317
+ console.log('='.repeat(60));
318
+
319
+ process.exit(0);
package/team/README.md ADDED
@@ -0,0 +1,327 @@
1
+ # 🛡️ Cerber TEAM - Quick Start
2
+
3
+ **Team collaboration layer for large codebases**
4
+
5
+ Author: Stefan Pitek
6
+ Version: 2.0-team
7
+
8
+ ---
9
+
10
+ ## What is Cerber TEAM?
11
+
12
+ Cerber TEAM adds module system and focus mode to help teams work on large codebases more efficiently.
13
+
14
+ **Key Features:**
15
+ - **📦 Module System** - Clear boundaries between components
16
+ - **🎯 Focus Mode** - AI gets 500 LOC instead of 10,000 LOC (10x faster)
17
+ - **🔗 Connection Contracts** - Explicit interfaces between modules
18
+ - **📖 BIBLE.md** - Master project map
19
+ - **✅ Validation** - Enforce module boundaries automatically
20
+
21
+ ---
22
+
23
+ ## Quick Start (5 minutes)
24
+
25
+ ### 1. Setup
26
+
27
+ ```bash
28
+ # Create .cerber directory
29
+ mkdir -p .cerber/modules
30
+ mkdir -p .cerber/connections/contracts
31
+
32
+ # Create project BIBLE
33
+ cp team/templates/BIBLE_TEMPLATE.md .cerber/BIBLE.md
34
+
35
+ # Edit BIBLE.md to describe your project
36
+ nano .cerber/BIBLE.md
37
+ ```
38
+
39
+ ### 2. Create Your First Module
40
+
41
+ ```bash
42
+ # Create module
43
+ bash team/scripts/cerber-add-module.sh my-first-module
44
+
45
+ # Output:
46
+ # ✅ Created .cerber/modules/my-first-module/
47
+ # ✅ MODULE.md created from template
48
+ # ✅ contract.json initialized
49
+ # ✅ dependencies.json created
50
+ # ✅ BIBLE.md updated
51
+
52
+ # Edit module documentation
53
+ nano .cerber/modules/my-first-module/MODULE.md
54
+ ```
55
+
56
+ ### 3. Use Focus Mode
57
+
58
+ ```bash
59
+ # Generate focus context (10x faster AI)
60
+ bash team/scripts/cerber-focus.sh my-first-module
61
+
62
+ # Output:
63
+ # ✅ Focus context created: .cerber/FOCUS_CONTEXT.md
64
+ # 📖 Context contains 500 LOC (vs 10,000 LOC for whole project)
65
+ # 🤖 AI can now work 10x faster
66
+
67
+ # View the context
68
+ cat .cerber/FOCUS_CONTEXT.md
69
+
70
+ # Share this with AI instead of entire codebase!
71
+ ```
72
+
73
+ ### 4. Validate
74
+
75
+ ```bash
76
+ # Validate module
77
+ bash team/scripts/cerber-module-check.sh my-first-module
78
+
79
+ # Output:
80
+ # ✅ MODULE.md exists
81
+ # ✅ contract.json valid
82
+ # ✅ All dependencies declared
83
+ # ✅ MODULE CHECK PASSED
84
+
85
+ # Validate connections
86
+ bash team/scripts/cerber-connections-check.sh
87
+ ```
88
+
89
+ ### 5. Daily Workflow
90
+
91
+ ```bash
92
+ # Morning dashboard
93
+ bash team/scripts/cerber-team-morning.sh
94
+
95
+ # Shows:
96
+ # - All modules and their health
97
+ # - Connection contracts status
98
+ # - Recent activity
99
+ # - Today's focus
100
+
101
+ # Work on a module
102
+ bash team/scripts/cerber-focus.sh my-module
103
+ # [Share FOCUS_CONTEXT.md with AI]
104
+ # [Make changes]
105
+
106
+ # Validate before commit
107
+ bash team/scripts/cerber-module-check.sh my-module
108
+ git commit
109
+ ```
110
+
111
+ ---
112
+
113
+ ## Scripts Reference
114
+
115
+ ### cerber-add-module.sh
116
+ Creates new module from template
117
+
118
+ ```bash
119
+ bash team/scripts/cerber-add-module.sh <module-name>
120
+ ```
121
+
122
+ ### cerber-focus.sh ⭐ MOST IMPORTANT
123
+ Generates FOCUS_CONTEXT.md for a module (10x faster AI)
124
+
125
+ ```bash
126
+ bash team/scripts/cerber-focus.sh <module-name>
127
+ ```
128
+
129
+ ### cerber-module-check.sh
130
+ Validates single module
131
+
132
+ ```bash
133
+ bash team/scripts/cerber-module-check.sh <module-name>
134
+ ```
135
+
136
+ ### cerber-connections-check.sh
137
+ Validates all connection contracts
138
+
139
+ ```bash
140
+ bash team/scripts/cerber-connections-check.sh
141
+ ```
142
+
143
+ ### cerber-team-morning.sh
144
+ Team morning dashboard
145
+
146
+ ```bash
147
+ bash team/scripts/cerber-team-morning.sh
148
+ ```
149
+
150
+ ---
151
+
152
+ ## Module Structure
153
+
154
+ Every module has:
155
+
156
+ ```
157
+ .cerber/modules/my-module/
158
+ ├── MODULE.md # Complete documentation
159
+ ├── contract.json # Public interface (versioned)
160
+ └── dependencies.json # List of dependencies
161
+ ```
162
+
163
+ **MODULE.md** - Human-readable documentation:
164
+ - Purpose and responsibilities
165
+ - Public interface (functions, parameters, returns)
166
+ - Dependencies and why
167
+ - File structure
168
+ - Testing instructions
169
+
170
+ **contract.json** - Machine-readable interface:
171
+ - Version (semver)
172
+ - Public functions with types
173
+ - Dependencies list
174
+
175
+ **dependencies.json** - Explicit dependencies:
176
+ - List of modules this module uses
177
+ - Reason for each dependency
178
+
179
+ ---
180
+
181
+ ## Connection Contracts
182
+
183
+ Document how modules communicate:
184
+
185
+ ```json
186
+ {
187
+ "id": "module-a-to-module-b",
188
+ "from": "module-a",
189
+ "to": "module-b",
190
+ "type": "function-call",
191
+ "interface": {
192
+ "function": "processData",
193
+ "input": { "type": "ProcessParams", "fields": [...] },
194
+ "output": { "type": "ProcessResult", "fields": [...] }
195
+ },
196
+ "version": "1.0.0",
197
+ "breaking_changes": []
198
+ }
199
+ ```
200
+
201
+ **Create contract:**
202
+ ```bash
203
+ cp team/templates/CONNECTION_TEMPLATE.json \
204
+ .cerber/connections/contracts/module-a-to-module-b.json
205
+
206
+ # Edit the contract
207
+ nano .cerber/connections/contracts/module-a-to-module-b.json
208
+
209
+ # Validate
210
+ bash team/scripts/cerber-connections-check.sh
211
+ ```
212
+
213
+ ---
214
+
215
+ ## BIBLE.md
216
+
217
+ Master project map showing:
218
+ - Architecture overview
219
+ - All modules and owners
220
+ - Connections between modules
221
+ - Team responsibilities
222
+ - Tech stack
223
+
224
+ **Create BIBLE:**
225
+ ```bash
226
+ cp team/templates/BIBLE_TEMPLATE.md .cerber/BIBLE.md
227
+ nano .cerber/BIBLE.md
228
+ ```
229
+
230
+ ---
231
+
232
+ ## Integration with Guardian + Cerber + SOLO
233
+
234
+ Cerber TEAM works alongside existing tools:
235
+
236
+ ```
237
+ Morning:
238
+ bash team/scripts/cerber-team-morning.sh (TEAM dashboard)
239
+
240
+ Development:
241
+ bash team/scripts/cerber-focus.sh <module> (TEAM focus mode)
242
+ git commit (Guardian validates)
243
+
244
+ Pre-push:
245
+ npm run cerber:pre-push (SOLO checks)
246
+
247
+ Deploy:
248
+ curl /api/health (Cerber 2.1 validates)
249
+ ```
250
+
251
+ ---
252
+
253
+ ## Add to package.json
254
+
255
+ ```json
256
+ {
257
+ "scripts": {
258
+ "cerber:morning": "bash team/scripts/cerber-team-morning.sh",
259
+ "cerber:focus": "bash team/scripts/cerber-focus.sh",
260
+ "cerber:add-module": "bash team/scripts/cerber-add-module.sh",
261
+ "cerber:check-module": "bash team/scripts/cerber-module-check.sh",
262
+ "cerber:check-connections": "bash team/scripts/cerber-connections-check.sh"
263
+ }
264
+ }
265
+ ```
266
+
267
+ ---
268
+
269
+ ## Example Project
270
+
271
+ See `.cerber-example/` for complete working example:
272
+ - BIBLE.md
273
+ - CERBER_LAW.md
274
+ - Two complete modules (pricing-engine, booking-calendar)
275
+ - Connection contracts
276
+
277
+ Study these files to understand best practices!
278
+
279
+ ---
280
+
281
+ ## Documentation
282
+
283
+ **Full documentation:** [docs/TEAM.md](../docs/TEAM.md) (20+ KB)
284
+
285
+ Topics covered:
286
+ - Complete installation guide
287
+ - Module system deep dive
288
+ - Focus mode workflow
289
+ - Connection contracts guide
290
+ - Team collaboration workflows
291
+ - Best practices
292
+ - Troubleshooting
293
+ - FAQ
294
+
295
+ ---
296
+
297
+ ## Benefits
298
+
299
+ **Before TEAM:**
300
+ - AI processes 10,000 LOC → 60 seconds
301
+ - Unclear module boundaries
302
+ - Hidden dependencies
303
+ - Documentation drift
304
+
305
+ **After TEAM:**
306
+ - AI processes 500 LOC → 6 seconds (10x faster ⚡)
307
+ - Clear module boundaries
308
+ - Explicit dependencies
309
+ - Living documentation
310
+
311
+ ---
312
+
313
+ ## License
314
+
315
+ MIT © 2026 Stefan Pitek
316
+
317
+ ---
318
+
319
+ ## Support
320
+
321
+ - **Documentation:** [docs/TEAM.md](../docs/TEAM.md)
322
+ - **Examples:** `.cerber-example/`
323
+ - **Issues:** https://github.com/Agaslez/cerber-core/issues
324
+
325
+ ---
326
+
327
+ **Built with ❤️ by Stefan Pitek**
@@ -0,0 +1,27 @@
1
+ {
2
+ "version": "2.0-team",
3
+ "extends": "cerber-core",
4
+ "team": {
5
+ "enabled": true,
6
+ "modulesPath": ".cerber/modules",
7
+ "connectionsPath": ".cerber/connections/contracts",
8
+ "biblePath": ".cerber/BIBLE.md"
9
+ },
10
+ "moduleValidation": {
11
+ "requireModuleMd": true,
12
+ "requireContract": true,
13
+ "requireDependencies": true,
14
+ "forbiddenCrossModuleImports": true
15
+ },
16
+ "focusMode": {
17
+ "enabled": true,
18
+ "outputPath": ".cerber/FOCUS_CONTEXT.md",
19
+ "includeContracts": true,
20
+ "includeDependencies": true
21
+ },
22
+ "connectionValidation": {
23
+ "requireBidirectional": true,
24
+ "checkBreakingChanges": true,
25
+ "detectCircular": true
26
+ }
27
+ }