# New Project

> Full project scaffolding. Create ops file, repo, CLAUDE.md, hooks, GitHub, repo-map entry.

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

---


# New Project Skill

Full scaffolding for a new project. Sets up ops file, creates project repo, configures hooks, and registers in repo-map.

## Phase 1: Project Details

Gather basic information:

**From Contract/Proposal:**
- Project name
- Client name
- Contract value (total)
- Start date
- Primary contact(s)

**Project Details:**
- Platform/technology (WordPress, custom React, etc.)
- Key deliverables (what are the 3-5 main things they're getting?)
- Milestone structure (how many phases? what are payment triggers?)
- Any integrations (Salesforce, Stripe, etc.)?
- Hosting/infrastructure needs?

## Phase 2: Create Project Ops File

Create `~/ops/projects/{project-name}.md`:

```yaml
---
name: {project-name}
client: {client-name}
type: {web-development, design, consulting, etc.}
status: active
---

# {Project Name} – {Client Name}

## Contract
- Value: ${total}
- Signed: {YYYY-MM-DD}
- Contact: {primary contact email}
- Payment method: {wire, ACH, check}

## Milestones
- **Milestone 1:** {Deliverables}
  - Value: ${amount}
  - Due: {YYYY-MM-DD}
  - Status: not-started
  - Deliverables:
    - Feature A
    - Feature B
    - Testing
  - Closing:
    - review_complete: false
    - client_approved: false
    - invoice_sent: false
    - payment_received: false

- **Milestone 2:** {Deliverables}
  - Value: ${amount}
  - Due: {YYYY-MM-DD}
  - Status: not-started
  - Deliverables:
    - [list]
  - Closing:
    - review_complete: false
    - client_approved: false
    - invoice_sent: false
    - payment_received: false

- **Milestone 3:** {Deliverables}
  - Value: ${amount}
  - Due: {YYYY-MM-DD}
  - Status: not-started
  - Deliverables:
    - [list]
  - Closing:
    - review_complete: false
    - client_approved: false
    - invoice_sent: false
    - payment_received: false

## Waiting On
(Nothing yet - project just started)

## Communication Log
- {YYYY-MM-DD}: Initial kickoff call

## Current Focus
Starting Milestone 1. Planning phase complete.

## Blockers
None currently.

## Recent Activity
- {YYYY-MM-DD}: Project contracted and initiated

## Notes
- {Any special context about this client/project}
```

## Phase 3: Create Project Repo

Create the project directory structure:

```bash
mkdir -p ~/projects/{project-name}/.claude/
mkdir -p ~/projects/{project-name}/docs/
mkdir -p ~/projects/{project-name}/work/
```

Initialize as git repo:

```bash
cd ~/projects/{project-name}
git init
git config user.email "{your-email}"
git config user.name "{your-name}"
```

## Phase 4: Create Project CLAUDE.md

Create `~/projects/{project-name}/.claude/CLAUDE.md`:

```markdown
# {Project Name}

Client: {Client Name}
Contract Value: ${total}
Status: Active

## Ops Integration

This project reads from central ops storage:

```
@-import ~/ops/projects/{project-name}.md
@-import ~/ops/projects/{project-name}/daily/{YYYY-MM-DD}.md
```

This workspace can reference:
- Project milestone status and deliverables
- Waiting_on items (blockers)
- Communication log
- Today's focus and blockers

## Skills

- **/done** – Project status update (fallback for when hooks miss context)

## Hooks

SessionEnd hook runs when you close this session:
- Scans git commits since last session
- Updates ~/ops/projects/{project-name}.md with activity
- Checks milestone completion
- Flags items ready for invoicing

See `.claude/hooks/SessionEnd.md` for implementation.

## Work Context

Milestone currently in progress: {Milestone Name}

Key deliverables this milestone:
- [Deliverable 1]
- [Deliverable 2]
- [Deliverable 3]

Timeline: Due {YYYY-MM-DD}

### Today's Focus

Read daily instructions from:
`~/ops/projects/{project-name}/daily/{YYYY-MM-DD}.md`

(Generated by /standup in business workspace)

### Blockers

Check `~/ops/projects/{project-name}.md` for current blockers and waiting_on items.

## Conventions

- Commit messages: Clear, specific ("Add user authentication" not "update")
- Branch naming: feature/{name}, fix/{name}, docs/{name}
- File organization: /work for in-progress, /docs for deliverables
- No secrets in repo (use .env for local, secrets manager for deployment)

## After You're Done

When closing this session:
1. Commit your work (`git add . && git commit -m "..."`)
2. Close the session
3. SessionEnd hook automatically updates ~/ops/projects/{project-name}.md

If hook fails (rare), run `/done` manually in business workspace to update status.

---

**Philosophy:** This workspace is scoped to the technical work. The ops file (~/ops/projects/{project-name}.md) tracks business state. They communicate but don't duplicate.

Daily standup in the business workspace reads the project ops file and generates daily instructions that appear here. You work. The system tracks.
```

## Phase 5: Create Project Instruction File

Create `~/projects/{project-name}/instruction.md`:

```markdown
# {Project Name} Setup

## Verification

Before starting work, verify:

1. **Ops file exists:** `~/ops/projects/{project-name}.md`
2. **CLAUDE.md loads context:** Check that @-import statements work
3. **SessionEnd hook is configured:** `.claude/hooks/SessionEnd.md` should exist

## SessionEnd Hook

This project has an automatic SessionEnd hook that:
- Reads git commits from this session
- Extracts activity summary
- Updates the ops file with recent work
- Checks if any milestones are complete
- Flags items ready for invoicing

To set up:
```bash
# The hook is installed at: .claude/hooks/SessionEnd.md
# Verify it exists and is enabled in .claude/settings.json
```

## Daily Standup Integration

Each morning, `/standup` in the business workspace:
1. Reads `~/ops/projects/{project-name}.md`
2. Generates `~/ops/projects/{project-name}/daily/{YYYY-MM-DD}.md`
3. This daily file is @-imported into your project CLAUDE.md

When you open this project workspace, you automatically see today's focus.

## Manual Update Fallback

If the SessionEnd hook misses something or doesn't run:
1. Go to business workspace
2. Run `/done`
3. Select this project
4. Describe what changed
5. It will update the ops file manually

## Quick Reference

- **Ops file:** `~/ops/projects/{project-name}.md`
- **Daily instructions:** `~/ops/projects/{project-name}/daily/{YYYY-MM-DD}.md`
- **Manual update:** `/done` skill in business workspace

---

**This is a technical workspace.** Business tracking happens in ~/ops/. Just focus on the work. The system tracks automatically.
```

## Phase 6: Create /done Skill

Create `~/projects/{project-name}/.claude/skills/done/SKILL.md`:

```yaml
---
name: done
type: skill
description: Manual project status update. Reads ops file, asks what changed, updates milestone/activity status.
allowed-tools:
  - Read
  - Write
  - Bash
  - Glob
  - Grep
disable-model-invocation: false
---

# Done Skill – {Project Name}

Manual fallback for updating project status. Used when SessionEnd hook doesn't capture context or you want to manually update.

## Load Project Context

```bash
cat ~/ops/projects/{project-name}.md
```

Show the user:
- Current milestone
- Deliverables and their status
- Waiting_on items
- Recent activity

## Ask What Changed

"What's different now compared to when we started this session?"

Listen for:
- Code completed ("built the payment integration")
- Deliverables ready for review ("Feature A is testable")
- Blockers encountered ("Waiting on their API documentation")
- Questions resolved ("Clarified their requirements about the admin panel")

## Update Project Ops File

Add to Recent Activity:

```yaml
recent_activity:
  - date: YYYY-MM-DD
    update: [What they did]
```

Update milestone status if relevant:

```yaml
milestones:
  - name: Phase 1
    status: in-progress  # or complete if finished
    deliverables:
      - Feature A: [status changed?]
      - Feature B: [status changed?]
```

Add to waiting_on if blocked:

```yaml
waiting_on:
  - what: Client feedback on Phase 1
    who: {Client Name}
    since: YYYY-MM-DD
    follow_up_interval_days: 7
```

## Detect Scope Creep

Ask: "Did they ask for anything beyond the contract?"

If yes:
- Document it: "Client requested X (out of scope)"
- Decide: Include it, log as change order, or defer?
- Update project file with scope notes

## Check Milestone Completion

If deliverables for this milestone are all done:

Update status to "ready-for-review":

```yaml
status: ready-for-review
```

Ask: "Should we notify the client that Phase 1 is ready for review?"

## Commit Changes

```bash
git add .
git commit -m "[Project Name] – {What changed}"
```

Then the SessionEnd hook will see the commit and update the ops file.

(Or this skill updates it directly if SessionEnd doesn't run.)
```

Create the file at `~/projects/{project-name}/.claude/skills/done/SKILL.md`.

## Phase 7: Update repo-map.json

Add the new project to `~/ops/config/repo-map.json`:

```json
{
  "projects": {
    "{project-name}": "/Users/{username}/projects/{project-name}"
  }
}
```

## Phase 8: Create Initial Commit

In the project repo:

```bash
cd ~/projects/{project-name}
echo "# {Project Name}" > README.md
git add -A
git commit -m "Initial project setup"
```

## Phase 9: GitHub (Optional)

If you're pushing to GitHub:

```bash
# Create repo on GitHub (private)
# Add remote:
git remote add origin https://github.com/YOUR_USERNAME/{project-name}.git
git branch -M main
git push -u origin main
```

Update `repo-map.json` with GitHub URL if desired.

## Project Checklist

Verify everything is set up:

- [ ] `~/ops/projects/{project-name}.md` created with contract details
- [ ] `~/projects/{project-name}/.claude/CLAUDE.md` created and loads ops file
- [ ] `~/projects/{project-name}/.claude/skills/done/SKILL.md` exists
- [ ] SessionEnd hook is configured
- [ ] `~/ops/config/repo-map.json` updated with new project
- [ ] Initial git commit made
- [ ] (Optional) GitHub repo created and remote added

## Starting the Project

When ready to work:

```bash
cd ~/projects/{project-name}
claude
```

This loads CLAUDE.md which @-imports the ops file and daily instructions.

You're ready to work. The system tracks automatically.

---

**Flow:**
1. Proposal accepted → Contract signed
2. `/new-contract` called
3. `/new-project` creates this scaffolding
4. Project appears in daily standup
5. Work normally, system tracks via hooks
6. Close session, hook updates ops file
7. Next morning standup includes this project's status

**Key files:**
- Business tracking: `~/ops/projects/{project-name}.md`
- Work context: `~/projects/{project-name}/.claude/CLAUDE.md`
- Daily instructions: `~/ops/projects/{project-name}/daily/{YYYY-MM-DD}.md` (generated by standup)

