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 when the user says "add a team…
Codespaces hostRequirements.storage (e.g. `16gb`, `32GiB`). Default unset.
$ npx -y skills add thettwe/nyann --skill gen-devcontainer --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/gen-devcontainerContext preview
The summary Claude sees to decide when to auto-load this skill.
Codespaces hostRequirements.storage (e.g. `16gb`, `32GiB`). Default unset.
name: gen-devcontainer
description: >
Generate a `.devcontainer/devcontainer.json` keyed to the project's
primary language so `gh codespace create` (or VS Code's "Reopen in
Container") gives anyone on the team a ready-to-go env with the
right runtime, GH CLI, git-lfs, and language-tier VS Code
extensions pre-installed. Preview-by-default; idempotent on apply
(no-op on identical bytes, diff-and-refuse on divergence unless
`--force-overwrite`).
TRIGGER when the user says "add a devcontainer", "set up
codespaces", "scaffold devcontainer.json", "reopen in container",
"configure dev environment", "containerized dev env", "make this
work in codespaces", "add VS Code container", "wire up
devcontainer", "/nyann:gen-devcontainer". Also trigger when a user
asks "how do I run this in Codespaces" and there's no
`.devcontainer/` directory yet.
Do NOT trigger on "build a Docker image for production" — that's
a Dockerfile concern outside devcontainer scope. Do NOT trigger on
"fix my devcontainer build" — that's debugging an existing setup,
not generating one (read the file with the user instead).
arguments:
- name: language
description: Primary language — one of node, python, go, rust, dart, java, dotnet, php, ruby, swift, elixir, cpp. Maps from StackDescriptor.primary_language (typescript/javascript → node, csharp → dotnet).
- name: name
description: Devcontainer display name (surfaced in 'Open in Container' picker). Default is the repo basename when --target is supplied, otherwise `<language>-devcontainer`.
optional: true
- name: target
description: Path to the repo. Required only when `--apply` is set.
optional: true
- name: apply
description: Write the devcontainer.json to `<target>/.devcontainer/devcontainer.json`. Default is preview-to-stdout.
optional: true
- name: force-overwrite
description: Overwrite an existing devcontainer.json whose content differs. Without it, the script prints a diff and exits 3.
optional: true
- name: port
description: Repeatable. Forward a port from the container to the host (1-65535). Common picks - 3000/4200/5173 web dev, 8000/8080 APIs.
optional: true
- name: feature
description: Repeatable. Extra devcontainer feature ref to merge onto the base set (gh CLI, git-lfs, common-utils). Always include a version pin.
optional: true
- name: extension
description: Repeatable. Extra VS Code extension ID (`publisher.extension` format) to merge onto the per-language base set.
optional: true
- name: post-create-command
description: Override the default per-language postCreateCommand. Empty string disables postCreateCommand entirely.
optional: true
- name: cpus
description: Codespaces hostRequirements.cpus (2-32). Default unset (lets Codespaces pick).
optional: true
- name: memory
description: Codespaces hostRequirements.memory (e.g. `4gb`, `8GiB`). Default unset.
optional: true
- name: storage
description: Codespaces hostRequirements.storage (e.g. `16gb`, `32GiB`). Default unset.
optional: trueWraps `bin/gen-devcontainer.sh`. Emits a devcontainer.json; preview- by-default; idempotent on apply.
directory yet.
nyann (base image tags + extension lists shift with the `snapshot_version` comment in the file).
devcontainer (use `--port 3000 --cpus 4 --memory 8gb`).
different concern; devcontainer.json is dev-environment only.
existing file with them; this skill generates fresh, not diagnoses.
works under JetBrains' Dev Containers plugin and `devcontainer open` (CLI), but flag the broader VS Code-first defaults.
Read `StackDescriptor.primary_language` from `bin/detect-stack.sh`:
| StackDescriptor.primary_language | --language | |---|---| | `typescript` / `javascript` | `node` | | `python` | `python` | | `go` | `go` | | `rust` | `rust` | | `dart` | `dart` | | `java` / `kotlin` | `java` | | `csharp` / `dotnet` | `dotnet` | | `php` | `php` | | `ruby` | `ruby` | | `swift` | `swift` | | `elixir` | `elixir` | | `cpp` / `c` | `cpp` |
For polyglot monorepos (`workspaces[]` present), pick the language of the most-important workspace OR ask the user — running multiple devcontainers from a single repo is uncommon and confusing.
Always preview first. Show the rendered JSON; wait for confirmation:
bin/gen-devcontainer.sh --language python --name my-app
Then on confirmation:
bin/gen-devcontainer.sh --language python --name my-app \ --target . --apply
If the destination already matches: log "unchanged" and exit. If it differs: print the unified diff to stderr, exit 3, prompt the user before re-running with `--force-overwrite`.
`.devcontainer/devcontainer.json` containing:
exist (well-maintained, security-scanned, multi-arch). Vend
ငြမ်း 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
Repo: thettwe/nyann
Register a git URL as a team-profile source so nyann can periodically sync and expose its profiles under a namespace. TRIGGER when the user says "add a team…
Bootstrap a fresh or existing repo with nyann. TRIGGER when the user says "set up this project", "initialize git workflow", "bootstrap this repo", "scaffold…
Survey the machine and report which nyann features are usable right now. TRIGGER when the user says "is my machine ready for nyann", "what do I need to…
Prune local branches whose work is already merged into the base. TRIGGER when the user says "clean up branches", "delete merged branches", "prune local…
Generate a Conventional Commits message from the staged diff and create the commit after user confirmation. TRIGGER when the user says "commit these changes",…
Bundle a redacted, support-grade snapshot of the current nyann state for inclusion in a bug report or support request. Combines explain-state + doctor + git…