viepilot 2.23.0 → 2.45.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CHANGELOG.md +288 -0
  2. package/README.md +6 -6
  3. package/bin/viepilot.cjs +140 -1
  4. package/bin/vp-tools.cjs +204 -0
  5. package/docs/brainstorm/session-2026-04-20.md +261 -0
  6. package/docs/brainstorm/session-2026-04-24.md +131 -0
  7. package/docs/brainstorm/session-2026-04-25.md +109 -0
  8. package/docs/skills-reference.md +22 -0
  9. package/docs/user/features/adapters.md +2 -2
  10. package/docs/user/features/scaffold-first.md +62 -0
  11. package/docs/user/features/skill-registry.md +125 -0
  12. package/lib/adapters/antigravity.cjs +5 -4
  13. package/lib/domain-packs/ai-product.json +33 -0
  14. package/lib/domain-packs/data-science.json +33 -0
  15. package/lib/domain-packs/devops.json +33 -0
  16. package/lib/domain-packs/mobile.json +33 -0
  17. package/lib/domain-packs/web-saas.json +33 -0
  18. package/lib/skill-installer.cjs +274 -0
  19. package/lib/skill-registry.cjs +212 -0
  20. package/lib/viepilot-calibrate.cjs +279 -0
  21. package/lib/viepilot-persona.cjs +446 -0
  22. package/lib/viepilot-update.cjs +113 -0
  23. package/package.json +1 -1
  24. package/skills/vp-audit/SKILL.md +67 -9
  25. package/skills/vp-auto/SKILL.md +54 -0
  26. package/skills/vp-brainstorm/SKILL.md +124 -2
  27. package/skills/vp-crystallize/SKILL.md +82 -0
  28. package/skills/vp-debug/SKILL.md +37 -0
  29. package/skills/vp-design/SKILL.md +219 -0
  30. package/skills/vp-docs/SKILL.md +37 -0
  31. package/skills/vp-evolve/SKILL.md +69 -6
  32. package/skills/vp-info/SKILL.md +37 -0
  33. package/skills/vp-pause/SKILL.md +37 -0
  34. package/skills/vp-persona/SKILL.md +207 -0
  35. package/skills/vp-proposal/SKILL.md +37 -0
  36. package/skills/vp-request/SKILL.md +62 -6
  37. package/skills/vp-resume/SKILL.md +37 -0
  38. package/skills/vp-rollback/SKILL.md +61 -1
  39. package/skills/vp-skills/SKILL.md +311 -0
  40. package/skills/vp-status/SKILL.md +37 -0
  41. package/skills/vp-task/SKILL.md +37 -0
  42. package/skills/vp-ui-components/SKILL.md +37 -0
  43. package/skills/vp-update/SKILL.md +37 -0
  44. package/templates/phase/TASK.md +7 -0
  45. package/templates/project/PROJECT-CONTEXT.md +76 -0
  46. package/workflows/audit.md +131 -0
  47. package/workflows/autonomous.md +199 -0
  48. package/workflows/brainstorm.md +1172 -9
  49. package/workflows/crystallize.md +639 -3
  50. package/workflows/design.md +601 -0
  51. package/workflows/evolve.md +9 -0
  52. package/workflows/rollback.md +79 -10
@@ -0,0 +1,109 @@
1
+ # Brainstorm Session — 2026-04-25
2
+
3
+ ## Meta
4
+ - **Session ID**: session-2026-04-25
5
+ - **Topic**: Design.MD × ViePilot Integration (ENH-076)
6
+ - **Status**: Completed
7
+ - **workflow_version**: 2.43.2
8
+ - **Participants**: User + AI
9
+
10
+ ## Summary
11
+ Research session trên tiêu chuẩn Design.MD (Google Labs, April 2026) và brainstorm
12
+ cách tích hợp nó toàn diện vào ViePilot workflow — từ brainstorm → crystallize → auto.
13
+
14
+ ## Research: Design.MD Standard
15
+
16
+ Design.MD là file specification từ Google Labs (21/04/2026, Apache 2.0) — Markdown + YAML
17
+ front matter mô tả visual design system để AI coding agents hiểu brand identity.
18
+
19
+ - **Creator**: Google Labs / Google Stitch 2.0
20
+ - **Format**: YAML front matter (tokens) + Markdown sections (rationale)
21
+ - **Adopted by**: Claude Code, Cursor, Windsurf, Kiro
22
+ - **Community**: awesome-design-md — 55+ brand examples
23
+
24
+ ### Standard sections
25
+ - `colors`: semantic palette (primary, surface, accent, error, success, warning)
26
+ - `typography`: fontFamily, fontSize, fontWeight, lineHeight
27
+ - `spacing`: base unit + scale
28
+ - `rounded`: corner radius tokens
29
+ - `components`: component-specific tokens
30
+
31
+ ---
32
+
33
+ ## Decisions
34
+
35
+ ### D1: Scope — 5 integration points across ViePilot
36
+ 1. **vp-brainstorm**: auto-extract design tokens → generate design.md in session dir
37
+ 2. **vp-crystallize**: mandatory-acknowledge gate + export to project root
38
+ 3. **vp-auto**: preflight reads design.md, injects TOKEN_MAP into UI tasks
39
+ 4. **new skill vp-design**: init/sync/audit/import commands
40
+ 5. **Architect workspace**: design.html visual page
41
+
42
+ ### D2: vp-brainstorm token extraction
43
+ - Triggered when `--ui` flag OR ≥2 design keywords detected
44
+ - tokens extracted to `notes.md ## design_tokens` YAML section
45
+ - design.md written to `.viepilot/ui-direction/{session-id}/design.md`
46
+
47
+ ### D3: vp-crystallize gate — mandatory-acknowledge (not hard block)
48
+ - Trigger: design.md exists OR design_tokens in notes.md OR ≥3 design keywords
49
+ - AUQ with 3 options: Export (recommended) / Finalize & export / Skip with note
50
+ - Skip writes `design_md_status: skipped` (idempotent — won't re-ask same session)
51
+ - Export path: Step 1D.14 — after existing coverage exports
52
+ - Output: project root design.md + ARCHITECTURE.md ## Design System + PROJECT-CONTEXT.md flag
53
+
54
+ ### D4: vp-auto — 3 injection levels
55
+ - Level 1: Silent context injection (always for UI tasks)
56
+ - Level 2: Checklist items (when task has explicit UI acceptance criteria)
57
+ - Level 3: Post-task compliance audit (when task output is HTML file)
58
+ - UI keyword detection: html/css/style/component/tailwind/layout/button/card/form/page etc.
59
+ - Edge cases: backend-only tasks skip, monorepo nearest-design.md wins
60
+
61
+ ### D5: vp-design skill commands
62
+ - `--init`: Q&A from scratch OR import from awesome-design-md (55+ brands)
63
+ - `--sync`: tokens → Tailwind config / CSS variables / SCSS
64
+ - `--audit`: scan implementation vs spec, report deviations
65
+ - `--import [brand]`: fetch community template (Linear, Notion, Stripe...)
66
+
67
+ ### D6: ARCHITECTURE.md Design System section format
68
+ - Token summary table (colors/typography/spacing/rounded)
69
+ - Design principles from design.md ## Overview
70
+ - Reference to design.md at project root
71
+
72
+ ---
73
+
74
+ ## Open Questions
75
+
76
+ - Q1: Should design.md be committed to git by default? (Yes — it's a project artifact like ARCHITECTURE.md)
77
+ - Q2: For vp-design --sync with Tailwind: CSS custom properties or direct tailwind.config.js extension?
78
+ → Probably both, detected by project structure
79
+ - Q3: awesome-design-md catalog integration — fetch at runtime vs. bundle with ViePilot?
80
+ → Fetch at runtime (keep ViePilot lean)
81
+
82
+ ---
83
+
84
+ ## Phases
85
+
86
+ ### Phase 1 (ENH-076 core)
87
+ - 76.1: vp-brainstorm design token extraction + design.md generation
88
+ - 76.2: vp-crystallize Step 1D.14 mandatory gate + export pipeline
89
+ - 76.3: vp-auto preflight 5.5 + TOKEN_MAP injection + post-task audit
90
+ - 76.4: new skill vp-design (SKILL.md + workflows/design.md)
91
+ - 76.5: Architect workspace design.html page
92
+
93
+ ### Phase 2 (polish)
94
+ - 76.6: awesome-design-md runtime catalog integration
95
+ - 76.7: vp-design --sync multi-target (Tailwind + CSS vars + SCSS)
96
+ - 76.8: vp-design --audit full HTML/CSS scan
97
+
98
+ ---
99
+
100
+ ## Action Items
101
+ - [ ] Log ENH-076 via /vp-request
102
+ - [ ] Plan phases via /vp-evolve
103
+ - [ ] Execute via /vp-auto
104
+
105
+ ---
106
+
107
+ ## Project Meta Intake (FEAT-009)
108
+ - Profile already bound — skip intake.
109
+
@@ -525,3 +525,25 @@ Place custom `.pptx`/`.docx` files in `.viepilot/proposal-templates/` to overrid
525
525
  ```
526
526
 
527
527
  Full guide: `docs/user/features/proposal.md`
528
+
529
+ ---
530
+
531
+ ## /vp-skills
532
+
533
+ **Purpose**: Agent-native global skill registry management — scan, list, install, uninstall, update, and inspect third-party skills from any project directory (ENH-062).
534
+
535
+ ### Commands
536
+ | Command | Description |
537
+ |---------|-------------|
538
+ | `/vp-skills scan` | Refresh `~/.viepilot/skill-registry.json` by scanning all adapter dirs |
539
+ | `/vp-skills list` | Display indexed skills table |
540
+ | `/vp-skills install <src>` | Install from npm / `github:<user>/<repo>` / local path |
541
+ | `/vp-skills uninstall <id>` | Remove skill from all adapter directories |
542
+ | `/vp-skills update <id>` | Re-install from original source (`skill-meta.json`) |
543
+ | `/vp-skills info <id>` | Show capabilities, best_practices, and adapter paths |
544
+
545
+ ### Notes
546
+ - Uses installed vp-tools binary (`~/.claude/viepilot/bin/vp-tools.cjs`) — works from any project directory.
547
+ - Fallback: `~/.cursor/viepilot/bin/vp-tools.cjs` for Cursor adapter.
548
+ - Registry file: `~/.viepilot/skill-registry.json` — shared across all projects.
549
+ - Confirmation AUQ prompt before destructive `uninstall` (Claude Code terminal only).
@@ -8,7 +8,7 @@ ViePilot supports multiple AI coding platforms via its adapter system (FEAT-013)
8
8
  |------------|----------|------------|--------------|-------|--------------|
9
9
  | `claude-code` | Claude Code *(default)* | `~/.claude/skills/` | `~/.claude/viepilot/` | ✅ Stop, PreToolUse, … | `/vp-status` |
10
10
  | `cursor-agent` / `cursor-ide` | Cursor | `~/.cursor/skills/` | `~/.cursor/viepilot/` | — | `/vp-status` |
11
- | `antigravity` | Google Antigravity | `~/.antigravity/skills/` | `~/.antigravity/viepilot/` | — | `/vp-status` |
11
+ | `antigravity` | Google Antigravity | `~/.gemini/antigravity/skills/` | `~/.gemini/antigravity/viepilot/` | — | `/vp-status` |
12
12
  | `codex` | OpenAI Codex CLI | `~/.codex/skills/` | `~/.codex/viepilot/` | — | `$vp-status` |
13
13
  | `copilot` | GitHub Copilot | `~/.config/gh-copilot/skills/` | `~/.config/gh-copilot/viepilot/` | — | `/vp-status` |
14
14
 
@@ -47,7 +47,7 @@ Skill source files use the neutral placeholder `{envToolDir}` in `execution_cont
47
47
  At install time, `{envToolDir}` is replaced with each adapter's `executionContextBase`:
48
48
  - `claude-code` → `.claude/viepilot`
49
49
  - `cursor` → `.cursor/viepilot`
50
- - `antigravity` → `.antigravity/viepilot`
50
+ - `antigravity` → `.gemini/antigravity/viepilot`
51
51
  - `codex` → `.codex/viepilot`
52
52
  - `copilot` → `.config/gh-copilot/viepilot`
53
53
 
@@ -0,0 +1,62 @@
1
+ # Scaffold-First Gate (BUG-020)
2
+
3
+ `vp-auto` enforces a **scaffold-first** rule for framework-based projects: when a task initializes a new project, the canonical scaffold command MUST run before any framework-generated files are created manually.
4
+
5
+ ## How It Works
6
+
7
+ 1. **Detection** — vp-auto detects "project setup" tasks by keywords in the task title/objective: "set up", "initialize", "create project", "scaffold", "bootstrap", "new project"
8
+ 2. **Marker check** — checks for a framework marker file (e.g. `artisan` for Laravel, `manage.py` for Django) to determine if the project is already scaffolded
9
+ 3. **Scaffold command** — if not yet scaffolded, runs the scaffold command from either:
10
+ - `~/.viepilot/stacks/{stack}/SUMMARY.md` → `## Scaffold` → `init_command:` field (takes priority)
11
+ - The built-in heuristic table in `workflows/autonomous.md`
12
+ 4. **Block list** — refuses to create framework-native files (artisan, next.config.*, manage.py, nest-cli.json, pom.xml, etc.) without prior scaffold
13
+
14
+ ## Adding a Scaffold Command to a Stack
15
+
16
+ In `~/.viepilot/stacks/{your-stack}/SUMMARY.md`, append:
17
+
18
+ ```markdown
19
+ ## Scaffold
20
+
21
+ init_command: composer create-project laravel/laravel {name}
22
+ marker_file: artisan
23
+ ```
24
+
25
+ Replace `{name}` with the project directory name placeholder — vp-auto substitutes the actual project name at runtime.
26
+
27
+ ## Built-in Supported Stacks
28
+
29
+ | Stack | Scaffold command | Marker file |
30
+ |-------|-----------------|-------------|
31
+ | laravel | `composer create-project laravel/laravel {name}` | `artisan` |
32
+ | laravel-php84 | `composer create-project laravel/laravel:^11 {name}` | `artisan` |
33
+ | nextjs | `npx create-next-app@latest {name}` | `next.config.js` |
34
+ | nextjs-tailwind-shadcn-threejs | `npx create-next-app@latest {name} --typescript --tailwind --eslint --app` | `next.config.js` |
35
+ | nestjs | `npx @nestjs/cli new {name}` | `nest-cli.json` |
36
+ | rails | `rails new {name}` | `config/application.rb` |
37
+ | django | `django-admin startproject {name} .` | `manage.py` |
38
+ | spring-boot* | `spring init --dependencies=web,data-jpa,validation {name}` | `pom.xml` |
39
+ | nuxt / vuejs* | `npx nuxi@latest init {name}` | `nuxt.config.ts` |
40
+ | react | `npx create-react-app {name}` | `src/index.js` |
41
+ | electron | `npx create-electron-app {name}` | `electron-builder.yml` |
42
+
43
+ ## Never-Handcraft Block List
44
+
45
+ The following files must never be created manually in a project setup task without first running the scaffold command:
46
+
47
+ - `artisan`, `composer.json` (Laravel)
48
+ - `next.config.js`, `next.config.ts`, `pages/_app.*`, `app/layout.*` (Next.js)
49
+ - `nest-cli.json`, `src/main.ts` + `tsconfig.json` combo (NestJS)
50
+ - `manage.py`, `wsgi.py`, `asgi.py` (Django)
51
+ - `config/application.rb`, `config/routes.rb`, `Gemfile` (Rails)
52
+ - `pom.xml` or `build.gradle` with Spring Boot starters
53
+
54
+ ## Bypassing the Gate
55
+
56
+ To override the gate (e.g. the project is already partially set up), add to the task file under `## Implementation Notes`:
57
+
58
+ ```
59
+ scaffold_gate_waiver: project already scaffolded — artisan exists at {path}
60
+ ```
61
+
62
+ Or at execution time, select "confirm project already scaffolded" at the control-point prompt.
@@ -0,0 +1,125 @@
1
+ # Skill Registry
2
+
3
+ ViePilot can discover and index skills installed across all adapter directories. The registry powers workflow skill integration — brainstorm silently applies relevant skill best practices during UI-Direction sessions, crystallize locks skill decisions, and vp-auto executes with no re-prompting.
4
+
5
+ ## Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `vp-tools scan-skills` | Scan all adapter dirs and write `~/.viepilot/skill-registry.json` |
10
+ | `vp-tools list-skills` | Display indexed skills from the registry |
11
+ | `vp-tools install-skill <source>` | Install a third-party skill *(Phase 91 — coming soon)* |
12
+
13
+ ## Extended SKILL.md Format
14
+
15
+ Third-party skills (and built-in vp-* skills) can add optional metadata sections to their `SKILL.md`:
16
+
17
+ ```markdown
18
+ ## Capabilities
19
+ - ui-generation
20
+ - component-design
21
+ - responsive-layout
22
+
23
+ ## Tags
24
+ ui, design, frontend, css, html
25
+
26
+ ## Best Practices
27
+ - Mobile-first: design breakpoints from 320px up
28
+ - Use design tokens for consistency across components
29
+ - BEM naming convention for CSS class names
30
+ ```
31
+
32
+ ### Section rules
33
+
34
+ | Section | Format | Description |
35
+ |---------|--------|-------------|
36
+ | `## Capabilities` | One capability per line (`- item`) | Machine-readable ability tags used for skill matching |
37
+ | `## Tags` | Comma-separated or one per line | Human-readable keywords for discovery |
38
+ | `## Best Practices` | One practice per line (`- item`) | Applied silently when skill is matched in brainstorm/vp-auto |
39
+
40
+ All sections are **optional** — skills without them are still indexed and available.
41
+
42
+ ### Backward compatibility
43
+
44
+ Existing `SKILL.md` files that do not contain these sections continue to work without modification. The scanner indexes them with empty `capabilities`, `tags`, and `best_practices` arrays and marks them as `(legacy — no capabilities)` in `list-skills` output.
45
+
46
+ ## Scanner
47
+
48
+ `vp-tools scan-skills` traverses the following adapter directories:
49
+
50
+ | Adapter | Skill directory |
51
+ |---------|----------------|
52
+ | Claude Code | `~/.claude/skills/` |
53
+ | Cursor | `~/.cursor/skills/` |
54
+ | Codex | `~/.codex/skills/` |
55
+ | Antigravity | `~/.gemini/antigravity/skills/` |
56
+ | GitHub Copilot | `~/.config/gh-copilot/skills/` |
57
+
58
+ Adapter directories that do not exist are silently skipped. The same skill found in multiple adapter directories is merged into a single registry entry with all adapters listed.
59
+
60
+ ## Registry Format
61
+
62
+ The registry is written to `~/.viepilot/skill-registry.json`:
63
+
64
+ ```json
65
+ {
66
+ "version": "1.0",
67
+ "last_scan": "2026-04-20T10:30:00.000Z",
68
+ "scan_paths": [
69
+ "/Users/you/.claude/skills",
70
+ "/Users/you/.cursor/skills"
71
+ ],
72
+ "skills": [
73
+ {
74
+ "id": "frontend-design",
75
+ "name": "frontend-design",
76
+ "source": null,
77
+ "version": null,
78
+ "description": "Opinionated frontend design guidance for UI-Direction sessions.",
79
+ "capabilities": ["ui-generation", "component-design", "responsive-layout"],
80
+ "tags": ["ui", "design", "frontend", "css"],
81
+ "best_practices": [
82
+ "Mobile-first: design breakpoints from 320px up",
83
+ "Use design tokens for consistency"
84
+ ],
85
+ "adapters": ["claude-code", "cursor"],
86
+ "installed_paths": {
87
+ "claude-code": "/Users/you/.claude/skills/frontend-design",
88
+ "cursor": "/Users/you/.cursor/skills/frontend-design"
89
+ }
90
+ }
91
+ ]
92
+ }
93
+ ```
94
+
95
+ ### Schema reference
96
+
97
+ | Field | Type | Description |
98
+ |-------|------|-------------|
99
+ | `id` | string | Directory name (unique per skill) |
100
+ | `name` | string | Display name (defaults to `id`) |
101
+ | `source` | string \| null | Installation source: `npm:pkg`, `github:org/repo`, `./path`, or `null` for manually placed skills |
102
+ | `version` | string \| null | Version from `skill-meta.json` (future); `null` for legacy skills |
103
+ | `description` | string | First non-heading paragraph from `SKILL.md` |
104
+ | `capabilities` | string[] | From `## Capabilities` section |
105
+ | `tags` | string[] | From `## Tags` section |
106
+ | `best_practices` | string[] | From `## Best Practices` section |
107
+ | `adapters` | string[] | Adapter IDs where this skill is installed |
108
+ | `installed_paths` | object | `{ adapterId: absolutePath }` |
109
+
110
+ ## Workflow Integration
111
+
112
+ The registry is used automatically by ViePilot workflows:
113
+
114
+ ### Brainstorm (UI-Direction)
115
+ When UI signals are detected during a brainstorm session, relevant skills (matched by `capabilities`) are silently applied — their `best_practices` are included in HTML generation without prompting. Matched skills are recorded in `notes.md` under `## skills_used`.
116
+
117
+ ### Crystallize (skill decision lock)
118
+ After the brainstorm scope is locked, crystallize presents the skills used and asks the user to confirm which are required vs optional per phase. The decision is written to `PROJECT-CONTEXT.md` under `## Skills`.
119
+
120
+ ### vp-auto (silent execution)
121
+ vp-auto reads `## Skills` from `PROJECT-CONTEXT.md` and injects skill best practices per task — no re-asking. Decisions made at crystallize time are final.
122
+
123
+ ## Refreshing the Registry
124
+
125
+ Run `vp-tools scan-skills` any time you install a new skill manually or after `vp-tools install-skill` (which runs it automatically). The registry is not auto-refreshed on session start.
@@ -6,10 +6,10 @@ const fs = require('fs');
6
6
  module.exports = {
7
7
  id: 'antigravity',
8
8
  name: 'Antigravity',
9
- skillsDir: (home) => path.join(home, '.antigravity', 'skills'),
10
- viepilotDir: (home) => path.join(home, '.antigravity', 'viepilot'),
9
+ skillsDir: (home) => path.join(home, '.gemini', 'antigravity', 'skills'),
10
+ viepilotDir: (home) => path.join(home, '.gemini', 'antigravity', 'viepilot'),
11
11
  // {envToolDir} in SKILL.md files resolves to this value at install time (ENH-035)
12
- executionContextBase: '.antigravity/viepilot',
12
+ executionContextBase: '.gemini/antigravity/viepilot',
13
13
  // Post-install hint shown in "Next actions" after viepilot install
14
14
  postInstallHint: 'Open project and run /vp-status',
15
15
  hooks: {
@@ -29,6 +29,7 @@ module.exports = {
29
29
  ],
30
30
  isAvailable: (home) => {
31
31
  const h = home || os.homedir();
32
- return fs.existsSync(path.join(h, '.antigravity'));
32
+ return fs.existsSync(path.join(h, '.gemini', 'antigravity'))
33
+ || fs.existsSync(path.join(h, '.antigravity'));
33
34
  }
34
35
  };
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "ai-product",
3
+ "label": "AI Product / LLM Application",
4
+ "topic_priority": ["llm-integration", "rag-pipeline", "prompt-mgmt", "eval", "ux", "guardrails"],
5
+ "extra_topics": [
6
+ {
7
+ "id": "llm-integration",
8
+ "label": "LLM Integration",
9
+ "questions": ["LLM provider (OpenAI/Anthropic/Gemini/local)?", "Model selection strategy (cost vs quality)?", "Streaming vs batch response?", "Fallback chain if primary model fails?"]
10
+ },
11
+ {
12
+ "id": "rag-pipeline",
13
+ "label": "RAG Pipeline",
14
+ "questions": ["Document ingestion format (PDF/HTML/Markdown)?", "Chunking strategy (fixed/semantic/hierarchical)?", "Vector DB (Pinecone/Qdrant/pgvector/Chroma)?", "Embedding model?", "Retrieval method (semantic/hybrid/BM25)?"]
15
+ },
16
+ {
17
+ "id": "prompt-mgmt",
18
+ "label": "Prompt Management",
19
+ "questions": ["Prompt versioning strategy?", "Prompt storage (DB/Git/Langfuse)?", "System prompt vs user prompt separation?", "Prompt injection protection?"]
20
+ },
21
+ {
22
+ "id": "eval-feedback",
23
+ "label": "Eval & Feedback Loop",
24
+ "questions": ["Eval framework (RAGAS/DeepEval/custom)?", "Human feedback collection (thumbs up/down/rubric)?", "Evals in CI/CD pipeline?", "Latency + cost tracking per request?"]
25
+ }
26
+ ],
27
+ "phase_template": {
28
+ "name": "ai-product",
29
+ "phases": ["LLM Wrapper & Auth", "Prompt Engineering & RAG", "Eval Pipeline", "UX & Feedback Loop", "Guardrails & Cost Control"]
30
+ },
31
+ "architect_pages": ["llm-arch.html", "rag-flow.html"],
32
+ "stacks_hint": ["langchain", "openai", "anthropic", "pgvector", "fastapi", "nextjs", "redis"]
33
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "data-science",
3
+ "label": "Data Science / ML",
4
+ "topic_priority": ["dataset", "eda", "model-training", "evaluation", "serving", "monitoring"],
5
+ "extra_topics": [
6
+ {
7
+ "id": "dataset",
8
+ "label": "Dataset Management",
9
+ "questions": ["Data sources (structured/unstructured/streaming)?", "Data versioning strategy (DVC/Delta Lake/LakeFS)?", "PII/sensitive data handling?", "Train/val/test split strategy?"]
10
+ },
11
+ {
12
+ "id": "model-versioning",
13
+ "label": "Model Versioning",
14
+ "questions": ["Model registry (MLflow/W&B/SageMaker)?", "Experiment tracking metadata?", "Artifact storage (S3/GCS/local)?"]
15
+ },
16
+ {
17
+ "id": "drift-monitoring",
18
+ "label": "Drift & Quality Monitoring",
19
+ "questions": ["Data drift detection (Evidently/WhyLogs/custom)?", "Model performance degradation alerts?", "Retraining trigger strategy?"]
20
+ },
21
+ {
22
+ "id": "eval-pipeline",
23
+ "label": "Evaluation Pipeline",
24
+ "questions": ["Offline eval metrics (AUC/F1/BLEU/ROUGE)?", "Human eval process?", "A/B testing framework for model versions?"]
25
+ }
26
+ ],
27
+ "phase_template": {
28
+ "name": "ml-pipeline",
29
+ "phases": ["Data Ingestion & EDA", "Feature Engineering & Training", "Evaluation & Registry", "Serving & API", "Monitoring & Retraining"]
30
+ },
31
+ "architect_pages": ["ml-pipeline.html", "data-lineage.html"],
32
+ "stacks_hint": ["python", "pandas", "pytorch", "fastapi", "mlflow", "postgresql", "redis"]
33
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "devops",
3
+ "label": "DevOps / Platform Engineering",
4
+ "topic_priority": ["infra", "ci-cd", "observability", "slo", "incident-mgmt", "security"],
5
+ "extra_topics": [
6
+ {
7
+ "id": "iac",
8
+ "label": "Infrastructure as Code",
9
+ "questions": ["IaC tool (Terraform/Pulumi/CloudFormation/CDK)?", "Cloud provider (AWS/GCP/Azure/multi)?", "State backend (S3/GCS/Terraform Cloud)?", "Module/stack organization strategy?"]
10
+ },
11
+ {
12
+ "id": "ci-cd",
13
+ "label": "CI/CD Pipeline",
14
+ "questions": ["CI platform (GitHub Actions/GitLab CI/CircleCI/Jenkins)?", "Deploy strategy (blue-green/canary/rolling)?", "Secrets management (Vault/AWS SSM/GitHub Secrets)?", "PR-level preview environments?"]
15
+ },
16
+ {
17
+ "id": "slo-sla",
18
+ "label": "SLO / SLA",
19
+ "questions": ["Availability target (99.9%/99.99%)?", "Latency SLOs (p95/p99)?", "Error budget policy?", "SLO monitoring tool (Datadog/Prometheus/Grafana)?"]
20
+ },
21
+ {
22
+ "id": "incident-mgmt",
23
+ "label": "Incident Management",
24
+ "questions": ["On-call rotation tool (PagerDuty/OpsGenie/Rootly)?", "Runbook format and storage?", "Post-mortem process?", "Alert fatigue mitigation strategy?"]
25
+ }
26
+ ],
27
+ "phase_template": {
28
+ "name": "infra-ops",
29
+ "phases": ["Infrastructure Foundation", "CI/CD & Automation", "Observability & Alerting", "Runbooks & Incident Response"]
30
+ },
31
+ "architect_pages": ["infra-topology.html", "slo.html"],
32
+ "stacks_hint": ["terraform", "docker", "kubernetes", "prometheus", "grafana", "github-actions"]
33
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "mobile",
3
+ "label": "Mobile App",
4
+ "topic_priority": ["auth", "core-features", "offline-sync", "push-notifications", "app-store", "deep-links"],
5
+ "extra_topics": [
6
+ {
7
+ "id": "push-notifications",
8
+ "label": "Push Notifications",
9
+ "questions": ["Push provider (FCM/APNs/OneSignal/Expo)?", "Notification categories and opt-in flow?", "Deep link handling from notification tap?", "Background/foreground handling?"]
10
+ },
11
+ {
12
+ "id": "offline-sync",
13
+ "label": "Offline Sync",
14
+ "questions": ["Offline-first or online-required?", "Conflict resolution strategy (last-write-wins/CRDT/manual)?", "Local storage (SQLite/Realm/AsyncStorage/Core Data)?", "Sync trigger (background/explicit/realtime)?"]
15
+ },
16
+ {
17
+ "id": "app-store",
18
+ "label": "App Store Submission",
19
+ "questions": ["Target platforms (iOS/Android/both)?", "App review checklist (privacy policy, ATT prompt, entitlements)?", "CI/CD for store deployment (Fastlane/EAS/Bitrise)?"]
20
+ },
21
+ {
22
+ "id": "deep-links",
23
+ "label": "Deep Links & Universal Links",
24
+ "questions": ["URL scheme vs universal links?", "Deferred deep linking (install → open specific screen)?", "Attribution provider (Branch/AppsFlyer/Adjust)?"]
25
+ }
26
+ ],
27
+ "phase_template": {
28
+ "name": "mobile-launch",
29
+ "phases": ["Auth & Navigation", "Core Features", "Offline & Sync", "Store Submission & Launch"]
30
+ },
31
+ "architect_pages": ["mobile-flow.html", "push.html"],
32
+ "stacks_hint": ["react-native", "expo", "flutter", "firebase", "postgresql"]
33
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "id": "web-saas",
3
+ "label": "Web SaaS",
4
+ "topic_priority": ["auth", "user-data", "api", "billing", "admin", "onboarding", "content-mgmt"],
5
+ "extra_topics": [
6
+ {
7
+ "id": "billing",
8
+ "label": "Billing & Subscriptions",
9
+ "questions": ["Payment provider (Stripe/Paddle/LemonSqueezy)?", "Pricing model (flat/usage/per-seat)?", "Free trial or freemium tier?", "Proration on plan change?"]
10
+ },
11
+ {
12
+ "id": "multi-tenant",
13
+ "label": "Multi-tenancy",
14
+ "questions": ["Tenant isolation: row-level, schema-per-tenant, or separate DB?", "How are tenants identified (subdomain/slug/org)?", "Cross-tenant data visibility rules?"]
15
+ },
16
+ {
17
+ "id": "onboarding",
18
+ "label": "User Onboarding",
19
+ "questions": ["Onboarding flow steps (email verify → profile → invite team)?", "Guided setup wizard?", "Empty-state design for new accounts?"]
20
+ },
21
+ {
22
+ "id": "trial-freemium",
23
+ "label": "Trial / Freemium",
24
+ "questions": ["Trial duration?", "Feature gating strategy (usage caps vs feature flags)?", "Upgrade CTA placement?"]
25
+ }
26
+ ],
27
+ "phase_template": {
28
+ "name": "lean-startup",
29
+ "phases": ["Auth & Identity", "Core Features", "Monetization", "Scale & Ops"]
30
+ },
31
+ "architect_pages": ["billing.html", "tenant.html"],
32
+ "stacks_hint": ["nextjs", "nestjs", "postgresql", "stripe", "redis", "tailwind"]
33
+ }