kaji-cli
v1.0.0
Published
Folder-structured knowledgebase + task CLI
Readme
kaji
A CLI for structuring feature docs and tasks as real folders instead of a flat task list. Built for use alongside Claude Code's explore → plan → implement workflow.
Every feature, task, and subtask is a real path under .kaji/. The path is the identifier —
no IDs, no parent pointers, no flat list to reconstruct hierarchy from.
.kaji/
saving/ # plain org folder, name it however you want
big-feature/
sub-feature/
feature-1/
FEATURE.md # marks this folder as a feature
docs/ # feature-level docs
tasks/
task-1-onboarding-flow/
TASK.md # goal + inline todo checklist
EXPLORE.md # filled in by Claude during the explore phase
PLAN.md # filled in by Claude during the plan phase
docs/ # task-specific docs
subtasks/
subtask-1-wire-up-api.mdInstall
bun install
bun link # exposes the `kaji` binary, or just run `bun src/cli.ts`Commands
| Command | Description |
|---|---|
| kaji init | Create .kaji/ in the current directory |
| kaji feature new <path> | Create a feature, e.g. kaji feature new saving/big-feature/sub-feature/feature-1 |
| kaji task new <featurePath> <title> | Create a task under a feature (auto-numbered) |
| kaji subtask new <taskPath> <title> | Create a subtask under a task (auto-numbered) |
| kaji doc new <path> <title> | Create a doc under a feature's or task's docs/ |
| kaji status <path> <status> | Set status: todo, in-progress, blocked, or done |
| kaji list [path] [--type=feature\|task\|subtask\|doc] [--status=...] | Flat filtered listing |
| kaji tree [path] | Recursive tree view with statuses |
| kaji show <path> | Print a feature/task/subtask/doc and list its children |
A task's TASK.md (and a subtask's SUBTASK.md-equivalent file) has an inline ## Todo
checklist — use that for simple work. Only reach for kaji subtask new when a piece of work
needs its own tracked file. Subtasks are intentionally one level deep and simple: a single
.md file, no EXPLORE.md/PLAN.md/docs/ of their own.
Using this with Claude Code
kaji only scaffolds folders and templated markdown — it doesn't generate prompts or invoke
Claude itself. When you start a session, paste the task folder's path into the conversation.
Add this to your project's CLAUDE.md:
This repository uses **Kaji** (`.kaji/`) to structure feature docs and tasks as real folders,
not a flat task list. When working on a task, your focus is locked to the folder path you
were given in this conversation — do not read or modify files outside it unless told to.
Inside a task folder:
- `TASK.md` — the goal and an inline todo checklist. Keep the checklist updated as you go.
- `EXPLORE.md` — read-only investigation. If empty, do exploration first and fill it in
before writing any plan or code.
- `PLAN.md` — concrete, bite-sized steps. If empty, write the plan here and wait for
approval before implementing.
- `docs/` — reference material for this task.
- `subtasks/*.md` — only created when a piece of work needs its own tracked checklist;
otherwise use the inline todo in TASK.md.
If a task needs to be broken down further, add a new file under `subtasks/` rather than
expanding scope inline.Not in scope (yet)
- No browser/TUI kanban board.
- No automatic
claudeCLI invocation — kaji only scaffolds files. - One
.kaji/per repo — no cross-repo/global vault mode. - Subtasks don't nest further; break a subtask into a new sibling task if it needs more structure.
