Agent skill

Google Classroom

by LeoYeAI in LeoYeAI/openclaw-master-skills

Google Classroom API integration with managed OAuth. An agent skill from LeoYeAI/openclaw-master-skills.

MITAuto-check passedBackend & APIs

Install Google Classroom

skills CLI
$ npx skills add LeoYeAI/openclaw-master-skills --skill google-classroom -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install LeoYeAI/openclaw-master-skills google-classroom --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/google-classroom .claude/skills/google-classroom && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
google-classroom
GitHub stars
2.2k
Token cost
~4.1k tokens
SKILL.md length
647 words
Files
3
Skills in repo
1,235
Repo updated
First seen
Licence
MIT

At a glance

Google Classroom API integration with managed OAuth. An agent skill from LeoYeAI/openclaw-master-skills.

  • Works in 3 steps: Sign in or create an account at maton.ai → Go to maton.ai/settings → Copy your API key
  • Users want to create courses
  • SKILL.md covers Quick Start, Base URL, Authentication and Connection Management, plus 5 more sections
  • Calls python3; reaches gateway.maton.ai and ctrl.maton.ai; needs MATON_API_KEY

What it does

Google Classroom is an agent skill from LeoYeAI/openclaw-master-skills. Google Classroom API integration with managed OAuth. Manage courses, assignments, students, teachers, and announcements. Use this skill when users want to create courses, manage coursework, track student submissions, or post announcements. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Requires network access and valid Maton API key.

Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `_meta.json`).

It sits in Backend & APIs, covering Microservices, Third-party API integration and OAuth and OpenID Connect. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.

When your agent uses it

  • Users want to create courses
  • Manage coursework
  • Track student submissions
  • Post announcements

Example prompts

  • “/google-classroom”

Requirements

  • Python 3
  • A credential in MATON_API_KEY
  • A credential in YOUR_API_KEY

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Sign in or create an account at maton.ai
  2. Go to maton.ai/settings
  3. Copy your API key

What it can do on your machine

Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • gateway.maton.ai
    • ctrl.maton.ai
    • classroom.google.com
    • connect.maton.ai

    Also links to:

    • developers.google.com
    • maton.ai
    • discord.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • MATON_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Google Classroom loads about 4.1k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 647 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~101
When it runs · the whole SKILL.md, loaded when a task matches
~4.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 647 words, ~4,144 tokens.

Download SKILL.mdSave it as .claude/skills/google-classroom/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
google-classroom
description
Google Classroom API integration with managed OAuth. Manage courses, assignments, students, teachers, and announcements. Use this skill when users want to create courses, manage coursework, track student submissions, or post announcements. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Requires network access and valid Maton API key.
metadata.author
maton
metadata.version
1.0

Google Classroom

Access the Google Classroom API with managed OAuth authentication. Manage courses, coursework, students, teachers, announcements, and submissions.

Quick Start

bash
# List all courses
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/google-classroom/v1/courses')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Base URL

https://gateway.maton.ai/google-classroom/{api-path}

The Google Classroom API uses the path pattern:

https://gateway.maton.ai/google-classroom/v1/{resource}

Authentication

All requests require the Maton API key in the Authorization header:

Authorization: Bearer $MATON_API_KEY

Environment Variable: Set your API key as MATON_API_KEY:

bash
export MATON_API_KEY="YOUR_API_KEY"
Getting Your API Key
  1. Sign in or create an account at maton.ai
  2. Go to maton.ai/settings
  3. Copy your API key

Connection Management

Manage your Google Classroom OAuth connections at https://ctrl.maton.ai.

List Connections
bash
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-classroom&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Create Connection
bash
python3 <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'google-classroom'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Get Connection
bash
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

json
{
  "connection": {
    "connection_id": "8efa1361-0e86-40b1-a63b-53a5051f8ac6",
    "status": "ACTIVE",
    "creation_time": "2026-02-14T00:00:00.000000Z",
    "last_updated_time": "2026-02-14T00:00:00.000000Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "google-classroom",
    "metadata": {}
  }
}

Open the returned url in a browser to complete OAuth authorization.

Delete Connection
bash
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Specifying Connection

If you have multiple Google Classroom connections, specify which one to use with the Maton-Connection header:

bash
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/google-classroom/v1/courses')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '8efa1361-0e86-40b1-a63b-53a5051f8ac6')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

If omitted, the gateway uses the default (oldest) active connection.

API Reference

Courses
List Courses
bash
GET /v1/courses
GET /v1/courses?courseStates=ACTIVE
GET /v1/courses?teacherId=me
GET /v1/courses?studentId=me
GET /v1/courses?pageSize=10

Query Parameters:

  • courseStates - Filter by state: ACTIVE, ARCHIVED, PROVISIONED, DECLINED, SUSPENDED
  • teacherId - Filter by teacher ID (use me for current user)
  • studentId - Filter by student ID (use me for current user)
  • pageSize - Number of results per page (max 100)
  • pageToken - Token for next page

Response:

json
{
  "courses": [
    {
      "id": "825635865485",
      "name": "Introduction to Programming",
      "section": "Section A",
      "descriptionHeading": "CS 101",
      "description": "Learn the basics of programming",
      "ownerId": "102753038276005039640",
      "creationTime": "2026-02-14T01:53:58.991Z",
      "updateTime": "2026-02-14T01:53:58.991Z",
      "enrollmentCode": "3qsua37m",
      "courseState": "ACTIVE",
      "alternateLink": "https://classroom.google.com/c/ODI1NjM1ODY1NDg1",
      "guardiansEnabled": false
    }
  ],
  "nextPageToken": "..."
}
Get Course
bash
GET /v1/courses/{courseId}
Create Course
bash
POST /v1/courses
Content-Type: application/json

{
  "name": "Course Name",
  "section": "Section A",
  "descriptionHeading": "Course Title",
  "description": "Course description",
  "ownerId": "me"
}

Response:

json
{
  "id": "825637533405",
  "name": "Course Name",
  "section": "Section A",
  "ownerId": "102753038276005039640",
  "courseState": "PROVISIONED",
  "enrollmentCode": "abc123"
}
Update Course
bash
PATCH /v1/courses/{courseId}?updateMask=name,description
Content-Type: application/json

{
  "name": "Updated Course Name",
  "description": "Updated description"
}

Note: Use updateMask query parameter to specify which fields to update.

Delete Course
bash
DELETE /v1/courses/{courseId}

Note: Courses must be archived before deletion. To archive, update the course with courseState: "ARCHIVED".

Course Work (Assignments)
List Course Work
bash
GET /v1/courses/{courseId}/courseWork
GET /v1/courses/{courseId}/courseWork?courseWorkStates=PUBLISHED
GET /v1/courses/{courseId}/courseWork?orderBy=dueDate

Query Parameters:

  • courseWorkStates - Filter by state: PUBLISHED, DRAFT, DELETED
  • orderBy - Sort by: dueDate, updateTime
  • pageSize - Number of results per page
  • pageToken - Token for next page
Get Course Work
bash
GET /v1/courses/{courseId}/courseWork/{courseWorkId}
Create Course Work
bash
POST /v1/courses/{courseId}/courseWork
Content-Type: application/json

{
  "title": "Assignment Title",
  "description": "Assignment description",
  "workType": "ASSIGNMENT",
  "state": "PUBLISHED",
  "maxPoints": 100,
  "dueDate": {
    "year": 2026,
    "month": 3,
    "day": 15
  },
  "dueTime": {
    "hours": 23,
    "minutes": 59
  }
}

Work Types:

  • ASSIGNMENT - Regular assignment
  • SHORT_ANSWER_QUESTION - Short answer question
  • MULTIPLE_CHOICE_QUESTION - Multiple choice question

States:

  • DRAFT - Not visible to students
  • PUBLISHED - Visible to students
Update Course Work
bash
PATCH /v1/courses/{courseId}/courseWork/{courseWorkId}?updateMask=title,description
Content-Type: application/json

{
  "title": "Updated Title",
  "description": "Updated description"
}
Delete Course Work
bash
DELETE /v1/courses/{courseId}/courseWork/{courseWorkId}
Student Submissions
List Student Submissions
bash
GET /v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions
GET /v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions?states=TURNED_IN

Query Parameters:

  • states - Filter by state: NEW, CREATED, TURNED_IN, RETURNED, RECLAIMED_BY_STUDENT
  • userId - Filter by student ID
  • pageSize - Number of results per page
  • pageToken - Token for next page

Note: Course work must be in PUBLISHED state to list submissions.

Response:

json
{
  "studentSubmissions": [
    {
      "courseId": "825635865485",
      "courseWorkId": "825637404958",
      "id": "Cg4I8ufNwwYQ7tSZgYIB",
      "userId": "102753038276005039640",
      "creationTime": "2026-02-14T02:30:00.000Z",
      "state": "NEW",
      "alternateLink": "https://classroom.google.com/..."
    }
  ]
}
Get Student Submission
bash
GET /v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{submissionId}
Grade Submission
bash
PATCH /v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{submissionId}?updateMask=assignedGrade,draftGrade
Content-Type: application/json

{
  "assignedGrade": 95,
  "draftGrade": 95
}
Return Submission
bash
POST /v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{submissionId}:return
Content-Type: application/json

{}
Teachers
List Teachers
bash
GET /v1/courses/{courseId}/teachers

Response:

json
{
  "teachers": [
    {
      "courseId": "825635865485",
      "userId": "102753038276005039640",
      "profile": {
        "id": "102753038276005039640",
        "name": {
          "givenName": "John",
          "familyName": "Doe",
          "fullName": "John Doe"
        },
        "emailAddress": "john.doe@example.com"
      }
    }
  ]
}
Get Teacher
bash
GET /v1/courses/{courseId}/teachers/{userId}
Add Teacher
bash
POST /v1/courses/{courseId}/teachers
Content-Type: application/json

{
  "userId": "teacher@example.com"
}
Remove Teacher
bash
DELETE /v1/courses/{courseId}/teachers/{userId}
Students
List Students
bash
GET /v1/courses/{courseId}/students
Get Student
bash
GET /v1/courses/{courseId}/students/{userId}
Add Student
bash
POST /v1/courses/{courseId}/students
Content-Type: application/json

{
  "userId": "student@example.com"
}
Remove Student
bash
DELETE /v1/courses/{courseId}/students/{userId}
Announcements
List Announcements
bash
GET /v1/courses/{courseId}/announcements
GET /v1/courses/{courseId}/announcements?announcementStates=PUBLISHED
Get Announcement
bash
GET /v1/courses/{courseId}/announcements/{announcementId}
Create Announcement
bash
POST /v1/courses/{courseId}/announcements
Content-Type: application/json

{
  "text": "Announcement text content",
  "state": "PUBLISHED"
}

States:

  • DRAFT - Not visible to students
  • PUBLISHED - Visible to students
Update Announcement
bash
PATCH /v1/courses/{courseId}/announcements/{announcementId}?updateMask=text
Content-Type: application/json

{
  "text": "Updated announcement text"
}
Delete Announcement
bash
DELETE /v1/courses/{courseId}/announcements/{announcementId}
Topics
List Topics
bash
GET /v1/courses/{courseId}/topics
Get Topic
bash
GET /v1/courses/{courseId}/topics/{topicId}
Create Topic
bash
POST /v1/courses/{courseId}/topics
Content-Type: application/json

{
  "name": "Topic Name"
}
Update Topic
bash
PATCH /v1/courses/{courseId}/topics/{topicId}?updateMask=name
Content-Type: application/json

{
  "name": "Updated Topic Name"
}
Delete Topic
bash
DELETE /v1/courses/{courseId}/topics/{topicId}
Course Work Materials
Show full SKILL.md (260 more words)Show less
List Course Work Materials
bash
GET /v1/courses/{courseId}/courseWorkMaterials
Get Course Work Material
bash
GET /v1/courses/{courseId}/courseWorkMaterials/{courseWorkMaterialId}
Invitations
List Invitations
bash
GET /v1/invitations?courseId={courseId}
GET /v1/invitations?userId=me

Note: Either courseId or userId is required.

Create Invitation
bash
POST /v1/invitations
Content-Type: application/json

{
  "courseId": "825635865485",
  "userId": "user@example.com",
  "role": "STUDENT"
}

Roles:

  • STUDENT
  • TEACHER
  • OWNER
Accept Invitation
bash
POST /v1/invitations/{invitationId}:accept
Delete Invitation
bash
DELETE /v1/invitations/{invitationId}
User Profiles
Get Current User
bash
GET /v1/userProfiles/me

Response:

json
{
  "id": "102753038276005039640",
  "name": {
    "givenName": "John",
    "familyName": "Doe",
    "fullName": "John Doe"
  },
  "emailAddress": "john.doe@example.com",
  "permissions": [
    {
      "permission": "CREATE_COURSE"
    }
  ],
  "verifiedTeacher": false
}
Get User Profile
bash
GET /v1/userProfiles/{userId}
Course Aliases
List Course Aliases
bash
GET /v1/courses/{courseId}/aliases

Pagination

The Google Classroom API uses token-based pagination. Responses include a nextPageToken when more results are available.

bash
GET /v1/courses?pageSize=10

Response:

json
{
  "courses": [...],
  "nextPageToken": "Ci8KLRIrEikKDmIMCLK8v8wGEIDQrsYBCgsI..."
}

To get the next page:

bash
GET /v1/courses?pageSize=10&pageToken=Ci8KLRIrEikKDmIMCLK8v8wGEIDQrsYBCgsI...

Code Examples

JavaScript
javascript
// List all courses
const response = await fetch(
  'https://gateway.maton.ai/google-classroom/v1/courses',
  {
    headers: {
      'Authorization': `Bearer ${process.env.MATON_API_KEY}`
    }
  }
);
const data = await response.json();
console.log(data.courses);
Python
python
import os
import requests

# List all courses
response = requests.get(
    'https://gateway.maton.ai/google-classroom/v1/courses',
    headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}
)
data = response.json()
print(data['courses'])
Create Assignment Example
python
import os
import requests

course_id = "825635865485"

# Create an assignment
assignment = {
    "title": "Week 1 Homework",
    "description": "Complete exercises 1-10",
    "workType": "ASSIGNMENT",
    "state": "PUBLISHED",
    "maxPoints": 100,
    "dueDate": {"year": 2026, "month": 3, "day": 15},
    "dueTime": {"hours": 23, "minutes": 59}
}

response = requests.post(
    f'https://gateway.maton.ai/google-classroom/v1/courses/{course_id}/courseWork',
    headers={
        'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}',
        'Content-Type': 'application/json'
    },
    json=assignment
)
print(response.json())

Notes

  • updateMask Required: PATCH requests require the updateMask query parameter specifying which fields to update
  • Course Deletion: Courses must be archived (courseState: "ARCHIVED") before they can be deleted
  • Student Submissions: Course work must be in PUBLISHED state to access student submissions
  • User IDs: Use me to refer to the current authenticated user
  • Timestamps: Dates use {year, month, day} format; times use {hours, minutes} format
  • IMPORTANT: When piping curl output to jq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments

Error Handling

StatusMeaning
400Bad request, invalid argument, or precondition failed
401Invalid API key or expired token
403Permission denied
404Resource not found
409Conflict (e.g., user already enrolled)
429Rate limited
4xx/5xxPassthrough error from Google Classroom API
Common Errors

Precondition check failed (400)

  • When deleting a course: Course must be archived first
  • When listing submissions: Course work must be published

Permission denied (403)

  • User doesn't have required role (teacher/owner) for the operation
  • Attempting to access guardian information without proper scopes

Resources

© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files in skills/google-classroom of LeoYeAI/openclaw-master-skills.

  • SKILL.md
  • LICENSE.txt
  • _meta.json

Open the folder on GitHubat commit e5199b5

Compare with similar skills

Google Classroom next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Google Classroom compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Google Classroom this skillLeoYeAI/openclaw-master-skills2.2k—~4.1kAutomated safety check: PassMIT
Microsoft TeamsCraftOS-dev/CraftBot3921 repos~4.4kAutomated safety check: PassMIT
YoutubeCraftOS-dev/CraftBot3921 repos~3.7kAutomated safety check: PassMIT
Zoho BiginCraftOS-dev/CraftBot3921 repos~4.3kAutomated safety check: PassMIT
Zoho CalendarCraftOS-dev/CraftBot3921 repos~4.2kAutomated safety check: PassMIT
Zoho MailCraftOS-dev/CraftBot3921 repos~4.2kAutomated safety check: PassMIT

Similar skills

  • Microsoft Teams

    CraftOS-dev/CraftBot

    Microsoft Teams API integration with managed OAuth. An agent skill from CraftOS-dev/CraftBot.

    392 GitHub starsUsed in 1 repo~4.4k tokens
    Backend & APIsAuto-check passed
  • Youtube

    CraftOS-dev/CraftBot

    YouTube Data API integration with managed OAuth. An agent skill from CraftOS-dev/CraftBot.

    392 GitHub starsUsed in 1 repo~3.7k tokens
    Backend & APIsAuto-check passed
  • Zoho Bigin

    CraftOS-dev/CraftBot

    Zoho Bigin API integration with managed OAuth. An agent skill from CraftOS-dev/CraftBot.

    392 GitHub starsUsed in 1 repo~4.3k tokens
    Backend & APIsAuto-check passed
  • Zoho Calendar

    CraftOS-dev/CraftBot

    Zoho Calendar API integration with managed OAuth. An agent skill from CraftOS-dev/CraftBot.

    392 GitHub starsUsed in 1 repo~4.2k tokens
    Backend & APIsAuto-check passed
  • Zoho Mail

    CraftOS-dev/CraftBot

    Zoho Mail API integration with managed OAuth. An agent skill from CraftOS-dev/CraftBot.

    392 GitHub starsUsed in 1 repo~4.2k tokens
    Backend & APIsAuto-check passed
  • Calendly

    CraftOS-dev/CraftBot

    Calendly API integration with managed OAuth. An agent skill from CraftOS-dev/CraftBot.

    392 GitHub starsUsed in 1 repo~5.7k tokens
    Backend & APIsAuto-check passed

More from LeoYeAI/openclaw-master-skills

All 1,235 skills in this repo
  • DevOps Pipeline Management

    LeoYeAI/openclaw-master-skills

    Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.

    2.2k GitHub stars~4.2k tokensUpdated 2 mo ago
    Auto-check: notes
  • Feishu Document Collaboration

    LeoYeAI/openclaw-master-skills

    Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.

    2.2k GitHub stars~2k tokensUpdated 2 mo ago
    Auto-check passed
  • Files Memory System

    LeoYeAI/openclaw-master-skills

    Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.

    2.2k GitHub stars~3.8k tokensUpdated 2 mo ago
    Auto-check passed
  • GEO-Claw AI Visibility Agent

    LeoYeAI/openclaw-master-skills

    Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.

    2.2k GitHub stars~4.7k tokensUpdated 2 mo ago
    Auto-check passed
  • Google Workspace CLI

    LeoYeAI/openclaw-master-skills

    Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.

    2.2k GitHub stars~2.6k tokensUpdated 2 mo ago
    Auto-check: notes
  • HealthFit Health Advisors

    LeoYeAI/openclaw-master-skills

    Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.

    2.2k GitHub stars~4.4k tokensUpdated 2 mo ago
    Auto-check passed

Categories

Questions about Google Classroom

What does Google Classroom do?

Google Classroom API integration with managed OAuth. An agent skill from LeoYeAI/openclaw-master-skills. Google Classroom is an agent skill from LeoYeAI/openclaw-master-skills. Google Classroom API integration with managed OAuth.

When should I use Google Classroom?

Google Classroom fits situations like: users want to create courses; manage coursework; track student submissions; post announcements.

How do I install Google Classroom in Claude Code?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill google-classroom -a claude-code`. Or copy the skill folder (skills/google-classroom in LeoYeAI/openclaw-master-skills) into .claude/skills/google-classroom in your project. Claude Code loads it when a task matches its description.

How do I install Google Classroom in Codex?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill google-classroom -a codex`. Or copy the skill folder (skills/google-classroom in LeoYeAI/openclaw-master-skills) into .agents/skills/google-classroom in your project. Codex loads it when a task matches its description.

Can I use Google Classroom in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill google-classroom -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/google-classroom, .gemini/skills/google-classroom, .github/skills/google-classroom and .opencode/skills/google-classroom in your project.

What does Google Classroom need to run?

Going by SKILL.md and its folder, Google Classroom needs the command-line tools its instructions call (python3) and credentials named MATON_API_KEY. Our summary lists: Python 3; A credential in MATON_API_KEY; A credential in YOUR_API_KEY.

Does Google Classroom access the network?

SKILL.md names 7 domains. In commands or code: gateway.maton.ai, ctrl.maton.ai, classroom.google.com and connect.maton.ai; the agent is likely to contact these when it follows the instructions. As links in the text: developers.google.com, maton.ai and discord.com. This is read from the text; nothing was executed.

Is Google Classroom safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Google Classroom use?

Google Classroom is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Google Classroom use?

About 4.1k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Google Classroom?

Skills that share tags, products or a category with Google Classroom: Microsoft Teams (CraftOS-dev/CraftBot, 392 stars), Youtube (CraftOS-dev/CraftBot, 392 stars), Zoho Bigin (CraftOS-dev/CraftBot, 392 stars) and Zoho Calendar (CraftOS-dev/CraftBot, 392 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Google Classroom?

LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,160 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.

Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.