Skip to content
Back to skills

Project Baseline Setup

ASecurity

Scaffolds a new project with baseline engineering hygiene (README, .env.example, .gitignore covering secret files, a dependency lockfile check, an architecture-decision-record folder) and a lightweight security checklist, OR audits an existing project for what's missing and fills only the gaps. Safe to run on a brand-new empty repo or on a project someone else started, it detects what already exists and never overwrites real content. Use whenever the user says "set up a new project", "scaffol...

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 25, 2026
ai-agentspythongobashgitsecurity

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 3 files and shows the line behind each finding

Scanned September 25, 2026

npx -y skills add Saadaan-Hassan/baseline-skills --skill project-baseline-setup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Project Baseline Setup?

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

Security grade badge for Project Baseline Setup
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/saadaan-hassan-project-baseline-setup/badge)](https://www.skillsdirectory.com/skills/saadaan-hassan-project-baseline-setup)

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-baseline-setup
description: Scaffolds a new project with baseline engineering hygiene (README, .env.example, .gitignore covering secret files, a dependency lockfile check, an architecture-decision-record folder) and a lightweight security checklist, OR audits an existing project for what's missing and fills only the gaps. Safe to run on a brand-new empty repo or on a project someone else started, it detects what already exists and never overwrites real content. Use whenever the user says "set up a new project", "scaffold this repo", "start a new service", "add the baseline to this project", "audit this repo for missing setup", or "I just joined this project and want to check what's missing".
---

# Project Baseline Setup

One skill, two situations: a project that doesn't exist yet, and a project
that already exists but was never fully set up. Both are the same underlying
job, find what's missing against a small set of engineering and security
basics, and fill it in without disturbing anything that's already there.

## Step 1: scan first, always

Run the bundled scanner before creating or changing anything:

```bash
python3 <skill_dir>/scripts/scan_baseline.py <project_path>
```

It prints a JSON report: what project type it detected (from manifest files
like `package.json`, `pyproject.toml`, `go.mod`), and a `missing` list of
concrete gaps. It never modifies anything, it's a report.

Read the `missing` list. If it's empty, say so and stop, don't invent work.

## Step 2: fix the mechanical gaps directly

These are safe to create or fix without asking, because there's no real
content decision involved:

- **`.gitignore` missing secret patterns**: append the missing patterns
  (`.env`, `*.pem`, `*.key`, etc.) to the existing file, don't replace it.
- **`docs/adr/` directory missing**: create it with a one-line `README.md`
  explaining what an ADR is and a numbered template
  (`0000-template.md`: Context / Decision / Consequences / Status).
- **`BASELINE_CHECKLIST.md` missing**: copy
  `assets/BASELINE_CHECKLIST_TEMPLATE.md` into the project root as
  `BASELINE_CHECKLIST.md`, filling in the project name from context if you
  can infer it (e.g. from `package.json`'s `name` field).
- **Lockfile missing but a manifest exists**: don't generate one yourself
  (that requires actually installing dependencies), tell the user which
  command to run (`npm install`, `poetry lock`, `go mod tidy`, etc.) based on
  the detected manifest.
- **CI config missing**: this one needs a decision (which CI provider), ask
  or infer from context (a `.gitlab-ci.yml` already existing suggests GitLab,
  a GitHub remote suggests Actions). Offer a minimal starter workflow (lint +
  test + build) rather than a large one, it's easier to extend a small
  working pipeline than to trim a large broken one.

## Step 3: fix the content-dependent gaps with a draft, not a guess

These need real project context, don't fabricate detail you don't have:

- **README missing or a stub**: read whatever you can about the project
  (manifest `name`/`description` fields, existing source layout, package.json
  scripts) and draft a real README: what it is, how to run it locally, how
  to test it. Show the draft before writing it if the project already has
  *some* README content you'd be replacing, write directly only into a
  genuinely empty or near-empty file.
- **`.env.example` missing**: scan the codebase for environment variable
  reads (`process.env.X`, `os.environ["X"]`, `os.getenv("X")`, similar
  patterns per language) and list the ones you find, with placeholder values
  and a short comment on what each is for. If you can't find any real usage,
  say so rather than inventing plausible-looking variables.

## Step 4: report back

Summarize what you found, what you created automatically, and what still
needs a human decision (CI provider choice, whether to overwrite an existing
README, running the lockfile command). Point to `BASELINE_CHECKLIST.md` as
the ongoing record, this skill gets a project to a reasonable starting line;
the checklist is what keeps it honest as the project grows. For the fuller
set of rules behind each checklist item, see the `security-baseline` skill.

## Ground rules

- Never overwrite a file that already has real content in it. Append, create
  alongside, or ask, don't clobber.
- Never invent a decision that has real consequences (which CI provider,
  what the project is actually for) when you can ask or infer it instead.
- Re-running this skill on a project it's already touched should be a no-op
  apart from picking up genuinely new gaps, that's the whole point of
  scanning first.

Files in this skill

  • SKILL.md4.6 KB
  • assets/BASELINE_CHECKLIST_TEMPLATE.md2.6 KB
  • scripts/scan_baseline.py4.8 KB

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…