@raquezha/norpiv 0.0.2 โ 0.0.4
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 +47 -2
- package/distill/SKILL.md +197 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# norpiv (Lean RPIV Workflow Engine)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
RPIV: a gated workflow for reliable AI coding agents.
|
|
4
4
|
|
|
5
5
|
## ๐ The Lifecycle
|
|
6
6
|
|
|
@@ -24,6 +24,19 @@ Auxiliary hygiene:
|
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
+
## notrace relationship
|
|
28
|
+
|
|
29
|
+
notrace is an optional retrospective layer around RPIV.
|
|
30
|
+
|
|
31
|
+
Rules:
|
|
32
|
+
|
|
33
|
+
- **RPIV must work without notrace**.
|
|
34
|
+
- **notrace may attach to RPIV when task state exists**.
|
|
35
|
+
- `WORK.md` remains the RPIV source of truth whether notrace is installed or not.
|
|
36
|
+
- `.notrace/` owns notrace artifacts.
|
|
37
|
+
- `.workflow/` owns RPIV task state.
|
|
38
|
+
- notrace artifacts and reviews may be referenced from `WORK.md [LOG]`, but RPIV phases must not depend on those files being present.
|
|
39
|
+
|
|
27
40
|
## ๐ก๏ธ Critical Guardrails
|
|
28
41
|
|
|
29
42
|
- **Measure Twice, Cut Once**: Never implement code during scoping or planning. The agent will wait for an explicit `EXECUTE` statement before modifying files.
|
|
@@ -38,7 +51,7 @@ Best for trying or handing off RPIV skills without installing the full `nothing`
|
|
|
38
51
|
|
|
39
52
|
```bash
|
|
40
53
|
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 \
|
|
54
|
+
-s triage frame grill-with-docs plan implement verify sync cleanup update-docs distill \
|
|
42
55
|
-y
|
|
43
56
|
```
|
|
44
57
|
|
|
@@ -67,6 +80,38 @@ Targets:
|
|
|
67
80
|
|
|
68
81
|
`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
82
|
|
|
83
|
+
## ๐งข Hats
|
|
84
|
+
|
|
85
|
+
| Hat | Purpose |
|
|
86
|
+
| :--- | :--- |
|
|
87
|
+
| `pi --rpiv` | Full RPIV workflow. Loads triage, frame, grill-with-docs, plan, implement, verify, sync, cleanup, and update-docs. |
|
|
88
|
+
| `pi --notes` | Conversation distiller. Saves useful thinking to Obsidian without RPIV ceremony. |
|
|
89
|
+
|
|
90
|
+
## ๐ Pre-RPIV note capture
|
|
91
|
+
|
|
92
|
+
### distill
|
|
93
|
+
|
|
94
|
+
Converts the current conversation into a durable Obsidian-ready markdown note.
|
|
95
|
+
|
|
96
|
+
**Trigger:** `/distill`, "distill this", "save the useful parts", "save this as a note"
|
|
97
|
+
|
|
98
|
+
**Output:** A single `.md` file written to `$OBSIDIAN_VAULT/distilled/` or `~/notes/distilled/`
|
|
99
|
+
|
|
100
|
+
**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.
|
|
101
|
+
|
|
102
|
+
**Does not:** Create PRDs, start RPIV, require a ticket, or ask the user to classify their idea.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
**Relationship to RPIV:**
|
|
107
|
+
|
|
108
|
+
```text
|
|
109
|
+
conversation โ /distill โ Obsidian note (pre-commitment)
|
|
110
|
+
Obsidian note โ /triage โ RPIV (only when ready to commit)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
`distill` is the missing layer before RPIV. Use `pi --notes` to load it.
|
|
114
|
+
|
|
70
115
|
## ๐ Quick Start Example
|
|
71
116
|
|
|
72
117
|
1. **Activate the RPIV Hat** from the full `nothing` setup:
|
package/distill/SKILL.md
ADDED
|
@@ -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.
|
|
3
|
+
"version": "0.0.4",
|
|
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
|
}
|