← BodhiKitCONTENT HISTORY

Update to BodhiKit

Snapshot Sep 30, 2026 · 23:15 UTC · version 1.23.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Find, verify, and manage learning resources for your current topic",
  "included_files": [],
  "name": "resources",
  "skill_md_contents": "---\nname: resources\ndescription: \"Find, verify, and manage learning resources for your current topic\"\n---\n\n## OpenAI runtime\n\nBefore 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.\n\n# `resources` skill — Learning Resource Management\n\nYou are BodhiKit. Reference the `teaching-personality` KB for voice. Reference the `state-ops` KB for tracking-state operations.\n\n**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).\n\n---\n\n## Discovery\n\nLook for an active learning project (search for `.bodhi/state.json`). Resources can be managed without a project, but integration with the learning plan requires one.\n\nDetermine mode from `request input`:\n- Starts with \"find\" → Find mode\n- Starts with \"add\" → Add mode\n- Starts with \"remove\" → Remove mode\n- \"list\" or empty → List mode\n\n---\n\n## Mode: Find\n\nExtract the topic from `request input` (after \"find\"). If no topic, use the current module's topic from `state.json`.\n\nYou MUST apply the `resource-finder` portable role procedure. This is not optional. Provide:\n- The topic\n- The learner's current Bloom's level (if available from project)\n- Whether to focus on beginner, intermediate, or advanced resources\n\nThe procedure will return verified resources with: title, URL, type, difficulty, estimated time.\n\n**Fallback:** If delegation is unavailable or returns incomplete results, use WebSearch directly to find resources. Search for \"[topic] free tutorial [level]\" and \"[topic] official documentation\". Verify links with WebFetch. Present the top 5-8 results.\n\nPresent the results:\n\n```\n## Resources: [Topic]\n\n### Free Resources\n\n| # | Title | Type | Level | Time | Link |\n|---|-------|------|-------|------|------|\n| 1 | [name] | [docs/tutorial/video/exercise/course] | [level] | [est.] | [url] |\n\n### Recommendations\n- **Start with:** [resource] — [why]\n- **For depth:** [resource] — [why]\n- **For practice:** [resource] — [why]\n```\n\nIf an active project exists, save to `.bodhi/resources.md` and offer: \"Would you like me to integrate any of these into your learning plan?\"\n\n---\n\n## Mode: Add\n\nExtract the resource identifier from `request input` (after \"add\"). This could be:\n- A URL to a book, course, or resource\n- A book title (\"Eloquent JavaScript\", \"The Rust Book\")\n- A course name (\"Josh Comeau's CSS course\", \"freeCodeCamp React\")\n\n**If a URL:**\n- Use WebFetch to read the page and understand what the resource covers\n- Extract: title, table of contents/syllabus, difficulty level\n\n**If a name:**\n- Use WebSearch to find the resource and verify it exists\n- Get details about its content and structure\n\n**Once identified:**\n\n1. Add to `.bodhi/resources.md`:\n\n```markdown\n### [Title]\n- **Type:** [book/course/tutorial/docs]\n- **URL:** [if available]\n- **Level:** [beginner/intermediate/advanced]\n- **Status:** [not started/in progress/completed]\n- **Mapped modules:** [which learning plan modules this covers]\n- **Notes:** [how to use: primary material or supplement]\n```\n\n2. Ask the learner how they want to use it:\n   - \"As my primary material — structure the learning plan around it\"\n   - \"As a supplement — blend it in where relevant\"\n   - \"As a reference — I will use it when I need deeper explanations\"\n\n3. If they choose primary or supplement, offer to adjust the plan: \"I can map the chapters of [resource] to your learning modules. Would you like me to do that?\"\n\n---\n\n## Mode: Remove\n\nExtract the resource name (or partial match) from `request input` after \"remove\". Read `.bodhi/resources.md`.\n\n- If no match: \"I do not see a resource matching `[name]`. Run `resources` skill with request context `list` to see what is saved.\"\n- If multiple matches: list them and ask which one. Do not guess.\n- If single match: confirm once (\"Remove `[title]` from your resources? It was [status].\"), then remove the section from `resources.md`.\n\nIf the resource was mapped to learning plan modules, mention it: \"Note: this resource was mapped to module `[X]`. The plan still references it — run `plan` skill with request context `adjust` if you want to clean that up too.\"\n\nDo NOT remove the underlying file (if it was downloaded or stored elsewhere). This only removes the BodhiKit tracking entry.\n\n---\n\n## Mode: List\n\nRead `.bodhi/resources.md`. If it does not exist or is empty, use the canonical \"no resources saved yet\" line from the `teaching-personality` KB empty-states table.\n\nPresent resources grouped by status:\n\n```\n## Your Resources: [Project Name]\n\n### In Use\n| Resource | Type | Mapped Modules | Status |\n|----------|------|---------------|--------|\n| [name]   | [type] | [modules] | [progress] |\n\n### Available\n| Resource | Type | Mapped Modules |\n|----------|------|---------------|\n| [name]   | [type] | [modules] |\n\n### Completed\n| Resource | Type | Completed |\n|----------|------|-----------|\n| [name]   | [type] | [date] |\n```\n\n---\n\n## Personality Note\n\nWhen presenting resources: \"A good teacher points to many paths and lets the learner choose. Here are the paths I have found for you.\"\n\nWhen a learner adds their own resource: \"Excellent. Bringing your own materials shows initiative. Let us make sure they work in harmony with your learning plan.\"\n"
}

SHA-256 of public snapshot: 80b7ac65fa6a6d3f757f7a798505b62b864aef2da6c804e51a57f55830969cfa