本文へ移動
cccskills
無料GitHub で公開

scaffold-tui

Generate TUI screen/view with layout, keybindings, state management, and tests

インストール方法を見る

含まれるファイル(1)

  • SKILL.md4.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Context

Project {{project_name}} is a TUI application using {{stack}}. You will create a new screen/view "{{input.name}}" of type {{input.type}}.

Read AGENTS.md for conventions. Read existing views to understand patterns.

Instructions

  1. Analyze existing view patterns

    • Read existing view/screen files
    • Identify: TUI framework (bubbletea, ratatui/tui-rs, textual, blessed, ink, etc.)
    • Identify: component model (Model-View-Update, widgets, components)
    • Identify: styling approach (lipgloss, style objects, CSS-like)
    • Identify: navigation pattern (stack, tabs, router)
    • Note state management patterns
  2. Create view/model file

    • Path: according to project convention
      • Go (bubbletea): internal/ui/{{input.name}}.go or ui/{{input.name}}.go
      • Rust (ratatui): src/ui/{{input.name}}.rs
      • Python (textual): src/screens/{{input.name}}.py
      • Node (ink): src/components/{{input.name}}.tsx
    • Implement based on view type:
      • list: scrollable list with selection, filtering, sorting
      • detail: display item details with sections
      • form: input fields with validation, tab navigation between fields
      • dashboard: multi-pane layout with status/metrics
      • modal: overlay dialog with confirm/cancel
  3. Implement Model (state)

    • Define view state struct/class
    • Initialize with sensible defaults
    • Handle loading, ready, and error states
    • Manage cursor/selection position
  4. Implement Update (event handling)

    • Keybinding handling:
      • Navigation: arrow keys, j/k, tab, enter, escape
      • Actions: custom keys for view-specific actions
      • Global: q/ctrl+c to quit, ? for help
    • Window resize handling
    • Async data loading (if applicable)
  5. Implement View (rendering)

    • Layout: header, content area, footer/status bar
    • Responsive to terminal size
    • Styled text (colors, bold, borders)
    • Scrolling for content that exceeds viewport
    • Loading spinner/indicator
    • Empty state message
  6. Register view in navigation

    • Add to screen router/navigator
    • Setup transitions between views
    • Handle back navigation
  7. Create tests

    • Model initialization
    • State transitions on key events
    • Rendering output verification
    • Edge cases: empty data, very long text, small terminal

Script

#!/bin/bash
# Detect TUI framework
if [ -f "go.mod" ]; then
  if grep -q "bubbletea" go.mod 2>/dev/null; then
    echo "Framework: Bubble Tea (Go)"
    echo "View path: internal/ui/{{input.name}}.go"
    if grep -q "lipgloss" go.mod 2>/dev/null; then
      echo "Styling: Lip Gloss"
    fi
    if grep -q "bubbles" go.mod 2>/dev/null; then
      echo "Components: Bubbles"
    fi
  fi
elif [ -f "Cargo.toml" ]; then
  if grep -q "ratatui" Cargo.toml 2>/dev/null; then
    echo "Framework: Ratatui (Rust)"
    echo "View path: src/ui/{{input.name}}.rs"
  elif grep -q "tui " Cargo.toml 2>/dev/null; then
    echo "Framework: tui-rs (Rust)"
  fi
elif [ -f "pyproject.toml" ] || [ -f "requirements.txt" ]; then
  if grep -q "textual" pyproject.toml requirements.txt 2>/dev/null; then
    echo "Framework: Textual (Python)"
    echo "View path: src/screens/{{input.name}}.py"
  elif grep -q "urwid" pyproject.toml requirements.txt 2>/dev/null; then
    echo "Framework: Urwid (Python)"
  fi
elif [ -f "package.json" ]; then
  if grep -q '"ink"' package.json 2>/dev/null; then
    echo "Framework: Ink (React for CLI)"
    echo "View path: src/components/{{input.name}}.tsx"
  fi
fi

Validation

  • View file created and follows existing patterns
  • View renders correctly in terminal
  • Keybindings work as expected
  • Navigation to/from this view works
  • Responsive to terminal resize
  • Loading and error states handled
  • Empty state displayed when no data
  • Tests created and passing
  • Compile/typecheck passing
  • No flickering or rendering artifacts

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

anoa

無料

Drive a real browser from the command line — open pages, snapshot the interactive elements as refs, click and fill by ref, read text, run JS, screenshot. Use when a task needs a live browser: checking a page renders, walking a login or checkout flow, scraping something that only exists after JavaScript runs, or reproducing a UI bug.

日本語の概要は準備中です。原文の説明を表示しています。

porcupine-md/jonggrang152026年9月15日 更新

Run linters/typecheckers to calculate health score.

日本語の概要は準備中です。原文の説明を表示しています。

porcupine-md/jonggrang152026年9月15日 更新

Comprehensive UI/UX compliance check (A11y, performance, responsive).

日本語の概要は準備中です。原文の説明を表示しています。

porcupine-md/jonggrang152026年9月15日 更新

Infrastructure-first security audit (OWASP, secrets, dependencies).

日本語の概要は準備中です。原文の説明を表示しています。

porcupine-md/jonggrang152026年9月15日 更新

auth

無料

Setup authentication flow (register, login, session/JWT, middleware)

日本語の概要は準備中です。原文の説明を表示しています。

porcupine-md/jonggrang152026年9月15日 更新

Deep knowledge about deploying applications to AWS (EC2, ECS, S3, CloudFront, Cloud Run).

日本語の概要は準備中です。原文の説明を表示しています。

porcupine-md/jonggrang152026年9月15日 更新

porcupine-md のスキルをすべて見る

このスキルの問題を報告する