Thanks for your interest in contributing.
- Keep changes focused and reviewable.
- Prefer small pull requests with clear scope.
- Preserve existing behavior unless intentionally changed.
- Add tests or manual verification notes for non-trivial changes.
- Fork and clone the repository.
- Open in Android Studio.
- Sync Gradle.
- Build and run:
./gradlew :app:assembleDebug
./gradlew :app:installDebugWindows PowerShell:
.\gradlew.bat :app:assembleDebug
.\gradlew.bat :app:installDebug- Branch naming examples:
feat/recommendation-feedbackfix/intent-parserdocs/readme-update
- Commit message style:
feat: add recommendation feedback loggingfix: handle missing location permissiondocs: improve setup section
- Build passes locally.
- Changed behavior is explained in PR description.
- UI changes include screenshots or short notes.
- If data schema changed, migration is provided.
- If permissions changed, reason is documented.
- Implement a skill class in
skills(or a dedicated skill module). - Implement
Skillcontract compatibility. - Register routing logic in scheduler if needed.
- Add usage examples in README or docs.
- Verify manually on emulator/device.
Minimum expectation for new skills:
- Graceful error handling
- Permission checks where required
- Clear output in result map
- Update
app/src/main/assets/recommendations.json. - Keep rule IDs stable and unique.
- Ensure conditions are realistic and testable.
- Avoid spammy/overlapping suggestions.
Please include:
- Device/emulator info
- Android version/API level
- Reproduction steps
- Actual vs expected behavior
- Logs/screenshots when possible
- Follow Kotlin official style.
- Keep comments concise and meaningful.
- Avoid unnecessary refactors in unrelated files.
- Do not add telemetry without explicit discussion.
- Keep user behavior data local unless explicitly approved.
- Be careful with permissions; request minimum required scope.
Thanks again for contributing.