Skip to content
Back to skills

Init

FSecurity

Bootstrap the QA runtime substrate into the current project (configs, scripts, fixtures, CLAUDE.md, permissions) and install dependencies. Run once per project after installing the QA Warden plugin.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 19, 2026
testingrustbashrailsgit

Works with

  • cli

Security analysis

F2/100
  • criticalPipes output to a shell interpreter
  • highPerforms destructive filesystem operations
  • criticalExfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study
  • criticalDownloads and executes remote scripts — classic supply chain attack
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 19, 2026

npx -y skills add its-magdy/qa-warden --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: F — Skills Directory](https://www.skillsdirectory.com/api/skills/its-magdy-init/badge)](https://www.skillsdirectory.com/skills/its-magdy-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
---
description: Bootstrap the QA runtime substrate into the current project (configs, scripts, fixtures, CLAUDE.md, permissions) and install dependencies. Run once per project after installing the QA Warden plugin.
argument-hint: "[--no-install] (skip npm/playwright install) | [--resync] (force-refresh toolkit-owned substrate in an already-scaffolded project)"
disable-model-invocation: true
---

You are bootstrapping this project to use the **QA Warden** plugin. The plugin ships
the *brain* (agents, skills); this command stamps the *body* (runtime
substrate) that a plugin cannot carry on its own.

## What to do

1. Run the deterministic scaffold script bundled with the plugin, targeting the
   current project root:

   ```bash
   "${CLAUDE_PLUGIN_ROOT}/bin/qa-scaffold" "${CLAUDE_PROJECT_DIR}" $ARGUMENTS
   ```

   The script is idempotent and **never clobbers** an existing file — re-running
   it only fills in what's missing.

   **`--resync` (repairing an already-scaffolded project):** because the default
   run is skip-if-exists, a plugin fix to a substrate file (`package.json`,
   `playwright.config.ts`, `scripts/prod-guard.*`, a pinned dependency, …) does
   **not** reach a project that was scaffolded before the fix — and the project
   deny-list blocks any agent from repairing it in place (F-015/F-016). Run
   `/qa-warden:init --resync` to force-overwrite **only the toolkit-owned substrate**
   from the current templates, backing up each changed file to `<file>.qa-bak`
   first, then reinstalling deps if `package.json`/lockfile changed. It never
   touches user-authored files (`.env`, a customized `CLAUDE.md`,
   `fixtures/test.ts`, or anything under
   `specs/`/`tests/`/`page-objects/`/`steps/`/`bugs/`). `/qa-warden:doctor`'s
   substrate-drift check tells you when a project needs this.

   **`--resync` is the whole upgrade — do not tell the user to follow it with a
   plain `/qa-warden:init`.** Both paths run the same permission merge. Two files are therefore touched that the
   list above does not cover, both additively and neither overwritten:
   `.claude/settings.json` (union of the permission arrays — it can add a rule
   but never remove one) and `.gitignore` (one appended `*.qa-bak` pattern, so
   the backups the resync itself writes are not offered up as new files).

2. Read the script's stdout. It reports, per file, whether it was `created` or
   `exists (skipped)`, and whether `git init` / `npm install` / browser install
   ran.

3. Summarize for the user what was stamped, then relay the script's `Next:`
   block **verbatim** — the scaffold already emits its commands in the namespaced
   `/qa-warden:` form (e.g. `/qa-warden:explore`, `/qa-warden:intake`), so relay them as-is; do not
   re-prefix or strip the namespace. The scaffold's heredoc is the single source
   of the next-steps list; do not maintain a separate copy here.

## Guardrails

- Do NOT overwrite `.env` if it already exists (it holds secrets).
- Do NOT overwrite a customized `CLAUDE.md`; the script skips it when present.
- If the project already has a `.claude/settings.json`, the script MERGES the
  permission allowlist/deny rules rather than replacing the file. The deny list
  is **safety-only** — it blocks destructive/dangerous operations (**every `rm`
  command** — the rule is `Bash(rm *)`, not just `rm -rf`, and deny rules cannot
  be interactively approved; `find … -delete` and `truncate` are denied too, so
  commands that must clean up do it WITHOUT those primitives: `/qa-warden:run mode=repeat`
  overwrites its own report files in place (`>`/`2>` truncate-and-rewrite), and
  `/qa-warden:retire` deletes through the allow-listed `scripts/retire-delete.sh` wrapper
  (the deny can't be bypassed inline — see F-031) — force-push, `git reset --hard`,
  `curl … | sh`, writes to
  `package.json` / `playwright.config.ts` / `package-lock.json` / `prod-guard.*`,
  reading `/etc`, and reading `.env`). `Read(.env)` also blocks `cat`/`head`/`sed`
  of it in Bash, so no agent can print the credentials into the transcript; the
  scripts that need them (`prod-guard.sh --list-targets`, `cli-fill-env.sh`,
  Playwright's dotenv) load it as subprocesses, which the rule does not touch.
  `.env` stays human-edited: agents cannot Read it, so they cannot Edit it either. Reading product source
  outside the QA repo is allowed (grey-box locator disambiguation); writes are
  scoped to the QA repo dirs.
- This command writes project files. The first time, the user may need to
  approve the writes / the trust dialog for the folder.

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.