Skip to content

Build the Flutter-first Pickforge integration alpha #64

Description

@ElbertePlinio

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:

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
    • Depends on: none
    • Touches: Rust workspace/crate, path resolution, detection, CLI contract, tests, CI wiring
    • Validation: cargo fmt --check; cargo clippy --workspace --all-targets -- -D warnings; cargo test --workspace; existing Bun typecheck/test/build
    • Link: feat: add Flutter-aware Pickforge doctor #65
  • PR 2 — Transactional init planner and harness adapters
    • Depends on: PR 1
    • Touches: config plan/apply/backup, Claude Code/Codex/Pi adapters, --dry-run, idempotency tests
    • Validation: focused Rust/adapter tests plus existing suite
    • Link: feat: add transactional Pickforge init #68
  • PR 3 — Flutter integration pack
    • Depends on: PR 2
    • Touches: Dart/Flutter MCP manifest, portable skill, compatibility checks, release gate
    • Validation: clean-project setup tests across all three harnesses
    • Link: feat: add Flutter integration pack #69
  • PR 4 — Evidence capture and report
    • Depends on: PR 3
    • Touches: run artifact schema, Markdown renderer, redaction, storage isolation
    • Validation: golden schema/report tests and clean-working-tree smoke test
    • Link: pending
  • PR 5 — MCP v2 dual-era edge
    • Depends on: PR 3; independent of PR 4 where possible
    • Touches: SDK v2 split packages, serveStdio, legacy fallback, MRTR/Tasks boundaries, client conformance
    • Validation: Claude Code, Codex, Pi, and generic stdio contract tests
    • Link: pending
  • PR 6 — Alpha integration and release gate
    • Depends on: PRs 1–5
    • Touches: packaging, installer exposure, docs, unreleased notes, end-to-end demo
    • Validation: fresh Flutter repo and clean-machine smoke matrix
    • Link: pending
  • Final retirement-plan pass
    • Create linked issues in Pickforge IDE, PickScribe, and PickGauge for notices/release preservation; no archive/delete action in this issue.
  • File follow-up issues for optional Omarchy packaging, React Native/Android, iOS/Swift, PickArena benchmarking, and final rename.

Traceability

Acceptance criterion PR/slice Validation Status
Stable Flutter-aware doctor PR 1 Rust unit/CLI contract tests PR #65 ready for human review
Safe dry-run/apply/backup/idempotency PR 2 Config transaction tests PR #68 ready for human review
Three harnesses + official Dart MCP PR 3 Clean-project harness matrix PR #69 ready for human review
Runtime fix workflow PRs 3, 6 End-to-end Flutter overflow demo pending
JSON + Markdown evidence PR 4 Schema and golden report tests pending
External isolated storage + clean repo PRs 1, 4, 6 Path tests and startup smoke pending
Dual-era MCP compatibility PR 5 Real-client/stdio conformance pending
Human-only merge gate Every PR PR status stops at Ready for human review pending

Flag lifecycle

  • merged behind flag mobileIntegrationAlpha
  • tested on main with the flag on
  • enabled in the alpha release
  • flag removed after the enabled release is verified

Kickoff

Current status: Planned

Next action: start PR 1 in an isolated worktree with the smallest Rust CLI/doctor contract that can be validated independently.

Metadata

Metadata

Assignees

No one assigned

    Labels

    flaggedFeature is dark on main behind a @pickforge/flags flag

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions