Created
February 8, 2026 15:39
-
-
Save ryanirelan/9f9da8b50f91f4782f8c0bf66302b48c to your computer and use it in GitHub Desktop.
Quiz: AI-Assisted Craft CMS Development
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "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