8.8 KiB
Customization Examples
- Assign to me
- Add tag to task
- Custom status + reject action
- Implement with Claude Code
- Search all tikis
- Quick assign
- Stale task detection
- My tasks
- Recent ideas
- Auto-delete stale tasks
- Priority triage
- Sprint board
- Severity triage
- Subtasks in epic
- By topic
Assign to me — global plugin action
Shortcut key that sets the selected task's assignee to the current git user. Defined under views.actions, this shortcut is available in all tiki plugin views.
views:
actions:
- key: "a"
label: "Assign to me"
action: update where id = id() set assignee=user()
The same format works as a per-plugin action (under a plugin's actions: key) if you only want it in a specific view.
Add tag to task — plugin action
Appends a tag to the selected task's tag list without removing existing tags.
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.
statuses:
- key: rejected
label: Rejected
emoji: "🚫"
done: true
- 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"
Implement with Claude Code — pipe action
Shortcut key that pipes the selected task's title and description to Claude Code for implementation.
actions:
- key: "i"
label: "Implement"
action: >
select title, description where id = id()
| run("claude -p 'Implement this: $1. Details: $2'")
Search all tikis — single-lane plugin
A plugin with one unfiltered lane shows every task. Press / to search across all of them.
- 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.
- 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.
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"]
- 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.
- 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".
- 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.
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.
- 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
Sprint board — custom enum lanes
Uses a custom sprint enum field. Lanes per sprint; moving a task between lanes reassigns it. The third lane catches unplanned backlog tasks.
Requires:
fields:
- name: sprint
type: enum
values: [sprint-7, sprint-8, sprint-9]
- name: Sprint Board
key: "F9"
lanes:
- name: Current Sprint
filter: select where sprint = "sprint-7" and status != "done" order by priority
action: update where id = id() set sprint="sprint-7"
- name: Next Sprint
filter: select where sprint = "sprint-8" order by priority
action: update where id = id() set sprint="sprint-8"
- name: Unplanned
filter: select where sprint is empty and status = "backlog" order by priority
action: update where id = id() set sprint=empty
Severity triage — custom enum filter + action
Lanes per severity level. The last lane combines two values with or. A per-plugin action lets you mark a task as trivial without moving it.
Requires:
fields:
- name: severity
type: enum
values: [critical, major, minor, trivial]
- name: Severity
key: "F10"
lanes:
- name: Critical
filter: select where severity = "critical" order by updatedAt desc
action: update where id = id() set severity="critical"
- name: Major
filter: select where severity = "major" order by updatedAt desc
action: update where id = id() set severity="major"
- name: Minor & Trivial
columns: 2
filter: >
select where severity = "minor" or severity = "trivial"
order by severity, priority
action: update where id = id() set severity="minor"
actions:
- key: "t"
label: "Trivial"
action: update where id = id() set severity="trivial"
Subtasks in epic — custom taskIdList + quantifier trigger
A subtasks field on parent tasks tracks their children (inverse of dependsOn). A trigger auto-completes the parent when every subtask is done. The plugin shows open vs. completed parents.
Requires:
fields:
- name: subtasks
type: taskIdList
triggers:
- description: close parent when all subtasks are done
ruki: >
every 5min
update where subtasks is not empty
and status != "done"
and all subtasks where status = "done"
set status="done"
- name: Epics
key: "F11"
lanes:
- name: In Progress
filter: >
select where subtasks is not empty
and status != "done"
order by priority
- name: Completed
columns: 1
filter: >
select where subtasks is not empty
and status = "done"
order by updatedAt desc
By topic — tag-based lanes
Split tasks into lanes by tag. Useful for viewing work across domains at a glance.
- 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