@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 +28 -0
- package/budget.toml +7 -0
- package/package.json +30 -0
- package/skills/change/SKILL.md +71 -0
- package/skills/debug/SKILL.md +42 -0
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>
|