Skip to content
Development
Skill

/setup

First-run onboarding for nyann. Creates the user config directory, collects preferences through AskUserQuestion interactive pickers, and writes ~/.claude/nyann/preferences.json. TRIGGER when the user says "set up nyann", "configure nyann", "nyann setup", "onboard me", "first

From plugin
nyann
741 skills41 commands3 hooks

Claude Code

$ npx -y skills add thettwe/nyann --skill setup --agent claude-code

SKILL.md

setup.SKILL.md
name: setup
description: >
  First-run onboarding for nyann. Creates the user config directory,
  collects preferences through AskUserQuestion interactive pickers, and
  writes ~/.claude/nyann/preferences.json.
  TRIGGER when the user says "set up nyann", "configure nyann",
  "nyann setup", "onboard me", "first time using nyann", "initialize
  nyann", "nyann first run", "get nyann ready", "/nyann:setup".
  ALSO trigger when: the user runs any nyann command for the first time
  and ~/.claude/nyann/preferences.json does not exist — suggest running
  setup first, but don't block them.
  Do NOT trigger on "set up this project" or "bootstrap this repo" —
  those are bootstrap-project. Do NOT trigger on "check prereqs" — that
  is check-prereqs. This skill configures nyann itself, not a repo.

setup

> **CRITICAL**: This skill uses the `AskUserQuestion` tool for ALL user > choices. **NEVER ask questions as plain text.** Every user choice goes > through `AskUserQuestion` with the exact JSON shown below.

**Script paths:** nyann is a Claude Code plugin, NOT a CLI tool. Do NOT search for it via `which`, `npm list`, `pip list`, or `brew list`. All scripts are at the plugin root. Determine the plugin root from this SKILL.md's path (`<plugin_root>/skills/setup/SKILL.md`) — the scripts are at `<plugin_root>/bin/`. Use `bash <plugin_root>/bin/<script>` for all commands below.

Re-runnable: if preferences already exist, show current values and offer to update them.

Step 1: Status + prereqs (parallel, one turn)

Run both commands **in parallel** (single tool-call turn):

  • `bash <plugin_root>/bin/setup.sh --check --json`
  • `bash <plugin_root>/bin/check-prereqs.sh --json`

**Do NOT show the raw JSON to the user.** Parse the `prereqs` array and build **separate small tables by category**. Use pipe-delimited markdown (NO box-drawing characters, NO manual padding). Shorten version strings (e.g., `git version 2.50.1 (Apple Git-155)` → `2.50.1`).

Example output:

**Required**

| Tool | Status | Version |
|---|---|---|
| git | ok | 2.50.1 |
| jq | ok | 1.7.1 |
| bash | ok | 3.2.57 |

**JS / TS**

| Tool | Status | Version |
|---|---|---|
| node | ok | v25.9.0 |
| pnpm | ok | 10.13.1 |

**Python**

| Tool | Status | Version |
|---|---|---|
| python3 | ok | 3.14.4 |
| pre-commit | ok | 4.6.0 |
| uv | ok | 0.9.15 |

**Other**

| Tool | Status | Version |
|---|---|---|
| go | ok | 1.26.2 |
| cargo | missing | https://rustup.rs |
| gh | ok | 2.83.1 |
| gitleaks | ok | 8.30.1 |
| shellcheck | ok | 0.11.0 |

All hard prerequisites satisfied.

Group tools by: **Required** (kind=hard), **JS / TS** (node, npm, pnpm, yarn, bun), **Python** (python3, pre-commit, uv), **Other** (everything else). Skip empty groups. For missing tools, show the `hint` field instead of a version.

Then display a single combined message:

  • If `status == "configured"`: show current preferences as a table,

then ask "Want to update any of these?" If no, skip to Step 4.

  • If `status == "not_configured"`: show the welcome greeting, then

the prereqs table, then continue to Step 2 immediately:

> **Welcome to nyann!** Let's get you set up.

Continue to Step 2 — do NOT pause for prereqs.

Step 2: Quick or custom setup

**Call `AskUserQuestion`** — this is the first and possibly only picker:

{
  "questions": [
    {
      "question": "How would you like to configure nyann?",
      "header": "Setup",
      "multiSelect": false,
      "options": [
        { "label": "Quick setup (Recommended)", "description": "Use smart defaults: auto-detect stack & branching, conventional commits, GitHub CLI enabled, local docs" },
        { "label": "Customize", "description": "Choose each setting individually" }
      ]
    }
  ]
}
  • **Quick setup** → skip to Step 3 with all defaults.
  • **Customize** → continue to Step 2b.

Step 2b: Custom preferences (only if Customize)

Check `command -v gh` first. If gh is NOT installed, skip the GitHub CLI question and default to `--no-gh-integration`.

**Call `AskUserQuestion`** with up to 4 questions:

{
  "questions": [
    {
      "question": "What stack do you work with most often?",
      "header": "Stack",
      "multiSelect": false,
      "options": [
        { "label": "Auto-detect (Recommended)", "description": "nyann inspects the repo each time and picks the right profile" },
        { "label": "Next.js", "description": "nextjs-prototype profile — React + Next.js projects" },
        { "label": "FastAPI", "description": "fastapi-service profile — Python FastAPI services" },
        { "label": "Python CLI", "description": "python-cli profile — command-line Python tools" }
      ]
    },
    {
      "question": "Which branching strategy should nyann default to?",
      "header": "Branching",
      "multiSelect": false,
      "options": [
        { "label": "Auto-detect (Recommended)", "description": "nyann picks based on project size and type" },
        { "label": "GitHub Flow", "description": "Simple: main + feature branches" },
        { "label": "GitFlow", "description": "main + develop + feature/release/hotfix branches" },
        { "label": "Trunk-based", "description": "Short-lived branches, frequent merges to main" }
      ]
    },
    {
      "question": "Which commit message format should nyann enforce?",
      "header": "Commits",
      "multiSelect": false,
      "options": [
        { "label": "Conventional Commits (Recommended)", "description": "Enforces feat:, fix:, chore: etc. in commit hooks" },
        { "label": "Custom", "description": "No commit format enforcement" }
      ]
    },
    {
      "question": "Enable GitHub CLI integration for branch protection and PR helpers?",
      "header": "GitHub CLI",
      "multiSelect": false,
      "options": [
        { "label": "Yes (Recommended)", "description": "Enable branch protection audit and PR helpers via gh" },
        { "label": "No", "description": "Skip all gh-dependent features" }
      ]
Read more
@thettwe
Ships withnyann

ငြမ်း is Burmese for scaffolding. Nyann is the Claude Code plugin that picks expert git defaults for your stack — branching, working hooks (Husky / pre-commit.com / lefthook), commits, releases, CI, docs — then keeps the repo on those rails through every PR

Stars on GitHub

Momentum

stars in total
7
Star history of thettwe/nyann on GitHub, a chart by star-history.com

Other skills on nyann.

add-team-source

add-team-source

Register a git URL as a team-profile source so nyann can periodically sync and expose its profiles under a namespace. TRIGGER…

@thettwe@thettweInstall Skill
bootstrap-project

bootstrap-project

Bootstrap a fresh or existing repo with nyann. TRIGGER when the user says "set up this project", "initialize git workflow",…

@thettwe@thettweInstall Skill
check-prereqs

check-prereqs

Survey the machine and report which nyann features are usable right now. TRIGGER when the user says "is my machine ready for…

@thettwe@thettweInstall Skill
cleanup-branches

cleanup-branches

Prune local branches whose work is already merged into the base. TRIGGER when the user says "clean up branches", "delete merged…

@thettwe@thettweInstall Skill
commit

commit

Generate a Conventional Commits message from the staged diff and create the commit after user confirmation. TRIGGER when the user…

@thettwe@thettweInstall Skill
diagnose

diagnose

Bundle a redacted, support-grade snapshot of the current nyann state for inclusion in a bug report or support request. Combines…

@thettwe@thettweInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about setup.

Which coding agents can use setup?
setup installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.