EdStem

WarnAudited by ClawScan on May 10, 2026.

Overview

The skill mostly matches its EdStem-sync purpose, but it ships with and asks users to store EdStem bearer tokens in source code and may fetch more forum data than the requested limit.

Review the scripts before use. Remove the bundled EdStem token, use a private environment variable or secret manager for your own token, rotate any token that was pasted into source code, and choose an output directory appropriate for private course data. Be aware that the Python script may save metadata for at least 50 threads even when a lower limit is requested.

Findings (4)

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

Running the skill before replacing the token could access EdStem using someone else’s credential, and replacing it by editing the script can leave the user’s session token exposed in local files, backups, or forks.

Why it was flagged

This confirms the package ships with an EdStem bearer credential by default; the scripts then use ED_TOKEN as the Authorization bearer for API calls.

Skill content
**Security:** The skill includes a bearer token by default. Users should: 1. Replace with their own token
Recommendation

Remove the bundled token, rotate any exposed token, and require users to provide credentials through a declared environment variable or secret store rather than editing source code.

What this means

A user who requests a smaller sync may still save more private course thread metadata than expected.

Why it was flagged

The documented limit is presented as the number of threads to fetch, but the code always retrieves and saves metadata for at least 50 threads.

Skill content
parser.add_argument('--limit' ... help='Number of threads to fetch (default: 10)') ... threads = fetch_threads(course_id, limit=max(args.limit, 50)) ... json.dump(threads, f, indent=2)
Recommendation

Honor the requested limit for all fetched/saved data, or clearly separate and document a larger metadata prefetch with an explicit option.

What this means

Student/staff names, questions, answers, and any instructions embedded in posts may be reused by an agent if the output directory is analyzed later.

Why it was flagged

The skill intentionally stores forum posts and suggests later LLM analysis, making user-generated course content persistent retrieved context.

Skill content
**threads.json** - Full thread list with metadata ... **thread-XXX.md** ... Original post content ... All answers and comments ... "Summarize the most common questions in ./course-data/"
Recommendation

Store outputs only in an appropriate private directory, follow course privacy rules, and treat forum text as untrusted content when giving it to an LLM.

What this means

Installers or users may not get normal preflight warnings that this skill needs network API access, dependencies, and an EdStem credential.

Why it was flagged

The registry metadata does not declare the credential and runtime dependencies that the included documentation and scripts require.

Skill content
Required binaries ... none; Required env vars: none; Primary credential: none; Install specifications: No install spec
Recommendation

Declare the EdStem credential, network/API usage, and dependencies such as requests, curl, and jq in the package metadata or install specification.