Agent skill

Canvas Inside

by X-isdoingreat in X-isdoingreat/canvas-pilot

A skill your agent uses for an approved Canvas Classic Quiz routed by canvas-execute.

AGPL-3.0Auto-check passedEducation

Install Canvas Inside

skills CLI
$ npx skills add X-isdoingreat/canvas-pilot --skill canvas-inside -a claude-code

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

GitHub CLI
$ gh skill install X-isdoingreat/canvas-pilot canvas-inside --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/X-isdoingreat/canvas-pilot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/canvas-inside .claude/skills/canvas-inside && 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
canvas-inside
GitHub stars
125
Token cost
~5.5k tokens
SKILL.md length
2,393 words
Files
1
Skills in repo
32
Repo updated
First seen
Licence
AGPL-3.0

At a glance

A skill your agent uses for an approved Canvas Classic Quiz routed by canvas-execute.

  • Works in 12 steps: Classify without starting an attempt → Discover the real readings → Preflight every mutation gate → …
  • An approved Canvas Classic Quiz routed by canvas-execute
  • SKILL.md covers Entry and artifact contract, 1. Classify without starting…, 2. Discover the real readings and 3. Preflight every mutation gate, plus 11 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Canvas Inside is an agent skill from X-isdoingreat/canvas-pilot. Use for an approved Canvas Classic Quiz routed by canvas-execute. Build source-grounded study notes, run four independent native Codex answer passes, and perform only the exact quiz mutations authorized by a signed receipt; fail closed for New Quizzes, locks, missing sources, or incomplete authority.

Its SKILL.md is about 5.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Education, covering Quizzes and assessments, Study guides and flashcards and Source-grounded notebooks. The repository describes itself as: Local-first Canvas LMS AI agent that learns each course's recurring assignment workflow and reuses it through scan - approval - execute with student review. The licence is AGPL-3.0.

When your agent uses it

  • An approved Canvas Classic Quiz routed by canvas-execute
  • Tasks that involve Quizzes and assessments
  • Tasks that involve Study guides and flashcards

Example prompts

  • “/canvas-inside”

Requirements

  • Python 3

Workflow steps

12 steps, taken from the step headings in SKILL.md.

  1. Classify without starting an attempt
  2. Discover the real readings
  3. Preflight every mutation gate
  4. Open attempt 1 and collect questions
  5. Normalize every supported question type
  6. Run four independent native Codex subagents in parallel
  7. Arbitrate and write canonical evidence
  8. Save answers with paced interaction
  9. Complete and verify
  10. Score and retake only under the declared policy
  11. Post-submit learning audit
  12. Canonical result and diagnostics

What it can do on your machine

Read from SKILL.md and the folder at commit 6b79d5b. 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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python and json).

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

  • Network

    No URLs in SKILL.md.

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Canvas Inside loads about 5.5k tokens when it runs. Until then it costs about 79 tokens; SKILL.md has 2,393 words of instructions outside code blocks.

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

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 X-isdoingreat/canvas-pilot at commit 6b79d5b, republished under its AGPL-3.0 licence (© X-isdoingreat). 2,393 words, ~5,499 tokens.

Download SKILL.mdSave it as .claude/skills/canvas-inside/SKILL.md (or your agent's skills folder).
name
canvas-inside
description
Use for an approved Canvas Classic Quiz routed by canvas-execute. Build source-grounded study notes, run four independent native Codex answer passes, and perform only the exact quiz mutations authorized by a signed receipt; fail closed for New Quizzes, locks, missing sources, or incomplete authority.

Canvas Classic Quiz workflow

Handle online_quiz assignments with a real Classic Quiz quiz_id. Supported question types are multiple choice, multiple answers, true/false, matching, short answer, fill-in-multiple-blanks, multiple dropdowns, numerical, and essay. New Quizzes (external_tool with no quiz_id) and online text entries are outside this skill.

Plan approval permits the approved local work only. It never grants authority to start an attempt, save an answer or event, complete an attempt, or retake.

Entry and artifact contract

Require run_dir, course_id, assignment_id, the validated assignment snapshot and approved plan item. Create the only work directory with:

python
from src.course_artifacts import ensure_stable_work_dir

work_dir = ensure_stable_work_dir(run_dir, course_id, assignment_id)

Its name is exactly course-<course_id>__assignment-<assignment_id>. Keep all quiz evidence there:

text
quiz_meta.json
readings/
references/
study_notes.md
submission.json
questions.json
questions_simplified.json
agent_passes/
final_answers.json
answer_log.json
attempt-1/
attempt-2/
audit/learning_log.json
result.json

Read _private/canvas-inside-app.md first and select the exact course block. It may contain the course whitelist, recurring quiz scope, instructor framework primer, expected canonical knowledge, human-hours window, rate limit, target score band and retake threshold. If the block is absent, write error with reason_code=missing_course_overlay, recommend a separate canvas-bootstrap run, and stop. Never copy private overlay values into this tracked skill.

1. Classify without starting an attempt

Read the assignment, current submission and quiz metadata. Save the complete quiz object atomically as quiz_meta.json, adding exact course_id, quiz_id and assignment_id; its id must also equal quiz_id. Before answer or complete mutations, Stage 4 adds the current session_id, positive integer attempt, and authorization_receipt_id. Never copy a signature or validation token into this metadata file.

Classify as follows:

EvidenceOutcome
online_quiz, non-null quiz_id, question_count >= 5, and a finite time_limitContinue as a full Classic Quiz
no quiz_id, or external_toolskipped: unsupported New Quiz or non-quiz
one question plus video/lecture language or no time limitskipped: required video interaction is unavailable
locked_for_user, proctoring, LockDown Browser, or identity-presence requirementskipped: intrinsically manual
any other shapedraft_ready with existing draft_path=quiz_meta.json and reason_code=unclassified_quiz

Do not infer the quiz shape from its name. If an inaccessible video or third-party source may have a transcript, ask the student for the link. Continue without it only when the remaining authoritative sources are sufficient.

2. Discover the real readings

Do this read-only stage before checking scheduling toggles or mutation authority. It must produce study_notes.md, so a later draft_ready result has a real deliverable.

Write verification.log at the same stage with measured PASS/FAIL lines for metadata capture, required-reading coverage, source traceability, and unresolved placeholders. An unclassified quiz that returns quiz_meta.json must still record a real metadata-capture PASS. No draft_ready result is valid while this log is missing, empty, or contains FAIL.

Use a four-layer source hunt; the Canvas description is only a routing hint.

  1. Section/week module: list modules, identify the relevant section or week, then read every Page, download every File, and follow every External URL.
  2. Course files plus syllabus: list course files, inspect the syllabus or schedule mapping, then locate the named textbook chapter, slides, lesson plan, or attachment.
  3. Local extraction: save originals under readings/; extract searchable text from PDFs and other readable files beside them. Preserve page/source anchors.
  4. Public-source fallback: only when the assigned text remains unavailable, search by exact title, author and book. Prefer the original text, publisher, author, library or other primary source. Save reconstructed notes under references/ and label their confidence as medium or low.

If no sufficiently authoritative source remains after all four layers, write error with reason_code=required_reading_unavailable; do not guess answers.

Build study_notes.md from the retrieved evidence. For each reading include:

  • central thesis;
  • key claims with page, paragraph, slide or URL anchors;
  • names, dates, places and concepts;
  • likely true/false or distinction targets;
  • confidence and any source weakness.

For multiple readings, add cross-cutting themes. Put the overlay's instructor framework primer at the top, clearly labeled as course context, and keep direct source claims distinguishable from inference.

3. Preflight every mutation gate

After study_notes.md exists, enforce the four scheduling gates:

  1. CANVAS_QUIZ_AUTORUN=1; otherwise return draft_ready with draft_path=study_notes.md.
  2. Current America/Los_Angeles hour is inside CANVAS_QUIZ_HUMAN_HOURS or the overlay window; otherwise return the same draft_ready form.
  3. runs/_processed.json contains fewer submitted quiz results in the prior six hours than CANVAS_QUIZ_MAX_PER_RUN or the overlay limit; otherwise return the same draft_ready form.
  4. The exact course is in whitelisted_course_ids; otherwise write skipped.

Scheduling flags and a whitelist are not mutation authority. Require the signed, unexpired authorization_receipt_path supplied by canvas-submit or an authorized delegation; the interactive default is <work_dir>/mutation_authorization.json. It must be bound to the current Canvas origin, course, target_type="quiz", exact target_id=quiz_id, current Codex session, and exact action set. Validate every anticipated action through src.authorization.load_authorization_receipt and validate_authorization_receipt before starting, so a later scope failure cannot waste an attempt.

Runtime callRequired receipt action
cv.start_quiz_submission(..., is_retake=False)quiz.start
every cv.post_quiz_events(...)quiz.event
every cv.answer_quiz_questions(...)quiz.answer
cv.complete_quiz_submission(...)quiz.complete
cv.start_quiz_submission(..., is_retake=True)quiz.retake

Attempt 1 therefore needs quiz.start, quiz.event, quiz.answer, and quiz.complete. Add quiz.retake only when the student's exact authorized workflow includes another attempt. No action implies another, and no wildcard, environment boolean, plan decision, overlay sentence, or prior receipt may replace an exact action. If the receipt is absent, invalid, expired, origin- mismatched, target-mismatched, session-mismatched, or missing a required action, write draft_ready with draft_path=study_notes.md and make no mutation.

Pass the same validated receipt to every client mutation. The client remains the authoritative enforcement boundary.

4. Open attempt 1 and collect questions

Start only after the entire attempt-1 scope has passed preflight:

python
sub = cv.start_quiz_submission(
    course_id, quiz_id,
    authorization_receipt=authorization_receipt,
)

Save the submission id, attempt number, validation token, end_at, and response clock to submission.json. Post one session_started event using the quiz.event scope. Fetch questions only from the student submission endpoint:

python
questions = cv.get_quiz_submission_questions(submission_id)

Save questions.json. Never bulk-post question_viewed events at open; pair each view with its later answer. Immediately after start, atomically update quiz_meta.json with course_id, quiz_id, assignment_id, the validated receipt's session_id and receipt_id (stored as authorization_receipt_id), and attempt=sub["attempt"]. These values bind all later local evidence to this one open attempt.

5. Normalize every supported question type

Strip HTML for reasoning while retaining raw question and answer identifiers. Write questions_simplified.json. Preserve these answer shapes exactly:

Canvas typefinal_answers.json answer value
multiple_choice_questionone answer id
true_false_questionone answer id
multiple_answers_questionlist of answer ids
matching_questionlist of {answer_id, match_id} objects
short_answer_questionterse exact-match token, not a sentence
fill_in_multiple_blanks_question{blank_id: terse token}
multiple_dropdowns_question{blank_id: answer_id}
numerical_questionnumber or numeric string within the stated tolerance
essay_questionsource-grounded prose string

For blank questions, union prompt [variable_name] tokens with every returned answers[].blank_id; those variable names are the submission keys. Keep dropdown options grouped by blank. Never paste raw reading text into an essay.

6. Run four independent native Codex subagents in parallel

Spawn four separate native Codex subagents in one parallel dispatch, before awaiting any one result. Give each study_notes.md, normalized questions and the source files, but do not give it another pass, a proposed final answer, or the expected disagreement.

  • notes-first: answer from study_notes.md, then verify uncertain claims in the exact source.
  • grep-first: search the full extracts for every question before using general knowledge; cite a source anchor.
  • framework-aware: use direct readings first and the overlay primer only for explicit lecture/framing questions.
  • contrarian: challenge traps, negations, restrictive words, matching pairings and every option in a multiple-answer question.

Require each subagent to return only a JSON array. Every entry includes qnum, question_id, type, the correctly shaped answer, confidence, a concise reasoning, and source_anchor. Short and blank answers use the most likely accepted token; alternatives belong in reasoning, never in the answer value.

Preserve each returned array verbatim under answers in an evidence envelope whose context exactly repeats quiz_meta.json's six binding fields and whose agent_role names that pass. Save the four envelopes immediately as:

text
agent_passes/notes_first.json
agent_passes/grep_first.json
agent_passes/framework_aware.json
agent_passes/contrarian.json

They must be valid, independently produced JSON files. Do not synthesize four personas in one response, clone a file, or manufacture disagreement. All four may honestly choose the same answers when their independent reasoning and source checks support that consensus.

7. Arbitrate and write canonical evidence

Tabulate all four passes per question:

  • 4-0 agreement: accept it;
  • 3-1: take the majority and record the dissent;
  • 2-2: resolve from an exact source anchor, wording and course framework;
  • differing multiple-answer sets: verify every option separately.

Write final_answers.json before any answer mutation:

json
{
  "context": {
    "course_id": "12",
    "quiz_id": "34",
    "assignment_id": "56",
    "session_id": "<current Codex session>",
    "attempt": 1,
    "authorization_receipt_id": "<receipt id>"
  },
  "arbitration_notes": {
    "unanimous_count": 4,
    "flagged_qnums": [3],
    "Q3": "2-2 split resolved from source anchor ..."
  },
  "answers": [
    {
      "qnum": 1,
      "question_id": 101,
      "type": "multiple_choice_question",
      "answer": 1001,
      "confidence": "high",
      "source_anchor": "reading-a.txt paragraph 8"
    }
  ]
}

The integer arbitration_notes.unanimous_count, the exact current-attempt context, and at least four JSON files in agent_passes/ are required by src.canvas_client._require_canonical_arbitration_evidence. Answer consensus is valid; four canonically identical substantive arrays (answers plus reasoning) are copy-paste evidence and fail. If honest evidence cannot satisfy that guard, write error; never forge it. A degraded method is allowed only when CANVAS_QUIZ_DEGRADED_OK contains the student's verbatim, specific consent of at least ten non-space characters, and that same text is recorded as degraded_method_user_consent. It bypasses only the arbitration evidence guard, never the signed mutation receipt.

Use src.quiz_focus_events.pick_flagged_questions for a capped subset of low/medium-confidence questions. The optional src.quiz_strategic_miss.maybe_flip_answers branch runs only when CANVAS_QUIZ_STRATEGIC_MISS=1; never flip a high-confidence or constructed- response answer and retain its full log. It does not grant mutation authority.

Show full SKILL.md (957 more words)Show less

8. Save answers with paced interaction

Use src.quiz_pacing.compute_answer_schedule and build_answer_sequence, plus src.quiz_focus_events.pick_blur_slots. Target about 78% of the Canvas time limit, include non-linear revisits, and spend at least 30 seconds on every first-answer slot. Base deadline decisions on Canvas's response clock and end_at, not an unverified local clock.

For each sequence slot, preserve this order:

  1. post question_viewed with quiz.event;
  2. wait the scheduled read/thinking interval;
  3. optionally post paired page_blurred and page_focused events;
  4. optionally post question_flagged once;
  5. call cv.answer_quiz_questions with course_id, quiz_id, assignment_id, explicit work_dir, and quiz.answer authority;
  6. post question_answered with quiz.event;
  7. append timings and event outcomes to answer_log.json.

The answer call must receive the value from final_answers.json verbatim; do not reshape it during submission. Pass the same validated receipt and exact stable work_dir; an enforced Codex runtime rejects omitted or stale context.

An HTTP 500 from an answer save is a possible false negative. Immediately read back cv.get_quiz_submission_questions(submission_id), compare the stored answer to the canonical value, and re-post only a genuine mismatch. Treat it as an error only when the readback remains wrong or empty after that targeted retry. Record the response and readback evidence.

9. Complete and verify

CANVAS_QUIZ_SUBMIT=0 disables completion but grants no authority; return draft_ready with draft_path=study_notes.md and note that the authorized attempt remains open. Otherwise call cv.complete_quiz_submission with the quiz.complete scope plus assignment_id, explicit work_dir, and the same validated receipt used by the attempt.

A completion HTTP 500 is also inconclusive. Read back cv.get_submission(course_id, assignment_id). Treat workflow_state of submitted or graded, or a real submitted_at, as success. If readback says the attempt did not finalize, write error, leave it open, surface the exact state, and do not automatically repeat /complete.

10. Score and retake only under the declared policy

Read the kept score, points possible, attempt count, allowed attempts and scoring policy from Canvas. Use the overlay retake threshold, default 0.95.

  • At or above threshold: stop after attempt 1.
  • No attempts remain: stop and record the limit.
  • Policy is keep_latest or keep_average: do not risk another attempt.
  • Below threshold with attempts left and keep_highest: take attempt 2 unless the student explicitly declines and the verbatim decline is recorded as degraded_method_user_consent.

Before a retake, require a still-valid exact quiz.retake scope in addition to quiz.event, quiz.answer, and quiz.complete. quiz.start does not imply quiz.retake.

Fetch attempt-1 feedback with cv.get_quiz_attempt_feedback when visible. Save it as attempt-1/feedback.json. For repeated questions, keep verified-correct answers and fix verified misses. Question banks may reshuffle, so start the authorized retake, fetch its actual questions, and treat every new question as new work. If feedback is hidden, rearbitrate all uncertain questions.

Archive attempt-1 pass/evidence files under attempt-1/. Then run four fresh parallel subagents for attempt 2 and write their raw JSON plus fresh final_answers.json to the canonical root paths before saving answers; archive the finished set under attempt-2/ afterward. Run the same paced event/answer loop and completion readback. Save attempt-2/plan.json, submission data and attempt2_method (feedback-driven, rearbitration, or a documented hybrid). Under keep_highest, verify kept_score from Canvas rather than merely assuming the local maximum. On attempt 2, atomically replace the attempt value in quiz_meta.json and create fresh pass/final evidence whose context carries that same attempt, session, and receipt before any answer mutation.

After the final chosen attempt is read-back verified, inspect src.authorization.authorization_usage_status(receipt). If the receipt allows quiz.retake but no retake is chosen, or the ledger otherwise lacks terminal_at, call src.authorization.finalize_authorization_usage(receipt, reason=...). A second completion may already mark it terminal; verify that rather than assuming it. Only a ledger entry with terminal_at permits authorization_consumed=true in the submitted result.

11. Post-submit learning audit

After final grading, if per-question feedback is visible, spawn one fresh native Codex subagent with final_answers.json, all raw passes, study_notes.md, exact sources and feedback. Ask only for high-confidence misses and require JSON with question, picked/correct answer, source anchor used, corrected source anchor, whether the passes disagreed, and a concrete lesson.

Atomically save the array to audit/learning_log.json and reference it in result.json. This is a non-gating learning step; it never changes a finished submission or creates another attempt. Skip it honestly when item-level feedback is unavailable.

12. Canonical result and diagnostics

Write only draft_ready, submitted, skipped, or error through src.run_state.write_result. Every draft_ready branch must point to an existing study_notes.md or quiz_meta.json; never claim notes before Stage 2 created them. Canvas graded belongs only in metadata.canvas_workflow_state, never in status.

A submitted quiz result includes at least:

json
{
  "kind": "quiz",
  "status": "submitted",
  "submitted_at": "<verified Canvas timestamp>",
  "metadata": {"canvas_workflow_state": "submitted", "readback_verified": true},
  "authorization_receipt_id": "<non-secret receipt id>",
  "authorization_consumed": true,
  "quiz_id": "<quiz id>",
  "questions_answered": 5,
  "attempt_1_score": 5,
  "attempt_2_score": null,
  "kept_score": 5,
  "points_possible": 5,
  "percent": 100.0,
  "attempts_used": 1,
  "allowed_attempts": 2,
  "scoring_policy": "keep_highest",
  "agent_passes_count": 4,
  "attempt2_method": null,
  "attempt1_feedback_unavailable": false,
  "degraded_method_user_consent": null,
  "human_ness_diagnostics": {
    "user_agent_used": "<observed browser user agent>",
    "human_hours_window": "<enforced local window>",
    "started_at_pt_hour": 13,
    "views_paired_with_answers": true,
    "total_answer_time_seconds": 420,
    "total_time_limit_seconds": 600,
    "time_utilization": 0.7,
    "per_question_cv": 0.45,
    "answer_sequence_linear": false,
    "revisits": 1,
    "events_posted": 12,
    "blur_events_count": 1,
    "flagged_questions_count": 1,
    "outlier_count": 0,
    "strategic_miss_enabled": false,
    "strategic_miss_count": 0
  }
}

Compute diagnostics from answer_log.json, not from expectation:

  • coefficient of variation is standard deviation divided by mean over initial answer sleeps;
  • sequence is non-linear only when order changed or a revisit occurred;
  • view pairing is true only when every view was emitted beside its answer;
  • blur, flag, event, outlier and strategic-miss counts come from actual logs.

Also record attempt scores, attempt2_method, feedback availability and learning_log when applicable. Validate the final payload before atomic write.

First-run stage mode

Honor a single-stage directive only when both the invocation contains STAGE-BY-STAGE MODE and <work_dir>/.first_run_stage_by_stage exists. Supported ordered stages are classify, reading-discovery, study-notes, safety-gates, open-submission, arbitration, paced-submit, complete, score-check, retake, and learning-audit.

Run exactly the named stage, require all prior artifacts, write a concise stages/<stage>.done, and stop. Mutation stages still require the same signed receipt, scheduling gates and arbitration evidence. Never use first-run mode to bypass a gate or start an attempt during draft-only bootstrap calibration. Normal daily execution runs the full ordered workflow.

Non-negotiable stops

  • Do not mutate a quiz without the exact signed receipt action for that call.
  • Do not start outside the whitelist, authorized time/rate window, or declared autorun mode.
  • Do not bulk-view, burst-answer, forge pass evidence, or create an executable bypass under runs/.
  • Do not guess missing readings or blank identifiers.
  • Do not retry a readback-confirmed completion failure.
  • Do not expose receipt secrets, private overlay content, or source-restricted course material in tracked files or chat.

© X-isdoingreat, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/canvas-inside of X-isdoingreat/canvas-pilot.

Open the folder on GitHubat commit 6b79d5b

Compare with similar skills

Canvas Inside 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.

Canvas Inside compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Canvas Inside this skillX-isdoingreat/canvas-pilot125—~5.5kAutomated safety check: PassAGPL-3.0
Nlm Skilliusztinpaul/ai-research-os-workshop1791 repos~6.9kAutomated safety check: PassMIT
NotebookLM CLI Guidejacob-bd/notebooklm-cli256—~3.4kAutomated safety check: WarnMIT
Claude Certification Tutorrohitg00/ai-engineering-from-scratch66k—~3kAutomated safety check: PassMIT
StudyVault Quiz Tutorbevibing/tutor-skills1.3k—~1.4kAutomated safety check: PassMIT
Project Mastery Coachtudoumashu/ai-memory-skillpack443—~1.8kAutomated safety check: PassMIT

Similar skills

  • Nlm Skill

    iusztinpaul/ai-research-os-workshop

    Expert guide for the NotebookLM CLI (nlm) and MCP server - interfaces for Google NotebookLM.

    179 GitHub starsUsed in 1 repo~6.9k tokens
    Knowledge ManagementAuto-check passed
  • NotebookLM CLI Guide

    jacob-bd/notebooklm-cli

    Guides use of the nlm command-line tool to automate Google NotebookLM: notebooks, sources, research, one-shot questions and generated podcasts, reports, quizzes and slides.

    256 GitHub stars~3.4k tokensUpdated 4 mo ago
    Knowledge ManagementAuto-check: warnings
  • Claude Certification Tutor

    rohitg00/ai-engineering-from-scratch

    Guides a learner through one of four independent Claude certification tracks with onboarding, lessons, practice labs, mock exams and remediation.

    66k GitHub stars~3k tokensUpdated today
    EducationAuto-check passed
  • StudyVault Quiz Tutor

    bevibing/tutor-skills

    Quizzes you on the notes in an Obsidian StudyVault, tracks proficiency per concept and drills weak areas in four-question rounds.

    1.3k GitHub stars~1.4k tokensUpdated 7 mo ago
    EducationAuto-check passed
  • Project Mastery Coach

    tudoumashu/ai-memory-skillpack

    Train strict project ownership from repo-local docs/ai memory and central LLM Wiki project entities.

    443 GitHub stars~1.8k tokensUpdated 1 mo ago
    EducationAuto-check passed
  • Kaogong

    KeWang0622/kaogong-skill

    考公AI导师 — a tutor for the Chinese civil service exam (公务员考试), covering 行测 (aptitude), 申论 (essay), and 面试 (structured interview).

    163 GitHub stars~1.2k tokensUpdated 1 mo ago
    EducationAuto-check passed

More from X-isdoingreat/canvas-pilot

All 32 skills in this repo
  • Daily Work Tweet

    X-isdoingreat/canvas-pilot

    A skill your agent uses when verified work from today or another day should become an X/Twitter post, build-in-public update, ship log, or bilingual draft.

    125 GitHub stars~1.6k tokensUpdated 2 mo ago
    Auto-check passed
  • Canvas Awkward Syntax

    X-isdoingreat/canvas-pilot

    A skill your agent uses when a short local academic draft needs role-aware syntax diversification while preserving meaning, locks, source grounding, rubric-critical openings, and document structure.

    125 GitHub stars~2k tokensUpdated 2 mo ago
    Auto-check passed
  • Canvas Cron

    X-isdoingreat/canvas-pilot

    A skill your agent uses when managing Canvas Pilot schedules: install, inspect, pause, change, delete, or safely test scheduled scans and runs.

    125 GitHub stars~2.1k tokensUpdated 2 mo ago
    Auto-check: notes
  • Canvas Essay

    X-isdoingreat/canvas-pilot

    A skill your agent uses for an approved long academic-writing assignment routed by canvas-execute after the deterministic writing router selects essay.

    125 GitHub stars~2.2k tokensUpdated 2 mo ago
    Auto-check passed
  • Canvas Generic

    X-isdoingreat/canvas-pilot

    A skill your agent uses for an approved Canvas assignment that no specialized course skill can handle.

    125 GitHub stars~2.4k tokensUpdated 2 mo ago
    Auto-check passed
  • Canvas Humanizer

    X-isdoingreat/canvas-pilot

    A skill your agent uses when a local academic draft needs a meaning-preserving humanizing pass with less uniform syntax while retaining rubric, source, lock, voice, and length constraints.

    125 GitHub stars~1.8k tokensUpdated 2 mo ago
    Auto-check passed

Categories

Questions about Canvas Inside

What does Canvas Inside do?

A skill your agent uses for an approved Canvas Classic Quiz routed by canvas-execute. Canvas Inside is an agent skill from X-isdoingreat/canvas-pilot. Use for an approved Canvas Classic Quiz routed by canvas-execute.

When should I use Canvas Inside?

Canvas Inside fits situations like: an approved Canvas Classic Quiz routed by canvas-execute; tasks that involve Quizzes and assessments; tasks that involve Study guides and flashcards.

How do I install Canvas Inside in Claude Code?

Run `npx skills add X-isdoingreat/canvas-pilot --skill canvas-inside -a claude-code`. Or copy the skill folder (.agents/skills/canvas-inside in X-isdoingreat/canvas-pilot) into .claude/skills/canvas-inside in your project. Claude Code loads it when a task matches its description.

How do I install Canvas Inside in Codex?

Run `npx skills add X-isdoingreat/canvas-pilot --skill canvas-inside -a codex`. Or copy the skill folder (.agents/skills/canvas-inside in X-isdoingreat/canvas-pilot) into .agents/skills/canvas-inside in your project. Codex loads it when a task matches its description.

Can I use Canvas Inside 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 X-isdoingreat/canvas-pilot --skill canvas-inside -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/canvas-inside, .gemini/skills/canvas-inside, .github/skills/canvas-inside and .opencode/skills/canvas-inside in your project.

What does Canvas Inside need to run?

SKILL.md names no scripts, command-line tools or credentials: Canvas Inside is instructions for the agent only. Our summary lists: Python 3.

Does Canvas Inside access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Canvas Inside 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 Canvas Inside use?

Canvas Inside is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Canvas Inside use?

About 5.5k tokens (SKILL.md is roughly 22k 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 Canvas Inside?

Skills that share tags, products or a category with Canvas Inside: Nlm Skill (iusztinpaul/ai-research-os-workshop, 179 stars), NotebookLM CLI Guide (jacob-bd/notebooklm-cli, 256 stars), Claude Certification Tutor (rohitg00/ai-engineering-from-scratch, 66k stars) and StudyVault Quiz Tutor (bevibing/tutor-skills, 1.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Canvas Inside?

X-isdoingreat (a GitHub user) maintains it in X-isdoingreat/canvas-pilot, which has 125 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on July 31, 2026.

Source: X-isdoingreat/canvas-pilot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.