Conversation
Add watch mode support to kibi-opencode for seamless local development. The local plugin shim at .opencode/plugins/kibi.ts now automatically picks up rebuilds from packages/opencode/dist/. Changes: - Add 'dev' script with tsc --watch for auto-rebuild on file changes - Update opencode.json to use local plugin only (no npm package reference) - Add root-level 'dev:opencode' script for convenience - Create DEV.md with complete dogfood setup documentation - Add 'Dogfooding' section to README with quick start guide - Sync KB symbols after changes
Hook contract tests in packages/opencode/tests/hook-contract.test.ts read type definitions from .opencode/node_modules/@opencode-ai/plugin/dist/index.d.ts and .opencode/node_modules/@opencode-ai/sdk/dist/gen/types.gen.d.ts. The publish workflow's build-and-check job was only running 'bun install', which installed root dependencies but not .opencode dependencies. Since .opencode/package.json is not tracked in git, .opencode/node_modules was not being created in CI, causing the tests to fail. Fix: Update the Install dependencies step to also run 'bun install' in .opencode directory, ensuring @opencode-ai/plugin and @opencode-ai/sdk type definitions are available for hook contract tests. The CI workflow already had this fix, which is why merge pipeline passed but publish pipeline failed.
GitHub Actions are deprecating Node.js 20 and will force Node.js 24 starting June 2nd, 2026. Actions setup-node@v4, upload-artifact@v4, and download-artifact@v4 are currently running on Node.js 20. Fix: Add FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true at workflow level in both ci.yml and publish.yml to opt into Node.js 24 now, eliminating the deprecation warnings and ensuring compatibility before the forced migration.
Packed E2E tests require npm to pack tarballs for testing. The helpers.ts resolveNpmBinary() function tries to find npm via: - process.env.npm_execpath - which command When npm is not found, packAll() fails with: "ENOENT: no such file or directory, posix_spawn 'npm'" Fix: Add NODE_INSTALLER: npm env var to setup-node step and verify npm is available with npm --version command. This ensures npm is properly added to PATH by the actions/setup-node@v4 action.
The CI workflow was excluding all E2E packed tests with: --exclude="documentation/tests/e2e/packed/**" This prevented any E2E tests from running, causing all 49 test failures. Fix: Remove the --exclude parameter to allow packed E2E tests to run. The npm availability fix from commit 3a0e4dd is still in place for packed tests that need npm.
Add .gitignore to prevent old compiled dist/ directory from interfering with module resolution. The old-dist/ directory contains stale compiled files owned by root that were preventing proper recompilation.
There was a problem hiding this comment.
Pull request overview
Adds a smoother local development loop for the kibi-opencode plugin (watch mode + dogfooding docs/config), while updating CI/publish workflows and documentation traceability links to align with the current test pipeline and relationship modeling.
Changes:
- Add
dev(TypeScript watch) scripts for the opencode plugin and expose a rootdev:opencodeshortcut. - Switch docs/config to a “dogfood from source” OpenCode plugin setup (local shim +
opencode.jsonplugin list). - Update CI/publish workflows and documentation to match the new unit-test entrypoint and richer
links:relationship objects.
Reviewed changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/docker/test.sh | Updates Docker test script messaging to point at bun run test:unit. |
| packages/opencode/package.json | Adds dev script using tsc --watch. |
| packages/opencode/DEV.md | Adds dogfooding setup documentation for local plugin development. |
| package.json | Adds root dev:opencode script. |
| opencode.json | Switches plugin list to local-only (plugin: []). |
| documentation/tests/e2e/packed/.gitignore | Ignores dist/ for packed e2e test artifacts. |
| documentation/symbols.yaml | Updates coordinatesGeneratedAt timestamps. |
| documentation/requirements/REQ-vscode-traceability.md | Converts links: to typed relationship objects and adds verification link. |
| documentation/requirements/REQ-opencode-kibi-plugin-v1.md | Converts links: to typed relationship objects (verified/spec/scope). |
| documentation/requirements/REQ-019.md | Adds specified_by / verified_by links. |
| documentation/requirements/REQ-018.md | Marks requirement deprecated and changes link modeling. |
| documentation/requirements/REQ-016.md | Adjusts link types and adds specified_by / verified_by. |
| documentation/requirements/REQ-015.md | Adds specified_by / verified_by. |
| documentation/requirements/REQ-014.md | Normalizes link objects (specified_by / verified_by) and link typing. |
| documentation/requirements/REQ-013.md | Normalizes link objects for ADR/scenario/test references. |
| documentation/requirements/REQ-012.md | Adds specified_by / verified_by. |
| documentation/requirements/REQ-011.md | Adds specified_by / verified_by. |
| documentation/requirements/REQ-009.md | Adds specified_by / verified_by. |
| documentation/requirements/REQ-008.md | Adds specified_by / verified_by. |
| documentation/requirements/REQ-007.md | Adds specified_by / verified_by. |
| documentation/requirements/REQ-006.md | Adds specified_by / verified_by. |
| documentation/requirements/REQ-005.md | Adds specified_by / verified_by. |
| documentation/requirements/REQ-004.md | Adds specified_by / verified_by. |
| documentation/requirements/REQ-003.md | Adds specified_by / verified_by. |
| documentation/requirements/REQ-002.md | Adds specified_by / verified_by. |
| documentation/requirements/REQ-001.md | Adds verified_by link. |
| README.md | Documents dogfooding quick-start and points to packages/opencode/DEV.md. |
| CONTRIBUTING.md | Updates test commands to prefer bun run test / bun run test:unit. |
| .github/workflows/publish.yml | Adds Node/npm verification and installs .opencode deps in build step. |
| .github/workflows/ci.yml | Updates unit test command to bun run test:unit and tweaks packaging steps. |
You can also share your feedback on Copilot code review. Take the survey.
| target: TEST-001 | ||
| --- | ||
|
|
||
| New business rule that intentionally conflicts with REQ-018 to test the contradiction engine. |
Comment on lines
+4
to
+14
| status: deprecated | ||
| created_at: 2026-02-20T13:05:00Z | ||
| updated_at: 2026-02-20T13:05:00Z | ||
| source: documentation/requirements/REQ-018.md | ||
| priority: must | ||
| tags: [auth] | ||
| links: | ||
| - type: constrains | ||
| target: FACT-USER-ROLE | ||
| - type: requires_property | ||
| - type: relates_to | ||
| target: FACT-LIMIT-2 | ||
| - type: relates_to | ||
| target: REQ-019 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.