import type { InterviewTemplate } from './types'; /** Built-in interview templates. The format is data, so user-authored templates can slot in later. */ const UNDERSTAND_COMPANY: InterviewTemplate = { id: 'understand-company', title: 'Understand a company', description: 'Build a profile of a company — what it does, who it serves, and its brand — to inform later work.', artifacts: [{ path: '/.interviews/company-profile.md', description: 'The company profile' }], items: [ { id: 'identity', elicit: "The company's name and a one-line description of what it does.", completion: [{ type: 'judge', criteria: 'The /.interviews/company-profile.md artifact states the company name and a clear description of what it does.', description: 'Name and description recorded' }], }, { id: 'audience', elicit: 'Who the company serves — its target customers or audience.', completion: [{ type: 'judge', criteria: 'The company-profile artifact describes the target audience or customers.', description: 'Audience recorded' }], }, { id: 'offerings', elicit: 'The main products or services the company offers.', completion: [{ type: 'judge', criteria: 'The company-profile artifact lists the main products or services.', description: 'Offerings recorded' }], }, { id: 'brand', elicit: "The brand's tone and any visual identity (colors, fonts). If they have a logo, ask them to add it to the project, then confirm it with ls.", completion: [{ type: 'judge', criteria: 'The company-profile artifact describes the brand tone or visual identity, and notes the logo status (present at a path, or none).', description: 'Brand and logo status recorded' }], }, { id: 'assets', required: false, elicit: 'Any existing assets already in the project (logo, images, copy) — check with ls and note what is present.', completion: [{ type: 'judge', criteria: 'The company-profile artifact notes any existing project assets (or states there are none).', description: 'Existing assets noted' }], }, ], handoff: { label: 'Build a site from this', prompt: 'Build a website for this company using the profile in /.interviews/company-profile.md.', mode: 'code', }, }; const PLAN_FEATURE: InterviewTemplate = { id: 'plan-feature', title: 'Plan a feature', description: 'Turn a feature idea into a clear, buildable spec through a few focused questions.', artifacts: [{ path: '/.interviews/feature-plan.md', description: 'The feature spec' }], items: [ { id: 'summary', elicit: 'What the feature is and the problem it solves.', completion: [{ type: 'judge', criteria: 'The /.interviews/feature-plan.md artifact describes what the feature is and the problem it solves.', description: 'Feature and problem recorded' }], }, { id: 'users', elicit: 'Who uses the feature and the primary user flow.', completion: [{ type: 'judge', criteria: 'The feature-plan artifact describes who uses it and the primary user flow.', description: 'Users and flow recorded' }], }, { id: 'scope', elicit: "What's in scope for a first version and what is explicitly out of scope.", completion: [{ type: 'judge', criteria: 'The feature-plan artifact states both what is in scope for v1 and what is out of scope.', description: 'Scope recorded' }], }, { id: 'acceptance', elicit: "Acceptance criteria — how you'll know the feature is done.", completion: [{ type: 'judge', criteria: 'The feature-plan artifact lists concrete acceptance criteria.', description: 'Acceptance criteria recorded' }], }, ], handoff: { label: 'Implement this plan', prompt: 'Implement the feature spec in /.interviews/feature-plan.md.', mode: 'code', }, }; const PLAN_WEBSITE: InterviewTemplate = { id: 'plan-website', title: 'Plan a website', description: 'Turn an idea into a buildable plan for a site — its purpose, audience, pages, and the action it should drive.', artifacts: [{ path: '/.interviews/site-plan.md', description: 'The site plan' }], items: [ { id: 'purpose', elicit: "The site's purpose — what it's for, and the single most important thing a visitor should do or take away. (Glance at the project first; if something already exists, plan around it.)", completion: [{ type: 'judge', criteria: 'The /.interviews/site-plan.md artifact states the purpose of the site and its primary goal.', description: 'Purpose recorded' }], }, { id: 'audience', elicit: 'Who the site is for — its primary visitors.', completion: [{ type: 'judge', criteria: 'The site-plan artifact describes the target audience or visitors.', description: 'Audience recorded' }], }, { id: 'pages', elicit: 'The pages or main sections the site needs (for example: home, about, services, contact).', completion: [{ type: 'judge', criteria: 'The site-plan artifact lists the pages or main sections the site needs.', description: 'Pages recorded' }], }, { id: 'action', elicit: 'The primary action you want visitors to take — the main call-to-action or conversion.', completion: [{ type: 'judge', criteria: 'The site-plan artifact states the primary call-to-action or conversion goal.', description: 'Primary action recorded' }], }, { id: 'content', required: false, elicit: 'Any content, copy, or assets you already have — check the project with ls — and what still needs to be created.', completion: [{ type: 'judge', criteria: 'The site-plan artifact notes existing content/assets in the project and what still needs creating (or states there is none yet).', description: 'Content/assets noted' }], }, ], handoff: { label: 'Build this site', prompt: 'Build the website described in /.interviews/site-plan.md.', mode: 'code', }, }; const PREPARE_PUBLISH: InterviewTemplate = { id: 'prepare-publish', title: 'Get ready to publish', description: 'Check a site over before going live — domain, SEO basics, and readiness — grounded in what is actually in the project.', artifacts: [{ path: '/.interviews/publish-checklist.md', description: 'The publish checklist' }], items: [ { id: 'destination', elicit: 'Where this will live — a custom domain, or the default hosting URL. Note it even if undecided.', completion: [{ type: 'judge', criteria: 'The /.interviews/publish-checklist.md artifact records the intended domain or hosting URL (or notes it is undecided).', description: 'Destination recorded' }], }, { id: 'identity', elicit: 'The site title and a one-line description for search engines and link previews.', completion: [{ type: 'judge', criteria: 'The publish-checklist artifact records the site title and a meta description.', description: 'Title and description recorded' }], }, { id: 'seo-basics', elicit: 'Check the SEO basics: read the HTML and verify there is a