WDS Install errors fixed
This commit is contained in:
parent
251c5c5c0c
commit
1a7cf04e3e
|
|
@ -244,7 +244,6 @@
|
||||||
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
|
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/code-frame": "^7.27.1",
|
"@babel/code-frame": "^7.27.1",
|
||||||
"@babel/generator": "^7.28.5",
|
"@babel/generator": "^7.28.5",
|
||||||
|
|
@ -3643,7 +3642,6 @@
|
||||||
"integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==",
|
"integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~7.16.0"
|
"undici-types": "~7.16.0"
|
||||||
}
|
}
|
||||||
|
|
@ -3983,7 +3981,6 @@
|
||||||
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"acorn": "bin/acorn"
|
"acorn": "bin/acorn"
|
||||||
},
|
},
|
||||||
|
|
@ -4290,7 +4287,6 @@
|
||||||
"integrity": "sha512-6mF/YrvwwRxLTu+aMEa5pwzKUNl5ZetWbTyZCs9Um0F12HUmxUiF5UHiZPy4rifzU3gtpM3xP2DfdmkNX9eZRg==",
|
"integrity": "sha512-6mF/YrvwwRxLTu+aMEa5pwzKUNl5ZetWbTyZCs9Um0F12HUmxUiF5UHiZPy4rifzU3gtpM3xP2DfdmkNX9eZRg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/compiler": "^2.13.0",
|
"@astrojs/compiler": "^2.13.0",
|
||||||
"@astrojs/internal-helpers": "0.7.5",
|
"@astrojs/internal-helpers": "0.7.5",
|
||||||
|
|
@ -5358,7 +5354,6 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"baseline-browser-mapping": "^2.9.0",
|
"baseline-browser-mapping": "^2.9.0",
|
||||||
"caniuse-lite": "^1.0.30001759",
|
"caniuse-lite": "^1.0.30001759",
|
||||||
|
|
@ -6689,7 +6684,6 @@
|
||||||
"integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
|
"integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.8.0",
|
"@eslint-community/eslint-utils": "^4.8.0",
|
||||||
"@eslint-community/regexpp": "^4.12.1",
|
"@eslint-community/regexpp": "^4.12.1",
|
||||||
|
|
@ -10304,7 +10298,6 @@
|
||||||
"integrity": "sha512-p3JTemJJbkiMjXEMiFwgm0v6ym5g8K+b2oDny+6xdl300tUKySxvilJQLSea48C6OaYNmO30kH9KxpiAg5bWJw==",
|
"integrity": "sha512-p3JTemJJbkiMjXEMiFwgm0v6ym5g8K+b2oDny+6xdl300tUKySxvilJQLSea48C6OaYNmO30kH9KxpiAg5bWJw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"globby": "15.0.0",
|
"globby": "15.0.0",
|
||||||
"js-yaml": "4.1.1",
|
"js-yaml": "4.1.1",
|
||||||
|
|
@ -12378,7 +12371,6 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanoid": "^3.3.11",
|
"nanoid": "^3.3.11",
|
||||||
"picocolors": "^1.1.1",
|
"picocolors": "^1.1.1",
|
||||||
|
|
@ -12444,7 +12436,6 @@
|
||||||
"integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
|
"integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin/prettier.cjs"
|
"prettier": "bin/prettier.cjs"
|
||||||
},
|
},
|
||||||
|
|
@ -13273,7 +13264,6 @@
|
||||||
"integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==",
|
"integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/estree": "1.0.8"
|
"@types/estree": "1.0.8"
|
||||||
},
|
},
|
||||||
|
|
@ -14837,7 +14827,6 @@
|
||||||
"integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
|
"integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "^0.25.0",
|
"esbuild": "^0.25.0",
|
||||||
"fdir": "^6.4.4",
|
"fdir": "^6.4.4",
|
||||||
|
|
@ -15111,7 +15100,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",
|
||||||
"integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
|
"integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"peer": true,
|
|
||||||
"bin": {
|
"bin": {
|
||||||
"yaml": "bin.mjs"
|
"yaml": "bin.mjs"
|
||||||
},
|
},
|
||||||
|
|
@ -15303,7 +15291,6 @@
|
||||||
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
|
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/colinhacks"
|
"url": "https://github.com/sponsors/colinhacks"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -108,4 +108,3 @@ design_experience:
|
||||||
label: "Intermediate - Familiar with design concepts, balanced approach"
|
label: "Intermediate - Familiar with design concepts, balanced approach"
|
||||||
- value: "expert"
|
- value: "expert"
|
||||||
label: "Expert - Experienced designer, be direct and efficient"
|
label: "Expert - Experienced designer, be direct and efficient"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,7 @@ const chalk = require('chalk');
|
||||||
* @param {Object} options.logger - Logger instance for output
|
* @param {Object} options.logger - Logger instance for output
|
||||||
* @returns {Promise<boolean>} - Success status
|
* @returns {Promise<boolean>} - Success status
|
||||||
*/
|
*/
|
||||||
async function install(options) {
|
async function install({ projectRoot, installedIDEs, logger }) {
|
||||||
const { projectRoot, config, installedIDEs, logger } = options;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
logger.log(chalk.blue('🎨 Installing WDS Module...'));
|
logger.log(chalk.blue('🎨 Installing WDS Module...'));
|
||||||
|
|
||||||
|
|
@ -42,11 +40,11 @@ async function install(options) {
|
||||||
|
|
||||||
for (const folder of wdsFolders) {
|
for (const folder of wdsFolders) {
|
||||||
const folderPath = path.join(docsPath, folder);
|
const folderPath = path.join(docsPath, folder);
|
||||||
if (!(await fs.pathExists(folderPath))) {
|
if (await fs.pathExists(folderPath)) {
|
||||||
|
logger.log(chalk.dim(` → ${folder}/ (already exists)`));
|
||||||
|
} else {
|
||||||
await fs.ensureDir(folderPath);
|
await fs.ensureDir(folderPath);
|
||||||
logger.log(chalk.dim(` ✓ ${folder}/`));
|
logger.log(chalk.dim(` ✓ ${folder}/`));
|
||||||
} else {
|
|
||||||
logger.log(chalk.dim(` → ${folder}/ (already exists)`));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,11 @@ agent:
|
||||||
title: WDS Designer
|
title: WDS Designer
|
||||||
icon: 🎨
|
icon: 🎨
|
||||||
module: wds
|
module: wds
|
||||||
|
hasSidecar: false
|
||||||
|
|
||||||
persona:
|
persona:
|
||||||
role: Strategic UX Designer + Your Design Thinking Partner
|
role: Strategic UX Designer + Your Design Thinking Partner
|
||||||
|
|
||||||
identity: |
|
identity: |
|
||||||
I'm Freya, named after the Norse goddess of beauty, magic, and strategy.
|
I'm Freya, named after the Norse goddess of beauty, magic, and strategy.
|
||||||
|
|
||||||
|
|
@ -40,52 +41,36 @@ agent:
|
||||||
**Agent References**: When mentioning other WDS agents, always use the format:
|
**Agent References**: When mentioning other WDS agents, always use the format:
|
||||||
"[Name] WDS [Role] Agent" (e.g., "Saga WDS Analyst Agent", "Idunn WDS PM Agent")
|
"[Name] WDS [Role] Agent" (e.g., "Saga WDS Analyst Agent", "Idunn WDS PM Agent")
|
||||||
|
|
||||||
micro_guides: |
|
principles: |
|
||||||
**When I need detailed guidance, I load these micro-guides:**
|
**Micro-Guides (load when needed):**
|
||||||
|
- Strategic Design → data/agent-guides/freya/strategic-design.md (before designing, VTC/Trigger Map connection)
|
||||||
**Strategic Design** → data/agent-guides/freya/strategic-design.md
|
- Specification Quality → data/agent-guides/freya/specification-quality.md (creating specs, logical explanations)
|
||||||
- Before designing anything (connect to VTC, Trigger Map, Customer Awareness)
|
- Interactive Prototyping → data/agent-guides/freya/interactive-prototyping.md (HTML prototypes, validation)
|
||||||
- VTC connection, driving forces, Golden Circle hierarchy
|
- Content Creation → data/agent-guides/freya/content-creation.md (strategic content, 6-model framework)
|
||||||
|
- Design System → data/agent-guides/freya/design-system.md (Phase 5, organic growth)
|
||||||
**Specification Quality** → data/agent-guides/freya/specification-quality.md
|
|
||||||
- Before creating specs (logical explanations, purpose-based naming)
|
|
||||||
- Section-first workflow, multi-language, developer trust
|
|
||||||
|
|
||||||
**Interactive Prototyping** → data/agent-guides/freya/interactive-prototyping.md
|
|
||||||
- When creating HTML prototypes (prototypes as thinking tools)
|
|
||||||
- Validation process, fidelity levels, Design System integration
|
|
||||||
|
|
||||||
**Content Creation** → data/agent-guides/freya/content-creation.md
|
|
||||||
- Before creating strategic content (headlines, features, sections)
|
|
||||||
- 6-model framework, workshop vs quick mode, content purpose
|
|
||||||
|
|
||||||
**Design System** → data/agent-guides/freya/design-system.md
|
|
||||||
- When Phase 5 enabled (organic growth, opportunity/risk assessment)
|
|
||||||
- Three modes, component operations, foundation first
|
|
||||||
|
|
||||||
principles:
|
**Workflow Management:**
|
||||||
workflow_management: |
|
- On activation: Check conversations (conversation-persistence/check-conversations.md)
|
||||||
- On activation: Check conversations (conversation-persistence/check-conversations.md)
|
- Before work: Check task appropriateness (task-reflection.md)
|
||||||
- Before work: Check task appropriateness (task-reflection.md)
|
- On close: Save conversation (conversation-persistence/save-conversation.md)
|
||||||
- On close: Save conversation (conversation-persistence/save-conversation.md)
|
- Show presentation (freya-presentation.md), then project analysis (project-analysis-router.md)
|
||||||
- Show presentation (freya-presentation.md), then project analysis (project-analysis-router.md)
|
|
||||||
|
**Collaboration:**
|
||||||
collaboration: |
|
- My domain: Phases 4 (UX Design), 5 (Design System - optional), 7 (Testing)
|
||||||
- My domain: Phases 4 (UX Design), 5 (Design System - optional), 7 (Testing)
|
- Other domains: Hand over seamlessly to specialized agent
|
||||||
- Other domains: Hand over seamlessly to specialized agent
|
- BMM overlap: I replace Sally (UX Designer) when WDS is installed
|
||||||
- BMM overlap: I replace Sally (UX Designer) when WDS is installed
|
|
||||||
|
**Core Approach:**
|
||||||
core_approach: |
|
- Load strategic context BEFORE designing (micro-guide: strategic-design.md)
|
||||||
- Load strategic context BEFORE designing (micro-guide: strategic-design.md)
|
- Specifications must be logical and complete (micro-guide: specification-quality.md)
|
||||||
- Specifications must be logical and complete (micro-guide: specification-quality.md)
|
- Prototypes validate before production (micro-guide: interactive-prototyping.md)
|
||||||
- Prototypes validate before production (micro-guide: interactive-prototyping.md)
|
- Content is strategic, not decorative (micro-guide: content-creation.md)
|
||||||
- Content is strategic, not decorative (micro-guide: content-creation.md)
|
- Design systems grow organically (micro-guide: design-system.md if Phase 5)
|
||||||
- Design systems grow organically (micro-guide: design-system.md if Phase 5)
|
|
||||||
|
**Project Tracking:**
|
||||||
project_tracking: |
|
- Update project outline when completing work
|
||||||
- Update project outline when completing work
|
- Use specific file names: [TOPIC]-GUIDE.md, never generic README.md
|
||||||
- Use specific file names: [TOPIC]-GUIDE.md, never generic README.md
|
- See: workflows/00-system/FILE-NAMING-CONVENTIONS.md
|
||||||
- See: workflows/00-system/FILE-NAMING-CONVENTIONS.md
|
|
||||||
|
|
||||||
menu:
|
menu:
|
||||||
- trigger: workflow-status
|
- trigger: workflow-status
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,11 @@ agent:
|
||||||
title: WDS Product Manager
|
title: WDS Product Manager
|
||||||
icon: 📋
|
icon: 📋
|
||||||
module: wds
|
module: wds
|
||||||
|
hasSidecar: false
|
||||||
|
|
||||||
persona:
|
persona:
|
||||||
role: Strategic Product Manager + Technical Coordinator + Handoff Specialist
|
role: Strategic Product Manager + Technical Coordinator + Handoff Specialist
|
||||||
|
|
||||||
identity: |
|
identity: |
|
||||||
I'm Idunn, named after the Norse goddess of renewal and youth.
|
I'm Idunn, named after the Norse goddess of renewal and youth.
|
||||||
|
|
||||||
|
|
@ -32,40 +33,33 @@ agent:
|
||||||
|
|
||||||
**Agent References**: When mentioning other WDS agents, use: "[Name] WDS [Role] Agent"
|
**Agent References**: When mentioning other WDS agents, use: "[Name] WDS [Role] Agent"
|
||||||
|
|
||||||
micro_guides: |
|
principles: |
|
||||||
**When I need detailed guidance, I load these micro-guides:**
|
**Micro-Guides (load when needed):**
|
||||||
|
- Platform Requirements → data/agent-guides/idunn/platform-requirements.md (Phase 3, technical foundation)
|
||||||
**Platform Requirements** → data/agent-guides/idunn/platform-requirements.md
|
- Design Handoffs → data/agent-guides/idunn/design-handoffs.md (Phase 6, BMM handoff preparation)
|
||||||
- During Phase 3 or technical foundation work
|
|
||||||
- Architecture, data model, integrations, security, performance, constraints
|
|
||||||
|
|
||||||
**Design Handoffs** → data/agent-guides/idunn/design-handoffs.md
|
|
||||||
- During Phase 6 or preparing BMM handoff
|
|
||||||
- DD-XXX files, complete PRD, acceptance criteria, continuous handoff pattern
|
|
||||||
|
|
||||||
principles:
|
**Workflow Management:**
|
||||||
workflow_management: |
|
- On activation: Check conversations (conversation-persistence/check-conversations.md)
|
||||||
- On activation: Check conversations (conversation-persistence/check-conversations.md)
|
- Before work: Check task appropriateness (task-reflection.md)
|
||||||
- Before work: Check task appropriateness (task-reflection.md)
|
- On close: Save conversation (conversation-persistence/save-conversation.md)
|
||||||
- On close: Save conversation (conversation-persistence/save-conversation.md)
|
- Show presentation (idunn-presentation.md), then project analysis (project-analysis/instructions.md)
|
||||||
- Show presentation (idunn-presentation.md), then project analysis (project-analysis/instructions.md)
|
|
||||||
|
**Collaboration:**
|
||||||
collaboration: |
|
- My domain: Phases 3 (Platform Requirements), 6 (Design Deliveries)
|
||||||
- My domain: Phases 3 (Platform Requirements), 6 (Design Deliveries)
|
- Other domains: Hand over seamlessly to specialized agent
|
||||||
- Other domains: Hand over seamlessly to specialized agent
|
- Note: I do NOT replace BMM PM Agent (different focus: technical foundation + handoffs)
|
||||||
- Note: I do NOT replace BMM PM Agent (different focus: technical foundation + handoffs)
|
|
||||||
|
**Core Approach:**
|
||||||
core_approach: |
|
- Technical foundation in parallel with design (micro-guide: platform-requirements.md)
|
||||||
- Technical foundation in parallel with design (micro-guide: platform-requirements.md)
|
- Package complete flows for BMM handoff (micro-guide: design-handoffs.md)
|
||||||
- Package complete flows for BMM handoff (micro-guide: design-handoffs.md)
|
- Reference, don't duplicate (link to requirements, don't copy)
|
||||||
- Reference, don't duplicate (link to requirements, don't copy)
|
- Organize by value (epic-based, testable units)
|
||||||
- Organize by value (epic-based, testable units)
|
- Continuous handoff pattern (don't wait for everything)
|
||||||
- Continuous handoff pattern (don't wait for everything)
|
|
||||||
|
**Project Tracking:**
|
||||||
project_tracking: |
|
- Update project outline when completing work
|
||||||
- Update project outline when completing work
|
- File naming: [TOPIC]-GUIDE.md, DD-XXX-[epic-name].yaml
|
||||||
- File naming: [TOPIC]-GUIDE.md, DD-XXX-[epic-name].yaml
|
- See: workflows/00-system/FILE-NAMING-CONVENTIONS.md
|
||||||
- See: workflows/00-system/FILE-NAMING-CONVENTIONS.md
|
|
||||||
|
|
||||||
menu:
|
menu:
|
||||||
- trigger: workflow-status
|
- trigger: workflow-status
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ agent:
|
||||||
title: WDS Analyst
|
title: WDS Analyst
|
||||||
icon: 📚
|
icon: 📚
|
||||||
module: wds
|
module: wds
|
||||||
version: "1.0.0"
|
hasSidecar: false
|
||||||
|
|
||||||
persona:
|
persona:
|
||||||
role: Strategic Business Analyst + Product Discovery Partner
|
role: Strategic Business Analyst + Product Discovery Partner
|
||||||
|
|
@ -38,54 +38,44 @@ agent:
|
||||||
|
|
||||||
**Agent References**: When mentioning other WDS agents, use: "[Name] WDS [Role] Agent"
|
**Agent References**: When mentioning other WDS agents, use: "[Name] WDS [Role] Agent"
|
||||||
|
|
||||||
micro_guides: |
|
principles: |
|
||||||
**When I need detailed guidance, I load these micro-guides:**
|
**Micro-Guides (load when needed):**
|
||||||
|
- Discovery Conversation → data/agent-guides/saga/discovery-conversation.md (Product Brief, Alignment & Signoff)
|
||||||
**Discovery Conversation** → data/agent-guides/saga/discovery-conversation.md
|
- Trigger Mapping → data/agent-guides/saga/trigger-mapping.md (Phase 2, psychology analysis)
|
||||||
- During Product Brief, Alignment & Signoff, or any discovery work
|
- Strategic Documentation → data/agent-guides/saga/strategic-documentation.md (documentation creation)
|
||||||
- Natural listening pattern, reflection techniques, handling different user types
|
|
||||||
|
|
||||||
**Trigger Mapping** → data/agent-guides/saga/trigger-mapping.md
|
|
||||||
- During Phase 2 or psychology analysis
|
|
||||||
- Business goals → users → driving forces, Feature Impact Analysis
|
|
||||||
|
|
||||||
**Strategic Documentation** → data/agent-guides/saga/strategic-documentation.md
|
|
||||||
- When creating Product Brief, Project Outline, or documentation
|
|
||||||
- File naming, absolute paths, precision standards, maintenance
|
|
||||||
|
|
||||||
principles:
|
**Working Rhythm:**
|
||||||
workflow_management: |
|
|
||||||
- On activation: Check conversations (conversation-persistence/check-conversations.md)
|
|
||||||
- Before work: Check task appropriateness (task-reflection.md)
|
|
||||||
- On close: Save conversation (conversation-persistence/save-conversation.md)
|
|
||||||
- Show presentation (saga-presentation.md), then project analysis (project-analysis/instructions.md)
|
|
||||||
|
|
||||||
collaboration: |
|
|
||||||
- My domain: Phases 1 (Product Brief), 2 (Trigger Mapping)
|
|
||||||
- Other domains: Hand over seamlessly to specialized agent
|
|
||||||
- BMM overlap: I replace Mary (Analyst) when WDS is installed
|
|
||||||
|
|
||||||
core_approach: |
|
|
||||||
- Discovery through conversation (micro-guide: discovery-conversation.md)
|
|
||||||
- Connect business to psychology (micro-guide: trigger-mapping.md)
|
|
||||||
- Create coordinating documentation (micro-guide: strategic-documentation.md)
|
|
||||||
- One question at a time, listen deeply
|
|
||||||
- Find and treat as bible: **/project-context.md
|
|
||||||
|
|
||||||
project_tracking: |
|
|
||||||
- Create project outline during Product Brief (10 micro-steps)
|
|
||||||
- Use absolute paths: docs/A-Product-Brief/, docs/B-Trigger-Map/
|
|
||||||
- Alliterative persona names: Harriet the Hairdresser, Marcus Manager
|
|
||||||
- File naming: [TOPIC]-GUIDE.md, never generic README.md
|
|
||||||
- See: workflows/00-system/FILE-NAMING-CONVENTIONS.md
|
|
||||||
|
|
||||||
working_rhythm: |
|
|
||||||
1. You share an idea or question
|
1. You share an idea or question
|
||||||
2. I listen and reflect back naturally (in my own words)
|
2. I listen and reflect back naturally (in my own words)
|
||||||
3. I confirm understanding, then wait for your confirmation
|
3. I confirm understanding, then wait for your confirmation
|
||||||
4. Once confirmed, we explore solutions together
|
4. Once confirmed, we explore solutions together
|
||||||
5. I structure insights into clear documentation
|
5. I structure insights into clear documentation
|
||||||
|
|
||||||
|
**Workflow Management:**
|
||||||
|
- On activation: Check conversations (conversation-persistence/check-conversations.md)
|
||||||
|
- Before work: Check task appropriateness (task-reflection.md)
|
||||||
|
- On close: Save conversation (conversation-persistence/save-conversation.md)
|
||||||
|
- Show presentation (saga-presentation.md), then project analysis (project-analysis/instructions.md)
|
||||||
|
|
||||||
|
**Collaboration:**
|
||||||
|
- My domain: Phases 1 (Product Brief), 2 (Trigger Mapping)
|
||||||
|
- Other domains: Hand over seamlessly to specialized agent
|
||||||
|
- BMM overlap: I replace Mary (Analyst) when WDS is installed
|
||||||
|
|
||||||
|
**Core Approach:**
|
||||||
|
- Discovery through conversation (micro-guide: discovery-conversation.md)
|
||||||
|
- Connect business to psychology (micro-guide: trigger-mapping.md)
|
||||||
|
- Create coordinating documentation (micro-guide: strategic-documentation.md)
|
||||||
|
- One question at a time, listen deeply
|
||||||
|
- Find and treat as bible: **/project-context.md
|
||||||
|
|
||||||
|
**Project Tracking:**
|
||||||
|
- Create project outline during Product Brief (10 micro-steps)
|
||||||
|
- Use absolute paths: docs/A-Product-Brief/, docs/B-Trigger-Map/
|
||||||
|
- Alliterative persona names: Harriet the Hairdresser, Marcus Manager
|
||||||
|
- File naming: [TOPIC]-GUIDE.md, never generic README.md
|
||||||
|
- See: workflows/00-system/FILE-NAMING-CONVENTIONS.md
|
||||||
|
|
||||||
menu:
|
menu:
|
||||||
- trigger: workflow-status
|
- trigger: workflow-status
|
||||||
workflow: "{project-root}/{bmad_folder}/wds/workflows/workflow-status/workflow.yaml"
|
workflow: "{project-root}/{bmad_folder}/wds/workflows/workflow-status/workflow.yaml"
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ workflow_status:
|
||||||
- "01-product-brief.md"
|
- "01-product-brief.md"
|
||||||
- "02-content-strategy.md"
|
- "02-content-strategy.md"
|
||||||
completed_date: "2025-12-24"
|
completed_date: "2025-12-24"
|
||||||
|
|
||||||
phase_2_trigger_mapping:
|
phase_2_trigger_mapping:
|
||||||
status: "complete"
|
status: "complete"
|
||||||
agent: "cascade-analyst"
|
agent: "cascade-analyst"
|
||||||
|
|
@ -65,11 +65,11 @@ workflow_status:
|
||||||
- "05-Key-Insights.md"
|
- "05-Key-Insights.md"
|
||||||
- "06-Feature-Impact.md"
|
- "06-Feature-Impact.md"
|
||||||
completed_date: "2025-12-27"
|
completed_date: "2025-12-27"
|
||||||
|
|
||||||
phase_3_prd_platform:
|
phase_3_prd_platform:
|
||||||
status: "skipped"
|
status: "skipped"
|
||||||
reason: "WordPress delivery - no platform PRD needed"
|
reason: "WordPress delivery - no platform PRD needed"
|
||||||
|
|
||||||
phase_4_ux_design:
|
phase_4_ux_design:
|
||||||
status: "in-progress"
|
status: "in-progress"
|
||||||
agent: "freya-wds-designer"
|
agent: "freya-wds-designer"
|
||||||
|
|
@ -79,11 +79,11 @@ workflow_status:
|
||||||
- "1.1-start-page/1.1-start-page.md"
|
- "1.1-start-page/1.1-start-page.md"
|
||||||
- "1.1-start-page/sketches/1-1-start-page-desktop-concept.jpg"
|
- "1.1-start-page/sketches/1-1-start-page-desktop-concept.jpg"
|
||||||
notes: "Hero section complete, WDS Capabilities section specified, other sections TBD"
|
notes: "Hero section complete, WDS Capabilities section specified, other sections TBD"
|
||||||
|
|
||||||
phase_5_design_system:
|
phase_5_design_system:
|
||||||
status: "skipped"
|
status: "skipped"
|
||||||
reason: "Single page project - no design system needed"
|
reason: "Single page project - no design system needed"
|
||||||
|
|
||||||
phase_6_design_deliveries:
|
phase_6_design_deliveries:
|
||||||
status: "pending"
|
status: "pending"
|
||||||
reason: "Awaiting UX design completion"
|
reason: "Awaiting UX design completion"
|
||||||
|
|
@ -108,4 +108,3 @@ current_scenario:
|
||||||
- "Testimonials Section"
|
- "Testimonials Section"
|
||||||
- "CTA Section"
|
- "CTA Section"
|
||||||
- "Footer Section"
|
- "Footer Section"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
**Master the complete WDS methodology and become indispensable as a designer in the AI era**
|
**Master the complete WDS methodology and become indispensable as a designer in the AI era**
|
||||||
|
|
||||||
https://www.youtube.com/watch?v=CQ5Aai_r-uo
|
[Watch the Course Introduction Video](https://www.youtube.com/watch?v=CQ5Aai_r-uo)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# YouTube Show Notes: Module 00 - Getting Started with WDS
|
# YouTube Show Notes: Module 00 - Getting Started with WDS
|
||||||
|
|
||||||
**Video Link:**
|
**Video Link:**
|
||||||
https://youtu.be/qYPYx01YLUc
|
<https://youtu.be/qYPYx01YLUc>
|
||||||
|
|
||||||
**Video Title:**
|
**Video Title:**
|
||||||
Getting Started with Whiteport Design Studio - Your Path to Becoming a Linchpin Designer
|
Getting Started with Whiteport Design Studio - Your Path to Becoming a Linchpin Designer
|
||||||
|
|
@ -61,27 +61,27 @@ _To be added after video production based on transcript_
|
||||||
|
|
||||||
### **This Module**
|
### **This Module**
|
||||||
📖 **Module 00 Overview:** Getting Started Guide
|
📖 **Module 00 Overview:** Getting Started Guide
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview/00-getting-started-overview.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview/00-getting-started-overview.md>
|
||||||
|
|
||||||
### **Get Started with WDS**
|
### **Get Started with WDS**
|
||||||
🌊 **WDS Presentation Page:** Learn about the methodology
|
🌊 **WDS Presentation Page:** Learn about the methodology
|
||||||
https://whiteport.com/whiteport-design-studio/
|
<https://whiteport.com/whiteport-design-studio/>
|
||||||
|
|
||||||
🛠️ **Installation Guide:** Download IDE, Install WDS
|
🛠️ **Installation Guide:** Download IDE, Install WDS
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/installation.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/installation.md>
|
||||||
|
|
||||||
📖 **Quick Start:** Get up and running fast
|
📖 **Quick Start:** Get up and running fast
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/quick-start.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/quick-start.md>
|
||||||
|
|
||||||
📖 **About WDS:** Philosophy and approach
|
📖 **About WDS:** Philosophy and approach
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/about-wds.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/about-wds.md>
|
||||||
|
|
||||||
### **Community & Support**
|
### **Community & Support**
|
||||||
💬 **BMad Discord:** Real designers helping each other
|
💬 **BMad Discord:** Real designers helping each other
|
||||||
[Discord invite link]
|
[Discord invite link]
|
||||||
|
|
||||||
📖 **GitHub Discussions:** Ask questions, share your journey
|
📖 **GitHub Discussions:** Ask questions, share your journey
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/discussions
|
<https://github.com/whiteport-collective/whiteport-design-studio/discussions>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -90,11 +90,11 @@ https://github.com/whiteport-collective/whiteport-design-studio/discussions
|
||||||
**◀️ Previous Module:** _This is the first module_
|
**◀️ Previous Module:** _This is the first module_
|
||||||
|
|
||||||
**▶️ Next Module:** Module 01 - Why WDS Matters
|
**▶️ Next Module:** Module 01 - Why WDS Matters
|
||||||
📺 Video: https://www.youtube.com/watch?v=Xhw5JB7mpxw
|
📺 Video: <https://www.youtube.com/watch?v=Xhw5JB7mpxw>
|
||||||
📖 Documentation: https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-01-why-wds-matters/module-01-overview.md
|
📖 Documentation: <https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-01-why-wds-matters/module-01-overview.md>
|
||||||
|
|
||||||
**📚 Full Course Overview:**
|
**📚 Full Course Overview:**
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview.md>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# YouTube Show Notes: Module 01 - Why WDS Matters
|
# YouTube Show Notes: Module 01 - Why WDS Matters
|
||||||
|
|
||||||
**Video Link:**
|
**Video Link:**
|
||||||
https://www.youtube.com/watch?v=Xhw5JB7mpxw
|
<https://www.youtube.com/watch?v=Xhw5JB7mpxw>
|
||||||
|
|
||||||
**Video Title:**
|
**Video Title:**
|
||||||
Module 01: Why WDS Matters - Are You a Factory Worker or a Linchpin Designer?
|
Module 01: Why WDS Matters - Are You a Factory Worker or a Linchpin Designer?
|
||||||
|
|
@ -55,43 +55,43 @@ _To be added after video production based on transcript_
|
||||||
|
|
||||||
### **This Module**
|
### **This Module**
|
||||||
📖 **Module 01 Overview:** Complete lesson structure
|
📖 **Module 01 Overview:** Complete lesson structure
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-01-why-wds-matters/module-01-overview.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-01-why-wds-matters/module-01-overview.md>
|
||||||
|
|
||||||
### **Get Started with WDS**
|
### **Get Started with WDS**
|
||||||
🌊 **WDS Presentation Page:** Learn about the methodology
|
🌊 **WDS Presentation Page:** Learn about the methodology
|
||||||
https://whiteport.com/whiteport-design-studio/
|
<https://whiteport.com/whiteport-design-studio/>
|
||||||
|
|
||||||
🛠️ **Installation Guide:** Download IDE, Install WDS
|
🛠️ **Installation Guide:** Download IDE, Install WDS
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/installation.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/installation.md>
|
||||||
|
|
||||||
📖 **About WDS:** Philosophy and approach
|
📖 **About WDS:** Philosophy and approach
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/about-wds.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/about-wds.md>
|
||||||
|
|
||||||
### **Recommended Reading**
|
### **Recommended Reading**
|
||||||
📚 **Book:** "Linchpin: Are You Indispensable?" by Seth Godin (2010)
|
📚 **Book:** "Linchpin: Are You Indispensable?" by Seth Godin (2010)
|
||||||
https://www.amazon.com/Linchpin-Are-You-Indispensable-ebook/dp/B00354Y9ZU
|
<https://www.amazon.com/Linchpin-Are-You-Indispensable-ebook/dp/B00354Y9ZU>
|
||||||
|
|
||||||
### **Community & Support**
|
### **Community & Support**
|
||||||
💬 **BMad Discord:** Join other linchpin designers
|
💬 **BMad Discord:** Join other linchpin designers
|
||||||
[Discord invite link]
|
[Discord invite link]
|
||||||
|
|
||||||
📖 **GitHub Discussions:** Ask questions, share your journey
|
📖 **GitHub Discussions:** Ask questions, share your journey
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/discussions
|
<https://github.com/whiteport-collective/whiteport-design-studio/discussions>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🎓 Course Navigation
|
## 🎓 Course Navigation
|
||||||
|
|
||||||
**◀️ Previous Module:** Module 00 - Getting Started
|
**◀️ Previous Module:** Module 00 - Getting Started
|
||||||
📺 Video: https://youtu.be/qYPYx01YLUc
|
📺 Video: <https://youtu.be/qYPYx01YLUc>
|
||||||
📖 Documentation: https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview/00-getting-started-overview.md
|
📖 Documentation: <https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview/00-getting-started-overview.md>
|
||||||
|
|
||||||
**▶️ Next Module:** Module 02 - Installation & Setup
|
**▶️ Next Module:** Module 02 - Installation & Setup
|
||||||
📺 Video: https://www.youtube.com/watch?v=tYifpxFVVks
|
📺 Video: <https://www.youtube.com/watch?v=tYifpxFVVks>
|
||||||
📖 Documentation: https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-02-installation-setup/module-02-overview.md
|
📖 Documentation: <https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-02-installation-setup/module-02-overview.md>
|
||||||
|
|
||||||
**📚 Full Course Overview:**
|
**📚 Full Course Overview:**
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview.md>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# YouTube Show Notes: Module 02 - Installation & Setup
|
# YouTube Show Notes: Module 02 - Installation & Setup
|
||||||
|
|
||||||
**Video Link:**
|
**Video Link:**
|
||||||
https://www.youtube.com/watch?v=tYifpxFVVks
|
<https://www.youtube.com/watch?v=tYifpxFVVks>
|
||||||
|
|
||||||
**Video Title:**
|
**Video Title:**
|
||||||
Module 02: Installation & Setup - From Zero to WDS-Ready in Under an Hour
|
Module 02: Installation & Setup - From Zero to WDS-Ready in Under an Hour
|
||||||
|
|
@ -121,44 +121,44 @@ Your 8-phase WDS methodology folders:
|
||||||
|
|
||||||
### **This Module**
|
### **This Module**
|
||||||
📖 **Module 02 Overview:** Complete lesson structure
|
📖 **Module 02 Overview:** Complete lesson structure
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-02-installation-setup/module-02-overview.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-02-installation-setup/module-02-overview.md>
|
||||||
|
|
||||||
### **Get Started with WDS**
|
### **Get Started with WDS**
|
||||||
🌊 **WDS Presentation Page:** Learn about the methodology
|
🌊 **WDS Presentation Page:** Learn about the methodology
|
||||||
https://whiteport.com/whiteport-design-studio/
|
<https://whiteport.com/whiteport-design-studio/>
|
||||||
|
|
||||||
🛠️ **Installation Guide:** Download IDE, Install WDS
|
🛠️ **Installation Guide:** Download IDE, Install WDS
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/installation.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/installation.md>
|
||||||
|
|
||||||
📖 **Quick Start:** Get up and running fast
|
📖 **Quick Start:** Get up and running fast
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/quick-start.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/quick-start.md>
|
||||||
|
|
||||||
### **Download Links**
|
### **Download Links**
|
||||||
📥 **Download Cursor:** https://cursor.sh
|
📥 **Download Cursor:** <https://cursor.sh>
|
||||||
📥 **Download VS Code:** https://code.visualstudio.com
|
📥 **Download VS Code:** <https://code.visualstudio.com>
|
||||||
📥 **GitHub:** https://github.com
|
📥 **GitHub:** <https://github.com>
|
||||||
|
|
||||||
### **Community & Support**
|
### **Community & Support**
|
||||||
💬 **BMad Discord:** Real designers helping each other
|
💬 **BMad Discord:** Real designers helping each other
|
||||||
[Discord invite link]
|
[Discord invite link]
|
||||||
|
|
||||||
📖 **GitHub Discussions:** Ask questions, share your setup
|
📖 **GitHub Discussions:** Ask questions, share your setup
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/discussions
|
<https://github.com/whiteport-collective/whiteport-design-studio/discussions>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🎓 Course Navigation
|
## 🎓 Course Navigation
|
||||||
|
|
||||||
**◀️ Previous Module:** Module 01 - Why WDS Matters
|
**◀️ Previous Module:** Module 01 - Why WDS Matters
|
||||||
📺 Video: https://www.youtube.com/watch?v=Xhw5JB7mpxw
|
📺 Video: <https://www.youtube.com/watch?v=Xhw5JB7mpxw>
|
||||||
📖 Documentation: https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-01-why-wds-matters/module-01-overview.md
|
📖 Documentation: <https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-01-why-wds-matters/module-01-overview.md>
|
||||||
|
|
||||||
**▶️ Next Module:** Module 03 - Alignment & Signoff
|
**▶️ Next Module:** Module 03 - Alignment & Signoff
|
||||||
📺 Video: https://www.youtube.com/watch?v=TKjOLlU8UCE
|
📺 Video: <https://www.youtube.com/watch?v=TKjOLlU8UCE>
|
||||||
📖 Documentation: https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-03-alignment-signoff/module-03-overview.md
|
📖 Documentation: <https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-03-alignment-signoff/module-03-overview.md>
|
||||||
|
|
||||||
**📚 Full Course Overview:**
|
**📚 Full Course Overview:**
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview.md>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# YouTube Show Notes: Module 03 - Alignment & Signoff
|
# YouTube Show Notes: Module 03 - Alignment & Signoff
|
||||||
|
|
||||||
**Video Link:**
|
**Video Link:**
|
||||||
https://www.youtube.com/watch?v=TKjOLlU8UCE
|
<https://www.youtube.com/watch?v=TKjOLlU8UCE>
|
||||||
|
|
||||||
**Video Title:**
|
**Video Title:**
|
||||||
Module 03: Alignment & Signoff - Get Stakeholder Buy-In for Your Design Projects
|
Module 03: Alignment & Signoff - Get Stakeholder Buy-In for Your Design Projects
|
||||||
|
|
@ -58,49 +58,49 @@ _To be added after video production based on transcript_
|
||||||
|
|
||||||
### **This Module**
|
### **This Module**
|
||||||
📖 **Module 03 Overview:** Complete lesson structure
|
📖 **Module 03 Overview:** Complete lesson structure
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-03-alignment-signoff/module-03-overview.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-03-alignment-signoff/module-03-overview.md>
|
||||||
|
|
||||||
📖 **Tutorial 03:** Step-by-step hands-on guide
|
📖 **Tutorial 03:** Step-by-step hands-on guide
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-03-alignment-signoff/tutorial-03.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-03-alignment-signoff/tutorial-03.md>
|
||||||
|
|
||||||
### **Deliverable Documentation**
|
### **Deliverable Documentation**
|
||||||
📖 **Project Pitch:** What it is and how to create it
|
📖 **Project Pitch:** What it is and how to create it
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/deliverables/project-pitch.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/deliverables/project-pitch.md>
|
||||||
|
|
||||||
📖 **Service Agreement:** Contract templates and guidance
|
📖 **Service Agreement:** Contract templates and guidance
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/deliverables/service-agreement.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/deliverables/service-agreement.md>
|
||||||
|
|
||||||
### **WDS Workflows**
|
### **WDS Workflows**
|
||||||
📖 **Alignment & Signoff Workflow:** Complete process guide
|
📖 **Alignment & Signoff Workflow:** Complete process guide
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/workflows/1-project-brief/alignment-signoff/workflow.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/workflows/1-project-brief/alignment-signoff/workflow.md>
|
||||||
|
|
||||||
### **Get Started with WDS**
|
### **Get Started with WDS**
|
||||||
🌊 **WDS Presentation Page:** Learn about the methodology
|
🌊 **WDS Presentation Page:** Learn about the methodology
|
||||||
https://whiteport.com/whiteport-design-studio/
|
<https://whiteport.com/whiteport-design-studio/>
|
||||||
|
|
||||||
🛠️ **Installation Guide:** Download IDE, Install WDS
|
🛠️ **Installation Guide:** Download IDE, Install WDS
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/installation.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/getting-started/installation.md>
|
||||||
|
|
||||||
### **Community & Support**
|
### **Community & Support**
|
||||||
💬 **BMad Discord:** Share alignment documents, ask questions about contracts
|
💬 **BMad Discord:** Share alignment documents, ask questions about contracts
|
||||||
[Discord invite link]
|
[Discord invite link]
|
||||||
|
|
||||||
📖 **GitHub Discussions:** Ask questions, share your journey
|
📖 **GitHub Discussions:** Ask questions, share your journey
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/discussions
|
<https://github.com/whiteport-collective/whiteport-design-studio/discussions>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🎓 Course Navigation
|
## 🎓 Course Navigation
|
||||||
|
|
||||||
**◀️ Previous Module:** Module 02 - Installation & Setup
|
**◀️ Previous Module:** Module 02 - Installation & Setup
|
||||||
📺 Video: https://www.youtube.com/watch?v=tYifpxFVVks
|
📺 Video: <https://www.youtube.com/watch?v=tYifpxFVVks>
|
||||||
📖 Documentation: https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-02-installation-setup/module-02-overview.md
|
📖 Documentation: <https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-02-installation-setup/module-02-overview.md>
|
||||||
|
|
||||||
**▶️ Next Module:** Module 04 - Product Brief (Coming Soon)
|
**▶️ Next Module:** Module 04 - Product Brief (Coming Soon)
|
||||||
📖 Documentation: https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-04-product-brief/tutorial-04.md
|
📖 Documentation: <https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/module-04-product-brief/tutorial-04.md>
|
||||||
|
|
||||||
**📚 Full Course Overview:**
|
**📚 Full Course Overview:**
|
||||||
https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview.md
|
<https://github.com/whiteport-collective/whiteport-design-studio/blob/main/src/modules/wds/docs/learn-wds/00-course-overview.md>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ project_structure:
|
||||||
delivery:
|
delivery:
|
||||||
format: "{{delivery_format}}" # prd | wordpress | figma | prototype | direct-code | other
|
format: "{{delivery_format}}" # prd | wordpress | figma | prototype | direct-code | other
|
||||||
target_platform: "{{target_platform}}" # wordpress | react | vue | html | custom
|
target_platform: "{{target_platform}}" # wordpress | react | vue | html | custom
|
||||||
requires_prd: {{requires_prd}} # true | false
|
requires_prd: "{{requires_prd}}" # true | false
|
||||||
description: "{{delivery_description}}"
|
description: "{{delivery_description}}"
|
||||||
# Examples:
|
# Examples:
|
||||||
# - "WordPress page editor code with markup and content sections"
|
# - "WordPress page editor code with markup and content sections"
|
||||||
|
|
@ -43,10 +43,10 @@ config:
|
||||||
folder_prefix: "{{folder_prefix}}" # letters or numbers
|
folder_prefix: "{{folder_prefix}}" # letters or numbers
|
||||||
folder_case: "{{folder_case}}" # title or lowercase
|
folder_case: "{{folder_case}}" # title or lowercase
|
||||||
brief_level: "{{brief_level}}" # simplified or complete
|
brief_level: "{{brief_level}}" # simplified or complete
|
||||||
include_design_system: { { include_design_system } }
|
include_design_system: "{{include_design_system}}"
|
||||||
component_library: "{{component_library}}"
|
component_library: "{{component_library}}"
|
||||||
specification_language: "{{specification_language}}" # Language for writing specs (EN, SE, etc.)
|
specification_language: "{{specification_language}}" # Language for writing specs (EN, SE, etc.)
|
||||||
product_languages: { { product_languages } } # Array of languages product supports
|
product_languages: "{{product_languages}}" # Array of languages product supports
|
||||||
|
|
||||||
# Folder mapping (generated based on config)
|
# Folder mapping (generated based on config)
|
||||||
folders:
|
folders:
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 1. The Realization
|
## 1. The Realization
|
||||||
|
|
||||||
**Framework**: Problem-Agitate-Solve (PAS) - Start here
|
**Framework**: Problem-Agitate-Solve (PAS) - Start here
|
||||||
|
|
||||||
|
|
@ -45,7 +45,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 2. Why It Matters
|
## 2. Why It Matters
|
||||||
|
|
||||||
**Framework**: Value Proposition Canvas + Impact - Understanding why this matters and who we help
|
**Framework**: Value Proposition Canvas + Impact - Understanding why this matters and who we help
|
||||||
|
|
||||||
|
|
@ -65,7 +65,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 3. How We See It Working
|
## 3. How We See It Working
|
||||||
|
|
||||||
**Questions to explore**:
|
**Questions to explore**:
|
||||||
- "How do you envision this working?"
|
- "How do you envision this working?"
|
||||||
|
|
@ -78,7 +78,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 4. Paths We Explored
|
## 4. Paths We Explored
|
||||||
|
|
||||||
**Questions to explore**:
|
**Questions to explore**:
|
||||||
- "What other ways could we approach this?"
|
- "What other ways could we approach this?"
|
||||||
|
|
@ -91,7 +91,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 5. Recommended Solution
|
## 5. Recommended Solution
|
||||||
|
|
||||||
**Questions to explore**:
|
**Questions to explore**:
|
||||||
- "Which approach do you prefer?"
|
- "Which approach do you prefer?"
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 6. The Path Forward
|
## 6. The Path Forward
|
||||||
|
|
||||||
**Purpose**: Explain how the work will be done practically - which WDS phases will be used and the workflow approach.
|
**Purpose**: Explain how the work will be done practically - which WDS phases will be used and the workflow approach.
|
||||||
|
|
||||||
|
|
@ -130,7 +130,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 7. The Value We'll Create
|
## 7. The Value We'll Create
|
||||||
|
|
||||||
**Framework**: Business Case Framework - What's the return?
|
**Framework**: Business Case Framework - What's the return?
|
||||||
|
|
||||||
|
|
@ -157,7 +157,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 8. Cost of Inaction
|
## 8. Cost of Inaction
|
||||||
|
|
||||||
**Framework**: Problem-Agitate-Solve (PAS) - Agitate the problem / Business Case Framework
|
**Framework**: Problem-Agitate-Solve (PAS) - Agitate the problem / Business Case Framework
|
||||||
|
|
||||||
|
|
@ -181,7 +181,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 9. Our Commitment
|
## 9. Our Commitment
|
||||||
|
|
||||||
**Framework**: Business Case Framework - What are we committing to?
|
**Framework**: Business Case Framework - What are we committing to?
|
||||||
|
|
||||||
|
|
@ -201,7 +201,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 10. Summary
|
## 10. Summary
|
||||||
|
|
||||||
**Questions to explore**:
|
**Questions to explore**:
|
||||||
- "What are the key points?"
|
- "What are the key points?"
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
|
/* eslint-disable n/no-unsupported-features/node-builtins */
|
||||||
|
/* global document, window */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PROTOTYPE DEV MODE
|
* PROTOTYPE DEV MODE
|
||||||
*
|
*
|
||||||
* Developer/feedback mode that allows users to easily copy Object IDs to clipboard
|
* Developer/feedback mode that allows users to easily copy Object IDs to clipboard
|
||||||
* for providing precise feedback on prototype elements.
|
* for providing precise feedback on prototype elements.
|
||||||
*
|
*
|
||||||
* Features:
|
* Features:
|
||||||
* - Toggle dev mode with button or Ctrl+E
|
* - Toggle dev mode with button or Ctrl+E
|
||||||
* - Prototype works NORMALLY when dev mode is on
|
* - Prototype works NORMALLY when dev mode is on
|
||||||
|
|
@ -11,13 +14,13 @@
|
||||||
* - Visual highlights show what will be copied (green when Shift is held)
|
* - Visual highlights show what will be copied (green when Shift is held)
|
||||||
* - Tooltip shows Object ID on hover
|
* - Tooltip shows Object ID on hover
|
||||||
* - Success feedback when copied
|
* - Success feedback when copied
|
||||||
*
|
*
|
||||||
* Usage:
|
* Usage:
|
||||||
* 1. Include this script in your prototype HTML
|
* 1. Include this script in your prototype HTML
|
||||||
* 2. Add the HTML toggle button and tooltip (see HTML template)
|
* 2. Add the HTML toggle button and tooltip (see HTML template)
|
||||||
* 3. Add the CSS styles (see CSS template)
|
* 3. Add the CSS styles (see CSS template)
|
||||||
* 4. Call initDevMode() on page load
|
* 4. Call initDevMode() on page load
|
||||||
*
|
*
|
||||||
* How it works:
|
* How it works:
|
||||||
* - Activate dev mode (Ctrl+E or click button)
|
* - Activate dev mode (Ctrl+E or click button)
|
||||||
* - Hover over elements to see their Object IDs (gray outline)
|
* - Hover over elements to see their Object IDs (gray outline)
|
||||||
|
|
@ -40,21 +43,28 @@ let currentHighlightedElement = null;
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
function initDevMode() {
|
function initDevMode() {
|
||||||
const toggleButton = document.getElementById('dev-mode-toggle');
|
const toggleButton = document.querySelector('#dev-mode-toggle');
|
||||||
const tooltip = document.getElementById('dev-mode-tooltip');
|
const tooltip = document.querySelector('#dev-mode-tooltip');
|
||||||
|
|
||||||
if (!toggleButton || !tooltip) {
|
if (!toggleButton || !tooltip) {
|
||||||
console.warn('⚠️ Dev Mode: Toggle button or tooltip not found');
|
console.warn('⚠️ Dev Mode: Toggle button or tooltip not found');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setupKeyboardShortcuts();
|
// Check if user agent supports clipboard API
|
||||||
setupToggleButton(toggleButton, tooltip);
|
if (typeof navigator !== 'undefined' && navigator.clipboard) {
|
||||||
setupHoverHighlight(tooltip);
|
// Clipboard API available
|
||||||
setupClickCopy();
|
} else {
|
||||||
|
console.warn('⚠️ Clipboard API not supported in this browser');
|
||||||
console.log('%c💡 Dev Mode available: Press Ctrl+E or click the Dev Mode button',
|
return;
|
||||||
'color: #0066CC; font-weight: bold;');
|
}
|
||||||
|
|
||||||
|
setupKeyboardShortcuts();
|
||||||
|
setupToggleButton(toggleButton, tooltip);
|
||||||
|
setupHoverHighlight(tooltip);
|
||||||
|
setupClickCopy();
|
||||||
|
|
||||||
|
console.log('%c💡 Dev Mode available: Press Ctrl+E or click the Dev Mode button', 'color: #0066CC; font-weight: bold;');
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
@ -62,39 +72,37 @@ function initDevMode() {
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
function setupKeyboardShortcuts() {
|
function setupKeyboardShortcuts() {
|
||||||
// Track Shift key for container selection
|
// Track Shift key for container selection
|
||||||
document.addEventListener('keydown', function(e) {
|
document.addEventListener('keydown', (e) => {
|
||||||
if (e.key === 'Shift') {
|
if (e.key === 'Shift') {
|
||||||
// Don't activate if user is typing in a form field
|
// Don't activate if user is typing in a form field
|
||||||
if (isTypingInField()) {
|
if (isTypingInField()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
shiftKeyPressed = true;
|
shiftKeyPressed = true;
|
||||||
document.body.classList.add('shift-held');
|
document.body.classList.add('shift-held');
|
||||||
if (devModeActive) {
|
if (devModeActive) {
|
||||||
console.log('%c⬆️ Shift held: Click any element to copy its Object ID',
|
console.log('%c⬆️ Shift held: Click any element to copy its Object ID', 'color: #10B981; font-weight: bold;');
|
||||||
'color: #10B981; font-weight: bold;');
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
// Ctrl+E toggle
|
||||||
// Ctrl+E toggle
|
if (e.ctrlKey && e.key === 'e') {
|
||||||
if (e.ctrlKey && e.key === 'e') {
|
e.preventDefault();
|
||||||
e.preventDefault();
|
document.querySelector('#dev-mode-toggle')?.click();
|
||||||
document.getElementById('dev-mode-toggle')?.click();
|
}
|
||||||
}
|
});
|
||||||
});
|
|
||||||
|
document.addEventListener('keyup', (e) => {
|
||||||
document.addEventListener('keyup', function(e) {
|
if (e.key === 'Shift') {
|
||||||
if (e.key === 'Shift') {
|
shiftKeyPressed = false;
|
||||||
shiftKeyPressed = false;
|
document.body.classList.remove('shift-held');
|
||||||
document.body.classList.remove('shift-held');
|
if (devModeActive) {
|
||||||
if (devModeActive) {
|
console.log('%c⬇️ Shift released: Prototype works normally (hold Shift to copy)', 'color: #6b7280;');
|
||||||
console.log('%c⬇️ Shift released: Prototype works normally (hold Shift to copy)',
|
}
|
||||||
'color: #6b7280;');
|
}
|
||||||
}
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
@ -102,34 +110,39 @@ function setupKeyboardShortcuts() {
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
function setupToggleButton(toggleButton, tooltip) {
|
function setupToggleButton(toggleButton, tooltip) {
|
||||||
toggleButton.addEventListener('click', function(e) {
|
toggleButton.addEventListener('click', function (e) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
devModeActive = !devModeActive;
|
if (typeof globalThis !== 'undefined') {
|
||||||
|
globalThis.devModeActive = true;
|
||||||
// Update UI
|
} else if (globalThis.window !== undefined) {
|
||||||
document.body.classList.toggle('dev-mode-active', devModeActive);
|
globalThis.devModeActive = true;
|
||||||
toggleButton.classList.toggle('active', devModeActive);
|
}
|
||||||
|
devModeActive = !devModeActive;
|
||||||
const statusText = toggleButton.querySelector('span');
|
|
||||||
if (statusText) {
|
// Update UI
|
||||||
statusText.textContent = devModeActive ? 'Dev Mode: ON' : 'Dev Mode: OFF';
|
document.body.classList.toggle('dev-mode-active', devModeActive);
|
||||||
}
|
toggleButton.classList.toggle('active', devModeActive);
|
||||||
|
|
||||||
// Log status
|
const statusText = toggleButton.querySelector('span');
|
||||||
console.log(`🔧 Dev Mode: ${devModeActive ? 'ACTIVATED' : 'DEACTIVATED'}`);
|
if (statusText) {
|
||||||
|
statusText.textContent = devModeActive ? 'Dev Mode: ON' : 'Dev Mode: OFF';
|
||||||
if (devModeActive) {
|
}
|
||||||
console.log('%c🔧 DEV MODE ACTIVE', 'color: #0066CC; font-size: 16px; font-weight: bold;');
|
|
||||||
console.log('%c⚠️ Hold SHIFT + Click any element to copy its Object ID', 'color: #FFB800; font-size: 14px; font-weight: bold;');
|
// Log status
|
||||||
console.log('%cWithout Shift: Prototype works normally', 'color: #6b7280;');
|
console.log(`🔧 Dev Mode: ${devModeActive ? 'ACTIVATED' : 'DEACTIVATED'}`);
|
||||||
console.log('%cPress Ctrl+E to toggle Dev Mode', 'color: #6b7280;');
|
|
||||||
} else {
|
if (devModeActive) {
|
||||||
tooltip.style.display = 'none';
|
console.log('%c🔧 DEV MODE ACTIVE', 'color: #0066CC; font-size: 16px; font-weight: bold;');
|
||||||
if (currentHighlightedElement) {
|
console.log('%c⚠️ Hold SHIFT + Click any element to copy its Object ID', 'color: #FFB800; font-size: 14px; font-weight: bold;');
|
||||||
clearHighlight();
|
console.log('%cWithout Shift: Prototype works normally', 'color: #6b7280;');
|
||||||
}
|
console.log('%cPress Ctrl+E to toggle Dev Mode', 'color: #6b7280;');
|
||||||
}
|
} else {
|
||||||
});
|
tooltip.style.display = 'none';
|
||||||
|
if (currentHighlightedElement) {
|
||||||
|
clearHighlight();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
@ -137,55 +150,55 @@ function setupToggleButton(toggleButton, tooltip) {
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
function setupHoverHighlight(tooltip) {
|
function setupHoverHighlight(tooltip) {
|
||||||
// Show tooltip and highlight on hover
|
// Show tooltip and highlight on hover
|
||||||
document.addEventListener('mouseover', function(e) {
|
document.addEventListener('mouseover', function (e) {
|
||||||
if (!devModeActive) return;
|
if (!devModeActive) return;
|
||||||
|
|
||||||
// Don't highlight if user is typing in a field
|
// Don't highlight if user is typing in a field
|
||||||
if (isTypingInField()) {
|
if (isTypingInField()) {
|
||||||
tooltip.style.display = 'none';
|
tooltip.style.display = 'none';
|
||||||
clearHighlight();
|
clearHighlight();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
clearHighlight();
|
clearHighlight();
|
||||||
|
|
||||||
let element = findElementWithId(e.target);
|
let element = findElementWithId(e.target);
|
||||||
|
|
||||||
if (!element || !element.id || isSystemElement(element.id)) {
|
if (!element || !element.id || isSystemElement(element.id)) {
|
||||||
tooltip.style.display = 'none';
|
tooltip.style.display = 'none';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Highlight element
|
// Highlight element
|
||||||
highlightElement(element, shiftKeyPressed);
|
highlightElement(element, shiftKeyPressed);
|
||||||
currentHighlightedElement = element;
|
currentHighlightedElement = element;
|
||||||
|
|
||||||
// Show tooltip
|
// Show tooltip
|
||||||
const prefix = shiftKeyPressed ? '✓ Click to Copy: ' : '⬆️ Hold Shift + Click: ';
|
const prefix = shiftKeyPressed ? '✓ Click to Copy: ' : '⬆️ Hold Shift + Click: ';
|
||||||
tooltip.textContent = prefix + element.id;
|
tooltip.textContent = prefix + element.id;
|
||||||
tooltip.style.display = 'block';
|
tooltip.style.display = 'block';
|
||||||
tooltip.style.background = shiftKeyPressed ? '#10B981' : '#6b7280';
|
tooltip.style.background = shiftKeyPressed ? '#10B981' : '#6b7280';
|
||||||
tooltip.style.color = '#fff';
|
tooltip.style.color = '#fff';
|
||||||
|
|
||||||
updateTooltipPosition(e, tooltip);
|
updateTooltipPosition(e, tooltip);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Update tooltip position on mouse move
|
// Update tooltip position on mouse move
|
||||||
document.addEventListener('mousemove', function(e) {
|
document.addEventListener('mousemove', function (e) {
|
||||||
if (devModeActive && tooltip.style.display === 'block') {
|
if (devModeActive && tooltip.style.display === 'block') {
|
||||||
updateTooltipPosition(e, tooltip);
|
updateTooltipPosition(e, tooltip);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Clear highlight on mouse out
|
// Clear highlight on mouse out
|
||||||
document.addEventListener('mouseout', function(e) {
|
document.addEventListener('mouseout', function (e) {
|
||||||
if (!devModeActive) return;
|
if (!devModeActive) return;
|
||||||
if (e.target.id) {
|
if (e.target.id) {
|
||||||
tooltip.style.display = 'none';
|
tooltip.style.display = 'none';
|
||||||
clearHighlight();
|
clearHighlight();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
@ -193,45 +206,49 @@ function setupHoverHighlight(tooltip) {
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
function setupClickCopy() {
|
function setupClickCopy() {
|
||||||
// Use capture phase to intercept clicks with Shift
|
// Use capture phase to intercept clicks with Shift
|
||||||
document.addEventListener('click', function(e) {
|
document.addEventListener(
|
||||||
if (!devModeActive) return;
|
'click',
|
||||||
|
function (e) {
|
||||||
// Allow toggle button to work normally
|
if (!devModeActive) return;
|
||||||
if (isToggleButton(e.target)) return;
|
|
||||||
|
// Allow toggle button to work normally
|
||||||
// ONLY copy if Shift is held
|
if (isToggleButton(e.target)) return;
|
||||||
if (!shiftKeyPressed) {
|
|
||||||
// Let prototype work normally without Shift
|
// ONLY copy if Shift is held
|
||||||
return;
|
if (!shiftKeyPressed) {
|
||||||
}
|
// Let prototype work normally without Shift
|
||||||
|
return;
|
||||||
// Don't intercept if user is clicking in/around a form field
|
}
|
||||||
if (isTypingInField() || isFormElement(e.target)) {
|
|
||||||
return;
|
// Don't intercept if user is clicking in/around a form field
|
||||||
}
|
if (isTypingInField() || isFormElement(e.target)) {
|
||||||
|
return;
|
||||||
// Shift is held and not in a form field - intercept and copy
|
}
|
||||||
e.preventDefault();
|
|
||||||
e.stopPropagation();
|
// Shift is held and not in a form field - intercept and copy
|
||||||
e.stopImmediatePropagation();
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
let element = findElementWithId(e.target);
|
e.stopImmediatePropagation();
|
||||||
|
|
||||||
if (!element || !element.id || isSystemElement(element.id)) {
|
let element = findElementWithId(e.target);
|
||||||
console.log('❌ No Object ID found');
|
|
||||||
return false;
|
if (!element || !element.id || isSystemElement(element.id)) {
|
||||||
}
|
console.log('❌ No Object ID found');
|
||||||
|
|
||||||
// Copy to clipboard
|
|
||||||
const objectId = element.id;
|
|
||||||
copyToClipboard(objectId);
|
|
||||||
|
|
||||||
// Show feedback
|
|
||||||
showCopyFeedback(element, objectId);
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}, true); // Capture phase
|
}
|
||||||
|
|
||||||
|
// Copy to clipboard
|
||||||
|
const objectId = element.id;
|
||||||
|
copyToClipboard(objectId);
|
||||||
|
|
||||||
|
// Show feedback
|
||||||
|
showCopyFeedback(element, objectId);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
true,
|
||||||
|
); // Capture phase
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
@ -239,175 +256,125 @@ function setupClickCopy() {
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
function findElementWithId(element) {
|
function findElementWithId(element) {
|
||||||
let current = element;
|
let current = element;
|
||||||
let attempts = 0;
|
let attempts = 0;
|
||||||
|
|
||||||
while (current && !current.id && attempts < 10) {
|
|
||||||
current = current.parentElement;
|
|
||||||
attempts++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
|
|
||||||
function findParentContainer(element) {
|
while (current && !current.id && attempts < 10) {
|
||||||
let current = element;
|
current = current.parentElement;
|
||||||
const maxLevels = 10;
|
attempts++;
|
||||||
let level = 0;
|
}
|
||||||
|
|
||||||
// Try to find semantic container parent first
|
return current;
|
||||||
while (current && current.id !== 'app' && level < maxLevels) {
|
|
||||||
if (current.parentElement && current.parentElement.id) {
|
|
||||||
const parentId = current.parentElement.id;
|
|
||||||
const parent = current.parentElement;
|
|
||||||
|
|
||||||
// Prefer semantic containers
|
|
||||||
if (parentId.includes('section') ||
|
|
||||||
parentId.includes('content') ||
|
|
||||||
parentId.includes('container') ||
|
|
||||||
parentId.includes('group') ||
|
|
||||||
parentId.includes('tabs') ||
|
|
||||||
parentId.includes('widget') ||
|
|
||||||
parentId.includes('modal') ||
|
|
||||||
parent.classList.contains('section') ||
|
|
||||||
parent.classList.contains('container') ||
|
|
||||||
parent.classList.contains('group')) {
|
|
||||||
return parent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
current = current.parentElement;
|
|
||||||
level++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fallback: find any parent with ID
|
|
||||||
current = element.parentElement;
|
|
||||||
level = 0;
|
|
||||||
while (current && level < maxLevels) {
|
|
||||||
if (current.id && current.id !== 'app') {
|
|
||||||
return current;
|
|
||||||
}
|
|
||||||
current = current.parentElement;
|
|
||||||
level++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return element;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function isSystemElement(id) {
|
function isSystemElement(id) {
|
||||||
const systemIds = ['app', 'dev-mode-toggle', 'dev-mode-tooltip'];
|
const systemIds = ['app', 'dev-mode-toggle', 'dev-mode-tooltip'];
|
||||||
return systemIds.includes(id);
|
return systemIds.includes(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isToggleButton(element) {
|
function isToggleButton(element) {
|
||||||
return element.id === 'dev-mode-toggle' ||
|
return element.id === 'dev-mode-toggle' || element.closest('#dev-mode-toggle') || element.classList.contains('dev-mode-toggle');
|
||||||
element.closest('#dev-mode-toggle') ||
|
|
||||||
element.classList.contains('dev-mode-toggle');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function isTypingInField() {
|
function isTypingInField() {
|
||||||
const activeElement = document.activeElement;
|
const activeElement = document.activeElement;
|
||||||
if (!activeElement) return false;
|
if (!activeElement) return false;
|
||||||
|
|
||||||
const tagName = activeElement.tagName.toLowerCase();
|
const tagName = activeElement.tagName.toLowerCase();
|
||||||
const isEditable = activeElement.isContentEditable;
|
const isEditable = activeElement.isContentEditable;
|
||||||
|
|
||||||
// Check if user is currently typing in a form field
|
// Check if user is currently typing in a form field
|
||||||
return tagName === 'input' ||
|
return tagName === 'input' || tagName === 'textarea' || tagName === 'select' || isEditable;
|
||||||
tagName === 'textarea' ||
|
|
||||||
tagName === 'select' ||
|
|
||||||
isEditable;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function isFormElement(element) {
|
function isFormElement(element) {
|
||||||
if (!element) return false;
|
if (!element) return false;
|
||||||
|
|
||||||
const tagName = element.tagName.toLowerCase();
|
const tagName = element.tagName.toLowerCase();
|
||||||
const isEditable = element.isContentEditable;
|
const isEditable = element.isContentEditable;
|
||||||
|
|
||||||
// Check if the clicked element is a form element
|
// Check if the clicked element is a form element
|
||||||
return tagName === 'input' ||
|
return tagName === 'input' || tagName === 'textarea' || tagName === 'select' || isEditable;
|
||||||
tagName === 'textarea' ||
|
|
||||||
tagName === 'select' ||
|
|
||||||
isEditable;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function highlightElement(element, isShiftHeld) {
|
function highlightElement(element, isShiftHeld) {
|
||||||
const color = isShiftHeld ? '#10B981' : '#6b7280';
|
const color = isShiftHeld ? '#10B981' : '#6b7280';
|
||||||
const width = isShiftHeld ? '3px' : '2px';
|
const width = isShiftHeld ? '3px' : '2px';
|
||||||
const offset = isShiftHeld ? '3px' : '2px';
|
const offset = isShiftHeld ? '3px' : '2px';
|
||||||
const shadowSpread = isShiftHeld ? '5px' : '2px';
|
const shadowSpread = isShiftHeld ? '5px' : '2px';
|
||||||
const shadowOpacity = isShiftHeld ? '0.4' : '0.2';
|
const shadowOpacity = isShiftHeld ? '0.4' : '0.2';
|
||||||
|
|
||||||
element.style.outline = `${width} solid ${color}`;
|
element.style.outline = `${width} solid ${color}`;
|
||||||
element.style.outlineOffset = offset;
|
element.style.outlineOffset = offset;
|
||||||
element.style.boxShadow = `0 0 0 ${shadowSpread} rgba(${isShiftHeld ? '16, 185, 129' : '107, 114, 128'}, ${shadowOpacity})`;
|
element.style.boxShadow = `0 0 0 ${shadowSpread} rgba(${isShiftHeld ? '16, 185, 129' : '107, 114, 128'}, ${shadowOpacity})`;
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearHighlight() {
|
function clearHighlight() {
|
||||||
if (currentHighlightedElement) {
|
if (currentHighlightedElement) {
|
||||||
currentHighlightedElement.style.outline = '';
|
currentHighlightedElement.style.outline = '';
|
||||||
currentHighlightedElement.style.boxShadow = '';
|
currentHighlightedElement.style.boxShadow = '';
|
||||||
currentHighlightedElement = null;
|
currentHighlightedElement = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateTooltipPosition(e, tooltip) {
|
function updateTooltipPosition(e, tooltip) {
|
||||||
const offset = 15;
|
const offset = 15;
|
||||||
let x = e.clientX + offset;
|
let x = e.clientX + offset;
|
||||||
let y = e.clientY + offset;
|
let y = e.clientY + offset;
|
||||||
|
|
||||||
// Keep tooltip on screen
|
// Keep tooltip on screen
|
||||||
const rect = tooltip.getBoundingClientRect();
|
const rect = tooltip.getBoundingClientRect();
|
||||||
if (x + rect.width > window.innerWidth) {
|
if (x + rect.width > window.innerWidth) {
|
||||||
x = e.clientX - rect.width - offset;
|
x = e.clientX - rect.width - offset;
|
||||||
}
|
}
|
||||||
if (y + rect.height > window.innerHeight) {
|
if (y + rect.height > window.innerHeight) {
|
||||||
y = e.clientY - rect.height - offset;
|
y = e.clientY - rect.height - offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
tooltip.style.left = x + 'px';
|
tooltip.style.left = x + 'px';
|
||||||
tooltip.style.top = y + 'px';
|
tooltip.style.top = y + 'px';
|
||||||
}
|
}
|
||||||
|
|
||||||
function copyToClipboard(text) {
|
function copyToClipboard(text) {
|
||||||
if (navigator.clipboard && navigator.clipboard.writeText) {
|
if (typeof navigator !== 'undefined' && navigator.clipboard && navigator.clipboard.writeText) {
|
||||||
navigator.clipboard.writeText(text)
|
navigator.clipboard
|
||||||
.then(() => {
|
.writeText(text)
|
||||||
console.log(`📋 Copied to clipboard: ${text}`);
|
.then(() => {
|
||||||
})
|
console.log(`📋 Copied to clipboard: ${text}`);
|
||||||
.catch(err => {
|
})
|
||||||
console.error('Failed to copy:', err);
|
.catch((error) => {
|
||||||
fallbackCopy(text);
|
console.error('Dev Mode error:', error);
|
||||||
});
|
|
||||||
} else {
|
|
||||||
fallbackCopy(text);
|
fallbackCopy(text);
|
||||||
}
|
});
|
||||||
|
} else {
|
||||||
|
fallbackCopy(text);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function fallbackCopy(text) {
|
function fallbackCopy(text) {
|
||||||
const textarea = document.createElement('textarea');
|
const textarea = document.createElement('textarea');
|
||||||
textarea.value = text;
|
textarea.value = text;
|
||||||
textarea.style.position = 'fixed';
|
textarea.style.position = 'fixed';
|
||||||
textarea.style.left = '-999999px';
|
textarea.style.left = '-999999px';
|
||||||
document.body.appendChild(textarea);
|
document.body.append(textarea);
|
||||||
textarea.focus();
|
textarea.focus();
|
||||||
textarea.select();
|
textarea.select();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
document.execCommand('copy');
|
document.execCommand('copy');
|
||||||
console.log(`📋 Copied (fallback): ${text}`);
|
console.log(`📋 Copied (fallback): ${text}`);
|
||||||
} catch (err) {
|
} catch (error) {
|
||||||
console.error('Fallback copy failed:', err);
|
console.error('Dev Mode error:', error);
|
||||||
}
|
}
|
||||||
|
|
||||||
document.body.removeChild(textarea);
|
textarea.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
function showCopyFeedback(element, objectId) {
|
function showCopyFeedback(element, objectId) {
|
||||||
// Create feedback overlay
|
// Create feedback overlay
|
||||||
const feedback = document.createElement('div');
|
const feedback = document.createElement('div');
|
||||||
feedback.textContent = '✓ Copied: ' + objectId;
|
feedback.textContent = '✓ Copied: ' + objectId;
|
||||||
feedback.style.cssText = `
|
feedback.style.cssText = `
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
|
@ -423,19 +390,19 @@ function showCopyFeedback(element, objectId) {
|
||||||
animation: fadeInOut 1.5s ease-in-out;
|
animation: fadeInOut 1.5s ease-in-out;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
document.body.appendChild(feedback);
|
document.body.append(feedback);
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
document.body.removeChild(feedback);
|
feedback.remove();
|
||||||
}, 1500);
|
}, 1500);
|
||||||
|
|
||||||
// Flash element
|
// Flash element
|
||||||
const originalOutline = element.style.outline;
|
const originalOutline = element.style.outline;
|
||||||
element.style.outline = '3px solid #10B981';
|
element.style.outline = '3px solid #10B981';
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
element.style.outline = originalOutline;
|
element.style.outline = originalOutline;
|
||||||
}, 300);
|
}, 300);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add CSS animation
|
// Add CSS animation
|
||||||
|
|
@ -448,17 +415,16 @@ style.textContent = `
|
||||||
100% { opacity: 0; transform: translate(-50%, -50%) scale(0.9); }
|
100% { opacity: 0; transform: translate(-50%, -50%) scale(0.9); }
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
document.head.appendChild(style);
|
document.head.append(style);
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// EXPORT
|
// EXPORT
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
// Make available globally
|
// Make available globally
|
||||||
window.initDevMode = initDevMode;
|
globalThis.initDevMode = initDevMode;
|
||||||
|
|
||||||
// Auto-initialize if this is included as module
|
// Export for use in other scripts
|
||||||
if (typeof module !== 'undefined' && module.exports) {
|
if (typeof globalThis !== 'undefined' && globalThis.exports) {
|
||||||
module.exports = { initDevMode };
|
globalThis.exports = { initDevMode };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,63 +1,63 @@
|
||||||
{
|
{
|
||||||
"user": {
|
"user": {
|
||||||
"id": "demo-user-001",
|
"id": "demo-user-001",
|
||||||
"firstName": "[First Name]",
|
"firstName": "[First Name]",
|
||||||
"lastName": "[Last Name]",
|
"lastName": "[Last Name]",
|
||||||
"email": "[email@example.com]",
|
"email": "[email@example.com]",
|
||||||
"phoneNumber": "[+1234567890]",
|
"phoneNumber": "[+1234567890]",
|
||||||
"picture": "",
|
"picture": "",
|
||||||
"role": "owner",
|
"role": "owner",
|
||||||
"createdAt": "2024-01-01T00:00:00.000Z",
|
"createdAt": "2024-01-01T00:00:00.000Z",
|
||||||
"updatedAt": "2024-01-01T00:00:00.000Z"
|
"updatedAt": "2024-01-01T00:00:00.000Z"
|
||||||
|
},
|
||||||
|
"family": {
|
||||||
|
"id": "demo-family-001",
|
||||||
|
"name": "[Family Name]",
|
||||||
|
"description": "[Brief family description]",
|
||||||
|
"location": "[City, Country]",
|
||||||
|
"picture": "",
|
||||||
|
"ownerId": "demo-user-001",
|
||||||
|
"createdAt": "2024-01-01T00:00:00.000Z",
|
||||||
|
"updatedAt": "2024-01-01T00:00:00.000Z"
|
||||||
|
},
|
||||||
|
"members": [
|
||||||
|
{
|
||||||
|
"id": "demo-member-001",
|
||||||
|
"familyId": "demo-family-001",
|
||||||
|
"userId": "demo-user-001",
|
||||||
|
"firstName": "[Member 1 First Name]",
|
||||||
|
"lastName": "[Member 1 Last Name]",
|
||||||
|
"email": "[member1@example.com]",
|
||||||
|
"role": "owner",
|
||||||
|
"picture": "",
|
||||||
|
"createdAt": "2024-01-01T00:00:00.000Z"
|
||||||
},
|
},
|
||||||
"family": {
|
{
|
||||||
"id": "demo-family-001",
|
"id": "demo-member-002",
|
||||||
"name": "[Family Name]",
|
"familyId": "demo-family-001",
|
||||||
"description": "[Brief family description]",
|
"userId": "demo-user-002",
|
||||||
"location": "[City, Country]",
|
"firstName": "[Member 2 First Name]",
|
||||||
"picture": "",
|
"lastName": "[Member 2 Last Name]",
|
||||||
"ownerId": "demo-user-001",
|
"email": "[member2@example.com]",
|
||||||
"createdAt": "2024-01-01T00:00:00.000Z",
|
"role": "co-owner",
|
||||||
"updatedAt": "2024-01-01T00:00:00.000Z"
|
"picture": "",
|
||||||
},
|
"createdAt": "2024-01-02T00:00:00.000Z"
|
||||||
"members": [
|
}
|
||||||
{
|
],
|
||||||
"id": "demo-member-001",
|
"dogs": [
|
||||||
"familyId": "demo-family-001",
|
{
|
||||||
"userId": "demo-user-001",
|
"id": "demo-dog-001",
|
||||||
"firstName": "[Member 1 First Name]",
|
"familyId": "demo-family-001",
|
||||||
"lastName": "[Member 1 Last Name]",
|
"name": "[Dog Name]",
|
||||||
"email": "[member1@example.com]",
|
"breed": "[Dog Breed]",
|
||||||
"role": "owner",
|
"gender": "male",
|
||||||
"picture": "",
|
"birthDate": "2020-05-15",
|
||||||
"createdAt": "2024-01-01T00:00:00.000Z"
|
"color": "[Color]",
|
||||||
},
|
"specialNeeds": "[Any special needs or notes]",
|
||||||
{
|
"picture": "",
|
||||||
"id": "demo-member-002",
|
"createdAt": "2024-01-01T00:00:00.000Z",
|
||||||
"familyId": "demo-family-001",
|
"updatedAt": "2024-01-01T00:00:00.000Z"
|
||||||
"userId": "demo-user-002",
|
}
|
||||||
"firstName": "[Member 2 First Name]",
|
],
|
||||||
"lastName": "[Member 2 Last Name]",
|
"comment": "This is demo data that loads automatically when prototype is opened for the first time. Edit this file to change the demo data. All fields with empty strings ('') are optional."
|
||||||
"email": "[member2@example.com]",
|
}
|
||||||
"role": "co-owner",
|
|
||||||
"picture": "",
|
|
||||||
"createdAt": "2024-01-02T00:00:00.000Z"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"dogs": [
|
|
||||||
{
|
|
||||||
"id": "demo-dog-001",
|
|
||||||
"familyId": "demo-family-001",
|
|
||||||
"name": "[Dog Name]",
|
|
||||||
"breed": "[Dog Breed]",
|
|
||||||
"gender": "male",
|
|
||||||
"birthDate": "2020-05-15",
|
|
||||||
"color": "[Color]",
|
|
||||||
"specialNeeds": "[Any special needs or notes]",
|
|
||||||
"picture": "",
|
|
||||||
"createdAt": "2024-01-01T00:00:00.000Z",
|
|
||||||
"updatedAt": "2024-01-01T00:00:00.000Z"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"comment": "This is demo data that loads automatically when prototype is opened for the first time. Edit this file to change the demo data. All fields with empty strings ('') are optional."
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ metadata:
|
||||||
complexity: "simple | medium | complex"
|
complexity: "simple | medium | complex"
|
||||||
estimated_sections: [Number]
|
estimated_sections: [Number]
|
||||||
estimated_time: "[X] minutes"
|
estimated_time: "[X] minutes"
|
||||||
|
|
||||||
# Device Compatibility
|
# Device Compatibility
|
||||||
device_compatibility:
|
device_compatibility:
|
||||||
type: "mobile-only | mobile-tablet | responsive | desktop-only"
|
type: "mobile-only | mobile-tablet | responsive | desktop-only"
|
||||||
|
|
@ -28,10 +28,10 @@ metadata:
|
||||||
- width: 428
|
- width: 428
|
||||||
height: 926
|
height: 926
|
||||||
device: "iPhone 14 Pro Max"
|
device: "iPhone 14 Pro Max"
|
||||||
breakpoints: [] # For mobile-only, leave empty
|
breakpoints: [] # For mobile-only, leave empty
|
||||||
touch_optimized: true
|
touch_optimized: true
|
||||||
hover_interactions: false
|
hover_interactions: false
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
- "shared/prototype-api.js"
|
- "shared/prototype-api.js"
|
||||||
- "shared/init.js"
|
- "shared/init.js"
|
||||||
|
|
@ -47,18 +47,18 @@ design_tokens:
|
||||||
primary_hover: "#1d4ed8"
|
primary_hover: "#1d4ed8"
|
||||||
success: "#10b981"
|
success: "#10b981"
|
||||||
error: "#ef4444"
|
error: "#ef4444"
|
||||||
|
|
||||||
tailwind_config:
|
tailwind_config:
|
||||||
theme_extend:
|
theme_extend:
|
||||||
colors:
|
colors:
|
||||||
'[project-name]':
|
"[project-name]":
|
||||||
50: '#eff6ff'
|
50: "#eff6ff"
|
||||||
500: '#2563eb'
|
500: "#2563eb"
|
||||||
600: '#1d4ed8'
|
600: "#1d4ed8"
|
||||||
700: '#1e40af'
|
700: "#1e40af"
|
||||||
fontFamily:
|
fontFamily:
|
||||||
sans: "['Inter', 'system-ui', 'sans-serif']"
|
sans: "['Inter', 'system-ui', 'sans-serif']"
|
||||||
|
|
||||||
components_available:
|
components_available:
|
||||||
- "image-crop (components/image-crop.js)"
|
- "image-crop (components/image-crop.js)"
|
||||||
- "toast (components/toast.js)"
|
- "toast (components/toast.js)"
|
||||||
|
|
@ -92,9 +92,9 @@ demo_data_needed:
|
||||||
firstName: "[Example]"
|
firstName: "[Example]"
|
||||||
lastName: "[Example]"
|
lastName: "[Example]"
|
||||||
email: "[example@email.com]"
|
email: "[example@email.com]"
|
||||||
|
|
||||||
# Add other demo data needs (family, dogs, etc.)
|
# Add other demo data needs (family, dogs, etc.)
|
||||||
|
|
||||||
example_submission:
|
example_submission:
|
||||||
# Example of completed form data
|
# Example of completed form data
|
||||||
field1: "[value]"
|
field1: "[value]"
|
||||||
|
|
@ -108,12 +108,12 @@ object_ids:
|
||||||
header:
|
header:
|
||||||
- "[page]-header-back"
|
- "[page]-header-back"
|
||||||
- "[page]-header-title"
|
- "[page]-header-title"
|
||||||
|
|
||||||
form_inputs:
|
form_inputs:
|
||||||
- "[page]-input-[field1]"
|
- "[page]-input-[field1]"
|
||||||
- "[page]-input-[field2]"
|
- "[page]-input-[field2]"
|
||||||
# Add all form fields
|
# Add all form fields
|
||||||
|
|
||||||
actions:
|
actions:
|
||||||
- "[page]-button-submit"
|
- "[page]-button-submit"
|
||||||
# Add all action buttons
|
# Add all action buttons
|
||||||
|
|
@ -141,7 +141,7 @@ sections:
|
||||||
- "Mobile viewport (375px) looks correct"
|
- "Mobile viewport (375px) looks correct"
|
||||||
- "Tailwind styles applied correctly"
|
- "Tailwind styles applied correctly"
|
||||||
placeholder_message: "🚧 Building the form... Check back in a few minutes!"
|
placeholder_message: "🚧 Building the form... Check back in a few minutes!"
|
||||||
|
|
||||||
- id: "section-2"
|
- id: "section-2"
|
||||||
name: "[Section Name]"
|
name: "[Section Name]"
|
||||||
scope: "[What this section adds]"
|
scope: "[What this section adds]"
|
||||||
|
|
@ -156,7 +156,7 @@ sections:
|
||||||
- "[Test 1]"
|
- "[Test 1]"
|
||||||
- "[Test 2]"
|
- "[Test 2]"
|
||||||
placeholder_message: "[What's coming next]"
|
placeholder_message: "[What's coming next]"
|
||||||
|
|
||||||
# Add sections 3-6+ as needed
|
# Add sections 3-6+ as needed
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
|
|
@ -167,19 +167,19 @@ javascript_functions:
|
||||||
initialization:
|
initialization:
|
||||||
- "initPage() - Page-specific initialization"
|
- "initPage() - Page-specific initialization"
|
||||||
- "[Other init functions]"
|
- "[Other init functions]"
|
||||||
|
|
||||||
form_handling:
|
form_handling:
|
||||||
- "handleSubmit(event) - Form submission"
|
- "handleSubmit(event) - Form submission"
|
||||||
- "validateForm() - Validate all fields"
|
- "validateForm() - Validate all fields"
|
||||||
- "[Other form functions]"
|
- "[Other form functions]"
|
||||||
|
|
||||||
ui_interactions:
|
ui_interactions:
|
||||||
- "[Interaction function 1]"
|
- "[Interaction function 1]"
|
||||||
- "[Interaction function 2]"
|
- "[Interaction function 2]"
|
||||||
|
|
||||||
api_calls:
|
api_calls:
|
||||||
- "DogWeekAPI.[method]([params])"
|
- "DogWeekAPI.[method]([params])"
|
||||||
|
|
||||||
feedback:
|
feedback:
|
||||||
- "showToast(message, type)"
|
- "showToast(message, type)"
|
||||||
- "setLoadingState(isLoading)"
|
- "setLoadingState(isLoading)"
|
||||||
|
|
@ -200,34 +200,34 @@ navigation:
|
||||||
|
|
||||||
testing_checklist:
|
testing_checklist:
|
||||||
functionality:
|
functionality:
|
||||||
- [ ] All form fields work
|
- "[ ] All form fields work"
|
||||||
- [ ] Validation shows errors correctly
|
- "[ ] Validation shows errors correctly"
|
||||||
- [ ] Submit button works
|
- "[ ] Submit button works"
|
||||||
- [ ] Loading states display
|
- "[ ] Loading states display"
|
||||||
- [ ] Success feedback shows
|
- "[ ] Success feedback shows"
|
||||||
- [ ] Error handling works
|
- "[ ] Error handling works"
|
||||||
- [ ] Navigation works (back, next)
|
- "[ ] Navigation works (back, next)"
|
||||||
- [ ] Data persists (reload page test)
|
- "[ ] Data persists (reload page test)"
|
||||||
|
|
||||||
mobile_testing:
|
mobile_testing:
|
||||||
- [ ] Viewport is correct width
|
- "[ ] Viewport is correct width"
|
||||||
- [ ] All tap targets min 44x44px
|
- "[ ] All tap targets min 44x44px"
|
||||||
- [ ] Text is readable (min 16px)
|
- "[ ] Text is readable (min 16px)"
|
||||||
- [ ] No horizontal scroll
|
- "[ ] No horizontal scroll"
|
||||||
- [ ] Touch gestures work (if applicable)
|
- "[ ] Touch gestures work (if applicable)"
|
||||||
|
|
||||||
code_quality:
|
code_quality:
|
||||||
- [ ] All Object IDs present
|
- "[ ] All Object IDs present"
|
||||||
- [ ] Console logs helpful
|
- "[ ] Console logs helpful"
|
||||||
- [ ] No console errors
|
- "[ ] No console errors"
|
||||||
- [ ] Tailwind classes properly used
|
- "[ ] Tailwind classes properly used"
|
||||||
- [ ] Functions documented
|
- "[ ] Functions documented"
|
||||||
|
|
||||||
accessibility:
|
accessibility:
|
||||||
- [ ] Keyboard navigation works
|
- "[ ] Keyboard navigation works"
|
||||||
- [ ] Form labels present
|
- "[ ] Form labels present"
|
||||||
- [ ] Error messages clear
|
- "[ ] Error messages clear"
|
||||||
- [ ] Focus states visible
|
- "[ ] Focus states visible"
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# MIGRATION NOTES (for production)
|
# MIGRATION NOTES (for production)
|
||||||
|
|
@ -262,4 +262,3 @@ definition_of_done:
|
||||||
- "No console errors"
|
- "No console errors"
|
||||||
- "Code is clean"
|
- "Code is clean"
|
||||||
- "Story files document all sections"
|
- "Story files document all sections"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
---
|
||||||
|
name: UX Design Workflow
|
||||||
|
description: Transform ideas into detailed visual specifications through scenario-driven design using step-file architecture
|
||||||
|
main_config: "{project-root}/{bmad_folder}/wds/config.yaml"
|
||||||
|
web_bundle: true
|
||||||
|
---
|
||||||
|
# Workflow configuration for UX Design process
|
||||||
|
# This workflow handles the complete UX design phase from concept to implementation
|
||||||
|
|
||||||
|
phases:
|
||||||
|
- phase_1_project_brief
|
||||||
|
- phase_2_trigger_mapping
|
||||||
|
- phase_3_prd_platform
|
||||||
|
- phase_4_ux_design
|
||||||
|
- phase_5_design_system
|
||||||
|
- phase_6_design_deliveries
|
||||||
|
- phase_7_testing
|
||||||
|
- phase_8_ongoing_development
|
||||||
|
|
@ -4,4 +4,15 @@ description: Transform ideas into detailed visual specifications through scenari
|
||||||
main_config: "{project-root}/{bmad_folder}/wds/config.yaml"
|
main_config: "{project-root}/{bmad_folder}/wds/config.yaml"
|
||||||
web_bundle: true
|
web_bundle: true
|
||||||
---
|
---
|
||||||
|
# Workflow configuration for UX Design process
|
||||||
|
# This workflow handles the complete UX design phase from concept to implementation
|
||||||
|
|
||||||
|
phases:
|
||||||
|
- phase_1_project_brief
|
||||||
|
- phase_2_trigger_mapping
|
||||||
|
- phase_3_prd_platform
|
||||||
|
- phase_4_ux_design
|
||||||
|
- phase_5_design_system
|
||||||
|
- phase_6_design_deliveries
|
||||||
|
- phase_7_testing
|
||||||
|
- phase_8_ongoing_development
|
||||||
|
|
|
||||||
|
|
@ -8,14 +8,14 @@ vtc:
|
||||||
# ==========================================
|
# ==========================================
|
||||||
business_goal:
|
business_goal:
|
||||||
primary: "500 newsletter signups in Q1"
|
primary: "500 newsletter signups in Q1"
|
||||||
secondary: "" # Optional: Secondary goal this also supports
|
secondary: "" # Optional: Secondary goal this also supports
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# SOLUTION
|
# SOLUTION
|
||||||
# What are we building to achieve this goal?
|
# What are we building to achieve this goal?
|
||||||
# ==========================================
|
# ==========================================
|
||||||
solution: "Landing page with trend insights lead magnet"
|
solution: "Landing page with trend insights lead magnet"
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# USER
|
# USER
|
||||||
# Who is the primary user for this solution?
|
# Who is the primary user for this solution?
|
||||||
|
|
@ -25,34 +25,33 @@ vtc:
|
||||||
description: "Hairdresser, ambitious, small-town salon owner"
|
description: "Hairdresser, ambitious, small-town salon owner"
|
||||||
context: "Late evening, researching industry trends online"
|
context: "Late evening, researching industry trends online"
|
||||||
current_state: "Wants to stay ahead of local competitors"
|
current_state: "Wants to stay ahead of local competitors"
|
||||||
priority: "" # Optional: Priority score from Trigger Map
|
priority: "" # Optional: Priority score from Trigger Map
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# DRIVING FORCES
|
# DRIVING FORCES
|
||||||
# What motivates this user?
|
# What motivates this user?
|
||||||
# ==========================================
|
# ==========================================
|
||||||
driving_forces:
|
driving_forces:
|
||||||
|
|
||||||
# Positive: Wishes, aspirations, what they want to achieve
|
# Positive: Wishes, aspirations, what they want to achieve
|
||||||
positive:
|
positive:
|
||||||
- "Wish to be the local beauty authority"
|
- "Wish to be the local beauty authority"
|
||||||
- "Wish to attract premium clients"
|
- "Wish to attract premium clients"
|
||||||
- "Wish to be seen as cutting-edge"
|
- "Wish to be seen as cutting-edge"
|
||||||
|
|
||||||
# Negative: Fears, frustrations, what they want to avoid
|
# Negative: Fears, frustrations, what they want to avoid
|
||||||
negative:
|
negative:
|
||||||
- "Fear of missing industry trends"
|
- "Fear of missing industry trends"
|
||||||
- "Fear of losing clients to trendier salons"
|
- "Fear of losing clients to trendier salons"
|
||||||
- "Avoid appearing outdated"
|
- "Avoid appearing outdated"
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# CUSTOMER AWARENESS
|
# CUSTOMER AWARENESS
|
||||||
# Where user starts → where we move them
|
# Where user starts → where we move them
|
||||||
# ==========================================
|
# ==========================================
|
||||||
customer_awareness:
|
customer_awareness:
|
||||||
start: "Problem Aware" # Knows: Need to stay current
|
start: "Problem Aware" # Knows: Need to stay current
|
||||||
end: "Product Aware" # Knows: Our newsletter helps
|
end: "Product Aware" # Knows: Our newsletter helps
|
||||||
|
|
||||||
# Awareness stages:
|
# Awareness stages:
|
||||||
# - Unaware: Doesn't know problem exists
|
# - Unaware: Doesn't know problem exists
|
||||||
# - Problem Aware: Knows problem, doesn't know solutions
|
# - Problem Aware: Knows problem, doesn't know solutions
|
||||||
|
|
@ -68,22 +67,22 @@ metadata:
|
||||||
created_date: "2025-12-31"
|
created_date: "2025-12-31"
|
||||||
created_by: "Product Team"
|
created_by: "Product Team"
|
||||||
version: "1.0"
|
version: "1.0"
|
||||||
|
|
||||||
# Source tracking
|
# Source tracking
|
||||||
source: "creation" # "creation" (from scratch) or "trigger_map" (extracted)
|
source: "creation" # "creation" (from scratch) or "trigger_map" (extracted)
|
||||||
trigger_map_path: "" # If extracted from Trigger Map, path to source
|
trigger_map_path: "" # If extracted from Trigger Map, path to source
|
||||||
|
|
||||||
# Priorities (if from Trigger Map)
|
# Priorities (if from Trigger Map)
|
||||||
business_goal_priority: "" # e.g., "1" or "High"
|
business_goal_priority: "" # e.g., "1" or "High"
|
||||||
user_priority: "" # e.g., "1" or "High"
|
user_priority: "" # e.g., "1" or "High"
|
||||||
|
|
||||||
# Usage context
|
# Usage context
|
||||||
purpose: "product_pitch" # "product_pitch", "scenario", "prototype", etc.
|
purpose: "product_pitch" # "product_pitch", "scenario", "prototype", etc.
|
||||||
phase: "Phase 1" # WDS phase where this VTC is used
|
phase: "Phase 1" # WDS phase where this VTC is used
|
||||||
|
|
||||||
# Related files
|
# Related files
|
||||||
related_documents:
|
related_documents:
|
||||||
- "" # Path to Product Brief, Scenario, etc.
|
- "" # Path to Product Brief, Scenario, etc.
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# NOTES & RATIONALE
|
# NOTES & RATIONALE
|
||||||
|
|
@ -93,17 +92,17 @@ notes: |
|
||||||
- Why this VTC was created
|
- Why this VTC was created
|
||||||
- Key decisions made during workshop
|
- Key decisions made during workshop
|
||||||
- Important insights captured
|
- Important insights captured
|
||||||
|
|
||||||
Selection rationale (if from Trigger Map):
|
Selection rationale (if from Trigger Map):
|
||||||
- Why these specific driving forces were chosen
|
- Why these specific driving forces were chosen
|
||||||
- Why this user/goal combination
|
- Why this user/goal combination
|
||||||
- Any refinements made from original map
|
- Any refinements made from original map
|
||||||
|
|
||||||
Usage guidance:
|
Usage guidance:
|
||||||
- How this VTC should inform design
|
- How this VTC should inform design
|
||||||
- What questions it should answer
|
- What questions it should answer
|
||||||
- Where it applies
|
- Where it applies
|
||||||
|
|
||||||
ALPHA FEEDBACK (please document):
|
ALPHA FEEDBACK (please document):
|
||||||
- Actual workshop duration: [X minutes]
|
- Actual workshop duration: [X minutes]
|
||||||
- Steps that were unclear: [which steps?]
|
- Steps that were unclear: [which steps?]
|
||||||
|
|
@ -116,22 +115,22 @@ notes: |
|
||||||
# Track changes from Trigger Map if applicable
|
# Track changes from Trigger Map if applicable
|
||||||
# ==========================================
|
# ==========================================
|
||||||
refinements:
|
refinements:
|
||||||
- type: "" # "added", "modified", "clarified"
|
- type: "" # "added", "modified", "clarified"
|
||||||
element: "" # What was changed
|
element: "" # What was changed
|
||||||
original: "" # Original from Trigger Map
|
original: "" # Original from Trigger Map
|
||||||
updated: "" # Updated version in this VTC
|
updated: "" # Updated version in this VTC
|
||||||
reason: "" # Why the change was made
|
reason: "" # Why the change was made
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# VALIDATION CHECKLIST
|
# VALIDATION CHECKLIST
|
||||||
# ==========================================
|
# ==========================================
|
||||||
validation:
|
validation:
|
||||||
coherence: false # Does this tell a coherent story?
|
coherence: false # Does this tell a coherent story?
|
||||||
actionable: false # Can designers make decisions from this?
|
actionable: false # Can designers make decisions from this?
|
||||||
specific: false # Are driving forces specific enough?
|
specific: false # Are driving forces specific enough?
|
||||||
realistic: false # Does awareness progression make sense?
|
realistic: false # Does awareness progression make sense?
|
||||||
measurable: false # Is business goal measurable?
|
measurable: false # Is business goal measurable?
|
||||||
focused: false # Is this focused (not trying to serve everyone)?
|
focused: false # Is this focused (not trying to serve everyone)?
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# EXAMPLE APPLICATIONS
|
# EXAMPLE APPLICATIONS
|
||||||
|
|
@ -140,21 +139,21 @@ validation:
|
||||||
applications:
|
applications:
|
||||||
# Examples of how this VTC guides design
|
# Examples of how this VTC guides design
|
||||||
# Remove this section in actual VTC files
|
# Remove this section in actual VTC files
|
||||||
|
|
||||||
content_examples:
|
content_examples:
|
||||||
- element: "Hero headline"
|
- element: "Hero headline"
|
||||||
vtc_reasoning: "Addresses 'fear of missing trends' directly"
|
vtc_reasoning: "Addresses 'fear of missing trends' directly"
|
||||||
result: "'Never Miss a Trend: Weekly Insights for Ambitious Stylists'"
|
result: "'Never Miss a Trend: Weekly Insights for Ambitious Stylists'"
|
||||||
|
|
||||||
- element: "CTA button"
|
- element: "CTA button"
|
||||||
vtc_reasoning: "Aspirational language matching 'wish to be authority'"
|
vtc_reasoning: "Aspirational language matching 'wish to be authority'"
|
||||||
result: "'Join the Authority Circle' (not just 'Subscribe')"
|
result: "'Join the Authority Circle' (not just 'Subscribe')"
|
||||||
|
|
||||||
design_examples:
|
design_examples:
|
||||||
- element: "Visual style"
|
- element: "Visual style"
|
||||||
vtc_reasoning: "User wants to be seen as cutting-edge"
|
vtc_reasoning: "User wants to be seen as cutting-edge"
|
||||||
result: "Modern, premium aesthetic (not traditional salon look)"
|
result: "Modern, premium aesthetic (not traditional salon look)"
|
||||||
|
|
||||||
- element: "Social proof"
|
- element: "Social proof"
|
||||||
vtc_reasoning: "Reduces 'fear of appearing outdated'"
|
vtc_reasoning: "Reduces 'fear of appearing outdated'"
|
||||||
result: "Testimonials from successful salon owners"
|
result: "Testimonials from successful salon owners"
|
||||||
|
|
@ -164,7 +163,7 @@ applications:
|
||||||
# ==========================================
|
# ==========================================
|
||||||
|
|
||||||
# HOW TO USE THIS TEMPLATE:
|
# HOW TO USE THIS TEMPLATE:
|
||||||
#
|
#
|
||||||
# 1. Copy this file to your project location:
|
# 1. Copy this file to your project location:
|
||||||
# - Product Pitch: docs/A-Product-Brief/vtc-primary.yaml
|
# - Product Pitch: docs/A-Product-Brief/vtc-primary.yaml
|
||||||
# - Scenario: docs/D-UX-Design/[scenario-name]/vtc.yaml
|
# - Scenario: docs/D-UX-Design/[scenario-name]/vtc.yaml
|
||||||
|
|
@ -184,7 +183,7 @@ applications:
|
||||||
# 6. When making design decisions, ask:
|
# 6. When making design decisions, ask:
|
||||||
# "Does this serve the business goal by triggering these driving forces
|
# "Does this serve the business goal by triggering these driving forces
|
||||||
# while moving the user forward in customer awareness?"
|
# while moving the user forward in customer awareness?"
|
||||||
#
|
#
|
||||||
# If yes → Good design decision
|
# If yes → Good design decision
|
||||||
# If no → Reconsider
|
# If no → Reconsider
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,13 @@ project:
|
||||||
description: "{{PROJECT_DESCRIPTION}}"
|
description: "{{PROJECT_DESCRIPTION}}"
|
||||||
wds_version: "6.0"
|
wds_version: "6.0"
|
||||||
created: "{{DATE}}"
|
created: "{{DATE}}"
|
||||||
|
|
||||||
# Project Structure - defines folder organization
|
# Project Structure - defines folder organization
|
||||||
structure:
|
structure:
|
||||||
type: "{{STRUCTURE_TYPE}}" # "landing_page" | "simple_website" | "web_application"
|
type: "{{STRUCTURE_TYPE}}" # "landing_page" | "simple_website" | "web_application"
|
||||||
scenarios: "{{STRUCTURE_SCENARIOS}}" # "single" | "multiple"
|
scenarios: "{{STRUCTURE_SCENARIOS}}" # "single" | "multiple"
|
||||||
pages: "{{STRUCTURE_PAGES}}" # "single" | "multiple"
|
pages: "{{STRUCTURE_PAGES}}" # "single" | "multiple"
|
||||||
|
|
||||||
# Folder organization pattern
|
# Folder organization pattern
|
||||||
# landing_page: 4-scenarios/1.1-page-name/
|
# landing_page: 4-scenarios/1.1-page-name/
|
||||||
# simple_website: 4-scenarios/1.1-page/, 4-scenarios/1.2-page/
|
# simple_website: 4-scenarios/1.1-page/, 4-scenarios/1.2-page/
|
||||||
|
|
@ -20,12 +20,12 @@ project:
|
||||||
|
|
||||||
# Design System Configuration
|
# Design System Configuration
|
||||||
design_system:
|
design_system:
|
||||||
enabled: { { DESIGN_SYSTEM_ENABLED } } # true | false
|
enabled: "{{DESIGN_SYSTEM_ENABLED}}" # true | false
|
||||||
mode: "{{DESIGN_SYSTEM_MODE}}" # "none" | "custom" | "library"
|
mode: "{{DESIGN_SYSTEM_MODE}}" # "none" | "custom" | "library"
|
||||||
|
|
||||||
# If mode: custom
|
# If mode: custom
|
||||||
figma:
|
figma:
|
||||||
enabled: { { FIGMA_ENABLED } } # true | false
|
enabled: "{{FIGMA_ENABLED}}" # true | false
|
||||||
file_url: "{{FIGMA_URL}}" # Figma file URL (if applicable)
|
file_url: "{{FIGMA_URL}}" # Figma file URL (if applicable)
|
||||||
|
|
||||||
# If mode: library
|
# If mode: library
|
||||||
|
|
@ -39,17 +39,17 @@ sketching:
|
||||||
|
|
||||||
# If tool: excalidraw
|
# If tool: excalidraw
|
||||||
excalidraw:
|
excalidraw:
|
||||||
enabled: { { EXCALIDRAW_ENABLED } } # true | false
|
enabled: "{{EXCALIDRAW_ENABLED}}" # true | false
|
||||||
|
|
||||||
# Auto-export to PNG/SVG on save
|
# Auto-export to PNG/SVG on save
|
||||||
auto_export: { { AUTO_EXPORT } } # true | false
|
auto_export: "{{AUTO_EXPORT}}" # true | false
|
||||||
|
|
||||||
# Load WDS component library
|
# Load WDS component library
|
||||||
use_library: { { USE_LIBRARY } } # true | false
|
use_library: "{{USE_LIBRARY}}" # true | false
|
||||||
|
|
||||||
# Grid settings
|
# Grid settings
|
||||||
grid_size: { { GRID_SIZE } } # pixels (recommended: 20)
|
grid_size: "{{GRID_SIZE}}" # pixels (recommended: 20)
|
||||||
snap_to_grid: { { SNAP_TO_GRID } } # true | false
|
snap_to_grid: "{{SNAP_TO_GRID}}" # true | false
|
||||||
|
|
||||||
# Default theme
|
# Default theme
|
||||||
theme: "{{THEME}}" # "light" | "dark"
|
theme: "{{THEME}}" # "light" | "dark"
|
||||||
|
|
@ -69,13 +69,13 @@ output:
|
||||||
workflow:
|
workflow:
|
||||||
# Phase 4: UX Design
|
# Phase 4: UX Design
|
||||||
ux_design:
|
ux_design:
|
||||||
sketch_first: { { SKETCH_FIRST } } # true | false
|
sketch_first: "{{SKETCH_FIRST}}" # true | false
|
||||||
ai_suggestions: { { AI_SUGGESTIONS } } # true | false
|
ai_suggestions: "{{AI_SUGGESTIONS}}" # true | false
|
||||||
|
|
||||||
# Phase 5: Design System
|
# Phase 5: Design System
|
||||||
design_system:
|
design_system:
|
||||||
auto_extract: { { AUTO_EXTRACT } } # true | false
|
auto_extract: "{{AUTO_EXTRACT}}" # true | false
|
||||||
similarity_threshold: { { SIMILARITY_THRESHOLD } } # 0.0-1.0 (recommended: 0.7)
|
similarity_threshold: "{{SIMILARITY_THRESHOLD}}" # 0.0-1.0 (recommended: 0.7)
|
||||||
|
|
||||||
# Team Configuration
|
# Team Configuration
|
||||||
team:
|
team:
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ project:
|
||||||
# Determines which workflow structure and phase naming to use
|
# Determines which workflow structure and phase naming to use
|
||||||
methodology:
|
methodology:
|
||||||
type: "wds-v6" # wds-v6 | wps2c-v4 | custom
|
type: "wds-v6" # wds-v6 | wps2c-v4 | custom
|
||||||
|
|
||||||
# Methodology-specific instructions:
|
# Methodology-specific instructions:
|
||||||
# - wds-v6: Modern numbered phases (1-project-brief, 2-trigger-mapping, etc.)
|
# - wds-v6: Modern numbered phases (1-project-brief, 2-trigger-mapping, etc.)
|
||||||
# Instructions: src/modules/wds/workflows/workflow-init/methodology-instructions/wds-v6-instructions.md
|
# Instructions: src/modules/wds/workflows/workflow-init/methodology-instructions/wds-v6-instructions.md
|
||||||
|
|
@ -24,7 +24,7 @@ methodology:
|
||||||
#
|
#
|
||||||
# - custom: Your own methodology (copy custom-methodology-template.md)
|
# - custom: Your own methodology (copy custom-methodology-template.md)
|
||||||
# Instructions: Specify path to your custom file below
|
# Instructions: Specify path to your custom file below
|
||||||
|
|
||||||
custom_instructions_file: null
|
custom_instructions_file: null
|
||||||
# Only used if type: "custom"
|
# Only used if type: "custom"
|
||||||
# Example: "docs/.custom-methodology.md"
|
# Example: "docs/.custom-methodology.md"
|
||||||
|
|
@ -48,11 +48,11 @@ phases:
|
||||||
intent: |
|
intent: |
|
||||||
Define project vision, positioning, goals, and success criteria.
|
Define project vision, positioning, goals, and success criteria.
|
||||||
Establish foundation for all subsequent work.
|
Establish foundation for all subsequent work.
|
||||||
|
|
||||||
User's intentions for this phase:
|
User's intentions for this phase:
|
||||||
{{USER_INTENT_PHASE_1}}
|
{{USER_INTENT_PHASE_1}}
|
||||||
artifacts: [] # Files created in this phase
|
artifacts: [] # Files created in this phase
|
||||||
|
|
||||||
phase_2_trigger_mapping:
|
phase_2_trigger_mapping:
|
||||||
active: true # Set to FALSE for internal tools, technical products
|
active: true # Set to FALSE for internal tools, technical products
|
||||||
required: false
|
required: false
|
||||||
|
|
@ -66,12 +66,12 @@ phases:
|
||||||
intent: |
|
intent: |
|
||||||
Identify target users, personas, business goals, and triggers.
|
Identify target users, personas, business goals, and triggers.
|
||||||
Critical for customer-facing products. Optional for internal tools.
|
Critical for customer-facing products. Optional for internal tools.
|
||||||
|
|
||||||
User's intentions for this phase:
|
User's intentions for this phase:
|
||||||
{{USER_INTENT_PHASE_2}}
|
{{USER_INTENT_PHASE_2}}
|
||||||
skip_reason: "" # e.g., "Internal tool - no external users"
|
skip_reason: "" # e.g., "Internal tool - no external users"
|
||||||
artifacts: []
|
artifacts: []
|
||||||
|
|
||||||
phase_3_prd_platform:
|
phase_3_prd_platform:
|
||||||
active: true
|
active: true
|
||||||
required: true
|
required: true
|
||||||
|
|
@ -85,11 +85,11 @@ phases:
|
||||||
intent: |
|
intent: |
|
||||||
Define technical architecture, data model, infrastructure.
|
Define technical architecture, data model, infrastructure.
|
||||||
Foundation for implementation planning.
|
Foundation for implementation planning.
|
||||||
|
|
||||||
User's intentions for this phase:
|
User's intentions for this phase:
|
||||||
{{USER_INTENT_PHASE_3}}
|
{{USER_INTENT_PHASE_3}}
|
||||||
artifacts: []
|
artifacts: []
|
||||||
|
|
||||||
phase_4_ux_design:
|
phase_4_ux_design:
|
||||||
active: true
|
active: true
|
||||||
required: true
|
required: true
|
||||||
|
|
@ -103,12 +103,12 @@ phases:
|
||||||
intent: |
|
intent: |
|
||||||
Create page specifications, interactive prototypes, user flows.
|
Create page specifications, interactive prototypes, user flows.
|
||||||
Core design work - defines what gets built.
|
Core design work - defines what gets built.
|
||||||
|
|
||||||
User's intentions for this phase:
|
User's intentions for this phase:
|
||||||
{{USER_INTENT_PHASE_4}}
|
{{USER_INTENT_PHASE_4}}
|
||||||
|
|
||||||
# Scenario-level tracking
|
# Scenario-level tracking
|
||||||
scenarios:
|
scenarios: []
|
||||||
# Example structure - populated as scenarios are created:
|
# Example structure - populated as scenarios are created:
|
||||||
# - id: "01-customer-onboarding"
|
# - id: "01-customer-onboarding"
|
||||||
# name: "Customer Onboarding"
|
# name: "Customer Onboarding"
|
||||||
|
|
@ -123,12 +123,12 @@ phases:
|
||||||
# - "docs/4-ux-design/01-customer-onboarding/00-scenario-overview.md"
|
# - "docs/4-ux-design/01-customer-onboarding/00-scenario-overview.md"
|
||||||
# - "docs/4-ux-design/01-customer-onboarding/1.1-start-page.md"
|
# - "docs/4-ux-design/01-customer-onboarding/1.1-start-page.md"
|
||||||
# - "docs/4-ux-design/01-customer-onboarding/sketches/*.excalidraw"
|
# - "docs/4-ux-design/01-customer-onboarding/sketches/*.excalidraw"
|
||||||
|
|
||||||
scenarios_planned: 0 # Total number of scenarios planned
|
scenarios_planned: 0 # Total number of scenarios planned
|
||||||
scenarios_complete: 0 # Number fully specified
|
scenarios_complete: 0 # Number fully specified
|
||||||
current_scenario: null # Currently working on
|
current_scenario: null # Currently working on
|
||||||
artifacts: []
|
artifacts: []
|
||||||
|
|
||||||
phase_5_design_system:
|
phase_5_design_system:
|
||||||
active: false # Often skipped for MVP, one-off pages, using component library
|
active: false # Often skipped for MVP, one-off pages, using component library
|
||||||
required: false
|
required: false
|
||||||
|
|
@ -142,12 +142,12 @@ phases:
|
||||||
intent: |
|
intent: |
|
||||||
Extract and document reusable components from scenarios.
|
Extract and document reusable components from scenarios.
|
||||||
Optional - only needed for multi-product design consistency.
|
Optional - only needed for multi-product design consistency.
|
||||||
|
|
||||||
User's intentions for this phase:
|
User's intentions for this phase:
|
||||||
{{USER_INTENT_PHASE_5}}
|
{{USER_INTENT_PHASE_5}}
|
||||||
skip_reason: "" # e.g., "Using shadcn/ui component library"
|
skip_reason: "" # e.g., "Using shadcn/ui component library"
|
||||||
artifacts: []
|
artifacts: []
|
||||||
|
|
||||||
phase_6_design_deliveries:
|
phase_6_design_deliveries:
|
||||||
active: true
|
active: true
|
||||||
required: false
|
required: false
|
||||||
|
|
@ -161,11 +161,11 @@ phases:
|
||||||
intent: |
|
intent: |
|
||||||
Package design work for handoff to development team.
|
Package design work for handoff to development team.
|
||||||
Creates PRD, roadmap, and implementation guide.
|
Creates PRD, roadmap, and implementation guide.
|
||||||
|
|
||||||
User's intentions for this phase:
|
User's intentions for this phase:
|
||||||
{{USER_INTENT_PHASE_6}}
|
{{USER_INTENT_PHASE_6}}
|
||||||
artifacts: []
|
artifacts: []
|
||||||
|
|
||||||
phase_7_testing:
|
phase_7_testing:
|
||||||
active: true
|
active: true
|
||||||
required: false
|
required: false
|
||||||
|
|
@ -179,11 +179,11 @@ phases:
|
||||||
intent: |
|
intent: |
|
||||||
Validate implementation matches design specifications.
|
Validate implementation matches design specifications.
|
||||||
Compare built product to prototypes and specs.
|
Compare built product to prototypes and specs.
|
||||||
|
|
||||||
User's intentions for this phase:
|
User's intentions for this phase:
|
||||||
{{USER_INTENT_PHASE_7}}
|
{{USER_INTENT_PHASE_7}}
|
||||||
artifacts: []
|
artifacts: []
|
||||||
|
|
||||||
phase_8_ongoing_development:
|
phase_8_ongoing_development:
|
||||||
active: false # Only active for existing products
|
active: false # Only active for existing products
|
||||||
required: false
|
required: false
|
||||||
|
|
@ -197,7 +197,7 @@ phases:
|
||||||
intent: |
|
intent: |
|
||||||
Iterative improvements to existing products.
|
Iterative improvements to existing products.
|
||||||
Feature enhancements, optimization, evolution.
|
Feature enhancements, optimization, evolution.
|
||||||
|
|
||||||
User's intentions for this phase:
|
User's intentions for this phase:
|
||||||
{{USER_INTENT_PHASE_8}}
|
{{USER_INTENT_PHASE_8}}
|
||||||
skip_reason: "" # e.g., "New product - not yet in maintenance phase"
|
skip_reason: "" # e.g., "New product - not yet in maintenance phase"
|
||||||
|
|
@ -208,10 +208,10 @@ project_type:
|
||||||
category: "{{CATEGORY}}" # web-app | mobile-app | landing-page | design-system | internal-tool
|
category: "{{CATEGORY}}" # web-app | mobile-app | landing-page | design-system | internal-tool
|
||||||
complexity: "{{COMPLEXITY}}" # simple | moderate | complex
|
complexity: "{{COMPLEXITY}}" # simple | moderate | complex
|
||||||
stage: "{{STAGE}}" # new-product | existing-product | redesign | feature-addition
|
stage: "{{STAGE}}" # new-product | existing-product | redesign | feature-addition
|
||||||
|
|
||||||
# Customer-facing or internal?
|
# Customer-facing or internal?
|
||||||
customer_facing: true # Set to FALSE to skip phase 2 by default
|
customer_facing: true # Set to FALSE to skip phase 2 by default
|
||||||
|
|
||||||
# Design system approach
|
# Design system approach
|
||||||
design_system_approach: "{{APPROACH}}" # none | library | custom
|
design_system_approach: "{{APPROACH}}" # none | library | custom
|
||||||
design_library: "{{LIBRARY}}" # e.g., "shadcn/ui", "MUI", "custom"
|
design_library: "{{LIBRARY}}" # e.g., "shadcn/ui", "MUI", "custom"
|
||||||
|
|
@ -229,7 +229,7 @@ agent_behavior:
|
||||||
skip_inactive_phases: true # Don't report on phases marked active: false
|
skip_inactive_phases: true # Don't report on phases marked active: false
|
||||||
focus_on_current_phase: true # Emphasize the next active phase
|
focus_on_current_phase: true # Emphasize the next active phase
|
||||||
suggest_phase_handoffs: true # Recommend switching to specialized agents
|
suggest_phase_handoffs: true # Recommend switching to specialized agents
|
||||||
|
|
||||||
# Status reporting style
|
# Status reporting style
|
||||||
show_completion_percentage: false # Overall project % complete
|
show_completion_percentage: false # Overall project % complete
|
||||||
show_phase_estimates: false # Time estimates per phase
|
show_phase_estimates: false # Time estimates per phase
|
||||||
|
|
@ -238,12 +238,12 @@ agent_behavior:
|
||||||
# Project-Specific Notes
|
# Project-Specific Notes
|
||||||
notes: |
|
notes: |
|
||||||
{{PROJECT_NOTES}}
|
{{PROJECT_NOTES}}
|
||||||
|
|
||||||
Example notes:
|
Example notes:
|
||||||
- This is an internal tool, so we're skipping Trigger Mapping (Phase 2)
|
- This is an internal tool, so we're skipping Trigger Mapping (Phase 2)
|
||||||
- Using shadcn/ui library, so Design System (Phase 5) is minimal
|
- Using shadcn/ui library, so Design System (Phase 5) is minimal
|
||||||
- MVP focus - Testing (Phase 7) will happen post-launch
|
- MVP focus - Testing (Phase 7) will happen post-launch
|
||||||
|
|
||||||
# Version Control & Update Log
|
# Version Control & Update Log
|
||||||
version: 1
|
version: 1
|
||||||
last_updated: "{{DATE}}"
|
last_updated: "{{DATE}}"
|
||||||
|
|
@ -267,171 +267,163 @@ update_history:
|
||||||
# phase: "phase_4_ux_design"
|
# phase: "phase_4_ux_design"
|
||||||
# changes: "Started Scenario 01: Customer Onboarding"
|
# changes: "Started Scenario 01: Customer Onboarding"
|
||||||
|
|
||||||
---
|
# ============================================================================
|
||||||
|
|
||||||
# AGENT INSTRUCTIONS FOR USING THIS FILE
|
# AGENT INSTRUCTIONS FOR USING THIS FILE
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
## During Project Initiation (Saga WDS Analyst Agent):
|
# During Project Initiation (Saga WDS Analyst Agent):
|
||||||
|
#
|
||||||
**When creating the Product Brief**, walk through each phase and ask about user intentions:
|
# When creating the Product Brief, walk through each phase and ask about user intentions:
|
||||||
|
#
|
||||||
### Phase 1: Project Brief (Always included)
|
# Phase 1: Project Brief (Always included)
|
||||||
*No question - this is where we are now!*
|
# No question - this is where we are now!
|
||||||
|
#
|
||||||
### Phase 2: Trigger Mapping
|
# Phase 2: Trigger Mapping
|
||||||
**Ask**: "What are your intentions for Trigger Mapping? This phase helps us identify target users, personas, and business goals.
|
# Ask: What are your intentions for Trigger Mapping? This phase helps us identify target users, personas, and business goals.
|
||||||
|
# Is this a customer-facing product where understanding user triggers is critical? Or an internal tool where we might skip this phase?
|
||||||
Is this a customer-facing product where understanding user triggers is critical? Or an internal tool where we might skip this phase?"
|
#
|
||||||
|
# Capture: User's answer → {{USER_INTENT_PHASE_2}}
|
||||||
**Capture**: User's answer → `{{USER_INTENT_PHASE_2}}`
|
# Decision: Set active: true or active: false based on answer
|
||||||
**Decision**: Set `active: true` or `active: false` based on answer
|
#
|
||||||
|
# Phase 3: PRD Platform
|
||||||
### Phase 3: PRD Platform
|
# Ask: What are your intentions for technical foundation? Do you already have a tech stack in mind, or do you need help defining architecture, data model, and infrastructure requirements?
|
||||||
**Ask**: "What are your intentions for the technical foundation? Do you already have a tech stack in mind, or do you need help defining the architecture, data model, and infrastructure requirements?"
|
#
|
||||||
|
# Capture: User's answer → {{USER_INTENT_PHASE_3}}
|
||||||
**Capture**: User's answer → `{{USER_INTENT_PHASE_3}}`
|
#
|
||||||
|
# Phase 4: UX Design
|
||||||
### Phase 4: UX Design
|
# Ask: What are your intentions for UX Design? How many user scenarios or flows do you envision? Are you thinking MVP-focused (2-3 core scenarios) or comprehensive (5+ scenarios)?
|
||||||
**Ask**: "What are your intentions for UX Design? How many user scenarios or flows do you envision? Are you thinking MVP-focused (2-3 core scenarios) or comprehensive (5+ scenarios)?"
|
#
|
||||||
|
# Capture: User's answer → {{USER_INTENT_PHASE_4}}
|
||||||
**Capture**: User's answer → `{{USER_INTENT_PHASE_4}}`
|
# Note: Also capture estimated scenarios_planned number
|
||||||
**Note**: Also capture estimated `scenarios_planned` number
|
#
|
||||||
|
# Phase 5: Design System
|
||||||
### Phase 5: Design System
|
# Ask: What are your intentions for a Design System? Are you:
|
||||||
**Ask**: "What are your intentions for a Design System? Are you:
|
# - Using an existing component library (shadcn/ui, MUI)?
|
||||||
- Using an existing component library (shadcn/ui, MUI)?
|
# - Building custom components?
|
||||||
- Building custom components?
|
# - Creating a multi-product design system?
|
||||||
- Creating a multi-product design system?
|
# - Skipping this for MVP?
|
||||||
- Skipping this for MVP?"
|
#
|
||||||
|
# Capture: User's answer → {{USER_INTENT_PHASE_5}}
|
||||||
**Capture**: User's answer → `{{USER_INTENT_PHASE_5}}`
|
# Decision: Set active: false if skipping, add skip_reason
|
||||||
**Decision**: Set `active: false` if skipping, add `skip_reason`
|
#
|
||||||
|
# Phase 6: Design Deliveries
|
||||||
### Phase 6: Design Deliveries
|
# Ask: What are your intentions for design deliveries? Will you be handing off to a development team, or implementing directly from specifications?
|
||||||
**Ask**: "What are your intentions for design deliveries? Will you be handing off to a development team, or implementing directly from specifications?"
|
#
|
||||||
|
# Capture: User's answer → {{USER_INTENT_PHASE_6}}
|
||||||
**Capture**: User's answer → `{{USER_INTENT_PHASE_6}}`
|
#
|
||||||
|
# Phase 7: Testing
|
||||||
### Phase 7: Testing
|
# Ask: What are your intentions for testing? Do you want to validate implementation against design specs, or handle testing separately?
|
||||||
**Ask**: "What are your intentions for testing? Do you want to validate the implementation against design specs, or handle testing separately?"
|
#
|
||||||
|
# Capture: User's answer → {{USER_INTENT_PHASE_7}}
|
||||||
**Capture**: User's answer → `{{USER_INTENT_PHASE_7}}`
|
#
|
||||||
|
# Phase 8: Ongoing Development
|
||||||
### Phase 8: Ongoing Development
|
# Ask: Is this a new product or an existing product needing improvements?
|
||||||
**Ask**: "Is this a new product or an existing product needing improvements?"
|
#
|
||||||
|
# Capture: User's answer → {{USER_INTENT_PHASE_8}}
|
||||||
**Capture**: User's answer → `{{USER_INTENT_PHASE_8}}`
|
# Decision: Set active: false for new products
|
||||||
**Decision**: Set `active: false` for new products
|
#
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
---
|
#
|
||||||
|
# On Agent Activation (ALL WDS Agents):
|
||||||
## On Agent Activation (ALL WDS Agents):
|
#
|
||||||
|
# 1. CHECK if .wds-project-outline.yaml exists in docs/ or project root
|
||||||
1. **CHECK** if `.wds-project-outline.yaml` exists in docs/ or project root
|
# 2. READ the outline to understand:
|
||||||
2. **READ** the outline to understand:
|
# - Which phases are active
|
||||||
- Which phases are active
|
# - User's intentions for each phase
|
||||||
- User's intentions for each phase
|
# - Current status of each phase
|
||||||
- Current status of each phase
|
# - What work has been completed
|
||||||
- What work has been completed
|
# - What work is next
|
||||||
- What work is next
|
# 3. SKIP analysis of inactive phases (active: false)
|
||||||
3. **SKIP** analysis of inactive phases (active: false)
|
# 4. REPORT status based on outline (much faster than folder scanning)
|
||||||
4. **REPORT** status based on outline (much faster than folder scanning)
|
#
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
---
|
#
|
||||||
|
# When Starting Scenario Work (Freya WDS Designer Agent):
|
||||||
## When Starting Scenario Work (Freya WDS Designer Agent):
|
#
|
||||||
|
# Add new scenario to the outline:
|
||||||
Add new scenario to the outline:
|
#
|
||||||
|
# yaml
|
||||||
```yaml
|
# scenarios:
|
||||||
scenarios:
|
# - id: "01-customer-onboarding"
|
||||||
- id: "01-customer-onboarding"
|
# name: "Customer Onboarding"
|
||||||
name: "Customer Onboarding"
|
# status: "in_progress"
|
||||||
status: "in_progress"
|
# pages_planned: 9
|
||||||
pages_planned: 9
|
# pages_specified: 0
|
||||||
pages_specified: 0
|
# pages_implemented: 0
|
||||||
pages_implemented: 0
|
# started_date: "2024-12-10"
|
||||||
started_date: "2024-12-10"
|
# completed_date: null
|
||||||
completed_date: null
|
# intent: "Onboard new users from landing page to active family"
|
||||||
intent: "Onboard new users from landing page to active family"
|
# artifacts: []
|
||||||
artifacts: []
|
#
|
||||||
```
|
# ---------------------------------------------------------------------------
|
||||||
|
#
|
||||||
---
|
# When Completing Scenario Work (Freya WDS Designer Agent):
|
||||||
|
#
|
||||||
## When Completing Scenario Work (Freya WDS Designer Agent):
|
# Update scenario status:
|
||||||
|
#
|
||||||
Update scenario status:
|
# yaml
|
||||||
|
# - id: "01-customer-onboarding"
|
||||||
```yaml
|
# name: "Customer Onboarding"
|
||||||
- id: "01-customer-onboarding"
|
# status: "complete"
|
||||||
name: "Customer Onboarding"
|
# pages_planned: 9
|
||||||
status: "complete"
|
# pages_specified: 9
|
||||||
pages_planned: 9
|
# pages_implemented: 5
|
||||||
pages_specified: 9
|
# started_date: "2024-12-01"
|
||||||
pages_implemented: 5
|
# completed_date: "2024-12-08"
|
||||||
started_date: "2024-12-01"
|
# intent: "Onboard new users from landing page to active family"
|
||||||
completed_date: "2024-12-08"
|
# artifacts:
|
||||||
intent: "Onboard new users from landing page to active family"
|
# - "docs/4-ux-design/01-customer-onboarding/00-scenario-overview.md"
|
||||||
artifacts:
|
# - "docs/4-ux-design/01-customer-onboarding/1.1-start-page.md"
|
||||||
- "docs/4-ux-design/01-customer-onboarding/00-scenario-overview.md"
|
# - "docs/4-ux-design/01-customer-onboarding/sketches/*.excalidraw"
|
||||||
- "docs/4-ux-design/01-customer-onboarding/1.1-start-page.md"
|
#
|
||||||
- "docs/4-ux-design/01-customer-onboarding/sketches/*.excalidraw"
|
# Update phase-level counters:
|
||||||
```
|
# yaml
|
||||||
|
# scenarios_complete: 1 # Increment
|
||||||
Update phase-level counters:
|
#
|
||||||
```yaml
|
# ---------------------------------------------------------------------------
|
||||||
scenarios_complete: 1 # Increment
|
#
|
||||||
```
|
# When Starting/Completing Phase Work (ALL Agents):
|
||||||
|
#
|
||||||
---
|
# Starting:
|
||||||
|
# yaml
|
||||||
## When Starting/Completing Phase Work (ALL Agents):
|
# status: "in_progress"
|
||||||
|
# started_date: "2024-12-10"
|
||||||
**Starting:**
|
#
|
||||||
```yaml
|
# Completing:
|
||||||
status: "in_progress"
|
# yaml
|
||||||
started_date: "2024-12-10"
|
# status: "complete"
|
||||||
```
|
# completed_date: "2024-12-10"
|
||||||
|
# completed_by: "Freya WDS Designer Agent"
|
||||||
**Completing:**
|
# artifacts:
|
||||||
```yaml
|
# - "docs/4-ux-design/01-onboarding/*.md"
|
||||||
status: "complete"
|
#
|
||||||
completed_date: "2024-12-10"
|
# Add update history entry:
|
||||||
completed_by: "Freya WDS Designer Agent"
|
# yaml
|
||||||
artifacts:
|
# update_history:
|
||||||
- "docs/4-ux-design/01-onboarding/*.md"
|
# - date: "2024-12-10"
|
||||||
```
|
# agent: "freya-designer"
|
||||||
|
# action: "completed"
|
||||||
Add update history entry:
|
# phase: "phase_4_ux_design"
|
||||||
```yaml
|
# changes: "Completed Scenario 01: 9 pages specified with prototypes"
|
||||||
update_history:
|
#
|
||||||
- date: "2024-12-10"
|
# ---------------------------------------------------------------------------
|
||||||
agent: "freya-designer"
|
#
|
||||||
action: "completed"
|
# Benefits:
|
||||||
phase: "phase_4_ux_design"
|
#
|
||||||
changes: "Completed Scenario 01: 9 pages specified with prototypes"
|
# ✅ User-driven planning - captures intentions upfront during project initiation
|
||||||
```
|
# ✅ 5x faster agent activation - no folder scanning needed
|
||||||
|
# ✅ Scenario-level tracking - granular progress visibility within UX Design phase
|
||||||
---
|
# ✅ Always up to date - agents update as they work
|
||||||
|
# ✅ Clear intent - explains WHY phases are skipped AND user's goals for each phase
|
||||||
## Benefits:
|
# ✅ Project memory - tracks who did what and when
|
||||||
|
# ✅ Better recommendations - agents know exactly what's next
|
||||||
✅ **User-driven planning** - captures intentions upfront during project initiation
|
#
|
||||||
✅ **5x faster agent activation** - no folder scanning needed
|
# ---------------------------------------------------------------------------
|
||||||
✅ **Scenario-level tracking** - granular progress visibility within UX Design phase
|
#
|
||||||
✅ **Always up to date** - agents update as they work
|
# File Location:
|
||||||
✅ **Clear intent** - explains WHY phases are skipped AND user's goals for each phase
|
#
|
||||||
✅ **Project memory** - tracks who did what and when
|
# - Preferred: docs/.wds-project-outline.yaml
|
||||||
✅ **Better recommendations** - agents know exactly what's next
|
# - Fallback: .wds-project-outline.yaml (project root)
|
||||||
|
# - Created by: Saga WDS Analyst Agent during Project Brief phase
|
||||||
---
|
# - Updated by: ALL WDS agents as work progresses
|
||||||
|
|
||||||
## File Location:
|
|
||||||
|
|
||||||
- Preferred: `docs/.wds-project-outline.yaml`
|
|
||||||
- Fallback: `.wds-project-outline.yaml` (project root)
|
|
||||||
- Created by: Saga WDS Analyst Agent during Project Brief phase
|
|
||||||
- Updated by: ALL WDS agents as work progresses
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue