## Documentation Index

Fetch the complete documentation index at: [/llms.txt](https://docs.entire.io/llms.txt)

Use this file to discover all available pages before exploring further.

This tutorial shows how to use [Skills](https://github.com/entireio/skills) to explain code, investigate changes, search history, and hand work off between agents.

Skills are most useful once Entire has recorded session context and checkpoints. This tutorial creates that history as you go, so you can try the Skills even if you are starting fresh.

By the end, you will:

1. Understand what each Skill does
2. Install the Skills locally
3. Practice the exact prompts and commands to use
4. Build a tiny app so the Skills have real code to work against

## Skills

### session-handoff skill
Best for cross-agent handoffs, moving work to another agent, and summarizing recent session context.Example prompts:

```
hand off this session
hand off the codex session
prepare a handoff for another agent
```

Why it helps: saves time, prevents duplicate work, and preserves context.

### explain skill
Best for understanding why a function, file, or change exists.Example prompts:

```
/explain src/main.ts
/explain parseConfig
Explain why auth.ts exists
```

Why it helps: great for onboarding, reveals intent, and separates design decisions from accidental complexity.

### what-happened skill
Best for investigating a specific block of code or recent change.Example prompts:

```
what happened here: src/app.ts:15-32
what happened at src/app.ts:21
tell me why this code is like this
```

Why it helps: useful in review, helps debug regressions, and gives targeted provenance.

### search skill
Best for finding prior work, earlier prompts, checkpoints, or similar implementations.Example prompts:

```
search past work for rate limiting
find checkpoints about auth
have we done this before?
```

Why it helps: helps reuse prior work, surfaces decisions, and turns old history into something searchable.

## Prerequisites

Before using these Skills, make sure you have:

1. [Git installed](https://docs.entire.io/installation)  
2. A supported AI agent: [Claude Code](https://docs.entire.io/agents/claude-code), [Codex](https://docs.entire.io/agents/codex), [Copilot CLI](https://docs.entire.io/agents/copilot-cli), [Cursor](https://docs.entire.io/agents/cursor), [Factory](https://docs.entire.io/agents/factory-droid), [Gemini CLI](https://docs.entire.io/agents/gemini-cli), [OpenCode](https://docs.entire.io/agents/opencode), or [Pi](https://docs.entire.io/agents/pi)  
3. The [Entire CLI installed](https://docs.entire.io/installation)

This tutorial uses [Codex](https://docs.entire.io/agents/codex) for the examples. You can use these Skills with your preferred agent, including [Claude Code](https://docs.entire.io/agents/claude-code), [Gemini CLI](https://docs.entire.io/agents/gemini-cli), [OpenCode](https://docs.entire.io/agents/opencode), [Cursor](https://docs.entire.io/agents/cursor), [Copilot CLI](https://docs.entire.io/agents/copilot-cli), [Factory](https://docs.entire.io/agents/factory-droid), or [Pi](https://docs.entire.io/agents/pi).

## Install Skills

Choose the setup path that matches your tool:

### Codex
See the [Codex integration guide](https://docs.entire.io/agents/codex).

```
mkdir -p ~/.agents/skills
cd ~/.agents/skills
git clone https://github.com/entireio/skills.git entire
```

### Agent Skills
See the [Agent Skills homepage](https://agentskills.io/home).

```
npx skills add https://github.com/entireio/skills --all
```

### Claude Code
See the [Claude Code integration guide](https://docs.entire.io/agents/claude-code).

```
/plugin marketplace add entireio/skills
/plugin install entire
```

### Gemini CLI
See the [Gemini CLI integration guide](https://docs.entire.io/agents/gemini-cli).

```
gemini extensions install https://github.com/entireio/skills
```

## Install Entire

Install Entire by following the main [CLI installation guide](https://docs.entire.io/installation).

## Create a Project

We are going to build a tiny app called `bug-notes`.This project is enough to:

- generate history  
- make changes worth explaining  
- create [checkpoints](https://docs.entire.io/guides/checkpoints/overview) worth searching

Create the project:

```
mkdir bug-notes
cd bug-notes
npm create vite@latest . -- --template vanilla
npm install
```

Run it:

```
npm run dev
```

## Enable Entire

From inside `bug-notes`, run [`entire enable`](https://docs.entire.io/cli-reference/enable) for Codex and sign in:

```
entire enable -y
entire login
```

When run in a fresh project folder, `entire enable -y` initializes Git, creates the initial commit, creates a GitHub repo, and pushes it so checkpoints can be indexed.

If you are using a different agent, use the corresponding integration flow instead. See [Codex](https://docs.entire.io/agents/codex), [Claude Code](https://docs.entire.io/agents/claude-code), or [Gemini CLI](https://docs.entire.io/agents/gemini-cli).

At this point, your project is ready to record [session](https://docs.entire.io/glossary#session) context and [checkpoints](https://docs.entire.io/guides/checkpoints/overview).

## Build the App

Open the repo in your AI agent and give it a focused task.Suggested prompt:

```
Build a tiny bug tracker in this Vite app.
Requirements:
- Add a form with title and status
- Save bugs in local state
- Show a list of bug notes
- Allow filtering by open and fixed
- Keep the code simple and readable
```

Once the agent finishes, commit the result:

```
git add .
git commit -m "Build bug notes app"
git push
```

That commit is important because the Skills become much more useful once there is committed and pushed history plus [Entire checkpoint data](https://docs.entire.io/guides/checkpoints/store-checkpoint-data).

## Add History

The `search` skill is most valuable when there are multiple [sessions](https://docs.entire.io/glossary#session) with distinct concepts, not just one generic feature. Do these as separate chunks of work, then commit and push after each one.

### Persistence

Suggested prompt:

```
Add localStorage persistence so bug notes survive refresh.
Also add a small empty state when no notes exist.
```

Commit:

```
git add .
git commit -m "Add persistence and empty state"
git push
```

### Duplicate Detection

Suggested prompt:

```
Add duplicate bug detection.
If a user tries to add a bug note with the same title as an existing one, show an inline validation message and prevent the duplicate.
```

Commit:

```
git add .
git commit -m "Prevent duplicate bug entries"
git push
```

### Severity Badges

Suggested prompt:

```
Add a severity field with values low, medium, and high.
Show a colored severity badge in the bug list and allow filtering by severity.
```

Commit:

```
git add .
git commit -m "Add severity badges and filter"
git push
```

Now you have three distinct stories in history:

- persistence  
- duplicate detection  
- severity filtering

That gives `search` much better material than a single vague feature.

## Practice Skills

### Explain

Ask:

```
/explain src/main.js
```

Or:

```
Explain why the persistence logic exists
```

What you should notice:

- the skill is trying to connect the code to the original session context
- this is different from a normal code explanation, which only describes current behavior

### What Happened

Find a specific code range first:

```
nl -ba src/main.js | sed -n '1,220p'
```

Then ask:

```
what happened here: src/main.js:40-85
```

What you should notice:

- this is block-focused
- it is about provenance of a specific region
- it is ideal when a few lines look strange or surprising

### Search

Before this exercise, make sure `entire login` already worked in Terminal. `search` uses indexed checkpoint history, so give Entire a moment to index your pushed checkpoints before trying these queries.Start with a very specific query:

```
search past work for duplicate validation
```

If that is too narrow, try:

```
search past work for duplicate bug detection
```

Then try:

```
search past work for severity badges
```

Only after that, try the broader question:

```
have we done this before with persistence?
```

What you should notice:

- it searches [checkpoints](https://docs.entire.io/guides/checkpoints/overview), not just files
- it helps with memory across [sessions](https://docs.entire.io/glossary#session)
- it works best with concrete nouns and feature phrases, not broad words like `persistence` by itself
- the best demo queries are feature names, validation behavior, bug text, file names, or ticket IDs

### Session Handoff

Start with the summary request:

```
hand off this session
```

Or:

```
hand off the codex session
```

What you should notice:

- the skill creates a concise handoff summary so another agent can pick up the next task
- it is especially useful after a long build or debug session

For a more intentional transfer, use a two-step workflow. This example hands work to Claude Code, but you can replace Claude Code with any supported agent. Step 1: generate the handoff summary in your current agent:

```
Prepare a handoff for Claude Code. The next task is to add edit and delete actions for bug notes. Preserve the current vanilla JS structure and localStorage behavior.
```

Step 2: open the receiving agent and paste the handoff plus an explicit task brief:

```
Continue this project from the handoff below.

Your next task:
- add edit and delete actions for bug notes
- keep the app in plain vanilla JS
- preserve the existing localStorage behavior
- keep the code simple and readable
- make one commit when the feature is complete

Handoff:
[paste the handoff summary here]
```

This is the best tutorial pattern because it shows that:

- `session-handoff` packages the important context
- the user still controls the next objective
- the receiving agent gets both history and clear execution instructions

If you want the receiving agent to stay narrowly scoped, make the brief even more explicit:

```
Continue from this handoff.
Only do the next task: add delete support for bug notes.
Do not add tests or extra refactors.
Make one commit when done.

Handoff:
[paste handoff]
```

## Why Skills Help

In this tutorial, Skill prompting is stronger than normal prompting because it gives the agent a defined workflow instead of a vague question.

Explain code intent

`/explain src/main.js` is stronger than `Why is this code here?` because it tells the agent to investigate code intent with transcript-aware context.

Trace a code block

`what happened here: src/main.js:40-85` is stronger than `Why is this weird?` because it points to a specific block and asks for provenance.

Search prior work

`search past work for duplicate bug detection` is stronger than `Have we done this before?` because it gives the search Skill specific feature language to match.

Hand work off

`Prepare a handoff for Claude Code...` is stronger than `summarize this` because it names the receiving agent, the next task, and the key constraints.

The general pattern is simple:

- Normal prompting asks the agent to guess the method
- Skill prompting gives the agent both the goal and the method

That usually leads to better structure, better use of Entire history, and less back-and-forth.

## Troubleshooting

Skills are installed but do not trigger

Make sure:

- the repo is installed in the right discovery path for your tool
- the tool supports Skills or plugins
- you are using prompts that clearly invoke the skill

`search` or `explain` returns no transcript

Possible reasons:

- the code was created outside an Entire-tracked session
- you have not committed yet, or have not pushed yet for `search`
- you have not enabled Entire in the repo
- authentication or checkpoint configuration is incomplete

`search` works but feels underwhelming

That usually means one of these:

- the query is too broad, like `persistence` or `auth`
- there are not enough prior sessions yet
- your earlier sessions did not use distinctive feature language

To improve results:

- use more specific queries like `duplicate bug detection` or `severity badge filter`
- build 2 or 3 distinct features before testing the skill
- commit and push after each feature so the history is easier to traverse and index

`session-handoff` is not useful yet

That usually means the project has too little tracked history. Do another meaningful work session, then commit it.
