Skip to content
Back to skills

Project Init

FSecurity

Set up a project repo for the brain-ai workflow — a short CLAUDE.md and a .claude/settings.json that enables the brain-core plugin and denies secret reads — plus a portfolio entry for the brain. Triggers - "project init", "set up this repo", "add the kit", "onboard this project".

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 20, 2026
ai-agentsgobashdockerawsgitdatabase

Security analysis

F38/100
  • criticalAccesses sensitive system or user directories
  • criticalAccesses sensitive system or user directories
  • criticalReads or references SSH private keys
  • criticalReads or references SSH private keys
  • criticalReads or references SSH private keys

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

Scanned October 20, 2026

npx -y skills add laszewskimariusz/brain-ai --skill project-init --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Project Init?

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

Security grade badge for Project Init
[![Security: F — Skills Directory](https://www.skillsdirectory.com/api/skills/laszewskimariusz-project-init/badge)](https://www.skillsdirectory.com/skills/laszewskimariusz-project-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: project-init
description: Set up a project repo for the brain-ai workflow — a short CLAUDE.md and a .claude/settings.json that enables the brain-core plugin and denies secret reads — plus a portfolio entry for the brain. Triggers - "project init", "set up this repo", "add the kit", "onboard this project".
---
# project-init — the project kit

## Procedure
1. `git rev-parse --show-toplevel` — you must be at the repo root. No repo → ask whether to `git init`.
2. Gather facts. Read the repo first (`package.json`, Dockerfile, migrations, README, an existing CLAUDE.md); ask the owner only for the rest:
   - slug, name, goal in 1–2 sentences,
   - deploy target, databases, secret key names (never values), boundaries.
3. Write `CLAUDE.md` from the template, fitted to the repo, at most 100 lines. Describe what the code cannot tell; no file-tree tours.
4. If `CLAUDE.md` exists: do NOT overwrite — show the differences and write after approval.
5. Write `.claude/settings.json` from the template. It is a protected path:
   - interactive session — write it (the user approves); merge into an existing file (`extraKnownMarketplaces`, `enabledPlugins`, `permissions.deny`), delete nothing;
   - headless or no approval — do NOT work around it; print the merged JSON in the report.
6. Create `docs/spec/.gitkeep` and `docs/plans/.gitkeep`; add `.claude/settings.local.json` to `.gitignore`.
7. Print a portfolio entry for the brain's `portfolio.yaml` (slug, name, repo, workdir, stage, deploy, notes).
8. Report: created files, anything not written and why, next step `/brain-core:spec <first-feature>`.

## Rules
- Do not commit unless told to.
- No secrets in CLAUDE.md or settings — key names only.

## Template: CLAUDE.md
```markdown
# {{NAME}}

{{GOAL — 1–2 sentences: what it is, for whom, what value}}

- Slug: `{{SLUG}}` · brain-ai plugin: `brain-core` (enabled in `.claude/settings.json`)
- Shared knowledge (infrastructure, decisions) lives in the brain repo, not here.

## Stack
{{what is actually in the repo}}

## Commands
| What | Command |
|---|---|
| dev | `{{DEV}}` |
| test | `{{TEST}}` |
| typecheck / lint | `{{CHECK}}` |
| build | `{{BUILD}}` |

## Data and secrets
{{databases and services: where they run, which environment may be touched}}
- Secrets by key name only ({{KEY_NAMES}}); the value goes into a variable, never to the screen or into files.

## Deploy
{{where and how; "only when the owner says so"}}

## Boundaries
{{what not to touch: production database, generated files, invariants}}
- Never delete or weaken existing tests.
- Commit, push and deploy only when the owner says so.

## Done when
{{the checks this repo needs before work counts as finished}}

## Workflow
`/brain-core:spec <feature>` → `docs/spec/` → plan in `docs/plans/` → developer agent → reviewer agent → end-to-end check.
```

## Template: .claude/settings.json
```json
{
  "extraKnownMarketplaces": {
    "brain-ai": {
      "source": {
        "source": "github",
        "repo": "laszewskimariusz/brain-ai",
        "ref": "v4.0.1"
      }
    }
  },
  "enabledPlugins": {
    "brain-core@brain-ai": true
  },
  "permissions": {
    "deny": [
      "Read(**/.env)",
      "Read(**/.env.local)",
      "Read(**/.env.development)",
      "Read(**/.env.dev)",
      "Read(**/.env.production)",
      "Read(**/.env.prod)",
      "Read(**/.env.staging)",
      "Read(**/.env.stage)",
      "Read(**/.env.test)",
      "Read(**/.env.ci)",
      "Read(**/.env.preview)",
      "Read(**/.env.*.local)",
      "Read(**/.secrets)",
      "Read(**/.secrets.*)",
      "Read(**/*.pem)",
      "Read(**/*.p12)",
      "Read(**/*.pfx)",
      "Read(**/id_rsa)",
      "Read(**/id_ed25519)",
      "Read(**/id_ecdsa)",
      "Read(**/id_dsa)",
      "Read(~/.ssh/**)",
      "Read(**/.netrc)",
      "Read(**/.pgpass)",
      "Read(**/.git-credentials)",
      "Read(~/.aws/credentials)",
      "Bash(env)",
      "Bash(printenv*)"
    ]
  },
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "denyRead": [
        "./**/.env",
        "./**/.env.local",
        "./**/.env.development",
        "./**/.env.dev",
        "./**/.env.production",
        "./**/.env.prod",
        "./**/.env.staging",
        "./**/.env.stage",
        "./**/.env.test",
        "./**/.env.ci",
        "./**/.env.preview",
        "./**/.env.*.local",
        "./**/.secrets",
        "./**/.secrets.*",
        "./**/*.pem",
        "./**/*.p12",
        "./**/*.pfx",
        "./**/id_rsa",
        "./**/id_ed25519",
        "./**/id_ecdsa",
        "./**/id_dsa",
        "~/.ssh"
      ]
    },
    "autoAllowBashIfSandboxed": false
  }
}
```

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.