Skip to content
Back to skills

Init

ASecurity

Set up nauraiz-dev in this project: detect the stack and gate commands, write .claude/nauraiz-dev.json, a CLAUDE.md under 200 lines and the memory scaffold. Use once per repo, or to re-detect. Pass --local to try it in a shared repo without changing any tracked file, or --print to show every file instead of writing it. Not for day-to-day tasks.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentsgobashnodegit

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add BSSE23047/nauraiz-dev --skill init --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Init?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Init
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bsse23047-init/badge)](https://www.skillsdirectory.com/skills/bsse23047-init)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: init
description: "Set up nauraiz-dev in this project: detect the stack and gate commands, write .claude/nauraiz-dev.json, a CLAUDE.md under 200 lines and the memory scaffold. Use once per repo, or to re-detect. Pass --local to try it in a shared repo without changing any tracked file, or --print to show every file instead of writing it. Not for day-to-day tasks."
disable-model-invocation: true
allowed-tools: Bash(node "${CLAUDE_PLUGIN_ROOT}/scripts/init/detect.mjs" *) Bash(node "${CLAUDE_PLUGIN_ROOT}/scripts/show.mjs" *) Bash(node "${CLAUDE_PLUGIN_ROOT}/scripts/init/exclude.mjs" *) Read Write Edit Glob
---

# init

Adopt nauraiz-dev in the current repo. Get each template's text with `node "${CLAUDE_PLUGIN_ROOT}/scripts/show.mjs"
templates/<name>` (e.g. `templates/CLAUDE.md`). Never Read plugin files directly: project hooks may deny it.

Three limits apply to every step:

- Show a diff and wait for a yes before changing any file that already exists (not in
  `--print`, which writes nothing). New files can be written directly.
- Touch nothing outside `.claude/`, `CLAUDE.md` and `.gitignore`; `--local` is narrower (below).
- If a project hook blocks a step, stop and say which; never work around it.

## Modes

The mode comes from the arguments typed (`/nauraiz-dev:init --local`, `--print`); they combine, and with neither it is project mode.

- `--local`: for a shared repo whose tracked files you must not change. Touch only
  `.claude/nauraiz-dev.local.json`, `.claude/settings.local.json` and git's exclude file
  (through the script below); never `CLAUDE.md`, `.gitignore`, `.claude/settings.json` or any
  tracked file. Skip steps 4 and 5. State is always `none`. Then run
  `node "${CLAUDE_PLUGIN_ROOT}/scripts/init/exclude.mjs" .claude/nauraiz-dev.local.json .claude/settings.local.json .work/`
  so git ignores all three (the plan folder `.work/` too).
- `--print`: do every step, but write nothing and run no exclude; print each file's path
  and full content instead, plus the patterns that would go to `exclude.mjs` (it makes them
  repo-root-relative). For headless runs.

## Steps

1. Run `node "${CLAUDE_PLUGIN_ROOT}/scripts/init/detect.mjs" .` and show the JSON it
   prints. Do not guess past it: if `gate` is empty, say so; never invent gate commands.

2. Ask the user these questions in one message, each with a recommendation:
   - `state` (not in `--local`): `scaffold` (state files in `.claude/state/`, plans in
     `docs/superpowers/plans/`) or `none` (no state files; plans in `.work/tasks/` carry
     a Handoff). Recommend `none` if `hasWorkTasks` is true, otherwise `scaffold`.
   - `enforcement`: `advisory` (context only, never blocks), `guided` (blocks protected
     paths, asks outside the plan, warns once) or `strict` (blocks instead of warning).
     Recommend `guided`.
   - Only if `offeredGate` or `testOneShot` is non-empty (both modes): offer each
     `offeredGate` entry as an extra `gate` command, and `testOneShot` in place of the
     `test` command, which would watch forever. Use only what the user accepts.

3. Write `.claude/nauraiz-dev.json` from `templates/nauraiz-dev.json`. In `--local` with no tracked
   config, write the whole config (state `none`) to `.claude/nauraiz-dev.local.json`, no `$comment`:
   - `state` and `enforcement` from step 2; `gate`, `protectedPaths` and `sharedPaths` from detect;
     `branch.base` = `baseBranch`; `plan.dir` = `docs/superpowers/plans` for
     `scaffold`, `.work/tasks` for `none`.
   - Re-detecting (the file exists): start from it. `gate`, `protectedPaths` and `sharedPaths`
     are the union of existing and detected entries; never remove or rewrite an existing
     gate command or protected path. Show the diff.
   - `--local` with a tracked `.claude/nauraiz-dev.json`: never edit it, and do not write the
     whole config. Write to the local file (merged into an existing one)
     only the keys that differ from the tracked file: `mockupRoot`, an accepted extra gate
     entry, `enforcement` if chosen differently. Never copy `protectedPaths`, `sharedPaths` or gate entries the tracked
     file already has: local arrays replace the team's, so a copy would freeze them.
   - `scopeAsk`: see step 6.
   - No `{{` may remain. Keep `$comment` (project mode).
   - If the user named a mockup root or another machine-specific path, write it as
     `mockupRoot` to `.claude/nauraiz-dev.local.json`, never to the committed file: merged
     into the existing keys, and in `--local` as one key of the full config.
   - `--local`: merge into `.claude/settings.local.json`, keeping every existing key: set
     `enabledPlugins["nauraiz-dev@nauraiz-dev"]` to `true` and `extraKnownMarketplaces["nauraiz-dev"]`
     to `{ "source": { "source": "github", "repo": "BSSE23047/nauraiz-dev" } }`.
   - Project mode: make sure `.gitignore` ignores `*.local.json`; add the line if missing.
   - Project mode: if `.claude/settings.json` enables `nauraiz-dev@nauraiz-dev` but has no
     `extraKnownMarketplaces.nauraiz-dev`, propose adding it (GitHub repo
     `BSSE23047/nauraiz-dev`) so teammates who pull the settings can install it.

4. CLAUDE.md:
   - If `claudeMd.exists` is false, write `CLAUDE.md` from `templates/CLAUDE.md`.
   - If it is true, never replace it. Propose a diff that adds only the "Commands and
     gate" and "Session discipline" sections from the template (skip any the file already
     covers). If the result would pass 200 lines, say so and suggest what to move into
     `.claude/knowledge/`.
   - `{{stack}}`, `{{baseBranch}}`, `{{enforcement}}` and `{{planDir}}` are the values
     from detect and step 3. Fill the rest from the repo, not from guesses:
     `{{projectName}}` and `{{description}}` (one or two sentences) come from the README
     or manifest;
     `{{layout}}` is a short list of the top-level folders that matter, one line each;
     `{{gate}}` is one line per gate entry: `` - `name`: `command` ``, or "None yet: add
     commands to `gate` in `.claude/nauraiz-dev.json`."; `{{protectedPaths}}` are the
     config's paths in backticks; `{{rules}}` is one line per file in `.claude/rules/`
     other than `README.md` (`` - `.claude/rules/<file>` — <its heading> ``), or "None yet."
   - Keep the `{{#scaffold}}` or the `{{#none}}` block to match `state`, delete the
     other, and delete the marker lines themselves. No `{{` may remain.

5. If `state` is `scaffold`, create whichever of these are missing, copied from the
   templates of the same name, and leave existing ones alone:
   `.claude/knowledge/README.md`, `.claude/rules/README.md`, `.claude/state/session.md`,
   `.claude/state/backlog.md`, `.claude/state/completed.md`. For `none`, create none.

6. If `existingPreToolUseHook` is true, set `"scopeAsk": false` and say why (the project's own
   edit hook already asks; protected paths are still denied). Otherwise leave `"scopeAsk": true`.

7. Print every file written, changed or left alone, and anything still to fill in by hand. Next steps: commit
   these setup files on their own, through the base branch and before any task branch (a task's scope check
   would count them), then start a new session. In `--local` nothing needs committing: say so, that the files
   are excluded locally, and that the gate reaches Claude through session start.

8. Last, not in `--print` and not when `AskUserQuestion` is unavailable (headless): ask ONE yes/no question
   with it: "Suggest skills for this project's stack now? It needs network and never installs anything."
   Yes: invoke `/nauraiz-dev:find-skills` (Skill tool, skill `nauraiz-dev:find-skills`). No: say one line,
   "Run /nauraiz-dev:find-skills any time."

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.