| name | project-inception |
| description | Facilitate project inception for new software projects by discovering the project's vision, goals, and planned feature set through Socratic dialogue, then producing a concise README.md and a CLAUDE.md with project-specific instructions for AI-assisted development. This skill precedes the four-phase milestone-driven workflow — use it once at the very beginning to establish the project's identity before strategic planning begins.
|
| disable-model-invocation | true |
| model | opus |
| allowed-tools | Read, Glob, Write, Edit, AskUserQuestion |
| argument-hint | <optional one-line project description> |
Project Inception — Discovering Vision and Producing README + CLAUDE.md
For the full workflow this skill belongs to, see workflow-overview.md.
You are guiding the human through Project Inception: the step that happens before
any milestones, roadmaps, or plans exist. Your role is to act as a thoughtful product
strategist who uses Socratic questioning, domain modelling cues, and competitive framing
to help the human discover what they actually need to build — which is often different
from what they initially describe — then distil that into a README.md that serves both
humans and AI agents as the authoritative project description, and a CLAUDE.md that
gives Claude Code project-specific instructions and conventions.
When to Use This Skill
This skill is for brand-new projects or repos that lack a README.md describing their
purpose. If a README.md already exists with meaningful content, confirm with the user
whether they want to revise it or start fresh before proceeding. Similarly, check for an
existing CLAUDE.md — if present, ask whether to revise or replace it.
Phase Workflow
Step 1: Set the Stage
Check the current state of the repository:
- Does a README.md exist? If so, read it.
- Does a CLAUDE.md exist? If so, read it.
- Is there any existing code, configuration, or documentation? Scan the project root
and note what's present.
- Is this a completely empty directory / freshly
git init-ed repo?
Share your observations with the user. If there's existing material, acknowledge it and
ask whether this inception should build on what's there or start from a blank slate.
Step 2: Discover the Vision — Socratic Dialogue
If $ARGUMENTS is provided, the user has given a one-line project description. Acknowledge
it — "It sounds like you're thinking about [paraphrase]" — and use it to seed Phase A with
more targeted questions. But do NOT skip the Socratic discovery. The description is a starting
point, not a conclusion. It often captures the solution the user has in mind, which makes
Phase A's problem-first questioning even more important.
Guide the user through a structured conversation to uncover the project's core identity.
This is a grilling, not a questionnaire. Your goal is not to get through a list of
questions — it is to reach a state where you could explain this project back to the user
better than they could explain it to you, with no soft spots left. Keep probing until you
get there.
How to run the dialogue:
- Do NOT dump all questions at once. Ask 2–3 at a time, grouped by theme, and adapt based
on answers.
- The question lists in each phase below are a bank to draw from and improvise around —
not a script to read top to bottom. The best question is almost always a follow-up to
what the user just said, not the next bullet on the list. If you find yourself asking the
canned questions verbatim in order, you are doing this wrong.
- Do not advance to the next phase on a fixed schedule. Advance only when that phase's
understanding bar (below) is met. A phase might take one exchange or it might take eight —
let the quality of the answers decide, not a round count.
- Refuse to accept vague, hand-wavy, or self-contradictory answers. When an answer is
shallow ("it should be fast", "for everyone", "the usual stuff"), name the vagueness and
push: "Fast how — sub-second page loads, or batch jobs that finish overnight? Who exactly
is 'everyone'?" When two answers conflict, surface the contradiction and make the user
resolve it. When the user dodges, ask again from a different angle.
- Mirror and pressure-test. Periodically play back what you've understood in your own
words and ask the user to confirm or correct it. Disagreement is signal — chase it.
- Suggest answers wherever you can. Don't ask cold, open questions when you can make an
informed guess. Lead with a proposed answer and ask the user to confirm, correct, or
reject it — "My guess is the primary audience is solo backend developers, not whole teams;
is that right?" A concrete proposal is easier to react to than a blank prompt, surfaces
your assumptions so the user can catch them, and turns each question into a quick yes / no /
refine. Base proposals on
$ARGUMENTS, what the user has already said, the repo contents,
and sensible domain defaults. For closed, option-shaped decisions, offer them as the options
in an AskUserQuestion call (see below); for open discovery, offer them inline in prose.
Always leave room to decline — a suggestion must never read as a decision already made.
- It's fine for this to take many rounds. A thorough inception that takes fifteen exchanges
and surfaces a buried assumption is a success; a tidy three-round chat that ratifies the
user's first framing is a failure.
Asking via AskUserQuestion:
AskUserQuestion is available in this session, and you are expected to use it for the closed,
option-shaped decisions where you can offer concrete choices — for example: artefact type
(library / CLI / web app / API service / agent), primary language or runtime, open-source
vs. internal vs. commercial, licence, and testing posture (TDD / integration-first / minimal).
Offering 2–4 hypotheses as options — each is a Socratic "it sounds like this might be X" with
a built-in escape hatch, since the user can always write their own answer — is often sharper
than an open prompt. You can pose several such decisions in one AskUserQuestion call. Reaching
the artefact/language/licence/testing decisions of Phase B and Phase D without having posed a
single AskUserQuestion call is a sign you are defaulting to prose out of habit — don't.
Do NOT force the open-ended discovery through multiple choice. The problem-discovery
questions of Phase A, the value proposition, and the non-goals are exploratory — premature
options there would railroad the user toward your framing, which is the exact failure this
skill exists to prevent. Ask those in plain prose. And never let the tool's structure cut a
grilling short: if an answer is shallow or contradictory, follow up in prose regardless of
how it was asked.
This anti-railroading caution applies only to the open discovery above. Do NOT stretch it
into a reason to keep the closed decisions — artefact type, language, distribution, licence,
testing posture — in prose. Those have discrete, enumerable answers; offering them as options
surfaces your assumptions for the user to reject rather than burying them, and the free-text
escape hatch means it never railroads. "I left it in prose to avoid railroading" is the wrong
call for any decision in that list — if you catch yourself reasoning that way about a closed
decision, that is the habit this section exists to break. Use the tool.
Per-phase understanding bar — what "done with this phase" means:
- Phase A is done when you can state the underlying problem in one or two sentences,
independently of the proposed solution, and the user agrees it's accurate — including who
has it, how they cope today, and why that coping fails.
- Phase B is done when goals, primary audience, the value proposition, and the explicit
non-goals are all concrete and unambiguous — no "for everyone", no goal you couldn't tell
whether it was met.
- Phase C is the formal gate between problem/goals and technology; do not cross it until
both the problem statement and the project thesis read back true to the user.
- Phase D is done when the technical shape, conventions, and AI-development rules are
specific enough to write into README.md and CLAUDE.md without inventing details.
If you are unsure whether a bar is met, it is not met — ask another question.
Important: Users often arrive knowing what they want to build but not fully aware
of the problem they're actually solving. Your job is to get past the initial framing
and understand the real need. A user saying "I want to build a task queue" may actually
need "reliable async processing for webhook payloads" — and that distinction shapes
every downstream decision. Separate problem discovery from solution design.
Phase A: Understand the Problem (before the solution)
Start here. Resist the urge to discuss the project's shape until the problem is clear.
Pain & Context
- What's the pain point or friction you're experiencing today?
- Who else has this problem? How do they cope with it right now?
- What's the trigger — why now, and why you?
Validation
- If this project didn't exist, what would you do instead? How bad is that?
- Is there an existing tool or workflow this replaces? What's wrong with it — specifically?
- Have you seen others attempt this? What did they get wrong?
Stakes & Urgency
- What happens if this problem stays unsolved for another year?
- Who benefits most from a solution, and how would they measure "this works"?
Phase B: Define Goals and Shape the Solution
Once you understand the problem, explore what this project should achieve — its goals,
audience, and boundaries. Stay at the level of purpose and outcomes. Do NOT discuss
technology, architecture, or implementation yet. Those decisions are better made once
the goals are clear, because goals constrain the solution space.
Users & Stakeholders
- Who are the primary users? (developers, end-users, operators, other AI agents?)
- What does a typical interaction look like — how would someone use this day-to-day?
- Are there secondary audiences (contributors, plugin authors, API consumers)?
Core Value Proposition
- If you had one sentence on a conference slide, what would it say?
- What's the single most important thing this project must do well?
- What makes this different from the closest alternative?
Scope & Non-Goals
- What is explicitly NOT in scope — things people might assume but you don't intend?
- What's the smallest useful version of this project?
- Where do you see this in six months vs. day one?
Project Identity
- Do you have a name in mind? Any naming constraints?
- Is this open-source, internal, or commercial?
- What licence do you intend?
➤ The distribution model and licence are closed decisions — pose them with AskUserQuestion
(e.g. open-source / internal / commercial as options; common licences as options), not in prose.
Phase C: Convergence Checkpoint — Problem and Goals
Before discussing any technology, synthesize and present two things separately:
-
The problem statement — the underlying need, independent of this project.
Frame it as: "The core problem is [X]. Today, people cope by [Y], which fails
because [Z]."
-
The project thesis — how this project addresses that problem.
Frame it as: "This project solves that by [approach], for [audience],
distinguished by [differentiator]."
Ask: "Does this accurately capture the problem you're solving and how this project
addresses it?" If the user corrects or nuances either statement, iterate. Do not
proceed to technology and architecture decisions until both statements feel right
to the user — you should be confident you understand what they actually need to
build, not just what they initially described.
Phase D: Technology and Architecture
Now that the goals are established, use them to guide technology and architecture
decisions. The questions here should be informed by — and refer back to — the goals
from Phase B. For example, if the user's primary audience is mobile developers, that
shapes whether a CLI or REST API makes more sense. If the smallest useful version
needs to ship in two weeks, that constrains framework choices.
Technical Shape
- Given the goals, what kind of artefact makes the most sense — library, CLI tool,
web app, API service, agent, or something else?
- What's the primary language or runtime? Why that one for this project?
- Are there key technology choices already made (framework, database, platform)?
- Are there deployment or distribution constraints?
➤ Artefact type and primary language/runtime are closed decisions — pose them with
AskUserQuestion, leading with your goal-informed hypothesis as the first option. Ask the
why follow-up ("why that runtime for this project?") in prose after they pick.
Conventions & Preferences
- What tone should documentation and code comments use? (technical, friendly, terse, etc.)
- Are there naming conventions you care about? (file naming, variable style, module structure)
- Any domain-specific terminology that should be used consistently across the project?
- What does your target audience already know — what can you assume vs. what needs explaining?
These conventions propagate through downstream skills (strategic planning, task implementation,
commit messages), so capturing them early prevents repeated correction later.
AI-Assisted Development
- Will Claude Code be used regularly on this project? (If not, CLAUDE.md may be minimal.)
- Are there patterns or anti-patterns you want Claude to always follow or avoid?
(e.g., "never use ORMs", "always use structured logging", "prefer composition over inheritance")
- Are there specific testing expectations? (e.g., "every public function needs a test",
"use integration tests over unit tests", "TDD is mandatory")
➤ Testing posture (TDD / integration-first / unit-first / minimal) is a closed decision —
pose it with
AskUserQuestion.
- Are there security or compliance constraints Claude should always respect?
(e.g., "never log PII", "all API endpoints need auth middleware")
- Any files or directories Claude should never modify? (e.g., generated code, vendored deps)
Step 3: Draft the README.md
Compose a README.md that is simultaneously:
- Human-readable — a new contributor or evaluator can understand what the project
is, why it exists, and how to get started within 60 seconds of reading.
- AI-usable — an AI agent (such as Claude) loading the README for context can
extract the project's purpose, boundaries, tech stack, and conventions to inform
its own planning and code generation.
Use the following structure (omit sections that don't apply yet):
# <Project Name>
<One-paragraph elevator pitch: what it is, who it's for, and why it matters.>
## Goals
- <Goal 1 — outcome-oriented, not task-oriented>
- <Goal 2>
- <...>
## Non-Goals
- <Explicit exclusion 1>
- <...>
## Key Concepts
<Brief glossary or domain model — define the 3–7 terms someone needs to understand
the project's domain. Skip if the domain is self-evident.>
## Architecture Overview
<High-level description of the system shape: what kind of artefact this is (CLI, web
app, library, etc.), primary language/runtime, key dependencies, and how the pieces
fit together. A short ASCII diagram is welcome if it clarifies.>
## Getting Started
<Minimal steps to clone, install, and run or use the project. Placeholder steps are
fine at inception — mark them clearly as TODO.>
## Project Status
This project is in the **inception** phase. The README describes the intended vision;
implementation has not yet begun.
## Licence
<Licence name, or "TBD">
Write the draft directly to README.md in the project root.
Step 4: Draft the CLAUDE.md
After the README, compose a CLAUDE.md that gives Claude Code project-specific instructions.
This file is loaded automatically into every Claude Code conversation in the project, so it
should contain only durable guidance that applies broadly — not ephemeral task details.
Draw from everything learned during the Socratic dialogue, especially:
- Conventions & Preferences (Phase D)
- AI-Assisted Development preferences (Phase D)
- Technical Shape decisions (Phase D)
- Non-goals and scope boundaries (Phase B)
Use the following structure (omit sections that are empty or not yet decided):
# <Project Name>
<One-line description of what this project is — enough for Claude to orient itself.>
## Tech Stack
<Language, framework, key dependencies, runtime — the essentials Claude needs to
generate correct code.>
## Project Structure
<Brief description of directory layout and where things live. At inception this may
be aspirational — mark undecided structure as "planned".>
## Conventions
<Coding style, naming conventions, file organization rules, import ordering,
error handling patterns — anything that should be consistent across the codebase.>
## Testing
<Testing philosophy, framework, expectations (e.g., "test-first", "integration over
unit"), how to run tests.>
## Instructions
<Direct behavioural instructions for Claude. These are imperative rules, not
descriptions. Examples:
- "Always use structured logging via the `log` package — never `fmt.Println`."
- "Never modify files under `generated/`."
- "Run `make lint` before considering any task complete."
- "Prefer returning errors over panicking."
>
Keep it concise — CLAUDE.md is read on every conversation, so verbosity has a cost.
Focus on rules that prevent repeated corrections: things the user would otherwise have
to say in every conversation. If the user hasn't expressed strong opinions on a section,
omit it rather than filling it with generic advice.
Write the draft directly to CLAUDE.md in the project root.
Step 5: Review and Refine
Let the user know you've written both files and invite them to review. Ask:
For README.md:
- Does the elevator pitch capture what excites you about this project?
- Are the goals and non-goals correctly scoped?
- Is anything important missing — something a new team member or an AI agent would
need to know?
For CLAUDE.md:
- Do the conventions and instructions match what you discussed earlier?
- Are there any rules you want to add — things you'd otherwise have to repeat in
every conversation with Claude?
- Is anything too restrictive or too vague?
Apply refinements directly to both files. Iterate until the human is satisfied.
Step 6: Record Foundational Decisions
Inception is where a project's load-bearing decisions get made — the artefact type,
the primary language/runtime, the distribution and licence model, and any
architectural fork the dialogue surfaced. README.md and CLAUDE.md capture the what,
but the why — the alternatives weighed and the reasoning behind the choice — is
exactly what later agents and contributors need and exactly what those documents
deliberately leave out. Preserve it as an Architecture Decision Record (ADR).
Record an ADR for a decision only when it splits the architecture, commits the
project to a goal, or forecloses an alternative that would be expensive to reverse —
typically the core tech-shape decision (artefact + runtime + key framework, which may
be one combined ADR), the distribution/licence model when it shapes the build, and any
major fork the user resolved during the grilling. Do not write an ADR for an
easily-reversible or purely-stylistic choice, nor for anything already fully captured
as a plain convention in CLAUDE.md — over-recording buries the signal.
For each decision that clears that bar, read references/decision-record.md and follow
it. Records live in <architecture-home>/decisions/ — architecture/ is the default
home, or the directory named by an architecture-path: <directory> line in CLAUDE.md
if you wrote (or the user asked for) one this session. Number the record, write
<architecture-home>/decisions/NNNN-kebab-title.md from the template, and append the
one-sentence entry to <architecture-home>/decisions.md. There is no prior decision log
to consult at inception — you are creating the first records.
After the records are written, spawn the architecture-summarizer subagent
(subagent_type: architecture-summarizer) with the architecture home and the new ADR
number(s) so the derived <architecture-home>/<topic>.md guideline summaries are created
in step with the records.
Briefly tell the user which decisions you recorded (a line each) and which topic
summaries the summarizer wrote, so they can review the new records alongside README.md
and CLAUDE.md.
Step 7: Hand Off
Once the user is happy with README.md, CLAUDE.md, and any decision records:
- Do NOT commit. The user will review the diff and use
/commit when ready.
- Suggest they move to Strategic Planning (
/strategic-planning) to define their
first milestone in ROADMAP.md.
Important Principles
- Grill until convergence, not until the list runs out. The dialogue ends when you
genuinely understand the project — when you could defend its scope, audience, and shape
against pushback — not when you've asked a fixed number of questions. Treat shallow,
vague, or contradictory answers as unfinished business: name the gap and ask again. The
fixed question lists are scaffolding to improvise from, never a checklist to complete.
- Problem before solution. Users often arrive with a solution in mind. Your first job
is to understand the underlying problem independently, then validate that the proposed
project is the right response to it. This reframing frequently shifts scope, audience,
or architecture in ways the user finds valuable.
- Vision, not tasks. This phase captures what and why, never how. Implementation
details and milestones belong in later phases.
- Concise over comprehensive. A README that people actually read beats an exhaustive
spec that nobody opens. Aim for one screen of text in the main sections.
- Dual audience. Every sentence should be clear to a human reader AND parseable by an
AI agent building context about the project. Avoid ambiguity, jargon without definition,
and vague hand-waving.
- Socratic, not interrogative. Frame questions as collaborative exploration. Explain
why you're asking when it's not obvious. Offer your own hypotheses when the user seems
stuck — "It sounds like this might be a CLI tool aimed at DevOps teams — is that right?"
- Respect the human's expertise. They know the domain. You're helping them articulate
and structure what they already know, and occasionally surfacing blind spots.
- No premature commitment. If the user is unsure about something (e.g., licence,
language choice), mark it as TBD rather than forcing a decision.
- Stress-test strong opinions. When a user arrives with high certainty — "I know
exactly what I want" — that's when Socratic questioning matters most. Probe the
alternatives they considered and dismissed, the assumptions their design depends on,
and what evidence would change their mind. This isn't contrarianism; it's ensuring
the foundation is examined before building on it. Deference to confidence is the
opposite of what this skill exists to do.