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 instructions for the model and subcommands that let the human inspect
16what the model's doing.
17
18The todo systems built into agentic coding tools are often just that: todo and
19nothing else. They also, if I understand correctly, have the LLM reproduce the
20entire task list with each `todo_write` invocation, which just seems crazy to
21me. What if it decides it doesn't want to do a task because it's "too hard" and
22it just omits that task next time it writes the list? _nasin pali_ does things a
23little differently.
24
25- Start a new session with `np s` . It adds details to the global sqlite
26  database and produces output to guide the LLM through its next steps. Instead
27  of telling the model up-front about everything it can do with _nasin pali_,
28  all the sub-commands and flags, we only reveal the sub-commands and flags it
29  might actually need once it needs them. It shouldn't ever use the interactive
30  commands, so we don't tell them model about them.
31
32  - There can be one active session per working directory and the previous
33    session must be archived before starting a new one. This is so the model
34    doesn't have to provide a session ID or something for each invocation.
35
36- `np s` tells the model about the goal and task sub-commands and their flags
37  and to begin the session by turning the user's request, bug report, issue
38  contents, spec, etc. into a concise overarching goal with a thorough
39  description
40- `np g s` accepts title and description arguments and tells the model to, if
41  necessary, look around at additional relevant files before adding some tasks
42  with `np t a`
43
44When multi-line inputs are required, use
45
46```text
47np goal set "Sentence case title" "$(cat <<'EOF'
48Multi-line
49
50- Body
51- Here
52
53EOF
54)"
55```