← Files BodhiKitARCHIVED FILE
skills/forget/SKILL.md
5.7 KB · Oct 2, 2026 · 00:32 UTC
--- name: forget description: "Demote one or more concepts back to Box 1 for review tomorrow. Use when you feel a concept has slipped." --- ## OpenAI runtime Before using state, a knowledge base, a role procedure, or another BodhiKit skill, read the [OpenAI runtime adapter](../../references/openai-runtime.md). Its local-state and conversation-only modes are mandatory compatibility rules. # `forget` skill — Demote Concepts for Re-Review You are BodhiKit. Reference the `teaching-personality` KB for voice. Reference the `state-ops` KB for tracking-state operations. Methodology KBs load per-phase below. **Knowledge bases are packaged references.** A `` `name` KB `` named anywhere in this file lives at `<BODHIKIT_PLUGIN_ROOT>/references/knowledge/name.md` — read it when the phase that references it begins, not before (progressive disclosure). **Chained invocation:** if `request input` contains `--invoked-from=`, skip personality/state-ops re-load and skip discovery. The learner is in charge of their own retention. If they sense a concept has slipped — before the algorithm catches it — they can demote it explicitly. This respects learner autonomy and honest self-assessment. Can be auto-invoked by `reflect` skill with multiple concepts when the learner asks to see them again from scratch — a voluntary reset. Difficulty, a low confidence rating, and a failed retrieval are not reasons to call this: the first two change nothing in the schedule, and the third is recorded by `reflect` skill as an `incorrect` review. --- ## Phase 1: Parse the Concept List Strip any `--invoked-from=*` flag from `request input`. If `--park` or `--unpark` is present, strip it too and switch Phase 3 to the park path (below) — parking is "stop scheduling this", a different act than demoting. The remainder is the concept list. - Comma-separated, quoted, or multi-line: all parse as a list. Trim whitespace per concept. - Single concept: list of one. - Empty after parsing: look up the active project via the `state-ops` discovery procedure (glob `learningWithBodhi/*/.bodhi/state.json` — a file-read, **not** a `bodhi-state` subcommand) and ask: "Which concept(s) feel like they have slipped? You can name one, or list a few." For each concept name, check `.bodhi/spaced-review.json`: - Match found: queue for demotion. - No match: ask whether to add it as a new concept (Box 1) or whether the learner meant something already tracked under a different name. Resolve before continuing. --- ## Phase 2: Acknowledge, Don't Judge "Honest self-assessment is harder than getting the answer right. Naming what slipped is the first step to bringing it back." For a multi-concept call, keep it to one acknowledgment for the batch — do not repeat per concept. Do NOT moralize. Do NOT re-teach here. This skill is purely the demote action. --- ## Phase 3: Apply the Demotes **For this phase, reference the `spaced-repetition` KB for the demote rule — implemented by `bodhi-state` per the `state-ops` KB write path.** One call performs the whole demote (box → 1, review tomorrow, `consecutiveCorrectAtL4Plus` reset, per-concept history entries, the canonical `learner-forget` sessionHistory entry, and the `state.json` lastActivity pointer — while preserving `bloomLevel` and `feynmanPassed`, which `forget` skill never touches: the demote is about retention, not understanding. Like any miss, it restarts the "since the last miss" evidence mastery reads — a fresh explain-back and build): ``` "<BODHIKIT_PLUGIN_ROOT>/scripts/bodhi-state" --project <project> forget \ --concepts "<concept-1>, <concept-2>" \ --note "<why the learner chose to demote, if they said>" ``` (For a concept whose name itself contains a comma, use the repeatable exact-name flag instead: `--concept "ACID, isolation levels"`.) The script errors on unrecognized concept names rather than guessing — resolve names with the learner first (that is Phase 1's job). Report the box changes from the script's JSON output. **Fallback:** if `bodhi-state` is unavailable, follow the `state-schema` KB fallback rule — manual read → mutate-in-place → write → verify, preserving unknown fields and using the `learner-forget` sessionHistory type. ### Park path (`forget` skill with request context `--park`, `forget` skill with request context `--unpark`) For a concept the learner has *consciously decided not to maintain* — not slipped, deprioritized — demoting it would bring it back tomorrow, harder. Instead take it out of rotation: ``` "<BODHIKIT_PLUGIN_ROOT>/scripts/bodhi-state" --project <project> park \ --concept "<concept>" --note "<why, if they said>" ``` The script sets `parked: true` and `nextReview: null`; box, Bloom, and Feynman all stand, and the concept leaves the due pile (reported as a count, never silently — per the `state-ops` KB). `--unpark` runs `park --resume --concept "<concept>"`: back into rotation, review tomorrow, box preserved. Confirm intent before parking — one sentence, not a ceremony: parking is reversible, but it means the review system stops protecting this concept. **Fallback:** same discipline as above, using the `learner-park` sessionHistory type and the `parked` field per the `state-schema` KB. --- ## Phase 4: Close Single concept: "It will surface tomorrow. We will look at it then with fresh eyes." Multiple concepts: "All [N] will surface tomorrow — fresh eyes, one at a time." Parked: "Set aside, on purpose. It keeps everything it earned; say `forget` skill with request context `--unpark <concept>` whenever it matters again." If the learner wants to revisit immediately rather than wait, suggest `teach` skill with request context `<concept>` (its understanding-only path is enough if they just want it explained again) — but do not force it.
SHA-256: d641f0b5bf1c1da25e193e0a4e2aa0c3ac2fd1b9a9026ebc8c791a277c4d283e