> ## Documentation Index
> Fetch the complete documentation index at: https://docs.codecrafters.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Planning your challenge

> The following tips should help you build a great CodeCrafters challenge.

> [!NOTE]
>
> The CodeCrafters challenge authors program is invite-only. Interested in
> building CodeCrafters challenge? Write to us at **[hello@codecrafters.io](mailto:hello@codecrafters.io)**.

## 1. Evaluate challenge ideas

We recommend evaluating challenge ideas based on **(a)** how interesting they'd be to an experienced programmer, and **(b)** how well they fit into the "build your own x" format.

## 2. Write high-level descriptions of your challenge

Try to come up with descriptions of your challenge in this format:

![](https://mintcdn.com/codecrafters/qGKwe-_AIUAS3RUS/img/description.png?fit=max\&auto=format\&n=qGKwe-_AIUAS3RUS\&q=85\&s=d143aba8b6121be1151b7fa2b736de99)

Check our existing challenges for examples. The goal here is to give a user a quick overview of what they'll build and what they'll learn.

## 3. Build a challenge outline

Time to flesh things out a bit more and plan what each stage will cover.

Each stage should have:

1. a heading
2. a description, and
3. one of these difficulty levels, from the perspective of a proficient programmer:
   a. Very Easy (\< 5 minutes)
   b. Easy (5-10 minutes)
   c. Medium (30m-1h)
   d. Hard (> 1h)

![](https://mintcdn.com/codecrafters/rBHxsHriiZT92xcM/img/stages.png?fit=max\&auto=format\&n=rBHxsHriiZT92xcM\&q=85\&s=9cb3d93ba68b8080718dde8f10b7a625)

Here are some things to keep in mind when doing this exercise:

* Try to keep the first 2-3 stages at a relatively easy difficulty, they shouldn't take more than 5-10 minutes for a proficient programmer. At this point learners might be new to the CodeCrafters platform, so we don't want to overwhelm them.
* Break down stages wherever possible. If you can split a "Medium" stage into 3 "Easy" stages, do it.
* Ensure there's a reliable way to "test" the stage. How would you invoke the user's program, and how would you verify that their implementation is correct?

It's okay if you don't have 100% clarity on stages at the moment - you can always add/edit/remove stages later once you start building the tester program.

***

Once you've done the steps above, you're ready to [pre-launch](https://docs.codecrafters.io/contributors/authoring-challenges/pre-launching-your-challenge.md) your challenge! Contact [paul@codecrafters.io](mailto:mailto:paul@codecrafters.io) for help with setting this up.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.