@basementuniverse/kanbn 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -34,10 +34,12 @@ Where <command> is one of:
34
34
  sort .......... Sort a column in the index
35
35
  sprint ........ Start a new sprint
36
36
  burndown ...... View a burndown chart
37
+ gantt ......... Generate and view a Gantt chart
37
38
  validate ...... Validate index and task files
38
39
  archive ....... Archive a task
39
40
  restore ....... Restore a task from the archive
40
41
  remove-all .... Remove the kanbn board and all tasks
42
+ history ....... Show task history
41
43
 
42
44
  For more help with commands, try:
43
45
 
@@ -3,14 +3,10 @@
3
3
 
4
4
  Show a gantt chart for tracked tasks.
5
5
 
6
- Tasks are ordered using `depends-on` relations when present. The chart uses task dates, workload, and the optional
7
- `postponed` metadata field to estimate when work can start.
6
+ Tasks are ordered using `depends-on` relations when present. The chart prioritizes optional `plannedStart`/`plannedFinish` metadata when arranging bars, then falls back through `started`/`completed` dates, and finally uses workload-based best-effort scheduling when no timeline dates are available.
8
7
  The rendered chart includes:
9
- A unified date axis at the bottom for easy time reference
10
- A vertical "now" line marking the current date (if within the chart range)
11
- • Dependency arrows (└─→) showing which tasks depend on others
12
- • Task bars with progress indicators: █ (completed), ▓ (in progress), ░ (not started)
13
- • A blocked indicator (⧗) showing tasks delayed by dependencies
8
+ Dependency arrows (└─→) showing which tasks depend on others
9
+ A blocked indicator (⧗) showing tasks delayed by dependencies
14
10
 
15
11
  Options:
16
12
  {b}kanbn gantt --json{b}
@@ -0,0 +1,29 @@
1
+ {b}kanbn history{b}
2
+ {b}kanbn hi{b}
3
+
4
+ Show a chronological listing of task events.
5
+
6
+ Options:
7
+ {b}kanbn history --json{b}
8
+ {b}kanbn history -j{b}
9
+ Output raw history data in JSON format.
10
+
11
+ {b}kanbn history --sprint N|"name"{b}
12
+ {b}kanbn history -p N|"name"{b}
13
+ Filter history to one or more sprints.
14
+ This option can be repeated to include multiple sprints.
15
+
16
+ {b}kanbn history --date "date"{b}
17
+ {b}kanbn history -d "date"{b}
18
+ Filter history by date.
19
+ If one date is provided, show history from this date up to the present date.
20
+ If two or more dates are provided, show history from the earliest to latest date.
21
+
22
+ {b}kanbn history --assigned "user"{b}
23
+ {b}kanbn history -a "user"{b}
24
+ Filter for tasks assigned to a specific user.
25
+
26
+ {b}kanbn history --task "task-id"{b}
27
+ {b}kanbn history -t "task-id"{b}
28
+ Filter for one or more task ids.
29
+ This option can be repeated.
@@ -13,7 +13,8 @@ progress: 0.5
13
13
  started: 2021-03-21T04:58:38.653Z
14
14
  completed: 2021-03-21T04:58:38.653Z
15
15
  due: 2021-03-21T04:58:38.653Z
16
- postponed: 2021-03-20T04:58:38.653Z
16
+ plannedStart: 2021-03-20T04:58:38.653Z
17
+ plannedFinish: 2021-03-24T04:58:38.653Z
17
18
  ---
18
19
 
19
20
  # Task Name
@@ -117,10 +118,13 @@ The date and time that the task was completed.
117
118
 
118
119
  The date and time that the task is due to be completed.
119
120
 
120
- ### `postponed`
121
+ ### `plannedStart`
121
122
 
122
- The date and time after which the task should be scheduled. Gantt chart rendering uses this value as an explicit
123
- start-floor when present.
123
+ An optional date and time used as a preferred start point for gantt scheduling.
124
+
125
+ ### `plannedFinish`
126
+
127
+ An optional date and time used as a preferred finish point for gantt scheduling.
124
128
 
125
129
  ## Sub-tasks
126
130
 
@@ -1,18 +1,21 @@
1
1
  ---
2
2
  startedColumns:
3
- - In Progress
3
+ - 'In Progress'
4
4
  completedColumns:
5
5
  - Done
6
6
  sprints:
7
- - start: 2026-05-06T09:00:00.000Z
8
- name: Foundation Sprint
9
- description: Baseline product and infrastructure work.
10
- - start: 2026-06-10T09:00:00.000Z
11
- name: Workflow Sprint
12
- description: Core team workflow and onboarding features.
13
- - start: 2026-07-08T09:00:00.000Z
14
- name: Stabilisation Sprint
15
- description: Reliability and release readiness improvements.
7
+ -
8
+ start: 2026-07-01T09:00:00.000Z
9
+ name: 'Foundation Sprint'
10
+ description: 'Baseline product and infrastructure work.'
11
+ -
12
+ start: 2026-07-08T09:00:00.000Z
13
+ name: 'Workflow Sprint'
14
+ description: 'Core team workflow and onboarding features.'
15
+ -
16
+ start: 2026-07-15T09:00:00.000Z
17
+ name: 'Stabilisation Sprint'
18
+ description: 'Reliability and release readiness improvements.'
16
19
  taskWorkloadTags:
17
20
  Tiny: 1
18
21
  Small: 2
@@ -1,11 +1,13 @@
1
1
  ---
2
2
  created: 2026-07-05T10:00:00.000Z
3
- updated: 2026-07-06T10:00:00.000Z
3
+ updated: 2026-07-24T22:28:06.841Z
4
4
  tags:
5
5
  - Platform
6
6
  - Medium
7
7
  progress: 0
8
8
  due: 2026-07-07T10:00:00.000Z
9
+ plannedStart: 2026-07-06T14:05:13.527Z
10
+ plannedFinish: 2026-07-11T11:20:37.323Z
9
11
  ---
10
12
 
11
13
  # Build Invoice Download Endpoint
@@ -6,7 +6,7 @@ tags:
6
6
  - Large
7
7
  progress: 0
8
8
  due: 2026-07-11T10:00:00.000Z
9
- postponed: 2026-07-20T10:00:00.000Z
9
+ plannedStart: 2026-07-20T10:00:00.000Z
10
10
  ---
11
11
 
12
12
  # Create Self-serve Cancellation Flow
@@ -8,7 +8,7 @@ assigned: Ava
8
8
  progress: 0.4
9
9
  started: 2026-07-06T10:00:00.000Z
10
10
  due: 2026-07-07T10:00:00.000Z
11
- postponed: 2026-07-22T10:00:00.000Z
11
+ plannedStart: 2026-07-22T10:00:00.000Z
12
12
  ---
13
13
 
14
14
  # Optimize Dashboard First Load
@@ -6,7 +6,7 @@ tags:
6
6
  - Large
7
7
  progress: 0
8
8
  due: 2026-07-07T10:00:00.000Z
9
- postponed: 2026-07-18T10:00:00.000Z
9
+ plannedStart: 2026-07-18T10:00:00.000Z
10
10
  ---
11
11
 
12
12
  # Prototype Report Export Scheduler
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basementuniverse/kanbn",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "A CLI Kanban application",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/routes/add.json CHANGED
@@ -16,6 +16,8 @@
16
16
  "tag",
17
17
  "relation",
18
18
  "due",
19
+ "plannedStart",
20
+ "plannedFinish",
19
21
  "progress"
20
22
  ],
21
23
  "alias": {
package/routes/edit.json CHANGED
@@ -19,6 +19,8 @@
19
19
  "relation",
20
20
  "remove-relation",
21
21
  "due",
22
+ "plannedStart",
23
+ "plannedFinish",
22
24
  "progress"
23
25
  ],
24
26
  "alias": {
package/routes/find.json CHANGED
@@ -28,6 +28,8 @@
28
28
  "started",
29
29
  "completed",
30
30
  "due",
31
+ "plannedStart",
32
+ "plannedFinish",
31
33
  "workload",
32
34
  "progress",
33
35
  "assigned"
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "Task History",
3
+ "commands": [
4
+ "history",
5
+ "hi"
6
+ ],
7
+ "args": {
8
+ "boolean": [
9
+ "json"
10
+ ],
11
+ "string": [
12
+ "date",
13
+ "sprint",
14
+ "assigned",
15
+ "task"
16
+ ],
17
+ "alias": {
18
+ "json": ["j"],
19
+ "date": ["d"],
20
+ "sprint": ["p"],
21
+ "assigned": ["a"],
22
+ "task": ["t"]
23
+ }
24
+ },
25
+ "controller": "./src/controller/history",
26
+ "help": "./docs/commands/history.txt"
27
+ }
package/routes/sort.json CHANGED
@@ -27,6 +27,8 @@
27
27
  "started",
28
28
  "completed",
29
29
  "due",
30
+ "plannedStart",
31
+ "plannedFinish",
30
32
  "workload",
31
33
  "progress",
32
34
  "assigned"
@@ -0,0 +1,211 @@
1
+ ---
2
+ name: kanbn-plan
3
+ description: Turn a project brief into Kanbn planning artifacts only. Use this skill to generate or revise a Kanbn board index and task markdown files, including task descriptions, sub-tasks, and dependency relationships, without implementing the project itself.
4
+ ---
5
+
6
+ # Kanbn Plan
7
+
8
+ Use this skill when the user wants project planning output in Kanbn format: a board, task files, dependencies, sequencing, scope breakdown, and task descriptions.
9
+
10
+ Do not use this skill to implement the project, edit source code, scaffold files outside `.kanbn/`, or estimate progress from work that has not happened yet.
11
+
12
+ ## Core Contract
13
+
14
+ Your output must stay inside the Kanbn planning surface:
15
+
16
+ - `.kanbn/index.md`
17
+ - `.kanbn/tasks/*.md`
18
+
19
+ Do not create application code, tests, CI files, or documentation unrelated to the Kanbn board.
20
+
21
+ If the user asks for planning plus implementation, complete the planning portion in Kanbn format first and keep the planning files cleanly separated from any later work.
22
+
23
+ ## Planning Goals
24
+
25
+ Produce a board that is both valid and useful:
26
+
27
+ - Break vague requirements into concrete, reviewable tasks.
28
+ - Capture prerequisite relationships with Kanbn relations.
29
+ - Preserve important scope, assumptions, risks, and milestones in task descriptions.
30
+ - Avoid invented execution history such as fake progress, comments, timestamps, or completed work.
31
+ - Keep the plan maintainable so a human can reprioritise it later.
32
+
33
+ ## Workflow
34
+
35
+ ### 1. Extract scope before writing files
36
+
37
+ From the user prompt or specification, identify:
38
+
39
+ - project goal
40
+ - major workstreams or epics
41
+ - prerequisites and external dependencies
42
+ - constraints, risks, and open questions
43
+ - any explicit milestones, deadlines, or sequencing requirements
44
+
45
+ If the prompt is underspecified, make minimal planning assumptions and state them in the index description or in task descriptions where relevant.
46
+
47
+ ### 2. Choose a board shape
48
+
49
+ If the user does not specify columns, default to Kanbn's standard workflow:
50
+
51
+ - `Backlog`
52
+ - `Todo`
53
+ - `In Progress`
54
+ - `Done`
55
+
56
+ And default options:
57
+
58
+ - `startedColumns: ["In Progress"]`
59
+ - `completedColumns: ["Done"]`
60
+
61
+ Use extra columns only when the project brief clearly benefits from them, for example `Review`, `Testing`, `Release`, or domain-specific approval states.
62
+
63
+ Do not use columns to model architecture layers, epics, or teams when tags or task descriptions would be more appropriate. Columns should represent workflow state.
64
+
65
+ ### 3. Decompose into actionable tasks
66
+
67
+ Each generated task should be:
68
+
69
+ - small enough to complete as one coherent unit of work
70
+ - specific enough that another agent or engineer can act on it later
71
+ - named by outcome, not by vague area labels
72
+ - independent where possible, but explicitly linked when not
73
+
74
+ Prefer imperative or outcome-focused names such as:
75
+
76
+ - `Define authentication flow`
77
+ - `Create database migration plan`
78
+ - `Document deployment rollback steps`
79
+
80
+ Avoid umbrella task names such as:
81
+
82
+ - `Backend`
83
+ - `Frontend work`
84
+ - `Finish project`
85
+
86
+ ### 4. Model dependencies carefully
87
+
88
+ Use the relations section to encode sequencing.
89
+
90
+ Preferred relation types:
91
+
92
+ - `depends-on`: the current task cannot start until the referenced task is complete
93
+ - `blocks`: the current task prevents the referenced task from starting or finishing
94
+
95
+ Important rules:
96
+
97
+ - Use one direction per dependency edge. Do not create both `depends-on A` and `blocks B` for the same relationship unless the user explicitly asks for mirrored wording.
98
+ - Do not create self-references.
99
+ - Do not create cycles.
100
+ - Other relation types such as `duplicates` or `obsoletes` are allowed, but they are not scheduling dependencies.
101
+
102
+ Kanbn's gantt dependency logic only treats `depends-on` and `blocks` as dependency edges.
103
+
104
+ ### 5. Write lean metadata
105
+
106
+ Only include metadata when it is grounded in the prompt or materially useful.
107
+
108
+ Safe defaults:
109
+
110
+ - omit YAML front matter entirely when no metadata is needed
111
+ - omit `created`, `updated`, `started`, `completed`, `progress`, `comments`, and `history`
112
+ - omit `assigned` unless the user supplied owners
113
+ - omit `due` unless the user supplied a deadline
114
+
115
+ Useful optional metadata:
116
+
117
+ - `tags` for epics, domains, or sizing labels
118
+ - custom fields only if the board already defines them
119
+
120
+ ### 6. Place tasks in columns intentionally
121
+
122
+ For a fresh plan, use this default placement strategy unless the user specifies otherwise:
123
+
124
+ - put ready, near-term tasks with no unresolved prerequisites in `Todo`
125
+ - put deferred or dependency-blocked tasks in `Backlog`
126
+ - leave `In Progress` and `Done` empty unless the user explicitly says work has already started or finished
127
+
128
+ Do not fabricate active work.
129
+
130
+ ### 7. Validate before finalising
131
+
132
+ Before presenting the plan, validate it if the environment allows.
133
+
134
+ Use these helper files from this skill when available:
135
+
136
+ - `references/index-structure.md`
137
+ - `references/task-structure.md`
138
+ - `references/planning-rules.md`
139
+ - `scripts/validate-kanbn.mjs`
140
+ - `scripts/check-dependency-cycles.mjs`
141
+
142
+ Validation sequence:
143
+
144
+ 1. Ensure `.kanbn/index.md` uses valid headings and task links.
145
+ 2. Ensure each task file has a valid title, description, and any reserved sections in the correct format.
146
+ 3. Run the validate wrapper.
147
+ 4. Run the dependency cycle checker.
148
+ 5. Fix any structural or dependency issues before stopping.
149
+
150
+ ## Output Standards
151
+
152
+ ### Index requirements
153
+
154
+ The index must:
155
+
156
+ - contain exactly one level-1 project heading
157
+ - contain optional description text directly under the project heading
158
+ - define workflow columns with level-2 headings
159
+ - list task ids as markdown links to `tasks/<task-id>.md`
160
+
161
+ ### Task requirements
162
+
163
+ Each task file must:
164
+
165
+ - live at `.kanbn/tasks/<task-id>.md`
166
+ - contain exactly one top-level heading with the human-readable task name
167
+ - include a description tailored to the task
168
+ - use reserved headings correctly when present: `Metadata`, `Sub-tasks`, `Relations`, `Comments`, `History`
169
+
170
+ Descriptions should usually include:
171
+
172
+ - the purpose of the task
173
+ - key scope boundaries
174
+ - expected deliverable or outcome
175
+ - acceptance criteria or completion signals when useful
176
+
177
+ ### Task id rules
178
+
179
+ Use stable kebab-case ids derived from the task name.
180
+
181
+ Examples:
182
+
183
+ - `Set up CI pipeline` -> `set-up-ci-pipeline`
184
+ - `Plan data retention policy` -> `plan-data-retention-policy`
185
+
186
+ ## When Revising An Existing Board
187
+
188
+ If `.kanbn/` already exists:
189
+
190
+ - preserve the existing board structure unless the user asked to redesign it
191
+ - preserve existing custom fields and option conventions
192
+ - avoid rewriting unrelated tasks
193
+ - add or edit only the planning artifacts needed for the requested plan change
194
+
195
+ ## References
196
+
197
+ Use these files as the source of truth while authoring:
198
+
199
+ - `references/index-structure.md` for `.kanbn/index.md`
200
+ - `references/task-structure.md` for `.kanbn/tasks/*.md`
201
+ - `references/planning-rules.md` for decomposition and dependency heuristics
202
+
203
+ ## Success Criteria
204
+
205
+ This skill is successful when it produces a Kanbn board that:
206
+
207
+ - accurately reflects the requested project scope
208
+ - is structurally valid
209
+ - contains actionable tasks instead of vague placeholders
210
+ - captures dependency order without cycles
211
+ - does not stray into implementation work
@@ -0,0 +1,89 @@
1
+ # Kanbn Index Reference
2
+
3
+ This reference describes the structure expected for `.kanbn/index.md` when generating a project plan.
4
+
5
+ ## Minimum Valid Shape
6
+
7
+ ```markdown
8
+ ---
9
+ startedColumns:
10
+ - In Progress
11
+ completedColumns:
12
+ - Done
13
+ ---
14
+
15
+ # Project Name
16
+
17
+ Short project summary and planning assumptions.
18
+
19
+ ## Backlog
20
+
21
+ - [task-id-1](tasks/task-id-1.md)
22
+ - [task-id-2](tasks/task-id-2.md)
23
+
24
+ ## Todo
25
+
26
+ - [task-id-3](tasks/task-id-3.md)
27
+
28
+ ## In Progress
29
+
30
+ ## Done
31
+ ```
32
+
33
+ ## Rules
34
+
35
+ - The file may begin with YAML front matter.
36
+ - There must be exactly one level-1 heading for the project name.
37
+ - Text under the project heading is the project description.
38
+ - After the description, each level-2 heading defines a column.
39
+ - Each column should contain a markdown list of task links.
40
+ - Each task link should point to `tasks/<task-id>.md`.
41
+ - The link text should be the task id, not the human-readable title.
42
+
43
+ ## Recommended Defaults
44
+
45
+ If the user does not specify a workflow, prefer:
46
+
47
+ ```yaml
48
+ startedColumns:
49
+ - In Progress
50
+ completedColumns:
51
+ - Done
52
+ ```
53
+
54
+ And columns:
55
+
56
+ - `Backlog`
57
+ - `Todo`
58
+ - `In Progress`
59
+ - `Done`
60
+
61
+ ## Placement Guidance
62
+
63
+ - Put tasks in `Todo` only if they are ready to start and not obviously blocked.
64
+ - Put blocked, later-phase, or lower-priority work in `Backlog`.
65
+ - Leave `In Progress` empty for a newly generated plan unless the prompt explicitly says work is underway.
66
+ - Leave `Done` empty unless the prompt explicitly references completed work.
67
+
68
+ ## Options Worth Using
69
+
70
+ Only add options when they are meaningful.
71
+
72
+ Commonly useful options:
73
+
74
+ - `startedColumns`
75
+ - `completedColumns`
76
+ - `hiddenColumns`
77
+ - `taskWorkloadTags`
78
+ - `defaultTaskWorkload`
79
+ - `customFields`
80
+
81
+ Avoid adding large option blocks that the user did not ask for.
82
+
83
+ ## Common Mistakes
84
+
85
+ - Using headings inside the project description.
86
+ - Listing bare task ids instead of markdown links.
87
+ - Linking to the wrong path, for example `./tasks/...` or absolute paths.
88
+ - Treating columns as epics or teams instead of workflow states.
89
+ - Populating `In Progress` or `Done` with speculative work states.
@@ -0,0 +1,58 @@
1
+ # Planning Rules
2
+
3
+ Use these heuristics when turning a prompt into Kanbn planning artifacts.
4
+
5
+ ## Decomposition Heuristics
6
+
7
+ - Split by deliverable, decision, integration point, or risk area.
8
+ - Prefer tasks that produce one observable planning outcome.
9
+ - Separate discovery work from execution work when the unknowns are material.
10
+ - Separate prerequisite setup from dependent feature work.
11
+ - Separate cross-cutting concerns such as security, observability, migration, or rollout planning when they would otherwise disappear into feature tasks.
12
+
13
+ ## Task Granularity
14
+
15
+ Aim for tasks that are:
16
+
17
+ - independently understandable
18
+ - narrow enough to estimate or assign later
19
+ - broad enough to avoid an explosion of trivial tasks
20
+
21
+ If a task description needs multiple unrelated deliverables, split it.
22
+
23
+ ## Dependency Rules
24
+
25
+ - Add dependencies only when order materially matters.
26
+ - Prefer `depends-on` over ad hoc wording because Kanbn already understands it for scheduling.
27
+ - Use `blocks` when it reads more naturally from the prerequisite task.
28
+ - Do not encode the same dependency twice in opposite directions unless the user wants mirrored relations.
29
+ - Avoid diamond-shaped dependency graphs when a simpler linear or fan-out structure is more accurate.
30
+
31
+ ## Prioritisation Rules
32
+
33
+ - Put foundational work before feature-specific work.
34
+ - Put architecture and interface decisions before implementation-heavy downstream tasks.
35
+ - Put risk-reduction tasks earlier when they can invalidate later work.
36
+ - Keep optional enhancements, stretch goals, and nice-to-haves in `Backlog`.
37
+
38
+ ## Naming Rules
39
+
40
+ - Use explicit outcome-oriented titles.
41
+ - Prefer verbs like `Define`, `Plan`, `Document`, `Design`, `Map`, `Specify`, `Assess`, `Prepare`.
42
+ - Avoid names that just restate a subsystem with no action.
43
+
44
+ ## Assumption Rules
45
+
46
+ - Do not invent deadlines, owners, or progress.
47
+ - If the prompt leaves a critical planning choice unresolved, capture it as an assumption or an explicit planning task.
48
+ - If the board already exists, preserve its conventions unless the user asks to change them.
49
+
50
+ ## Final Review Checklist
51
+
52
+ Before finalising a generated board, confirm:
53
+
54
+ - every task in the index has a corresponding task file
55
+ - every relation points to an existing task id
56
+ - the dependency graph has no cycles
57
+ - task descriptions are specific enough to guide later execution
58
+ - the board contains planning artifacts only, not implementation work