# Contributing to Python Playground

Thank you for helping make programming easier to learn. You do not need to be an expert to contribute: a beginner's question can reveal a confusing explanation.

## Ways to contribute

- Report an unclear sentence, missing prerequisite, or broken example.
- Add a prediction question, practice exercise, or debugging puzzle.
- Improve accessibility, navigation, or setup instructions.
- Add tests for runnable examples.
- Propose a lesson that fits the curriculum and teaching format.

## Teaching principles

1. Assume no prior knowledge unless the lesson explicitly says otherwise.
2. Explain new vocabulary before relying on it.
3. Prefer small, runnable examples over long code dumps.
4. Explain *why*, not just what to type.
5. Include common mistakes and how to diagnose them.
6. Never shame learners for mistakes or use artificial urgency.
7. Keep examples inclusive, safe, and practical.
8. Never claim a topic is mastered merely because a learner read it.

## Lesson checklist

- [ ] Clear goal and prerequisite list
- [ ] Curiosity hook or practical reason to care
- [ ] Prediction prompt
- [ ] Correct, runnable code
- [ ] Plain-language explanation
- [ ] At least two practice tasks of different difficulty
- [ ] Graduated hints that do not immediately reveal the answer
- [ ] Solution with reasoning
- [ ] Retrieval question connected to an earlier lesson
- [ ] Accessibility and proofreading review

## Pull request guidance

1. Keep a pull request focused on one improvement.
2. Explain the learner problem being solved.
3. Test code examples when possible.
4. Explain any new dependencies.
5. Critique the material, not the person.

## Code of conduct

Be kind, constructive, patient, and inclusive. Harassment, discrimination, insults, and gatekeeping are not acceptable. We want learners to feel safe asking basic questions.
