os-new-project
Create a new project. Sets up the project folder, creates the projects.md entry, links people and company, and generates the CLAUDE.md. Run this when starting any new project.
Install
mkdir -p .claude/skills/os-new-project && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/14753" && unzip -o skill.zip -d .claude/skills/os-new-project && rm skill.zipInstalls to .claude/skills/os-new-project
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Create a new project. Sets up the project folder, creates the projects.md entry, links people and company, and generates the CLAUDE.md. Run this when starting any new project.About this skill
New Project Setup
Walks through creating a new project from scratch. Output: a project folder, a populated CLAUDE.md, an entry in projects.md, and linked people/company records.
Step 1 — Project name (duplicate check)
Ask: "What's the project name?"
Before continuing, check projects.md for an existing entry with the same name (case-insensitive).
If a match is found, show:
A project with that name already exists. Please provide a different name.
Ask again. Do not proceed until the name is unique.
Step 2 — Project basics
Ask the following questions one at a time:
- "In one line — what's the project? (Goal comes next.)"
- "What's the primary goal? What does success look like?"
Step 3 — Project type
Ask:
Project or portfolio? (default: project)
1. Project — a single piece of work with a clear goal (default)
e.g., building an app, running a product launch, writing a report
2. Portfolio — a managed collection of similar items
e.g., a set of job opportunities, an ideas bank, a reading list
Type 1, 2, or "default" for project.
Record the answer as project or portfolio. Treat 1, default, or any clear "project" signal as project; treat 2 or "portfolio" as portfolio. This determines the folder structure created in Step 8.
If portfolio: also ask:
- "What do you call a single item in this collection? (e.g., opportunity, idea, article)" — record as the item name (singular, lowercase)
Step 4 — Personal or professional?
Ask:
Is this a professional or personal project?
1. Professional
2. Personal
Record the answer and add the corresponding tag (personal or professional) to the project.
Step 5 — Company (professional projects only)
Skip this step if the project is personal.
Read the companies/ folder at root. Present as a selectable list:
Is this project run for a business or organisation?
Select one, or add a new one:
○ Acme Corp
○ Globex Inc
○ [any other company files]
○ Add another
○ None / not applicable
If the user selects an existing company, link it.
If Add another: ask for the business name, then create companies/company-name.md with identity fields only (name, type, industry — rest blank).
If None / not applicable: skip.
Step 6 — Add the user (automatic)
No prompt. Always add the user as project lead by default.
Link the user's own identity file at people/[your-slug].md as project lead. If no profile exists yet, run /os-new-person first to create one.
If the user needs to be removed from a project later, they can ask Claude directly.
Step 7 — Existing contacts
Read the people/ folder at root (exclude TEMPLATE.md and README.md).
Present as a numbered list:
Who else is in this project? Type the numbers of anyone to add.
1. Alex Chen — VP Sales, Globex Inc
2. Sam Patel — Head of Customer Support, Globex Inc
3. Maya Rodriguez — Engineering Lead, Globex Inc
4. Marcus Webb — CPO, Globex Inc
5. Priya Sharma — Data Scientist, Globex Inc
6. Jordan Kim — Engineering Lead, Globex Inc
Comma-separated (1, 3, 5), a range (1-3), or "none" to skip.
Accept comma-separated numbers, ranges, or "none" / "skip". Record all selected people.
Step 8 — New contacts
Ask:
Add anyone new — name, title, and company (if not [project company]). Two or three is plenty; you can come back for more.
If yes, for each person collect:
- Name
- Title
- Company — if not provided, default to the project company (if one was selected in Step 5)
Important: Collect only these three fields. Do not ask follow-up questions about the person — no "what's their relationship to you", no "manager/peer/direct report", no seniority, no history. Relationship and role detail get captured later via /ctx-doc, /ctx-transcript, or by running /os-new-person directly.
Create a new file at people/firstname-lastname.md using TEMPLATE.md. Populate identity fields only. Leave summary and interaction history blank. Set project footprint to this project.
Do not use the word "stub". Tell the user:
Added [Name] to your contacts. You can fill in more detail after your first meeting.
Step 9 — Create the project
Do the following automatically, no further questions needed.
For both project and portfolio types:
a) Create the project folder structure
Folder name: lowercase, hyphenated (e.g. acme-corp-launch).
Create the directory tree (one mkdir -p with explicit paths — no brace expansion, so the command isn't flagged by the permission classifier):
mkdir -p \
projects/[project-name]/context \
projects/[project-name]/intelligence/chats \
projects/[project-name]/intelligence/docs/raw \
projects/[project-name]/intelligence/meetings/inbox \
projects/[project-name]/intelligence/notes \
projects/[project-name]/memory \
projects/[project-name]/outputs \
projects/[project-name]/people
Add .gitkeep files to the empty folders so they survive cloning and git operations:
intelligence/chats/.gitkeepintelligence/docs/raw/.gitkeepintelligence/meetings/inbox/.gitkeepintelligence/notes/.gitkeepmemory/.gitkeeppeople/.gitkeep
Switch the active session to the new project. The scaffold now exists, so it's a valid switch target. Write the project name (matching the ### [Project Name] heading written to projects.md in Step 9c) to [workspace-root]/.sessions/<session-id> (your Claude Code session ID is injected into your context by the SessionStart hook):
echo "[Project Name]" > .sessions/<session-id>
If you don't have a session ID in your context, fall back to writing .current-session:
echo "[Project Name]" > .current-session
This mirrors /os-start Step 2 and ensures any subsequent /os-save, /ctx-doc, or other skill writes to the correct project — without it, the session silently stays on whatever project was previously active.
Tell the user: Switched active session to [Project Name].
Write projects/[project-name]/context/README.md:
# Context
Project knowledge. Flat structure — no subfolders.
Name files semantically so their content is obvious from the filename (e.g. `q2-okrs.md`, `competitor-analysis.md`).
**Rule:** Stable, reference-only knowledge lives here. Active drafts live in `outputs/`.
Write projects/[project-name]/outputs/README.md:
# Outputs
Active work in progress. Flat structure — no subfolders.
**Rule:** If it's being edited, it lives here. When stable, move to `context/`.
Write projects/[project-name]/context/current-state.md using this template (substitute [Project Name] from Step 1, [One-liner] and [Goal] from the projects.md entry written in Step 9c, and [today] as YYYY-MM-DD). Mirrors the /os-save create-from-scratch template so future os-save runs find the expected structure.
---
project: [Project Name]
last-updated: [today]
updated-by: os-new-project
---
# Current State
The current snapshot of the project. Living synthesis.
_Updated by os-save, ctx-synthesise, and ctx-doc. Primary context loaded at session start._
---
## [Project Name]
[One-liner]
**Goal:** [Goal]
_Synced from `projects.md`. Edit there._
---
## Project Position
_Last updated: — via —_
**Where we stand:** —
**Primary goal:** —
**Key constraint or risk:** —
---
## What We Know From Documents
_Last updated: — via ctx-doc_
—
**Sources:** —
---
## Stakeholder Dynamics
_Last updated: — via ctx-synthesise_
**Current read:** —
**Key positions:** —
**Tensions:** —
**Who to watch:** —
---
## Standing Decisions
_Last updated: — via os-save_
| Decision | What was decided | Why it matters |
|----------|-----------------|----------------|
| — | — | — |
---
## In Flight
_Last updated: — via os-save_
- —
---
## Open Questions / Blockers
_Last updated: — via os-save_
- —
---
## Recent Changes
_Last updated: — via os-save_
- —
b) Write CLAUDE.md
Write projects/[project-name]/CLAUDE.md using this template, substituting fields from Steps 1–8:
# CLAUDE — [Project Name]
**Inherits from:** Root `/CLAUDE.md` (PM Operating System)
---
## Project
- **Name:** [Project Name]
- **Status:** Active
- **Started:** [today YYYY-MM-DD]
See `context/current-state.md` for description, goal, and current state (synced from `projects.md`).
---
## Company
[Company Name] — [link to company file, e.g. ../../companies/company-name.md]
(Or: `— (personal project)` if no company linked)
---
## Key People
See `people/` for project-level stakeholder profiles (auto-maintained by `/ctx-transcript` and `/ctx-doc`).
Current dynamics: `context/current-state.md` → Stakeholder Dynamics (auto-maintained by `/ctx-synthesise`).
---
## Current Focus
— add after first session
---
## Key Paths
- `context/` — project knowledge (flat, named semantically); `current-state.md` is the live read
- `outputs/` — work in progress
- `intelligence/` — meetings, docs, notes, chats (bulk import targets)
- `memory/` — session saves (`YYYYMMDD-HHMM.md`)
For portfolios, append a ## Portfolio block to CLAUDE.md:
---
## Portfolio
- **Item name:** [item name from Step 3] (singular)
- **Items folder:** `[item-name]s/` (pluralised)
- **Add skill:** `/os-new-item`
- **Tracker:** `TRACKER.md`
c) Add to projects.md
Append a new entry under ## Active in projects.md:
For a standalone project:
### [Project Name]
- **Type:** project
- **Status:** Active
- **One-liner:** [from Step 2]
- **Goal:** [from Step 2]
- **Folders:** `projects/[project-name]/`
- **Company:** [link to company file, or —]
- **Key people:** [linked list]
- **Started:** [today]
- **Last session:** [today]
For a portfolio:
### [Project Name]
- **Type:** portfolio
- **Status:** Active
- **One-liner:** [from Step 2]
- **Goal:** [from Step 2]
- **Folders:** `projects/[project-name]/`
- **Com
---
*Content truncated.*