ccjk 1.5.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.ja.md +249 -297
  2. package/README.ko.md +241 -290
  3. package/README.md +222 -364
  4. package/README.zh-CN.md +553 -295
  5. package/dist/chunks/claude-code-config-manager.mjs +7 -7
  6. package/dist/chunks/claude-code-incremental-manager.mjs +1 -1
  7. package/dist/chunks/codex-config-switch.mjs +3 -3
  8. package/dist/chunks/codex-provider-manager.mjs +1 -1
  9. package/dist/chunks/codex-uninstaller.mjs +2 -2
  10. package/dist/chunks/commands.mjs +1 -1
  11. package/dist/chunks/features.mjs +10 -10
  12. package/dist/chunks/simple-config.mjs +321 -389
  13. package/dist/chunks/smart-guide.mjs +234 -0
  14. package/dist/cli.mjs +1795 -433
  15. package/dist/i18n/locales/en/configuration.json +12 -1
  16. package/dist/i18n/locales/en/marketplace.json +84 -0
  17. package/dist/i18n/locales/en/menu.json +38 -1
  18. package/dist/i18n/locales/en/skills.json +140 -0
  19. package/dist/i18n/locales/en/smartGuide.json +49 -0
  20. package/dist/i18n/locales/en/subagent.json +69 -0
  21. package/dist/i18n/locales/en/superpowers.json +58 -0
  22. package/dist/i18n/locales/zh-CN/configuration.json +12 -1
  23. package/dist/i18n/locales/zh-CN/marketplace.json +84 -0
  24. package/dist/i18n/locales/zh-CN/menu.json +38 -1
  25. package/dist/i18n/locales/zh-CN/skills.json +140 -0
  26. package/dist/i18n/locales/zh-CN/smartGuide.json +49 -0
  27. package/dist/i18n/locales/zh-CN/subagent.json +69 -0
  28. package/dist/i18n/locales/zh-CN/superpowers.json +58 -0
  29. package/dist/index.d.mts +1 -0
  30. package/dist/index.d.ts +1 -0
  31. package/dist/index.mjs +366 -7
  32. package/package.json +26 -27
  33. package/templates/common/skills/en/brainstorming.md +64 -0
  34. package/templates/common/skills/en/code-review.md +81 -0
  35. package/templates/common/skills/en/documentation-gen.md +808 -0
  36. package/templates/common/skills/en/executing-plans.md +75 -0
  37. package/templates/common/skills/en/git-commit.md +216 -0
  38. package/templates/common/skills/en/interview.md +223 -0
  39. package/templates/common/skills/en/migration-assistant.md +312 -0
  40. package/templates/common/skills/en/performance-profiling.md +576 -0
  41. package/templates/common/skills/en/pr-review.md +341 -0
  42. package/templates/common/skills/en/refactoring.md +384 -0
  43. package/templates/common/skills/en/security-audit.md +462 -0
  44. package/templates/common/skills/en/systematic-debugging.md +82 -0
  45. package/templates/common/skills/en/tdd-workflow.md +93 -0
  46. package/templates/common/skills/en/verification.md +81 -0
  47. package/templates/common/skills/en/workflow.md +370 -0
  48. package/templates/common/skills/en/writing-plans.md +78 -0
  49. package/templates/common/skills/zh-CN/documentation-gen.md +807 -0
  50. package/templates/common/skills/zh-CN/migration-assistant.md +318 -0
  51. package/templates/common/skills/zh-CN/performance-profiling.md +746 -0
  52. package/templates/common/skills/zh-CN/pr-review.md +341 -0
  53. package/templates/common/skills/zh-CN/refactoring.md +384 -0
  54. package/templates/common/skills/zh-CN/security-audit.md +462 -0
  55. package/templates/common/smart-guide/en/smart-guide.md +72 -0
  56. package/templates/common/smart-guide/zh-CN/smart-guide.md +72 -0
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: executing-plans
3
+ description: Execute implementation plans with checkpoint verification
4
+ version: 1.0.0
5
+ author: CCJK
6
+ category: dev
7
+ triggers:
8
+ - /execute
9
+ - /ep
10
+ - /run-plan
11
+ use_when:
12
+ - "User has approved plan"
13
+ - "Ready to implement"
14
+ - "User mentions executing or starting implementation"
15
+ auto_activate: false
16
+ priority: 6
17
+ difficulty: intermediate
18
+ tags:
19
+ - execution
20
+ - implementation
21
+ - checkpoints
22
+ ---
23
+
24
+ # Executing Plans
25
+
26
+ ## Context
27
+ $ARGUMENTS
28
+
29
+ ## Instructions
30
+
31
+ Execute the implementation plan systematically:
32
+
33
+ ### Execution Protocol
34
+
35
+ 1. **Before Each Step**
36
+ - Confirm current step with user
37
+ - Check prerequisites are met
38
+ - Identify potential blockers
39
+
40
+ 2. **During Implementation**
41
+ - Work in small, verifiable increments
42
+ - Write tests before production code (TDD)
43
+ - Commit frequently with clear messages
44
+
45
+ 3. **At Checkpoints**
46
+ - Verify all criteria are met
47
+ - Run relevant tests
48
+ - Get user confirmation before proceeding
49
+
50
+ 4. **If Issues Arise**
51
+ - Stop and report the issue
52
+ - Propose solutions
53
+ - Wait for user decision
54
+
55
+ ### Checkpoint Verification
56
+
57
+ ```markdown
58
+ ## Checkpoint: [Name]
59
+
60
+ ### Completed Steps
61
+ - [x] Step 1
62
+ - [x] Step 2
63
+
64
+ ### Verification
65
+ - [ ] Tests passing
66
+ - [ ] Code reviewed
67
+ - [ ] Documentation updated
68
+
69
+ ### Ready to proceed? (y/n)
70
+ ```
71
+
72
+ ### Rules
73
+ - Never skip checkpoints
74
+ - Always verify before moving forward
75
+ - Document any deviations from plan
@@ -0,0 +1,216 @@
1
+ ---
2
+ name: git-commit
3
+ description: Smart commit message generation with conventional commits
4
+ version: 1.0.0
5
+ author: CCJK
6
+ category: git
7
+ triggers:
8
+ - /commit
9
+ - /gc
10
+ - /git-commit
11
+ use_when:
12
+ - "User wants to commit changes"
13
+ - "User mentions commit or committing"
14
+ - "User has staged changes ready"
15
+ - "Working with git repository"
16
+ auto_activate: true
17
+ priority: 7
18
+ difficulty: beginner
19
+ tags:
20
+ - git
21
+ - commit
22
+ - conventional-commits
23
+ ---
24
+
25
+ # Claude Command: Commit (Git-only)
26
+
27
+ This command works **without any package manager/build tools**, using only **Git** to:
28
+
29
+ - Read changes (staged/unstaged)
30
+ - Determine if changes should be **split into multiple commits**
31
+ - Generate **Conventional Commits** style messages with optional emoji for each commit
32
+ - Execute `git add` and `git commit` as needed (runs local Git hooks by default; use `--no-verify` to skip)
33
+
34
+ ---
35
+
36
+ ## Usage
37
+
38
+ ```bash
39
+ /git-commit
40
+ /git-commit --no-verify
41
+ /git-commit --emoji
42
+ /git-commit --all --signoff
43
+ /git-commit --amend
44
+ /git-commit --scope ui --type feat --emoji
45
+ ```
46
+
47
+ ### Options
48
+
49
+ - `--no-verify`: Skip local Git hooks (`pre-commit`/`commit-msg` etc.).
50
+ - `--all`: When staging area is empty, automatically `git add -A` to include all changes in the commit.
51
+ - `--amend`: **Amend** the last commit without creating a new one (preserves author and timestamp unless local Git config specifies otherwise).
52
+ - `--signoff`: Add `Signed-off-by` line (use when following DCO process).
53
+ - `--emoji`: Include emoji prefix in commit message (omit for plain text).
54
+ - `--scope <scope>`: Specify commit scope (e.g., `ui`, `docs`, `api`), written to message header.
55
+ - `--type <type>`: Force commit type (e.g., `feat`, `fix`, `docs`), overrides automatic detection.
56
+
57
+ > Note: If the framework doesn't support interactive confirmation, enable `confirm: true` in front-matter to avoid mistakes.
58
+
59
+ ---
60
+
61
+ ## What This Command Does
62
+
63
+ 1. **Repository/Branch Validation**
64
+ - Check if in a Git repository using `git rev-parse --is-inside-work-tree`.
65
+ - Read current branch/HEAD status; if in rebase/merge conflict state, prompt to resolve conflicts first.
66
+
67
+ 2. **Change Detection**
68
+ - Get staged and unstaged changes using `git status --porcelain` and `git diff`.
69
+ - If staged files = 0:
70
+ - If `--all` is passed → Execute `git add -A`.
71
+ - Otherwise prompt choice: continue analyzing unstaged changes for **suggestions**, or cancel to manually group staging.
72
+
73
+ 3. **Split Suggestions (Split Heuristics)**
74
+ - Cluster by **concerns**, **file modes**, **change types** (e.g., source code vs docs/tests; different directories/packages; additions vs deletions).
75
+ - If **multiple independent changesets** or large diff detected (e.g., > 300 lines / across multiple top-level directories), suggest splitting commits with pathspecs for each group (for subsequent `git add <paths>`).
76
+
77
+ 4. **Commit Message Generation (Conventional with Optional Emoji)**
78
+ - Auto-infer `type` (`feat`/`fix`/`docs`/`refactor`/`test`/`chore`/`perf`/`style`/`ci`/`revert`...) and optional `scope`.
79
+ - Generate message header: `[<emoji>] <type>(<scope>)?: <subject>` (first line ≤ 72 chars, imperative mood, emoji included only with `--emoji` flag).
80
+ - Generate message body:
81
+ - Must have a blank line after the subject.
82
+ - Use list format, each item starts with `-`.
83
+ - Each item **must use imperative verb-first sentences** (e.g., "add…", "fix…", "update…").
84
+ - **Colon-separated formats are prohibited** (e.g., ~~"Feature: description"~~, ~~"Impl: content"~~).
85
+ - Describe the motivation, implementation details, or impact scope (3 items or fewer recommended).
86
+ - Generate message footer (if any):
87
+ - Must have a blank line after the Body.
88
+ - **BREAKING CHANGE**: If there are breaking changes, must include `BREAKING CHANGE: <description>`, or add exclamation mark after type (e.g., `feat!:`).
89
+ - Other footers use git trailer format (e.g., `Closes #123`, `Refs: #456`, `Reviewed-by: Name`).
90
+ - Select message language to match the predominant language in Git history. Inspect recent commit subjects (e.g., `git log -n 50 --pretty=%s`) to decide Chinese vs English; if unclear, fall back to the repository's primary locale or English.
91
+ - Write draft to `.git/COMMIT_EDITMSG` for use with `git commit`.
92
+
93
+ 5. **Execute Commit**
94
+ - Single commit scenario: `git commit [-S] [--no-verify] [-s] -F .git/COMMIT_EDITMSG`
95
+ - Multiple commit scenario (if split accepted): Provide clear instructions for `git add <paths> && git commit ...` per group; execute sequentially if allowed.
96
+
97
+ 6. **Safe Rollback**
98
+ - If mistakenly staged, use `git restore --staged <paths>` to unstage (command provides instructions, doesn't modify file contents).
99
+
100
+ ---
101
+
102
+ ## Best Practices for Commits
103
+
104
+ - **Atomic commits**: One commit does one thing, easier to trace and review.
105
+ - **Group before committing**: Split by directory/module/feature.
106
+ - **Clear subject**: First line ≤ 72 chars, imperative mood.
107
+ - **Body with context**: Explain motivation, solution, and impact scope (colon-separated formats prohibited).
108
+ - **Follow Conventional Commits**: `<type>(<scope>): <subject>`.
109
+
110
+ ---
111
+
112
+ ## Type to Emoji Mapping (When --emoji is Used)
113
+
114
+ - ✨ `feat`: New feature
115
+ - 🐛 `fix`: Bug fix (includes 🔥 remove code/files, 🚑️ hotfix, 👽️ adapt to external API changes, 🔒️ security fix, 🚨 fix warnings, 💚 fix CI)
116
+ - 📝 `docs`: Documentation and comments
117
+ - 🎨 `style`: Code style/formatting (no semantic changes)
118
+ - ♻️ `refactor`: Refactoring (no new features, no bug fixes)
119
+ - ⚡️ `perf`: Performance improvements
120
+ - ✅ `test`: Add/fix tests, snapshots
121
+ - 🔧 `chore`: Build/tools/misc tasks (merge branches, update configs, release tags, pin dependencies, .gitignore, etc.)
122
+ - 👷 `ci`: CI/CD configuration and scripts
123
+ - ⏪️ `revert`: Revert commits
124
+ - 💥 `feat`: Breaking changes (explained in `BREAKING CHANGE:` section)
125
+
126
+ > If `--type`/`--scope` is passed, it will **override** auto-detection.
127
+ > Emoji is only included when `--emoji` flag is specified.
128
+
129
+ ---
130
+
131
+ ## Guidelines for Splitting Commits
132
+
133
+ 1. **Different concerns**: Unrelated feature/module changes should be split.
134
+ 2. **Different types**: Don't mix `feat`, `fix`, `refactor` in the same commit.
135
+ 3. **File modes**: Source code vs docs/tests/configs should be grouped separately.
136
+ 4. **Size threshold**: Large diffs (e.g., >300 lines or across multiple top-level directories) should be split.
137
+ 5. **Revertability**: Ensure each commit can be independently reverted.
138
+
139
+ ---
140
+
141
+ ## Examples
142
+
143
+ **Good (with --emoji)**
144
+
145
+ ```text
146
+ - ✨ feat(ui): add user authentication flow
147
+ - 🐛 fix(api): handle token refresh race condition
148
+ - 📝 docs: update API usage examples
149
+ - ♻️ refactor(core): extract retry logic into helper
150
+ - ✅ test: add unit tests for rate limiter
151
+ - 🔧 chore: update git hooks and repository settings
152
+ - ⏪️ revert: revert "feat(core): introduce streaming API"
153
+ ```
154
+
155
+ **Good (without --emoji)**
156
+
157
+ ```text
158
+ - feat(ui): add user authentication flow
159
+ - fix(api): handle token refresh race condition
160
+ - docs: update API usage examples
161
+ - refactor(core): extract retry logic into helper
162
+ - test: add unit tests for rate limiter
163
+ - chore: update git hooks and repository settings
164
+ - revert: revert "feat(core): introduce streaming API"
165
+ ```
166
+
167
+ **Good (with Body)**
168
+
169
+ ```text
170
+ feat(auth): add OAuth2 login flow
171
+
172
+ - implement Google and GitHub third-party login
173
+ - add user authorization callback handling
174
+ - improve login state persistence logic
175
+
176
+ Closes #42
177
+ ```
178
+
179
+ ```text
180
+ fix(ui): fix button spacing on mobile devices
181
+
182
+ - adjust button padding to fit small screens
183
+ - fix styling issues on iOS Safari
184
+ - optimize touch target size
185
+ ```
186
+
187
+ **Good (with BREAKING CHANGE)**
188
+
189
+ ```text
190
+ feat(api)!: redesign authentication API
191
+
192
+ - migrate from session-based to JWT authentication
193
+ - update all endpoint signatures
194
+ - remove deprecated login methods
195
+
196
+ BREAKING CHANGE: authentication API has been completely redesigned, all clients must update their integration
197
+ ```
198
+
199
+ **Split Example**
200
+
201
+ ```text
202
+ - `feat(types): add new type defs for payment method`
203
+ - `docs: update API docs for new types`
204
+ - `test: add unit tests for payment types`
205
+ - `fix: address linter warnings in new files` ← (if your repo has hook errors)
206
+ ```
207
+
208
+ ---
209
+
210
+ ## Important Notes
211
+
212
+ - **Git only**: No package manager/build commands (`pnpm`/`npm`/`yarn` etc.).
213
+ - **Respects hooks**: Executes local Git hooks by default; use `--no-verify` to skip.
214
+ - **No source code changes**: Command only reads/writes `.git/COMMIT_EDITMSG` and staging area; doesn't directly edit working directory files.
215
+ - **Safety prompts**: In rebase/merge conflicts, detached HEAD states, prompts to handle/confirm before continuing.
216
+ - **Auditable and controllable**: If `confirm: true` is enabled, each actual `git add`/`git commit` step requires confirmation.
@@ -0,0 +1,223 @@
1
+ ---
2
+ name: interview
3
+ description: Interview-Driven Development - gather requirements through structured conversation
4
+ version: 1.0.0
5
+ author: CCJK
6
+ category: planning
7
+ triggers:
8
+ - /interview
9
+ - /idd
10
+ use_when:
11
+ - "User wants to start a new feature with requirements gathering"
12
+ - "User mentions interview or requirements"
13
+ - "User asks about understanding project needs"
14
+ - "Starting a new project or feature"
15
+ auto_activate: false
16
+ priority: 5
17
+ difficulty: beginner
18
+ tags:
19
+ - requirements
20
+ - planning
21
+ - discovery
22
+ ---
23
+
24
+ # Interview-Driven Development
25
+
26
+ > **Core Principle**: "Interview first. Spec second. Code last."
27
+ >
28
+ > Based on the viral workflow by Thariq (@trq212) from Anthropic's Claude Code team (1.2M views)
29
+
30
+ ## Usage
31
+
32
+ ```bash
33
+ /ccjk:interview [SPEC_FILE.md] [--deep] [--quick] [--category <type>]
34
+ ```
35
+
36
+ ## The Problem This Solves
37
+
38
+ **The Gap in Traditional Prompting:**
39
+ ```
40
+ Prompt -> Claude Assumes -> Code That's "Close" -> Rework
41
+ "Add auth" -> "JWT? OAuth? Sessions?" -> Wrong implementation -> "Actually I wanted..."
42
+ ```
43
+
44
+ Hidden assumptions are buried and discovered during code review. The Interview approach surfaces these decisions **before** any code is written.
45
+
46
+ ## Your Role
47
+
48
+ You are an expert requirements analyst and technical interviewer. Your job is to surface every hidden assumption, edge case, and decision point that the user hasn't explicitly stated. Ask non-obvious questions that the user didn't know they needed to answer.
49
+
50
+ ## Interview Dimensions
51
+
52
+ Ask about literally anything across these dimensions:
53
+
54
+ ### Technical Implementation
55
+ - Architecture patterns and decisions
56
+ - Data models and relationships
57
+ - API design and integrations
58
+ - State management approach
59
+ - Error handling strategies
60
+
61
+ ### UI & UX
62
+ - User flows and interactions
63
+ - Accessibility requirements
64
+ - Responsive design needs
65
+ - Loading states and feedback
66
+ - Edge cases in the interface
67
+
68
+ ### Concerns
69
+ - Security requirements
70
+ - Performance constraints
71
+ - Scalability needs
72
+ - Data privacy (GDPR, HIPAA, etc.)
73
+ - Edge cases and error scenarios
74
+
75
+ ### Tradeoffs
76
+ - Build vs buy decisions
77
+ - Complexity vs simplicity
78
+ - Speed vs quality
79
+ - Flexibility vs simplicity
80
+ - Short-term vs long-term
81
+
82
+ ### Business Logic
83
+ - Validation rules
84
+ - Workflow states
85
+ - Business constraints
86
+ - Integration requirements
87
+ - Reporting needs
88
+
89
+ ## Interview Rules
90
+
91
+ 1. **Non-obvious questions only** - Don't ask what's clearly stated in the spec
92
+ 2. **Go very in-depth** - Surface decisions the user didn't know they needed to make
93
+ 3. **Continue until complete** - For big features, ask 40+ questions
94
+ 4. **Use progress indicators** - Show category progress (Industry -> Customer -> Features -> Validation -> Submit)
95
+ 5. **Provide context** - Each option should have a brief description
96
+ 6. **Allow custom input** - Always include "Type something..." as the last option
97
+ 7. **Write spec when done** - Output detailed specification to the spec file
98
+
99
+ ## Question Format
100
+
101
+ Use the AskUserQuestion tool with this structure:
102
+
103
+ ```json
104
+ {
105
+ "questions": [
106
+ {
107
+ "header": "Category",
108
+ "question": "Clear, specific question?",
109
+ "multiSelect": false,
110
+ "options": [
111
+ { "label": "Option 1", "description": "Brief explanation of what this means" },
112
+ { "label": "Option 2", "description": "Brief explanation of what this means" }
113
+ ]
114
+ }
115
+ ]
116
+ }
117
+ ```
118
+
119
+ ## Common Question Patterns
120
+
121
+ ### Project Foundation
122
+ - What is the primary purpose of this app? (SaaS/Web App, Marketing/Landing, E-commerce, Dashboard/Admin, API Service)
123
+ - What is your target platform? (Web, Mobile Native, Mobile PWA, Desktop, CLI)
124
+
125
+ ### Target Audience
126
+ - What's your target customer segment? (SMB, Enterprise, Individual/Prosumer, Developers/Technical)
127
+ - Geographic focus? (Global, US/EU, Asia, Specific country)
128
+
129
+ ### Technical Decisions
130
+ - Authentication strategy? (JWT tokens, OAuth 2.0, Session-based, Magic links, SSO/SAML)
131
+ - Primary database? (PostgreSQL, MySQL, MongoDB, SQLite, Supabase)
132
+ - State management? (Server state, Global store, URL state, Local state only)
133
+
134
+ ### Features & Scope
135
+ - Which features are must-have for MVP? (Multi-select)
136
+ - Third-party integrations needed? (Multi-select)
137
+
138
+ ### Security & Compliance
139
+ - Security requirements? (Standard, SOC2, HIPAA, GDPR, PCI DSS)
140
+ - Data retention policy?
141
+
142
+ ### Tradeoffs
143
+ - Speed vs Quality tradeoff? (Ship fast, Get it right, Balanced)
144
+ - Build vs Buy preference? (Build custom, Use services, Hybrid)
145
+
146
+ ## Progress Display
147
+
148
+ Show progress at each question:
149
+
150
+ ```
151
+ Category Progress: [X] Industry -> [ ] Customer -> [ ] Features -> [ ] Validation
152
+
153
+ Question 12 of ~40: What's your target customer segment?
154
+ ```
155
+
156
+ ## Interview Depth Levels
157
+
158
+ - **--quick**: 10 questions - Fast validation, surface-level decisions
159
+ - **default**: 25 questions - Standard coverage of all major areas
160
+ - **--deep**: 40+ questions - Comprehensive exploration for complex features
161
+
162
+ ## Output Format
163
+
164
+ After interview completion, write comprehensive spec to the specified file:
165
+
166
+ ```markdown
167
+ # Feature Specification: [Feature Name]
168
+
169
+ Generated: [timestamp]
170
+ Interview Questions: [count]
171
+
172
+ ## Overview
173
+ - Project Type: [answer]
174
+ - Target Audience: [answer]
175
+ - MVP Scope: [answer]
176
+
177
+ ## Technical Architecture
178
+ - Authentication: [answer]
179
+ - Database: [answer]
180
+ - State Management: [answer]
181
+ - Integrations: [list]
182
+
183
+ ## UI/UX Requirements
184
+ - Platforms: [list]
185
+ - Design System: [answer]
186
+ - Accessibility: [answer]
187
+
188
+ ## Security & Compliance
189
+ - Requirements: [list]
190
+ - Compliance: [list]
191
+
192
+ ## Decisions Made
193
+ 1. [Decision with rationale]
194
+ 2. [Decision with rationale]
195
+ ...
196
+
197
+ ## Edge Cases Identified
198
+ 1. [Edge case and how to handle]
199
+ 2. [Edge case and how to handle]
200
+ ...
201
+
202
+ ## Open Questions
203
+ 1. [Questions to revisit later]
204
+ ...
205
+ ```
206
+
207
+ ## Execution Flow
208
+
209
+ 1. **Read spec file** (if provided) - Understand existing context
210
+ 2. **Determine interview depth** - quick (10), standard (25), or deep (40+)
211
+ 3. **Start with foundation questions** - Project type, audience, platform
212
+ 4. **Progress through categories** - Technical, Features, Security, Tradeoffs
213
+ 5. **Ask follow-up questions** - Based on previous answers
214
+ 6. **Summarize decisions** - Recap key choices made
215
+ 7. **Write specification** - Generate comprehensive spec file
216
+
217
+ ## Begin Interview
218
+
219
+ **Spec File**: $ARGUMENTS (or create new spec file)
220
+
221
+ Start the interview session. Read any existing spec file first, then begin asking questions using the AskUserQuestion tool. Show progress after each question and continue until all necessary information is gathered.
222
+
223
+ Remember: Your goal is to ensure the user has thought through every important decision BEFORE any code is written. This prevents wasted effort and "Actually, I wanted..." moments later.