原始内容
Lessons
English | 简体中文
Verified engineering lessons for coding agents — not chat soft-memory.
After a real file change + passing test/build/lint/typecheck, Lessons captures a distilled L2 Lesson as reviewable Markdown in your repo.
Status: early preview 0.1.1 on npm · OpenCode + Pi · MIT
Packages: @lessons/core · @lessons/opencode · @lessons/pi
Requires: Node >=20 · OpenCode >=1.18 · Pi coding-agent 0.81 (Pi path needs Node >=22.19)
Install · First 3 minutes · Docs · Contributing
Why Lessons
| Typical agent memory | Lessons |
|---|---|
| Remembers chat / preferences | Remembers verified engineering lessons |
| Soft write bar | File change + task-shaped verification + L2 Lesson |
| Often private DB | Git-reviewable Markdown under docs/lessons/ |
change → verify → distill Lesson → Markdown Memory → next task reads it
Install
Lessons ships two host adapters on the same Markdown core. OpenCode is the
primary dogfood path (one-command installer + host smoke). Pi shares compose /
seed / Quiet Capture through @lessons/pi.
OpenCode
npx -y -p @lessons/opencode lessons-opencode install
Restart OpenCode, then run /lessons-status.
What the OpenCode installer does
- Adds
"plugin": ["@lessons/opencode"]to~/.config/opencode/opencode.json(c) - Writes
/lessons-seedand/lessons-statusunder~/.config/opencode/commands/ - Writes
~/.config/opencode/plugins/lessons.jsshim for local symlink installs - With
--local, symlinks built packages into OpenCodenode_modules/@lessons/
Pi
pi install npm:@lessons/pi
Restart Pi (or /reload), then run /lessons-status. Details:
packages/pi/README.md.
Local monorepo (contributors)
git clone https://github.com/lee259/lessons.git
cd lessons
pnpm install && pnpm build
node packages/opencode/dist/cli.js install --local # OpenCode
pi install ./packages/pi # Pi
First 3 minutes
/init→ projectAGENTS.md(OpenCode native; not Lessons; skip on Pi)/lessons-seed→ narrativedocs/lessons/CONTEXT.md(ADR-003)- After a verified task, Agent calls
lessons_finish_episodewith a short reusable summary
/lessons-seed ≠ /init. Soft-close does not Capture template summaries.
- OpenCode tools + prompts: OpenCode usage
- Pi surfaces:
packages/pi/README.md
What gets captured
Needs all of:
- concrete project file change
- task-shaped verification (
test/build/lint/typecheck/ …) - reusable L2 Lesson (not “updated file X”, not raw tool stdout)
pwd / ls / git status never Capture. Chat-only claims never Capture.
Preview scope
| In | Out |
|---|---|
| OpenCode plugin + Pi extension + Markdown Memories | Broader multi-host platform |
| Shared core compose / seed / Capture | Pi one-command install + host-smoke parity |
| Lesson-first Capture + CONTEXT seed | In-repo code-graph engine |
| Soft-fail host isolation | Production support / LTS guarantees |
Docs
| Doc | Purpose |
|---|---|
| docs/en/design-overview.md | Short product overview |
| docs/en/opencode-usage.md | Tools + end-to-end OpenCode flows |
| packages/pi/README.md | Pi extension install + surfaces |
| docs/lessons/adr/ | Binding architecture decisions |
| CONTRIBUTING.md | Dev setup + PR checks |
| SECURITY.md | Reporting + redaction notes |
| CHANGELOG.md | Release notes |
| README.zh-CN.md | Chinese homepage |
Contributing
pnpm install && pnpm verify
Optional OpenCode host checks (OPENCODE_BIN required): see CONTRIBUTING.md.
License
MIT — LICENSE.