{"id":30062513,"url":"https://github.com/ericc-ch/opencode-plugins","last_synced_at":"2025-08-08T03:36:41.837Z","repository":{"id":308468995,"uuid":"1032906665","full_name":"ericc-ch/opencode-plugins","owner":"ericc-ch","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-06T05:20:11.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-06T05:29:35.216Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ericc-ch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"ericc_ch","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2025-08-06T02:42:24.000Z","updated_at":"2025-08-06T05:20:15.000Z","dependencies_parsed_at":"2025-08-06T05:29:38.530Z","dependency_job_id":"aed714e7-32a5-4a3f-b441-26c00edab678","html_url":"https://github.com/ericc-ch/opencode-plugins","commit_stats":null,"previous_names":["ericc-ch/opencode-plugins"],"tags_count":1,"template":false,"template_full_name":"ericc-ch/starter-ts","purl":"pkg:github/ericc-ch/opencode-plugins","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericc-ch%2Fopencode-plugins","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericc-ch%2Fopencode-plugins/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericc-ch%2Fopencode-plugins/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericc-ch%2Fopencode-plugins/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ericc-ch","download_url":"https://codeload.github.com/ericc-ch/opencode-plugins/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericc-ch%2Fopencode-plugins/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269360651,"owners_count":24404295,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-08T02:00:09.200Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-08T03:36:39.127Z","updated_at":"2025-08-08T03:36:41.823Z","avatar_url":"https://github.com/ericc-ch.png","language":"TypeScript","funding_links":["https://ko-fi.com/ericc_ch","https://ko-fi.com/E1E519XS7W"],"categories":[],"sub_categories":[],"readme":"# opencode-plugins\n\nA collection of plugins for [opencode](https://opencode.ai), providing composable utilities for plugin composition, debugging, and notifications.\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/E1E519XS7W)\n\n## Packages\n\nThis monorepo contains three opencode plugins:\n\n### `opencode-plugin-compose`\n\nCompose multiple opencode plugins into a single plugin that runs all hooks in sequence.\n\n```ts\nimport { compose } from \"opencode-plugin-compose\";\n\nconst composedPlugin = compose([pluginA, pluginB, pluginC]);\n```\n\n**Features:**\n\n- Sequentially executes all plugin hooks (event, chat.message, chat.params, permission.ask, tool.execute.before/after)\n- Maintains hook execution order\n\n---\n\n### `opencode-plugin-inspector`\n\nReal-time web interface for debugging and monitoring plugin hook events.\n\n```ts\nimport { inspector } from \"opencode-plugin-inspector\";\n\nconst inspectorPlugin = inspector({ port: 6969 }); // port optional, defaults to 6969\n```\n\n**Features:**\n\n- Web UI accessible at `http://localhost:6969`\n- Built with React and Tailwind CSS\n\n---\n\n### `opencode-plugin-notification`\n\nDesktop notifications for session idle events with customizable commands and timing.\n\n```ts\nimport { notification } from \"opencode-plugin-notification\";\n\nconst notificationPlugin = notification({\n  idleTime: 60000, // 1 minute (default)\n  notificationCommand: [\"notify-send\", \"--app-name\", \"opencode\"], // default\n  additionalCommands: [[\"canberra-gtk-play\", \"-i\", \"complete\"]], // default\n  getMessage: async ({ sessionID, client }) =\u003e {\n    // Custom message logic\n    return \"Custom notification message\";\n  },\n});\n```\n\n**Features:**\n\n- Configurable idle time threshold\n- Custom notification commands (defaults to `notify-send`)\n- Optional sound commands\n\n## Installation\n\nInstall individual packages:\n\n```bash\nnpm install opencode-plugin-compose\nnpm install opencode-plugin-inspector\nnpm install opencode-plugin-notification\n```\n\nI would recommend installing as optional dependency\n\n## Development\n\nThis project uses [Turborepo](https://turbo.build) for monorepo management and [pnpm](https://pnpm.io) for package management.\n\n### Prerequisites\n\n- Node.js 18+\n- pnpm 8+\n- Bun (for inspector package)\n\n### Setup\n\n```bash\n# Install dependencies\npnpm install\n\n# Build all packages\npnpm run build\n\n# Start development mode (watches for changes)\npnpm run dev\n```\n\n### Working on individual packages\n\n```bash\n# Work on a specific package\ncd packages/compose\npnpm run dev\n```\n\n### Scripts\n\n- `pnpm run build` - Build all packages\n- `pnpm run dev` - Start development mode for all packages\n- `pnpm run lint` - Lint the codebase\n- `pnpm run typecheck` - Run TypeScript type checking\n\n## License\n\n[MIT](./LICENSE)\n\n## Support\n\nIf you find this project useful, consider supporting via [Ko-fi](https://ko-fi.com/E1E519XS7W).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericc-ch%2Fopencode-plugins","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericc-ch%2Fopencode-plugins","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericc-ch%2Fopencode-plugins/lists"}