README.md

 1# nasin pali (the way of work)
 2
 3[![REUSE status](https://api.reuse.software/badge/git.secluded.site/nasin-pali)](https://api.reuse.software/info/git.secluded.site/nasin-pali)
 4[![Go Report Card](https://goreportcard.com/badge/git.secluded.site/nasin-pali)](https://goreportcard.com/report/git.secluded.site/nasin-pali)
 5
 6**This README is aspirational!** None of the code exists yet, I'm just getting
 7my ideas down.
 8
 9---
10
11_nasin pali_, installed as `np`, is a CLI tool that encourages LLMs in agentic
12coding tools (specifically coding, I don't think we want to support generic
13workflows) to do a bit more planning before going off and making a bunch of
14changes. It is _both_ meant for humans and LLMs; there are subcommands that
15produce output for the model and subcommands for the human to inspect the
16model's progress.
17
18The todo systems built into agentic coding tools are often just that: todo and
19nothing else. I think (backed by no evidence) that they do better when they can
20also set a goal. If I understand the coding tools correctly, they also have the
21LLM reproduce the entire task list with each `todo_write` invocation, which just
22seems wasteful and careless to me. What if it decides it doesn't want to do a
23task because it's "too hard" and it just omits that task next time it writes the
24list? _nasin pali_ helps force the model into a different flow.
25
26- Start a new session with `np s` . It adds details to the global sqlite
27  database and produces output to guide the LLM through its next steps. Instead
28  of telling the model up-front about everything it can do with _nasin pali_
29  though AGENTS.md or tool definitions or something, we only reveal the
30  sub-commands and flags it might actually need once it needs them. It shouldn't
31  ever use the interactive commands, so we never tell them model about them.
32
33  - There can be one active session per working directory and the previous
34    session must be archived before starting a new one. This is so the model
35    doesn't have to provide a session ID or something for each invocation.
36
37- `np s` tells the model about the goal and task sub-commands and their flags
38  and to begin the session by turning the user's request, bug report, issue
39  contents, spec, etc. into a concise overarching goal with a thorough
40  description
41- `np g s` accepts title and description arguments and tells the model to, if
42  necessary, look around at additional relevant files before adding some tasks
43  with `np t a`
44
45## The name
46
47Is [toki pona](https://tokipona.org/). [_nasin_](https://nimi.li/nasin) occupies
48the semantic space of "method, doctrine, tradition; path, road, way" while
49[_pali_](https://nimi.li/pali) covers "work, activity; create, build, design;
50put effort toward, take action on". Together and in this context, _nasin pali_
51could be translated as "the way of work", "the doctrine of design", etc.
52
53## Random thoughts
54
55- When providing multiple lines for the body, use
56
57  ```bash
58  np goal set "Sentence case title" "$(cat <<'EOF'
59  Multi-line
60  - Body
61  - Here
62
63  EOF
64  )"
65  ```