{
  "schemaVersion": "1.0",
  "item": {
    "slug": "caring-courseforge",
    "name": "Caring CourseForge",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/michaeljmoody/caring-courseforge",
    "canonicalUrl": "https://clawhub.ai/michaeljmoody/caring-courseforge",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/caring-courseforge",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=caring-courseforge",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "references/tools.md",
      "scripts/courseforge.mjs",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/caring-courseforge"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/caring-courseforge",
    "agentPageUrl": "https://openagent3.xyz/skills/caring-courseforge/agent",
    "manifestUrl": "https://openagent3.xyz/skills/caring-courseforge/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/caring-courseforge/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "CourseForge",
        "body": "Build and manage courses on Caring CourseForge via the MCP client.\n\nSource: npm — courseforge-mcp-client\nPublisher: Caring Consulting Co (caringcos.com)"
      },
      {
        "title": "Setup",
        "body": "Install: npm install -g courseforge-mcp-client\nSet COURSEFORGE_API_KEY in your environment:\n\nGet your key: caringcourseforge.com → Settings → API Keys\nStore securely via your gateway environment config or shell profile (export COURSEFORGE_API_KEY=cf_prod_...). Do not store API keys in plaintext workspace files.\n\n\nVerify: courseforge-mcp starts without errors"
      },
      {
        "title": "Calling Tools",
        "body": "Use the wrapper script to call any of the 89 CourseForge tools:\n\nnode scripts/courseforge.mjs <tool_name> '<json_args>'\n\nThe script requires COURSEFORGE_API_KEY in the environment (set via gateway env or shell profile).\n\nnode scripts/courseforge.mjs list_courses '{}'\n\nOutput is clean JSON (the MCP envelope is stripped automatically)."
      },
      {
        "title": "Available Tools (89)",
        "body": "Courses (7): list_courses, create_course, get_course, update_course, delete_course, get_course_settings, update_course_settings\nModules (5): create_module, update_module, delete_module, reorder_modules, get_module\nLessons (7): create_lesson, get_lesson, update_lesson, delete_lesson, reorder_lessons, move_lesson, duplicate_lesson\nContent Blocks (6): add_content_block, get_content_block, update_content_block, delete_content_block, reorder_content_blocks, move_content_block\nCourse Management (3): validate_course, duplicate_module, export_course\nKnowledge Library (5): list_collections, create_collection, list_documents, delete_document, search_knowledge\nAI & Generation (26): ai_chat_assistant, ai_chat_with_research, generate_course_outline, generate_lesson_content, generate_quiz_from_content, generate_image, generate_job_aid_pdf, suggest_improvements, auto_fix_quality_issues, translate_content, summarize_document, convert_document_to_pdf, analyze_image, marketing_support_chat, web_search, fetch_url_content, get_youtube_metadata, get_youtube_captions, scrape_web_to_knowledge, upload_to_knowledge, manage_knowledge_files, search_user_media, list_storage_files, delete_storage_file, get_storage_usage, get_openapi_spec\nSearch & Media (2): search_stock_media, search_youtube\nRecordings (1): list_recordings\nAPI Keys (3): list_api_keys, create_api_key, revoke_api_key\nSkills (2): list_skills, get_skill\nAgentic UI Control (22): lock_canvas, unlock_canvas, refresh_canvas, notify_user, show_progress, request_confirmation, request_choice, scroll_to_element, select_element, expand_sidebar_item, focus_content_block, get_canvas_state, open_preview, close_preview, open_settings, toggle_sidebar, create_checkpoint, rollback_to_checkpoint, list_checkpoints, add_annotation, remove_annotation, highlight_issues\n\nFor full parameter details on any tool, read references/tools.md."
      },
      {
        "title": "Create a course from scratch",
        "body": "create_course — title, description, difficulty (beginner/intermediate/advanced)\ncreate_module — for each section, pass courseId\ncreate_lesson — for each lesson, pass courseId + moduleId\nadd_content_block — add text, images, quizzes to lessons\nvalidate_course — check quality and accessibility\nexport_course — export to SCORM 1.2, SCORM 2004, xAPI, or HTML"
      },
      {
        "title": "AI-powered course generation",
        "body": "generate_course_outline — provide topic, audience, difficulty → get full structure\ncreate_course + create_module + create_lesson — build the structure from the outline\ngenerate_lesson_content — auto-generate content for each lesson\ngenerate_quiz_from_content — create assessments from lesson content\nsuggest_improvements — get AI suggestions for quality\nauto_fix_quality_issues — automatically fix issues"
      },
      {
        "title": "Use domain skills for specialized content",
        "body": "list_skills — see all 17 available specialist skills\nget_skill — load a skill (e.g., \"Instructional Designer\", \"HR Specialist\")\nUse the skill context when generating content with ai_chat_assistant"
      },
      {
        "title": "Export a course",
        "body": "node scripts/courseforge.mjs export_course '{\"courseId\":\"xxx\",\"format\":\"scorm12\"}'\n\nFormats: scorm12, scorm2004, xapi, html"
      },
      {
        "title": "Content block types",
        "body": "When using add_content_block, the type field accepts:\n\ntext — Rich text/HTML content\nimage — Image with URL and alt text\nvideo — Embedded video (YouTube, Vimeo, URL)\nquiz — Interactive quiz/assessment\ntabs — Tabbed content sections\naccordion — Collapsible sections\ncallout — Highlighted callout box\ndivider — Visual separator\ncode — Code block with syntax highlighting\nembed — External embed (iframe)\nhotspot — Interactive image hotspot\nflashcard — Flashcard for review\nsortable — Drag-and-drop sorting activity\ntimeline — Timeline visualization\nprocess — Step-by-step process\nlabeled_graphic — Image with labels\nknowledge_check — Quick knowledge check\nscenario — Branching scenario"
      },
      {
        "title": "Notes",
        "body": "All IDs are Firestore document IDs (alphanumeric strings)\nCourses have a hierarchy: Course → Modules → Lessons → Content Blocks\nThe Knowledge Library stores reference documents that AI tools can use for generation\nAgentic UI Control tools require the user to have the course editor open in their browser\nRate limits apply to AI generation tools based on the user's subscription tier"
      }
    ],
    "body": "CourseForge\n\nBuild and manage courses on Caring CourseForge via the MCP client.\n\nSource: npm — courseforge-mcp-client Publisher: Caring Consulting Co (caringcos.com)\n\nSetup\nInstall: npm install -g courseforge-mcp-client\nSet COURSEFORGE_API_KEY in your environment:\nGet your key: caringcourseforge.com → Settings → API Keys\nStore securely via your gateway environment config or shell profile (export COURSEFORGE_API_KEY=cf_prod_...). Do not store API keys in plaintext workspace files.\nVerify: courseforge-mcp starts without errors\nCalling Tools\n\nUse the wrapper script to call any of the 89 CourseForge tools:\n\nnode scripts/courseforge.mjs <tool_name> '<json_args>'\n\n\nThe script requires COURSEFORGE_API_KEY in the environment (set via gateway env or shell profile).\n\nnode scripts/courseforge.mjs list_courses '{}'\n\n\nOutput is clean JSON (the MCP envelope is stripped automatically).\n\nAvailable Tools (89)\nCourses (7): list_courses, create_course, get_course, update_course, delete_course, get_course_settings, update_course_settings\nModules (5): create_module, update_module, delete_module, reorder_modules, get_module\nLessons (7): create_lesson, get_lesson, update_lesson, delete_lesson, reorder_lessons, move_lesson, duplicate_lesson\nContent Blocks (6): add_content_block, get_content_block, update_content_block, delete_content_block, reorder_content_blocks, move_content_block\nCourse Management (3): validate_course, duplicate_module, export_course\nKnowledge Library (5): list_collections, create_collection, list_documents, delete_document, search_knowledge\nAI & Generation (26): ai_chat_assistant, ai_chat_with_research, generate_course_outline, generate_lesson_content, generate_quiz_from_content, generate_image, generate_job_aid_pdf, suggest_improvements, auto_fix_quality_issues, translate_content, summarize_document, convert_document_to_pdf, analyze_image, marketing_support_chat, web_search, fetch_url_content, get_youtube_metadata, get_youtube_captions, scrape_web_to_knowledge, upload_to_knowledge, manage_knowledge_files, search_user_media, list_storage_files, delete_storage_file, get_storage_usage, get_openapi_spec\nSearch & Media (2): search_stock_media, search_youtube\nRecordings (1): list_recordings\nAPI Keys (3): list_api_keys, create_api_key, revoke_api_key\nSkills (2): list_skills, get_skill\nAgentic UI Control (22): lock_canvas, unlock_canvas, refresh_canvas, notify_user, show_progress, request_confirmation, request_choice, scroll_to_element, select_element, expand_sidebar_item, focus_content_block, get_canvas_state, open_preview, close_preview, open_settings, toggle_sidebar, create_checkpoint, rollback_to_checkpoint, list_checkpoints, add_annotation, remove_annotation, highlight_issues\n\nFor full parameter details on any tool, read references/tools.md.\n\nCommon Workflows\nCreate a course from scratch\ncreate_course — title, description, difficulty (beginner/intermediate/advanced)\ncreate_module — for each section, pass courseId\ncreate_lesson — for each lesson, pass courseId + moduleId\nadd_content_block — add text, images, quizzes to lessons\nvalidate_course — check quality and accessibility\nexport_course — export to SCORM 1.2, SCORM 2004, xAPI, or HTML\nAI-powered course generation\ngenerate_course_outline — provide topic, audience, difficulty → get full structure\ncreate_course + create_module + create_lesson — build the structure from the outline\ngenerate_lesson_content — auto-generate content for each lesson\ngenerate_quiz_from_content — create assessments from lesson content\nsuggest_improvements — get AI suggestions for quality\nauto_fix_quality_issues — automatically fix issues\nUse domain skills for specialized content\nlist_skills — see all 17 available specialist skills\nget_skill — load a skill (e.g., \"Instructional Designer\", \"HR Specialist\")\nUse the skill context when generating content with ai_chat_assistant\nExport a course\nnode scripts/courseforge.mjs export_course '{\"courseId\":\"xxx\",\"format\":\"scorm12\"}'\n\n\nFormats: scorm12, scorm2004, xapi, html\n\nContent block types\n\nWhen using add_content_block, the type field accepts:\n\ntext — Rich text/HTML content\nimage — Image with URL and alt text\nvideo — Embedded video (YouTube, Vimeo, URL)\nquiz — Interactive quiz/assessment\ntabs — Tabbed content sections\naccordion — Collapsible sections\ncallout — Highlighted callout box\ndivider — Visual separator\ncode — Code block with syntax highlighting\nembed — External embed (iframe)\nhotspot — Interactive image hotspot\nflashcard — Flashcard for review\nsortable — Drag-and-drop sorting activity\ntimeline — Timeline visualization\nprocess — Step-by-step process\nlabeled_graphic — Image with labels\nknowledge_check — Quick knowledge check\nscenario — Branching scenario\nNotes\nAll IDs are Firestore document IDs (alphanumeric strings)\nCourses have a hierarchy: Course → Modules → Lessons → Content Blocks\nThe Knowledge Library stores reference documents that AI tools can use for generation\nAgentic UI Control tools require the user to have the course editor open in their browser\nRate limits apply to AI generation tools based on the user's subscription tier"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/michaeljmoody/caring-courseforge",
    "publisherUrl": "https://clawhub.ai/michaeljmoody/caring-courseforge",
    "owner": "michaeljmoody",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/caring-courseforge",
    "downloadUrl": "https://openagent3.xyz/downloads/caring-courseforge",
    "agentUrl": "https://openagent3.xyz/skills/caring-courseforge/agent",
    "manifestUrl": "https://openagent3.xyz/skills/caring-courseforge/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/caring-courseforge/agent.md"
  }
}