mirror of
https://github.com/boolean-maybe/tiki
synced 2026-04-21 13:37:20 +00:00
add recipes
This commit is contained in:
parent
f610e74660
commit
b5f2ad66fa
5 changed files with 239 additions and 2 deletions
199
.doc/doki/doc/ideas/plugins.md
Normal file
199
.doc/doki/doc/ideas/plugins.md
Normal file
|
|
@ -0,0 +1,199 @@
|
|||
# Customization Examples
|
||||
|
||||
- [Assign to me](#assign-to-me--plugin-action)
|
||||
- [Add tag to task](#add-tag-to-task--plugin-action)
|
||||
- [Custom status + reject action](#custom-status--reject-action)
|
||||
- [Search all tikis](#search-all-tikis--single-lane-plugin)
|
||||
- [Quick assign](#quick-assign--lane-based-assignment)
|
||||
- [Stale task detection](#stale-task-detection--time-trigger--plugin)
|
||||
- [My tasks](#my-tasks--user-scoped-plugin)
|
||||
- [Recent ideas](#recent-ideas--good-or-trash)
|
||||
- [Auto-delete stale tasks](#auto-delete-stale-tasks--time-trigger)
|
||||
- [Priority triage](#priority-triage--five-lane-plugin)
|
||||
- [By topic](#by-topic--tag-based-lanes)
|
||||
|
||||
## Assign to me — plugin action
|
||||
|
||||
Shortcut key that sets the selected task's assignee to the current git user.
|
||||
|
||||
```yaml
|
||||
actions:
|
||||
- key: "a"
|
||||
label: "Assign to me"
|
||||
action: update where id = id() set assignee=user()
|
||||
```
|
||||
|
||||
## Add tag to task — plugin action
|
||||
|
||||
Appends a tag to the selected task's tag list without removing existing tags.
|
||||
|
||||
```yaml
|
||||
actions:
|
||||
- key: "t"
|
||||
label: "Tag my_project"
|
||||
action: update where id = id() set tags=tags + ["my_project"]
|
||||
```
|
||||
|
||||
## Custom status + reject action
|
||||
|
||||
Define a custom "rejected" status, then add a plugin action on the Backlog view to reject tasks.
|
||||
|
||||
```yaml
|
||||
statuses:
|
||||
- key: rejected
|
||||
label: Rejected
|
||||
emoji: "🚫"
|
||||
done: true
|
||||
```
|
||||
|
||||
```yaml
|
||||
- name: Backlog
|
||||
key: "F3"
|
||||
lanes:
|
||||
- name: Backlog
|
||||
filter: select where status = "backlog" order by priority
|
||||
actions:
|
||||
- key: "r"
|
||||
label: "Reject"
|
||||
action: update where id = id() set status="rejected"
|
||||
```
|
||||
|
||||
## Search all tikis — single-lane plugin
|
||||
|
||||
A plugin with one unfiltered lane shows every task. Press `/` to search across all of them.
|
||||
|
||||
```yaml
|
||||
- name: All
|
||||
key: "F5"
|
||||
lanes:
|
||||
- name: All
|
||||
columns: 4
|
||||
filter: select order by updatedAt desc
|
||||
```
|
||||
|
||||
## Quick assign — lane-based assignment
|
||||
|
||||
Three lanes split tasks by assignee. Moving a task into Alice's or Bob's lane auto-assigns it.
|
||||
|
||||
```yaml
|
||||
- name: Team
|
||||
key: "F6"
|
||||
lanes:
|
||||
- name: Unassigned
|
||||
filter: select where assignee is empty order by priority
|
||||
- name: Alice
|
||||
filter: select where assignee = "alice" order by priority
|
||||
action: update where id = id() set assignee="alice"
|
||||
- name: Bob
|
||||
filter: select where assignee = "bob" order by priority
|
||||
action: update where id = id() set assignee="bob"
|
||||
```
|
||||
|
||||
## Stale task detection — time trigger + plugin
|
||||
|
||||
A daily trigger tags in-progress tasks that haven't been updated in a week. A dedicated plugin shows all flagged tasks.
|
||||
|
||||
```yaml
|
||||
triggers:
|
||||
- description: flag stale in-progress tasks
|
||||
ruki: >
|
||||
every 1day
|
||||
update where status = "inProgress" and now() - updatedAt > 7day
|
||||
and "attention" not in tags
|
||||
set tags=tags + ["attention"]
|
||||
```
|
||||
|
||||
```yaml
|
||||
- name: Attention
|
||||
key: "F7"
|
||||
lanes:
|
||||
- name: Needs Attention
|
||||
columns: 4
|
||||
filter: select where "attention" in tags order by updatedAt
|
||||
```
|
||||
|
||||
## My tasks — user-scoped plugin
|
||||
|
||||
Shows only tasks assigned to the current git user.
|
||||
|
||||
```yaml
|
||||
- name: My Tasks
|
||||
key: "F8"
|
||||
lanes:
|
||||
- name: My Tasks
|
||||
columns: 4
|
||||
filter: select where assignee = user() order by priority
|
||||
```
|
||||
|
||||
## Recent ideas — good or trash?
|
||||
|
||||
Two-lane plugin to review recent ideas and trash the ones you don't need. Moving to Trash swaps the "idea" tag for "trash".
|
||||
|
||||
```yaml
|
||||
- name: Recent Ideas
|
||||
description: "Review recent"
|
||||
key: "F9"
|
||||
lanes:
|
||||
- name: Recent Ideas
|
||||
columns: 3
|
||||
filter: select where "idea" in tags and now() - createdAt < 7day order by createdAt desc
|
||||
- name: Trash
|
||||
columns: 1
|
||||
filter: select where "trash" in tags order by updatedAt desc
|
||||
action: update where id = id() set tags=tags - ["idea"] + ["trash"]
|
||||
```
|
||||
|
||||
## Auto-delete stale tasks — time trigger
|
||||
|
||||
Deletes backlog tasks that were created over 3 months ago and haven't been updated in 2 months.
|
||||
|
||||
```yaml
|
||||
triggers:
|
||||
- description: auto-delete stale backlog tasks
|
||||
ruki: >
|
||||
every 1day
|
||||
delete where status = "backlog"
|
||||
and now() - createdAt > 3month
|
||||
and now() - updatedAt > 2month
|
||||
```
|
||||
|
||||
## Priority triage — five-lane plugin
|
||||
|
||||
One lane per priority level. Moving a task between lanes reassigns its priority.
|
||||
|
||||
```yaml
|
||||
- name: Priorities
|
||||
key: "F10"
|
||||
lanes:
|
||||
- name: Critical
|
||||
filter: select where priority = 1 order by updatedAt desc
|
||||
action: update where id = id() set priority=1
|
||||
- name: High
|
||||
filter: select where priority = 2 order by updatedAt desc
|
||||
action: update where id = id() set priority=2
|
||||
- name: Medium
|
||||
filter: select where priority = 3 order by updatedAt desc
|
||||
action: update where id = id() set priority=3
|
||||
- name: Low
|
||||
filter: select where priority = 4 order by updatedAt desc
|
||||
action: update where id = id() set priority=4
|
||||
- name: Minimal
|
||||
filter: select where priority = 5 order by updatedAt desc
|
||||
action: update where id = id() set priority=5
|
||||
```
|
||||
|
||||
## By topic — tag-based lanes
|
||||
|
||||
Split tasks into lanes by tag. Useful for viewing work across domains at a glance.
|
||||
|
||||
```yaml
|
||||
- name: By Topic
|
||||
key: "F11"
|
||||
lanes:
|
||||
- name: Frontend
|
||||
columns: 2
|
||||
filter: select where "frontend" in tags order by priority
|
||||
- name: Backend
|
||||
columns: 2
|
||||
filter: select where "backend" in tags order by priority
|
||||
```
|
||||
|
|
@ -2,6 +2,29 @@
|
|||
|
||||
Candidate triggers for the default workflow. Each represents a common workflow pattern.
|
||||
|
||||
- [WIP limit per assignee](#wip-limit-per-assignee)
|
||||
- [Require description for high-priority tasks](#require-description-for-high-priority-tasks)
|
||||
- [Auto-create next occurrence for recurring tasks](#auto-create-next-occurrence-for-recurring-tasks)
|
||||
- [Return stale in-progress tasks to backlog](#return-stale-in-progress-tasks-to-backlog)
|
||||
- [Unblock tasks when dependencies complete](#unblock-tasks-when-dependencies-complete)
|
||||
- [Prevent re-opening completed tasks directly](#prevent-re-opening-completed-tasks-directly)
|
||||
- [Auto-assign creator on start](#auto-assign-creator-on-start)
|
||||
- [Escalate overdue tasks](#escalate-overdue-tasks)
|
||||
- [Require points estimate before review](#require-points-estimate-before-review)
|
||||
- [Auto-tag bugs as urgent when high priority](#auto-tag-bugs-as-urgent-when-high-priority)
|
||||
- [Prevent epics from being assigned](#prevent-epics-from-being-assigned)
|
||||
- [Auto-remove urgent tag when priority drops](#auto-remove-urgent-tag-when-priority-drops)
|
||||
- [Notify on critical task creation via webhook](#notify-on-critical-task-creation-via-webhook)
|
||||
- [Spike time-box](#spike-time-box)
|
||||
- [Require task breakdown for large estimates](#require-task-breakdown-for-large-estimates)
|
||||
- [Propagate priority from epic to children](#propagate-priority-from-epic-to-children)
|
||||
- [Auto-set due date for in-progress tasks](#auto-set-due-date-for-in-progress-tasks)
|
||||
- [Require a title on creation](#require-a-title-on-creation)
|
||||
- [Prevent creating tasks as done](#prevent-creating-tasks-as-done)
|
||||
- [Epics require a description at creation](#epics-require-a-description-at-creation)
|
||||
- [Prevent deleting epics with active children](#prevent-deleting-epics-with-active-children)
|
||||
- [Block deletion of high-priority tasks](#block-deletion-of-high-priority-tasks)
|
||||
|
||||
## WIP limit per assignee
|
||||
|
||||
Prevent overloading a single person with too many active tasks.
|
||||
|
|
|
|||
|
|
@ -9,4 +9,5 @@
|
|||
- [tiki format](tiki-format.md)
|
||||
- [Quick capture](quick-capture.md)
|
||||
- [AI collaboration](ai.md)
|
||||
- [Recipes](ideas/triggers.md)
|
||||
- [Recipes](ideas/plugins.md)
|
||||
- [Triggers](ideas/triggers.md)
|
||||
|
|
@ -14,9 +14,15 @@ This section documents the `ruki` language. `ruki` is a small language for findi
|
|||
|
||||
New users: start with [Quick Start](quick-start.md) and [Examples](examples.md).
|
||||
|
||||
## Recipes
|
||||
|
||||
ready-to-use examples for common workflow patterns
|
||||
|
||||
- [Plugins](../ideas/plugins.md)
|
||||
- [Triggers](../ideas/triggers.md)
|
||||
|
||||
## More details
|
||||
|
||||
- [Recipes](../ideas/triggers.md): ready-to-use trigger examples for common workflow patterns.
|
||||
- [Syntax](syntax.md): lexical structure and grammar-oriented reference.
|
||||
- [Semantics](semantics.md): statement behavior, trigger structure, qualifier scope, and evaluation model.
|
||||
- [Triggers](triggers.md): configuration, runtime execution model, cascade behavior, and operational patterns.
|
||||
|
|
|
|||
|
|
@ -122,6 +122,14 @@ Triggers are configured in `workflow.yaml` under the `triggers:` key. See [Trigg
|
|||
|
||||
## Where to go next
|
||||
|
||||
### Recipes
|
||||
ready-to-use examples for common workflow patterns
|
||||
|
||||
- [Plugins](../ideas/plugins.md)
|
||||
- [Triggers](../ideas/triggers.md)
|
||||
|
||||
### More info
|
||||
|
||||
- Use [Triggers](triggers.md) for configuration, execution model, and runtime behavior.
|
||||
- Use [Syntax](syntax.md) for the grammar-level reference.
|
||||
- Use [Types And Values](types-and-values.md) for the type system and literal rules.
|
||||
|
|
|
|||
Loading…
Reference in a new issue