anchi-toolkit 1.0.0 → 1.2.0

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/.ai-audit/README.md +53 -0
  2. package/.ai-memory/README.md +137 -0
  3. package/.ai-memory/context.json +26 -0
  4. package/.ai-memory/decisions.json +3 -0
  5. package/.antigravity/agent-skill-index.yaml +24 -0
  6. package/.antigravity/anchi-toolkit.config.yaml +12 -0
  7. package/.antigravity/docs/README.md +9 -0
  8. package/.antigravity/skills/_template.md +30 -0
  9. package/.antigravity/team.yaml +154 -0
  10. package/.antigravity/workflows/config.md +144 -0
  11. package/.antigravity/workflows/demo.md +50 -0
  12. package/.antigravity/workflows/help.md +11 -4
  13. package/.antigravity/workflows/skill-learn.md +48 -0
  14. package/.antigravity/workflows/start.md +38 -117
  15. package/.antigravity/workflows/status.md +8 -8
  16. package/.antigravity/workflows/undo.md +7 -7
  17. package/.cursor/agent-skill-index.yaml +39 -0
  18. package/.cursor/agents/graph-architect.md +30 -0
  19. package/.cursor/agents/trend-watcher.md +24 -0
  20. package/.cursor/commands/config.md +144 -0
  21. package/.cursor/commands/demo.md +50 -0
  22. package/.cursor/commands/do.md +127 -90
  23. package/.cursor/commands/help.md +23 -16
  24. package/.cursor/commands/skill-learn.md +48 -0
  25. package/.cursor/commands/start.md +38 -117
  26. package/.cursor/commands/status.md +19 -19
  27. package/.cursor/commands/undo.md +19 -19
  28. package/.cursor/orchestration.yaml +18 -0
  29. package/.cursor/skills/_template.md +30 -0
  30. package/ANTIGRAVITY.md +84 -0
  31. package/CURSOR.md +50 -157
  32. package/LICENSE +17 -14
  33. package/README.md +64 -89
  34. package/docs/ALL_COMMANDS.md +31 -73
  35. package/docs/CI_CD.md +44 -0
  36. package/docs/COMPARISON.md +65 -0
  37. package/docs/ROADMAP.md +45 -161
  38. package/docs/WORKFLOW.md +56 -317
  39. package/package.json +9 -2
  40. package/presets/ci-cd/ai-review.yml +49 -0
  41. package/scripts/install-hooks.ps1 +21 -7
  42. package/scripts/install-hooks.sh +18 -3
  43. package/src/cli.js +111 -59
  44. package/src/commands/clean.js +87 -0
  45. package/src/commands/doctor.js +88 -21
  46. package/src/commands/init.js +22 -2
  47. package/src/commands/uninstall.js +17 -2
  48. package/src/lib/configManager.js +20 -5
  49. package/src/lib/memoryManager.js +7 -4
  50. package/docs/CODEBASE.md +0 -178
  51. package/docs/COMMAND_MAPPING.md +0 -217
  52. package/docs/FAQ.md +0 -174
  53. package/docs/ONBOARDING.md +0 -111
  54. package/docs/ORCHESTRATION_RUNTIME.md +0 -173
  55. package/docs/WALKTHROUGH.md +0 -192
  56. /package/.cursor/{anchi-kit.config.yaml → anchi-toolkit.config.yaml} +0 -0
@@ -0,0 +1,53 @@
1
+ # Audit Log Format
2
+
3
+ > This directory stores AI decision logs for review and compliance.
4
+
5
+ ## Structure
6
+
7
+ ```
8
+ .ai-audit/
9
+ ├── README.md # This file
10
+ ├── 2024-12-26.jsonl # Daily logs (JSON Lines format)
11
+ └── summary.json # Aggregated statistics
12
+ ```
13
+
14
+ ## Log Entry Format
15
+
16
+ ```json
17
+ {
18
+ "id": "uuid",
19
+ "timestamp": "2024-12-26T10:30:00Z",
20
+ "command": "/do 'Add payment'",
21
+ "user": "default",
22
+ "duration_ms": 5230,
23
+ "agents": ["fullstack-developer", "database-admin"],
24
+ "skills": ["payment-integration/", "databases/"],
25
+ "files_touched": [
26
+ {"path": "src/lib/payment.ts", "action": "create"},
27
+ {"path": "prisma/schema.prisma", "action": "modify"}
28
+ ],
29
+ "rules_checked": ["S1", "S2", "P3"],
30
+ "violations": [],
31
+ "decisions": [
32
+ "Used Stripe (detected in package.json)",
33
+ "Added webhook endpoint (best practice)"
34
+ ],
35
+ "model": "Sonnet 4.5",
36
+ "status": "success"
37
+ }
38
+ ```
39
+
40
+ ## Commands
41
+
42
+ ```bash
43
+ /audit # Show today's log
44
+ /audit --last 5 # Last 5 entries
45
+ /audit --date 2024-12-25
46
+ /audit --command "/do"
47
+ /audit --violations # Only show violations
48
+ ```
49
+
50
+ ## Retention
51
+
52
+ - Daily logs: 30 days
53
+ - Summary: Permanent
@@ -0,0 +1,137 @@
1
+ # AI Memory System
2
+
3
+ > **Context as DATA, not chat** - AI memory persisted to files.
4
+
5
+ ---
6
+
7
+ ## 📁 Structure
8
+
9
+ ```
10
+ .ai-memory/
11
+ ├── README.md # This file
12
+ ├── context.json # Current project context
13
+ ├── decisions.json # Architecture decisions
14
+ ├── entities.json # Knowledge graph entities
15
+ └── sessions/ # Session snapshots
16
+ └── 2024-12-26.json
17
+ ```
18
+
19
+ ---
20
+
21
+ ## 📄 context.json
22
+
23
+ Main context file loaded on every session:
24
+
25
+ ```json
26
+ {
27
+ "project": {
28
+ "name": "my-app",
29
+ "type": "web-app",
30
+ "framework": "nextjs",
31
+ "database": "postgresql",
32
+ "preset": "professional"
33
+ },
34
+ "tech_stack": {
35
+ "frontend": ["react", "tailwindcss"],
36
+ "backend": ["nextjs-api", "prisma"],
37
+ "testing": ["vitest", "playwright"]
38
+ },
39
+ "conventions": {
40
+ "component_pattern": "functional",
41
+ "state_management": "react-query",
42
+ "auth": "session-based"
43
+ },
44
+ "current_work": {
45
+ "feature": "user-authentication",
46
+ "status": "in-progress",
47
+ "files": ["src/lib/auth.ts", "src/app/login/page.tsx"]
48
+ },
49
+ "last_updated": "2024-12-26T10:30:00Z"
50
+ }
51
+ ```
52
+
53
+ ---
54
+
55
+ ## 📄 decisions.json
56
+
57
+ Architecture decisions log:
58
+
59
+ ```json
60
+ {
61
+ "decisions": [
62
+ {
63
+ "id": "D001",
64
+ "date": "2024-12-25",
65
+ "title": "Use session-based auth instead of JWT",
66
+ "context": "For this project, session is simpler and more secure",
67
+ "decision": "Implement session-based authentication",
68
+ "consequences": ["Need session storage", "Simpler token handling"]
69
+ },
70
+ {
71
+ "id": "D002",
72
+ "date": "2024-12-26",
73
+ "title": "Use Stripe for payments",
74
+ "context": "Already have Stripe account, well-documented",
75
+ "decision": "Integrate Stripe Checkout",
76
+ "consequences": ["Add stripe package", "Create webhook endpoint"]
77
+ }
78
+ ]
79
+ }
80
+ ```
81
+
82
+ ---
83
+
84
+ ## 🔄 Auto-Load Behavior
85
+
86
+ When `/start` or any command runs:
87
+
88
+ 1. Check `.ai-memory/context.json` exists
89
+ 2. Load project context
90
+ 3. Load recent decisions
91
+ 4. AI "remembers" everything
92
+
93
+ ```
94
+ User: /start
95
+
96
+ AI: 📚 Loading context from .ai-memory/
97
+
98
+ Project: my-app (Next.js + PostgreSQL)
99
+ Preset: Professional
100
+ Current work: user-authentication (in-progress)
101
+ Recent decisions: 2
102
+
103
+ I remember you're working on authentication.
104
+ What would you like to do?
105
+ ```
106
+
107
+ ---
108
+
109
+ ## 💾 Commands
110
+
111
+ | Command | Action |
112
+ |---------|--------|
113
+ | `/memory save` | Save current context |
114
+ | `/memory load` | Load context |
115
+ | `/memory add "decision"` | Add decision |
116
+ | `/memory clear` | Clear memory |
117
+ | `/memory export` | Export to JSON |
118
+
119
+ ---
120
+
121
+ ## 🔗 Integration
122
+
123
+ - **Session start:** Auto-load context
124
+ - **Session end:** Prompt to save
125
+ - **Major changes:** Auto-save snapshot
126
+ - **Decisions:** Auto-log to decisions.json
127
+
128
+ ---
129
+
130
+ ## 📊 Benefits
131
+
132
+ | Old (chat-based) | New (file-based) |
133
+ |------------------|------------------|
134
+ | Context lost on reset | Context persists |
135
+ | Team can't share | Team shares context |
136
+ | Can't audit | Full audit trail |
137
+ | Random decisions | Logged decisions |
@@ -0,0 +1,26 @@
1
+ {
2
+ "project": {
3
+ "name": "",
4
+ "type": "",
5
+ "framework": "",
6
+ "database": "",
7
+ "preset": ""
8
+ },
9
+ "tech_stack": {
10
+ "frontend": [],
11
+ "backend": [],
12
+ "testing": []
13
+ },
14
+ "conventions": {
15
+ "component_pattern": "",
16
+ "state_management": "",
17
+ "auth": ""
18
+ },
19
+ "current_work": {
20
+ "feature": "",
21
+ "status": "",
22
+ "files": []
23
+ },
24
+ "notes": [],
25
+ "last_updated": ""
26
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "decisions": []
3
+ }
@@ -38,6 +38,7 @@ agents:
38
38
  - error_analysis
39
39
  - performance_diagnosis
40
40
  - log_analysis
41
+ - interactive_probing # Inject logs -> Test -> Analyze
41
42
  boundaries:
42
43
  - NOT: code_writing → fullstack-developer
43
44
  primary_skills:
@@ -141,6 +142,7 @@ agents:
141
142
  - devops
142
143
  typical_commands:
143
144
  - /do (deployment-related)
145
+ - /demo
144
146
 
145
147
  git-manager:
146
148
  capabilities:
@@ -183,6 +185,7 @@ agents:
183
185
  - web-search
184
186
  typical_commands:
185
187
  - /scout --external
188
+ - /skill-learn
186
189
 
187
190
  scout:
188
191
  capabilities:
@@ -197,6 +200,7 @@ agents:
197
200
  - task_breakdown
198
201
  - estimation
199
202
  - dependency_analysis
203
+ - parallel_workstream_planning
200
204
  typical_commands:
201
205
  - /do --plan-only
202
206
 
@@ -207,6 +211,21 @@ agents:
207
211
  - team_coordination
208
212
  typical_commands:
209
213
  - /status
214
+
215
+ # ─────────────────────── Optimization ───────────────────────
216
+ failure-analyst:
217
+ capabilities:
218
+ - root_cause_analysis
219
+ - pattern_recognition
220
+ typical_commands:
221
+ - /audit
222
+
223
+ rules-architect:
224
+ capabilities:
225
+ - rule_definition
226
+ - failure_mode_prevention
227
+ escalation_from:
228
+ - failure-analyst
210
229
 
211
230
  # ═══════════════════════════════════════════════════════════════
212
231
  # SKILL INDEX
@@ -385,3 +404,8 @@ command_mapping:
385
404
  default: docs-manager
386
405
  skills:
387
406
  - document-skills
407
+
408
+ /config:
409
+ default: project-manager
410
+ skills:
411
+ - document-skills
@@ -0,0 +1,12 @@
1
+ project:
2
+ name: "Anchi Default Project"
3
+ version: "0.1.0"
4
+ type: "auto"
5
+
6
+ features:
7
+ memory: true
8
+ audit: true
9
+ orchestration: true
10
+
11
+ security:
12
+ strict_approval: true # Require confirmation for high-risk actions
@@ -0,0 +1,9 @@
1
+ # Project Documentation
2
+
3
+ Place your project documentation here.
4
+
5
+ ## Recommended Files:
6
+
7
+ - `PROJECT.md`: Description of your project.
8
+ - `STACK.md`: Tech stack details.
9
+ - `ARCHITECTURE.md`: System design.
@@ -0,0 +1,30 @@
1
+ # Skill: [Skill Name]
2
+
3
+ **Description:** [Short description of the technology/framework]
4
+
5
+ ## 🎯 Activation Criteria
6
+
7
+ - **Files:** `[file_patterns]`
8
+ - **Dependencies:** `[package_names]`
9
+ - **Keywords:** `[keywords]`
10
+
11
+ ## ✅ Best Practices (Rules)
12
+
13
+ 1. **[Rule 1]:** [Description]
14
+ 2. **[Rule 2]:** [Description]
15
+ 3. **[Naming Convention]:** [Description]
16
+
17
+ ## ❌ Anti-Patterns (Do Not Do)
18
+
19
+ 1. **[Anti-Pattern 1]:** [Description]
20
+ 2. **[Anti-Pattern 2]:** [Description]
21
+
22
+ ## 📦 Dependencies & Setup
23
+
24
+ - Recommended Packages:
25
+ - [pkg1]
26
+ - [pkg2]
27
+
28
+ ## 🧠 Memory Hooks
29
+
30
+ - If user asks for [X], suggest [Y].
@@ -0,0 +1,154 @@
1
+ # Team Configuration
2
+ # Role-aware AI behavior and permissions
3
+ # ═══════════════════════════════════════════════════════════════
4
+
5
+ # Team info
6
+ team:
7
+ name: "My Team"
8
+ project: "Project Name"
9
+ mode: "individual" # individual | team
10
+
11
+ # ═══════════════════════════════════════════════════════════════
12
+ # ROLE DEFINITIONS
13
+ # ═══════════════════════════════════════════════════════════════
14
+
15
+ roles:
16
+ # Lead/Senior - Full control
17
+ lead:
18
+ level: 3
19
+ permissions:
20
+ auto_approve: true
21
+ skip_reviews: allowed
22
+ override_rules: allowed
23
+ deploy: true
24
+ ai_behavior:
25
+ explanation_level: minimal
26
+ auto_mode: true
27
+ speed_priority: true
28
+ require_confirmation: false
29
+
30
+ # Senior Developer
31
+ senior:
32
+ level: 2
33
+ permissions:
34
+ auto_approve: true
35
+ skip_reviews: limited
36
+ override_rules: false
37
+ deploy: true
38
+ ai_behavior:
39
+ explanation_level: standard
40
+ auto_mode: true
41
+ speed_priority: false
42
+ require_confirmation: false
43
+
44
+ # Developer
45
+ developer:
46
+ level: 1
47
+ permissions:
48
+ auto_approve: false
49
+ skip_reviews: false
50
+ override_rules: false
51
+ deploy: false
52
+ ai_behavior:
53
+ explanation_level: standard
54
+ auto_mode: false
55
+ speed_priority: false
56
+ require_confirmation: true
57
+
58
+ # Junior Developer
59
+ junior:
60
+ level: 0
61
+ permissions:
62
+ auto_approve: false
63
+ skip_reviews: false
64
+ override_rules: false
65
+ deploy: false
66
+ ai_behavior:
67
+ explanation_level: detailed
68
+ auto_mode: false
69
+ speed_priority: false
70
+ require_confirmation: true
71
+ suggest_alternatives: true
72
+ explain_decisions: true
73
+
74
+ # Reviewer (read-heavy)
75
+ reviewer:
76
+ level: 1
77
+ permissions:
78
+ auto_approve: false
79
+ skip_reviews: false
80
+ override_rules: false
81
+ deploy: false
82
+ ai_behavior:
83
+ explanation_level: detailed
84
+ auto_mode: false
85
+ review_focus: true
86
+
87
+ # ═══════════════════════════════════════════════════════════════
88
+ # CURRENT USER
89
+ # ═══════════════════════════════════════════════════════════════
90
+
91
+ # Set your role (affects AI behavior)
92
+ current_user:
93
+ name: "Developer"
94
+ role: lead # lead | senior | developer | junior | reviewer
95
+
96
+ # ═══════════════════════════════════════════════════════════════
97
+ # TEAM MEMBERS (for team mode)
98
+ # ═══════════════════════════════════════════════════════════════
99
+
100
+ members:
101
+ # - name: "Alice"
102
+ # role: lead
103
+ # github: "@alice"
104
+ # email: "alice@company.com"
105
+ # - name: "Bob"
106
+ # role: developer
107
+ # github: "@bob"
108
+
109
+ # ═══════════════════════════════════════════════════════════════
110
+ # WORKFLOW RULES
111
+ # ═══════════════════════════════════════════════════════════════
112
+
113
+ workflows:
114
+ feature:
115
+ require_plan: true
116
+ require_review: true
117
+ min_approver_level: 2 # senior or above
118
+
119
+ hotfix:
120
+ require_plan: false
121
+ require_review: false
122
+ min_approver_level: 0
123
+
124
+ refactor:
125
+ require_plan: true
126
+ require_review: true
127
+ min_approver_level: 2
128
+
129
+ release:
130
+ require_plan: true
131
+ require_review: true
132
+ min_approver_level: 3 # lead only
133
+
134
+ # ═══════════════════════════════════════════════════════════════
135
+ # NOTIFICATIONS
136
+ # ═══════════════════════════════════════════════════════════════
137
+
138
+ notifications:
139
+ enabled: false
140
+ slack_webhook: null
141
+ events:
142
+ - plan_approved
143
+ - review_completed
144
+ - release_ready
145
+ - violation_detected
146
+
147
+ # ═══════════════════════════════════════════════════════════════
148
+ # STANDUP (for /daily command)
149
+ # ═══════════════════════════════════════════════════════════════
150
+
151
+ standup:
152
+ enabled: false
153
+ time: "09:00"
154
+ channel: "#standup"
@@ -0,0 +1,144 @@
1
+ ---
2
+ description: ⚡⚡ View and edit anchi-toolkit configuration
3
+ argument-hint: [optional: --edit | --reset | key=value]
4
+ ---
5
+
6
+ # /config - Configuration Management
7
+
8
+ **What:** View and edit anchi-toolkit.config.yaml settings.
9
+
10
+ ## Usage
11
+ ```
12
+ /config # Show current config
13
+ /config --edit # Open config in editor
14
+ /config preset=professional # Change specific setting
15
+ /config --reset # Reset to defaults
16
+ ```
17
+
18
+ ---
19
+
20
+ ## 💰 Model Selection
21
+
22
+ | Action | Recommended Model | Cost |
23
+ |--------|-------------------|------|
24
+ | View config | GPT-5.1 Codex Mini | 💚 Low |
25
+ | Edit config | GPT-5.1 Codex Mini | 💚 Low |
26
+
27
+ > Config operations are simple - always use cheapest models.
28
+
29
+ ---
30
+
31
+ ## Output
32
+
33
+ ```
34
+ ⚙️ /config
35
+
36
+ ═══════════ ANCHI-TOOLKIT CONFIG ═══════════
37
+
38
+ 📂 File: .cursor/anchi-toolkit.config.yaml
39
+
40
+ ┌─────────────────────────────────────────────────────────────┐
41
+ │ CURRENT SETTINGS │
42
+ ├─────────────────────────────────────────────────────────────┤
43
+ │ │
44
+ │ 📋 Preset: professional │
45
+ │ 🤖 Agents: all (19 agents) │
46
+ │ 🛠️ Skills: all (35 skills) │
47
+ │ 📦 Commands: all (18 commands) │
48
+ │ │
49
+ │ ⚙️ Settings: │
50
+ │ ├── auto_commit: false │
51
+ │ ├── auto_test: true │
52
+ │ ├── language: vi │
53
+ │ └── model_preference: cost-optimized │
54
+ │ │
55
+ └─────────────────────────────────────────────────────────────┘
56
+
57
+ 💡 Quick Commands:
58
+ /config preset=rapid # Switch preset
59
+ /config auto_commit=true # Enable auto-commit
60
+ /config --edit # Full editor mode
61
+ ```
62
+
63
+ ---
64
+
65
+ ## Editable Settings
66
+
67
+ | Key | Values | Default |
68
+ |-----|--------|---------|
69
+ | `preset` | rapid, professional, enterprise | professional |
70
+ | `auto_commit` | true, false | false |
71
+ | `auto_test` | true, false | true |
72
+ | `language` | en, vi | vi |
73
+ | `model_preference` | cost-optimized, balanced, quality | cost-optimized |
74
+
75
+ ---
76
+
77
+ ## Flags
78
+
79
+ | Flag | Action |
80
+ |------|--------|
81
+ | `--edit` | Open config file in editor |
82
+ | `--reset` | Reset to default settings |
83
+ | `--show-all` | Show all available options |
84
+ | `--validate` | Validate config syntax |
85
+
86
+ ---
87
+
88
+ ## Config File Location
89
+
90
+ ```
91
+ .cursor/anchi-toolkit.config.yaml # Cursor AI
92
+ .antigravity/anchi-toolkit.config.yaml # Antigravity
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Example Config
98
+
99
+ ```yaml
100
+ # anchi-toolkit.config.yaml
101
+ preset: professional
102
+
103
+ agents: all # or list: [fullstack-developer, debugger]
104
+ skills: all # or list: [databases, frontend-development]
105
+ commands: all
106
+
107
+ settings:
108
+ auto_commit: false
109
+ auto_test: true
110
+ language: vi
111
+ model_preference: cost-optimized
112
+
113
+ overrides:
114
+ test_coverage_threshold: 80
115
+ max_file_changes: 20
116
+ ```
117
+
118
+ ---
119
+
120
+ ## Agent & Skill Activation
121
+
122
+ **Primary Agents:**
123
+ - `.cursor/agents/project-manager.md` - Config management
124
+
125
+ **Skills:**
126
+ - `document-skills/` - Config parsing
127
+
128
+ > Config uses minimal AI - mostly file operations.
129
+
130
+ ---
131
+
132
+ ## 🔄 Dynamic Orchestration
133
+
134
+ > **AI MUST read orchestration config before execution**
135
+
136
+ ```
137
+ 1. READ .cursor/agent-skill-index.yaml
138
+ 2. CHECK command_mapping for this command
139
+ 3. APPLY skill activation rules
140
+ 4. CHECK .cursor/failure-modes.yaml
141
+ 5. LOG decision to .ai-audit/
142
+ ```
143
+
144
+ 📖 [docs/ORCHESTRATION_RUNTIME.md](../docs/ORCHESTRATION_RUNTIME.md)
@@ -0,0 +1,50 @@
1
+ ---
2
+ description: 📺 One-Click Demo / Preview
3
+ argument-hint: [optional: port]
4
+ ---
5
+
6
+ # /demo - Instant Preview
7
+
8
+ **What:** Auto-detects and runs the project dev server.
9
+
10
+ ## Logic
11
+
12
+ ```
13
+ ┌─────────────────────────────────────────────────────────────┐
14
+ │ 📺 /demo - AUTO LAUNCHER │
15
+ ├─────────────────────────────────────────────────────────────┤
16
+ │ │
17
+ │ [1] SCAN: package.json scripts │
18
+ │ ├── Look for: "dev", "start", "serve", "preview" │
19
+ │ └── Priority: dev > start > serve │
20
+ │ │
21
+ │ [2] CHECK PORT: │
22
+ │ ├── Default: 3000, 8080, 5173 │
23
+ │ └── Check if port is in use (kill if needed?) │
24
+ │ │
25
+ │ [3] EXECUTE: │
26
+ │ Run detected command (e.g., `npm run dev`) │
27
+ │ │
28
+ │ [4] VERIFY: │
29
+ │ Wait for "Ready" or "Listening" in stdout │
30
+ │ │
31
+ │ [5] OUTPUT: │
32
+ │ "🚀 Project is LIVE! │
33
+ │ 👉 http://localhost:3000 │
34
+ │ (Ctrl+C to stop)" │
35
+ │ │
36
+ └─────────────────────────────────────────────────────────────┘
37
+ ```
38
+
39
+ ## Agent Capabilities
40
+
41
+ - **Agent:** `devops-engineer` or `fullstack-developer`
42
+ - **Skill:** `terminal-management`
43
+
44
+ ## Usage
45
+
46
+ ```
47
+ /demo # Auto-detect and run
48
+ /demo 8080 # Run on specific port (if supported)
49
+ /demo --prod # Run production build
50
+ ```