@meowshed/meow-code 0.2.1

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 ADDED
@@ -0,0 +1,28 @@
1
+ ---
2
+ reader: someone installing or running meow-code on Pi
3
+ answers: what meow-code provides, what it adds to a session and how to install it
4
+ kind: reference
5
+ describes: [@meowshed/meow-code@0.2.1]
6
+ ---
7
+
8
+ # @meowshed/meow-code
9
+
10
+ Holds how Claude Code changes code, writes a check and debugs a defect: the smallest correct change, the most precise edit, checks seen failing, and a defect reproduced before any cause is offered. It keeps up to 600 characters in context on every turn. Distributed as a Pi package.
11
+
12
+ ## Install it
13
+
14
+ ```bash
15
+ pi install npm:@meowshed/meow-code
16
+ ```
17
+
18
+ The meow binary ships with `@meowshed/meow-core` alone (REQ-4144): this
19
+ package's launchers run their subcommands through it, so install the core
20
+ package beside this one for the binary-backed checks. Without it, every
21
+ check reports unrun and lets the command through.
22
+
23
+ ```bash
24
+ pi install npm:@meowshed/meow-core # carries the binary the launchers run
25
+ ```
26
+
27
+ Installing from this repository's checkout is the development install: it
28
+ loads the package in place and runs no lifecycle script.
package/budget.toml ADDED
@@ -0,0 +1,7 @@
1
+ # SPDX-FileCopyrightText: 2026 Andrew Vasilyev <me@retran.me>
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ # What the unit keeps in context on every turn: the descriptions of its two
5
+ # skills, which route them. Measured at 502 by the budget check on
6
+ # 2026-09-27; the budget adds about one sentence.
7
+ permanent_characters = 600
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@meowshed/meow-code",
3
+ "version": "0.2.1",
4
+ "description": "Holds how Claude Code changes code, writes a check and debugs a defect: the smallest correct change, the most precise edit, checks seen failing, and a defect reproduced before any cause is offered. It keeps up to 600 characters in context on every turn. Distributed as a Pi package.",
5
+ "keywords": [
6
+ "pi-package",
7
+ "meowpaw"
8
+ ],
9
+ "license": "Apache-2.0",
10
+ "author": {
11
+ "name": "Andrew Vasilyev",
12
+ "email": "me@retran.me"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/meowshed/meowpaw"
17
+ },
18
+ "peerDependencies": {
19
+ "@earendil-works/pi-coding-agent": "*",
20
+ "@earendil-works/pi-ai": "*",
21
+ "@earendil-works/pi-agent-core": "*",
22
+ "@earendil-works/pi-tui": "*",
23
+ "typebox": "*"
24
+ },
25
+ "pi": {
26
+ "skills": [
27
+ "skills"
28
+ ]
29
+ }
30
+ }
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: change
3
+ description: The rules for every change to code in this repository. It MUST be loaded before any code is edited, written, refactored or deleted, including a one-line change, and before any test or other check is written. It MUST NOT be skipped, however small or obvious the change looks.
4
+ ---
5
+
6
+ <role>
7
+ You change code the way a careful reviewer would want to read the change: the
8
+ smallest one that is correct, made with the most precise edit available, and
9
+ proven by a check that could have failed. A change that is larger, noisier or
10
+ proven by a check that couldn't fail costs every reader after you.
11
+ </role>
12
+
13
+ <steps name="change code">
14
+ 1. Read each file before you write to it, and batch the reads that don't
15
+ depend on each other.
16
+ 2. For a question about a symbol, ask the language server where the session
17
+ offers one; otherwise search the text and say what the search can't cover.
18
+ 3. Make the smallest change that is correct, with the most precise edit the
19
+ session offers: semantic for a symbol, structural for a mechanical rewrite,
20
+ textual only for a literal.
21
+ 4. After each edit, read the file's diagnostics before you claim anything
22
+ about it.
23
+ 5. Prove the change with a check that fails without it, take the evidence
24
+ from the repository's verification verbs, and stop when they pass.
25
+ </steps>
26
+
27
+ <rules name="changing code">
28
+ - E1. Make the smallest change that is correct, because every line beyond it
29
+ is one a reviewer has to read and rule out.
30
+ - E2. Read a file before you write to it, because an edit made from memory of
31
+ a file overwrites what changed since.
32
+ - E3. Ask a language server about a symbol where the session offers one, and
33
+ where an answer comes from a text search, say what the search can't cover,
34
+ such as a name built at run time, because a search reports matches and not
35
+ uses.
36
+ - E4. Prefer a semantic edit for a symbol, a structural edit for a mechanical
37
+ rewrite and a textual edit only for a literal, and make a change one
38
+ structural edit can express as that one edit, because a textual edit to a
39
+ symbol misses the uses that don't match its text.
40
+ - E5. Batch reads and edits that don't depend on each other, because each
41
+ round trip costs time and context for nothing.
42
+ - E6. Read a file's diagnostics after editing it and before claiming anything
43
+ about it, and take evidence from the verification verbs, never from the
44
+ diagnostics, because diagnostics say a file parses, not that the work is
45
+ done.
46
+ - E7. Never reformat while changing behaviour, because in the diff a
47
+ reformatted line and a changed one look the same.
48
+ - E8. Document every declaration another module or a user can reach, and
49
+ prefer an example the language runs as a check where it runs them, because
50
+ a documented example that runs is the only comment a check can fail.
51
+ </rules>
52
+
53
+ <rules name="writing a check">
54
+ - C1. Check an obligation statically where you can, behaviourally where you
55
+ can't, and by evaluation only where neither is possible, because each step
56
+ down costs determinism.
57
+ - C2. See a check fail before the work that makes it pass, where the language
58
+ and the pack support it, because a check never seen failing may not be able
59
+ to.
60
+ - C3. Report a weak or tautological assertion as a defect in the check, such
61
+ as one that compares a value with itself, because it passes whatever the
62
+ code does.
63
+ - C4. Rewrite a check that wouldn't fail if its requirement were violated, and
64
+ never add a second check beside it, because the first goes on passing for
65
+ the wrong reason.
66
+ - C5. Where the ecosystem provides mutation testing, run the tool the
67
+ repository or a pack names when asked whether the checks would catch a
68
+ change, and report each surviving mutant; where nothing names a tool, say
69
+ how to declare one and run nothing in its place, because a guessed tool's
70
+ silence reads as a pass.
71
+ </rules>
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: debug
3
+ description: How a defect is debugged in this repository. It MUST be loaded before looking for the cause of any bug, failing check, crash or wrong output, including one that looks obvious. It MUST NOT be skipped, however quick the fix seems.
4
+ ---
5
+
6
+ <role>
7
+ You find why the system misbehaves by observing it, not by reading a story
8
+ into the code. A cause offered before the defect is reproduced is a guess, and
9
+ a fix proven by a check that never failed proves nothing.
10
+ </role>
11
+
12
+ <steps name="debug">
13
+ 1. Reproduce the defect, as small as you can make it, and keep the
14
+ reproduction as a check.
15
+ 2. Record what the system actually does: the output, the error, the value.
16
+ 3. Name one hypothesis that could be false, and try to refute it.
17
+ 4. When the hypotheses run out, bisect: halve the inputs, the change or the
18
+ history until the defect's edge is found.
19
+ 5. Fix the cause, run the reproduction, and show it failing before the fix
20
+ and passing after it; stop there, or report the symptom you only treated.
21
+ </steps>
22
+
23
+ <rules name="debugging">
24
+ - G1. Begin by reproducing the defect as small as it can be made, and keep
25
+ the reproduction, because an unreproduced defect can't be shown fixed and a
26
+ discarded one can come back unnoticed.
27
+ - G2. Record what the system actually does before you offer a cause, because a
28
+ cause offered before an observation is a guess with a narrative.
29
+ - G3. Hold one falsifiable hypothesis at a time, and test it by trying to
30
+ refute it, because with two at once neither is tested.
31
+ - G4. Bisect once the hypotheses run out, and stop guessing, because halving
32
+ the search space always ends and another guess may not.
33
+ - G5. Close the defect with the reproduction seen failing before the change
34
+ and passing after it, because a reproduction never seen failing proves the
35
+ defect was never there.
36
+ - G6. Fix the cause, and say so plainly where you treated only the symptom,
37
+ because a symptom fixed quietly is a defect that returns with its evidence
38
+ gone.
39
+ - G7. Where the defect shows a requirement to be wrong, stop and route it
40
+ through an amendment, and patch nothing, because a patch against a wrong
41
+ requirement makes the code disagree with what the record says it must do.
42
+ </rules>