You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Turn PickLab into the Flutter-first foundation of the new Pickforge: one local command that detects a mobile project, safely wires the user's existing coding agent to upstream tools, teaches a proven workflow, and produces reviewable evidence.
First proof:
pickforge init
pickforge doctor
Then Claude Code, Codex, or Pi can fix a real Flutter overflow through the runtime and return before/after evidence.
Decisions
Upstream-first: integrate official or established providers before building device automation.
Flutter-first: prove one complete inspect → fix → hot reload → verify loop before expanding.
Rust owns the durable local CLI/core; TypeScript owns the MCP and harness edges.
Prototype in the PickLab repository. Rename repositories/packages only after the alpha is proven.
Agents may prepare and open PRs. Elberte performs final review and is the only person who merges.
Feature flag: mobileIntegrationAlpha (default off; gates release exposure while the multi-PR feature lands).
Acceptance criteria
pickforge doctor detects Flutter, required local tools, supported harnesses, and actionable failures; human and JSON output are stable.
pickforge init --dry-run previews every change without writing.
pickforge init applies config transactionally with backups and is idempotent.
Claude Code, Codex, and Pi adapters configure the same Flutter integration pack.
The Flutter pack configures the official Dart/Flutter MCP and installs a portable workflow.
A fresh Flutter project completes inspect → source → fix → hot reload → verify.
The run produces canonical JSON plus a concise Markdown evidence report with before/after artifacts.
State defaults outside the repo under ~/.pickforge/pickforge/projects/<stable-project-id>/, with an explicit test override.
Normal startup and the demo leave the project Git working tree clean except for the intended source fix.
The TypeScript MCP edge supports current and legacy clients through dual-era conformance tests.
Every implementation PR reaches CI green and stops at Ready for human review.
Explicit non-goals
New IDE, embedded terminal, chat, swarm, Operator, or model router
Custom generic Android/iOS automation already available upstream
GUI, emulator viewer, persistent daemon, cloud sync, billing, or marketplace
React Native or iOS support in this issue
Immediate product/package/repository rename
Archiving or deleting existing repositories before replacement proof and release preservation
PR plan
PR 1 — Rust CLI foundation and Flutter-aware doctor
Goal
Turn PickLab into the Flutter-first foundation of the new Pickforge: one local command that detects a mobile project, safely wires the user's existing coding agent to upstream tools, teaches a proven workflow, and produces reviewable evidence.
First proof:
Then Claude Code, Codex, or Pi can fix a real Flutter overflow through the runtime and return before/after evidence.
Decisions
mobileIntegrationAlpha(default off; gates release exposure while the multi-PR feature lands).Acceptance criteria
pickforge doctordetects Flutter, required local tools, supported harnesses, and actionable failures; human and JSON output are stable.pickforge init --dry-runpreviews every change without writing.pickforge initapplies config transactionally with backups and is idempotent.~/.pickforge/pickforge/projects/<stable-project-id>/, with an explicit test override.Explicit non-goals
PR plan
doctorcargo fmt --check;cargo clippy --workspace --all-targets -- -D warnings;cargo test --workspace; existing Bun typecheck/test/buildinitplanner and harness adapters--dry-run, idempotency testsserveStdio, legacy fallback, MRTR/Tasks boundaries, client conformanceTraceability
Flag lifecycle
mobileIntegrationAlphaKickoff
Current status: Planned
Next action: start PR 1 in an isolated worktree with the smallest Rust CLI/doctor contract that can be validated independently.