letthemquibble 1.0.1 → 1.2.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/LICENSE +21 -0
- package/README.md +81 -15
- package/dist/quibble.js +2976 -653
- package/package.json +3 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Andrew Repine
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,41 +1,107 @@
|
|
|
1
1
|
# letthemquibble
|
|
2
2
|
|
|
3
|
-
Quibble lets coding agents file complaints about the project they work in.
|
|
4
|
-
agent
|
|
5
|
-
runs one command instead of working around the problem
|
|
6
|
-
read the aggregate and
|
|
3
|
+
Quibble lets coding agents file complaints about the project they work in. When
|
|
4
|
+
an agent loses time to a slow build, a flaky test or a confusing document, it
|
|
5
|
+
runs one command instead of quietly working around the problem. Maintainers
|
|
6
|
+
read the complaints in aggregate and fix what hurts most.
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
This package is the `quibble` CLI. It is published as `letthemquibble` because
|
|
9
|
+
`quibble` is taken on npm.
|
|
9
10
|
|
|
10
11
|
## Install
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
On macOS or Linux:
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
curl -fsSL https://letthemquibble.com/install.sh | sh
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
On Windows, in PowerShell:
|
|
20
|
+
|
|
21
|
+
```powershell
|
|
22
|
+
irm https://letthemquibble.com/install.ps1 | iex
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
This installs a standalone binary that needs no Node. Run it again to update.
|
|
26
|
+
`QUIBBLE_VERSION` pins a version and `QUIBBLE_INSTALL_DIR` picks the
|
|
27
|
+
directory. On Alpine and other musl systems, run `apk add libstdc++ libgcc`
|
|
28
|
+
first.
|
|
29
|
+
|
|
30
|
+
With Node 22 or later you can install from npm instead:
|
|
13
31
|
|
|
14
32
|
```sh
|
|
15
33
|
npm install -g letthemquibble
|
|
16
34
|
```
|
|
17
35
|
|
|
18
|
-
##
|
|
36
|
+
## Quick start
|
|
37
|
+
|
|
38
|
+
Quibble talks to the hosted service at `https://api.letthemquibble.com` unless
|
|
39
|
+
you name another endpoint. Create an account and an organization at
|
|
40
|
+
<https://letthemquibble.com>, and have an admin create the project there.
|
|
41
|
+
Then, in the repository:
|
|
19
42
|
|
|
20
43
|
```sh
|
|
44
|
+
cd ~/code/myproject
|
|
45
|
+
quibble login
|
|
46
|
+
quibble init --org acme
|
|
47
|
+
quibble snippet --append CLAUDE.md --hook
|
|
21
48
|
quibble complain "the build takes 4 minutes" -s high -t build
|
|
22
49
|
quibble list
|
|
23
50
|
quibble summary
|
|
24
51
|
```
|
|
25
52
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
53
|
+
`quibble init` writes a `.quibblerc` and prints a short section for your
|
|
54
|
+
`CLAUDE.md` or `AGENTS.md`. It tells the agent when to complain and how, for
|
|
55
|
+
example:
|
|
29
56
|
|
|
30
|
-
|
|
57
|
+
```
|
|
58
|
+
quibble complain "what went wrong, and what you expected" -s medium -t build --agent claude
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
`quibble snippet --append CLAUDE.md` appends that section to a file
|
|
62
|
+
(`AGENTS.md` names the agent `codex`), `quibble snippet --skill` writes it as a
|
|
63
|
+
Claude Code skill, and `--agent <name>` names any other agent.
|
|
64
|
+
|
|
65
|
+
When the allowed tags change, `quibble sync` rewrites that section in place
|
|
66
|
+
in `CLAUDE.md`, `AGENTS.md` and the skill file, and leaves the rest of each
|
|
67
|
+
file alone. `--hook` on `init`, `snippet` or `sync` adds a Claude Code
|
|
68
|
+
`SessionStart` hook that runs `quibble sync --quiet` at the start of every
|
|
69
|
+
new session, so the list stays current by itself.
|
|
70
|
+
|
|
71
|
+
Complaints that share a headline fold into one row of `quibble list`.
|
|
72
|
+
`quibble show <id>` prints one in full, and any unique prefix of at least 6
|
|
73
|
+
characters stands for an id. Project names ignore case: `DBT` and `dbt` are
|
|
74
|
+
the same project.
|
|
75
|
+
|
|
76
|
+
## Local mode
|
|
77
|
+
|
|
78
|
+
Local mode keeps complaints on your machine, in
|
|
79
|
+
`~/.quibble/complaints.jsonl`, with no server and no account. It is opt-in:
|
|
80
|
+
pass `--local`, or set the endpoint to `local`.
|
|
31
81
|
|
|
32
82
|
```sh
|
|
33
|
-
quibble init --
|
|
83
|
+
quibble init --endpoint local -t build -t tests -t docs
|
|
84
|
+
quibble complain "the build takes 4 minutes" -s high -t build
|
|
34
85
|
```
|
|
35
86
|
|
|
36
|
-
`
|
|
37
|
-
|
|
38
|
-
|
|
87
|
+
`--endpoint local` writes `"endpoint": "local"` into `.quibblerc`, so every
|
|
88
|
+
command in the project stays local. Each local filing says on stderr that
|
|
89
|
+
nothing was sent.
|
|
90
|
+
|
|
91
|
+
## Other servers and CI
|
|
92
|
+
|
|
93
|
+
`--endpoint`, `QUIBBLE_ENDPOINT`, `.quibblerc` and `~/.quibble/config.json`
|
|
94
|
+
take the API URL, the web URL or a bare host, such as
|
|
95
|
+
`staging.example.com`. `quibble login --endpoint <url>` saves the endpoint
|
|
96
|
+
in `~/.quibble/config.json` when that file names none yet, so you pass it
|
|
97
|
+
once.
|
|
98
|
+
|
|
99
|
+
For CI, a maintainer runs `quibble token create ci`, and the job sets the two
|
|
100
|
+
lines it prints, `QUIBBLE_ENDPOINT` and `QUIBBLE_TOKEN`, instead of logging in.
|
|
101
|
+
A complaint that cannot reach the API waits in `~/.quibble/unsent.jsonl` and
|
|
102
|
+
goes out with the next remote command, or with `quibble retry`.
|
|
103
|
+
|
|
104
|
+
Run `quibble --help` for every command.
|
|
39
105
|
|
|
40
106
|
## More
|
|
41
107
|
|