# `grokkit workon` **Description**: Automates the initiation of new todo item and fix development. 1. selects a todo item out of the todo queue and moves it to the "doing" folder; 2. creates a branch based on the item; 3. generates a plan for implementation (amending it to the todo item under the heading "Work Plan"); 4. commits the plan to the branch. 5. [optional] logs the beginning of the work using `cnadd` (if available). 6. [optional] opens the branch in the IDE (specified in the config). **Assumptions**: Grokkit is being customized to suit my own development workflow. So, there are a number of features that may not be translatable to other developers' habits. As such, this feature assumes that the repository has a "todo" folder with a "queued", "doing" and "completed" subfolder, that function as the in-situ ticketing system. If the "todo" folder is not present, grokkit will create it. Also, if no IDE is specified in the config, the `workon` command will default to not opening the editor. If `cnadd` is not available, the `workon` command will default to not logging the beginning of the work. **Benefits**: 1. Boosts productivity by automating routine tasks. 2. Makes it easier to track the progress of the work. 3. Makes feature development more uniform and consistent. **Usage**: ``` grokkit workon [[-m ''] [-f]] | [-c] ``` **Arguments**: - ``: The item to be worked on. - If this is a todo, then there should be a Markdown entry in the queued folder with the same name, which will be moved to the doing folder. That should also be the name of the branch. - If this is a fix, then use the argument as a branch name and as the name of a markdown file to be created, where the Work Plan will be stored in the "doing" folder. - In both instances, If spaces are present, replace them with dashes. - `-m ''`: custom commit message to use for the branch. Default is "Start working on ". - `-f`: This signifies a "fix" rather than a todo item (the default is always a todo item) - `-c`: "completes" the work item (note: cannot be used with other flags). This means: - If it is a todo, it will be moved to the "completed" folder, and the index readme will be updated. - If it is a fix, the work plan will be moved to the "completed folder". No index update is necessary. - In either case, the update will be committed to the branch. **High-level implementation**: 1. TBD