good-job # good-job Good Job turns brief praise and complaints into reusable feedback about how Pi should behave. Use it to capture a useful moment while it is still in the conversation, then review patterns later instead of relying on memory. ## Start here Type `gj` or `good job` after Pi does something worth repeating. Type `wtf` when Pi does something you want to prevent. Add details when useful. ```text gj Kept the change focused and explained the trade-off clearly ``` Your feedback still reaches the active agent normally. Good Job separately analyzes the preceding conversation in the background and saves a structured learning when it succeeds. ## Review feedback Run `/gj` to browse saved learnings. Run `/gj status` to see queued, completed, and failed feedback work. Run `/gj learn` to ask your active agent for cited improvement proposals based on all saved learnings. Run `/gj open` to open the local feedback directory. Feedback analysis sends relevant conversation content to the selected model and saves learnings locally. Do not use it for conversations whose contents you do not want processed that way. The generated learning is designed not to reproduce credentials, secrets, long source excerpts, or private data, but review stored records before sharing them. ## Optional settings By default, records use Pi's local app-data directory and analysis uses the current session model. Set a directory or choose a separate analysis model only when you need that control. ```json { "good-job": { "directory": "~/shared/gj", "model": "provider/model-id", "thinkingLevel": "high" } } ``` Settings may come from trusted project `.pi/settings.json` or user settings. See [Installation](../../README.md#install). ## Reference ### Commands | Command | Purpose | | --- | --- | | `/gj` | List, inspect, and learn from explicit feedback | ### Setting names | Setting | | --- | | `good-job.directory` | | `good-job.model` | | `good-job.thinkingLevel` | [Changelog](./CHANGELOG.md).