- New server/google_calendar.mjs wrapping googleapis v3 with auto token refresh - Four new actions: calendar-list-events (auto-accept), calendar-create/update/delete-event (queue) - bin/ccc-gcal-auth.mjs one-time OAuth2 consent flow helper - config.example.json updated with google_calendar block - server/config.mjs, index.mjs wired up following the same pattern as SMTP/mailer - Bump version to 1.2.0 - Add CLAUDE.md and claude-info/ with architecture reference, feature plans, and contributing checklist Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Contributing checklist
Use this when adding any non-trivial feature to CCC. Go through every section — skipping docs or config is a common mistake.
Adding a new action (simple — no new service)
- Add the action definition to
server/actions.mjs - Update the actions table in
README.md - If the action has special behavior, add a note under the table
- Update
claude-info/architecture.mdif ctx shape changes
Adding a new injectable service (e.g. a new API integration)
Code
- Create
server/<service>.mjswith a factory functioncreate_<service>(cfg) - Extend
server/config.mjsto read and return the new config block (resolve paths relative to config dir) - Import and instantiate in
server/index.mjs; handle missing config gracefully (warn, set to null) - Add the service to the
make_ctx()return object inindex.mjs - Add actions to
server/actions.mjs; guard withif (!ctx.<service>) throw new Error('<service> not configured') - If setup requires a one-time manual step (OAuth, keygen, etc.) add a bin script in
bin/ - Add new dependencies to
package.jsonand add bin scripts to thebinmap
Config
- Add the new config block to
config.example.json
Documentation
- Update
README.md:- Add new actions to the actions table
- Add a setup section explaining prerequisites and one-time steps
- Update the
ctxcomment in "Adding actions" if ctx changed
- Update
claude-info/architecture.md:- Add the new service to the ctx shape block
- Note any new files in the file layout
- Update or add a plan file in
claude-info/— mark status as implemented - Update
CLAUDE.md— mark the plan entry as done
Git
git status— read every line before staging- Stage files explicitly by name (never
git add -Aorgit add .) - Bump version in
package.jsonif this is a meaningful release - Commit with a clear message describing what was added
- Check git identity is set correctly for this repo (
git config user.name)
After commit
- Tell the user to run
npm installif new dependencies were added - Tell the user about any one-time setup steps required before the feature works