sinapse-ai 7.4.7 → 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 +164 -29
- 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 +183 -12
- 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..."
|
|
@@ -351,10 +371,12 @@ function installHooks() {
|
|
|
351
371
|
PreToolUse: [
|
|
352
372
|
{ matcher: 'mcp__chrome-devtools__*', hooks: [{ type: 'command', command: ensureCmd }] },
|
|
353
373
|
{ matcher: 'mcp__claude-in-chrome__*', hooks: [{ type: 'command', command: ensureCmd }] },
|
|
374
|
+
{ matcher: 'mcp__dev-browser__*', hooks: [{ type: 'command', command: ensureCmd }] },
|
|
354
375
|
],
|
|
355
376
|
PostToolUse: [
|
|
356
377
|
{ matcher: 'mcp__chrome-devtools__*', hooks: [{ type: 'command', command: logCmd }] },
|
|
357
378
|
{ matcher: 'mcp__claude-in-chrome__*', hooks: [{ type: 'command', command: logCmd }] },
|
|
379
|
+
{ matcher: 'mcp__dev-browser__*', hooks: [{ type: 'command', command: logCmd }] },
|
|
358
380
|
],
|
|
359
381
|
};
|
|
360
382
|
|
|
@@ -364,23 +386,15 @@ function installHooks() {
|
|
|
364
386
|
} catch (error) {
|
|
365
387
|
fail(`Failed to merge hooks: ${error.message}`);
|
|
366
388
|
}
|
|
367
|
-
|
|
368
|
-
// Also create standalone hooks in ~/.sinapse/.claude/settings.json
|
|
369
|
-
const sinapseSettings = path.join(SINAPSE_DIR, '.claude', 'settings.json');
|
|
370
|
-
try {
|
|
371
|
-
writeJson(sinapseSettings, { hooks: hookDefs });
|
|
372
|
-
ok('Standalone hooks at ~/.sinapse/.claude/settings.json');
|
|
373
|
-
} catch (error) {
|
|
374
|
-
warn(`Could not create standalone hooks: ${error.message}`);
|
|
375
|
-
}
|
|
376
389
|
}
|
|
377
390
|
|
|
378
391
|
function installMcp(platform) {
|
|
379
|
-
step('Configuring Chrome DevTools MCP...');
|
|
392
|
+
step('Configuring Chrome DevTools + dev-browser MCP...');
|
|
380
393
|
|
|
381
394
|
const config = readJson(CLAUDE_JSON);
|
|
382
395
|
if (!config.mcpServers) config.mcpServers = {};
|
|
383
396
|
|
|
397
|
+
// --- Chrome DevTools MCP ---
|
|
384
398
|
if (platform === 'windows') {
|
|
385
399
|
config.mcpServers['chrome-devtools'] = {
|
|
386
400
|
command: 'cmd',
|
|
@@ -393,9 +407,35 @@ function installMcp(platform) {
|
|
|
393
407
|
};
|
|
394
408
|
}
|
|
395
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
|
+
|
|
396
436
|
try {
|
|
397
437
|
writeJson(CLAUDE_JSON, config);
|
|
398
|
-
ok('Chrome DevTools MCP configured in ~/.claude.json');
|
|
438
|
+
ok('Chrome DevTools + dev-browser MCP configured in ~/.claude.json');
|
|
399
439
|
} catch (error) {
|
|
400
440
|
fail(`Failed to configure MCP: ${error.message}`);
|
|
401
441
|
}
|
|
@@ -479,6 +519,19 @@ function createMinimalKB() {
|
|
|
479
519
|
'> Cross-squad capability for browser automation.',
|
|
480
520
|
'> Auto-activated. NSN Mode always on.',
|
|
481
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
|
+
'',
|
|
482
535
|
'## Learnings Log',
|
|
483
536
|
'',
|
|
484
537
|
'> Updated automatically when NSN Mode resolves new barriers.',
|
|
@@ -486,6 +539,35 @@ function createMinimalKB() {
|
|
|
486
539
|
].join('\n'), 'utf8');
|
|
487
540
|
ok('Minimal chrome-brain.md created');
|
|
488
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
|
+
}
|
|
489
571
|
}
|
|
490
572
|
|
|
491
573
|
// ============================================================================
|
|
@@ -515,6 +597,7 @@ function uninstallChromeBrain() {
|
|
|
515
597
|
const matchers = [
|
|
516
598
|
'mcp__chrome-devtools__*',
|
|
517
599
|
'mcp__claude-in-chrome__*',
|
|
600
|
+
'mcp__dev-browser__*',
|
|
518
601
|
];
|
|
519
602
|
|
|
520
603
|
if (fs.existsSync(CLAUDE_SETTINGS)) {
|
|
@@ -523,22 +606,23 @@ function uninstallChromeBrain() {
|
|
|
523
606
|
removed++;
|
|
524
607
|
}
|
|
525
608
|
|
|
526
|
-
|
|
527
|
-
if (fs.existsSync(sinapseSettings)) {
|
|
528
|
-
fs.unlinkSync(sinapseSettings);
|
|
529
|
-
ok('Removed ~/.sinapse/.claude/settings.json');
|
|
530
|
-
removed++;
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
// Remove MCP config
|
|
609
|
+
// Remove MCP config (chrome-devtools + dev-browser)
|
|
534
610
|
step('Removing MCP configuration...');
|
|
535
611
|
if (fs.existsSync(CLAUDE_JSON)) {
|
|
536
612
|
const config = readJson(CLAUDE_JSON);
|
|
537
|
-
|
|
538
|
-
|
|
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) {
|
|
539
624
|
writeJson(CLAUDE_JSON, config);
|
|
540
|
-
ok('Removed chrome-devtools from ~/.claude.json');
|
|
541
|
-
removed++;
|
|
625
|
+
ok('Removed chrome-devtools + dev-browser from ~/.claude.json');
|
|
542
626
|
}
|
|
543
627
|
}
|
|
544
628
|
|
|
@@ -547,6 +631,7 @@ function uninstallChromeBrain() {
|
|
|
547
631
|
const kbFiles = [
|
|
548
632
|
path.join(SINAPSE_DIR, '.claude', 'rules', 'chrome-brain-autoload.md'),
|
|
549
633
|
path.join(SINAPSE_DIR, 'sinapse', 'knowledge-base', 'chrome-brain.md'),
|
|
634
|
+
path.join(SINAPSE_DIR, 'sinapse', 'knowledge-base', 'claude-in-chrome.md'),
|
|
550
635
|
];
|
|
551
636
|
|
|
552
637
|
for (const file of kbFiles) {
|
|
@@ -617,7 +702,7 @@ function getChromeBrainStatus() {
|
|
|
617
702
|
fail('Hooks: ~/.claude/settings.json not found');
|
|
618
703
|
}
|
|
619
704
|
|
|
620
|
-
// MCP
|
|
705
|
+
// MCP (chrome-devtools)
|
|
621
706
|
total++;
|
|
622
707
|
if (fs.existsSync(CLAUDE_JSON)) {
|
|
623
708
|
const config = readJson(CLAUDE_JSON);
|
|
@@ -631,7 +716,32 @@ function getChromeBrainStatus() {
|
|
|
631
716
|
fail('MCP: ~/.claude.json not found');
|
|
632
717
|
}
|
|
633
718
|
|
|
634
|
-
//
|
|
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)
|
|
635
745
|
total++;
|
|
636
746
|
const kbPath = path.join(SINAPSE_DIR, 'sinapse', 'knowledge-base', 'chrome-brain.md');
|
|
637
747
|
if (fs.existsSync(kbPath)) {
|
|
@@ -641,6 +751,19 @@ function getChromeBrainStatus() {
|
|
|
641
751
|
fail('KB: chrome-brain.md not found');
|
|
642
752
|
}
|
|
643
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
|
+
|
|
644
767
|
// Squad integrations
|
|
645
768
|
total++;
|
|
646
769
|
let squadCount = 0;
|
|
@@ -714,8 +837,18 @@ async function runChromeBrain(subArgs) {
|
|
|
714
837
|
step('Step 5/5 — Installing knowledge base...');
|
|
715
838
|
installKnowledgeBase();
|
|
716
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
|
+
|
|
717
846
|
// Summary
|
|
718
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)');
|
|
719
852
|
console.log(`\n ${cyan('To test:')}`);
|
|
720
853
|
console.log(' chrome-debug # Launch Chrome with debug port');
|
|
721
854
|
console.log(' chrome-ensure # Auto-launch (used by hooks)');
|
|
@@ -742,8 +875,10 @@ ${bold('USAGE:')}
|
|
|
742
875
|
sinapse chrome-brain status Check installation status
|
|
743
876
|
|
|
744
877
|
${bold('WHAT IT DOES:')}
|
|
745
|
-
Gives ALL SINAPSE agents the
|
|
746
|
-
|
|
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
|
|
747
882
|
Auto-activates when needed. No manual commands required after install.
|
|
748
883
|
`);
|
|
749
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
|
|