# 00 Repo Init

> Initialize a project repository with git init, a default branch, a bootstrap commit, CONTRIBUTING.md, and optionally the remote. Use when the user wants to init or set up a new repo, or publish to a remote. Not for committing, opening a PR, or tagging.

- Skill: `ai-driven-dev/00-repo-init` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add ai-driven-dev/00-repo-init`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ai-driven-dev/00-repo-init/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ai-driven-dev (https://skillmd.com/u/ai-driven-dev)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ai-driven-dev/00-repo-init

---


# Repo Init

> Status: experimental.

Initializes a project's repository locally and, on request, on the remote host, then returns the remote URL.

## Actions

| #   | Action    | Role                                                                                              | Input                           |
| --- | --------- | ------------------------------------------------------------------------------------------------- | ------------------------------- |
| 01  | `init`    | Resolve VCS config, `git init`, set the default branch, write `CONTRIBUTING.md`, bootstrap commit | cwd, default_branch, remote_url |
| 02  | `publish` | Create the remote repo on the resolved host and push, return its URL                              | cwd, non_interactive            |

Run `01 → 02`. `init` alone for local-only; `publish` after it to create the remote.
Before running an action, read its file in `actions/`, not only the table or assets.

## Transversal rules

- The local step is idempotent. If the target is already a git work tree, `init` does nothing and reports.
- `init` makes one bootstrap commit (`--allow-empty`) so `HEAD` exists and is pushable. The project's real first commit stays the commit skill's job.
- `publish` is outward-facing. It confirms before creating the remote unless `non_interactive` is set.
- The provider is open. Resolve the host and how to reach it (CLI, MCP, or API) from the VCS memory when present, else from the VCS tooling available in the environment. Never restrict to a fixed list or a fixed mechanism. `main` is the default-branch fallback.

## Prerequisites

- `git` on the PATH. For `publish`, the resolved host's tooling (CLI, MCP, or API) available and authenticated.

## Assets

- `assets/CONTRIBUTING.md`: the project-root `CONTRIBUTING.md` template.

