summaryrefslogtreecommitdiff
path: root/Workflow.org
blob: cdc5a890724044a8d94e97d5511d06477f9e2bce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
#+title: Workflow Guide

* Purpose

This document describes the workflows implemented by this Emacs configuration and the keybindings that support them.
It focuses on the actual behavior configured in this repository.

* Operating Model

** Startup

When Emacs starts, it opens the custom Org Home agenda.
That agenda is the main entry point into the system.

** Agenda Mode

Opening the agenda uses a full-frame modal view.
The agenda is intended to become the active workspace rather than appear in a side split.

** Capture Mode

Capture reuses the current window and then deletes other windows while capture is active.
The result is a modal capture flow with minimal window churn.

** Org Buffer Defaults

When an Org buffer opens:

- it starts folded to overview level
- drawers are hidden at startup
- standard Org speed commands are enabled

** Required Files

The main work note is =~/org/optus.org=.
The people CRM is =~/org/crm.org=.

Startup validates =~/org=, =~/org/optus.org=, and =~/org/crm.org=.
If any of them are missing, Emacs still starts, but the workflow warns clearly so the missing file can be fixed deliberately.

* Home Agenda

The Home agenda command key is =h= inside =org-agenda= custom commands.
Its sections appear in this order:

1. weekly agenda
2. task list
3. open questions
4. refile

The refile section uses this matcher:

#+begin_src emacs-lisp
CATEGORY="inbox"+LEVEL>1
#+end_src

That means entries under an Inbox subtree can appear in the refile section when the parent heading carries =CATEGORY: inbox=.

* Capture Workflows

** Inbox Capture

- key: =C-c c= then =i=
- target: =Inbox=
- content: plain note
- metadata: =CAPTURED= property and captured context link

Use this for raw notes that still need sorting or refiling.

** Task Capture

- key: =C-c c= then =t=
- target: =Tasks=
- content: =TODO=
- metadata: =CAPTURED= property and captured context link

** Question Capture

- key: =C-c c= then =q=
- target: =Questions=
- content: =CLARIFY=
- metadata: =CAPTURED= property and captured context link

** Meeting Capture

- key: =C-c c= then =m=
- target: =Meetings=
- content: timestamped meeting note
- metadata: no =CAPTURED= property

** Recurring Capture

- key: =C-c c= then =r=
- target: =Recurring=
- content: scheduled =TODO=
- metadata: =CAPTURED= property

All capture templates target headings in =~/org/optus.org=.

* CRM Workflow

The CRM is a single Org file at =~/org/crm.org=.
Each person is stored as a level-1 heading with this property model:

#+begin_src org
:PROPERTIES:
:ABBREV:
:ALIASES:
:ROLE:
:TEAM:
:MANAGER:
:RELATIONSHIP:
:ENGAGEMENT:
:SUPPLIER:
:LOCATION:
:CURRENT_FOCUS:
:END:
#+end_src

The configured relationship completions are:

- =Peer=
- =Direct Report=
- =Internal Stakeholder=
- =External Stakeholder=
- =Vendor=

Role, team, relationship, engagement, supplier, and location prompts offer known values with completion.
Relationship also allows new freeform values when needed.
Manager completion is restricted to existing CRM names.

** CRM Commands

- =C-c p o= opens =~/org/crm.org= in overview mode
- =C-c p f= finds a person and narrows to that card
- =C-c p a= adds a new CRM card
- =C-c p i= inserts a canonical person name
- =C-c p s= inserts a compact person summary

Reports are available through these commands:

- =M-x ss-crm-report-by-role=
- =M-x ss-crm-report-by-team=
- =M-x ss-crm-report-by-manager=
- =M-x ss-crm-report-by-relationship=
- =M-x ss-crm-report-by-engagement=
- =M-x ss-crm-report-by-supplier=
- =M-x ss-crm-report-by-location=

** CRM Completion

CRM completion works in text and Org writing buffers through both abbrevs and completion-at-point.
Vertico remains the minibuffer completion UI, while Corfu provides the in-buffer popup for completion at point.

- CAPF inserts canonical names
- aliases help find the right person
- Corfu shows the completion popup for CRM CAPF in Org and text buffers
- Marginalia annotations show compact CRM summaries in minibuffer selection
- CRM abbrevs are rebuilt from the current CRM data, and stale CRM abbrevs are cleared before reinstalling them

* Refile Workflow

The configuration is built around using Org refile rather than custom routing.

Relevant settings:

- outline paths are file-based
- completion happens in one step
- targets are agenda files up to level 2

The intended loop is:

1. capture into Inbox
2. review the refile section in the Home agenda
3. refile the note into its long-term heading

* Keybindings

** Global Commands

| Key | Command | Purpose |
|-----+---------+---------|
| =C-s= | =consult-line= | Search in the current buffer |
| =C-c o= | =consult-outline= | Jump through headings in the current buffer |
| =C-c c= | =org-capture= | Open capture |
| =C-c a= | =org-agenda= | Open agenda |
| =C-c r= | =org-refile= | Refile current entry |
| =C-c p o= | =ss-crm-open= | Open CRM in overview mode |
| =C-c p f= | =ss-crm-find= | Find and focus a CRM card |
| =C-c p a= | =ss-crm-add= | Add a CRM card |
| =C-c p i= | =ss-crm-insert-name= | Insert a canonical CRM name |
| =C-c p s= | =ss-crm-insert-summary= | Insert a compact CRM summary |
| =C-c z= | =olivetti-mode= | Toggle focused writing layout |

** Common Org Commands

| Key | Command | Purpose |
|-----+---------+---------|
| =C-c C-w= | =org-refile= | Refile subtree |
| =C-c $= | =org-archive-subtree= | Archive subtree directly |
| =C-c C-x C-s= | =org-archive-subtree= | Archive subtree directly |
| =C-c C-x C-a= | =org-archive-subtree-default= | Archive using default archive command |
| =C-c C-l= | =org-insert-link= | Insert link |
| =C-c C-o= | =org-open-at-point= | Open link or reference at point |
| =C-c C-t= | =org-todo= | Change TODO state |
| =C-c C-q= | =org-set-tags-command= | Edit tags |
| =C-c C-s= | =org-schedule= | Schedule item |
| =C-c C-d= | =org-deadline= | Add deadline |
| =C-<return>= | =org-insert-heading-respect-content= | Insert heading while respecting subtree content |

** Capture Template Keys

| Key | Template | Target |
|-----+----------+--------|
| =i= | Inbox | Inbox |
| =t= | Task | Tasks |
| =q= | Question | Questions |
| =m= | Meeting | Meetings |
| =r= | Recurring | Recurring |

** Org Speed Commands

Speed commands are available at the beginning of a headline when point is in a valid speed-command position.
This configuration uses Org's standard built-in speed commands.

*** Outline Navigation

| Key | Command |
|-----+---------|
| =n= | next visible heading |
| =p= | previous visible heading |
| =f= | next heading at same level |
| =b= | previous heading at same level |
| =F= | next block |
| =B= | previous block |
| =u= | up heading |
| =j= | =org-goto= |
| =g= | refile to current location history with prefix behavior |

*** Outline Visibility

| Key | Command |
|-----+---------|
| =c= | cycle current subtree |
| =C= | cycle whole buffer |
| =SPC= | display outline path |
| =s= | toggle narrow to subtree |
| =k= | cut subtree |
| === | column view |

*** Outline Structure Editing

| Key | Command |
|-----+---------|
| =U= | move subtree up |
| =D= | move subtree down |
| =r= | promote/right shift heading |
| =l= | demote/left shift heading |
| =R= | shift subtree right |
| =L= | shift subtree left |
| =i= | insert heading respecting content |
| =^= | sort subtree |
| =w= | refile |
| =a= | archive subtree with confirmation |
| =@= | mark subtree |
| =#= | toggle comment |

*** Clock Commands

| Key | Command |
|-----+---------|
| =I= | clock in |
| =O= | clock out |

*** Metadata Editing

| Key | Command |
|-----+---------|
| =t= | change TODO state |
| =,= | set priority |
| =0= | clear priority |
| =1= | set priority A |
| =2= | set priority B |
| =3= | set priority C |
| =:= | set tags |
| =e= | set effort |
| =E= | increase effort |
| =W= | set appointment warning minutes |

*** Agenda and Search

| Key | Command |
|-----+---------|
| =v= | open agenda |
| =/= | sparse tree |

*** Miscellaneous

| Key | Command |
|-----+---------|
| =o= | open at point |
| =?= | show speed command help |
| =<= | set subtree restriction lock |
| =>= | remove restriction lock |

* Notes On Behavior

** Refile

Use =w= as the stock Org speed command for refile, or =C-c C-w= outside speed-command context.

** Narrowing

Use =s= as the stock speed command for toggling subtree narrowing.
This configuration intentionally does not replace it with custom bindings.

** Archive

Use =a= as the stock archive speed command with confirmation, or use =C-c $= for the direct archive command.

** Internal Links

This setup is intended to work with heading links like:

#+begin_example
[[*Heading]]
#+end_example

It does not switch Org into an ID-based linking workflow.