pi-file-change-reminder
Pi extension that injects reminder messages when specific files are modified.
Package details
Install pi-file-change-reminder from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-file-change-reminder- Package
pi-file-change-reminder- Version
3.0.0- Published
- Nov 5, 2026
- Downloads
- 297/mo · 265/wk
- Author
- alexgorbatchev
- License
- MIT
- Types
- extension
- Size
- 18.7 KB
- Dependencies
- 1 dependency · 1 peer
Pi manifest JSON
{
"extensions": [
"./src/fileChangeReminderExtension.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-file-change-reminder
pi extension that injects reminder messages when matching files are modified via write, edit, or multi_tool_use.parallel tool calls.
Install
pi install npm:pi-file-change-reminder
Quick start
Create a rules file at your project root:
.pi/reminders.json
[
{
"glob": "README.md",
"reminder": "Run docs checks after editing README.md"
},
{
"glob": "src/**/*.ts",
"reminder": "Run the TypeScript test suite before finishing"
}
]
Slash command
Use the built-in extension command:
/pi-file-change-reminder
This injects a user message that asks Pi to help update the reminder config file with the required JSON shape, safety constraints, and picomatch glob guidance.
You can also include a specific change request:
/pi-file-change-reminder add a rule for docs/**/*.md reminding me to run vale
Rules file resolution
Preferred configuration uses Pi settings via the package-scoped pi-file-change-reminder block.
Global ~/.pi/agent/settings.json:
{
"pi-file-change-reminder": {
"rulesFile": ".pi/reminders.json"
}
}
Project <cwd>/.pi/settings.json:
{
"pi-file-change-reminder": {
"rulesFile": "config/reminders.json"
}
}
The extension reads both scopes through Pi's SettingsManager, with project settings overriding global settings.
If no setting is configured, the default rules path is .pi/reminders.json resolved from the nearest ancestor directory containing either:
.git, or.pi
If no ancestor contains either marker, resolution falls back to Pi's current working directory.
Relative rulesFile values are resolved from that detected project directory. Absolute rulesFile values are used as-is.
Glob behavior
- Matching engine:
picomatch - Relative rule globs match against paths relative to the project marker directory (nearest ancestor with
.gitor.pi). - Absolute rule globs match against normalized absolute file paths.
Runtime behavior
- When a rule matches a modified file, the extension injects the reminder as a user message.
- In interactive mode, it also shows an info notification with the matched path and rule.
Development
Use Bun 1.4 or newer and just. The extension requires Pi 1.x (1.5 or newer) from @earendil-works and Node.js 22.19 or newer.
just setup
just check
just run
just run uses your real Pi settings. just test runs through the GitHub-pinned pi-test-isolation supervisor and guard, isolating home, caches, sessions, temporary files, and child processes. Direct bun test is rejected outside isolation. Tests exercise the installed Pi loader, rule matching, session deduplication, settings precedence, delivery, and error recovery. Linux and macOS CI enforce at least 90% line and function coverage, including unexecuted source.
Current limitation
Reminder deduplication is currently keyed by reminder text. If two different rules use the same reminder string, only one will be injected per session branch.