wizz-method 2.25.3 → 2.26.0

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "wizz-method",
4
- "version": "2.25.3",
4
+ "version": "2.26.0",
5
5
  "description": "Wizz Method: método de agência orientado por IA em PT-BR",
6
6
  "keywords": [
7
7
  "agile",
@@ -19,7 +19,7 @@ description: >
19
19
 
20
20
  ```
21
21
  Session: /iniciar /salvar /ver
22
- Routine: /dia
22
+ Routine: /dia /higiene
23
23
  Capture: /dump /decisao /conteudo
24
24
  Research: /prospect
25
25
  Memory: /memoria
@@ -42,13 +42,14 @@ Read offset=(line-5) limit=15 # → reads only the needed excerpt
42
42
  | /salvar | 2 | 3 |
43
43
  | /ver | 1 | 0 |
44
44
  | /dia | 1 per active project | 0 |
45
+ | /higiene | 0 | only after the user confirms |
45
46
  | /dump | 0 | 1 |
46
47
  | /decisao | 0 | 2 |
47
48
  | /memoria | 1 | 0 |
48
49
 
49
50
  **Per-file reading rules:**
50
51
  - `CEREBRO.md` — **never full Read**. Grep to find the project block (5–8 lines), Edit directly.
51
- - `projetos/[name].md` — Read the **last 80 lines** (tail). Sessions and current state sit at the end.
52
+ - `projetos/[name].md` — Read the **top** (`limit=14`, the `Estado` block). Only `/salvar` also reads the last 40 lines (What's left + Sessions). Never a tail of 80.
52
53
  - `_decisions/`, `_content/` — Write directly, without reading the existing file.
53
54
 
54
55
  ## Vault
@@ -88,8 +89,9 @@ grep -m1 "^vault:" "/path/CEREBRO.md"
88
89
  _knowledge/
89
90
  about-me.md
90
91
  goals.md
91
- _decisions/ ← YYYY-MM-DD-[slug].md, with frontmatter (date, project, topic,
92
- status, supersede). The `tema` field is what grep finds.
92
+ _decisions/ ← YYYY-MM-DD-[slug].md, with frontmatter (data, projeto, tema,
93
+ status, supersede, substituida_por). The `tema` field is what grep finds.
94
+ Schema and enums: see "Decision schema" below.
93
95
  (`_learnings/` no longer exists: it was written to and never
94
96
  read by any command, and was removed on 2026-08-28.
95
97
  Stack gotchas and non-obvious bugs go to the agent's
@@ -100,14 +102,36 @@ grep -m1 "^vault:" "/path/CEREBRO.md"
100
102
  [name].md ← current project state (structure: header + 12-line `Estado` block at the top + Preferences + Context + What's left + Sessions)
101
103
  ```
102
104
 
103
- **Linking rule:** always wiki-links `[[file]]` within the vault.
105
+ **Linking rule:** `[[file]]` wiki-links only for notes that exist inside the vault. Anything outside it (auto-memory files, repo paths, skills) goes in backticks, never in `[[ ]]`: a wiki-link to a file outside the vault shows up as a broken link and pollutes the graph.
106
+
107
+ ## Decision schema (single, mandatory)
108
+
109
+ Every file in `_decisions/` uses this frontmatter, with these exact Portuguese keys (never `date`/`project`):
110
+
111
+ | key | rule |
112
+ |---|---|
113
+ | `data` | `YYYY-MM-DD` |
114
+ | `projeto` | lowercase slug equal to the file name in `projetos/` (`meju`, not `MeJu`) |
115
+ | `tema` | 2 to 4 comma-separated **concepts** (never words copied from the slug like `only`, `antes`, `fase1`); reuse terms that already exist, see `/decisao` step 2 |
116
+ | `status` | one of `ativa`, `substituida`, `encerrada` (no other word) |
117
+ | `supersede` | slug of the decision this one replaces (optional) |
118
+ | `substituida_por` | slug of the decision that replaced this one (optional; the only name for this key) |
119
+
120
+ The body must link its project (`Projeto: [[projetos/<slug>]]`) so the decision is never an orphan in the graph; when it replaces another, also link the old one.
121
+
122
+ ## Vault hygiene
123
+
124
+ - A project file that grows past ~300 lines moves its oldest sessions to `_index/sessoes-<nome>.md` (move, never delete).
125
+ - An archived project leaves a stub in `_archive/projetos/<nome>.md` so old links keep resolving.
126
+ - No empty `Sem título*.canvas`, no `.DS_Store` committed.
127
+ - Graph (`.obsidian/graph.json`, only touch it when the user asks): color by project, one group per project with the query `[projeto:<slug>] OR path:projetos/<slug>` (Tableau palette, so a decision and its project hub share a color), `file:CEREBRO` gold first, then one neutral group per folder. Keep labels for zoom only (`textFadeMultiplier` ~0.8, never negative), `nodeSizeMultiplier` ~1.5, `centerStrength` 0.5, `repelStrength` 10, `linkStrength` 1, `linkDistance` ~120. Every folder or project in a color query must exist.
104
128
 
105
129
  ## Commands (load on demand)
106
130
 
107
131
  Each command has its full step-by-step procedure in a reference file. Load only the file for the command group the user triggered:
108
132
 
109
133
  - `references/comandos-sessao.md` — `/iniciar` (set up new project), `/ver` (quick current state), `/salvar` (close session) with full steps, token budget and templates.
110
- - `references/comandos-rotina-e-captura.md` — `/dia` (daily briefing), `/dump` (quick capture), `/decisao` (record decision), `/conteudo` (content idea) with full steps and templates.
134
+ - `references/comandos-rotina-e-captura.md` — `/dia` (daily briefing), `/higiene` (vault health report, then asks before fixing), `/dump` (quick capture), `/decisao` (record decision), `/conteudo` (content idea) with full steps and templates.
111
135
  - `references/comandos-pesquisa-e-memoria.md` — `/prospect` (research a prospect) and `/memoria` (read and feed the project's auto-memory from any platform) with full steps and templates.
112
136
 
113
137
  ## General rules
@@ -115,7 +139,7 @@ Each command has its full step-by-step procedure in a reference file. Load only
115
139
  - Wiki-links `[[file]]` within the vault.
116
140
  - Absolute dates in `YYYY-MM-DD` format, never relative ("yesterday", "last week"). Volatile facts (published version, release state, etc.) carry an `em YYYY-MM-DD:` prefix in the text; on re-reading, the agent treats it as a snapshot of that moment, not a current fact.
117
141
  - Never delete history — only append.
118
- - **Grep before writing.** Before creating a new decision, idea or record, search the topic in the destination folder. If the fact already exists, update the existing record; a decision that replaces another marks the old one as `superseded` instead of keeping both alive.
142
+ - **Grep before writing.** Before creating a new decision, idea or record, search the topic in the destination folder. If the fact already exists, update the existing record; a decision that replaces another marks the old one as `substituida` instead of keeping both alive.
119
143
  - Session narrative lives in the project file: `Estado` block at the top (12 lines, overwritten on every `/salvar`) + 1 line in the `Sessões` table. `_index/sessions.md` no longer exists: it was written to and never read by any command, and was removed on 2026-08-28.
120
144
  - Summaries: 1 line per item.
121
145
  - CEREBRO.md should always stay under 150 useful lines — move long tables to `_index/`.
@@ -8,7 +8,7 @@ Load this file when running `/dia`, `/dump`, `/decisao` or `/conteudo`. Before a
8
8
 
9
9
  **Steps:**
10
10
  1. `grep -A4 "### " "$VAULT/CEREBRO.md"` → lists every project block (name + last session + pending)
11
- 2. For each project with active status (🟢🟡): tail-read of 30 lines (`offset=n-30`)
11
+ 2. For each project with active status (🟢🟡): Read the top with `limit=14` (the `Estado` block); no tail
12
12
  3. Build a consolidated briefing
13
13
  4. Don't read `_knowledge/goals.md` unless the user explicitly asks
14
14
 
@@ -29,11 +29,45 @@ Load this file when running `/dia`, `/dump`, `/decisao` or `/conteudo`. Before a
29
29
 
30
30
  **Steps:**
31
31
  1. Receive the content (from the argument or ask in 1 message)
32
- 2. Classify: idea / learning / decision / reference / content
32
+ 2. Classify: idea / decision / reference / content. A technical learning (stack gotcha, non-obvious bug) is not a vault fact: send it to the agent's auto-memory instead
33
33
  3. Write directly to the right file — without reading anything first
34
- 4. `grep -n "## Conteúdo em aberto\|## Aprendizados" "$VAULT/CEREBRO.md"` → find the line for a 1-line Edit
34
+ 4. `grep -n "## Conteúdo em aberto" "$VAULT/CEREBRO.md"` → find the line for a 1-line Edit
35
35
  5. Confirm in 1 line
36
36
 
37
+ ## /higiene
38
+
39
+ **Goal:** a health report of the vault, then an offer to fix. The check is read-only (zero Reads, bash only); **nothing is changed until the user confirms**.
40
+
41
+ **Steps** (one bash call, `VAULT` from the Vault section):
42
+
43
+ ```bash
44
+ cd "$VAULT"
45
+ echo "decisão sem tema:"; grep -L "^tema:" _decisions/*.md
46
+ echo "status fora do enum:"; grep -H "^status:" _decisions/*.md | grep -v -E "status: (ativa|substituida|encerrada)$"
47
+ echo "decisão sem link de projeto:"; grep -L "\[\[projetos/" _decisions/*.md
48
+ echo "projeto > 300 linhas:"; wc -l projetos/*.md | awk '$1>300 && $2!="total"'
49
+ echo "CEREBRO.md linhas:"; wc -l < CEREBRO.md
50
+ echo "pastas que não deviam existir:"; ls -d _learnings _moc 2>/dev/null
51
+ echo "hubs (mais citados):"; grep -rhoE "\[\[[^]|#]+" --include="*.md" . | sed 's/\[\[//' | sort | uniq -c | sort -rn | head -10
52
+ ```
53
+
54
+ For orphans: a note that no other file cites (`grep -rl "\[\[<name>" .` returns only itself) is an orphan; check only the notes listed above, not the whole vault.
55
+
56
+ **Output:** one line per finding (`path · problem · suggested fix`), at most 20 lines, then 1 line with the totals. Nothing found = say so in 1 line and stop.
57
+
58
+ **Then ask once** (AskUserQuestion where available, a numbered question otherwise) which groups to fix, multi-select, nothing pre-selected:
59
+
60
+ | group | what the fix does | safe to batch |
61
+ |---|---|---|
62
+ | Decisions without project link | adds `Projeto: [[projetos/<projeto>]]` under the title, from the `projeto:` field | yes |
63
+ | Decisions without `tema` or with a wrong `status` | fills `tema` from the existing vocabulary, normalizes `status` to the enum | yes |
64
+ | Oversize projects | moves old sessions to `_index/sessoes-<nome>.md` (see `/salvar` step 6) | one project at a time |
65
+ | Over-long `CEREBRO.md` | moves the oldest `Decisões recentes` to `_index/cerebro-archive.md` | yes |
66
+ | Removed folders that came back (`_learnings`) | never deleted: lists the files and asks where each goes (auto-memory, `_decisions/`, `_archive/`) | no, one by one |
67
+ | Orphans and hubs | informational only, no fix | n/a |
68
+
69
+ Apply only the groups the user ticked, with surgical Edits (never rewrite a whole file), never delete anything (move only), and end with 1 line per group saying how many files changed. A group the user did not tick stays reported and untouched. If the question tool is not available and the user does not answer, change nothing.
70
+
37
71
  ## /decisao
38
72
 
39
73
  **Goal:** record a decision. 1 grep first, no Read.
@@ -47,28 +81,38 @@ grep -ril "<2 or 3 words about the topic>" "$VAULT/_decisions/" | head -5
47
81
  ```
48
82
 
49
83
  - Found a decision on the same topic: **don't create a new file**. Open the existing one and decide between two paths:
50
- - the new decision **replaces** the old one → mark the old one with `status: superseded` and `supersedida_por: <new slug>`, and create the new one with `supersede: <old slug>`
84
+ - the new decision **replaces** the old one → mark the old one with `status: substituida` and `substituida_por: <new slug>`, and create the new one with `supersede: <old slug>`
51
85
  - the new decision **elaborates on** the old one → edit the old one, don't create a second
52
86
  - Found nothing: proceed to step 3.
53
87
 
54
- 3. Write directly to `_decisions/YYYY-MM-DD-[slug].md` (template below)
55
- 4. `grep -n "## Decisões recentes" "$VAULT/CEREBRO.md"` → line
56
- 5. Edit to insert a wiki-link reference right below that line
57
- 6. If there's a project: `grep -n "## Decisões" "$VAULT/projetos/$PROJ.md"` → Edit 1 line
88
+ 3. **Reuse the theme vocabulary** (1 bash call) before choosing `tema`:
89
+
90
+ ```bash
91
+ grep -h "^tema:" "$VAULT/_decisions/"*.md | sed 's/^tema: *//' | tr ',' '\n' | sed 's/^ *//' | sort | uniq -c | sort -rn | head -40
92
+ ```
93
+
94
+ Pick existing terms when they fit; add a new one only for a genuinely new concept. The theme names what the decision is about (`consentimento, tracking`), not the words of its title.
95
+
96
+ 4. Write directly to `_decisions/YYYY-MM-DD-[slug].md` (template below), with `Projeto: [[projetos/<slug>]]` under the title
97
+ 5. `grep -n "## Decisões recentes" "$VAULT/CEREBRO.md"` → line
98
+ 6. Edit to insert a wiki-link reference right below that line
99
+ 7. If there's a project: `grep -n "## Decisões" "$VAULT/projetos/$PROJ.md"` → Edit 1 line
58
100
 
59
101
  **Template `_decisions/YYYY-MM-DD-[slug].md`:**
60
102
  ```markdown
61
103
  ---
62
104
  data: YYYY-MM-DD
63
- projeto: [name]
105
+ projeto: [lowercase slug equal to the file name in projetos/]
64
106
  tema: [2 to 4 keywords separated by comma, this is what grep finds]
65
- status: ativa
107
+ status: ativa # ativa | substituida | encerrada
66
108
  supersede: [slug of the decision this replaces, or omit]
67
- supersedida_por: [filled in later, when another decision replaces this one]
109
+ substituida_por: [filled in later, when another decision replaces this one]
68
110
  ---
69
111
 
70
112
  # [Title]
71
113
 
114
+ Projeto: [[projetos/<slug>]]
115
+
72
116
  ## Decision
73
117
  [1-2 lines]
74
118
 
@@ -84,6 +84,14 @@ What does **not** go in the block: history, decisions, learnings, a long list of
84
84
  1. Read `projetos/[name].md` with `limit=14` (the State block is at the top)
85
85
  2. Return the block almost as-is, without rewriting it
86
86
 
87
+ **`/ver decisoes <tema>`:** read the decisions about a theme, without opening files. One bash call:
88
+
89
+ ```bash
90
+ grep -l "^tema:.*<tema>" "$VAULT/_decisions/"*.md | xargs grep -L "^status: substituida" | sort -r | head -5
91
+ ```
92
+
93
+ Return at most 5 lines `date · title · status` (title = the first `# ` line). Open one decision only if the user asks. Decisions marked `substituida` are skipped on purpose: the one that replaced them is the live one.
94
+
87
95
  **Old file, with no State block at the top:** falls onto the slow path exactly once — `wc -l` and Read of the last 60 lines — and when returning it, offer to create the block. Once accepted, the next `/ver` goes back to costing 1 short Read.
88
96
 
89
97
  ## /salvar
@@ -143,4 +151,10 @@ grep -c "^| " "$VAULT/projetos/$PROJ.md"
143
151
 
144
152
  - Sessions table with more than 15 lines: move the oldest ones to `_index/cerebro-archive.md`, under `## Sessões antigas — [project]`, leaving the 15 newest in the project file. Never delete, only move.
145
153
 
154
+ ```bash
155
+ wc -l "$VAULT/projetos/$PROJ.md"
156
+ ```
157
+
158
+ - Project file over ~300 lines: move the oldest sessions (and any history block that is not `Estado`, `O que falta` or the 15 newest sessions) to `_index/sessoes-$PROJ.md`, leaving a 1-line `[[_index/sessoes-$PROJ]]` pointer. Never delete, only move.
159
+
146
160
  **7. Confirm in 2 lines** what was saved.