From cc-course
Signal that you've completed the current step and are ready to proceed
How this skill is triggered — by the user, by Claude, or both
Slash command
/cc-course:continueThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The student is signaling they are ready to proceed to the next phase.
The student is signaling they are ready to proceed to the next phase.
PROGRESS DISCOVERY (works after
/clear):
Readthe file{cwd}/.claude/claude-course/progress.jsonwhere{cwd}is your current working directory — this is the student's project repo- If not found, run
Bash: git rev-parse --show-toplevelto get the git root, thenRead{git-root}/.claude/claude-course/progress.json- If neither exists, ask the user for their repository path
NEVER read a
progress.jsonfrom any path containingplugins/orcache/— those are blank templates, not student data.
progress.json using the discovery block abovecurrent_module and current_taskprogress.json is missing or fields are empty, output: Ready to continue.Before resuming, check if the session has changed (e.g., student closed and reopened Claude Code):
mcp_project = progress["student"]["mcp_project_name"]
if mcp_project:
try:
# Get the most recent session
latest = mcp__cclogviewer__list_sessions(
project=mcp_project,
days=1,
limit=1
)
latest_session_id = latest[0]["session_id"]
current_session_id = progress.get("current_session_id")
if latest_session_id != current_session_id:
# Session changed — close old, start new
close_old_session(progress, current_session_id)
create_new_session(progress, latest_session_id)
# else: same session, no action needed
except Exception:
# MCP unavailable — skip session tracking, log warning
pass
def close_old_session(progress, old_session_id):
"""Set ended_at on the old session record."""
if old_session_id is None:
return
module_key = progress["current_module"]
if module_key:
for session in progress["modules"][module_key].get("sessions", []):
if session["session_id"] == old_session_id:
session["ended_at"] = current_iso_timestamp()
break
def create_new_session(progress, new_session_id):
"""Create a new session record and update current_session_id."""
module_key = progress["current_module"]
if module_key:
progress["modules"][module_key]["sessions"].append({
"session_id": new_session_id,
"started_at": current_iso_timestamp(),
"ended_at": None,
"tasks_completed": []
})
progress["current_session_id"] = new_session_id
If mcp_project_name is null or MCP calls fail:
Before resuming the teaching flow, check the current module's state:
in_progress)If all task values in modules[current_module].tasks are true but status != "completed":
Tell the student:
You've finished all the chapters! Time to validate your work.
Run /cc-course:validate to check everything passes.
Do NOT resume the teaching flow — direct them to validate instead.
If status == "completed" and submission is null:
Tell the student:
Module [N] is validated! You can optionally package your work for review.
Run /cc-course:submit to create a submission archive, or /cc-course:start [N+1] to continue to the next module.
If status == "completed" and submission is non-null:
Tell the student:
Module [N] is complete and submitted!
Run /cc-course:start [N+1] to begin the next module.
After session tracking and post-completion checks, proceed to the next phase for the current chapter:
npx claudepluginhub seleznovivan/claude-code-education --plugin cc-courseWrites a CONTINUE_HERE.md file capturing session state so a fresh Claude Code session can pick up where the last one left off. Use when ending a session with unfinished work or handing off context between sessions.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.