Skip to content

Add Miro CLI subcommands: miro-init, miro-link, miro-sync#388

Draft
gx-ai-architect wants to merge 4 commits into
mainfrom
factory/run-2a813ce7
Draft

Add Miro CLI subcommands: miro-init, miro-link, miro-sync#388
gx-ai-architect wants to merge 4 commits into
mainfrom
factory/run-2a813ce7

Conversation

@gx-ai-architect

@gx-ai-architect gx-ai-architect commented May 26, 2026

Copy link
Copy Markdown
Collaborator

Changes

  • Added cmd_miro_init — creates a Miro board for a project, with token setup guidance if FACTORY_MIRO_TOKEN is not configured
  • Added cmd_miro_link — links an existing Miro board ID to a project by writing to .factory/config.json
  • Added cmd_miro_sync — syncs project state to a linked Miro board via factory.miro.sync.sync_board
  • Registered all three subcommands (miro-init, miro-link, miro-sync) in build_parser() and the handlers dict
  • Follows existing cli.py conventions: type annotations, docstrings, _run() for async, Path(args.path) conversion

gx-ai-architect and others added 2 commits May 25, 2026 23:43
- factory/miro/__init__.py: package marker
- factory/miro/templates.py: color maps (agent, drift, component, verdict),
  frame/shape dimensions, grid layout, connector style constants
- factory/miro/analyzer.py: AST-based codebase parser with ProjectStructure,
  ModuleInfo, ClassInfo, FunctionInfo, Dependency dataclasses; non-Python
  fallback to directory listing
- factory/miro/client.py: MiroClient with token resolution via factory config,
  exponential backoff on 429, dry-run mode, event emission
- factory/models.py: add miro_board_id field to FactoryConfig
- pyproject.toml: add miro-api dependency
- factory/user_config.py: add commented miro_token, miro_team_id to template

Closes #384

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- drift.py: Parses CLAUDE.md/README.md architecture sections and
  .factory/archive/ for documented components. Detects undocumented,
  phantom, and drifted items by comparing against ProjectStructure.
- layout.py: Pure coordinate math for 3x2 grid frame positioning,
  top-down item flow layout, and connector routing.
- board.py: BoardRenderer creates 6 frames (Overview, Agent Pipeline,
  Architecture Map, Drift Report, Experiment Timeline, Strategy State),
  populates with color-coded shapes, and draws dependency connectors.
  Creates frames before items per April 2025 Miro bug workaround.

Closes #385

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@gx-ai-architect gx-ai-architect changed the title Miro Phase 1: Foundation — client, analyzer, templates, config Miro Phase 1+2: Foundation + Core — client, analyzer, templates, drift, layout, board May 26, 2026
…tion

Implements sync_board() for full pipeline (analyze → drift detect → render)
and update_experiment() for incremental updates after new experiments.
Non-blocking: all Miro API failures are logged but never propagated.

Closes #386

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@gx-ai-architect gx-ai-architect changed the title Miro Phase 1+2: Foundation + Core — client, analyzer, templates, drift, layout, board Miro Phase 1+2+3: Foundation + Core + Sync orchestrator May 26, 2026
Add three new subcommands to factory CLI for Miro board integration:
- miro-init: Create a Miro board for a project (with token setup guidance)
- miro-link: Link an existing Miro board to a project via config.json
- miro-sync: Sync project state to a linked Miro board

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@gx-ai-architect gx-ai-architect changed the title Miro Phase 1+2+3: Foundation + Core + Sync orchestrator Add Miro CLI subcommands: miro-init, miro-link, miro-sync May 26, 2026
@akashgit akashgit added the enhancement Improves existing feature/functionality or code quality, does not change behavior of codebase label May 30, 2026
@osilkin98

Copy link
Copy Markdown
Collaborator

Closing as out of scope: a Miro integration isn't something the factory core should own or maintain. If it's useful to your workflow, it would live better as an external tool or plugin layered on the events/state files the factory already emits.

@osilkin98 osilkin98 closed this Jun 11, 2026
@osilkin98 osilkin98 added the wontfix This will not be worked on label Jun 11, 2026
@osilkin98 osilkin98 reopened this Jun 12, 2026
@osilkin98 osilkin98 removed the wontfix This will not be worked on label Jun 12, 2026
@osilkin98

Copy link
Copy Markdown
Collaborator

Reopening this: the out-of-scope call was wrong, Miro integration is something we want. Sorry for the churn. The Phase 1-4 issues (#384-#387) stay open as the tracking set.

@osilkin98 osilkin98 added backlog Valid idea, nobody acting on it; revisit when prioritized kind:capability Does something new stage:interface How humans drive it: CLI, docs, ergonomics labels Jun 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backlog Valid idea, nobody acting on it; revisit when prioritized enhancement Improves existing feature/functionality or code quality, does not change behavior of codebase kind:capability Does something new stage:interface How humans drive it: CLI, docs, ergonomics

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants