> ## 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 <b>[hello@codecrafters.io](mailto:hello@codecrafters.io)</b>.
</Note>

## 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:

<Frame>
  <img className="w-full" src="https://mintcdn.com/codecrafters/qGKwe-_AIUAS3RUS/img/description.png?fit=max&auto=format&n=qGKwe-_AIUAS3RUS&q=85&s=d143aba8b6121be1151b7fa2b736de99" width="1376" height="722" data-path="img/description.png" />
</Frame>

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)

<Frame>
  <img className="w-full" src="https://mintcdn.com/codecrafters/rBHxsHriiZT92xcM/img/stages.png?fit=max&auto=format&n=rBHxsHriiZT92xcM&q=85&s=9cb3d93ba68b8080718dde8f10b7a625" width="1256" height="1118" data-path="img/stages.png" />
</Frame>

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](/contributors/authoring-challenges/pre-launching-your-challenge) your challenge! Contact [paul@codecrafters.io](mailto:mailto:paul@codecrafters.io) for help with setting this up.
