Noora
🎨 A design system for Swift CLIs and Phoenix apps
Install / Use
/learn @tuist/NooraREADME
Noora CLI
Noora is a Swift package providing terminal UI components for building beautiful command-line interfaces.
[!NOTE] The web component library has moved to the tuist/tuist monorepo (
noora/directory).
Quick Start
Installation:
.package(url: "https://github.com/tuist/Noora", .upToNextMajor(from: "0.15.0"))
Usage:
import Noora
Noora().yesOrNoChoicePrompt(
title: "Authentication",
question: "Would you like to authenticate?",
defaultAnswer: true,
description: "Authentication is required to use some CLI features."
)
The Noora CLI package provides Swift components for building beautiful terminal interfaces. It includes components for:
- Prompts: Interactive user input (yes/no choices, text input, single choice selection)
- Alerts: Status messages (success, warning, error notifications)
- Progress: Visual progress indicators (progress bars, step indicators)
- Text Styling: Consistent typography and formatting
Development
Prerequisites
- mise for tool management
Getting Started
# Install tools
mise install
# Build
mise run build
# Test
mise run test
# Lint
mise run lint
Contributors
Thanks goes to these wonderful people (emoji key):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <table> <tbody> <tr> <td align="center" valign="top" width="14.28%"><a href="https://finnvoorhees.com"><img src="https://avatars.githubusercontent.com/u/8284016?v=4?s=100" width="100px;" alt="Finn Voorhees"/><br /><sub><b>Finn Voorhees</b></sub></a><br /><a href="https://github.com/tuist/Noora/commits?author=finnvoor" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/VaishaliDesai"><img src="https://avatars.githubusercontent.com/u/16591961?v=4?s=100" width="100px;" alt="Vaishali Desai"/><br /><sub><b>Vaishali Desai</b></sub></a><br /><a href="https://github.com/tuist/Noora/commits?author=VaishaliDesai" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://nsvasilev.com"><img src="https://avatars.githubusercontent.com/u/17319991?v=4?s=100" width="100px;" alt="Nikita Vasilev"/><br /><sub><b>Nikita Vasilev</b></sub></a><br /><a href="https://github.com/tuist/Noora/commits?author=ns-vasilev" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/rmenezes"><img src="https://avatars.githubusercontent.com/u/1154679?v=4?s=100" width="100px;" alt="Raul Menezes"/><br /><sub><b>Raul Menezes</b></sub></a><br /><a href="https://github.com/tuist/Noora/commits?author=rmenezes" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/mikhailmulyar"><img src="https://avatars.githubusercontent.com/u/2234720?v=4?s=100" width="100px;" alt="Mikhail"/><br /><sub><b>Mikhail</b></sub></a><br /><a href="https://github.com/tuist/Noora/commits?author=mikhailmulyar" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Joannis"><img src="https://avatars.githubusercontent.com/u/1951674?v=4?s=100" width="100px;" alt="Joannis Orlandos"/><br /><sub><b>Joannis Orlandos</b></sub></a><br /><a href="https://github.com/tuist/Noora/commits?author=Joannis" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/zamderax"><img src="https://avatars.githubusercontent.com/u/175750746?v=4?s=100" width="100px;" alt="Zamderax"/><br /><sub><b>Zamderax</b></sub></a><br /><a href="https://github.com/tuist/Noora/commits?author=zamderax" title="Code">💻</a></td> </tr> <tr> <td align="center" valign="top" width="14.28%"><a href="http://sbryu.com"><img src="https://avatars.githubusercontent.com/u/87907656?v=4?s=100" width="100px;" alt="Ryu"/><br /><sub><b>Ryu</b></sub></a><br /><a href="https://github.com/tuist/Noora/commits?author=Ryu0118" title="Code">💻</a></td> </tr> </tbody> </table> <!-- markdownlint-restore --> <!-- prettier-ignore-end --> <!-- ALL-CONTRIBUTORS-LIST:END -->This project follows the all-contributors specification. Contributions of any kind welcome!
License
This project is licensed under the MIT License - see the LICENSE file for details.
Related Skills
clearshot
Structured screenshot analysis for UI implementation and critique. Analyzes every UI screenshot with a 5×5 spatial grid, full element inventory, and design system extraction — facts and taste together, every time. Escalates to full implementation blueprint when building. Trigger on any digital interface image file (png, jpg, gif, webp — websites, apps, dashboards, mockups, wireframes) or commands like 'analyse this screenshot,' 'rebuild this,' 'match this design,' 'clone this.' Skip for non-UI images (photos, memes, charts) unless the user explicitly wants to build a UI from them. Does NOT trigger on HTML source code, CSS, SVGs, or any code pasted as text.
openpencil
2.1kThe world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
openpencil
2.1kThe world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
ui-ux-pro-max-skill
60.9kAn AI SKILL that provide design intelligence for building professional UI/UX multiple platforms
