Skip to content

Instantly share code, notes, and snippets.

@ryanirelan
Created February 8, 2026 15:39
Show Gist options
  • Select an option

  • Save ryanirelan/9f9da8b50f91f4782f8c0bf66302b48c to your computer and use it in GitHub Desktop.

Select an option

Save ryanirelan/9f9da8b50f91f4782f8c0bf66302b48c to your computer and use it in GitHub Desktop.
Quiz: AI-Assisted Craft CMS Development
{
"quizzes": [
{
"title": "AI-Assisted Craft CMS Development",
"passingScore": 70,
"timeLimit": 0,
"maxAttempts": 0,
"allowRetakes": 1,
"showCorrectAnswers": 1,
"shuffleQuestions": 0,
"shuffleAnswers": 0,
"hasGuestAccess": 0,
"hasFreeAccountAccess": 0,
"enabled": 1,
"multipleChoiceQuestions": [
{
"questionText": "What is the primary purpose of the CLAUDE.md file in a Craft CMS project?",
"quizOptions": [
{ "optionText": "It replaces the project's README", "isCorrect": 0 },
{ "optionText": "It provides project-specific context so Claude stops guessing and becomes a true collaborator", "isCorrect": 1 },
{ "optionText": "It stores API keys for Claude Code authentication", "isCorrect": 0 },
{ "optionText": "It logs all Claude Code interactions for auditing", "isCorrect": 0 }
],
"explanation": "CLAUDE.md gives Claude Code the project-specific context it needs — tech stack, conventions, structure, and patterns — so it can work as a knowledgeable collaborator instead of making generic guesses."
},
{
"questionText": "Which Claude Code command auto-generates an initial CLAUDE.md by scanning your project's files and configuration?",
"quizOptions": [
{ "optionText": "/scan", "isCorrect": 0 },
{ "optionText": "/setup", "isCorrect": 0 },
{ "optionText": "/init", "isCorrect": 1 },
{ "optionText": "/generate", "isCorrect": 0 }
],
"explanation": "The /init command scans your project's composer.json, config files, and directory structure to generate a starting CLAUDE.md document."
},
{
"questionText": "When auditing an inherited Craft CMS project, what is the recommended first step before touching any code?",
"quizOptions": [
{ "optionText": "Run all database migrations", "isCorrect": 0 },
{ "optionText": "Delete the existing CLAUDE.md and start fresh", "isCorrect": 0 },
{ "optionText": "Run /init to let Claude analyze the project and generate a baseline CLAUDE.md", "isCorrect": 1 },
{ "optionText": "Immediately update all plugins to the latest versions", "isCorrect": 0 }
],
"explanation": "The 30-minute audit process starts with running /init for an automated scan (Phase 1), letting Claude analyze the project before you make any changes."
},
{
"questionText": "What syntax do you use in Claude Code to focus Claude's attention on a specific file during a conversation?",
"quizOptions": [
{ "optionText": "#filename", "isCorrect": 0 },
{ "optionText": "@filename", "isCorrect": 1 },
{ "optionText": "!filename", "isCorrect": 0 },
{ "optionText": "$filename", "isCorrect": 0 }
],
"explanation": "The @filename syntax (e.g., @config/app.php) focuses Claude's attention on a specific file, making questions more targeted and effective."
},
{
"questionText": "The course distinguishes between Claude Chat and Claude Code. What is Claude Chat best suited for?",
"quizOptions": [
{ "optionText": "Creating files and running commands in your project", "isCorrect": 0 },
{ "optionText": "Iterating on errors in real time", "isCorrect": 0 },
{ "optionText": "Learning and exploring concepts before building", "isCorrect": 1 },
{ "optionText": "Deploying code to production", "isCorrect": 0 }
],
"explanation": "Claude Chat is ideal for learning and exploring what's possible. Claude Code is for actually building — it has project context, can create files, run commands, and iterate on errors."
},
{
"questionText": "When extending Feed Me to preserve dateCreated on imported users, why does the module use two separate event listeners (before save and after save)?",
"quizOptions": [
{ "optionText": "One listener handles validation, the other handles logging", "isCorrect": 0 },
{ "optionText": "The before-save listener captures the feed data, while the after-save listener applies it via a direct database update", "isCorrect": 1 },
{ "optionText": "Craft CMS requires all modules to register exactly two listeners", "isCorrect": 0 },
{ "optionText": "One listener is for new users and the other is for existing users", "isCorrect": 0 }
],
"explanation": "The two-listener pattern captures the joinDate from Feed Me's data before the element saves, stores it temporarily, then updates the database directly after the save to set the correct dateCreated."
},
{
"questionText": "What does Plan Mode prevent Claude Code from doing?",
"quizOptions": [
{ "optionText": "Reading files in your project", "isCorrect": 0 },
{ "optionText": "Asking clarifying questions", "isCorrect": 0 },
{ "optionText": "All file operations — making it a thinking partner, not a code generator", "isCorrect": 1 },
{ "optionText": "Accessing the internet", "isCorrect": 0 }
],
"explanation": "Plan Mode constrains Claude by preventing all file operations. This forces it to think and plan with you rather than jumping straight to generating code."
},
{
"questionText": "One of the most valuable outputs of Plan Mode is that it surfaces _____ before you start building.",
"quizOptions": [
{ "optionText": "Estimated project costs", "isCorrect": 0 },
{ "optionText": "Skill gaps and unknown technologies your team may need", "isCorrect": 1 },
{ "optionText": "A complete test suite", "isCorrect": 0 },
{ "optionText": "The exact number of files that will be changed", "isCorrect": 0 }
],
"explanation": "Plan Mode produces a 'Skills Required' section that identifies technologies outside your typical expertise — like Google Apps Script for a Sheets integration — so you can plan for them before getting stuck halfway through."
},
{
"questionText": "Which scenario is the best candidate for using Plan Mode?",
"quizOptions": [
{ "optionText": "Fixing a typo in a Twig template", "isCorrect": 0 },
{ "optionText": "Adding a CSS class to a button", "isCorrect": 0 },
{ "optionText": "Building a two-way sync between Google Sheets and Craft CMS", "isCorrect": 1 },
{ "optionText": "Clearing the Craft cache", "isCorrect": 0 }
],
"explanation": "Plan Mode is designed for complex projects crossing system boundaries and involving unfamiliar technologies. Simple, isolated changes don't need it."
},
{
"questionText": "Where do personal Claude skills live so they're available across all your projects?",
"quizOptions": [
{ "optionText": ".claude/skills/ in the project root", "isCorrect": 0 },
{ "optionText": "~/.claude/skills/", "isCorrect": 1 },
{ "optionText": "config/claude/skills/", "isCorrect": 0 },
{ "optionText": "/usr/local/claude/skills/", "isCorrect": 0 }
],
"explanation": "Personal skills live in ~/.claude/skills/ (your home directory) so they follow you across every project. Project skills live in .claude/skills/ within the project root."
},
{
"questionText": "Why is it important to include Craft 5-specific patterns in a Claude skill?",
"quizOptions": [
{ "optionText": "Claude Code only works with Craft 5 projects", "isCorrect": 0 },
{ "optionText": "Most AI training data reflects Craft 3 and 4 patterns, so skills correct for Craft 5 changes like Matrix containing Entry elements", "isCorrect": 1 },
{ "optionText": "Craft 5 uses a completely different programming language", "isCorrect": 0 },
{ "optionText": "Skills are required for Claude to recognize .twig files", "isCorrect": 0 }
],
"explanation": "AI training data skews heavily toward Craft 3 and 4. Skills teach Claude about Craft 5 changes like Matrix fields containing Entry elements (not MatrixBlock), .eagerly() for lazy eager-loading, and global entry types."
},
{
"questionText": "In Craft 5, what is the preferred approach for lazy eager-loading in Twig templates?",
"quizOptions": [
{ "optionText": ".with()", "isCorrect": 0 },
{ "optionText": ".load()", "isCorrect": 0 },
{ "optionText": ".eagerly()", "isCorrect": 1 },
{ "optionText": ".preload()", "isCorrect": 0 }
],
"explanation": "Craft 5 introduced .eagerly() as the preferred method for lazy eager-loading, replacing the older .with() pattern from previous versions."
},
{
"questionText": "How do you create a custom Claude Code command called /audit?",
"quizOptions": [
{ "optionText": "Register it in config/app.php", "isCorrect": 0 },
{ "optionText": "Create a file at .claude/commands/audit.md", "isCorrect": 1 },
{ "optionText": "Run /register audit", "isCorrect": 0 },
{ "optionText": "Add it to the CLAUDE.md commands section", "isCorrect": 0 }
],
"explanation": "Custom commands are Markdown files in .claude/commands/. The filename becomes the command name, so audit.md becomes /audit."
},
{
"questionText": "What placeholder in a custom command file allows users to pass additional context when running the command?",
"quizOptions": [
{ "optionText": "${INPUT}", "isCorrect": 0 },
{ "optionText": "$ARGUMENTS", "isCorrect": 1 },
{ "optionText": "{{params}}", "isCorrect": 0 },
{ "optionText": "%CONTEXT%", "isCorrect": 0 }
],
"explanation": "$ARGUMENTS lets users customize command behavior at runtime. For example, '/audit focusing on Commerce setup' passes that context into the command prompt."
},
{
"questionText": "Which statement best captures the course's overall philosophy about AI-assisted development?",
"quizOptions": [
{ "optionText": "AI will replace the need for developers to understand Craft CMS", "isCorrect": 0 },
{ "optionText": "AI is a collaborator that needs proper context and human oversight to be effective", "isCorrect": 1 },
{ "optionText": "AI tools should only be used by senior developers", "isCorrect": 0 },
{ "optionText": "AI-generated code should be deployed without review to save time", "isCorrect": 0 }
],
"explanation": "The course emphasizes that AI isn't magic — it's a collaborator requiring proper setup, context, and human judgment to be effective. Developers stay in control."
}
],
"trueFalseQuestions": [
{
"questionText": "CLAUDE.md should be created once and never updated after initial setup.",
"correctAnswer": 0,
"explanation": "CLAUDE.md evolves with the project. You should document new plugins, configuration quirks, and common mistakes as you discover them. It becomes living documentation for future developers."
},
{
"questionText": "The recommended inherited project audit process takes approximately 30 minutes.",
"correctAnswer": 1,
"explanation": "The course outlines a structured 30-minute audit broken into five phases: automated scan, configuration exploration, module mapping, plugin/dependency check, and hidden complexity discovery."
},
{
"questionText": "When Claude suggests defensive code you know is unnecessary for your specific use case, you should always keep it because AI knows best.",
"correctAnswer": 0,
"explanation": "The course explicitly teaches that humans stay in control. If you understand your context better than Claude — for example, knowing an $event->isNew check is unnecessary — you should override the suggestion."
},
{
"questionText": "The first thing you should produce after exiting Plan Mode is working code.",
"correctAnswer": 0,
"explanation": "The course recommends producing documentation first — an architectural plan, sequence diagrams, and scope documents — not code. Documentation captures the shared understanding built during planning."
},
{
"questionText": "Project skills stored in .claude/skills/ can be committed to version control and shared with your team.",
"correctAnswer": 1,
"explanation": "Project skills live in the project directory and can be version controlled, making them available to all team members who work on the project."
},
{
"questionText": "Custom commands need to be perfect before you start using them.",
"correctAnswer": 0,
"explanation": "The course emphasizes iteration: create a starting prompt, run it, notice what's missing, edit, and repeat. Commands evolve through use and don't need to be perfect on day one."
},
{
"questionText": "When using DDEV with Craft CMS, you should run Craft console commands with 'php craft' directly.",
"correctAnswer": 0,
"explanation": "The course specifies using 'ddev craft' (not 'php craft') to ensure commands run inside the DDEV container with the correct PHP version and environment."
},
{
"questionText": "The course positions itself as evangelism, trying to convince developers to start using AI tools.",
"correctAnswer": 0,
"explanation": "The course explicitly states that 80% of developers already use AI tools. It's about doing it professionally and effectively, not convincing you to start."
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment