Scaffold a new repository with the engineering-config hygiene the spine and rules assume. Use when starting a new project, initializing a repo, or "setting up" a web/backend or Android codebase. Lays down .gitignore (with secret patterns), CHANGELOG.md, docs/ stubs (PRD/ROADMAP/ADR), a CI quality-gate + release workflow, and the per-repo CLAUDE.md (§19); for Android, also copies the 7 Android subagents into .claude/agents/. Detects the stack or takes web|android explicitly. Never overwrites e...
Installs into .claude/skills of the current project.
Are you the author of New Repo?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/roadhero-new-repo)
---
name: new-repo
description: Scaffold a new repository with the engineering-config hygiene the spine and rules assume. Use when starting a new project, initializing a repo, or "setting up" a web/backend or Android codebase. Lays down .gitignore (with secret patterns), CHANGELOG.md, docs/ stubs (PRD/ROADMAP/ADR), a CI quality-gate + release workflow, and the per-repo CLAUDE.md (§19); for Android, also copies the 7 Android subagents into .claude/agents/. Detects the stack or takes web|android explicitly. Never overwrites existing files.
---
# New-repo scaffolder
Lays down the repo hygiene that `~/.claude/CLAUDE.md` (§9 stacked-PR, §10 reconciliation, §11 secrets, §6/§7 release/gate in the platform rule) and the agents assume exists — so their references (`CHANGELOG.md`, `docs/REQUIREMENTS.md`, the version source, CI) resolve instead of dangling.
## When to use
Starting or initializing a new project, or a repo that's missing the standard scaffolding. Ask the user `web` (TS/JS/Python/Go/…) or `android` if it isn't obvious from existing files (`build.gradle*`/`*.kt` → android; `package.json`/`pyproject.toml` → web).
## Rules
- **Never overwrite.** Check each target with `test -e`; if it exists, skip it and report "kept existing". The user's files win.
- **One stack per run.** Don't lay down both web and Android scaffolding in the same repo unless asked.
- **Fill, don't fabricate.** The §19 `CLAUDE.md` ships with TODO placeholders the user completes — do not invent versions, SDK levels, or compliance scope.
- **Report exactly** what was created vs. skipped, as a list.
## Procedure
1. Determine stack (detect or ask). Set `STACK=web|android`.
2. From this skill's `templates/`, copy `common/` + `<STACK>/` files into the repo (except `gitignore-extra.tmpl`, which step 3 appends), **skipping any that already exist**. Template files use a `.tmpl` suffix to avoid clobbering — strip it on copy (e.g. `gitignore.tmpl` → `.gitignore`, `<STACK>/CLAUDE.md.tmpl` → `./CLAUDE.md`). Workflow templates land under `.github/workflows/` (`gate.yml`, `release.yml`); `docs/` stubs under `docs/` (`REQUIREMENTS.md`, `ROADMAP.md`, and the seed ADR `common/0001-foundation.md.tmpl` → `docs/decisions/0001-foundation.md`).
3. **Merge the stack ignores.** `gitignore-extra.tmpl` is not a standalone file — append its contents to the `.gitignore` created in step 2 (idempotent: skip if those lines are already present). This is the one exception to never-overwrite, since `.gitignore` is meant to be extended per stack.
4. For **android**: also `mkdir -p .claude/agents` and copy the 7 files from `~/.claude/agents-android/` if present (or tell the user where to get them). For **web**: no local agents — it inherits the 15 global agents.
5. `git init` only if `.git` is absent. Stage nothing automatically — let the user review.
6. Print the created/skipped report and the 3 manual follow-ups: fill §19, set the version source, wire branch protection (§7.3).
## What gets laid down
**common/** (both stacks): `.gitignore` (secret patterns from §11), `CHANGELOG.md` (Keep-a-Changelog header), `docs/REQUIREMENTS.md`, `docs/ROADMAP.md`, and the seed ADR `docs/decisions/0001-foundation.md`.
**android/**: `version.properties` (versionCode/versionName source of truth), `.github/workflows/gate.yml` (Spotless/detekt/lint/unit/Roborazzi/compileRelease), `.github/workflows/release.yml` (tag↔versionName parity → signed build → GitHub Release), `CLAUDE.md` (§19; the same generic template as web — the Android specifics go into §19 when you fill it in).
**web/**: `.github/workflows/gate.yml` (format/lint/typecheck/test/build), `.github/workflows/release.yml` (tag↔version parity → publish), `CLAUDE.md` (§19, generic).
Both `CLAUDE.md.tmpl` files are byte-identical copies of `templates/CLAUDE.project.md`; the repo's quality gate (`CLAUDE.md` §19.3) diffs them so they cannot drift.
**`<STACK>/gitignore-extra.tmpl`** (both stacks): appended to `.gitignore` in step 3 — web adds `node_modules/`, `dist/`, `.next/`, `coverage/`, `*.tsbuildinfo`; android adds `.gradle/`, `build/`, `local.properties`, `*.apk`/`*.aab`, etc.
## Secret patterns the .gitignore enforces (§11)
`*.env`, `.env.*`, `*.pem`, `*.key`, `*.keystore`, `*.jks`, `**/secrets/`, `*.p12`, `google-services.json` (android), `credentials.json`, `service-account*.json`, `*.tfstate*`. The user adds project-specific paths.