@a-canary/pi-upskill
Learn from failures, reduce token waste, improve automatically
Package details
Install @a-canary/pi-upskill from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@a-canary/pi-upskill- Package
@a-canary/pi-upskill- Version
1.0.0- Published
- Mar 17, 2026
- Downloads
- 358/mo · 7/wk
- Author
- a-canary
- License
- MIT
- Types
- extension, skill
- Size
- 21.4 KB
- Dependencies
- 0 dependencies · 3 peers
Pi manifest JSON
{
"extensions": [
"./extension"
],
"skills": [
"./skills"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-upskill
Learn from failures. Reduce token waste. Improve automatically.
Overview
pi-upskill tracks corrections (failures → fixes) and generates skills/rules to prevent future mistakes.
Core flow:
- Log corrections during conversation (
upskill-logtool) - Backfill from past sessions (
/upskill-backfill) - At threshold, analyze and generate ONE high-impact edit (
/upskill-analyze)
Installation
# From git (recommended)
pi install git:github.com/a-canary/pi-upskill
# Or from npm after publishing
pi install npm:pi-upskill
# Try without installing
pi -e git:github.com/a-canary/pi-upskill
After install, reload: /reload
Usage
During conversation: log corrections
The agent uses the upskill-log tool:
Agent: [uses upskill-log tool]
failure: "Committed without running tests"
correction: "Always run tests before commit"
strength: "strong"
tokens_wasted: 3000
Result: Logged correction #5 to .pi/corrections.jsonl
Progress: 5/20 corrections
Strength levels:
strong— User said "always/never/remember" → single occurrence = skillpattern— Self-correction or repeated issue → needs 3x occurrences
One-time: scan past sessions
/upskill-backfill
Scans session files from pi, claude, opencode, codex. Extracts corrections for review.
At threshold: analyze and improve
/upskill-analyze
When 20+ corrections logged, triggers background analysis:
- LLM reviews all corrections
- Selects ONE edit for maximum token impact
- Applies surgical edit (skill/AGENTS.md/MEMORY.md)
- Removes addressed corrections
Check progress
/upskill-status
Shows: count, threshold, strong vs pattern, total tokens wasted.
Data Format
.pi/corrections.jsonl — one JSON object per line:
{"timestamp":"2025-03-13T01:30:00Z","failure":"Committed without tests","correction":"Always run tests first","context":"User reminder after broken CI","tokens_wasted":3000,"source":"user","strength":"strong"}
Required fields (max 30 words each):
timestamp— ISO 8601failure— What went wrongcorrection— How to fix / what to do insteadsource— "user" or "self"strength— "strong" or "pattern"
Optional:
context— Relevant contexttokens_wasted— Estimated tokens
Configuration
.pi/settings.json:
{
"upskill": {
"threshold": 20,
"autoAnalyze": false,
"lookbackDays": 7
}
}
Architecture
~/pi-upskill/
├── CHOICES.md # Decision record
├── PLAN.md # Implementation phases
├── README.md # This file
├── extension/
│ └── index.ts # upskill-log tool, commands
└── skills/
├── analyze/SKILL.md # Pattern analysis workflow
└── backfill/SKILL.md # Historical scan workflow
Hybrid interface:
- Extension provides
upskill-logtool (inline during conversation) - Skills provide
/upskill-backfilland/upskill-analyzecommands
Key Decisions
See CHOICES.md for full decision record.
| ID | Decision |
|---|---|
| UX-0001 | User corrections with "always/never/remember" → immediate skill |
| UX-0002 | Self-corrections → need 3x pattern before skill |
| F-0003 | At 20 corrections → background analysis, ONE edit for max impact |
| D-0003 | Processed corrections removed after edit applied |
Inspiration
- upskill.md — Pattern extraction from memory
- pi-reflect — Iterative self-improvement