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

# Quickstart

> Create, test, and deploy your first Terse project

<Steps>
  <Step title="Install Terse">
    ```bash theme={null}
    npx terse-cli install
    ```

    One command on a fresh machine: installs the CLI globally (when you confirm), syncs the official agent skills (`terse-create`, `terse-improve`, `terse-self-host`) into every coding agent the installer detects, and walks you through `terse auth login`. Run `terse update` later to refresh the CLI and skills.

    If you prefer to install only the CLI, use `npm install -g terse-cli` instead.
  </Step>

  <Step title="Scaffold a project">
    ```bash theme={null}
    terse init my-project
    ```

    `terse init` handles the full setup in one command:

    1. Scaffolds your TypeScript project files (`src/index.ts`, config, etc.)
    2. Installs dependencies
    3. Opens the browser to authenticate via `terse auth login`
    4. Checks your connected integrations and prompts you to add more if needed
    5. Runs `terse generate` to produce a typed SDK from your workspace

    After init, your project looks like this:

    ```text theme={null}
    my-project/
      src/
        index.ts              # your job definitions
        terse.generated.ts    # generated SDK entry point (do not edit)
        terse.generated/      # generated per-integration files (do not edit)
      package.json
      tsconfig.json
      .env.example            # copy to .env when you need project-level env vars
      .gitignore
    ```

    `terse auth login` during init stores CLI credentials in your **user config**, not in the project folder, so **`.env.example`** starts empty: copy it to **`.env`** and add whatever your own code needs. Neither Terse credential belongs there. Your workflow code receives a project-scoped `TERSE_PROJECT_KEY` automatically on every run, and the CLI reads `TERSE_API_KEY` from your user config. See [API key resolution](/reference/cli#api-key-resolution).

    In a coding agent with the Terse skills installed, you can also describe what you want (for example, `/terse-create build a workflow that summarizes new PRs and posts to Slack`) and let the agent scaffold, write, test, and deploy for you.
  </Step>

  <Step title="Write your workflow">
    Open `src/index.ts` and define a job. The scaffolded file includes a starter example. Your generated SDK gives you typed helpers for every integration you connected: trigger builders, skill constructors, resource constants, and deterministic tool wrappers.
  </Step>

  <Step title="Test locally">
    ```bash theme={null}
    terse test
    ```

    Runs your workflow locally against the Terse backend so you can verify it works before deploying.
  </Step>

  <Step title="Deploy">
    ```bash theme={null}
    terse deploy
    ```

    Your code is packaged, uploaded, and hosted serverlessly. Navigate to the link provided to monitor your workflow. [Learn more about how deployment works.](/hosting)
  </Step>
</Steps>

## What to do next

<CardGroup cols={2}>
  <Card title="Context as Code" icon="lightbulb" href="/context-as-code">
    Understand what `terse generate` produces and why it matters.
  </Card>
</CardGroup>
