@raquezha/norpiv 0.0.2 โ†’ 0.0.3

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
@@ -1,6 +1,6 @@
1
1
  # norpiv (Lean RPIV Workflow Engine)
2
2
 
3
- A disciplined task execution lifecycle for the Pi coding agent designed to maximize accuracy, control, and traceability through a step-by-step Staff Engineer planning process.
3
+ RPIV: a gated workflow for reliable AI coding agents.
4
4
 
5
5
  ## ๐Ÿ” The Lifecycle
6
6
 
@@ -38,7 +38,7 @@ Best for trying or handing off RPIV skills without installing the full `nothing`
38
38
 
39
39
  ```bash
40
40
  npx -y skills add raquezha/nothing --full-depth -g -a pi \
41
- -s triage frame grill-with-docs plan implement verify sync cleanup update-docs \
41
+ -s triage frame grill-with-docs plan implement verify sync cleanup update-docs distill \
42
42
  -y
43
43
  ```
44
44
 
@@ -67,6 +67,38 @@ Targets:
67
67
 
68
68
  `norpiv-install` also installs the shared helper scripts under a sibling `scripts/` directory so skill references like `../scripts/triage_helper.sh` resolve after installation.
69
69
 
70
+ ## ๐Ÿงข Hats
71
+
72
+ | Hat | Purpose |
73
+ | :--- | :--- |
74
+ | `pi --rpiv` | Full RPIV workflow. Loads triage, frame, grill-with-docs, plan, implement, verify, sync, cleanup, and update-docs. |
75
+ | `pi --notes` | Conversation distiller. Saves useful thinking to Obsidian without RPIV ceremony. |
76
+
77
+ ## ๐Ÿ“ Pre-RPIV note capture
78
+
79
+ ### distill
80
+
81
+ Converts the current conversation into a durable Obsidian-ready markdown note.
82
+
83
+ **Trigger:** `/distill`, "distill this", "save the useful parts", "save this as a note"
84
+
85
+ **Output:** A single `.md` file written to `$OBSIDIAN_VAULT/distilled/` or `~/notes/distilled/`
86
+
87
+ **Use when:** The conversation produced useful thinking that should survive outside chat โ€” an idea, a research thread, a decision, a concept โ€” but is not yet ready for RPIV or a PRD.
88
+
89
+ **Does not:** Create PRDs, start RPIV, require a ticket, or ask the user to classify their idea.
90
+
91
+ ---
92
+
93
+ **Relationship to RPIV:**
94
+
95
+ ```text
96
+ conversation โ†’ /distill โ†’ Obsidian note (pre-commitment)
97
+ Obsidian note โ†’ /triage โ†’ RPIV (only when ready to commit)
98
+ ```
99
+
100
+ `distill` is the missing layer before RPIV. Use `pi --notes` to load it.
101
+
70
102
  ## ๐Ÿš€ Quick Start Example
71
103
 
72
104
  1. **Activate the RPIV Hat** from the full `nothing` setup:
@@ -0,0 +1,197 @@
1
+ ---
2
+ name: distill
3
+ description: >
4
+ Distill the current conversation into a clean, durable Obsidian-ready markdown note.
5
+ Triggered by: /distill, "distill this", "save the useful parts", "save this as a note",
6
+ "turn this into a note", "capture this", "make this reusable", "summarize this for later".
7
+ Use when the user wants to preserve the useful thinking from a conversation without
8
+ turning it into a PRD, RPIV task, or implementation plan. Output is a single markdown
9
+ file written to the configured Obsidian vault path.
10
+ ---
11
+
12
+ # Skill: distill
13
+
14
+ ## Purpose
15
+
16
+ Convert the current conversation into one clean, Obsidian-ready markdown note.
17
+
18
+ Not a workflow. Not a summary transcript. Not a PRD. Not an RPIV task.
19
+
20
+ A note that lets future-you rehydrate this thinking without rereading the whole conversation.
21
+
22
+ ---
23
+
24
+ ## Trigger phrases
25
+
26
+ Activate this skill when the user says any of:
27
+
28
+ - `/distill`
29
+ - `distill this`
30
+ - `save the useful parts`
31
+ - `save this as a note`
32
+ - `turn this into a note`
33
+ - `capture this`
34
+ - `make this reusable`
35
+ - `park this`
36
+ - `summarize this for obsidian`
37
+ - `save this before it disappears`
38
+
39
+ Do NOT wait for the user to say `/distill` explicitly. If they say any of the phrases above in any form, activate.
40
+
41
+ ---
42
+
43
+ ## Behavior rules
44
+
45
+ 1. **Do not ask clarifying questions before producing the note.** Read the conversation and produce the note immediately.
46
+ 2. **Do not create a PRD** unless the user explicitly requests one.
47
+ 3. **Do not create an RPIV task** unless the user explicitly requests one.
48
+ 4. **Do not over-structure weak ideas.** If the conversation was low-value, produce a minimal note and say so honestly.
49
+ 5. **Infer the note shape from the conversation type.** Do not ask the user to choose.
50
+ 6. **Always include a title and one-line summary** at the top.
51
+ 7. **Always include a resume prompt** โ€” a single question or prompt that lets future-you continue without rereading.
52
+ 8. **Prefer one sharp note over a comprehensive transcript summary.** Preserve the *why this mattered*, not what was said.
53
+
54
+ ---
55
+
56
+ ## Note shapes (inferred, not chosen by user)
57
+
58
+ | Conversation type | Note shape |
59
+ |---|---|
60
+ | Idea or app concept | Concept note |
61
+ | Research or investigation | Research brief |
62
+ | Decision or tradeoff | Decision note |
63
+ | Debugging or learning | Learning note |
64
+ | Workflow or system design | Design note |
65
+ | Mixed or unclear | General distilled note |
66
+
67
+ ---
68
+
69
+ ## Output format
70
+
71
+ Produce a single markdown file.
72
+
73
+ ### Default template
74
+
75
+ ```md
76
+ ---
77
+ distilled: {{YYYY-MM-DD}}
78
+ type: {{inferred: concept | research | decision | learning | design | note}}
79
+ tags: [{{inferred tags, 2-4 max}}]
80
+ ---
81
+
82
+ # {{sharp, specific title โ€” not generic}}
83
+
84
+ > {{one-line summary of what this conversation was about and why it mattered}}
85
+
86
+ ## Why this mattered
87
+
88
+ {{1-3 sentences. Why did this conversation happen? What triggered the question?}}
89
+
90
+ ## Core insight
91
+
92
+ {{The main realization. Not a summary of everything said. One clear insight.
93
+ If there was no clear insight, say so.}}
94
+
95
+ ## Useful points
96
+
97
+ - {{point}}
98
+ - {{point}}
99
+ - {{point}}
100
+
101
+ ## Open questions
102
+
103
+ {{Only include if there are genuine unresolved questions. Omit section if none.}}
104
+
105
+ - {{question}}
106
+
107
+ ## Possible next move
108
+
109
+ {{Optional. Only include if there is a natural, obvious next action.
110
+ Do NOT invent tasks. Do NOT suggest starting RPIV unless the user is clearly ready.
111
+ If nothing is obvious, omit this section entirely.}}
112
+
113
+ ## Promotion signal
114
+
115
+ {{Optional. Only include if the idea seems ready for real work.
116
+ Example: "This is ready for RPIV if: you know the first useful version, you can describe success, and you actually want to build this now."
117
+ If not ready, omit entirely. Do not fabricate readiness.}}
118
+
119
+ ## Resume prompt
120
+
121
+ > {{A single question or prompt. When future-you opens this note, this is what Pi should ask first.
122
+ Example: "Do you still want to build this, and if so what's the smallest useful version?"
123
+ Example: "What's still unclear about the architecture before you commit?"}}
124
+ ```
125
+
126
+ ### Minimal template (low-value conversations)
127
+
128
+ If the conversation produced little of value, produce this instead and say so:
129
+
130
+ ```md
131
+ ---
132
+ distilled: {{YYYY-MM-DD}}
133
+ type: note
134
+ ---
135
+
136
+ # {{title}}
137
+
138
+ > {{one-line summary}}
139
+
140
+ ## Note
141
+
142
+ This conversation was exploratory and didn't produce a clear insight or decision.
143
+ Preserved in case it's useful later.
144
+
145
+ ## Resume prompt
146
+
147
+ > {{question}}
148
+ ```
149
+
150
+ ---
151
+
152
+ ## Output target
153
+
154
+ Write the note to the Obsidian vault. Create the `distilled/` directory if the parent vault/notes directory exists. Use this path resolution order:
155
+
156
+ 1. `$OBSIDIAN_VAULT/distilled/` โ€” if `$OBSIDIAN_VAULT` env var is set
157
+ 2. `~/notes/distilled/` โ€” fallback if `~/notes` exists
158
+ 3. If neither parent exists, output the markdown to stdout and tell the user to copy it manually
159
+
160
+ Filename format: `YYYY-MM-DD-kebab-title.md`
161
+
162
+ Example: `2026-06-11-rpiv-vs-idea-research.md`
163
+
164
+ After writing, confirm to the user:
165
+
166
+ ```
167
+ โœ“ Saved to: ~/notes/distilled/2026-06-11-rpiv-vs-idea-research.md
168
+ ```
169
+
170
+ If writing fails, output the markdown to stdout so the user can copy it manually. Never silently fail.
171
+
172
+ ---
173
+
174
+ ## What this skill does NOT do
175
+
176
+ - Does not start RPIV
177
+ - Does not create a PRD
178
+ - Does not ask the user to classify their idea
179
+ - Does not produce a multi-section workflow artifact
180
+ - Does not require `WORK.md`
181
+ - Does not interact with `.workflow/` directory
182
+ - Does not sync to Jira, GitHub, or GitLab
183
+ - Does not run cleanup
184
+ - Does not require any existing task or ticket
185
+
186
+ ---
187
+
188
+ ## Relationship to RPIV
189
+
190
+ ```
191
+ conversation โ†’ /distill โ†’ Obsidian note (pre-commitment, no task)
192
+ Obsidian note โ†’ RPIV (only when user is ready to commit)
193
+ ```
194
+
195
+ `distill` feeds RPIV. RPIV does not absorb `distill`.
196
+
197
+ If a distilled note contains a **Promotion signal** section, the user can choose to run `/triage` manually on that idea later. `distill` never starts triage automatically.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raquezha/norpiv",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "Bundled RPIV workflow skills for Pi, Claude, and Codex-style coding agents",
5
5
  "type": "commonjs",
6
6
  "bin": {
@@ -9,6 +9,7 @@
9
9
  "files": [
10
10
  "bin",
11
11
  "cleanup",
12
+ "distill",
12
13
  "frame",
13
14
  "grill-with-docs",
14
15
  "implement",
@@ -43,7 +44,8 @@
43
44
  "verify",
44
45
  "sync",
45
46
  "update-docs",
46
- "cleanup"
47
+ "cleanup",
48
+ "distill"
47
49
  ]
48
50
  }
49
51
  }