No description
Find a file
2019-09-05 15:40:37 -04:00
CODE_OF_CONDUCT.org Add code of conduct. 2019-09-05 15:40:37 -04:00
LICENSE docs: MIT License 2018-03-02 10:44:48 -05:00
org-clubhouse.el Don't output colons without labels 2019-06-19 10:34:06 -04:00
README.org Add note about move and philosophy to README 2019-09-05 15:39:54 -04:00

Org-Clubhouse

Simple, unopinionated integration between Emacs's org-mode and the Clubhouse issue tracker

(This used to be at urbint/org-clubhouse, by the way, but moved here as it's more of a personal project than a company one)

Installation

Quelpa

(quelpa '(org-clubhouse
          :fetcher github
          :repo "urbint/org-clubhouse"))

DOOM Emacs

;; in packages.el
(package! org-clubhouse
  :recipe (:fetcher github
           :repo "urbint/org-clubhouse"
           :files ("*")))

;; in config.el
(def-package! org-clubhouse)

Spacemacs

;; in .spacemacs (SPC+fed)
   dotspacemacs-additional-packages
    '((org-clubhouse :location (recipe :fetcher github :repo "urbint/org-clubhouse")))

Setup

Once installed, you'll need to set three global config vars:

(setq org-clubhouse-auth-token "<your-token>"
      org-clubhouse-team-name "<your-team-name>"
      org-clubhouse-username "<your-username>")

You can generate a new personal API token by going to the "API Tokens" tab on the "Settings" page in the clubhouse UI.

Org-clubhouse can be configured to update the status of stories as you update their todo-keyword in org-mode. To opt-into this behavior, set the org-clubhouse-mode minor-mode:

(add-hook 'org-mode-hook #'org-clubhouse-mode nil nil)

Usage

In addition to updating the status of stories linked to clubhouse tickets, org-clubhouse provides the following commands:

  • org-clubhouse-create-story Creates a new Clubhouse story from the current headline, or if a region of headlines is selected bulk-creates stories with all those headlines
  • org-clubhouse-create-epic Creates a new Clubhouse epic from the current headline, or if a region of headlines is selected bulk-creates epics with all those headlines
  • org-clubhouse-create-story-with-task-list Creates a Clubhouse story from the current headline, making all direct children of the headline into tasks in the task list of the story
  • org-clubhouse-push-task-list Writes each child element of the current clubhouse element as a task list item of the associated clubhouse ID.
  • org-clubhouse-update-story-title Updates the title of the Clubhouse story linked to the current headline with the text of the headline
  • org-clubhouse-update-description Update the status of the Clubhouse story linked to the current element with the contents of a drawer inside the element called DESCRIPTION, if any exists
  • org-clubhouse-headlines-from-query Create org-mode headlines from a clubhouse query at the cursor's current position, prompting for the headline indentation level and clubhouse query text
  • org-clubhouse-claim Adds the user configured in org-clubhouse-username as the owner of the clubhouse story associated with the headline at point

Philosophy

I use org-mode every single day to manage tasks, notes, literate programming, etc. Part of what that means for me is that I already have a system for the structure of my .org files, and I don't want to sacrifice that system for any external tool. Updating statuses, org-clubhouse-create-story, and org-clubhouse-headline-from-story are my bread and butter for that reason - rather than having some sort of bidirectional sync that pulls down full lists of all the stories in Clubhouse (or whatever issue tracker / project management tool I'm using at the time). I can be in a mode where I'm taking meeting notes, think of something that I need to do, make it a TODO headline, and make that TODO headline a clubhouse story. That's the same reason for the DESCRIPTION drawers rather than just sending the entire contents of a headline to Clubhouse - I almost always want to write things like personal notes, literate code, etc inside of the tasks I'm working on, and don't always want to share that with Clubhouse.

Configuration

Refer to the beginning of the org-clubhouse.el file in this repository for documentation on all supported configuration variables