mobile-ai-agents 1.0.23 → 1.0.25

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.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **The complete AI dev team for mobile engineers.**
4
4
 
5
- 19 personality-driven agents · 52 composable skills · 13 end-to-end workflows
5
+ 19 personality-driven agents · 52 composable skills · 14 end-to-end workflows
6
6
  Android · iOS · Flutter · React Native · Kotlin Multiplatform · Unity · Unreal
7
7
 
8
8
  [![npm](https://img.shields.io/npm/v/mobile-ai-agents?color=CB3837&label=npm)](https://www.npmjs.com/package/mobile-ai-agents)
@@ -30,7 +30,15 @@ Mobile AI Agents is built around **Loop Engineering** and a **mobile-karpathy**
30
30
 
31
31
  New to AI coding tools? Start with the step-by-step [Installation Guide](docs/installation.md).
32
32
 
33
- Fast path:
33
+ Starting from a fresh app idea? Generate the starter docs first:
34
+
35
+ ```bash
36
+ npx mobile-ai-agents start
37
+ ```
38
+
39
+ This asks a few beginner-friendly questions and creates `PRD.md`, `DESIGN.md`, `TASKS.md`, `ROADMAP.md`, and `MOBILE_MEMORY.md` in your project.
40
+
41
+ Fast install path:
34
42
 
35
43
  ```bash
36
44
  npx mobile-ai-agents install
@@ -72,11 +80,12 @@ Mobile AI Agents turns AI coding from one-off prompts into a repeatable mobile e
72
80
 
73
81
  | Step | What Happens | Command |
74
82
  |---|---|---|
75
- | 1. Install | Add the agents, skills, and workflows to your AI coding tool. | `npx mobile-ai-agents install` |
76
- | 2. Open your app | Use it inside an Android, iOS, Flutter, React Native, KMP, Unity, or Unreal project. | Claude Code · Cursor · Windsurf · Copilot · Codex |
77
- | 3. Start the loop | Tell Mobile Harness the app or feature goal once. It asks clarification questions before building. | `/mobile-harness` |
78
- | 4. Build with gates | The loop plans, implements, reviews architecture, checks security, audits performance, verifies UI, and runs QA. | `@MOBILE-HARNESS` |
79
- | 5. Continue later | Project context, decisions, reports, and next tasks are saved so work can continue across sessions. | Mobile Memory |
83
+ | 1. Start | Turn a raw idea into starter PRD, design, task, roadmap, and memory docs. | `npx mobile-ai-agents start` |
84
+ | 2. Install | Add the agents, skills, and workflows to your AI coding tool. | `npx mobile-ai-agents install` |
85
+ | 3. Open your app | Use it inside an Android, iOS, Flutter, React Native, KMP, Unity, or Unreal project. | Claude Code · Cursor · Windsurf · Copilot · Codex |
86
+ | 4. Run the loop | Tell Mobile Harness to continue from the generated docs. It asks clarification questions before building. | `/mobile-harness` |
87
+ | 5. Build with gates | The loop plans, implements, reviews architecture, checks security, audits performance, verifies UI, and runs QA. | `@MOBILE-HARNESS` |
88
+ | 6. Continue later | Project context, decisions, reports, and next tasks are saved so work can continue across sessions. | Mobile Memory |
80
89
 
81
90
  For focused work, use a specialist directly:
82
91
 
@@ -204,7 +213,7 @@ Not sure where to begin? Pick your situation:
204
213
  |---|---|---|
205
214
  | Platform knowledge | Generic | Android · iOS · Flutter · React Native · Unity · Unreal |
206
215
  | Agent personalities | None | 19 named specialists with opinions |
207
- | Real workflows | No | 13 end-to-end processes |
216
+ | Real workflows | No | 14 end-to-end processes |
208
217
  | Real examples | Toy pseudocode | Production code input/output pairs |
209
218
  | Installable | Copy-paste | `npx mobile-ai-agents install` |
210
219
  | Severity levels | None | CRITICAL · WARNING · INFO |
@@ -316,7 +325,7 @@ Not sure where to begin? Pick your situation:
316
325
 
317
326
  ## Workflows
318
327
 
319
- 13 end-to-end processes that chain agents and skills together.
328
+ 14 end-to-end processes that chain agents and skills together.
320
329
 
321
330
  | Workflow | What It Covers |
322
331
  |---|---|
@@ -330,6 +339,7 @@ Not sure where to begin? Pick your situation:
330
339
  | `game-level` | Design doc → FORGE/UNREAL → /shader-gen → /game-perf → /unity-tdd → playtest |
331
340
  | `new-project-setup` | /grill-mobile → architecture → CI → security baseline → test infrastructure |
332
341
  | `mobile-memory-workflow` | Mobile Memory: restore context → capture decisions → generate `MOBILE_MEMORY.md` → hand off across AI tools |
342
+ | `issue-to-agent` | GitHub issue → classify → route to agents/skills → implementation and verification plan |
333
343
  | `appforge-workflow` | App idea → PRD → design plan → tasks → implementation gates → QA → Play Store |
334
344
  | `mobile-mcp-qa` | Install/launch app → inspect UI → run flows → capture screenshots → QA report |
335
345
  | `mobile-harness` | Approved task → implementation → tests → UI match → Mobile MCP QA → report |
package/cli/index.js CHANGED
@@ -5,6 +5,7 @@ const https = require('https');
5
5
  const fs = require('fs');
6
6
  const path = require('path');
7
7
  const os = require('os');
8
+ const readline = require('readline');
8
9
 
9
10
  const REPO = 'salmanashraf/mobile-agency';
10
11
  const BRANCH = 'main';
@@ -134,6 +135,7 @@ const WORKFLOWS = {
134
135
  'app-launch': { file: 'workflows/app-launch.md' },
135
136
  'perf-sprint': { file: 'workflows/perf-sprint.md' },
136
137
  'mobile-memory-workflow': { file: 'workflows/mobile-memory-workflow.md' },
138
+ 'issue-to-agent': { file: 'workflows/issue-to-agent.md' },
137
139
  'appforge-workflow': { file: 'workflows/appforge-workflow.md' },
138
140
  'mobile-mcp-qa': { file: 'workflows/mobile-mcp-qa.md' },
139
141
  'mobile-harness': { file: 'workflows/mobile-harness.md' },
@@ -484,6 +486,352 @@ async function fetchRemote(remotePath) {
484
486
  return fetch(`${RAW}/${remotePath}`);
485
487
  }
486
488
 
489
+ function normalizePlatform(input) {
490
+ const value = String(input || '').trim().toLowerCase();
491
+ if (['android', 'kotlin', 'compose', 'jetpack compose'].includes(value)) return 'Android';
492
+ if (['ios', 'swift', 'swiftui'].includes(value)) return 'iOS';
493
+ if (['flutter', 'dart'].includes(value)) return 'Flutter';
494
+ if (['rn', 'react native', 'react-native'].includes(value)) return 'React Native';
495
+ return input ? String(input).trim() : detectPlatform();
496
+ }
497
+
498
+ function defaultStackForPlatform(platform) {
499
+ const value = String(platform || '').toLowerCase();
500
+ if (value.includes('android')) return 'Kotlin + Jetpack Compose + ViewModel + local persistence';
501
+ if (value.includes('ios')) return 'Swift + SwiftUI + SwiftData or local persistence';
502
+ if (value.includes('flutter')) return 'Dart + Flutter + state management + local persistence';
503
+ if (value.includes('react')) return 'React Native + TypeScript + local persistence';
504
+ return 'Platform-native mobile stack';
505
+ }
506
+
507
+ function safeDocValue(value, fallback) {
508
+ const text = String(value || '').trim();
509
+ return text || fallback;
510
+ }
511
+
512
+ function askQuestion(rl, label, fallback) {
513
+ const suffix = fallback ? ` (${fallback})` : '';
514
+ return new Promise((resolve) => {
515
+ rl.question(`${label}${suffix}: `, (answer) => {
516
+ resolve(safeDocValue(answer, fallback));
517
+ });
518
+ });
519
+ }
520
+
521
+ async function collectStartProfile(args) {
522
+ const opts = parseOptions(args);
523
+ const interactive = process.stdin.isTTY && process.stdout.isTTY && !opts.yes && !opts['non-interactive'];
524
+
525
+ const defaults = {
526
+ idea: safeDocValue(opts.idea || opts._.join(' '), 'Untitled mobile app'),
527
+ platform: normalizePlatform(opts.platform || detectPlatform()),
528
+ team: safeDocValue(opts.team, 'Solo developer'),
529
+ designs: safeDocValue(opts.designs, 'Create wireframes from scratch'),
530
+ monetization: safeDocValue(opts.monetization, 'Decide during PRD review'),
531
+ stack: safeDocValue(opts.stack, ''),
532
+ };
533
+ defaults.stack = safeDocValue(defaults.stack, defaultStackForPlatform(defaults.platform));
534
+
535
+ if (!interactive) {
536
+ return {
537
+ ...defaults,
538
+ force: Boolean(opts.force),
539
+ createdAt: nowIso(),
540
+ projectName: detectProjectName(),
541
+ };
542
+ }
543
+
544
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
545
+ console.log('');
546
+ console.log(bold('Mobile AI Agents Start'));
547
+ console.log(dim('Answer a few questions. Press Enter to accept the default.'));
548
+ console.log('');
549
+
550
+ try {
551
+ const idea = await askQuestion(rl, '1. What app idea do you have?', defaults.idea);
552
+ const platform = normalizePlatform(await askQuestion(rl, '2. Which platform are you building for?', defaults.platform));
553
+ const team = await askQuestion(rl, '3. Are you building solo or with a team?', defaults.team);
554
+ const monetization = await askQuestion(rl, '4. AI features, ads, subscription, or one-time purchase?', defaults.monetization);
555
+ const designs = await askQuestion(rl, '5. Do you already have designs?', defaults.designs);
556
+ const stack = await askQuestion(rl, '6. Which tech stack do you want to use?', defaultStackForPlatform(platform));
557
+ return {
558
+ idea,
559
+ platform,
560
+ team,
561
+ designs,
562
+ monetization,
563
+ stack,
564
+ force: Boolean(opts.force),
565
+ createdAt: nowIso(),
566
+ projectName: detectProjectName(),
567
+ };
568
+ } finally {
569
+ rl.close();
570
+ }
571
+ }
572
+
573
+ function renderStarterDocs(profile) {
574
+ const productName = profile.projectName || 'Mobile App';
575
+ const appIdea = profile.idea;
576
+ const platform = profile.platform;
577
+ const stack = profile.stack;
578
+
579
+ return {
580
+ 'PRD.md': `# PRD: ${productName}
581
+
582
+ ## Product Overview
583
+ ${appIdea}
584
+
585
+ ## Target Audience
586
+ - Primary users: To be refined during idea discovery.
587
+ - Buyer or decision maker: To be confirmed.
588
+ - First launch market: To be confirmed.
589
+
590
+ ## Problem Statement
591
+ Users need a simple, reliable mobile experience for the problem described in the app idea. The MVP should prove the core value before adding advanced features.
592
+
593
+ ## Unique Value Proposition
594
+ Deliver the smallest useful version on ${platform}, with clear flows, reliable local behavior, and enough instrumentation to learn from real usage.
595
+
596
+ ## Platform And Stack
597
+ - Platform: ${platform}
598
+ - Stack: ${stack}
599
+ - Team: ${profile.team}
600
+ - Designs: ${profile.designs}
601
+ - Monetization: ${profile.monetization}
602
+
603
+ ## MVP Scope
604
+ - One primary user flow that demonstrates the app value.
605
+ - Home or dashboard screen.
606
+ - Create or edit flow for the core object.
607
+ - Detail or confirmation screen where useful.
608
+ - Empty, loading, error, and success states.
609
+ - Local persistence if the app needs state after restart.
610
+
611
+ ## Non-Goals
612
+ - Complex social features.
613
+ - Payments before the MVP value is validated.
614
+ - Advanced AI automation before the base workflow is usable.
615
+ - Large admin dashboards unless required for launch.
616
+
617
+ ## Core Features
618
+ | Feature | Goal | MVP Acceptance |
619
+ |---|---|---|
620
+ | App shell | Provide navigation and baseline theme | App opens to the main flow without dead ends |
621
+ | Core item flow | Let users create or complete the main action | User can finish the primary job in under 60 seconds |
622
+ | Persistence | Keep important user state | App restart does not lose MVP data |
623
+ | Feedback states | Make failures understandable | Empty, loading, and error states are visible and actionable |
624
+ | Basic analytics plan | Know whether the MVP works | Events are documented before release |
625
+
626
+ ## User Flow
627
+ 1. User opens the app.
628
+ 2. User understands the main action from the first screen.
629
+ 3. User creates, tracks, or completes the core item.
630
+ 4. App saves state.
631
+ 5. User can return later and continue.
632
+
633
+ ## Functional Requirements
634
+ - The app must support the MVP flow on ${platform}.
635
+ - The app must keep UI state predictable across navigation.
636
+ - The app must avoid placeholder-only screens in the finished MVP.
637
+ - The app must include validation for required user input.
638
+
639
+ ## Non-Functional Requirements
640
+ - Fast cold start for a small MVP.
641
+ - Accessible labels for tappable controls.
642
+ - Responsive layout for common phone sizes.
643
+ - No secrets committed to source control.
644
+ - Clear release build configuration.
645
+
646
+ ## Analytics Events
647
+ | Event | When It Fires | Properties |
648
+ |---|---|---|
649
+ | app_opened | App becomes usable | platform, version |
650
+ | primary_action_started | User starts the main MVP flow | source_screen |
651
+ | primary_action_completed | User completes the main MVP flow | duration_bucket |
652
+ | error_seen | User sees a blocking error | screen, error_type |
653
+
654
+ ## Risks
655
+ - Scope grows before the MVP proves value.
656
+ - Design decisions are too generic for the target audience.
657
+ - Persistence or API choices are made before constraints are clear.
658
+ - Release work is delayed until the end.
659
+
660
+ ## Open Questions
661
+ - Who is the exact first user?
662
+ - What is the one action they must complete?
663
+ - Does the MVP need login?
664
+ - Does the MVP need offline support?
665
+ - What must be true before publishing a test build?
666
+
667
+ ## Next Step
668
+ Review this PRD, answer the open questions, then run /mobile-harness and ask it to build only the first approved task.
669
+ `,
670
+
671
+ 'DESIGN.md': `# Design Plan: ${productName}
672
+
673
+ ## Design Direction
674
+ Design should be chosen before implementation. Pick one direction and keep the MVP consistent:
675
+
676
+ | Direction | Best For | Notes |
677
+ |---|---|---|
678
+ | Clean utility | Productivity, finance, habit, tracker, internal tools | Dense, calm, easy to scan |
679
+ | Consumer friendly | Wellness, education, lifestyle | Warmer copy, clearer onboarding |
680
+ | Premium minimal | Paid tools, pro users | Strong typography, restrained color, polished empty states |
681
+ | Game-like | Games, learning loops, motivation | More motion, stronger feedback, richer assets |
682
+
683
+ Selected direction: To be confirmed.
684
+
685
+ ## Screen List
686
+ | Screen | Purpose | Required States |
687
+ |---|---|---|
688
+ | Home | Show the primary object or action | Empty, populated, loading, error |
689
+ | Create/Edit | Capture required input | Default, validation error, saving |
690
+ | Detail/Result | Show saved item or completion | Success, missing data |
691
+ | Settings/About | Basic app controls if needed | Default |
692
+
693
+ ## Wireframe Notes
694
+ - Put the primary action in the first viewport.
695
+ - Avoid marketing copy inside the app experience.
696
+ - Keep the MVP flow reachable in one or two taps.
697
+ - Use platform-native navigation patterns unless the product has a strong reason not to.
698
+
699
+ ## Design System
700
+ - Color: choose one primary action color, one surface color, one danger color, and neutral text colors.
701
+ - Typography: use system fonts unless brand requirements exist.
702
+ - Spacing: use an 8-point spacing rhythm.
703
+ - Components: buttons, text fields, list rows/cards, dialogs, snackbars/toasts, empty state, loading state, error state.
704
+
705
+ ## Accessibility
706
+ - Every tappable control needs a clear label.
707
+ - Text should pass contrast checks against its background.
708
+ - Important actions should not rely on color alone.
709
+ - Screens must remain usable with larger text settings.
710
+
711
+ ## Screenshot Plan
712
+ Capture these once the MVP exists:
713
+
714
+ | Screenshot | What To Prove |
715
+ |---|---|
716
+ | Home populated | The app value is visible |
717
+ | Create/Edit flow | The main action works |
718
+ | Empty state | New users are guided |
719
+ | Error or validation state | Failure is understandable |
720
+ `,
721
+
722
+ 'TASKS.md': `# Tasks: ${productName}
723
+
724
+ ## Implementation Rules
725
+ - Do not implement before PRD and design direction are reviewed.
726
+ - Build one task at a time.
727
+ - Compare each task against PRD.md and DESIGN.md before marking complete.
728
+ - Run available tests after each implementation task.
729
+ - Save important decisions with Mobile Memory.
730
+
731
+ ## MVP Tasks
732
+ | ID | Title | Goal | Dependencies | Acceptance Criteria | QA Checklist | Complexity |
733
+ |---|---|---|---|---|---|---|
734
+ | T1 | Confirm MVP scope | Lock the first shippable flow | PRD.md | Open questions answered and one primary flow selected | PRD reviewed | S |
735
+ | T2 | Create design direction | Choose visual style and screen states | DESIGN.md | Direction selected and screen list finalized | Layout can be compared later | S |
736
+ | T3 | Build app shell | Create baseline navigation/theme | T1, T2 | App opens to Home with no placeholder dead ends | Launch app, rotate if supported | M |
737
+ | T4 | Build core flow | Implement the main user action | T3 | User can complete primary action | Manual flow test, restart test | M |
738
+ | T5 | Add persistence | Keep MVP data after restart | T4 | Data survives app restart | Create data, kill app, reopen | M |
739
+ | T6 | Add states and validation | Handle empty/loading/error/input errors | T4 | States match DESIGN.md | Trigger each state | M |
740
+ | T7 | Audit and verify | Run clean code, security, performance, UI, and PRD checks | T3-T6 | Findings are fixed or documented | Tests and screenshots captured | M |
741
+
742
+ ## Current Task
743
+ T1 - Confirm MVP scope.
744
+ `,
745
+
746
+ 'ROADMAP.md': `# Roadmap: ${productName}
747
+
748
+ ## Phase 0 - Product Clarity
749
+ - Review PRD.md.
750
+ - Answer open questions.
751
+ - Select design direction in DESIGN.md.
752
+ - Confirm the first MVP flow.
753
+
754
+ ## Phase 1 - MVP Build
755
+ - App shell.
756
+ - Core flow.
757
+ - Persistence.
758
+ - Empty/loading/error states.
759
+ - Basic accessibility.
760
+
761
+ ## Phase 2 - Verification Loop
762
+ - PRD verification.
763
+ - Clean-code audit.
764
+ - Security audit.
765
+ - Performance audit.
766
+ - UI match review.
767
+ - Device or simulator QA.
768
+
769
+ ## Phase 3 - Release Prep
770
+ - Store listing draft.
771
+ - Screenshot plan.
772
+ - Privacy/data safety checklist.
773
+ - Release notes.
774
+ - Internal test build.
775
+
776
+ ## Later
777
+ - Monetization experiments: ${profile.monetization}
778
+ - AI/API features only after MVP workflow is stable.
779
+ - Growth and ASO iteration.
780
+ `,
781
+
782
+ [MOBILE_MEMORY_FILE]: `# Mobile Memory
783
+
784
+ ## Instant Resume
785
+ Project: ${productName}
786
+ Idea: ${appIdea}
787
+ Platform: ${platform}
788
+ Stack: ${stack}
789
+ Team: ${profile.team}
790
+ Created: ${profile.createdAt}
791
+
792
+ ## Current State
793
+ Starter planning docs were generated by:
794
+
795
+ \`\`\`bash
796
+ npx mobile-ai-agents start
797
+ \`\`\`
798
+
799
+ Generated files:
800
+ - PRD.md
801
+ - DESIGN.md
802
+ - TASKS.md
803
+ - ROADMAP.md
804
+ - MOBILE_MEMORY.md
805
+
806
+ ## Decisions
807
+ | Decision | Reason |
808
+ |---|---|
809
+ | Use ${platform} | User selected or project detection inferred this platform |
810
+ | Start with docs before code | Mobile Harness should verify work against PRD and design |
811
+
812
+ ## Next Action
813
+ Review PRD.md and DESIGN.md, answer open questions, then run /mobile-harness to implement T1/T2 before code work starts.
814
+
815
+ ## Resume Prompt
816
+ Read MOBILE_MEMORY.md, PRD.md, DESIGN.md, TASKS.md, and ROADMAP.md. Continue from the Next Action and do not implement code until PRD and design direction are approved.
817
+ `,
818
+ };
819
+ }
820
+
821
+ function writeStarterDocs(files, force) {
822
+ const results = [];
823
+ for (const [filename, content] of Object.entries(files)) {
824
+ const dest = path.join(process.cwd(), filename);
825
+ if (fs.existsSync(dest) && !force) {
826
+ results.push({ filename, status: 'skipped' });
827
+ continue;
828
+ }
829
+ fs.writeFileSync(dest, content);
830
+ results.push({ filename, status: 'created' });
831
+ }
832
+ return results;
833
+ }
834
+
487
835
  // Collect all agent/skill/workflow names and their remote paths for a platform set
488
836
  function collectItems(platforms) {
489
837
  const agentNames = new Set();
@@ -722,6 +1070,34 @@ async function installForCodex(platforms) {
722
1070
 
723
1071
  // ─── Commands ────────────────────────────────────────────────────────────────
724
1072
 
1073
+ async function cmdStart(args) {
1074
+ const profile = await collectStartProfile(args);
1075
+ const files = renderStarterDocs(profile);
1076
+ const results = writeStarterDocs(files, profile.force);
1077
+
1078
+ console.log('');
1079
+ console.log(bold('Mobile AI Agents Start'));
1080
+ console.log(dim(` Project : ${profile.projectName}`));
1081
+ console.log(dim(` Platform: ${profile.platform}`));
1082
+ console.log('');
1083
+
1084
+ for (const result of results) {
1085
+ if (result.status === 'created') {
1086
+ ok(`${result.filename} created`);
1087
+ } else {
1088
+ log(`${yellow('skipped')} ${result.filename} already exists (use --force to overwrite)`);
1089
+ }
1090
+ }
1091
+
1092
+ console.log('');
1093
+ console.log(bold('Next'));
1094
+ console.log(' 1. Review PRD.md and answer the open questions.');
1095
+ console.log(' 2. Choose one design direction in DESIGN.md.');
1096
+ console.log(' 3. Run /mobile-harness and ask it to continue from TASKS.md.');
1097
+ console.log(' 4. Save important decisions with npx mobile-ai-agents memory capture.');
1098
+ console.log('');
1099
+ }
1100
+
725
1101
  async function cmdInstall(args) {
726
1102
  let platform = 'all';
727
1103
  let tool = 'claude';
@@ -1003,6 +1379,7 @@ function cmdList() {
1003
1379
 
1004
1380
  console.log('');
1005
1381
  console.log(bold(' INSTALL'));
1382
+ console.log(dim(' npx mobile-ai-agents start # guided starter docs'));
1006
1383
  console.log(dim(' npx mobile-ai-agents install # everything (claude)'));
1007
1384
  console.log(dim(' npx mobile-ai-agents install --platform android # android only'));
1008
1385
  console.log(dim(' npx mobile-ai-agents install --tool cursor # cursor only'));
@@ -1022,6 +1399,7 @@ function cmdHelp() {
1022
1399
  console.log(bold(' npx mobile-ai-agents <command> [options]'));
1023
1400
  console.log('');
1024
1401
  console.log(' Commands:');
1402
+ console.log(` ${bold('start')} Guided setup that creates PRD/design/tasks/roadmap`);
1025
1403
  console.log(` ${bold('install')} Install agents, skills, and workflows`);
1026
1404
  console.log(` ${bold('add')} agent|skill|workflow <name> Install a single item`);
1027
1405
  console.log(` ${bold('memory')} init|capture|search|... Local Mobile Memory store`);
@@ -1048,6 +1426,8 @@ function cmdHelp() {
1048
1426
  console.log(' codex All agents/skills/workflows → AGENTS.md');
1049
1427
  console.log('');
1050
1428
  console.log(' Examples:');
1429
+ console.log(dim(' npx mobile-ai-agents start'));
1430
+ console.log(dim(' npx mobile-ai-agents start --platform flutter --idea "Habit tracker"'));
1051
1431
  console.log(dim(' npx mobile-ai-agents install'));
1052
1432
  console.log(dim(' npx mobile-ai-agents install --platform android'));
1053
1433
  console.log(dim(' npx mobile-ai-agents install --platform ios --tool cursor'));
@@ -1069,6 +1449,7 @@ async function main() {
1069
1449
 
1070
1450
  try {
1071
1451
  switch (cmd) {
1452
+ case 'start': await cmdStart(args); break;
1072
1453
  case 'install': await cmdInstall(args); break;
1073
1454
  case 'add': await cmdAdd(args); break;
1074
1455
  case 'memory': cmdMemory(args); break;
@@ -1,6 +1,6 @@
1
1
  # Getting Started
2
2
 
3
- This guide walks you through using your first agent from the Mobile Dev Skill Agents toolkit.
3
+ This guide walks you through using Mobile AI Agents for the first time.
4
4
 
5
5
  ---
6
6
 
@@ -8,6 +8,14 @@ This guide walks you through using your first agent from the Mobile Dev Skill Ag
8
8
 
9
9
  Mobile AI Agents works best when you choose the engineering loop before choosing an agent.
10
10
 
11
+ If you are starting from a raw app idea, run this inside your project folder first:
12
+
13
+ ```bash
14
+ npx mobile-ai-agents start
15
+ ```
16
+
17
+ This creates `PRD.md`, `DESIGN.md`, `TASKS.md`, `ROADMAP.md`, and `MOBILE_MEMORY.md`. After reviewing those files, install the agents and run `/mobile-harness` to continue from the approved plan.
18
+
11
19
  | I need to... | Start with this loop | Good first tool |
12
20
  |---|---|---|
13
21
  | Plan an app or feature | Planning | `@APPFORGE` |
package/docs/index.html CHANGED
@@ -337,7 +337,7 @@
337
337
  <div class="stats">
338
338
  <div class="stat"><div class="stat-num">19</div><div class="stat-label">Agents</div></div>
339
339
  <div class="stat"><div class="stat-num">35</div><div class="stat-label">Skills</div></div>
340
- <div class="stat"><div class="stat-num">13</div><div class="stat-label">Workflows</div></div>
340
+ <div class="stat"><div class="stat-num">14</div><div class="stat-label">Workflows</div></div>
341
341
  <div class="stat"><div class="stat-num">7</div><div class="stat-label">Plugin Tracks</div></div>
342
342
  </div>
343
343
  </div>
@@ -549,7 +549,7 @@
549
549
  <section id="workflows">
550
550
  <div class="container">
551
551
  <div class="section-label">Workflows</div>
552
- <h2>13 end-to-end processes.</h2>
552
+ <h2>14 end-to-end processes.</h2>
553
553
  <p class="section-sub">The differentiator. No other mobile AI toolkit has these — full sequences that chain agents and skills from ticket to store.</p>
554
554
 
555
555
  <div class="workflow-list">
@@ -589,6 +589,10 @@
589
589
  <div class="workflow-name">new-project-setup</div>
590
590
  <div class="workflow-desc">/grill-mobile → architecture → CI from day one → SENTINEL baseline → test infrastructure</div>
591
591
  </div>
592
+ <div class="workflow-item">
593
+ <div class="workflow-name">issue-to-agent</div>
594
+ <div class="workflow-desc">GitHub issue → classify → route to agents/skills → implementation and verification plan</div>
595
+ </div>
592
596
  </div>
593
597
  </div>
594
598
  </section>
@@ -6,7 +6,21 @@ This guide is for first-time users who want Mobile AI Agents installed in their
6
6
 
7
7
  ## Quick Start
8
8
 
9
- If you are not sure what to choose, use the default install:
9
+ If you are starting from only an app idea, create the starter project docs first:
10
+
11
+ ```bash
12
+ npx mobile-ai-agents start
13
+ ```
14
+
15
+ It asks for your idea, platform, team, design status, monetization plan, and stack. Then it creates:
16
+
17
+ - `PRD.md`
18
+ - `DESIGN.md`
19
+ - `TASKS.md`
20
+ - `ROADMAP.md`
21
+ - `MOBILE_MEMORY.md`
22
+
23
+ If you already have a project and just want the AI tools installed, use the default install:
10
24
 
11
25
  ```bash
12
26
  npx mobile-ai-agents install
@@ -22,6 +36,7 @@ This installs Mobile AI Agents for Claude Code. It adds agents, skills, and work
22
36
  After install, open Claude Code in your app project and try:
23
37
 
24
38
  ```text
39
+ /mobile-harness
25
40
  /flutter-review
26
41
  /android-tdd
27
42
  /crasher
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobile-ai-agents",
3
- "version": "1.0.23",
3
+ "version": "1.0.25",
4
4
  "description": "AI agents, skills, and Loop Engineering workflows for building, testing, auditing, and releasing mobile apps.",
5
5
  "bin": {
6
6
  "mobile-ai-agents": "cli/index.js",
@@ -45,11 +45,11 @@
45
45
  "license": "MIT",
46
46
  "repository": {
47
47
  "type": "git",
48
- "url": "git+https://github.com/salmanashraf/mobile-agency.git"
48
+ "url": "git+https://github.com/salmanashraf/mobile-ai-agents.git"
49
49
  },
50
- "homepage": "https://github.com/salmanashraf/mobile-agency",
50
+ "homepage": "https://github.com/salmanashraf/mobile-ai-agents",
51
51
  "bugs": {
52
- "url": "https://github.com/salmanashraf/mobile-agency/issues"
52
+ "url": "https://github.com/salmanashraf/mobile-ai-agents/issues"
53
53
  },
54
54
  "engines": {
55
55
  "node": ">=18.0.0"
@@ -0,0 +1,204 @@
1
+ # Workflow - Issue to Agent
2
+
3
+ **Type:** GitHub issue execution planning
4
+ **Agents Used:** APPFORGE, CRASHER, FREEZE, RETAINER, AXIOM / SWIFT / DART / BRIDGE, SENTINEL, PERF, MOBILE-HARNESS, PIPELINE, LAUNCHPAD, SCRIBE
5
+ **Skills Used:** /crash-triage, /anr-investigation, /memory-leak-investigation, /perf-audit, /security-audit, /security-scan, /clean-code-audit, /prd-verification, /mobile-mcp-qa, /release-prep, /store-listing
6
+
7
+ ---
8
+
9
+ ## When to Use
10
+
11
+ Use this when a GitHub issue should become an executable Mobile AI Agents plan.
12
+
13
+ The workflow accepts feature requests, crashes, ANRs, memory leaks, UI bugs, security issues, release work, store listing tasks, CI/CD work, and documentation tasks.
14
+
15
+ ---
16
+
17
+ ## Inputs
18
+
19
+ - Issue title
20
+ - Issue body
21
+ - Labels
22
+ - Comments or maintainer notes
23
+ - Linked PRD, design, logs, crash reports, screenshots, or source files
24
+ - Target platform, if known
25
+
26
+ ---
27
+
28
+ ## Classification
29
+
30
+ Choose exactly one primary issue type:
31
+
32
+ | Issue Type | Signals | Recommended Start |
33
+ |---|---|---|
34
+ | New feature | User story, acceptance criteria, screens | APPFORGE or MOBILE-HARNESS |
35
+ | Crash | Stacktrace, exception, crash monitor link | /crash-triage then CRASHER |
36
+ | ANR | Main thread blocked, Play Console ANR | /anr-investigation then FREEZE |
37
+ | Memory leak | LeakCanary, retained object, heap growth | /memory-leak-investigation then RETAINER |
38
+ | UI bug | Screenshot mismatch, layout, accessibility | Platform reviewer plus /mobile-mcp-qa |
39
+ | Performance issue | Startup, jank, slow screen, battery, size | /perf-audit then PERF |
40
+ | Security issue | Secrets, auth, storage, network, WebView | /security-scan or /security-audit then SENTINEL |
41
+ | Release task | Signing, rollout, release readiness | /release-prep then PIPELINE or SCRIBE |
42
+ | Store listing | ASO, copy, screenshots, metadata | /store-listing then LAUNCHPAD |
43
+ | CI/CD task | GitHub Actions, Bitrise, Fastlane | PIPELINE |
44
+ | Documentation | Guide, README, integration docs | MOBILE-HARNESS with docs scope |
45
+
46
+ If the issue has multiple types, pick the one that blocks delivery first and list secondary types under `Risks`.
47
+
48
+ ---
49
+
50
+ ## Steps
51
+
52
+ ```text
53
+ 1. LOAD ISSUE
54
+ -> Read title, body, labels, comments, linked artifacts, and acceptance criteria.
55
+
56
+ 2. CLASSIFY
57
+ -> Choose one primary issue type from the classification table.
58
+ -> Identify platform: Android, iOS, Flutter, React Native, Kotlin Multiplatform, Unity, Unreal, or Cross-platform.
59
+
60
+ 3. ROUTE
61
+ -> Select the smallest agent and skill set that can solve the issue.
62
+ -> Prefer specialist agents for evidence-heavy bugs.
63
+
64
+ 4. PLAN
65
+ -> Identify likely files, required evidence, implementation steps, verification, and risks.
66
+ -> If product or credential decisions are missing, mark the plan BLOCKED.
67
+
68
+ 5. EXECUTE ONE TASK
69
+ -> Implement the smallest safe change.
70
+ -> Do not expand scope beyond the issue acceptance criteria.
71
+
72
+ 6. VERIFY
73
+ -> Run tests, lint, build, or documentation checks that match the changed files.
74
+ -> For UI/device bugs, use /mobile-mcp-qa when a target is available.
75
+
76
+ 7. REPORT
77
+ -> Produce ISSUE EXECUTION PLAN before coding or ISSUE EXECUTION REPORT after coding.
78
+ ```
79
+
80
+ ---
81
+
82
+ ## Output Format
83
+
84
+ Use this before implementation:
85
+
86
+ ```text
87
+ ISSUE EXECUTION PLAN
88
+ ====================
89
+ Issue:
90
+ Issue type:
91
+ Platform:
92
+ Recommended agent:
93
+ Recommended skills:
94
+ Files likely involved:
95
+ - <path or area>
96
+
97
+ Implementation plan:
98
+ 1. <step>
99
+ 2. <step>
100
+ 3. <step>
101
+
102
+ Verification plan:
103
+ 1. <check>
104
+ 2. <check>
105
+
106
+ Risks:
107
+ - <risk or "None">
108
+
109
+ Definition of done:
110
+ - <specific acceptance criterion>
111
+ ```
112
+
113
+ Use this after implementation:
114
+
115
+ ```text
116
+ ISSUE EXECUTION REPORT
117
+ ======================
118
+ Issue:
119
+ Issue type:
120
+ Platform:
121
+ Agent route used:
122
+ Skills used:
123
+
124
+ Changes made:
125
+ - <file>: <change>
126
+
127
+ Verification:
128
+ - <command or check>: PASS | FAIL | NOT RUN
129
+
130
+ Remaining risks:
131
+ - <risk or "None">
132
+
133
+ Definition of done:
134
+ - <met criterion>
135
+ ```
136
+
137
+ ---
138
+
139
+ ## Example
140
+
141
+ ### Input
142
+
143
+ ```text
144
+ Issue #142
145
+ Title: [BUG] Checkout crashes when coupon response has no discount
146
+ Labels: bug, android
147
+
148
+ Body:
149
+ Crashlytics shows a NullPointerException in CheckoutViewModel.applyCoupon.
150
+ Stacktrace points to coupon.discount.amount.
151
+ Expected behavior: invalid or empty discounts should show a message and keep checkout open.
152
+ ```
153
+
154
+ ### Output
155
+
156
+ ```text
157
+ ISSUE EXECUTION PLAN
158
+ ====================
159
+ Issue: #142 - Checkout crashes when coupon response has no discount
160
+ Issue type: Crash
161
+ Platform: Android
162
+ Recommended agent: CRASHER
163
+ Recommended skills: /crash-triage, /android-tdd, /clean-code-audit
164
+ Files likely involved:
165
+ - CheckoutViewModel
166
+ - CouponRepository
167
+ - CheckoutViewModelTest
168
+
169
+ Implementation plan:
170
+ 1. Use /crash-triage to confirm the first app-owned crashing frame.
171
+ 2. Update coupon mapping so missing discounts become a typed failure state.
172
+ 3. Add a regression test for a coupon response with no discount.
173
+
174
+ Verification plan:
175
+ 1. Run CheckoutViewModelTest.
176
+ 2. Re-run /clean-code-audit on checkout files.
177
+
178
+ Risks:
179
+ - API contract may need backend confirmation.
180
+
181
+ Definition of done:
182
+ - Missing coupon discounts no longer crash checkout.
183
+ - User sees a recoverable error message.
184
+ - Regression test passes.
185
+ ```
186
+
187
+ ---
188
+
189
+ ## Tool Fit
190
+
191
+ - Codex: Use this workflow after fetching a GitHub issue. Let Codex inspect the local checkout, choose the route, implement the smallest safe change, run verification, and summarize the pushed branch or PR.
192
+ - GitHub Copilot coding agent: Attach the issue to the coding agent with the `ISSUE EXECUTION PLAN` as the task brief so the agent has deterministic scope, files, and verification.
193
+ - Manual GitHub workflow: Paste the plan into the issue or PR description, then assign the recommended specialist agent or skill to each implementation step.
194
+
195
+ ---
196
+
197
+ ## Stop Conditions
198
+
199
+ Stop and ask for a maintainer decision when:
200
+
201
+ - The issue lacks enough reproduction evidence for a crash, ANR, leak, or security report.
202
+ - The fix requires credentials, store owner access, paid service access, or production data.
203
+ - The requested change is destructive or changes public API behavior without acceptance criteria.
204
+ - The issue mixes unrelated work that should be split before implementation.