Contributing to Hands-on AI
Thank you for contributing to Hands-On AI! This guide explains how to add new content.
Site Structure
Section titled “Site Structure”| Section | Location | Purpose |
|---|---|---|
| Agentic Building Blocks | agentic-building-blocks/ | The AI building blocks (Model, Prompts, Context, Projects, Memory, Skills, Agents, MCP, API, SDK, CLI) |
| Business-First AI Framework | business-first-ai-framework/ | Seven-step methodology (Analyze, Deconstruct, Design, Build, Test, Run, Improve) |
| Use Cases | use-cases/ | Six use case primitives (Content Creation, Research, Coding, Data Analysis, Ideation & Strategy, Automation) |
| Platforms | platforms/ | Platform-specific content (Claude, OpenAI, Gemini, M365 Copilot) |
| Builder Setup | builder-setup/ | Tool setup and installation guides |
| Patterns | patterns/ | Document reusable approaches |
| Courses | courses/ | Structured learning paths (course-specific) |
Content Types and Templates
Section titled “Content Types and Templates”| Type | Template |
|---|---|
| Question (AEO) | question-template.md |
| How-To Guide | how-to-template.md |
| Topic | topic-template.md |
| Pattern | Use topic template |
| Troubleshooting | Use how-to template |
Adding a Question (AEO-Optimized)
Section titled “Adding a Question (AEO-Optimized)”Questions are optimized for Answer Engine Optimization (AEO) - making content easily extractable by AI systems like ChatGPT, Perplexity, and Google AI Overviews.
Why Questions?
Section titled “Why Questions?”- One question per page - Each file answers one specific question
- Lead with the answer - Short answer appears in the first 100 words
- Easy AI extraction - Consistent, predictable format
- Clear URL structure -
/questions/how-do-i-handle-rate-limits/
How to Add a Question
Section titled “How to Add a Question”- Copy
_templates/question-template.mdto the appropriate subdirectory (e.g.,agentic-building-blocks/prompts/questions/orplatforms/claude/questions/) - Name the file as a URL-friendly version of the question:
how-do-i-handle-rate-limits.md - Fill in all sections:
- YAML frontmatter - Machine-readable metadata (includes
short_answerfor JSON-LD schema) - Question as H1 - The exact question being answered
- Short answer - 1-2 sentence direct answer (keep identical to frontmatter
short_answer) - Full answer - 2-4 paragraphs of detailed explanation
- Code example - Working, practical implementation
- Key takeaways - 3-5 bullet points
- Related questions - Links to related Q&A
- YAML frontmatter - Machine-readable metadata (includes
- Add a link to the appropriate category’s README.md index
Question Naming Convention
Section titled “Question Naming Convention”- Use lowercase with hyphens:
how-do-i-write-system-prompts.md - Frame as a question:
what-is-,how-do-i-,why-does-,when-should-i- - Be specific:
how-do-i-handle-openai-rate-limits.mdnotrate-limits.md
Question Template Structure
Section titled “Question Template Structure”---question: "How do I handle rate limits?"short_answer: "Implement exponential backoff with jitter, and use the retry-after header."platforms: [openai]topic: integrationsdate: 2026-01-24author: Your Name---
# How do I handle rate limits?
**Short answer:** [1-2 sentence direct answer]
## The Full Answer[2-4 paragraphs]
## Code Example[Working code]
## Key Takeaways- Bullet points
## Related Questions- Links to related Q&AAdding a How-To Guide
Section titled “Adding a How-To Guide”- Copy
_templates/how-to-template.mdto the appropriate subdirectory under the relevant section - Name the file descriptively:
stream-responses.md,handle-rate-limits.md - Fill in all sections of the template
- Add a link to the section’s README.md index
- Add platform tags to help readers find relevant content
How-To Naming Convention
Section titled “How-To Naming Convention”- Use lowercase with hyphens:
my-guide-name.md - Start with a verb when possible:
configure-,handle-,implement- - Be specific:
stream-openai-responses.mdnotstreaming.md
Adding a Topic
Section titled “Adding a Topic”- Copy
_templates/topic-template.mdto the appropriate subdirectory intopics/ - Name the file after the concept:
function-calling.md,context-windows.md - Fill in all sections of the template
- Add a link to the section’s README.md index
Topic Naming Convention
Section titled “Topic Naming Convention”- Use lowercase with hyphens:
my-topic-name.md - Use nouns or noun phrases:
prompt-caching.md,tool-use-basics.md
Writing Guidelines
Section titled “Writing Guidelines”Be Practical
Section titled “Be Practical”- Include working code examples
- Show real-world use cases
- Mention common pitfalls
Be Specific
Section titled “Be Specific”- State which platforms/models apply
- Include version numbers when relevant
- Note any prerequisites
Be Concise
Section titled “Be Concise”- Get to the point quickly
- Use bullet points for lists
- Keep code examples minimal but complete
Platform Tags
Section titled “Platform Tags”Use these tags to indicate which platforms a guide applies to:
openai- OpenAI GPT models and APIsclaude- Anthropic Claude modelsgemini- Google Gemini modelsm365-copilot- Microsoft 365 Copilotall- Applies to all platforms
Updating Indexes
Section titled “Updating Indexes”When you add a new file, update the README.md in that section to include a link:
## Guides
- [How to Stream Responses](./stream-responses.md) - `openai` `claude`- [How to Handle Rate Limits](./handle-rate-limits.md) - `all`Adding Setup Guides
Section titled “Adding Setup Guides”Setup guides go in getting-started/ and should:
- Focus on one tool per guide
- Include prerequisites
- Provide platform-specific instructions (macOS/Windows)
- Link to official documentation
- Include troubleshooting tips
Questions?
Section titled “Questions?”If you’re unsure where something belongs or how to structure it, check existing entries for examples.
About This Site
Section titled “About This Site”Hands-On AI is maintained by James Gray. It consolidates setup guides, course materials, and AI reference content from multiple repositories into one resource.