@bis-code/study-dash 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/.claude-plugin/marketplace.json +18 -0
  2. package/.claude-plugin/plugin.json +19 -0
  3. package/.mcp.json +8 -0
  4. package/LICENSE +21 -0
  5. package/commands/dashboard.md +8 -0
  6. package/commands/import.md +12 -0
  7. package/commands/learn.md +13 -0
  8. package/hooks/hooks.json +27 -0
  9. package/package.json +36 -0
  10. package/rules/tutor-mode.md +38 -0
  11. package/server/dist/bundle.mjs +1240 -0
  12. package/server/dist/dashboard/api.d.ts +16 -0
  13. package/server/dist/dashboard/api.js +150 -0
  14. package/server/dist/dashboard/api.js.map +1 -0
  15. package/server/dist/dashboard/server.d.ts +21 -0
  16. package/server/dist/dashboard/server.js +171 -0
  17. package/server/dist/dashboard/server.js.map +1 -0
  18. package/server/dist/index.d.ts +2 -0
  19. package/server/dist/index.js +40 -0
  20. package/server/dist/index.js.map +1 -0
  21. package/server/dist/services/curriculum.d.ts +25 -0
  22. package/server/dist/services/curriculum.js +110 -0
  23. package/server/dist/services/curriculum.js.map +1 -0
  24. package/server/dist/services/exercises.d.ts +35 -0
  25. package/server/dist/services/exercises.js +215 -0
  26. package/server/dist/services/exercises.js.map +1 -0
  27. package/server/dist/services/qa.d.ts +15 -0
  28. package/server/dist/services/qa.js +30 -0
  29. package/server/dist/services/qa.js.map +1 -0
  30. package/server/dist/services/viz.d.ts +8 -0
  31. package/server/dist/services/viz.js +21 -0
  32. package/server/dist/services/viz.js.map +1 -0
  33. package/server/dist/storage/db.d.ts +11 -0
  34. package/server/dist/storage/db.js +51 -0
  35. package/server/dist/storage/db.js.map +1 -0
  36. package/server/dist/storage/files.d.ts +10 -0
  37. package/server/dist/storage/files.js +34 -0
  38. package/server/dist/storage/files.js.map +1 -0
  39. package/server/dist/storage/schema.d.ts +3 -0
  40. package/server/dist/storage/schema.js +126 -0
  41. package/server/dist/storage/schema.js.map +1 -0
  42. package/server/dist/tools/curriculum.d.ts +4 -0
  43. package/server/dist/tools/curriculum.js +137 -0
  44. package/server/dist/tools/curriculum.js.map +1 -0
  45. package/server/dist/tools/exercises.d.ts +4 -0
  46. package/server/dist/tools/exercises.js +76 -0
  47. package/server/dist/tools/exercises.js.map +1 -0
  48. package/server/dist/tools/qa.d.ts +4 -0
  49. package/server/dist/tools/qa.js +56 -0
  50. package/server/dist/tools/qa.js.map +1 -0
  51. package/server/dist/tools/viz.d.ts +4 -0
  52. package/server/dist/tools/viz.js +54 -0
  53. package/server/dist/tools/viz.js.map +1 -0
  54. package/server/dist/types.d.ts +103 -0
  55. package/server/dist/types.js +2 -0
  56. package/server/dist/types.js.map +1 -0
  57. package/server/node_modules/better-sqlite3/LICENSE +21 -0
  58. package/server/node_modules/better-sqlite3/README.md +99 -0
  59. package/server/node_modules/better-sqlite3/binding.gyp +38 -0
  60. package/server/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  61. package/server/node_modules/better-sqlite3/deps/common.gypi +68 -0
  62. package/server/node_modules/better-sqlite3/deps/copy.js +31 -0
  63. package/server/node_modules/better-sqlite3/deps/defines.gypi +41 -0
  64. package/server/node_modules/better-sqlite3/deps/download.sh +122 -0
  65. package/server/node_modules/better-sqlite3/deps/patches/1208.patch +15 -0
  66. package/server/node_modules/better-sqlite3/deps/sqlite3/sqlite3.c +261480 -0
  67. package/server/node_modules/better-sqlite3/deps/sqlite3/sqlite3.h +13715 -0
  68. package/server/node_modules/better-sqlite3/deps/sqlite3/sqlite3ext.h +719 -0
  69. package/server/node_modules/better-sqlite3/deps/sqlite3.gyp +80 -0
  70. package/server/node_modules/better-sqlite3/deps/test_extension.c +21 -0
  71. package/server/node_modules/better-sqlite3/lib/database.js +90 -0
  72. package/server/node_modules/better-sqlite3/lib/index.js +3 -0
  73. package/server/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
  74. package/server/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
  75. package/server/node_modules/better-sqlite3/lib/methods/function.js +31 -0
  76. package/server/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
  77. package/server/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
  78. package/server/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
  79. package/server/node_modules/better-sqlite3/lib/methods/table.js +189 -0
  80. package/server/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
  81. package/server/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
  82. package/server/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
  83. package/server/node_modules/better-sqlite3/lib/util.js +12 -0
  84. package/server/node_modules/better-sqlite3/package.json +54 -0
  85. package/server/node_modules/better-sqlite3/src/better_sqlite3.cpp +2186 -0
  86. package/server/node_modules/better-sqlite3/src/better_sqlite3.hpp +1036 -0
  87. package/server/package.json +31 -0
  88. package/skills/import/SKILL.md +19 -0
  89. package/skills/learn/SKILL.md +17 -0
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "bis-code-study-dash",
3
+ "description": "Structured learning plugin for Claude Code",
4
+ "owner": {
5
+ "name": "Ioan-Sorin Baicoianu",
6
+ "email": "baicoianuioansorin@gmail.com"
7
+ },
8
+ "plugins": [
9
+ {
10
+ "name": "study-dash",
11
+ "description": "Structured learning on any subject — dashboard, Q&A logging, AI visualizations, exercises with test validation",
12
+ "source": {
13
+ "source": "github",
14
+ "repo": "bis-code/study-dash"
15
+ }
16
+ }
17
+ ]
18
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "study-dash",
3
+ "version": "0.2.0",
4
+ "description": "Structured learning on any subject with dashboard, Q&A logging, visualizations, exercises",
5
+ "author": {
6
+ "name": "Ioan-Sorin Baicoianu",
7
+ "email": "baicoianuioansorin@gmail.com"
8
+ },
9
+ "repository": "https://github.com/bis-code/study-dash",
10
+ "license": "MIT",
11
+ "keywords": [
12
+ "learning",
13
+ "education",
14
+ "dashboard",
15
+ "exercises",
16
+ "visualizations"
17
+ ],
18
+ "mcpServers": "./.mcp.json"
19
+ }
package/.mcp.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "study-dash": {
4
+ "command": "node",
5
+ "args": ["${CLAUDE_PLUGIN_ROOT}/server/dist/bundle.mjs"]
6
+ }
7
+ }
8
+ }
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ioan-Sorin Baicoianu
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: dashboard
3
+ description: Show the StudyDash dashboard URL
4
+ ---
5
+
6
+ The StudyDash dashboard is running at: **http://127.0.0.1:19282**
7
+
8
+ Open it in your browser to see your learning progress, Q&A history, visualizations, and exercises.
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: import
3
+ description: Import a PDF syllabus, lecture slides, or assignment into StudyDash as a new subject or add to an existing one
4
+ ---
5
+
6
+ Guide the user through importing learning materials:
7
+
8
+ 1. Ask for the file path or let them describe the subject
9
+ 2. If a PDF path is provided, read it and classify the content
10
+ 3. Create the subject and import the curriculum structure
11
+ 4. Confirm the imported structure with the user
12
+ 5. Mention the dashboard at http://127.0.0.1:19282 for reviewing the import
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: learn
3
+ description: Start or manage a learning session — show active subject/topic, list subjects, switch between them
4
+ ---
5
+
6
+ Check the current learning state with `learn_get_progress`.
7
+
8
+ If a subject is active, show:
9
+ - Current subject and topic
10
+ - Progress (X/Y topics done)
11
+ - Dashboard URL: http://127.0.0.1:19282
12
+
13
+ If no subject is active, list available subjects and ask which to work on. If no subjects exist, suggest creating one or importing a curriculum.
@@ -0,0 +1,27 @@
1
+ {
2
+ "hooks": {
3
+ "PostToolUse": [
4
+ {
5
+ "matcher": "learn_mark_done",
6
+ "hooks": [{
7
+ "type": "prompt",
8
+ "prompt": "The user just completed a topic. Generate 2-3 exercises for this topic using learn_create_exercise. Include at least one coding exercise and one quiz. Match the difficulty to the topic content."
9
+ }]
10
+ },
11
+ {
12
+ "matcher": "learn_log_answer",
13
+ "hooks": [{
14
+ "type": "prompt",
15
+ "prompt": "You just logged an answer. If the topic would benefit from a visual step-through diagram, create one with learn_create_viz using viz primitives (viz-box, viz-arrow, viz-slot, viz-select-case). Check auto_viz setting first. If off, ask the user."
16
+ }]
17
+ }
18
+ ],
19
+ "PreCompact": [{
20
+ "matcher": "",
21
+ "hooks": [{
22
+ "type": "prompt",
23
+ "prompt": "Before compaction, note the active subject and topic so you can restore context after compaction. Use learn_get_progress to check current state."
24
+ }]
25
+ }]
26
+ }
27
+ }
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@bis-code/study-dash",
3
+ "version": "0.2.0",
4
+ "description": "Claude Code plugin for structured learning on any subject — dashboard, Q&A logging, visualizations, exercises",
5
+ "license": "MIT",
6
+ "author": "Ioan-Sorin Baicoianu <baicoianuioansorin@gmail.com>",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/bis-code/study-dash.git"
10
+ },
11
+ "keywords": [
12
+ "claude-code",
13
+ "plugin",
14
+ "learning",
15
+ "education",
16
+ "dashboard",
17
+ "mcp",
18
+ "exercises",
19
+ "visualizations",
20
+ "study"
21
+ ],
22
+ "files": [
23
+ ".claude-plugin",
24
+ "server/dist",
25
+ "server/package.json",
26
+ "server/node_modules/better-sqlite3",
27
+ "commands",
28
+ "skills",
29
+ "hooks",
30
+ "rules",
31
+ ".mcp.json"
32
+ ],
33
+ "scripts": {
34
+ "prepublishOnly": "cd server && npm install && npm run bundle"
35
+ }
36
+ }
@@ -0,0 +1,38 @@
1
+ # Learning Mode
2
+
3
+ This project uses StudyDash for structured learning. Claude acts as a tutor.
4
+
5
+ ## Auto-Logging (Mandatory)
6
+
7
+ When the user asks a question about a topic they're studying:
8
+
9
+ 1. **Log the question** — call `learn_log_question` with the user's question (markdown). Note the returned question ID.
10
+ 2. **Answer the question** — provide a clear, practical answer
11
+ 3. **Log the answer** — call `learn_log_answer` with a concise summary (markdown, include code blocks). Always pass `question_id` to pair them on the dashboard.
12
+
13
+ ## Content Formatting
14
+
15
+ All logged content MUST be markdown:
16
+ - Use code blocks with language tags
17
+ - Use headings, lists, bold for structure
18
+ - Keep questions concise (1-3 sentences)
19
+ - Keep answers focused — key insight + example
20
+
21
+ ## Topic Management
22
+
23
+ - At session start, check the active subject/topic with `learn_get_progress`
24
+ - If no subject is active, ask the user which subject to work on or create a new one
25
+ - If no topic is active, suggest the next topic in the curriculum
26
+ - When the user says they're done with a topic, call `learn_mark_done`
27
+
28
+ ## Teaching Style
29
+
30
+ - For coding subjects: explain with practical code examples, show idiomatic patterns
31
+ - For non-coding subjects: use clear explanations with examples and analogies
32
+ - Always include runnable examples for coding topics
33
+ - Point out common mistakes and gotchas
34
+ - Adapt language and depth to the subject domain
35
+
36
+ ## Dashboard
37
+
38
+ The learning dashboard runs at http://127.0.0.1:19282 — mention it if the user wants to review progress.