---
title: open-slide init
description: Scaffold a new workspace.
---

```npm
npx @open-slide/cli init [directory]
```

If `directory` is omitted, the scaffolder uses the current folder. If it's
provided and doesn't exist, it's created.

## Flags

| Flag                      | Default       | Description                                                              |
| ------------------------- | ------------- | ------------------------------------------------------------------------ |
| `-f, --force`             | off           | Scaffold into the target even if it's not empty.                         |
| `-n, --name <name>`       | folder name   | Override the generated `package.json` name.                              |
| `--use-npm`               | auto-detected | Install with npm.                                                        |
| `--use-pnpm`              | auto-detected | Install with pnpm.                                                       |
| `--use-yarn`              | auto-detected | Install with yarn.                                                       |
| `--use-bun`               | auto-detected | Install with bun.                                                        |
| `--no-install`            | off           | Skip dependency installation. You'll have to run `install` yourself.     |
| `--no-git`                | off           | Skip `git init` and the initial commit.                                  |
| `--locale <code>`         | prompted      | Slide UI language. One of `en`, `zh-TW`, `zh-CN`, `ja`.                  |

When no `--use-*` flag is passed, the scaffolder reads
`npm_config_user_agent` (set by your launcher) to pick `pnpm`, `yarn`, or
`bun`, and falls back to `npm` otherwise. Pass an explicit flag to force a
specific manager — handy in CI or when `npx` was run under a different
agent than the one you actually want to use.

When `--locale` is omitted, an interactive run asks you to pick a language
and writes the matching preset into `open-slide.config.ts` (see the
[Locale reference](/docs/reference/locale)). Non-interactive runs default
to `en`.

## What it generates

```text
my-deck/
├── slides/
│   └── getting-started/
│       └── index.tsx       # starter slide
├── themes/                 # empty
├── open-slide.config.ts    # framework config
├── CLAUDE.md               # mirrors AGENTS.md
├── AGENTS.md               # agent rules
├── package.json
├── tsconfig.json
└── netlify.toml / vercel.json   # one-click deploy configs
```

## After init

```npm
cd my-deck
npm install
npm run dev
```

The dev server boots, opens the slide browser, and you're ready for your
agent to take over.
