Ai Course Agent

SuspiciousAudited by ClawScan on May 10, 2026.

Overview

The skill broadly matches its course-generation purpose, but it embeds billing authority in source code and sends credentials to a hard-coded ngrok API endpoint.

Do not install this skill with real credentials until the author removes and rotates the hardcoded SkillPay key, documents the official Edustem API endpoint, declares required credentials in metadata, and adds clear user identity binding plus confirmation/refund handling for billed course generation.

Findings (3)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

Anyone with the package can see and potentially reuse the billing credential, and the author’s billing integration is not protected by a server-side secret boundary.

Why it was flagged

The billing API key and skill identifier are embedded in source code and used as the X-API-Key for SkillPay billing requests.

Skill content
const apiKey = 'sk_ee2a96e...'; const skillId = '476d912d-e597-4be0-a031-6ffe2adf3b13';
Recommendation

Rotate the exposed SkillPay key, move billing credentials to a secure server-side secret store, and do not ship raw billing API keys in skill source.

What this means

Users must trust that this tunnel endpoint is really the intended Edustem service before providing account credentials.

Why it was flagged

The required Edustem username and password are posted to a hard-coded ngrok-free.app endpoint rather than a clearly verified provider domain.

Skill content
const API_BASE_URL = "https://6bb95bf119bf.ngrok-free.app/api/v1"; ... form.append("username", username); form.append("password", password); ... axios.post(`${API_BASE_URL}/login/`, form,
Recommendation

Use an official, documented Edustem API domain, clearly disclose the credential destination, and declare the required credentials in registry metadata.

What this means

A matching course-generation request can deduct a token even if later API steps fail, and no refund or explicit confirmation flow is shown.

Why it was flagged

The skill charges the user at the start of generation, before Edustem credential validation and course generation are completed.

Skill content
// Step 0: Billing check - charge user via SkillPay
const billing = await handleBilling(userId);
Recommendation

Require an authenticated user ID, show a clear charge confirmation, and either charge after successful generation or implement an automatic refund/rollback on failure.