docs: moar elaboration

Amolith created

Change summary

README.md | 69 ++++++++++++++++++++++++++++++++++++++++++--------------
1 file changed, 52 insertions(+), 17 deletions(-)

Detailed changes

README.md 🔗

@@ -8,6 +8,8 @@ my ideas down.
 
 ---
 
+## Overview
+
 _nasin pali_, installed as `np`, is a CLI tool that encourages LLMs in agentic
 coding tools (specifically coding, I don't think we want to support generic
 workflows) to do a bit more planning before going off and making a bunch of
@@ -22,26 +24,38 @@ also set a goal. If I understand the coding tools correctly, they also have the
 LLM reproduce the entire task list with each `todo_write` invocation, which just
 seems wasteful and careless to me. What if it decides it doesn't want to do a
 task because it's "too hard" and it just omits that task next time it writes the
-list? _nasin pali_ helps force the model into a different flow.
+list? _nasin pali_ helps force the model into a different overall flow.
 
-- Start a new session with `np s` . It adds details to the global sqlite
-  database and produces output to guide the LLM through its next steps. Instead
-  of telling the model up-front about everything it can do with _nasin pali_
-  though AGENTS.md or tool definitions or something, we only reveal the
-  sub-commands and flags it might actually need once it needs them. It shouldn't
-  ever use the interactive commands, so we never tell them model about them.
+## Expected workflow
 
-  - There can be one active session per working directory and the previous
-    session must be archived before starting a new one. This is so the model
-    doesn't have to provide a session ID or something for each invocation.
+_This is what I like, I'd be happy to hear of other workflows that lead to
+better/different success and to consider whether nasin-pali can support them_
 
-- `np s` tells the model about the goal and task sub-commands and their flags
-  and to begin the session by turning the user's request, bug report, issue
-  contents, spec, etc. into a concise overarching goal with a thorough
-  description
-- `np g s` accepts title and description arguments and tells the model to, if
-  necessary, look around at additional relevant files before adding some tasks
-  with `np t a`
+The operator is expected to load the prompt up with relevant text. Type the
+issue in the prompt, paste the bug report, tell it how to fetch the issue from
+your issue tracker, whatever you like. If the issue content is too sparse, make
+sure to add more context. The more context you give and the higher its quality
+and relevancy, the better results you'll have. Include paths to as many files
+you know will be relevant as possible. Mention particular symbols, paste
+snippets of code, etc. Once your prompt looks good, send it off.
+
+In the `np` section of the model's rules, we'll have instructions to
+_immediately_ set an overarching goal with `np g s -t title -d description` that
+captures the operator's request, combining the information from the ticket and
+any extra operator-provided context. It should then go off and look at the
+provided references and thoroughly consider how to go about resolving the goal.
+After gathering that context, it adds tasks with `np t a -t title -d description
+-t title2 -d description2` and gets started on them.
+
+I'm unsure how to handle session archival (mentioned in [random
+thoughts](#random-thoughts)). We could tell the model how to archive sessions in
+the rules, but I don't know that the model even needs to know about sessions;
+maybe archival should require human interaction. If the model can't archive
+sessions, and the agentic coding tool doesn't have a way for the operator to
+execute shell commands, they'd have to quit or open a new shell to run that
+command before the model can create a new one session. Maybe telling it about
+the archival command, but to never run it without operator interaction, would be
+sufficient.
 
 ## The name
 
@@ -64,3 +78,24 @@ could be translated as "the way of work", "the doctrine of design", etc.
   EOF
   )"
   ```
+
+- I like the way
+  [planning-mcp-server](https://git.secluded.site/planning-mcp-server#tracking-progress)
+  renders the task list in unicode characters. `☑` is one token while `- [x]` is
+  probably like five.
+- Start a new session with `np s`. It adds details to the global sqlite database
+  and produces output to guide the LLM through its next steps. Instead of
+  telling the model up-front about everything it can do with _nasin pali_ though
+  AGENTS.md or tool definitions or something, we only reveal the sub-commands
+  and flags it might actually need once it needs them. It shouldn't ever use the
+  interactive commands, so we never tell them model about them.
+  - There can be one active session per working directory and the previous
+    session must be archived before starting a new one. This is so the model
+    doesn't have to provide a session ID or something for each invocation.
+- `np s` tells the model about the goal and task sub-commands and their flags
+  and to begin the session by turning the user's request, bug report, issue
+  contents, spec, etc. into a concise overarching goal with a thorough
+  description
+- `np g s` accepts title and description arguments and tells the model to, if
+  necessary, look around at additional relevant files before adding some tasks
+  with `np t a`. <mark>Would something like this work?</mark>