Thank you for contributing to the VKB-OSCR orchestration plugin!
git clone <repository-url>
cd opencode-vkb-oscr
bun install
bun run check # Type check
bun test # Run testsopencode-vkb-oscr/
├── src/ # TypeScript source
│ ├── types.ts # All interfaces and types
│ └── tools/ # Custom tool implementations
│ ├── state.ts # oscr_save, oscr_load
│ ├── wait.ts # oscr_wait
│ └── vkb.ts # oscr_follow_up
├── assets/ # Plugin assets (copied on install)
│ ├── agents/ # Agent definitions
│ │ ├── vibe-orchestrator.md
│ │ ├── oscr-reviewer.md
│ │ └── oscr-verifier.md
│ ├── skills/ # Skill definitions
│ │ ├── oscr-intake/
│ │ ├── oscr-plan/
│ │ ├── oscr-execute/
│ │ ├── oscr-finalize/
│ │ └── oscr-vkb-quirks/
│ ├── commands/ # Slash commands
│ │ ├── oscr.md
│ │ ├── oscr-plan.md
│ │ ├── oscr-exec.md
│ │ ├── oscr-fin.md
│ │ └── oscr-status.md
│ └── templates/ # User-modifiable templates
│ └── card-template.md
├── tests/ # Test files
│ └── unit/
│ └── plugin.test.ts
├── plugin.ts # Main plugin (tool, config, event exports)
├── index.ts # Package entry point
├── package.json
└── tsconfig.json
- Intake (
oscr-intake) — Interactive Q&A via octto - Plan (
oscr-plan) — Create VKB cards - Execute (
oscr-execute) — Launch, wait, review, fix, merge - Finalize (
oscr-finalize) — Sync, verify, archive
vibe-orchestrator— Primary agent, loads skills per phaseoscr-reviewer— Hidden subagent for code review (read-only)oscr-verifier— Hidden subagent for test verification
oscr_save— Persist state to.opencode/.oscr-state.jsonoscr_load— Load persisted stateoscr_wait— Server-side polling (prevents context explosion)oscr_follow_up— Send instructions to VKB sessions
- Create
assets/skills/<skill-name>/SKILL.mdwith frontmatter:--- name: skill-name description: One-line description license: MIT compatibility: opencode ---
- Plugin config hook automatically copies it on install
- Add tests if the skill has tool dependencies
- Create class in
src/tools/<name>.ts - Export factory function
- Register in
plugin.tsusingtool()helper - Add type definitions to
src/types.ts - Write unit tests
Edit markdown files in assets/agents/:
- Update frontmatter for permissions/tools
- Modify system prompt for behavior changes
- No comments — use descriptive names
- Classes over helper functions
- Nullable (
string | null) over optional (string?) - Function declarations, not arrow functions
- Explicit types on all parameters and returns
- No
any— useunknownwith type guards
bun test # Run all tests
bun test --watch # Watch mode
bun run check # Type check<type>(<scope>): <subject>
Types: feat, fix, docs, style, refactor, test, chore
Examples:
feat(execute): add stall detection with nudge-once pattern
fix(state): handle missing state file gracefully
docs(readme): update usage examples for new commands
- Update
VERSIONinplugin.ts - Update
versioninpackage.json - Add entry to
CHANGELOG.md - Run tests:
bun test && bun run check - Commit and tag
- Push to trigger release
Open an issue for bugs or feature requests.