10 KiB
OpenCode Integration - Fork Modification Reference
Overview
This document serves as the authoritative reference for preserving the OpenCode integration during upstream merges. OpenCode support is a fork-specific feature not present in the upstream BMAD-METHOD repository.
⚠️ CRITICAL: Fork-Only Feature
OpenCode integration exists ONLY in this fork and will NEVER be published to npm.
- The published npm package
bmad-method@6.0.0-alpha.0does NOT include OpenCode - Running
npx bmad-method installwill download the published version WITHOUT OpenCode - You MUST use local development commands to access OpenCode functionality
See: docs/V6_LOCAL_DEVELOPMENT.md for complete local development instructions.
Critical Information
- Modification Type: Additive (new files + dependency)
- Risk Level: Low-Medium (new files unlikely to conflict, dependency may need verification)
- Recovery Method: Restore from backup branch
- Serena Memory:
CRITICAL-opencode-fork-integration - Development Requirement: Must use local CLI execution (not npx)
Files Affected
1. New Files (Additive)
tools/cli/installers/lib/ide/opencode.js
- Lines: 602 (entire file)
- Purpose: OpenCode IDE installer implementation
- Status: Must be present for OpenCode functionality
Verification:
test -f tools/cli/installers/lib/ide/opencode.js && echo "✅ Present" || echo "❌ MISSING"
Recovery:
git checkout <backup-branch> -- tools/cli/installers/lib/ide/opencode.js
OPENCODE_INTEGRATION_SUMMARY.md
- Lines: 231 (entire file)
- Purpose: Implementation documentation and architecture details
- Status: Documentation only (optional but recommended to preserve)
Recovery:
git checkout <backup-branch> -- OPENCODE_INTEGRATION_SUMMARY.md
2. Modified Files
package.json
- Modification: Added
comment-jsondependency - Location:
dependenciessection - Code:
"comment-json": "^4.2.5", - Purpose: Required for parsing JSONC files with comments
Verification:
grep -q '"comment-json"' package.json && echo "✅ Present" || echo "❌ MISSING"
Manual Recovery (if needed):
{
"dependencies": {
// ... other dependencies ...
"comment-json": "^4.2.5"
// ... more dependencies ...
}
}
Then run:
npm install
Verification Checklist
Run these commands after every upstream merge:
✅ Quick Verification (30 seconds)
# 1. File existence
test -f tools/cli/installers/lib/ide/opencode.js && echo "✅ opencode.js" || echo "❌ opencode.js MISSING"
# 2. Dependency check
grep -q '"comment-json"' package.json && echo "✅ comment-json" || echo "❌ comment-json MISSING"
✅ Thorough Verification (1 minute)
# 3. Runtime IDE discovery check
node -e "
const {IdeManager} = require('./tools/cli/installers/lib/ide/manager');
const manager = new IdeManager();
const ides = manager.getAvailableIdes();
const opencode = ides.find(i => i.value === 'opencode');
if (opencode) {
console.log('✅ OpenCode discoverable:', opencode.name);
console.log(' Preferred:', opencode.preferred ? 'Yes' : 'No');
} else {
console.log('❌ OpenCode NOT in IDE list');
console.log('Available IDEs:', ides.map(i => i.value).join(', '));
}
"
# 4. Dependency installation check
npm list comment-json 2>/dev/null && echo "✅ comment-json installed" || echo "⚠️ Run: npm install"
✅ Full Integration Test (2 minutes)
# 5. Test OpenCode installer can be instantiated
node -e "
const {OpenCodeSetup} = require('./tools/cli/installers/lib/ide/opencode');
const setup = new OpenCodeSetup();
console.log('✅ OpenCode installer instantiated');
console.log(' Name:', setup.name);
console.log(' Display Name:', setup.displayName);
"
Recovery Procedures
Scenario 1: opencode.js Missing
Symptoms:
- File check fails
- IDE manager doesn't list OpenCode
- Error when trying to install with OpenCode
Recovery:
# 1. Find latest backup branch
BACKUP=$(git branch -a | grep backup-before | tail -1 | xargs)
# 2. Restore the file
git checkout $BACKUP -- tools/cli/installers/lib/ide/opencode.js
# 3. Verify
test -f tools/cli/installers/lib/ide/opencode.js && echo "✅ Restored"
# 4. Stage and commit
git add tools/cli/installers/lib/ide/opencode.js
git commit -m "chore: restore OpenCode integration after upstream merge"
Scenario 2: comment-json Dependency Missing
Symptoms:
- OpenCode installer throws "Cannot find module 'comment-json'" error
- IDE manager shows warning about loading OpenCode
Recovery:
# Option A: Restore from backup
BACKUP=$(git branch -a | grep backup-before | tail -1 | xargs)
git checkout $BACKUP -- package.json
# Option B: Manual edit
# Add to package.json dependencies:
# "comment-json": "^4.2.5",
# Then install
npm install
# Verify
npm list comment-json
Scenario 3: Both Files Missing (Complete Loss)
Recovery:
# 1. Find backup branch
BACKUP=$(git branch -a | grep backup-before | tail -1 | xargs)
echo "Using backup: $BACKUP"
# 2. Restore all OpenCode files
git checkout $BACKUP -- \
tools/cli/installers/lib/ide/opencode.js \
OPENCODE_INTEGRATION_SUMMARY.md \
package.json
# 3. Install dependencies
npm install
# 4. Verify everything
bash -c '
test -f tools/cli/installers/lib/ide/opencode.js && echo "✅ opencode.js" || echo "❌ Failed"
grep -q comment-json package.json && echo "✅ dependency" || echo "❌ Failed"
npm list comment-json >/dev/null 2>&1 && echo "✅ installed" || echo "❌ Failed"
'
# 5. Stage and commit
git add tools/cli/installers/lib/ide/opencode.js OPENCODE_INTEGRATION_SUMMARY.md package.json package-lock.json
git commit -m "chore: restore complete OpenCode integration after upstream merge
- Restored tools/cli/installers/lib/ide/opencode.js
- Restored comment-json dependency
- Restored documentation
Fork-specific feature not present in upstream."
Integration with Merge Workflow
Pre-Merge Checklist
Before merging upstream changes:
- ✅ Run quick verification to confirm OpenCode is present
- ✅ Verify backup branch will be created
- ✅ Note current commit hash for reference
Post-Merge Checklist
After merging upstream changes:
- ✅ Run quick verification
- ✅ If any checks fail, run recovery procedures
- ✅ Run thorough verification
- ✅ Test basic functionality (optional)
Testing OpenCode After Merge
CRITICAL: Do NOT use npx bmad-method to test - it downloads the published version!
# ✅ CORRECT - Test with local version
cd /path/to/test/project
node /path/to/BMAD-METHOD/tools/cli/bmad-cli.js install
# Or use npm script from BMAD-METHOD directory
npm run dev:install
# Verify OpenCode appears in IDE selection menu
# Verify opencode.json/opencode.jsonc is created correctly
See: docs/V6_LOCAL_DEVELOPMENT.md for complete testing guide. 5. ✅ Update Serena memory with merge date
Workflow Integration
The bmad/workflows/merge-upstream/ workflow includes OpenCode checks:
Step 7.5 (added to existing workflow):
- name: 'Verify OpenCode Integration'
action: 'Run OpenCode verification commands'
verification:
- 'File existence check'
- 'Dependency check'
- 'IDE manager discovery check'
on_failure:
- 'Alert about missing OpenCode integration'
- 'Provide recovery instructions'
- 'Link to this reference document'
Architecture Details
How OpenCode Integration Works
- Auto-Discovery: IDE manager scans
tools/cli/installers/lib/ide/for.jsfiles - Class Instantiation: Each file exports a class extending
BaseIdeSetup - Registration: Manager calls constructor which sets
this.name = 'opencode' - Availability: OpenCode appears in IDE selection list
Why It's Low-Risk
- New file: Doesn't modify existing upstream code
- Self-contained: All logic in one file
- Auto-discovery: No manual registration needed
- Dependency: Only one new dependency, isolated in package.json
Potential Conflicts
⚠️ Unlikely but possible:
- Upstream adds OpenCode: Compare implementations, merge if needed
- package.json conflicts: Manually preserve
comment-jsonentry - IDE manager changes: Verify auto-discovery still works
Testing Commands
Quick Functionality Test
# Create a test project and verify OpenCode can be selected
mkdir -p /tmp/opencode-test
cd /tmp/opencode-test
npm init -y
# Note: Full interactive install test would require user input
# So we just verify the installer can be loaded
node -e "
const {OpenCodeSetup} = require('$PWD/tools/cli/installers/lib/ide/opencode');
const setup = new OpenCodeSetup();
console.log('✅ OpenCode installer loads successfully');
console.log('Name:', setup.name);
"
Maintenance Notes
When to Update This Document
- After any changes to OpenCode implementation
- After successful upstream merges (update "Last Verified" in Serena memory)
- If recovery procedures change
- If new verification methods are discovered
Version History
- 2025-10-20: Initial creation with OpenCode integration
- Commit:
b3975f6
Quick Reference Card
Files to Watch:
- ✅
tools/cli/installers/lib/ide/opencode.js(must exist) - ✅
"comment-json": "^4.2.5"in package.json
Quick Check:
test -f tools/cli/installers/lib/ide/opencode.js && \
grep -q comment-json package.json && \
echo "✅ All good" || echo "❌ Needs recovery"
Quick Recovery:
BACKUP=$(git branch -a | grep backup-before | tail -1 | xargs)
git checkout $BACKUP -- tools/cli/installers/lib/ide/opencode.js package.json
npm install
Related Documentation
- Serena Memory:
.serena/memories/CRITICAL-opencode-fork-integration.md - Implementation Details:
OPENCODE_INTEGRATION_SUMMARY.md - Merge Workflow:
bmad/workflows/merge-upstream/instructions.md - User Documentation:
docs/opencode-integration.md(if exists)
Last Updated: 2025-10-20 Maintained By: Fork maintainers Upstream Status: Not present in upstream BMAD-METHOD