start
Start — Project Bootstrap Skill
Overview
Uses a 6-module framework to progressively transform a vague project idea into a complete set of bootstrap documents. Adapted from the prompt-architect 8-module pattern.
Without these documents, the Sentinel maintenance pipeline cannot operate:
- §4.2 compaction needs ARCHITECTURE.md as output target
- §4.3 routing needs PRD.md to judge which tools are relevant
- §4.4 chain-triggers need directory CLAUDE.md to sync against
Language Behavior
Default to English. If the user writes in Chinese, respond in Chinese. Match the user's language throughout the session.
8-Module Framework
| # | Module | Core Question | Output Target |
|---|---|---|---|
| 1 | Project Identity | What is this? Who is it for? What problem does it solve? | PRD.md §1 |
| 2 | Core Requirements | What must it do? Priority? Acceptance criteria? | PRD.md §2-3 |
| 3 | Use Cases | What are the key user flows? Happy path + edge cases? | PRD.md §4 |
| 4 | Assumptions & Dependencies | What do we assume to be true? What do we depend on? | PRD.md §5 |
| 5 | Constraints & Non-Goals | What is out of scope? Known limitations? Risks? | PRD.md §6 |
| 6 | Tech Stack | What languages, frameworks, external services? | ARCHITECTURE.md §1 |
| 7 | Architecture & Module Boundaries | How are components organized? | ARCHITECTURE.md §2-3 |
| 8 | Development Workflow & Quality | How does the team work? What standards? | CLAUDE.md rules |
Optional module (ask only if applicable):
| # | Module | Core Question | Output Target |
|---|---|---|---|
| M | Metrics & Targets | What quantifiable success looks like? | PRD.md §7 |
Applicability: skip for research prototypes / personal experiments. Ask for production apps / team projects.
Process
Phase 1: Intake and Quick Diagnosis
Sentinel-Aware Scanning
Before scanning, check for .sentinel/manifest.json:
- If found: read the
sentinel_ownedandstart_scan_excludedarrays - Exclude all listed paths from the diagnostic scan — these are pre-installed Sentinel SDK infrastructure (tests, docs, manifests), NOT the user's project
- Do NOT infer project identity, tech stack, or architecture from excluded paths
.sentinel/and.claude/are always excluded (framework internals)- If
.sentinel/manifest.jsondoes not exist: scan everything (non-Sentinel project)
This ensures /start sees a clean slate in Sentinel-initialized projects while still detecting user-created files correctly.
File Detection
Read existing project files (respecting exclusions above) to detect what already exists:
PRD.md— if exists, this is an UPDATE, not a fresh startARCHITECTURE.md— if exists, preserve and updateCLAUDE.md— if exists, preserve human rulesprogress.yaml— if exists, preserve constraintsREADME.md— may contain project context (skip if insentinel_owned)docs/— may contain design documents (skip sentinel-owned paths within)- Source code directories — may indicate existing architecture (skip
.sentinel/,.claude/)
Output a diagnostic table:
## Project Bootstrap Diagnostic
| # | Module | Status | Findings |
|---|--------|--------|----------|
| 1 | Project Identity | Partial | README.md mentions "HCI research project" but no formal scope |
| 2 | Core Requirements | Missing | No PRD or requirements document found |
| 3 | Use Cases | Missing | No user flows documented |
| 4 | Assumptions & Dependencies | Missing | No assumptions listed |
| 5 | Constraints & Non-Goals | Missing | No non-goals documented |
| 6 | Tech Stack | Covered | Python files detected, no framework declarations |
| 7 | Architecture | Partial | Directory structure exists but no ARCHITECTURE.md |
| 8 | Workflow & Quality | Partial | CLAUDE.md has some rules, no testing/CI conventions |
| M | Metrics (optional) | N/A | Research prototype — metrics not applicable |
Status criteria:
- Covered: Sufficient information exists in project files
- Partial: Some information exists but incomplete
- Missing: Not documented anywhere
Phase 2: Applicability Assessment
Not every module needs full elicitation. Assess based on project maturity:
| Project State | Typical Approach |
|---|---|
| Empty directory | Full 8-module interview |
| Existing code, no docs | Extract from code first, label items as inferred vs confirmed, run confirmation pass with user |
| Existing docs, incomplete | Fill gaps only |
| Full docs, re-bootstrap | Validate and update |
Use AskUserQuestion to confirm assessment:
I've analyzed your project. Here's what I found and what's missing.
[diagnostic table]
I recommend focusing on modules [X, Y, Z]. Does this match your priorities?
Also — is there any context I should know that isn't in the files?
Phase 3: Module-by-Module Completion
For each module with status "Missing" or "Partial", use AskUserQuestion to fill gaps.
Question priority (highest to lowest):
- Module 1 — Project Identity (everything else depends on this)
- Module 2 — Core Requirements (defines what the project must do)
- Module 3 — Use Cases (makes requirements concrete and testable)
- Module 4 — Assumptions & Dependencies (surfaces hidden premises)
- Module 5 — Constraints & Non-Goals (prevents scope creep)
- Module 6 — Tech Stack (constrains architecture choices)
- Module 7 — Architecture (module boundaries)
- Module 8 — Workflow (generates CLAUDE.md rules)
- Module M — Metrics (optional, only for production/team projects)
Questioning strategy:
- Maximum 4 questions per round (AskUserQuestion limit)
- Each question provides 2-4 options plus custom
- If user says "you decide" or "not sure", suggest a reasonable default and confirm
- When answers are vague, use example-driven follow-ups ("Can you give me an example of how a user would do X?")
- After each round, update diagnostic table
Quality gate before finalizing PRD:
- Each requirement must have: actor + action + acceptance criterion
- If any requirement lacks acceptance criteria, ask a follow-up
- If overall confidence is low, output "Draft PRD" (not "Final PRD") and list unresolved questions
Module-specific question templates:
Module 1 — Project Identity
- "Describe your project in one sentence" — Open-ended
- "What problem does this project solve? For whom?" — Open-ended
- "Who is the primary user?" — Options: Developer / End user / Research audience / Internal team
- "What is the project scope?" — Options: Library/toolkit / Web application / CLI tool / Research prototype / Other
Module 2 — Core Requirements
- "List 3-5 things this project MUST do" — Open-ended
- "Which of these are MUST-have vs SHOULD-have vs COULD-have?" — Prioritization (MoSCoW)
- "What is the primary deliverable?" — Options: Working software / Research paper + prototype / API / Documentation + templates
- "What does 'done' look like for v1?" — Open-ended
Module 3 — Use Cases
- "Describe the main user flow (happy path): user does X → system does Y → outcome Z" — Open-ended
- "What could go wrong? Any edge cases to handle?" — Open-ended
- "For each MUST requirement, what is the acceptance test?" — One per requirement
If user gives minimal answers, propose use cases based on requirements and ask for confirmation.
Module 4 — Assumptions & Dependencies
- "What do you assume to be true that, if wrong, would change the approach?" — Open-ended
- Examples: "OAuth provider supports refresh tokens", "Data fits in memory", "Users have modern browsers"
- "What external systems does this project depend on?" — Open-ended
- Examples: PostgreSQL, third-party APIs, specific OS, specific hardware
- "Any dependency that might change or become unavailable?" — Open-ended
Label each item as confirmed (verified) or assumed (needs validation). Assumed items are candidates for future progress.yaml verification.
Module 5 — Constraints & Non-Goals
- "What is explicitly OUT of scope for v1?" — Open-ended
- "Any known technical limitations?" — Options: No auth needed / No real-time / No mobile / Other
- "Any risks that could derail the project?" — Open-ended (merge risks into constraints as "constraint that might appear")
Module 6 — Tech Stack
- "Primary language?" — Options: Python / TypeScript / Go / Rust / Other
- "Key frameworks or libraries?" — Open-ended (suggest based on project type)
- "External services or APIs?" — Options: Database / Cloud APIs / MCP servers / CLI tools / None
- "Package manager?" — Options: pip/uv / npm/bun / cargo / Other
Module 7 — Architecture
Based on confirmed requirements, use cases, and tech stack, PROPOSE an initial architecture:
- Module breakdown (top-level directories and their responsibilities)
- Key interfaces between modules
- Data flow overview
Ask user to confirm, modify, or reject the proposal.
Module 8 — Workflow & Quality
- "Testing approach?" — Options: Unit tests required / Integration tests / Manual testing / TDD
- "Code style preferences?" — Open-ended (or extract from existing CLAUDE.md)
- "Any tools or conventions the AI agent should always follow?" — Open-ended
- "Commit/PR workflow?" — Options: Direct to main / Feature branches / PR required
Module M — Metrics (optional)
Ask ONLY if project is production/team-facing. Skip for research prototypes.
- "What does success look like, quantitatively?" — Open-ended
- "Any performance targets?" — Options: Response time / Throughput / Availability / Not applicable
- "Current baseline for comparison?" — Open-ended or "N/A (greenfield)"
Phase 4: Generate Documents
Once all applicable modules reach "Covered", generate the bootstrap documents.
4a. PRD.md
Use status: draft if quality gate found unresolved questions. Use status: v1.0 if all requirements have acceptance criteria.
---
project: {name}
version: v1.0 # or "draft" if quality gate has unresolved items
created_at: {YYYY-MM-DD}
updated_at: {YYYY-MM-DD}
---
# {Project Name} — Product Requirements Document
## 1. Project Identity
- **Name**: {name}
- **Problem statement**: {what problem this solves, from Module 1}
- **Target user**: {user}
- **Scope**: {scope}
## 2. Core Requirements
| # | Requirement | Priority | Acceptance Criteria |
|---|-------------|----------|---------------------|
| R1 | {requirement} | MUST | {testable criterion} |
| R2 | {requirement} | SHOULD | {testable criterion} |
| R3 | {requirement} | COULD | {testable criterion} |
## 3. Deliverables
- **Primary deliverable**: {from Module 2}
- **v1 definition of done**: {from Module 2}
## 4. Key Use Cases
### UC1: {use case name}
**Actor:** {who}
**Flow:** {step 1 → step 2 → outcome}
**Edge cases:** {what could go wrong}
### UC2: {use case name}
...
## 5. Assumptions and Dependencies
### Assumptions (must remain true for this approach to work)
| # | Assumption | Status | Impact if wrong |
|---|-----------|--------|-----------------|
| A1 | {assumption} | assumed | {consequence} |
| A2 | {assumption} | confirmed | {consequence} |
### Dependencies (external systems this project relies on)
| # | Dependency | Version/Constraint | Risk if unavailable |
|---|-----------|-------------------|---------------------|
| D1 | {system} | {version} | {impact} |
## 6. Constraints and Non-Goals
### Non-Goals (explicitly out of scope for v1)
{From Module 5}
### Known Limitations
{From Module 5}
### Risks
{From Module 5 — constraints that might appear in the future}
## 7. Metrics and Targets (optional)
{Only if Module M was applicable. Otherwise: "N/A — research prototype / personal project."}
| Metric | Baseline | Target |
|--------|----------|--------|
| {metric} | {current or N/A} | {target} |
## 8. Success Criteria
{Derived from requirements acceptance criteria + metrics if applicable}
## Changelog
| Version | Date | What changed | Why |
|---------|------|-------------|-----|
| v1.0 | {date} | Initial PRD | Project bootstrap via /start |
## Unresolved Questions
{List any items that could not be resolved during the interview. Only present if status is "draft".}
4b. ARCHITECTURE.md
# {Project Name} — Architecture
## 1. Tech Stack
- **Language**: {from Module 3}
- **Frameworks**: {from Module 3}
- **External services**: {from Module 3}
- **Package manager**: {from Module 3}
## 2. Module Structure
{From Module 4 — table of top-level directories + responsibilities}
| Directory | Responsibility | Key Files |
|-----------|---------------|-----------|
| src/auth/ | Authentication and authorization | oauth.py, middleware.py |
| ... | ... | ... |
## 3. Data Flow
{From Module 4 — how data moves between modules}
## 4. Constraints
{From Module 5 — technical limitations that affect architecture}
4c. CLAUDE.md (root, prescriptive rules)
# {Project Name}
Architecture and stack: see ARCHITECTURE.md
Requirements: see PRD.md
## Rules
{From Module 6 — testing, style, conventions}
{From existing CLAUDE.md if present — preserve human rules}
## Workflow
{From Module 6 — commit, PR, CI conventions}
4d. progress.yaml (machine-readable intake funnel)
schema_version: 1
entries:
- date: "{TODAY'S DATE}"
title: Project initialized
status: unprocessed
session_report: ""
next_steps:
- Run /routing to select project tools
candidates: []
Phase 5: Set Up Directory Structure and Activate Sentinel
Based on the architecture from Module 4:
- Create the module directories listed in ARCHITECTURE.md
- Create directory CLAUDE.md manifests for each module (AI-managed, initially minimal)
- Create
review/directory for review reports - Ensure
.claude/skills/and.claude/rules/exist
5a. Install git hooks (automatic)
Run: bash .sentinel/hooks/install.sh
This is low-risk and idempotent. Execute without asking.
If .git/ doesn't exist yet, skip and note: "Hooks will be installed after git init."
5b. Backfill YAML front matter for existing source files (requires confirmation)
Scan the project for .py, .ts, .js, .sh files without YAML front matter.
If found:
- Show summary: "Found N source files without YAML headers. Shall I add front matter?"
- Use AskUserQuestion to confirm
- If approved: generate headers for each file (
input/output/pos/last_modified) - If declined: skip, note in progress.yaml as a future task
5c. Create directory manifests for existing code directories (requires confirmation)
Scan the project for directories containing source files but no CLAUDE.md.
If found:
- Show summary: "Found N directories without manifests. Shall I create them?"
- Use AskUserQuestion to confirm
- If approved: generate directory
CLAUDE.mdfor each - If declined: skip
Phase 6: Confirm Activation
Tell the developer:
- PRD.md, ARCHITECTURE.md, CLAUDE.md, progress.yaml are ready
- Directory structure is created
- Git hooks are installed (soft warnings on commit)
- [If backfill was done] N source files now have YAML front matter
- [If manifests were created] N directory manifests created
- Chain-trigger pipeline is now active (auto-updates headers and manifests on code changes)
- Next step: run
/routingto scan available tools and select what this project needs - After routing: run
/boundaryto generate boundary declarations
Sentinel is now operational. All maintenance pipelines are active.
If Updating Existing Documents
- PRD.md exists: Show diff of proposed changes, ask for confirmation before overwriting
- ARCHITECTURE.md exists: Merge new information, preserve existing module descriptions
- CLAUDE.md exists: NEVER overwrite human rules; only append new rules from Module 6 at the end
- progress.yaml exists: NEVER modify; constraints are sacred
Anti-Patterns
| Do Not | Do Instead |
|---|---|
| Generate PRD without asking the user | Interview first, generate from answers |
| Assume architecture from project name alone | Ask about requirements + use cases before proposing architecture |
| Overwrite existing CLAUDE.md rules | Preserve and append |
| Skip Module 5 (constraints) | Non-goals prevent scope creep — always ask |
| Skip Module 4 (assumptions) | Unchecked assumptions are the #1 source of context degradation |
| Generate all docs before user confirms architecture | Propose architecture in Module 7, wait for confirmation |
| Propose architecture without knowing tech stack | Module 6 before Module 7, always |
| Accept vague requirements without acceptance criteria | Use example-driven follow-ups to make them testable |
| Treat code-extracted info as confirmed | Label as inferred, run confirmation pass with user |
| Output "Final PRD" when questions are unresolved | Use "Draft PRD" with Unresolved Questions section |
| Force Module M (Metrics) on research projects | Skip unless production/team project |