vibe-me 3.1.0 β 3.2.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/README.md +84 -32
- package/bin/vibes.js +127 -2
- package/package.json +1 -1
- package/spec/VIBE_GUIDE.md +51 -0
- package/templates/state.json +2 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# π vibes
|
|
4
4
|
|
|
5
|
-
###
|
|
5
|
+
### Project memory. Cross-project intelligence.<br>One command per project. One hub for all of them.
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/vibe-me)
|
|
8
8
|
[](LICENSE)
|
|
@@ -11,16 +11,19 @@
|
|
|
11
11
|
|
|
12
12
|
<br>
|
|
13
13
|
|
|
14
|
-
**
|
|
14
|
+
**Scaffold. Fill. Validate. Sync. Get feedback.**
|
|
15
15
|
|
|
16
|
-
`vibes`
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
`vibes` gives every project a `.vibe/` semantic layer and `docs/` folder β<br>
|
|
17
|
+
then connects all your projects through a **Vibes Hub** that finds patterns,<br>
|
|
18
|
+
surfaces improvements, and lets your best work raise the bar everywhere.
|
|
19
19
|
|
|
20
20
|
<br>
|
|
21
21
|
|
|
22
|
-
```
|
|
23
|
-
npx vibe-me all
|
|
22
|
+
```
|
|
23
|
+
npx vibe-me all # scaffold .vibe/ + docs/ in any project
|
|
24
|
+
npx vibe-me check # validate quality (catches unfilled templates)
|
|
25
|
+
npx vibe-me export # sync to your hub
|
|
26
|
+
npx vibe-me insights # get cross-project feedback
|
|
24
27
|
```
|
|
25
28
|
|
|
26
29
|
<br>
|
|
@@ -69,6 +72,7 @@ Not a wiki. Not a Confluence graveyard. Not a 200-page design doc nobody reads.
|
|
|
69
72
|
- Nobody knows the pricing rationale or competitive landscape
|
|
70
73
|
- User frustrations are invisible β product decisions are guesswork
|
|
71
74
|
- Documentation rots because nobody owns it
|
|
75
|
+
- Your projects are islands β lessons learned in one are invisible to others
|
|
72
76
|
|
|
73
77
|
</td>
|
|
74
78
|
<td width="50%">
|
|
@@ -81,14 +85,15 @@ Not a wiki. Not a Confluence graveyard. Not a 200-page design doc nobody reads.
|
|
|
81
85
|
- Business strategy, pricing, and market position are documented
|
|
82
86
|
- User personas include emotional reality β fears, confusion, goals
|
|
83
87
|
- Documentation stays fresh because the AI updates it
|
|
88
|
+
- **Hub connects all your projects** β patterns, standards, and improvements flow between them
|
|
84
89
|
|
|
85
90
|
</td>
|
|
86
91
|
</tr>
|
|
87
92
|
</table>
|
|
88
93
|
|
|
89
|
-
> **This isn't documentation. It's a digital twin of your entire
|
|
94
|
+
> **This isn't documentation. It's a digital twin of your entire portfolio.**<br>
|
|
90
95
|
> Repository memory. Product memory. Business memory. AI instructions. Living context.<br>
|
|
91
|
-
>
|
|
96
|
+
> Each project explains itself β and the hub makes all your projects learn from each other.
|
|
92
97
|
|
|
93
98
|
---
|
|
94
99
|
|
|
@@ -206,6 +211,7 @@ Download [`Vibe.bat`](Vibe.bat), drop it in any project folder, and double-click
|
|
|
206
211
|
| | |
|
|
207
212
|
| `vibes hub <path>` | Set up a central hub β git inits, creates `_insights/`, saves config |
|
|
208
213
|
| `vibes export` | Export `.vibe/` + `docs/` from current project to your hub |
|
|
214
|
+
| `vibes insights` | Show hub feedback for this project β opportunities, standards, anti-patterns |
|
|
209
215
|
| `vibes help` | Show all commands |
|
|
210
216
|
|
|
211
217
|
---
|
|
@@ -315,19 +321,29 @@ What it catches:
|
|
|
315
321
|
|
|
316
322
|
---
|
|
317
323
|
|
|
318
|
-
## ποΈ Vibes Hub β
|
|
324
|
+
## ποΈ Vibes Hub β Your Projects Talking to Each Other
|
|
325
|
+
|
|
326
|
+
The hub is where the magic happens. Every project you work on β across any number of computers β exports its `.vibe/` and `docs/` into one central repo. An AI analyzes them all and finds patterns, anti-patterns, and improvements that flow **back** into each project.
|
|
319
327
|
|
|
320
|
-
|
|
328
|
+
```
|
|
329
|
+
βββββββββββββββ vibes export ββββββββββββββββ vibes insights βββββββββββββββ
|
|
330
|
+
β Project A β βββββββββββββββββββ β Vibes Hub β βββββββββββββββββββββ β Project B β
|
|
331
|
+
β .vibe/ β β _insights/ β β .vibe/ β
|
|
332
|
+
β docs/ β β patterns β "You should adopt β docs/ β
|
|
333
|
+
βββββββββββββββ β standards β Project A's auth" βββββββββββββββ
|
|
334
|
+
β opportunitiesβ
|
|
335
|
+
ββββββββββββββββ
|
|
336
|
+
```
|
|
321
337
|
|
|
322
|
-
###
|
|
338
|
+
### Step 1: Set up the hub (one time)
|
|
323
339
|
|
|
324
340
|
```bash
|
|
325
341
|
vibes hub ~/Documents/VibeHub
|
|
326
342
|
```
|
|
327
343
|
|
|
328
|
-
|
|
344
|
+
Creates a folder with git, a README, and an `_insights/` intelligence layer. Connect it to a private GitHub repo so it syncs across machines.
|
|
329
345
|
|
|
330
|
-
### Export from
|
|
346
|
+
### Step 2: Export from each project
|
|
331
347
|
|
|
332
348
|
```bash
|
|
333
349
|
cd your-project
|
|
@@ -336,13 +352,9 @@ vibes export
|
|
|
336
352
|
|
|
337
353
|
Copies `.vibe/` and `docs/` into your hub, organized by project name. Auto-generates an `index.md` dashboard.
|
|
338
354
|
|
|
339
|
-
###
|
|
340
|
-
|
|
341
|
-
Push from one machine, pull on another. Same private repo, all your projects.
|
|
342
|
-
|
|
343
|
-
### Cross-project intelligence
|
|
355
|
+
### Step 3: AI analysis (after 3+ projects)
|
|
344
356
|
|
|
345
|
-
|
|
357
|
+
Tell your AI agent:
|
|
346
358
|
|
|
347
359
|
> *"Read `_insights/ANALYZE.md` in my Vibes Hub and follow the instructions."*
|
|
348
360
|
|
|
@@ -350,29 +362,69 @@ The AI reads every project's `.vibe/` files and fills out:
|
|
|
350
362
|
|
|
351
363
|
| File | What it finds |
|
|
352
364
|
|:---|:---|
|
|
353
|
-
| `_insights/patterns.md` | Architecture, security, and tech stack patterns across projects |
|
|
354
|
-
| `_insights/standards.md` | Universal rules that should apply everywhere |
|
|
355
|
-
| `_insights/opportunities.md` | "
|
|
365
|
+
| `_insights/patterns.md` | Architecture, security, and tech stack patterns across all projects |
|
|
366
|
+
| `_insights/standards.md` | Universal rules that should apply everywhere (file size limits, schema validation, etc.) |
|
|
367
|
+
| `_insights/opportunities.md` | Specific transfers β "Project A does X well β Project B should adopt it because Y" |
|
|
368
|
+
|
|
369
|
+
### Step 4: Pull feedback into any project
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
cd your-project
|
|
373
|
+
vibes insights
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
This reads the hub's `_insights/` and shows you **what applies to the project you're standing in**:
|
|
377
|
+
|
|
378
|
+
```
|
|
379
|
+
π‘ vibes insights β JustLegal
|
|
380
|
+
|
|
381
|
+
ββ Opportunities ββ
|
|
382
|
+
|
|
383
|
+
β‘ open-season β JustLegal
|
|
384
|
+
Adopt EXIF metadata scrubbing for user-uploaded files.
|
|
385
|
+
β‘ JustPolitics β JustLegal / Spark
|
|
386
|
+
Mobile-responsive WebKit GPU blur optimizations.
|
|
387
|
+
|
|
388
|
+
ββ Universal Standards ββ
|
|
389
|
+
|
|
390
|
+
β Strict File Size Limits
|
|
391
|
+
β Structured Schema Validation
|
|
392
|
+
β Local API Access Authentication
|
|
393
|
+
|
|
394
|
+
ββ Anti-Patterns ββ
|
|
395
|
+
|
|
396
|
+
β Unsecured Localhost APIs
|
|
397
|
+
|
|
398
|
+
16 insights found. Review _insights/ in your hub for full details.
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
One project's best practice becomes every project's standard. **Your portfolio gets smarter every time you export.**
|
|
402
|
+
|
|
403
|
+
### Multi-machine sync
|
|
404
|
+
|
|
405
|
+
The hub is a standard Git repo. Push from one machine, pull on another:
|
|
406
|
+
|
|
407
|
+
1. **First machine:** `vibes hub ~/Documents/VibeHub` β push to private GitHub repo
|
|
408
|
+
2. **Other machines:** Clone the repo β `vibes hub ~/path/to/cloned/VibeHub`
|
|
409
|
+
3. Export projects on any machine β commit & push β pull on the other β `vibes insights`
|
|
356
410
|
|
|
357
411
|
```
|
|
358
412
|
VibeHub/
|
|
359
|
-
βββ index.md
|
|
413
|
+
βββ index.md Auto-generated dashboard
|
|
360
414
|
βββ _insights/
|
|
361
|
-
β βββ ANALYZE.md
|
|
362
|
-
β βββ patterns.md
|
|
363
|
-
β βββ standards.md
|
|
364
|
-
β βββ opportunities.md
|
|
365
|
-
βββ
|
|
415
|
+
β βββ ANALYZE.md Prompt for AI analysis
|
|
416
|
+
β βββ patterns.md Cross-project patterns
|
|
417
|
+
β βββ standards.md Universal standards
|
|
418
|
+
β βββ opportunities.md Transferable improvements
|
|
419
|
+
βββ ProjectA/
|
|
366
420
|
β βββ .vibe/
|
|
367
421
|
β βββ docs/
|
|
368
|
-
βββ
|
|
422
|
+
βββ ProjectB/
|
|
369
423
|
β βββ .vibe/
|
|
370
424
|
β βββ docs/
|
|
371
425
|
βββ ...
|
|
372
426
|
```
|
|
373
427
|
|
|
374
|
-
One project's best practice becomes every project's standard.
|
|
375
|
-
|
|
376
428
|
---
|
|
377
429
|
|
|
378
430
|
## π Works With Everything
|
package/bin/vibes.js
CHANGED
|
@@ -11,6 +11,7 @@ const path = require('path');
|
|
|
11
11
|
// Config
|
|
12
12
|
// βββββββββββββββββββββββββββββββββββββββββββββ
|
|
13
13
|
|
|
14
|
+
const CLI_VERSION = require(path.join(__dirname, '..', 'package.json')).version;
|
|
14
15
|
const VIBE_DIR = '.vibe';
|
|
15
16
|
const DOCS_DIR = 'docs';
|
|
16
17
|
const TEMPLATES_DIR = path.join(__dirname, '..', 'templates');
|
|
@@ -370,6 +371,17 @@ function cmdCheck(targetDir) {
|
|
|
370
371
|
console.log(dim(' ββ docs/ ββ'));
|
|
371
372
|
console.log('');
|
|
372
373
|
|
|
374
|
+
// Check for non-lowercase filenames in docs/
|
|
375
|
+
try {
|
|
376
|
+
const actualFiles = fs.readdirSync(docsDir).filter(f => f.endsWith('.md'));
|
|
377
|
+
for (const f of actualFiles) {
|
|
378
|
+
if (f !== 'README.md' && f !== f.toLowerCase()) {
|
|
379
|
+
console.log(yellow(' β ') + f + yellow(' β should be lowercase (' + f.toLowerCase() + ')'));
|
|
380
|
+
warnings++;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
} catch {}
|
|
384
|
+
|
|
373
385
|
for (const file of DOCS_FILES) {
|
|
374
386
|
const fp = path.join(docsDir, file);
|
|
375
387
|
if (!exists(fp)) { console.log(yellow(' β ') + file + ' β missing'); warnings++; continue; }
|
|
@@ -394,6 +406,22 @@ function cmdCheck(targetDir) {
|
|
|
394
406
|
}
|
|
395
407
|
}
|
|
396
408
|
|
|
409
|
+
// βββ Cross-check: vibe_version staleness βββ
|
|
410
|
+
const stateFile = path.join(vibeDir, 'state.json');
|
|
411
|
+
if (hasVibe && exists(stateFile)) {
|
|
412
|
+
try {
|
|
413
|
+
const state = JSON.parse(fs.readFileSync(stateFile, 'utf-8'));
|
|
414
|
+
if (state.vibe_version && state.vibe_version !== CLI_VERSION) {
|
|
415
|
+
const major = (v) => (v || '').split('.')[0];
|
|
416
|
+
if (major(state.vibe_version) !== major(CLI_VERSION)) {
|
|
417
|
+
console.log('');
|
|
418
|
+
console.log(yellow(' β ') + `vibe_version in state.json is ${state.vibe_version}, CLI is ${CLI_VERSION}`);
|
|
419
|
+
warnings++;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
} catch {}
|
|
423
|
+
}
|
|
424
|
+
|
|
397
425
|
// βββ Summary βββ
|
|
398
426
|
console.log('');
|
|
399
427
|
let result = '';
|
|
@@ -870,6 +898,101 @@ function cmdHub(hubPathArg) {
|
|
|
870
898
|
console.log('');
|
|
871
899
|
}
|
|
872
900
|
|
|
901
|
+
function cmdInsights(targetDir) {
|
|
902
|
+
if (!exists(HUB_CONFIG)) {
|
|
903
|
+
console.log(red('\n β No hub configured. Run "vibes hub <path>" first.\n'));
|
|
904
|
+
process.exit(1);
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
const hubPath = fs.readFileSync(HUB_CONFIG, 'utf-8').trim();
|
|
908
|
+
const insightsDir = path.join(hubPath, '_insights');
|
|
909
|
+
|
|
910
|
+
if (!exists(insightsDir)) {
|
|
911
|
+
console.log(red('\n β No _insights/ folder in hub. Run the analysis prompt first.\n'));
|
|
912
|
+
process.exit(1);
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
const name = getProjectName(targetDir);
|
|
916
|
+
const nameL = name.toLowerCase();
|
|
917
|
+
|
|
918
|
+
console.log('');
|
|
919
|
+
console.log(bold(` π‘ vibes insights β ${name}`));
|
|
920
|
+
|
|
921
|
+
let totalHits = 0;
|
|
922
|
+
|
|
923
|
+
// βββ Scan opportunities.md βββ
|
|
924
|
+
const oppFile = path.join(insightsDir, 'opportunities.md');
|
|
925
|
+
if (exists(oppFile)) {
|
|
926
|
+
const content = fs.readFileSync(oppFile, 'utf-8');
|
|
927
|
+
// Split by ## headers
|
|
928
|
+
const sections = content.split(/^## /gm).filter(s => s.trim());
|
|
929
|
+
const relevant = sections.filter(s => s.toLowerCase().includes(nameL));
|
|
930
|
+
|
|
931
|
+
if (relevant.length > 0) {
|
|
932
|
+
console.log('');
|
|
933
|
+
console.log(dim(' ββ Opportunities ββ'));
|
|
934
|
+
console.log('');
|
|
935
|
+
for (const section of relevant) {
|
|
936
|
+
const title = section.split('\n')[0].trim();
|
|
937
|
+
const whatMatch = section.match(/\*\*What:\*\*\s*(.+)/i);
|
|
938
|
+
const what = whatMatch ? whatMatch[1].trim() : '';
|
|
939
|
+
console.log(cyan(' β‘ ') + title);
|
|
940
|
+
if (what) console.log(dim(' ') + what);
|
|
941
|
+
totalHits++;
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
// βββ Scan standards.md βββ
|
|
947
|
+
const stdFile = path.join(insightsDir, 'standards.md');
|
|
948
|
+
if (exists(stdFile)) {
|
|
949
|
+
const content = fs.readFileSync(stdFile, 'utf-8');
|
|
950
|
+
const bullets = content.match(/^\d+\.\s+\*\*.+\*\*/gm) || [];
|
|
951
|
+
|
|
952
|
+
if (bullets.length > 0) {
|
|
953
|
+
console.log('');
|
|
954
|
+
console.log(dim(' ββ Universal Standards ββ'));
|
|
955
|
+
console.log('');
|
|
956
|
+
for (const bullet of bullets) {
|
|
957
|
+
const clean = bullet.replace(/^\d+\.\s+/, '').replace(/\*\*/g, '');
|
|
958
|
+
console.log(dim(' β ') + clean);
|
|
959
|
+
totalHits++;
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
// βββ Scan patterns.md for anti-patterns mentioning this project βββ
|
|
965
|
+
const patFile = path.join(insightsDir, 'patterns.md');
|
|
966
|
+
if (exists(patFile)) {
|
|
967
|
+
const content = fs.readFileSync(patFile, 'utf-8');
|
|
968
|
+
const antiSection = content.split('## Common Anti-Patterns')[1];
|
|
969
|
+
if (antiSection) {
|
|
970
|
+
const items = antiSection.split(/^\d+\./gm).filter(s => s.trim());
|
|
971
|
+
const relevant = items.filter(s => s.toLowerCase().includes(nameL));
|
|
972
|
+
|
|
973
|
+
if (relevant.length > 0) {
|
|
974
|
+
console.log('');
|
|
975
|
+
console.log(dim(' ββ Anti-Patterns ββ'));
|
|
976
|
+
console.log('');
|
|
977
|
+
for (const item of relevant) {
|
|
978
|
+
const title = item.match(/\*\*(.+?)\*\*/)?.[1] || item.split('\n')[0].trim();
|
|
979
|
+
console.log(yellow(' β ') + title);
|
|
980
|
+
totalHits++;
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
console.log('');
|
|
987
|
+
if (totalHits === 0) {
|
|
988
|
+
console.log(dim(' No specific insights found for this project.'));
|
|
989
|
+
console.log(dim(' Export 3+ projects, then run the analysis prompt in _insights/ANALYZE.md.'));
|
|
990
|
+
} else {
|
|
991
|
+
console.log(` ${totalHits} insights found. Review _insights/ in your hub for full details.`);
|
|
992
|
+
}
|
|
993
|
+
console.log('');
|
|
994
|
+
}
|
|
995
|
+
|
|
873
996
|
function printNextSteps() {
|
|
874
997
|
console.log('');
|
|
875
998
|
console.log(bold(' What to do next:'));
|
|
@@ -896,6 +1019,7 @@ function printHelp() {
|
|
|
896
1019
|
console.log(' vibes check Validate all files for completeness');
|
|
897
1020
|
console.log(' vibes status Quick health dashboard');
|
|
898
1021
|
console.log(' vibes reset Delete and recreate everything');
|
|
1022
|
+
console.log(' vibes insights Show hub feedback for this project');
|
|
899
1023
|
console.log('');
|
|
900
1024
|
console.log(' ' + bold('Hub (cross-project sync):'));
|
|
901
1025
|
console.log('');
|
|
@@ -934,8 +1058,9 @@ switch (command) {
|
|
|
934
1058
|
case 'check': cmdCheck(targetDir); break;
|
|
935
1059
|
case 'status': cmdStatus(targetDir); break;
|
|
936
1060
|
case 'reset': cmdReset(targetDir); break;
|
|
937
|
-
case 'export':
|
|
938
|
-
case 'hub':
|
|
1061
|
+
case 'export': cmdExport('.', args[1]); break;
|
|
1062
|
+
case 'hub': cmdHub(args[1]); break;
|
|
1063
|
+
case 'insights': cmdInsights(targetDir); break;
|
|
939
1064
|
case 'help': case '--help': case '-h': printHelp(); break;
|
|
940
1065
|
default:
|
|
941
1066
|
console.log(red(`\n Unknown command: ${command}`));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibe-me",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "The complete semantic layer for any project. Repository memory, product memory, business memory, AI instructions, and living context β so any human or AI can understand your project without reading the source.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vibes",
|
package/spec/VIBE_GUIDE.md
CHANGED
|
@@ -818,6 +818,57 @@ Never put API keys, passwords, internal URLs, or customer data in `.vibe/` files
|
|
|
818
818
|
|
|
819
819
|
---
|
|
820
820
|
|
|
821
|
+
## Beyond One Project β The Vibes Hub
|
|
822
|
+
|
|
823
|
+
Everything above describes how to create a `.vibe/` layer for **one** project. But the real power emerges when you connect multiple projects together.
|
|
824
|
+
|
|
825
|
+
### The Problem
|
|
826
|
+
|
|
827
|
+
You're building 5 projects. One has great authentication. Another has a clever caching strategy. A third has a security hole that the first project already solved. But you'd never know β because each project is an island.
|
|
828
|
+
|
|
829
|
+
### The Solution: Hub + Insights
|
|
830
|
+
|
|
831
|
+
The `vibe-me` CLI includes a **hub** β a central folder (synced via Git) that collects the `.vibe/` and `docs/` from all your projects. After exporting 3+ projects, an AI analyzes them all and generates cross-project intelligence:
|
|
832
|
+
|
|
833
|
+
```bash
|
|
834
|
+
# One-time: create a hub
|
|
835
|
+
vibes hub ~/Documents/VibeHub
|
|
836
|
+
|
|
837
|
+
# From any project: export to the hub
|
|
838
|
+
vibes export
|
|
839
|
+
|
|
840
|
+
# From any project: see what the hub knows about you
|
|
841
|
+
vibes insights
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
The AI analysis produces three files in `_insights/`:
|
|
845
|
+
|
|
846
|
+
- **patterns.md** β Architecture and security patterns shared across projects
|
|
847
|
+
- **standards.md** β Universal rules that should apply everywhere (file size limits, schema validation, token auth, etc.)
|
|
848
|
+
- **opportunities.md** β Specific transfers: "Project A does X well β Project B should adopt it because Y"
|
|
849
|
+
|
|
850
|
+
Then `vibes insights` reads those files and shows you **only what applies to the project you're standing in** β opportunities targeted at you, standards you might be missing, and anti-patterns you share with other projects.
|
|
851
|
+
|
|
852
|
+
### Why This Matters
|
|
853
|
+
|
|
854
|
+
Without a hub, your best ideas are trapped in one project. With a hub:
|
|
855
|
+
- Security patterns from one project become standards for all of them
|
|
856
|
+
- A caching strategy you invented in one app gets recommended to another
|
|
857
|
+
- An anti-pattern detected in one project gets flagged everywhere it appears
|
|
858
|
+
- Your portfolio gets smarter every time you export
|
|
859
|
+
|
|
860
|
+
### The Workflow
|
|
861
|
+
|
|
862
|
+
```
|
|
863
|
+
Scaffold (.vibe/) β Fill out β Validate (vibes check) β Export to hub β AI analysis β vibes insights
|
|
864
|
+
β β
|
|
865
|
+
βββββββββββββββββββββ Apply feedback, improve βββββββββββββββββββββββββββββββββββββββββββββ
|
|
866
|
+
```
|
|
867
|
+
|
|
868
|
+
This is not just documentation. It's a **feedback loop across your entire portfolio**.
|
|
869
|
+
|
|
870
|
+
---
|
|
871
|
+
|
|
821
872
|
## FAQ
|
|
822
873
|
|
|
823
874
|
**Q: What if the project is tiny (one file, 200 lines)?**
|
package/templates/state.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"project": "PROJECT_NAME",
|
|
2
3
|
"version": "0.1.0",
|
|
3
4
|
"health": "active",
|
|
4
5
|
"status": "prototype",
|
|
@@ -7,6 +8,6 @@
|
|
|
7
8
|
"known_issues": [],
|
|
8
9
|
"dependencies": [],
|
|
9
10
|
"constraints": [],
|
|
10
|
-
"vibe_version": "
|
|
11
|
+
"vibe_version": "3.2.0",
|
|
11
12
|
"vibe_updated": "TIMESTAMP"
|
|
12
13
|
}
|