{"name":"io.github.UltimaPhoenix/devcoach","slug":"ultimaphoenix-devcoach","title":"devcoach","description":"Progressive in-context technical coaching in your AI agent — one local, free lesson per task.","url":"https://mcp.market/server/ultimaphoenix-devcoach","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"productivity","tags":["productivity","ai"],"presence":{"score":40,"stars":4,"forks":0,"downloads_week":1435,"last_push_at":"2026-09-19T16:51:14.000Z","license":"AGPL-3.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/UltimaPhoenix/dev-coach","website":"https://ultimaphoenix.github.io/dev-coach/","version":"2.4.0","remotes":[],"packages":[{"registryType":"npm","identifier":"devcoach","version":"2.4.0","transport":{"type":"stdio"}}],"tools":[{"name":"add_group","description":"Create a new (initially empty) knowledge group. Idempotent \\u2014 returns true either way.","write_action":true,"price_micros":0,"input_schema":null},{"name":"add_topic","description":"Add a topic to the knowledge map, or update its confidence if it exists. Optionally assign to a group (auto-created). Prefer a single-word topic id. Idempotent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"complete_onboarding","description":"Save the user's initial knowledge profile and mark onboarding complete. Wipes any default-seeded profile. topics: {topic_id: confidence_0_to_10}. groups: {group_name: [topic_id,...]} (topics not in any group go to 'Other'). Ensures learning-state.md exists and is non-empty (a placeholder if needed) \\u2014 there is no notebook argument here. Write the real personalized notebook yourself right after","write_action":false,"price_micros":0,"input_schema":null},{"name":"delete_lesson","description":"Permanently delete a lesson by id. Returns true if found and deleted.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_briefing","description":"Everything needed before delivering a lesson, in ONE call: onboarding status, rate limit, taught topics, knowledge profile, the coaching notebook text and its notebook_path. Same data as the devcoach://briefing resource \\u2014 call the tool, it needs no server name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_lessons","description":"Query the coaching lesson history. All filters combine. period defaults to all; date_from/date_to override period; limit caps results newest-first (0 = all).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_onboarding","description":"Onboarding status (knowledge_ready, notebook_ready, needs_onboarding), the stack detected across the full Claude Code history with per-project provenance, the default topics and the notebook_path. Same data as the devcoach://onboarding resource.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_profile","description":"Current knowledge map: topics with confidence 0\\u201310 and their groups. Same data as the devcoach://profile resource.","write_action":false,"price_micros":0,"input_schema":null},{"name":"import_lesson","description":"Store a lesson someone shared. Pass whatever the user handed you, verbatim: the devcoach:lesson:1:\\u2026 code, the whole copied card, the share link, a URL to the lesson text, the contents of a .devcoach.md file, or a lessons JSON export. The lesson joins the coaching log as their own (feedback works as usual) but never counts against the daily limit; re-importing the same share is reported as a d","write_action":false,"price_micros":0,"input_schema":null},{"name":"log_lesson","description":"Save a delivered lesson to the coaching log. Git metadata (project, repository, branch, commit_hash, folder, repository_platform) is auto-detected from the workspace when omitted. timestamp is always stamped server-side with the current time \\u2014 there is no argument for it. Returns the saved Lesson with all resolved fields.","write_action":false,"price_micros":0,"input_schema":null},{"name":"open_ui","description":"Launch the devcoach web dashboard in the background. port must be 1024-65535.","write_action":false,"price_micros":0,"input_schema":null},{"name":"preview_deep_scan","description":"Cheap, metadata-only pre-check for 'Automatic (Deep)' onboarding. Counts and lists Claude Code projects whose last recorded activity falls within a rolling window (months back from now) \\u2014 a real date window, not a fixed top-N. Reads no prompt/conversation text, only project paths and activity timestamps. Call this BEFORE spawning the deep-read subagent: over_soft_limit true means there are en","write_action":false,"price_micros":0,"input_schema":null},{"name":"remove_group","description":"Delete a knowledge group. Its topics move to Other. Returns true if it existed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"remove_topic","description":"Remove a topic from the knowledge map entirely. Returns true if it existed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"share_lesson","description":"Hand a lesson to another person. transport 'text' (default) returns the card plus a one-line code to paste anywhere; 'link' a server-less URL that previews the lesson and imports it into their dashboard; 'file' the contents of a .devcoach.md file. Only title, summary, body, topic, categories and level travel unless include_context is true; local paths never do. Pick the lesson with get_lessons fir","write_action":false,"price_micros":0,"input_schema":null},{"name":"skip_lesson","description":"Decline a lesson cue: call this when the coaching hook asked for a lesson but the completed work does not warrant one (pure questions, chat, nothing technical). Re-arms the pacing counter so the cue is not repeated immediately. Never call it after delivering a lesson \\u2014 log_lesson already resolves the cue.","write_action":false,"price_micros":0,"input_schema":null},{"name":"star_lesson","description":"Set the starred (favourite) flag on a lesson. Returns true if found and updated. Idempotent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"stop_ui","description":"Stop the devcoach web dashboard listening on port (whoever started it \\u2014 open_ui or a terminal). Graceful: in-flight requests finish first. Reports stopped=false when nothing is running there. port must be 1024-65535.","write_action":false,"price_micros":0,"input_schema":null},{"name":"submit_feedback","description":"Record comprehension feedback for a lesson and adjust knowledge confidence. know = +1, dont_know = -1, clear = remove feedback (no confidence change). Idempotent \\u2014 the same feedback twice adjusts confidence only once.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_knowledge","description":"Adjust the confidence score for a topic by delta (e.g. +1 or -1). Returns the new confidence (0-10). Creates the topic at confidence 5 if it does not exist.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_settings","description":"Update a coaching setting. max_per_day: integer 1-20. min_gap_minutes: integer 0-1440 (0 = no cooldown). nudge_every: integer 0-1000 interactions between lesson cues (0 = cue every turn). nudge_scope: 'session' | 'global'. share_name: the sender name proposed when sharing a lesson (max 80 chars, empty clears). Returns the full updated Settings.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-19T21:04:05.718Z","report":{"scannerVersion":"0.1.8","scannedAt":"2026-09-19T21:04:05.705Z","components":{"code":{"score":25,"max":25,"notes":["14 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"devcoach","version":"2.4.0","found":true,"license":"AGPL-3.0-only","hasInstallScripts":false,"dependencyCount":6,"publishedAt":"2026-09-19T15:23:46.501Z","repositoryUrl":"git+https://github.com/UltimaPhoenix/dev-coach.git"}],"repo":{"found":true,"owner":"UltimaPhoenix","repo":"dev-coach","archived":false,"pushedAt":"2026-09-19T16:51:14Z","stars":4,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/2079222?v=4","ownerCreatedAt":"2012-08-01T18:35:24Z","license":"AGPL-3.0"},"icon":{"url":null,"source":"none"},"presence":{"stars":4,"forks":0,"downloadsWeek":1435,"license":"AGPL-3.0","lastPushAt":"2026-09-19T16:51:14.000Z","score":40}}}},"grade_history":[{"kind":"restore","fromGrade":"B","toGrade":"A","reason":"score 92","createdAt":"2026-09-19T21:04:06.235Z"}],"reviews":[]}