Starting A New Project logo

Starting A New Project

Organization
JetBrains
starting-a-new-project

Use when the workspace is empty, has no code, and the user brings a raw project idea. Normally reached via setting-up-a-project; not for an existing project.

Overview

PublisherJetBrains
Repositorythinkrail
Skill namestarting-a-new-project
Stars
514
Forks
42
Bundled files
Instructions only
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by JetBrains on GitHub. Read the source before you install it.

Installation

Install the Starting A New Project AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/JetBrains/thinkrail/tree/main/packages/pi-thinkrail-workflow/skills/starting-a-new-project
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/JetBrains/thinkrail.git /tmp/thinkrail
mkdir -p .claude/skills
cp -r /tmp/thinkrail/packages/pi-thinkrail-workflow/skills/starting-a-new-project .claude/skills/starting-a-new-project
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Starting A New Project in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Starting A New Project on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Starting A New Project is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Starting a new project

The workspace is empty: no code, no decisions. Turn the user's idea into one clear, living product document — goal-and-requirements.md — then use brainstorming only for later features that still require a product or design choice.

Hold the writing-specs bar. Read that concept skill before saving anything — it carries the short / honest / on-rails rules and the goal-doc shape every section you save must meet.

Method

  1. Build on what's already said. Never re-ask what the request already told you.
  2. Infer, then confirm — propose a concrete draft and let the user correct it; a suggestion beats an open question. Compose ask_user_question rounds per the asking-user-questions concept skill (read it before the first round — it carries the round, option, confirmation, and degradation norms).
  3. Smallest useful first build. It is smaller than the user expects; every capability in it must justify itself. Ideas cut from it are handed back to the user, not saved (see writing-specs).
  4. Save incrementally. Create the file as soon as the first section is settled, then add each confirmed section in template order. Don't batch; don't invent unconfirmed content.
  5. A skipped question is not a blocker — proceed on the current model and note real gaps inline.

Working model (infer from the request; never ask these directly)

audience:   personal | public | both        domain: what space this is in
tech:       stack mentioned, or null         scope:  small | large
depth:      light | standard | full          creator_is_user: does the maker use it?

depth scales the document: light = a one-liner idea → a few lines; full = named competitors / multiple user types → a full PRD. It can only grow during the conversation, never shrink.

Fast path — pre-filled brief

If the request already reads like a spec (several headings or a multi-section brief), parse it, treat those sections as confirmed, save them immediately, and only pursue what's genuinely missing and required by depth. Don't ask the user to confirm what they already wrote. Save in the goal-doc shape, not the brief's: a version or roadmap split (MVP / v1 / v2 / later) becomes Capabilities for what is in scope and Non-Goals only for what the brief rules out by decision; the rest goes back to the user unsaved (writing-specs). The one always-offered extra is alternatives research (below).

Flow

  1. Orient — one line: "Let's nail the goal and scope, then I'll save it as goal-and-requirements.md."
  2. Overview — infer it (depth-sized: a sentence → a paragraph naming what it replaces) and confirm.
  3. Problem — one tailored question referencing the domain (never generic); turn the answer into a statement (who / what they do today / the specific breakdown) and confirm. Skip if the Overview already implies it.
  4. Route from the model — don't ask "who's this for" unless genuinely ambiguous: personal / first-person pain / depth=light → Personal spec; public / named users / depth=full → PRD.
  5. Elicit the branch's sections (below), inferring and confirming each, saving as you go.
  6. Research alternatives (always offered, never forced): web_search + fetch_content for the closest open-source projects / products, then offer to add an Alternatives Considered section (name, one-line gap, URL). On a pre-filled brief, ask permission first.
  7. Review the full draft in plain markdown and confirm, then finalize.

Personal spec (sections)

# Title + one-line tagline · Overview · Problem · Capabilities (only what the tool is useless without) · Tech Notes (the stack, once chosen).

PRD (sections)

# Title + tagline · Overview · Problem Statement · Target Users (roles, not demographics) · Jobs to Be Done ("When [situation], I want [motivation], so I can [outcome]") · Key User Story (one concrete scenario) · Goals (verb-first, measurable) · Non-Goals · Success Metrics / Success Conditions · Capabilities (each justified against a Goal or success condition) · Non-Functional Requirements (only if they exist) · Technology (Aspect | Choice | Rationale).

Skip any section the model already answers or that depth doesn't warrant (light → skip Goals/NFRs, binary Success Conditions instead of metrics). Reject vague goals inline: "'Better UX' isn't a goal — 'first result in under 30s' is."

Saving

  • spec_create once, path: "goal-and-requirements.md", a slug id, type: "goal-and-requirements", title, status: "draft"; replace the scaffold with the chosen template + the sections settled so far.
  • edit to add each confirmed section in template order.
  • spec_update status: draft → active once the user approves the reviewed draft.

Next

State plainly that the spec is saved and evolves with the project. Suggest the natural next step — sketch architecture.md, then use brainstorming only when a feature still requires choosing scope, user-visible behavior, or architecture. Fully specified work proceeds directly. There is no board/ticket hand-off — say it and stop: this workflow ends here.

Frequently asked questions

What does the Starting A New Project AI skill do?

Use when the workspace is empty, has no code, and the user brings a raw project idea. Normally reached via setting-up-a-project; not for an existing project.

Why use Starting A New Project on TypingMind?

Because you install it once and use it with any model. Starting A New Project is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Starting A New Project in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/JetBrains/thinkrail/tree/main/packages/pi-thinkrail-workflow/skills/starting-a-new-project. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Starting A New Project?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Starting A New Project?

As many as you like. As long as a model supports skills, you can use Starting A New Project with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Starting A New Project AI skill free?

Yes. It is published on GitHub by JetBrains under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇