# Contributing Thanks for helping improve `dsh-scheduled`. ## Before opening an issue Search existing issues first. For scheduling behavior, include the RRULE, IANA time zone, expected occurrence, observed occurrence, Node.js version, and DSH version. Do not include session contents, credentials, API keys, or private project paths. ## Development Use Node.js `>=22.19.0` and pnpm: ```bash pnpm install pnpm test pnpm run typecheck pnpm run build pnpm pack --dry-run ``` Changes should follow the DSH plugin contract: - Keep the bundle manifest in `package.json` and the plugin row in `cordis.patch.yml`. - Use Cordis services and lifecycle APIs for timers and effects; do not add global timers or module-scope side effects. - Register Agent tools in the smallest correct Agent scope. - Keep Host RPC errors stable and avoid exposing backend exception text to clients. - Add a focused regression test for behavior changes, especially recurrence, persistence, overlap, and restart paths. ## Pull requests Describe the user-visible behavior, compatibility impact, and verification commands. Keep unrelated formatting or generated-file churn out of the change. Maintainers will review runtime lifecycle, persistence, public package contents, and DSH compatibility before merging. ## Community Please keep discussions constructive and follow the [Code of Conduct](CODE_OF_CONDUCT.md).