install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/TerminalSkills/skills/ora" ~/.claude/skills/comeonoliver-skillshub-ora && rm -rf "$T"
manifest:
skills/TerminalSkills/skills/ora/SKILL.mdsource content
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
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
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
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()
stop the spinner with a status icon.info()
for custom symbols/text when the built-in statuses don't fit.stopAndPersist()- Update
during long operations to show progress.spinner.text - Ora is ESM-only since v6. Use
.import ora from 'ora' - In CI environments, ora falls back to static text (no animation).