Desktop Assistant (Jarvis) is an open-source project and contributions of every kind are warmly welcomed — whether you are fixing a bug, adding a new voice command, improving the GUI, or updating documentation. This page walks you through the full contribution workflow sourced directly from the project’sDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Harsha200105/DesktopAssistant/llms.txt
Use this file to discover all available pages before exploring further.
Contributing.md, explains how to use the GitHub issue templates, and describes the automated CI checks your code must pass before merging.
Contribution Workflow
Before writing any code, make sure the work you plan to do is tracked by a GitHub issue. If an open issue already covers the change you want to make, leave a comment asking to be assigned. If no issue exists yet, open one first. This keeps everyone aligned and avoids duplicate effort.Find or open a GitHub issue
Browse the Issues tab to find work that interests you. Comment on the issue to let the maintainer know you’d like to work on it and wait to be assigned. For new ideas, open an issue before starting so the approach can be discussed.
Fork the repository
Click the Fork button on the DesktopAssistant repository page to create a personal copy under your GitHub account.
Clone your fork
Open a terminal and clone your forked repository to your local machine:Replace
YOUR-USERNAME with your actual GitHub username.Create a branch named after the issue
Create and check out a new branch. Name it after the issue number you are resolving — for example, Or in a single command:
issue_42 for issue #42:Make your changes and commit
Implement your fix or feature. Once you are happy with the result, stage all changes and write a descriptive commit message:You can run
git status at any time to review which files have been modified.Open a Pull Request
Navigate to your fork on GitHub. GitHub will show a Compare & pull request banner at the top of the page. Click it to open the PR form. In the description, include the linked issue using the Fill out the PR checklist (see the section below) and submit.
Closes keyword so the issue is automatically closed when the PR is merged:Pull Request Guidelines
The project’s Pull Request template includes a checklist that every contributor should complete before requesting review. Keep these points in mind:- Add real value. Every PR should fix a bug, add a feature, or meaningfully improve the codebase or documentation. Cosmetic-only changes are unlikely to be merged.
- Comment and document your code. Jarvis is used and contributed to by developers with varying levels of familiarity with the codebase. Comment any non-obvious logic, especially in
commands.pyandactions.py. The PR template explicitly checks: “I have commented my code, particularly in hard-to-understand areas.” - Link the resolved issue. Include
Closes #<issue_number>in the PR description so the issue closes automatically on merge. PRs without a linked issue may be asked to create one first. - Review
Contributing.mdbefore submitting. The canonical guidelines live inRequirements&COC/Contributing.mdin the repository. Read it end-to-end before opening your PR. - Ensure no new warnings. The CI pipeline runs several linting and static-analysis tools (see Code Quality below). Your changes should not introduce new warnings from
flake8,mypy, orbandit.
The PR template also has a Screenshots section. If your change touches the Tkinter GUI — for example, modifying
src/gui.py — attach a screenshot of the updated interface.Reporting Bugs
If you encounter unexpected behavior while running Jarvis, open a Bug Report issue using the project’s built-in template. Navigate to New Issue and select Bug report. The template asks for the following information — provide as much detail as possible to help maintainers reproduce the problem:| Field | What to include |
|---|---|
| Describe the bug | A clear, concise description of what went wrong |
| Steps to reproduce | Numbered steps: what you said or typed, what Jarvis did |
| Expected behavior | What you expected Jarvis to do |
| Screenshots | Terminal output, the GUI window, or any relevant screenshots |
| Desktop | Your OS (e.g., Windows 10, Ubuntu 22.04) and Jarvis version |
| Additional context | Any other details that might help reproduce or diagnose the issue |
Requesting Features
Have an idea for a new voice command or a quality-of-life improvement? Open a Feature Request issue using the project template. Navigate to New Issue and select Feature request. Describe:- The problem you want solved — e.g., “I’m always frustrated when Jarvis can’t tell me the current time without an internet connection.”
- Your proposed solution — a clear description of the new behaviour you’d like.
- Alternatives you considered — other approaches you thought about and why you prefer your proposal.
- Additional context — mockups, links to similar projects, or any other relevant information.
Code Quality
Every push and every Pull Request triggers thelint_python GitHub Actions workflow defined in .github/workflows/lint_python.yml. The pipeline runs the following checks against all Python files in the repository:
flake8— enforces PEP 8 style. Maximum line length is 88 characters and maximum cyclomatic complexity is 19.bandit— static security analysis. RulesB311(random number generators) andB605(subprocess shell) are excluded.isort— import ordering following theblackprofile.mypy— optional static type checking; missing imports are tolerated.