sinapse-ai 7.4.6 → 7.5.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/.claude/CLAUDE.md +10 -7
- package/.claude/rules/documentation-first.md +77 -0
- package/.claude/rules/mandatory-delegation.md +96 -0
- package/.codex/instructions.md +2 -1
- package/.sinapse-ai/constitution.md +59 -6
- package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +116 -0
- package/.sinapse-ai/core/doctor/checks/index.js +10 -2
- package/.sinapse-ai/core/doctor/index.js +4 -3
- package/.sinapse-ai/core/health-check/checks/project/constitution-consistency.js +157 -0
- package/.sinapse-ai/core/health-check/checks/project/index.js +2 -0
- package/.sinapse-ai/data/entity-registry.yaml +807 -777
- package/.sinapse-ai/data/registry-update-log.jsonl +16 -0
- package/.sinapse-ai/development/tasks/dev-develop-story.md +14 -6
- package/.sinapse-ai/development/tasks/health-check.yaml +2 -2
- package/.sinapse-ai/development/templates/chrome-brain/knowledge-base/claude-in-chrome.md +62 -0
- package/.sinapse-ai/install-manifest.yaml +29 -17
- package/.sinapse-ai/product/templates/ide-rules/claude-rules.md +10 -6
- package/README.en.md +10 -8
- package/README.md +10 -8
- package/bin/modules/chrome-brain-installer.js +173 -33
- package/bin/sinapse.js +8 -0
- package/docs/framework/memory-lifecycle.md +1 -1
- package/docs/getting-started.md +2 -2
- package/docs/guides/user-guide.md +9 -7
- package/docs/guides/workflows/xref-phase6-supporting.md +1 -1
- package/docs/guides/workflows-guide.md +1 -1
- package/package.json +1 -1
- package/packages/sinapse-install/src/capabilities/chrome-brain.js +190 -16
- package/squads/claude-code-mastery/agents/project-integrator.md +1 -1
|
@@ -180,6 +180,16 @@ function generateChromeEnsure(chromePath, platform) {
|
|
|
180
180
|
const safePath = sanitizeChromePath(chromePath);
|
|
181
181
|
const chromeCmd = `"${safePath}"`;
|
|
182
182
|
|
|
183
|
+
// Platform-aware kill command: Windows Git Bash lacks pgrep, use taskkill
|
|
184
|
+
const killCmd = platform === 'windows'
|
|
185
|
+
? `# Windows: use taskkill instead of pgrep (not available in Git Bash)
|
|
186
|
+
if command -v taskkill &>/dev/null; then
|
|
187
|
+
tasklist /FI "IMAGENAME eq chrome.exe" /NH 2>/dev/null | grep -i "chrome-debug-profile" | awk '{print $2}' | while read pid; do taskkill /PID "$pid" /F 2>/dev/null; done
|
|
188
|
+
elif command -v pgrep &>/dev/null; then
|
|
189
|
+
pgrep -f "user-data-dir=$CHROME_DEBUG_PROFILE" 2>/dev/null | xargs kill 2>/dev/null || true
|
|
190
|
+
fi`
|
|
191
|
+
: `pgrep -f "user-data-dir=$CHROME_DEBUG_PROFILE" 2>/dev/null | xargs kill 2>/dev/null || true`;
|
|
192
|
+
|
|
183
193
|
return `#!/bin/bash
|
|
184
194
|
# Chrome Brain — chrome-ensure (auto-launch)
|
|
185
195
|
# Called by PreToolUse hook before any chrome-devtools or claude-in-chrome tool
|
|
@@ -195,7 +205,7 @@ if curl -sf "$CDP" -o /dev/null --max-time 1 2>/dev/null; then
|
|
|
195
205
|
fi
|
|
196
206
|
|
|
197
207
|
# Kill stale debug profile instances only (never normal Chrome)
|
|
198
|
-
|
|
208
|
+
${killCmd}
|
|
199
209
|
sleep 1
|
|
200
210
|
|
|
201
211
|
# Launch Chrome with debug flags
|
|
@@ -222,6 +232,16 @@ function generateChromeDebug(chromePath, platform) {
|
|
|
222
232
|
const safePath = sanitizeChromePath(chromePath);
|
|
223
233
|
const chromeCmd = `"${safePath}"`;
|
|
224
234
|
|
|
235
|
+
// Platform-aware kill command: Windows Git Bash lacks pgrep, use taskkill
|
|
236
|
+
const killCmd = platform === 'windows'
|
|
237
|
+
? `# Windows: use taskkill instead of pgrep (not available in Git Bash)
|
|
238
|
+
if command -v taskkill &>/dev/null; then
|
|
239
|
+
tasklist /FI "IMAGENAME eq chrome.exe" /NH 2>/dev/null | grep -i "chrome-debug-profile" | awk '{print $2}' | while read pid; do taskkill /PID "$pid" /F 2>/dev/null; done
|
|
240
|
+
elif command -v pgrep &>/dev/null; then
|
|
241
|
+
pgrep -f "user-data-dir=$CHROME_DEBUG_PROFILE" 2>/dev/null | xargs kill 2>/dev/null || true
|
|
242
|
+
fi`
|
|
243
|
+
: `pgrep -f "user-data-dir=$CHROME_DEBUG_PROFILE" 2>/dev/null | xargs kill 2>/dev/null || true`;
|
|
244
|
+
|
|
225
245
|
return `#!/bin/bash
|
|
226
246
|
# Chrome Brain — chrome-debug (manual launch)
|
|
227
247
|
# User runs this directly if auto-launch doesn't work
|
|
@@ -236,7 +256,7 @@ if curl -s "http://127.0.0.1:$PORT/json/version" &>/dev/null; then
|
|
|
236
256
|
fi
|
|
237
257
|
|
|
238
258
|
# Kill only debug profile instances
|
|
239
|
-
|
|
259
|
+
${killCmd}
|
|
240
260
|
sleep 2
|
|
241
261
|
|
|
242
262
|
echo "Launching Chrome with remote debugging on port $PORT..."
|
|
@@ -342,14 +362,21 @@ function installScripts(chromePath, platform) {
|
|
|
342
362
|
function installHooks() {
|
|
343
363
|
step('Merging hooks into ~/.claude/settings.json...');
|
|
344
364
|
|
|
365
|
+
const binDir = detectPlatform() === 'windows'
|
|
366
|
+
? path.join(SINAPSE_DIR, 'bin')
|
|
367
|
+
: SCRIPTS_DIR;
|
|
368
|
+
const ensureCmd = path.join(binDir, 'chrome-ensure').replace(/\\/g, '/');
|
|
369
|
+
const logCmd = path.join(binDir, 'chrome-brain-log').replace(/\\/g, '/');
|
|
345
370
|
const hookDefs = {
|
|
346
371
|
PreToolUse: [
|
|
347
|
-
{ matcher: 'mcp__chrome-devtools__*', hooks: [{ type: 'command', command:
|
|
348
|
-
{ matcher: 'mcp__claude-in-chrome__*', hooks: [{ type: 'command', command:
|
|
372
|
+
{ matcher: 'mcp__chrome-devtools__*', hooks: [{ type: 'command', command: ensureCmd }] },
|
|
373
|
+
{ matcher: 'mcp__claude-in-chrome__*', hooks: [{ type: 'command', command: ensureCmd }] },
|
|
374
|
+
{ matcher: 'mcp__dev-browser__*', hooks: [{ type: 'command', command: ensureCmd }] },
|
|
349
375
|
],
|
|
350
376
|
PostToolUse: [
|
|
351
|
-
{ matcher: 'mcp__chrome-devtools__*', hooks: [{ type: 'command', command:
|
|
352
|
-
{ matcher: 'mcp__claude-in-chrome__*', hooks: [{ type: 'command', command:
|
|
377
|
+
{ matcher: 'mcp__chrome-devtools__*', hooks: [{ type: 'command', command: logCmd }] },
|
|
378
|
+
{ matcher: 'mcp__claude-in-chrome__*', hooks: [{ type: 'command', command: logCmd }] },
|
|
379
|
+
{ matcher: 'mcp__dev-browser__*', hooks: [{ type: 'command', command: logCmd }] },
|
|
353
380
|
],
|
|
354
381
|
};
|
|
355
382
|
|
|
@@ -359,23 +386,15 @@ function installHooks() {
|
|
|
359
386
|
} catch (error) {
|
|
360
387
|
fail(`Failed to merge hooks: ${error.message}`);
|
|
361
388
|
}
|
|
362
|
-
|
|
363
|
-
// Also create standalone hooks in ~/.sinapse/.claude/settings.json
|
|
364
|
-
const sinapseSettings = path.join(SINAPSE_DIR, '.claude', 'settings.json');
|
|
365
|
-
try {
|
|
366
|
-
writeJson(sinapseSettings, { hooks: hookDefs });
|
|
367
|
-
ok('Standalone hooks at ~/.sinapse/.claude/settings.json');
|
|
368
|
-
} catch (error) {
|
|
369
|
-
warn(`Could not create standalone hooks: ${error.message}`);
|
|
370
|
-
}
|
|
371
389
|
}
|
|
372
390
|
|
|
373
391
|
function installMcp(platform) {
|
|
374
|
-
step('Configuring Chrome DevTools MCP...');
|
|
392
|
+
step('Configuring Chrome DevTools + dev-browser MCP...');
|
|
375
393
|
|
|
376
394
|
const config = readJson(CLAUDE_JSON);
|
|
377
395
|
if (!config.mcpServers) config.mcpServers = {};
|
|
378
396
|
|
|
397
|
+
// --- Chrome DevTools MCP ---
|
|
379
398
|
if (platform === 'windows') {
|
|
380
399
|
config.mcpServers['chrome-devtools'] = {
|
|
381
400
|
command: 'cmd',
|
|
@@ -388,9 +407,35 @@ function installMcp(platform) {
|
|
|
388
407
|
};
|
|
389
408
|
}
|
|
390
409
|
|
|
410
|
+
// --- dev-browser MCP (Story 7.4.2) ---
|
|
411
|
+
// Install dev-browser globally first
|
|
412
|
+
try {
|
|
413
|
+
const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
414
|
+
execSync(`${npmCmd} install -g dev-browser`, { stdio: 'pipe', timeout: 120000 });
|
|
415
|
+
ok('dev-browser installed globally');
|
|
416
|
+
} catch (error) {
|
|
417
|
+
warn(`dev-browser install failed: ${error.message}. Manual install: npm install -g dev-browser`);
|
|
418
|
+
// Do NOT throw — continue with rest of install
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
// Add dev-browser MCP entry regardless (user may install manually later)
|
|
422
|
+
if (platform === 'windows') {
|
|
423
|
+
config.mcpServers['dev-browser'] = {
|
|
424
|
+
command: 'cmd',
|
|
425
|
+
args: ['/c', 'dev-browser', '--connect'],
|
|
426
|
+
env: { CDP_URL: 'http://127.0.0.1:9222' },
|
|
427
|
+
};
|
|
428
|
+
} else {
|
|
429
|
+
config.mcpServers['dev-browser'] = {
|
|
430
|
+
command: 'dev-browser',
|
|
431
|
+
args: ['--connect'],
|
|
432
|
+
env: { CDP_URL: 'http://127.0.0.1:9222' },
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
|
|
391
436
|
try {
|
|
392
437
|
writeJson(CLAUDE_JSON, config);
|
|
393
|
-
ok('Chrome DevTools MCP configured in ~/.claude.json');
|
|
438
|
+
ok('Chrome DevTools + dev-browser MCP configured in ~/.claude.json');
|
|
394
439
|
} catch (error) {
|
|
395
440
|
fail(`Failed to configure MCP: ${error.message}`);
|
|
396
441
|
}
|
|
@@ -474,6 +519,19 @@ function createMinimalKB() {
|
|
|
474
519
|
'> Cross-squad capability for browser automation.',
|
|
475
520
|
'> Auto-activated. NSN Mode always on.',
|
|
476
521
|
'',
|
|
522
|
+
'## Browser Automation Tool Selection',
|
|
523
|
+
'',
|
|
524
|
+
'| Task | Preferred Tool | Why |',
|
|
525
|
+
'|------|---------------|-----|',
|
|
526
|
+
'| Navigate, click, fill form | chrome-devtools-mcp (CDP) | Fastest, direct browser control |',
|
|
527
|
+
'| Screenshot, Lighthouse audit | chrome-devtools-mcp (CDP) | Built-in |',
|
|
528
|
+
'| Scraping with JS logic | dev-browser (Playwright) | evaluate(), full DOM access |',
|
|
529
|
+
'| Batch / loops / headless | dev-browser (Playwright) | Headless mode supported |',
|
|
530
|
+
'| Cross-origin iframes | dev-browser or CDP Input events | CDP has InputEvent.dispatch |',
|
|
531
|
+
'| Visual fallback, coordinates | claude-in-chrome extension | Screen-level computer use |',
|
|
532
|
+
'',
|
|
533
|
+
'**Priority:** CDP > dev-browser > claude-in-chrome',
|
|
534
|
+
'',
|
|
477
535
|
'## Learnings Log',
|
|
478
536
|
'',
|
|
479
537
|
'> Updated automatically when NSN Mode resolves new barriers.',
|
|
@@ -481,6 +539,35 @@ function createMinimalKB() {
|
|
|
481
539
|
].join('\n'), 'utf8');
|
|
482
540
|
ok('Minimal chrome-brain.md created');
|
|
483
541
|
}
|
|
542
|
+
|
|
543
|
+
// Create claude-in-chrome.md KB (Story 7.4.2)
|
|
544
|
+
const cicKbPath = path.join(kbDir, 'claude-in-chrome.md');
|
|
545
|
+
if (!fs.existsSync(cicKbPath)) {
|
|
546
|
+
fs.writeFileSync(cicKbPath, [
|
|
547
|
+
'# claude-in-chrome — Chrome Extension for Visual Browser Interaction',
|
|
548
|
+
'',
|
|
549
|
+
'> Manual install required. This extension cannot be auto-installed via CLI.',
|
|
550
|
+
'',
|
|
551
|
+
'## Installation',
|
|
552
|
+
'',
|
|
553
|
+
'1. Open Chrome and navigate to the Chrome Web Store',
|
|
554
|
+
'2. Search for "claude-in-chrome" or visit:',
|
|
555
|
+
' https://chromewebstore.google.com/detail/claude-in-chrome',
|
|
556
|
+
'3. Click "Add to Chrome" and confirm',
|
|
557
|
+
'',
|
|
558
|
+
'## MCP Configuration',
|
|
559
|
+
'',
|
|
560
|
+
'The extension manages its own MCP registration automatically.',
|
|
561
|
+
'Do NOT manually add a "claude-in-chrome" entry to ~/.claude.json.',
|
|
562
|
+
'',
|
|
563
|
+
'## When to Use',
|
|
564
|
+
'',
|
|
565
|
+
'Use as visual fallback when CDP and Playwright cannot handle the task.',
|
|
566
|
+
'**Priority:** CDP > dev-browser > claude-in-chrome',
|
|
567
|
+
'',
|
|
568
|
+
].join('\n'), 'utf8');
|
|
569
|
+
ok('claude-in-chrome.md KB created');
|
|
570
|
+
}
|
|
484
571
|
}
|
|
485
572
|
|
|
486
573
|
// ============================================================================
|
|
@@ -510,6 +597,7 @@ function uninstallChromeBrain() {
|
|
|
510
597
|
const matchers = [
|
|
511
598
|
'mcp__chrome-devtools__*',
|
|
512
599
|
'mcp__claude-in-chrome__*',
|
|
600
|
+
'mcp__dev-browser__*',
|
|
513
601
|
];
|
|
514
602
|
|
|
515
603
|
if (fs.existsSync(CLAUDE_SETTINGS)) {
|
|
@@ -518,22 +606,23 @@ function uninstallChromeBrain() {
|
|
|
518
606
|
removed++;
|
|
519
607
|
}
|
|
520
608
|
|
|
521
|
-
|
|
522
|
-
if (fs.existsSync(sinapseSettings)) {
|
|
523
|
-
fs.unlinkSync(sinapseSettings);
|
|
524
|
-
ok('Removed ~/.sinapse/.claude/settings.json');
|
|
525
|
-
removed++;
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
// Remove MCP config
|
|
609
|
+
// Remove MCP config (chrome-devtools + dev-browser)
|
|
529
610
|
step('Removing MCP configuration...');
|
|
530
611
|
if (fs.existsSync(CLAUDE_JSON)) {
|
|
531
612
|
const config = readJson(CLAUDE_JSON);
|
|
532
|
-
|
|
533
|
-
|
|
613
|
+
let mcpChanged = false;
|
|
614
|
+
if (config.mcpServers) {
|
|
615
|
+
for (const key of ['chrome-devtools', 'dev-browser']) {
|
|
616
|
+
if (config.mcpServers[key]) {
|
|
617
|
+
delete config.mcpServers[key];
|
|
618
|
+
mcpChanged = true;
|
|
619
|
+
removed++;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
if (mcpChanged) {
|
|
534
624
|
writeJson(CLAUDE_JSON, config);
|
|
535
|
-
ok('Removed chrome-devtools from ~/.claude.json');
|
|
536
|
-
removed++;
|
|
625
|
+
ok('Removed chrome-devtools + dev-browser from ~/.claude.json');
|
|
537
626
|
}
|
|
538
627
|
}
|
|
539
628
|
|
|
@@ -542,6 +631,7 @@ function uninstallChromeBrain() {
|
|
|
542
631
|
const kbFiles = [
|
|
543
632
|
path.join(SINAPSE_DIR, '.claude', 'rules', 'chrome-brain-autoload.md'),
|
|
544
633
|
path.join(SINAPSE_DIR, 'sinapse', 'knowledge-base', 'chrome-brain.md'),
|
|
634
|
+
path.join(SINAPSE_DIR, 'sinapse', 'knowledge-base', 'claude-in-chrome.md'),
|
|
545
635
|
];
|
|
546
636
|
|
|
547
637
|
for (const file of kbFiles) {
|
|
@@ -612,7 +702,7 @@ function getChromeBrainStatus() {
|
|
|
612
702
|
fail('Hooks: ~/.claude/settings.json not found');
|
|
613
703
|
}
|
|
614
704
|
|
|
615
|
-
// MCP
|
|
705
|
+
// MCP (chrome-devtools)
|
|
616
706
|
total++;
|
|
617
707
|
if (fs.existsSync(CLAUDE_JSON)) {
|
|
618
708
|
const config = readJson(CLAUDE_JSON);
|
|
@@ -626,7 +716,32 @@ function getChromeBrainStatus() {
|
|
|
626
716
|
fail('MCP: ~/.claude.json not found');
|
|
627
717
|
}
|
|
628
718
|
|
|
629
|
-
//
|
|
719
|
+
// MCP (dev-browser)
|
|
720
|
+
total++;
|
|
721
|
+
if (fs.existsSync(CLAUDE_JSON)) {
|
|
722
|
+
const config = readJson(CLAUDE_JSON);
|
|
723
|
+
if (config.mcpServers?.['dev-browser']) {
|
|
724
|
+
ok('MCP: dev-browser configured');
|
|
725
|
+
installed++;
|
|
726
|
+
} else {
|
|
727
|
+
fail('MCP: dev-browser not configured');
|
|
728
|
+
}
|
|
729
|
+
} else {
|
|
730
|
+
fail('MCP: ~/.claude.json not found');
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
// dev-browser global install
|
|
734
|
+
total++;
|
|
735
|
+
try {
|
|
736
|
+
const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
737
|
+
execSync(`${npmCmd} list -g dev-browser`, { stdio: 'pipe', timeout: 10000 });
|
|
738
|
+
ok('dev-browser: installed globally');
|
|
739
|
+
installed++;
|
|
740
|
+
} catch {
|
|
741
|
+
fail('dev-browser: not installed globally (run: npm install -g dev-browser)');
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
// KB (chrome-brain.md)
|
|
630
745
|
total++;
|
|
631
746
|
const kbPath = path.join(SINAPSE_DIR, 'sinapse', 'knowledge-base', 'chrome-brain.md');
|
|
632
747
|
if (fs.existsSync(kbPath)) {
|
|
@@ -636,6 +751,19 @@ function getChromeBrainStatus() {
|
|
|
636
751
|
fail('KB: chrome-brain.md not found');
|
|
637
752
|
}
|
|
638
753
|
|
|
754
|
+
// KB (claude-in-chrome.md)
|
|
755
|
+
total++;
|
|
756
|
+
const cicKbPath = path.join(SINAPSE_DIR, 'sinapse', 'knowledge-base', 'claude-in-chrome.md');
|
|
757
|
+
if (fs.existsSync(cicKbPath)) {
|
|
758
|
+
ok('KB: claude-in-chrome.md');
|
|
759
|
+
installed++;
|
|
760
|
+
} else {
|
|
761
|
+
fail('KB: claude-in-chrome.md not found');
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
// claude-in-chrome advisory
|
|
765
|
+
info('claude-in-chrome: Chrome extension (manual install from Chrome Web Store)');
|
|
766
|
+
|
|
639
767
|
// Squad integrations
|
|
640
768
|
total++;
|
|
641
769
|
let squadCount = 0;
|
|
@@ -709,8 +837,18 @@ async function runChromeBrain(subArgs) {
|
|
|
709
837
|
step('Step 5/5 — Installing knowledge base...');
|
|
710
838
|
installKnowledgeBase();
|
|
711
839
|
|
|
840
|
+
// claude-in-chrome instructions (Story 7.4.2)
|
|
841
|
+
console.log(`\n${bold(yellow('Manual step required: claude-in-chrome extension'))}`);
|
|
842
|
+
console.log(' Install from Chrome Web Store:');
|
|
843
|
+
console.log(' https://chromewebstore.google.com/detail/claude-in-chrome');
|
|
844
|
+
console.log(' The extension manages its own MCP registration — no CLI config needed.');
|
|
845
|
+
|
|
712
846
|
// Summary
|
|
713
847
|
console.log(`\n${bold(green('Chrome Brain installed successfully!'))}`);
|
|
848
|
+
console.log(`\n ${cyan('Tools installed:')}`);
|
|
849
|
+
console.log(' chrome-devtools-mcp # CDP: fast clicks, screenshots, Lighthouse');
|
|
850
|
+
console.log(' dev-browser # Playwright: scraping, batch, headless');
|
|
851
|
+
console.log(' claude-in-chrome # Visual fallback (manual Chrome extension)');
|
|
714
852
|
console.log(`\n ${cyan('To test:')}`);
|
|
715
853
|
console.log(' chrome-debug # Launch Chrome with debug port');
|
|
716
854
|
console.log(' chrome-ensure # Auto-launch (used by hooks)');
|
|
@@ -737,8 +875,10 @@ ${bold('USAGE:')}
|
|
|
737
875
|
sinapse chrome-brain status Check installation status
|
|
738
876
|
|
|
739
877
|
${bold('WHAT IT DOES:')}
|
|
740
|
-
Gives ALL SINAPSE agents the
|
|
741
|
-
|
|
878
|
+
Gives ALL SINAPSE agents the full browser automation stack:
|
|
879
|
+
- chrome-devtools-mcp (CDP): fast clicks, screenshots, Lighthouse
|
|
880
|
+
- dev-browser (Playwright): scraping, batch, headless
|
|
881
|
+
- claude-in-chrome (extension): visual fallback, computer use
|
|
742
882
|
Auto-activates when needed. No manual commands required after install.
|
|
743
883
|
`);
|
|
744
884
|
}
|
package/bin/sinapse.js
CHANGED
|
@@ -367,6 +367,7 @@ async function runDoctor(options = {}) {
|
|
|
367
367
|
json: options.json || false,
|
|
368
368
|
dryRun: options.dryRun || false,
|
|
369
369
|
quiet: options.quiet || false,
|
|
370
|
+
deep: options.deep || false,
|
|
370
371
|
projectRoot: process.cwd(),
|
|
371
372
|
});
|
|
372
373
|
|
|
@@ -578,6 +579,7 @@ Run health checks on your SINAPSE installation.
|
|
|
578
579
|
|
|
579
580
|
Options:
|
|
580
581
|
--fix Automatically fix detected issues
|
|
582
|
+
--deep Run additional deep validation checks (constitution consistency, etc.)
|
|
581
583
|
--dry-run Show what --fix would do without making changes
|
|
582
584
|
--json Output results as structured JSON
|
|
583
585
|
--quiet Minimal output (exit code only)
|
|
@@ -590,6 +592,11 @@ Checks performed:
|
|
|
590
592
|
• Task files have required fields
|
|
591
593
|
• Dependencies are installed
|
|
592
594
|
|
|
595
|
+
Deep checks (--deep):
|
|
596
|
+
• Constitution consistency across all documents
|
|
597
|
+
• Article references synchronized
|
|
598
|
+
• Required rule files for NON-NEGOTIABLE articles
|
|
599
|
+
|
|
593
600
|
Exit Codes:
|
|
594
601
|
0 All checks passed (or issues fixed with --fix)
|
|
595
602
|
1 Issues detected (run with --fix to repair)
|
|
@@ -1038,6 +1045,7 @@ async function main() {
|
|
|
1038
1045
|
json: doctorArgs.includes('--json'),
|
|
1039
1046
|
dryRun: doctorArgs.includes('--dry-run'),
|
|
1040
1047
|
quiet: doctorArgs.includes('--quiet'),
|
|
1048
|
+
deep: doctorArgs.includes('--deep'),
|
|
1041
1049
|
};
|
|
1042
1050
|
await runDoctor(doctorOptions);
|
|
1043
1051
|
break;
|
|
@@ -70,7 +70,7 @@ Each section of `.claude/CLAUDE.md` has a clear ownership classification:
|
|
|
70
70
|
| Estrutura do Projeto | Framework | L2 | Generated from directory scan |
|
|
71
71
|
| Framework vs Project Boundary | Framework | L1 | Core architecture |
|
|
72
72
|
| Sistema de Agentes | Framework | L2 | Agent definitions from `.sinapse-ai/development/agents/` |
|
|
73
|
-
|
|
|
73
|
+
| Documentation-First Development | Framework | L2 | Process definition |
|
|
74
74
|
| Padroes de Codigo | Project | L3 | Customizable per project |
|
|
75
75
|
| Testes & Quality Gates | Project | L3 | Customizable test commands |
|
|
76
76
|
| Convencoes Git | Project | L3 | Customizable conventions |
|
package/docs/getting-started.md
CHANGED
|
@@ -250,9 +250,9 @@ npm run validate:parity
|
|
|
250
250
|
npm run lint && npm run typecheck && npm test
|
|
251
251
|
```
|
|
252
252
|
|
|
253
|
-
###
|
|
253
|
+
### Documentation-First Development
|
|
254
254
|
|
|
255
|
-
All SINAPSE development follows
|
|
255
|
+
All SINAPSE development follows the documentation pipeline automatically. Stories live in `docs/stories/`. Each story contains:
|
|
256
256
|
- Acceptance criteria with checkboxes
|
|
257
257
|
- Tasks mapped to specific ACs
|
|
258
258
|
- CodeRabbit integration for automated review
|
|
@@ -302,13 +302,15 @@ npm run lint # Check code style
|
|
|
302
302
|
npm run build # Build project
|
|
303
303
|
```
|
|
304
304
|
|
|
305
|
-
###
|
|
306
|
-
|
|
307
|
-
1. **
|
|
308
|
-
2. **
|
|
309
|
-
3. **
|
|
310
|
-
4. **
|
|
311
|
-
5. **
|
|
305
|
+
### Documentation-First Development
|
|
306
|
+
|
|
307
|
+
1. **Define the epic** - Every initiative starts with an epic
|
|
308
|
+
2. **Create a story** - Use `*create-story` to define requirements with acceptance criteria
|
|
309
|
+
3. **Validate** - @product-lead validates the story before any code
|
|
310
|
+
4. **Work from stories** - All development starts with a validated story in `docs/stories/`
|
|
311
|
+
5. **Update progress** - Mark checkboxes as tasks complete: `[ ]` --> `[x]`
|
|
312
|
+
6. **Track changes** - Maintain the File List section in the story
|
|
313
|
+
7. **Follow criteria** - Implement exactly what the acceptance criteria specify
|
|
312
314
|
|
|
313
315
|
---
|
|
314
316
|
|
|
@@ -485,7 +485,7 @@ No references to `.sinapse-ai/processes/` were found in the codebase.
|
|
|
485
485
|
|
|
486
486
|
| File | Purpose | Consumers | Cross-refs | Orphan? |
|
|
487
487
|
|------|---------|-----------|------------|---------|
|
|
488
|
-
| `constitution.md` | **FOUNDATIONAL** -- Defines non-negotiable principles (CLI First, Agent Authority,
|
|
488
|
+
| `constitution.md` | **FOUNDATIONAL** -- Defines non-negotiable principles (CLI First, Agent Authority, Documentation-First Development, No Invention, Quality First, Absolute Imports, Ecosystem Metrics Accuracy, Mandatory Delegation) | All agents, all tasks, CLAUDE.md | Referenced by `dev-develop-story.md`, `github-devops-pre-push-quality-gate.md`, `analyze-cross-artifact.md`, `spec-write-spec.md` | No |
|
|
489
489
|
| `core-config.yaml` | **PRIMARY** Legacy/monolithic config (v2.3.0) with ALL configuration sections (13 sections) | `core/config/config-loader.js`, all agents, all tasks | Central configuration file; being split into L1-L4 hierarchy | No |
|
|
490
490
|
| `framework-config.yaml` | **NEW** L1 Framework config (read-only, shipped with npm) | `core/config/config-resolver.js`, config CLI | Part of ADR-PRO-002 config hierarchy; duplicates framework portions of `core-config.yaml` | No |
|
|
491
491
|
| `project-config.yaml` | **NEW** L2 Project config (team-shared, committed) | `core/config/config-resolver.js`, config CLI | Part of ADR-PRO-002; duplicates project portions of `core-config.yaml` | No |
|
|
@@ -401,7 +401,7 @@ For complete documentation for each workflow, including detailed step-by-step gu
|
|
|
401
401
|
|
|
402
402
|
- [HybridOps Workflow Diagram](./hybridOps/workflow-diagram.md) - Human-agent collaboration patterns
|
|
403
403
|
- [Agent Reference Guide](../agent-reference-guide.md) - Available agents and their capabilities
|
|
404
|
-
- [
|
|
404
|
+
- [Documentation-First Development](./user-guide.md#documentation-first-development) - The documentation pipeline
|
|
405
405
|
|
|
406
406
|
---
|
|
407
407
|
|