Add terminal spinners with Ora. Use when showing loading indicators in CLI tools, displaying progress during async operations, or building polished command-line interfaces with status feedback.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add TerminalSkills/skills --skill ora --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ora?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/terminalskills-ora)More formats (shields.io, HTML) on the badges page.
---
name: ora
description: >-
Add terminal spinners with Ora. Use when showing loading indicators in CLI
tools, displaying progress during async operations, or building polished
command-line interfaces with status feedback.
license: Apache-2.0
compatibility: 'Node.js 16+'
metadata:
author: terminal-skills
version: 1.0.0
category: development
tags: [ora, cli, spinner, loading, terminal]
---
# Ora
## Overview
Ora creates elegant terminal spinners. Show progress during async operations (API calls, file processing, builds), then succeed/fail with a final status. Used by create-next-app, Vercel CLI, Angular CLI.
## Instructions
### Step 1: Basic Spinner
```typescript
import ora from 'ora'
const spinner = ora('Installing dependencies...').start()
try {
await exec('npm install')
spinner.succeed('Dependencies installed')
} catch (err) {
spinner.fail('Installation failed')
process.exit(1)
}
```
### Step 2: Multi-Step Operations
```typescript
async function deploy(env: string) {
const spinner = ora()
spinner.start('Building project...')
await build()
spinner.succeed('Build complete')
spinner.start('Running tests...')
const results = await runTests()
spinner.succeed(`${results.passed} tests passed`)
spinner.start(`Deploying to ${env}...`)
const url = await deployToCloud(env)
spinner.succeed(`Deployed to ${url}`)
spinner.start('Verifying deployment...')
await healthCheck(url)
spinner.succeed('Deployment verified ✓')
}
```
### Step 3: With Other Libraries
```typescript
import ora from 'ora'
import chalk from 'chalk'
const spinner = ora({
text: 'Processing files...',
color: 'cyan',
spinner: 'dots', // or 'line', 'arc', 'bouncingBar'
})
spinner.start()
spinner.text = `Processing ${chalk.bold('image-001.png')}...`
// ... after processing
spinner.text = `Processing ${chalk.bold('image-002.png')}...`
spinner.stopAndPersist({
symbol: chalk.green('✓'),
text: `Processed ${chalk.bold('42')} files in ${chalk.gray('3.2s')}`,
})
```
## Guidelines
- `succeed()` / `fail()` / `warn()` / `info()` stop the spinner with a status icon.
- `stopAndPersist()` for custom symbols/text when the built-in statuses don't fit.
- Update `spinner.text` during long operations to show progress.
- Ora is ESM-only since v6. Use `import ora from 'ora'`.
- In CI environments, ora falls back to static text (no animation).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!