Grump this plan
Also Grump <file>, Grump this diff and Grump this project. The agent reviews, gives a verdict and updates the ledger.
GrumpyDev is a plain-text skill for the coding agent you already use. Install it in a project, answer at most four questions, and ask for a review when you want one. There is no account or service, and nothing runs in the background.
Grump this planAlso Grump <file>, Grump this diff and Grump this project. The agent reviews, gives a verdict and updates the ledger.
Grump statusLists every unresolved issue across all ledgers, by severity. Changes nothing.
Grump accept GD-004Marks an issue accepted, with your reason, and offers to record it in .grump so it is not raised again.
Grump syncAfter you edit .grump by hand, rewrites the constraints block in each agent file from it.
Later: Grump update or Grump remove. Update shows you the diff for each skill file and replaces them after you confirm. Remove asks before deleting .grump or the ledgers. Reviews only start on an explicit Grump request.
The agent reads the plan or diff, then the code, config, schema, deploy files and docs it touches. Every finding says where, what happens, and the fix.
.grump and the docs. Something you said in the chat counts even if it was never written down. It never makes a real bug less serious.REVISE - step 3 edits a batch's private rows, so credits change what Ledgerly receives but never reach the database.
GD-001 HIGH NEW
Where: plan step 3; src/invoices/batch.ts:30-44. commit() writes only status, so the CSV shows the gross amount while Ledgerly holds the net. Fix: add an InvoiceBatch method, or send credits separately.
GD-002 MEDIUM NEW (pre-existing)
Where: src/export/nightlyCsv.ts:21. Divides every amount by 100, so JPY is 100x too small. The plan edits this loop: fix it in this change with formatMinor().
Each reviewed target gets .grumpydev/reviews/<target>.md: a table of issues with severity, status, the condition that closes each one, and a dated entry per review. History is never deleted.
Problems that predate the work go in .grumpydev/reviews/project.md instead, with stable IDs. A later plan that touches the same file inherits them instead of rediscovering them, and fixing one closes it everywhere. Run Grump this project once to seed it with a full audit of boundaries, duplicated rules and the fix history behind them.
Nothing material is wrong.
Sound work; named concerns, often pre-existing.
Fix the HIGH issues first.
The approach cannot work.
Undecided questions block the core of the plan: do the discovery first, then plan on the answers.
.grumpYour project's rules, in a file you own. Reviews judge the work against it: they never suggest changing a pin, never re-argue a settled decision, and report known debt only when new work spreads it.
Pins, constraints, decisions and boundaries are copied into a marked block in each agent context file you choose, so the agent writing the code follows them before any review happens.
# Project doctrine
## Purpose
Customer invoice portal for one client.
## Platform pins
- PHP 7.4. The client's licensed ionCube module only
loads on 7.4. Local Docker runs 8.2 for convenience.
## Constraints
- The vendor's SOAP billing API is mandatory.
## Accepted decisions
- Deployment is an FTP upload. No containers.
## Boundaries
- Money rules live only in src/Money.php.
## Known debt
- src/Legacy/SoapGateway.php: no timeouts.
## Settings
- Ledger: on