# Skip challenges

Tracks have an optional setting to allow challenge skipping. This is useful when learners are stuck on a certain challenge or have partially completed a track and want to pick up where they left off.

## **Who can skip challenges?**

Regardless of any configuration, the following people can always skip challenges:

* All team members
* Track authors

Instructors can only skip challenges if they are also a team member or a track author. Otherwise, they follow the same rules as learners.

Learners can only skip challenges if you specifically enable that functionality.

{% hint style="warning" %}
If you enable skipping, learners will be able to skip every challenge in a track. You cannot turn on skipping for specific challenges.
{% endhint %}

### Skip button visibility

The **Skip** button is shown when:

* You are a team member or track author (owners, content creators, and members always see it), **or**
* `Allow skipping` is enabled **and** every challenge that has a check script also has a solve script.

If a challenge has already been completed, the Skip button is hidden and **Next** is shown instead.

## Before you begin

There are two requirements to enable challenge skipping for a track:

* You need to be a track author of the track.
* All challenges that have [check scripts](https://docs.instruqt.com/sandboxes/lifecycle-scripts#challenge-check-script) must also have [solve scripts](https://docs.instruqt.com/sandboxes/lifecycle-scripts#challenge-solve-script).

The below is an example of a track, where the Skip button will not be available on any of the challenges:

<table><thead><tr><th width="129">Challenge</th><th width="168">Has a Check script</th><th width="166.5">Has a Solve script</th><th>Note</th></tr></thead><tbody><tr><td>1</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td></td></tr><tr><td>2</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td></td></tr><tr><td>3</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td><span data-gb-custom-inline data-tag="emoji" data-code="274c">❌</span></td><td>This challenge will prevent skipping</td></tr><tr><td>4</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td></td></tr><tr><td>5</td><td><span data-gb-custom-inline data-tag="emoji" data-code="274c">❌</span></td><td><span data-gb-custom-inline data-tag="emoji" data-code="274c">❌</span></td><td>This challenge would not prevent skipping as there is no check AND no solve script</td></tr></tbody></table>

{% hint style="warning" %}
The 'skip' functionality will be disabled for all challenges if even one challenge has a check script but is missing its corresponding solve script.
{% endhint %}

## Enable challenge skipping

You can enable challenge skipping using the Web UI or the Instruqt CLI.

{% tabs %}
{% tab title="🌐 Web UI" %}

1. Click the track you want to enable skipping on.
2. In the **Settings** section, turn on the **Allow skipping** toggle.

{% hint style="info" %}
If you cannot toggle **Allow skipping**, ensure that every challenge with a check script also has a solve script.
{% endhint %}
{% endtab %}

{% tab title="💻 Instruqt CLI" %}

1. Open the `track.yml` file of the track you want to enable skipping on.
2. Add or adjust the `skipping_enabled` property:&#x20;

   ```yaml
   skipping_enabled: true
   ```
3. Save `track.yml` and push the changes to Instruqt:

   ```xml
   instruqt track push
   ```

{% endtab %}
{% endtabs %}
