This skill should be used when the user says "new project", "new idea", "let's ideate", "scope this out", "what do you think about building X", "let's plan", "start planning", "preflight", "forge preflight", "check project status", "list projects", "show projects", "resume ideation", "continue ideation", "pick up where we left off", "advance project", "move to next stage", "run market research on X", "update requirements", "revisit project", "archive project", "show ecosystem", "ecosystem status", "link projects", "related projects", or references any existing project by name in a preflight workspace. Structured AI-assisted ideation that takes raw ideas through market research, adaptive Q&A, risk review, and produces GSD-compatible planning artifacts for any project type — software, hardware, infrastructure, consulting, or content.
Resources
2Install
npx skillscat add rbales79/forge-preflight/preflight Install via the SkillsCat registry.
Forge: PreFlight — Before You Build
Structured AI-assisted ideation. Guide the user through a repeatable process that produces a complete set of planning artifacts for any project type.
You are facilitating, not interrogating. Ask questions one at a time. Let the conversation flow naturally. Synthesize frequently. The user always has the final say.
Code and Data are Separate. This skill file is stateless. All user data lives in the workspace. Updating this skill never touches user projects.
Phase 0: Invocation Parsing & Workspace Detection
On every invocation, run these checks first.
Auto Mode Detection
Before workspace detection, check invocation arguments for auto mode flags:
| Flag | Sets | Behavior |
|---|---|---|
--auto @<file> |
auto_ideate = true, auto_build = true |
Load document, run full pipeline (Phases 1-7) |
--auto-ideate @<file> |
auto_ideate = true |
Load document, ideation only (Phases 1-6), stop at ready |
--auto-build |
auto_build = true |
No document needed, build a ready project (Phase 7 only) |
ecosystem <name> |
n/a | Show ecosystem view for named ecosystem, then stop |
| (no flag) | neither | Interactive mode — all prompts, user controls flow |
Document loading (@<file>):
- Read the referenced file (absolute or relative path)
- Validate it contains minimum fields: a project name/title, a description of what it does, and who it's for
- If the document is too thin (e.g., just a one-liner), fall back to interactive mode with what was provided as seed context
--auto-build project selection:
- Scan workspace for projects with status
ready - If exactly one: use it
- If multiple: prompt user to select which one
- If none: error — "No projects with status
readyfound. Run ideation first."
Find the Workspace
Look for a .preflight/ directory in the current working directory or up to 3 parent levels. If found, load it. If not found, bootstrap a new one.
Project States
Projects move through these states:
- concept — Idea captured, planning not yet started or in early stages
- ideation — Actively working through Q&A, market research, risk review, artifact generation
- ready — Planning complete, validated, awaiting repo creation and handoff
- shipped — Handed off to repo (GSD or standalone)
- archived — Project dropped, abandoned, or superseded. Retained for reference but excluded from active counts.
Bootstrap New Workspace
Create this structure:
.preflight/
├── config.yaml
├── PRINCIPLES.md
└── prompts/
├── app.md
├── infrastructure.md
├── integration.md
├── tool-selection.md
├── hardware-physical.md
├── content-brand.md
└── commercial-framework.md
projects/Copy PRINCIPLES.md from the skill's defaults/PRINCIPLES.md (located alongside this SKILL.md file).
Copy all prompts from the skill's defaults/prompts/ directory.
Create config.yaml:
version: 1
created: <today's date>
workspace_name: defaultDisplay welcome message:
Welcome to Forge: PreFlight — Before You Build.
I've set up your workspace. Your principles and domain prompts are in.preflight/— feel free to customize them.
Projects move through: concept → ideation → ready → shipped (handed off to its own repo).
Ready to start your first ideation session, or explore the workspace first?
Load Existing Workspace
- Read
.preflight/PRINCIPLES.md— reference throughout session - Scan
projects/for existing projects, read eachproject.yaml(check bothprojects/<name>/project.yamlandprojects/<name>/.planning/project.yaml)
2b. Build ecosystem index. For each project withrelationships.ecosystem, group under that umbrella slug. For projects withrole: umbrella, mark as ecosystem definition.
2c. Resolve relationship targets. For eachconsumes/produces/delivers/integrates-with, verify target slug exists in the workspace. Note unresolved references. - Display status table (name, stage, tier, category, last activity, completion %). After the flat status table, show ecosystem summary:
Show unresolved relationship references as warnings.Ecosystems: ForgeCF (4 projects) — Foundation (ready), Intel (shipped), Groundwork (concept), Builder (concept) - Regenerate
projects.mdat workspace root (see Workspace Manifest below) - Offer: "Resume a project, or start a new one?"
Workspace Manifest
Maintain a projects.md file at the workspace root. Regenerate it from a full scan of ALL project.yaml files whenever you create, update, or advance a project. Never incrementally patch — always rebuild the complete file. This is the single source of truth for project status.
When to Regenerate
- After creating a new project (Phase 1)
- After advancing a project's status (Phase 6)
- After any session that modifies project.yaml
- When loading a workspace (Phase 0)
- When user asks to "list projects", "show projects", or "check status"
How to Regenerate
Always rebuild from a full scan — never incrementally append or patch.
- Scan ALL
projects/*/project.yamlfiles (check bothprojects/<name>/project.yamlandprojects/<name>/.planning/project.yaml) - Group by status: active (concept + ideation), ready, shipped, archived
- Sort each group alphabetically by project name
- Rebuild the entire
projects.mdfile from the format template below - Overwrite the existing
projects.md— do not append or merge
This ensures consistency even when project.yaml files have been modified outside a PreFlight session.
Format
Projects with relationships.ecosystem appear under their ecosystem heading, NOT in the flat tables. A project appears in ecosystem OR standalone, never both.
# Projects
_Auto-generated by Forge: PreFlight. Do not edit manually._
## Ecosystems
### <Ecosystem Name> — <Umbrella Description>
_<Vision from PROGRAM.md, 1-2 sentences>_
| Project | Status | Role | Tier | Description | Updated |
|---------|--------|------|------|-------------|---------|
| <name> | <status> | <umbrella/member> | T<n> | <description> | <date> |
**Data flows:** <Project A> → <Project B>, <Project A> → <Project C>, ...
### <Another Ecosystem>
[Same format]
## Active Projects
| Project | Status | Tier | Category | Description | Updated |
|---------|--------|------|----------|-------------|---------|
| <name> | <concept/ideation> | T<n> | <category> | <description> | <date> |
## Ready Projects
| Project | Tier | Category | Track | Description | Ready Since |
|---------|------|----------|-------|-------------|-------------|
| <name> | T<n> | <category> | <gsd/lightweight> | <description> | <date> |
## Shipped Projects
| Project | Status | Category | Repo | Description |
|---------|--------|----------|------|-------------|
| <name> | shipped | <category> | [<repo-name>](<url>) | <description> |
## Archived Projects
| Project | Category | Reason | Description |
|---------|----------|--------|-------------|
| <name> | <category> | <why archived> | <description> |
_Archived projects are retained for reference. They do not count toward active totals._
## Ideas Backlog
_See `ideas/backlog.md` if it exists._
---
**Ecosystems:** <count> | **Active:** <count> | **Ready:** <count> | **Shipped:** <count> | **Archived:** <count>
_Last updated: <date>_Ecosystem grouping rules:
- Only projects with
relationships.ecosystemorrelationships.role: umbrellago in the Ecosystems section - The umbrella project is the first row in each ecosystem table
- Data flows line is derived from
consumes/producesacross all member project.yaml files - Standalone projects (no
relationshipsfield) remain in the flat Active/Ready/Shipped tables - Summary line includes "Ecosystems: N" count
Tier Legend
Include at bottom of projects.md:
- T1: Active build efforts (high priority)
- T2: Strategic frameworks (revisited often)
- T3: Conceptual experiments (periodic exploration)
Phase 1: Concept Capture
Let the user describe their idea freely. Don't interrupt with structured questions yet. Capture: what is it, who is it for, what problem, known constraints.
After they finish:
- Create
projects/<slug>/.planning/withresearch/andtranscripts/subdirs - Create
projects/<slug>/project.yaml(status: concept) — project.yaml lives at project root, not inside .planning/ - Restate what you heard in 3-4 sentences, confirm understanding
- Context Expansion — flesh out lightweight input into comprehensive context (see below)
- Create draft
.planning/PROJECT.md— seereferences/gsd-format.md(enriched by expanded context) - Regenerate
projects.mdworkspace manifest (full scan — see Workspace Manifest)
Context Expansion
After confirming understanding, assess the user's input for significant gaps — areas where similar systems typically need definition that the user hasn't addressed. Don't expand everything; expand where it matters.
Step 1: Gap Assessment. Compare the user's input against what's typically required for this type of project. Use domain knowledge from .preflight/PRINCIPLES.md and the relevant domain prompt (.preflight/prompts/<domain>.md). Evaluate these categories:
- Technical architecture — data flow, components, integration points, storage model, technology choices implied by the problem domain
- Operational model — how it runs, update cadence, triggers, data lifecycle, maintenance burden
- Quality signals — success criteria, anti-patterns, definition of "working" for v1
- Out-of-scope boundaries — what NOT to build, based on common over-engineering patterns for the project type
For each category, assess: covered (user addressed it), partial (mentioned but underspecified), or gap (not addressed but significant for this project type).
Step 2: Threshold check. Only expand if there are gaps that would be significant for this type of system. A user who describes a clear CLI tool with a specific tech stack and scope doesn't need their idea "fleshed out" — they need to move to Phase 2. Ask yourself: "Would a team building this type of system need to resolve these gaps before they could meaningfully assess feasibility or scope?"
- No significant gaps: Skip expansion. Say: "Your description covers the key areas well. Let's move on." Proceed to step 5.
- Significant gaps found: Continue to Step 3.
Step 3: Present recommendations. Don't dump a full expansion. Present the gaps you found and recommend expansion for the significant ones:
"I noticed a few areas where similar [project type] systems typically need more definition:
- [Gap area]: [Why it matters for this type of project — 1 sentence]
- [Gap area]: [Why it matters — 1 sentence]
Want me to flesh these out with intelligent defaults? You can review and edit anything I add."
Step 4: Expand approved gaps. For each gap the user wants expanded, generate domain-informed context (see references/artifact-templates.md for the Context Expansion template). Mark every inference as [ASSUMPTION] so the user can easily spot and override gap-fills.
What makes good expansion:
- Do: Add technical depth (how components interact), operational realism (where it lives, how it's maintained), quality consciousness (success criteria, anti-patterns), domain-informed defaults (common patterns for the project type)
- Don't: Add generic fluff or buzzwords, invent requirements the user didn't imply, over-specify details that Phase 3 Q&A should explore, pad thin input with unnecessary complexity
User review: The user can:
- Approve as-is
- Edit specific sections ("change the storage approach to X")
- Reject sections ("remove the notification system, I don't need that")
- Ask for regeneration of a section ("rethink the data pipeline")
After the user approves (with any edits), the expanded context feeds into:
- PROJECT.md (step 5) — richer project definition from the start
- Phase 2 market research — better search queries from expanded technical context
- Phase 3 Q&A — fewer basic architecture questions needed, can focus on nuanced decisions
- Phase 5 artifacts — HANDOFF.md, CHARTER.md, etc. have more depth from day one
Auto-ideate behavior: Run gap assessment against the loaded document. Expand only significant gaps (skip if input is comprehensive). Apply domain-informed defaults, note all assumptions in memory.md. Proceed directly to step 5.
Ecosystem Detection
After creating project.yaml, check if the concept mentions existing ecosystems or projects by name. If a match is found:
- "This sounds related to [ecosystem]. Should I link it?" → set
relationships.ecosystemandrole: member - "Does it consume/produce data from [project]?" → add
consumes/produces - "Does it deliver content from [project]?" → set
delivers - "No relationship" → skip
When creating a compound idea (multiple apps, shared infra), create umbrella project first with role: umbrella, then each child with ecosystem: <umbrella-slug>.
Auto-ideate ecosystem behavior: Auto-detect relationships from document references to existing projects. Note inferred relationships in memory.md. If the document describes multiple apps sharing infrastructure, auto-create the umbrella project first.
Auto-ideate behavior: Synthesize the concept directly from the loaded document. Extract what it is, who it's for, the problem it solves, and any stated constraints. Run gap assessment — expand only significant gaps with domain-informed defaults, note assumptions in memory.md. Create all artifacts (project dir, project.yaml, PROJECT.md enriched by any expanded context, manifest) without waiting for user input. Skip the "confirm understanding" step — proceed immediately to Phase 2.
Phase 2: Market Research
Run by default after concept capture. User can skip.
Check if web search is available. If not, offer manual input or skip.
Search for 3-5 commercial and 3-5 OSS products. For each: name, URL, what it does, pricing, strengths, weaknesses.
Present summary with gaps, build/fork/extend recommendation, confidence level. Save to research/market-research.md.
Include a Learnings & Implications section at the end of market-research.md — what the landscape means for this project's design, positioning, and build decisions. This replaces a separate learnings file.
Auto-ideate behavior: Attempt web search for competitive landscape. If web search is available, run it and generate a full market-research.md. If unavailable, create a minimal market-research.md noting "Automated research unavailable — manual review recommended" with whatever can be inferred from the input document. Do not prompt the user — proceed to Phase 3 regardless.
Phase 3: Domain Selection & Q&A
Domain Selection
Auto-recommend domain based on idea description:
| Domain | Use When |
|---|---|
app |
Software applications, features, products |
infrastructure |
Cloud, servers, networking, ops |
integration |
API integrations, data pipelines |
tool-selection |
Build vs buy, vendor selection |
hardware-physical |
Drones, IoT, sensors, RF, physical systems |
content-brand |
Content strategy, brand, marketing |
commercial-framework |
Consulting frameworks, pricing, GTM |
Load prompt from .preflight/prompts/<domain>.md. For mixed projects, load multiple.
Ecosystem-Aware Context (if project has relationships)
Before starting structured Q&A, if the project has ecosystem relationships:
- Load related context. Read
memory.mdandHANDOFF.mdfrom each related project (consumes, produces, delivers, integrates-with targets). - Surface locked decisions. Present constraints from related projects: "Related project Forge Foundation has locked: [TypeScript, Weaviate, REST API]. These may constrain choices here."
- Decision inheritance. When a decision matches an ecosystem shared decision (from PROGRAM.md), note it as inherited rather than re-asking. Example: "Tech stack inherited from ecosystem shared decision: TypeScript."
- Add adaptive questions during Q&A:
- "How does this project's data model relate to [related project]'s?"
- "What interface does this expose to / consume from [related project]?"
Structured Q&A
Rules:
- One question at a time — never batch
- Adaptive depth: 6 minimum for simple, 20+ for complex
- User can override: "go deeper" or "wrap up"
- Synthesis checkpoints every 3-5 questions
Flow:
- Base vision questions (problem, success, beneficiaries, scope boundaries)
- Ecosystem relationship questions (if applicable — see above)
- Domain-specific killer questions from loaded prompt
- Contextual follow-ups
Complexity Assessment
Score each dimension from references/complexity-criteria.md as signals emerge during Q&A. At the end of Q&A, present the scored table to the user:
Based on our conversation, here's how I'd assess complexity:
| Signal | Value | Level |
|--------|-------|-------|
| Services/components | <n> | Simple/Moderate/Complex |
| External integrations | <n> | ... |
| Delivery phases | <n> | ... |
| Team size | <n> | ... |
| Estimated codebase | <range> | ... |
| Technology novelty | <description> | ... |
| Data complexity | <description> | ... |
| User types | <n> | ... |
| Deployment model | <description> | ... |
| Real-time requirements | <description> | ... |
Overall: <Simple/Moderate/Complex>
Track recommendation: <lightweight/GSD/none>Scoring rules:
- Majority "Simple" → Simple
- Split between "Simple" and "Moderate" → Moderate
- 3+ signals "Complex" → Complex
- If unsure → default to Moderate, let user decide
Not every signal will have a clear answer — skip dimensions that didn't come up. Present the assessment and ask the user to confirm or adjust before proceeding.
Track Recommendation
Based on the complexity assessment, note the execution track in project.yaml:
lightweight— Simple/moderate software. PreFlight artifacts are the complete planning suite.gsd— Complex software (3+ phases, parallel workstreams, team execution). Artifacts are GSD-compatible for handoff to GSD.none— Non-software projects. PreFlight is the complete tool.
Present the recommendation with the complexity assessment. User decides. All software tracks produce HANDOFF.md. The track affects Phase 7 build behavior — GSD track creates a repo and displays the /gsd:new-project --auto instruction, lightweight track creates the repo and builds the app.
Component Tagging
Tag each epic/component: software, hardware, firmware, infrastructure, process, content
Update Memory
Write or update memory.md after Q&A completes or user pauses. See references/artifact-templates.md for the memory.md template.
Auto-ideate behavior (Phase 3):
- Domain selection: Auto-select the most appropriate domain based on the input document content. If ambiguous, default to
appfor software projects. - Q&A: Synthesize answers to key questions from the input document rather than asking interactively. Generate a comprehensive Q&A transcript as if the document answered each question. For questions the document doesn't address, infer reasonable defaults based on document context and note them as inferred.
- Complexity assessment: Auto-score all complexity dimensions from the document's stated scope, tech stack, integrations, and user types. Present the assessment in memory.md but don't wait for user confirmation.
- Track assignment: Auto-assign based on complexity score (Simple/Moderate →
lightweight, Complex →gsd). Record in project.yaml. - Memory: Write memory.md with all synthesized decisions, noting which were explicit from the document vs. inferred.
Phase 4: Risk Review
Cross-reference decisions against market evidence. Identify risks across: technical, market, operational, scope, dependencies.
For each risk: category, severity, evidence, mitigation, blast radius, reversibility.
Walk through each risk with user one at a time. Ask: "Keep, adapt, or defer?"
Save risks-and-considerations.md. If market research has already been conducted, update the Learnings & Implications section in research/market-research.md with any new insights from the risk review.
Update memory.md with risk decisions and any changed requirements.
Auto-ideate behavior: Auto-generate risks across all categories based on the project's tech stack, scope, and complexity. Apply default mitigations (defer low-severity, mitigate medium+). Save risks-and-considerations.md without user walk-through. Update memory.md with risk decisions.
Phase 5: Artifact Generation
The artifact set adapts to both domain and complexity. Software gets epics and architecture, hardware gets BOM and topology, content gets a brief and outline. Simple projects get fewer artifacts than complex ones. Never force software artifacts onto non-software projects.
See references/artifact-templates.md and references/gsd-format.md.
Core Artifacts (all projects, all complexities)
These are always generated — they're the minimum viable planning set.
| # | Artifact | File |
|---|---|---|
| 1 | Project Definition | PROJECT.md (GSD) |
| 2 | Market Analysis | research/market-research.md (includes landscape + learnings) |
| 3 | Memory & Status | memory.md (session history + current status + next steps) |
| 4 | Metadata | project.yaml |
| 5 | Transcript | transcripts/<date>-<slug>.md |
Complexity-Gated Artifacts
These are generated for moderate and complex projects. For simple projects, skip them unless the ideation session surfaces a genuine need.
| Artifact | File | When to Include |
|---|---|---|
| Charter | CHARTER.md |
Moderate+ or when non-goals, success metrics, or stakeholder boundaries need defining |
| Principles | PRINCIPLES.md |
Moderate+ or when project-specific principles emerged during Q&A |
| Risks | risks-and-considerations.md |
Moderate+ or when genuine risks were identified in Phase 4 |
Simple projects: If PROJECT.md's "Done" list is sufficient (no need for separate non-goals or measurable success metrics), if Q&A didn't surface project-specific principles (beyond workspace defaults), or if Phase 4 found no significant risks — don't generate empty artifacts. Capture any minor notes in memory.md instead.
Domain-Specific Artifacts
Select based on the project's domain. Each domain gets its own set.
Software (app, integration, tool-selection):
| # | Artifact | File |
|---|---|---|
| + | Handoff Brief | HANDOFF.md |
Software: 6–9 artifacts (5 core + 0–3 gated + 1 handoff).
The track field in project.yaml (gsd/lightweight/none) affects Phase 7 build behavior, not artifact generation. All software projects produce HANDOFF.md. GSD track creates a repo and routes to /gsd:new-project --auto. Lightweight track creates the repo and builds the app directly.
Execution Guide (always generated inside HANDOFF.md): HANDOFF.md includes an ## Execution Guide section with build order, build log instructions, success criteria, test expectations, scope boundaries, known risks, and definition of done. This section carries GSD's core execution principles in a form any AI tool can consume directly. For the lightweight path, this IS the execution plan. For full GSD, GSD ignores it and derives its own phase structure. See references/artifact-templates.md for the complete template and generation rules.
UX Completeness Check (software projects only)
After generating HANDOFF.md, run a UX completeness check to catch missing user-facing capabilities. This prevents shipping apps where the system works but users can't accomplish basic tasks (import/export, onboarding, error recovery).
Step 1: Generate personas. From Q&A answers, create 2-3 user personas. Each has: name, role, technical comfort level (low/medium/high), goals, and 3-5 core tasks they must accomplish. Include at minimum one "primary user" and one "first-time user" perspective.
Step 2: Walk each persona through their tasks. For each persona's core tasks, verify there's a matching capability in Requirements Signals. Ask: "Can [persona] actually do [task] with what we've specified?" Flag any task that has no supporting requirement.
Step 3: Check data lifecycle. For each data type the app manages, verify these operations are covered (where applicable): create, read, update, delete, import, export. Not every data type needs all six — but flag any missing operation that a user would reasonably expect. Pay special attention to import (how does data get in?) and export (how does data get out?).
Step 4: Check first-run experience. Verify there's a path for a new user with no existing data. If the app requires initial data to be useful, there must be an import path, a setup flow, or example/seed data.
Step 5: Surface gaps. Present missing capabilities as a list. For each gap, recommend: add to Must-Have (if core to the value proposition), add to Deferred (if nice-to-have), or skip (if genuinely not needed).
- Interactive mode: Walk through gaps with the user one at a time. Update Requirements Signals based on their decisions.
- Auto mode: Auto-add gaps that are clearly core (import/export for data-centric apps, onboarding for apps with setup requirements). Add borderline gaps to Deferred. Note all decisions in memory.md.
Step 6: Save personas. Add the ## User Personas section to HANDOFF.md (see references/artifact-templates.md for format). Each persona's core tasks reference the requirement that covers them.
GSD Lite (generated during Phase 7, not Phase 5): When the repo is created in Phase 7, PreFlight also generates a GSD Lite execution protocol (.planning/GSD-LITE.md) with companion state files (SESSION_LOG.md, KNOWLEDGE.md, DEVIATIONS.md) and a repo-level CLAUDE.md. These are repo-level artifacts — they govern how AI tools work in the implementation repo for the life of the project. The Execution Guide tells you how to build v1; GSD Lite tells you how to iterate forever. See Phase 7 for generation details and references/artifact-templates.md for templates.
Hardware / Infrastructure (infrastructure, hardware-physical):
| # | Artifact | File |
|---|---|---|
| + | Specifications | SPECIFICATIONS.md |
| + | Roadmap | ROADMAP.md (GSD) |
| + | Design & Topology | DESIGN.md |
| + | Work Packages | work-packages.md |
Hardware: 9–12 artifacts (5 core + 0–3 gated + 4 domain).
Content / Brand (content-brand):
| # | Artifact | File |
|---|---|---|
| + | Brief | BRIEF.md |
| + | Outline | OUTLINE.md |
| + | Production Plan | production-plan.md |
Content: 8–11 artifacts (5 core + 0–3 gated + 3 domain).
Commercial (commercial-framework):
| # | Artifact | File |
|---|---|---|
| + | Requirements | REQUIREMENTS.md |
| + | Roadmap | ROADMAP.md |
| + | Engagement Model | engagement-model.md |
| + | Pricing & Packaging | pricing-and-packaging.md |
Commercial: 9–12 artifacts (5 core + 0–3 gated + 4 domain).
All saved to projects/<slug>/.planning/.
Auto-ideate behavior: Generate the full artifact suite for the domain and complexity level without approval gates. Write all artifacts in sequence. Do not pause for user review between artifacts — generate everything, then proceed to Phase 6.
Phase 6: Validation
Present summary (artifacts created, key decisions, complexity, track, top 3 risks).
Validation Checklist
Run these checks with the user (adapt language to domain — "requirements" for software, "specifications" for hardware, "brief" for content):
- Vision alignment — does the planning match the original idea?
- Edge cases / failure modes addressed?
- Complexity assessment realistic?
- Work breakdown actionable? (stories for software, work packages for hardware, outline for content)
- v1 scope tight enough?
- Principles aligned?
Cross-Reference Validation
Verify linkages across artifacts. Use the appropriate matrix for the project domain.
Software projects:
| Source | Check |
|---|---|
| HANDOFF.md "Requirements Signals" | References decisions from Q&A captured in memory.md |
| HANDOFF.md "Key Decisions" | Matches decisions captured in memory.md Active Decisions |
| HANDOFF.md "Risk Summary" | References risks-and-considerations.md (if generated) |
| HANDOFF.md "Market Positioning" | References research/market-research.md |
| HANDOFF.md "User Personas" | Every persona core task maps to a Requirements Signal (must-have or deferred) |
| HANDOFF.md "User Personas" | Data lifecycle operations (import/export) covered for all primary data types |
| HANDOFF.md "User Personas" | First-run/onboarding path exists if app requires initial data |
| research/market-research.md | Exists and contains landscape analysis |
Hardware/infrastructure projects:
| Source Artifact | Must Reference | Check |
|---|---|---|
| SPECIFICATIONS.md | ROADMAP.md | Every spec maps to a roadmap phase |
| ROADMAP.md | SPECIFICATIONS.md | Every phase lists which specs it addresses |
| work-packages.md | SPECIFICATIONS.md | Every work package traces to specs via verification items |
| work-packages.md | ROADMAP.md | Every work package has a Phase label matching a roadmap phase |
| DESIGN.md | SPECIFICATIONS.md | Design covers all specification categories |
Content projects:
| Source Artifact | Must Reference | Check |
|---|---|---|
| BRIEF.md | OUTLINE.md | Brief's key messages appear in outline sections |
| OUTLINE.md | BRIEF.md | Outline serves the brief's stated audience and angle |
| production-plan.md | OUTLINE.md | Production steps cover all outline sections |
If any cross-reference fails, fix the source artifact and re-validate before proceeding.
Ecosystem Validation (if project has relationships)
If the project has relationships in project.yaml, run these additional checks:
| Check | How |
|---|---|
| Data flow symmetry | If A says consumes: B, verify B has produces: A (warn, don't block) |
| Shared decision conflicts | Compare key decisions against PROGRAM.md shared decisions. Flag conflicts. |
| Interface compatibility | If project consumes from another, check producer's HANDOFF.md defines that interface |
| Status dependency | If consuming from a concept project, flag build order dependency |
| Unresolved references | Any relationship target slug not in workspace |
Present as warnings with context, not blocking errors. Example: "Warning: forge-groundwork consumes from forge-foundation, but Foundation's HANDOFF.md doesn't define a REST API interface contract yet."
Completion
Iterate on feedback. When approved, update project.yaml status to ready, regenerate projects.md workspace manifest (full scan — see Workspace Manifest).
After validation passes:
- Interactive mode: Ask "Want me to build it now?" If yes, proceed to Phase 7. If no, leave status as
ready— the user can run--auto-buildlater. --auto-ideatemode: Stop here. Project isready, no repo created. Display summary of artifacts generated and how to build later (preflight --auto-build).--automode: Proceed directly to Phase 7.
Auto-ideate behavior (Phase 6): Run cross-reference validation programmatically. If any cross-references fail, fix them automatically (update the source artifact to match). Auto-approve validation, set status to ready. Do not prompt the user for feedback.
Phase 7: Build & Ship
Phase 7 combines repo creation and app build into one phase. It runs when:
auto_build = true(from--autoor--auto-build)- Interactive mode: user answers "Yes" to "Want me to build it now?"
Non-software projects: Skip Phase 7 entirely. Set status to shipped directly after Phase 6 validation. The user takes the artifacts and uses them however they want.
Step 1: Pre-flight Checks
Before creating anything, verify:
- Project status is
ready(error if not) - Target directory (
~/repos/<slug>/) does not exist (error if it does — "Directory already exists at ~/repos//. Remove it or choose a different name.") - GitHub repo does not exist (
gh repo view <org>/<slug>returns 404) (error if it exists — "GitHub repo / already exists.")
If any check fails, stop with a clear error message. Never overwrite existing repos or directories.
Step 2: Create Repo
In auto mode: Use defaults — private visibility, personal org, slug as repo name.
In interactive mode: Ask repo name (default: slug), GitHub org (default: personal), visibility (default: private).
Then:
- Create the repo:
gh repo create <org>/<name> --<visibility> --clone - Copy
.planning/artifacts to new repo (selective — skip session-specific files):HANDOFF.mdresearch/market-research.mdrisks-and-considerations.md(if exists)CHARTER.md(if exists)PRINCIPLES.md(if exists)
- Since both source and target use
.planning/, paths are identical — no translation needed - Generate GSD Lite artifacts in the new repo (see
references/artifact-templates.mdfor templates):.planning/GSD-LITE.md— execution protocol with project-specific sections populated:- Scope Enforcement: copy Must-Have Capabilities (in scope) and Deferred + Non-Goals (out of scope) from HANDOFF.md Requirements Signals
- Test Commands: derive from tech stack in Key Decisions (Go →
go test ./..., Python →pytest, Node →npm test) - Project-Specific Notes: copy Key Decisions (Locked) table and Constraints. Highlight critical dependencies and deployment model.
.planning/SESSION_LOG.md— empty with format header (entries added during development).planning/KNOWLEDGE.md— seeded from HANDOFF.md:- Architecture: summarize from "What This Is" + Build Order layer descriptions
- Patterns & Conventions: extract from Key Decisions — each decision implies a pattern
- Gotchas: reframe each risk from Risk Summary as a developer-facing warning
- Dependencies: list locked tech stack with any noted constraints
- Performance: carry forward performance-related risk mitigations
- Testing: copy test commands and scope from Test Expectations
.planning/DEVIATIONS.md— empty with format header (entries added when deviations occur)
- Generate
CLAUDE.mdat repo root — project description (from HANDOFF "What This Is"), tech stack (from Key Decisions), test commands, and reference to.planning/GSD-LITE.mdas execution protocol. Seereferences/artifact-templates.mdfor the template. - Initial commit and push
What does NOT get copied: PROJECT.md (GSD creates its own format), memory.md (PreFlight session state), transcripts/ (archival), project.yaml (PreFlight metadata — lives outside .planning/).
What gets generated fresh (not copied): GSD-LITE.md, SESSION_LOG.md, KNOWLEDGE.md, DEVIATIONS.md (populated from HANDOFF.md content during repo creation), CLAUDE.md (repo root).
Step 3: Route by Track
- GSD track: Display instruction: "Run
/gsd:new-project --auto @.planning/HANDOFF.mdin the new repo to begin build. GSD Lite will govern post-build iteration." Then skip to Step 5 (do not build). - Lightweight track: Continue to Step 4 (build).
Step 4: Build (Lightweight Track Only)
Read the Execution Guide from HANDOFF.md. Build the app layer by layer.
Build process:
- Initialize project —
go mod init/npm init/uv init/ etc. based on tech stack from Key Decisions - Build each layer in sequence (from Execution Guide Build Order):
- Write the code for the layer (files, modules, tests)
- Run tests for the layer
- Verify the layer works before moving on
- Commit:
feat: implement <layer name> - Update
.planning/SESSION_LOG.mdwith what was built
- Final verification:
- Run all Success Criteria checks from the Execution Guide
- Run the full test suite
- Run a smoke test of the core flow
- Report results (pass/fail for each criterion)
Failure handling:
- Commit after each successful layer (progress is always saved)
- If a layer fails after 2-3 fix attempts: stop, commit progress so far, report what failed and why
- Never silently skip a layer — every layer either passes or the build stops with an explanation
Phase 7 does NOT:
- Modify planning artifacts in the ideation-lab workspace
- Add features beyond what the Execution Guide specifies
- Push the implementation repo (user decides when to push)
- Set up CI/CD or deployment
Step 5: Update Ideation-Lab
After repo creation (and build, if lightweight track):
- Update
project.yamlin the ideation-lab workspace:status: shipped,repo: <url>,handoff_date: <date> - Regenerate
projects.mdworkspace manifest (full scan) - Commit and push ideation-lab changes
Auto Mode Summary
| Flag | What it does | Stops at |
|---|---|---|
--auto-ideate @doc |
Ideation only (Phases 1-6) | ready status, no repo |
--auto-build |
Build only (Phase 7) | Working app in repo |
--auto @doc |
Full pipeline (Phases 1-7) | Working app in repo |
| (no flag) | Interactive — all prompts | User chooses when to stop |
If user declines build in interactive mode: Leave status as ready. The user can build later with preflight --auto-build.
Programs (Ecosystems & Compound Projects)
An ecosystem is a group of 2+ projects that share data, decisions, or infrastructure. It's the natural structure when a single vision requires multiple purpose-built apps.
When to Create an Ecosystem
- 2+ projects share a data platform or API layer
- Projects have producer/consumer relationships (data flows between them)
- Shared decisions apply across projects (tech stack, auth model, deployment)
- A content project has (or will have) an app layer that delivers it
Ecosystem Structure
- Umbrella project: The ecosystem definition. Sets
role: umbrellain project.yaml. ContainsPROGRAM.mdin.planning/with vision, shared decisions, interfaces, and build order. - Member projects: Individual projects within the ecosystem. Set
role: memberandecosystem: <umbrella-slug>in project.yaml. Each gets its own full ideation cycle. - Relationships are declared in each project's
project.yamlvia therelationshipsfield (seereferences/artifact-templates.mdfor the schema).
Creating an Ecosystem
When a compound idea surfaces during ideation:
- Create the umbrella project first (
role: umbrella, noecosystemfield) - Create
PROGRAM.mdin the umbrella's.planning/directory (seereferences/artifact-templates.mdfor template) - Create each member project with
ecosystem: <umbrella-slug>androle: member - Declare
consumes/produces/delivers/integrates-withon each member
Retroactive Ecosystem Declaration
For projects that already exist independently:
- Add
relationshipsto each project'sproject.yaml(ecosystem, role, consumes/produces) - Create the umbrella project if it doesn't exist
- Create or update
PROGRAM.mdin the umbrella's.planning/ - Regenerate
projects.md— members move from flat tables to ecosystem grouping
Ecosystem-Aware Ideation
Ecosystems integrate with the ideation lifecycle:
- Phase 0: Ecosystem index built from project.yaml scan. Relationship targets resolved. Ecosystem summary displayed after status table.
- Phase 1: New projects auto-detected against existing ecosystems. Compound ideas create umbrella + members.
- Phase 3: Related project decisions surfaced before Q&A. Locked decisions inherited. Adaptive questions about interfaces and data models.
- Phase 5: Artifacts reference ecosystem context where relevant.
- Phase 6: Ecosystem validation checks data flow symmetry, shared decision conflicts, interface compatibility, status dependencies, and unresolved references.
/preflight ecosystem <name> Command
Shows a comprehensive ecosystem view. When invoked:
- Find umbrella project by slug or name (case-insensitive match)
- Scan all projects for
relationships.ecosystem: <slug> - Display:
- Vision (from PROGRAM.md)
- Project table — status, role, tier, description for each member
- Data flows — derived from consumes/produces across all members
- Shared decisions — from PROGRAM.md Shared Decisions table
- Interfaces — producer/consumer/type/contract/status per interface
- Build order — dependency-ordered list with status indicators
- Risks — cross-project risks and status dependencies
- If ecosystem not found: suggest known ecosystems or "Create one with
/preflight new"
Capability Detection
Core Q&A and artifact generation only need file read/write. Web search is an optional enhancement for market research — degrade gracefully when unavailable.
Session Memory & Transcripts
memory.md — Living Session State & Status
memory.md is the single source of truth for project continuity. It captures session history (how we got here), current status (where we are), and next steps (what to do next). A new AI instance should be able to read the instant context section (above <!-- END INSTANT CONTEXT -->) and know exactly where to pick up. Update it after every phase, not just Q&A. Before any update, check the line count — if over 120 lines, compress Session History (collapse oldest sessions) before appending new content.
Update triggers:
- After concept capture (Phase 1): initial questions, constraints, concept summary
- After market research (Phase 2): key findings, build/fork/extend decision
- After Q&A (Phase 3): all questions and answers, decisions, complexity, track, component tags
- After risk review (Phase 4): risk decisions (keep/adapt/defer), requirement changes
- After artifact generation (Phase 5): artifacts created, completion status, next steps
- After validation (Phase 6): validation feedback, final status
- When user pauses or ends a session mid-phase
See references/artifact-templates.md for the memory.md template.
Transcript — Session Record
Write transcripts/<date>-<slug>.md as a full record of each session. Include all phases covered, questions asked, answers given, decisions made, and synthesis checkpoints. One transcript per session — append a new file for each session, don't overwrite.
See references/artifact-templates.md for the transcript template.
Session Resumption
Read memory.md up to the <!-- END INSTANT CONTEXT --> marker for the quick snapshot. Read project.yaml for metadata. If the snapshot is sufficient to continue, proceed. Read Session History only if you need deeper context on a specific decision. Acknowledge prior decisions. Summarize where we left off. Don't re-ask settled questions. Continue from the appropriate phase.
Updating Existing Projects
When a user wants to revisit a shipped or in-progress project (e.g., "update requirements for X", "re-run market research on X", "add a feature to X's plan"):
What to Preserve
- All existing decisions in
memory.md— don't re-ask settled questions - Artifact structure and format — update in place, don't regenerate from scratch
- Session history — append to
memory.mdsession history table - Existing transcript files — create a new transcript, never overwrite old ones
What to Update
- Run only the phases relevant to the change:
- New requirements? → Update HANDOFF.md requirements signals, re-check decisions
- Market changed? → Re-run Phase 2, update learnings and risks
- Scope shift? → Update CHARTER.md, HANDOFF.md
- New risk identified? → Update risks-and-considerations.md, HANDOFF.md risk summary
- After any artifact update, re-run the cross-reference validation (Phase 6 matrix) on affected artifacts
- Update
project.yamlupdateddate - Update
memory.mdwith what changed, why, and current status
What NOT to Do
- Don't regenerate the full artifact suite for a minor change
- Don't reset project status — an update to a shipped project keeps it shipped
- Don't delete or overwrite previous transcripts
- Don't re-ask questions that were already answered unless the user explicitly wants to reconsider
Principles Integration
The skill does NOT hardcode a decision framework. Instead, it references the user's workspace principles throughout every session.
On workspace load, read .preflight/PRINCIPLES.md and use its contents to:
- Evaluate tradeoffs during Q&A (apply the user's decision framework)
- Flag anti-patterns the user has defined
- Validate alignment during Phase 6 ("Principles aligned?")
- Inform risk assessment dimensions in Phase 4
The defaults/PRINCIPLES.md ships with an opinionated starting framework. Users can fully replace it to match their own thinking style. Per-project PRINCIPLES.md overrides workspace-level principles.
If no PRINCIPLES.md exists (corrupted workspace), fall back to general best practices: validate feasibility, assess operational readiness, evaluate reversibility, understand failure impact, and flag over-engineering.
What NOT to Do
- Don't jump to implementation before vision is clear
- Don't batch questions — one at a time
- Don't generate partial artifact suites — complete set for the domain or nothing
- Don't force software artifacts (HANDOFF.md) onto non-software projects
- Don't store user data in this skill's directory
- Don't skip synthesis checkpoints
- Don't assume the project is software — confirm