agentskills.codes
OS

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.zip

Installs 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.
175 chars✓ has a “when” trigger

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:

  1. "In one line — what's the project? (Goal comes next.)"
  2. "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/.gitkeep
  • intelligence/docs/raw/.gitkeep
  • intelligence/meetings/inbox/.gitkeep
  • intelligence/notes/.gitkeep
  • memory/.gitkeep
  • people/.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.*

Search skills

Search the agent skills registry