@mmerterden/multi-agent-pipeline 11.1.0 → 11.3.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.
- package/CHANGELOG.md +58 -0
- package/README.md +2 -2
- package/docs/FIGMA_PIPELINE.md +12 -25
- package/docs/architecture.md +3 -5
- package/docs/features.md +8 -8
- package/install/_common.mjs +9 -1
- package/install/_dev-only-files.mjs +0 -6
- package/install/claude.mjs +45 -18
- package/install/copilot.mjs +16 -14
- package/install/templates/copilot-instructions.md +3 -3
- package/package.json +1 -1
- package/pipeline/commands/{multi-agent.md → multi-agent/SKILL.md} +39 -39
- package/pipeline/commands/multi-agent/{analysis.md → analysis/SKILL.md} +18 -18
- package/pipeline/commands/multi-agent/{analysis-resolve.md → analysis-resolve/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{autopilot.md → autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{build-optimize.md → build-optimize/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{channels.md → channels/SKILL.md} +12 -12
- package/pipeline/commands/multi-agent/{dev.md → dev/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-autopilot.md → dev-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{dev-local.md → dev-local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{dev-local-autopilot.md → dev-local-autopilot/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{finish.md → finish/SKILL.md} +6 -6
- package/pipeline/commands/multi-agent/{generate.md → generate/SKILL.md} +3 -3
- package/pipeline/commands/multi-agent/{help.md → help/SKILL.md} +4 -4
- package/pipeline/commands/multi-agent/{local.md → local/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{local-autopilot.md → local-autopilot/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{manual-test.md → manual-test/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/refactor/SKILL.md +257 -0
- package/pipeline/commands/multi-agent/{resume.md → resume/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{review.md → review/SKILL.md} +5 -5
- package/pipeline/commands/multi-agent/{setup.md → setup/SKILL.md} +1 -1
- package/pipeline/commands/multi-agent/{sync.md → sync/SKILL.md} +20 -58
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_account-picker.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_dev-context.md +2 -2
- package/pipeline/{commands/multi-agent → multi-agent-refs}/_repo-picker.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/android-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/jira.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/wiki.md +7 -7
- package/pipeline/multi-agent-refs/component-dispatch.md +92 -0
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/cross-cli-contract.md +10 -77
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/verify-by-test.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/generate-issue.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/issue-jira-triad.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/keychain.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/log-format.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/modes.md +2 -2
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/operations.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-0-init.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-1-analysis.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-2-planning.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-3-dev.md +10 -10
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-4-review.md +8 -8
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-5-test.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-6-commit.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases/phase-7-report.md +6 -6
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/phases.md +12 -12
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/progress-contract.md +4 -4
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/swiftui-guide.md +1 -1
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/tracker-contract.md +3 -3
- package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/wiki-capture.md +4 -4
- package/pipeline/preferences-template.json +17 -1
- package/pipeline/rules/figma-pipeline.md +2 -2
- package/pipeline/schemas/prefs.schema.json +0 -34
- package/pipeline/scripts/README.md +1 -3
- package/pipeline/scripts/build-stack-plugins.mjs +1 -1
- package/pipeline/scripts/fixtures/install-layout.tsv +6 -5
- package/pipeline/scripts/gen-mode-dispatch.mjs +3 -3
- package/pipeline/scripts/phase-banner.sh +2 -2
- package/pipeline/scripts/review-scope.mjs +94 -0
- package/pipeline/scripts/scan-agent-config.sh +2 -2
- package/pipeline/scripts/smoke-agent-log-cost.sh +1 -1
- package/pipeline/scripts/smoke-agent-model-routing.sh +4 -4
- package/pipeline/scripts/smoke-autopilot-circuit-breaker.sh +2 -2
- package/pipeline/scripts/smoke-channels-approval-gate.sh +2 -2
- package/pipeline/scripts/smoke-channels-flow.sh +5 -5
- package/pipeline/scripts/smoke-clarify.sh +1 -1
- package/pipeline/scripts/smoke-commands-skills-parity.sh +3 -3
- package/pipeline/scripts/smoke-community-gates.sh +1 -1
- package/pipeline/scripts/smoke-compliance-skills.sh +2 -2
- package/pipeline/scripts/smoke-cost-summary.sh +1 -1
- package/pipeline/scripts/smoke-cross-cli-behavior.sh +17 -43
- package/pipeline/scripts/smoke-cross-phase-cohesion.sh +1 -1
- package/pipeline/scripts/smoke-dev-critic.sh +1 -1
- package/pipeline/scripts/smoke-diff-explain.sh +1 -1
- package/pipeline/scripts/smoke-diff-risk.sh +1 -1
- package/pipeline/scripts/smoke-evidence-gate.sh +1 -1
- package/pipeline/scripts/smoke-figma-dispatch.sh +46 -57
- package/pipeline/scripts/smoke-gate-hooks.sh +1 -1
- package/pipeline/scripts/smoke-generate-issue.sh +8 -8
- package/pipeline/scripts/smoke-handoff-contract.sh +3 -3
- package/pipeline/scripts/smoke-identity-isolation.sh +2 -2
- package/pipeline/scripts/smoke-intent-guard.sh +1 -1
- package/pipeline/scripts/smoke-issue-comment-template.sh +2 -2
- package/pipeline/scripts/smoke-issue-jira-triad.sh +4 -4
- package/pipeline/scripts/smoke-language-axis.sh +6 -6
- package/pipeline/scripts/smoke-learnings-ledger.sh +3 -3
- package/pipeline/scripts/smoke-mode-dispatch-drift.sh +16 -16
- package/pipeline/scripts/smoke-model-fallback.sh +3 -3
- package/pipeline/scripts/smoke-multi-repo-integration.sh +2 -2
- package/pipeline/scripts/smoke-multi-repo-worktree.sh +1 -1
- package/pipeline/scripts/smoke-no-token-prompt.sh +5 -5
- package/pipeline/scripts/smoke-phase-0-multi-repo.sh +1 -1
- package/pipeline/scripts/smoke-phase-6-multi.sh +1 -1
- package/pipeline/scripts/smoke-phase4-gates.sh +45 -0
- package/pipeline/scripts/smoke-plan-approval-gate.sh +5 -5
- package/pipeline/scripts/smoke-plan-todos.sh +3 -3
- package/pipeline/scripts/smoke-pr-review-actions.sh +3 -3
- package/pipeline/scripts/smoke-prefs-language.sh +1 -1
- package/pipeline/scripts/smoke-progress-contract.sh +2 -2
- package/pipeline/scripts/smoke-push-retry.sh +1 -1
- package/pipeline/scripts/smoke-repo-map.sh +2 -2
- package/pipeline/scripts/smoke-shadow-git.sh +1 -1
- package/pipeline/scripts/smoke-skill-authoring.sh +4 -9
- package/pipeline/scripts/smoke-tasklist-ordering.sh +10 -10
- package/pipeline/scripts/smoke-test-gap.sh +1 -1
- package/pipeline/scripts/smoke-token-budget.sh +1 -1
- package/pipeline/scripts/smoke-token-preflight.sh +2 -2
- package/pipeline/scripts/smoke-tracker-contract.sh +13 -13
- package/pipeline/scripts/smoke-tracker-tokens-invocation.sh +5 -5
- package/pipeline/scripts/smoke-triage-memory.sh +2 -2
- package/pipeline/scripts/smoke-update-check.sh +1 -1
- package/pipeline/scripts/smoke-url-enrichment.sh +2 -2
- package/pipeline/scripts/smoke-validator-gates.sh +1 -1
- package/pipeline/scripts/smoke-verify-by-test.sh +3 -3
- package/pipeline/scripts/smoke-wiki-integration.sh +9 -33
- package/pipeline/scripts/smoke-work-summary.sh +1 -1
- package/pipeline/scripts/smoke-worktree-path-convention.sh +4 -4
- package/pipeline/scripts/test-integrity-gate.mjs +83 -0
- package/pipeline/scripts/uninstall.mjs +2 -2
- package/pipeline/skills/.skill-manifest.json +40 -160
- package/pipeline/skills/.skills-index.json +21 -372
- package/pipeline/skills/shared/README.md +1 -1
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-analysis/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-analysis-resolve/SKILL.md +3 -3
- package/pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-finish/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-help/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-refactor/SKILL.md +116 -51
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +8 -30
- package/pipeline/skills/shared/external/backlog/BACKLOG.md +32 -0
- package/pipeline/skills/shared/external/backlog/SKILL.md +49 -0
- package/pipeline/skills/shared/external/compose-components/SKILL.md +14 -14
- package/pipeline/skills/shared/external/skill-creator/SKILL.md +48 -0
- package/pipeline/skills/shared/external/skill-creator/audit.md +59 -0
- package/pipeline/skills/shared/external/skill-creator/checklist.md +32 -0
- package/pipeline/skills/shared/external/skill-creator/examples.md +65 -0
- package/pipeline/skills/shared/external/skill-creator/label-check.md +43 -0
- package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +83 -0
- package/pipeline/skills/shared/external/skill-creator/template.md +67 -0
- package/pipeline/skills/skills-index.md +4 -43
- package/pipeline/commands/multi-agent/refactor.md +0 -188
- package/pipeline/commands/multi-agent/refs/component-dispatch.md +0 -92
- package/pipeline/scripts/smoke-existing-discovery-gate.sh +0 -71
- package/pipeline/scripts/smoke-figma-android-parity.sh +0 -148
- package/pipeline/scripts/smoke-figma-credential-store.sh +0 -105
- package/pipeline/scripts/smoke-figma-cross-cli-inventory.sh +0 -177
- package/pipeline/scripts/smoke-figma-sync.sh +0 -149
- package/pipeline/scripts/smoke-sync-delegation.sh +0 -74
- package/pipeline/skills/figma-android/README.md +0 -38
- package/pipeline/skills/figma-android/figma-component-code-connect/SKILL.md +0 -62
- package/pipeline/skills/figma-android/figma-component-implement/SKILL.md +0 -158
- package/pipeline/skills/figma-android/figma-component-test/SKILL.md +0 -120
- package/pipeline/skills/figma-android/figma-component-wiki/SKILL.md +0 -35
- package/pipeline/skills/figma-android/figma-to-component/SKILL.md +0 -124
- package/pipeline/skills/figma-common/README.md +0 -64
- package/pipeline/skills/figma-common/figma-bottom-sheets/SKILL.md +0 -152
- package/pipeline/skills/figma-common/figma-cli-iterate/SKILL.md +0 -282
- package/pipeline/skills/figma-common/figma-cli-iterate-mend/SKILL.md +0 -503
- package/pipeline/skills/figma-common/figma-cli-lean-iterate/SKILL.md +0 -288
- package/pipeline/skills/figma-common/figma-cli-skip/SKILL.md +0 -362
- package/pipeline/skills/figma-common/figma-commit/COMMON_REBASE.md +0 -206
- package/pipeline/skills/figma-common/figma-commit/REVIEW.md +0 -337
- package/pipeline/skills/figma-common/figma-commit/SKILL.md +0 -216
- package/pipeline/skills/figma-common/figma-component-confluence-sync/SKILL.md +0 -223
- package/pipeline/skills/figma-common/figma-component-start/SKILL.md +0 -251
- package/pipeline/skills/figma-common/figma-component-status-update/SKILL.md +0 -78
- package/pipeline/skills/figma-common/figma-evolve-component/SKILL.md +0 -61
- package/pipeline/skills/figma-common/figma-fix/SKILL.md +0 -321
- package/pipeline/skills/figma-common/figma-form-integration/SKILL.md +0 -542
- package/pipeline/skills/figma-common/figma-issue/SKILL.md +0 -750
- package/pipeline/skills/figma-common/figma-iterate/SKILL.md +0 -208
- package/pipeline/skills/figma-common/figma-iteration-commit/SKILL.md +0 -1020
- package/pipeline/skills/figma-common/figma-mend/SKILL.md +0 -331
- package/pipeline/skills/figma-common/figma-navigation/SKILL.md +0 -156
- package/pipeline/skills/figma-common/figma-overlays/SKILL.md +0 -142
- package/pipeline/skills/figma-common/figma-price-integration/SKILL.md +0 -398
- package/pipeline/skills/figma-common/figma-remote-mcp-auth/SKILL.md +0 -104
- package/pipeline/skills/figma-common/figma-review/SKILL.md +0 -400
- package/pipeline/skills/figma-common/figma-setup/SKILL.md +0 -514
- package/pipeline/skills/figma-common/figma-setup/scripts/fetch-mcp-token.py +0 -592
- package/pipeline/skills/figma-common/figma-skip/SKILL.md +0 -129
- package/pipeline/skills/figma-common/figma-ui-patterns/SKILL.md +0 -105
- package/pipeline/skills/figma-common/figma-ui-patterns/patterns/animated-gradient-border.md +0 -116
- package/pipeline/skills/figma-common/figma-utility/SKILL.md +0 -274
- package/pipeline/skills/figma-common/figma-utility/scripts/figma-utility.py +0 -808
- package/pipeline/skills/figma-common/figma-validate/SKILL.md +0 -633
- package/pipeline/skills/figma-common/performance-iteration-commit-all/SKILL.md +0 -716
- package/pipeline/skills/figma-common/performance-review-next/SKILL.md +0 -238
- package/pipeline/skills/figma-common/performance-start/SKILL.md +0 -430
- package/pipeline/skills/figma-common/performance-swiftui/SKILL.md +0 -706
- package/pipeline/skills/figma-common/performance-tour/SKILL.md +0 -423
- package/pipeline/skills/figma-ios/REVIEW_CHECKLIST.md +0 -67
- package/pipeline/skills/figma-ios/figma-component-code-connect/SKILL.md +0 -178
- package/pipeline/skills/figma-ios/figma-component-implement/SKILL.md +0 -184
- package/pipeline/skills/figma-ios/figma-component-test/SKILL.md +0 -219
- package/pipeline/skills/figma-ios/figma-component-wiki/SKILL.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/SKILL.md +0 -416
- package/pipeline/skills/figma-ios/figma-to-component/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-0-init.md +0 -307
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1-gathering.md +0 -119
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-1.5-existing-discovery.md +0 -174
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2-orchestrator.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2a-testing-identifiers.md +0 -368
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2b-localization.md +0 -393
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2c-accessibility.md +0 -617
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-2d-analytics.md +0 -352
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3-orchestrator.md +0 -337
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3a-location.md +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3b-tokens.md +0 -235
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3c-nested.md +0 -214
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3d-patterns.md +0 -902
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3e-assets.md +0 -156
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3f-utilities.md +0 -175
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3g-property-coverage.md +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-3h-variant-config.md +0 -333
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4-orchestrator.md +0 -412
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4a-configuration.md +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4b-view.md +0 -705
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4c-documentation.md +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4d-preview.md +0 -380
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-4e-modifiers.md +0 -262
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5-orchestrator.md +0 -482
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5a-viewinspector.md +0 -274
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5b-snapshot.md +0 -636
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-5c-unit.md +0 -142
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-6-code-connect.md +0 -547
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7-wiki.md +0 -39
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-confluence-generate.md +0 -659
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-7a-wiki-generate.md +0 -580
- package/pipeline/skills/figma-ios/figma-to-component/phases/phase-8-cleanup.md +0 -51
- package/pipeline/skills/figma-ios/figma-to-component/reference/accessibility.md +0 -183
- package/pipeline/skills/figma-ios/figma-to-component/reference/analytics-events.md +0 -64
- package/pipeline/skills/figma-ios/figma-to-component/reference/code-connect.md +0 -531
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-api.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/confluence-xhtml.md +0 -155
- package/pipeline/skills/figma-ios/figma-to-component/reference/figma-to-swiftui-effects.md +0 -196
- package/pipeline/skills/figma-ios/figma-to-component/reference/halt-return-protocol.md +0 -57
- package/pipeline/skills/figma-ios/figma-to-component/reference/localization-naming.md +0 -89
- package/pipeline/skills/figma-ios/figma-to-component/reference/macros.md +0 -227
- package/pipeline/skills/figma-ios/figma-to-component/reference/missing-tokens.md +0 -157
- package/pipeline/skills/figma-ios/figma-to-component/reference/orchestrator-discipline.md +0 -90
- package/pipeline/skills/figma-ios/figma-to-component/reference/registry.md +0 -116
- package/pipeline/skills/figma-ios/figma-to-component/reference/remote-mcp-script.md +0 -153
- package/pipeline/skills/figma-ios/figma-to-component/reference/rest-api-script.md +0 -130
- package/pipeline/skills/figma-ios/figma-to-component/reference/scripts-inventory.md +0 -218
- package/pipeline/skills/figma-ios/figma-to-component/reference/snapshot-testing.md +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/reference/subcomponent-graph.md +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/reference/testing-identifiers-naming.md +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/reference/tools.md +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/reference/viewinspector.md +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/reference/wiki-to-confluence-mapping.md +0 -182
- package/pipeline/skills/figma-ios/figma-to-component/scripts/apply-author-login-map.py +0 -185
- package/pipeline/skills/figma-ios/figma-to-component/scripts/backfill-status.py +0 -609
- package/pipeline/skills/figma-ios/figma-to-component/scripts/build-author-registry.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/bulk-sync-issues.py +0 -261
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-data-gather.py +0 -184
- package/pipeline/skills/figma-ios/figma-to-component/scripts/code-connect-publish.sh +0 -188
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status-upload.py +0 -768
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-component-status.py +0 -191
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-data-gather.py +0 -420
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-page-ids.example.json +0 -9
- package/pipeline/skills/figma-ios/figma-to-component/scripts/confluence-publish.py +0 -336
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-subcomponent-graph.py +0 -391
- package/pipeline/skills/figma-ios/figma-to-component/scripts/figma-update.py +0 -292
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/__init__.py +0 -1
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/issue_sync_propagate.py +0 -93
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/registry_writer.py +0 -299
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_backfill_status.py +0 -343
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update.py +0 -206
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_figma_update_http.py +0 -149
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_phase_clis.py +0 -281
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_registry_writer.py +0 -332
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_issue.py +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_skill_figma_review.py +0 -98
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue.py +0 -298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/lib/test_update_issue_gh.py +0 -195
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase1-gather.py +0 -1298
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase2-finalize.py +0 -228
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase3-scripts.py +0 -1089
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase4-finalize.py +0 -141
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase5-finalize.py +0 -106
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase6-finalize.py +0 -162
- package/pipeline/skills/figma-ios/figma-to-component/scripts/phase7-finalize.py +0 -105
- package/pipeline/skills/figma-ios/figma-to-component/scripts/register-icons-codeconnect.py +0 -179
- package/pipeline/skills/figma-ios/figma-to-component/scripts/remote-mcp-fetch.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/resolve-author-logins.py +0 -260
- package/pipeline/skills/figma-ios/figma-to-component/scripts/run-uicomponents-tests.sh +0 -86
- package/pipeline/skills/figma-ios/figma-to-component/scripts/sidebar-generator.py +0 -321
- package/pipeline/skills/figma-ios/figma-to-component/scripts/update-issue-from-registry.py +0 -1470
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase4.sh +0 -176
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase6.sh +0 -147
- package/pipeline/skills/figma-ios/figma-to-component/scripts/validate-phase7a.py +0 -629
- /package/pipeline/commands/multi-agent/{delete.md → delete/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{diff-explain.md → diff-explain/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{garbage-collect.md → garbage-collect/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{issue.md → issue/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{jira.md → jira/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{kill.md → kill/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{language.md → language/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{log.md → log/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{prune-logs.md → prune-logs/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{purge.md → purge/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{scan.md → scan/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{search.md → search/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{stack.md → stack/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{status.md → status/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{test.md → test/SKILL.md} +0 -0
- /package/pipeline/commands/multi-agent/{update.md → update/SKILL.md} +0 -0
- /package/pipeline/{commands/multi-agent → multi-agent-refs}/_input-parser.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/analysis-template.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/audit-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/backend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/confluence.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/issue-comment.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr-review-actions.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/channels/pr.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/conventions-defaults.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/autopilot-circuit-breaker.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/dev-critic.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/external-context-injection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/model-fallback.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/plan-todos.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/prior-fix-detection.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/repo-map.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/features/shadow-git.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/frontend-guide.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/knowledge.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/multi-repo-integration-build.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/picker-contract.md +0 -0
- /package/pipeline/{commands/multi-agent/refs → multi-agent-refs}/rules.md +0 -0
|
@@ -1,400 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: figma-review
|
|
3
|
-
description: Guided review session for a Figma component implementation. Resolves the component, finds or creates the GitHub issue, shows relevant code, and walks the reviewer through approve/bug/inspect actions.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /figma-review - Interactive Code Review for Figma Components
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
Guided review session for a Figma component implementation. Resolves the component, finds or creates the GitHub issue, shows relevant code, and walks the reviewer through approve/bug/inspect actions.
|
|
11
|
-
|
|
12
|
-
## Parameters
|
|
13
|
-
|
|
14
|
-
| Parameter | Required | Description |
|
|
15
|
-
|-----------|----------|-------------|
|
|
16
|
-
| `<ComponentName>` or `<IssueNumber>` | Yes | PascalCase component name **or** GitHub issue number |
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
/figma-review ModalsTitle
|
|
20
|
-
/figma-review MyComponent
|
|
21
|
-
/figma-review 175
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Constants
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
REPO_ROOT = git repo root (auto-detect)
|
|
30
|
-
GH_REPO = {github.componentsRepo}
|
|
31
|
-
REGISTRY_UTIL = ${REPO_ROOT}/{repos.common.path}/.build/debug/FigmaRegistryUtility
|
|
32
|
-
PROJECT_ID = {github.projectV2Id}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## STEP 0 - Resolve Component
|
|
38
|
-
|
|
39
|
-
### Determine input type
|
|
40
|
-
|
|
41
|
-
If the argument is a number → treat as **issue number**, fetch the issue first and extract `ComponentName` from the issue body's `### Component Name (PascalCase)` field.
|
|
42
|
-
|
|
43
|
-
If the argument is a string → treat as **ComponentName** and search for the issue by name.
|
|
44
|
-
|
|
45
|
-
### If input is issue number
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
gh issue view <NUMBER> --repo ${GH_REPO} --json number,title,body,labels,state
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Extract `ComponentName` from the body field `### Component Name (PascalCase)`.
|
|
52
|
-
If the field is missing → HALT: "Issue #N does not have a Component Name field."
|
|
53
|
-
|
|
54
|
-
### Find component files
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
# Find SwiftUI view
|
|
58
|
-
Glob: **/Sources/UIComponents/**/{ComponentName}.swift
|
|
59
|
-
|
|
60
|
-
# Find configuration
|
|
61
|
-
Glob: **/Sources/UIComponents/**/{ComponentName}Configuration.swift
|
|
62
|
-
|
|
63
|
-
# Find FIGMA.md
|
|
64
|
-
Glob: **/Sources/UIComponents/**/{ComponentName}/FIGMA.md
|
|
65
|
-
|
|
66
|
-
# Find tests
|
|
67
|
-
Glob: **/Tests/**/{ComponentName}Tests.swift
|
|
68
|
-
Glob: **/Tests/**/{ComponentName}SnapshotTests.swift
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
If no `.swift` file found → HALT: "Component `{ComponentName}` not found in codebase."
|
|
72
|
-
|
|
73
|
-
### Find GitHub issue (if input was ComponentName)
|
|
74
|
-
|
|
75
|
-
**Primary: node-id search (deterministic)** - if the registry has an entry for this component, look up its nodeId and search for issues whose body references that exact string:
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
# Resolve ComponentName → nodeId via registry
|
|
79
|
-
NODE_ID=$(python3 -c "
|
|
80
|
-
import json, os, glob, sys
|
|
81
|
-
d = '${FIGMA_DIR}/Components'
|
|
82
|
-
for f in glob.glob(os.path.join(d, '*.json')):
|
|
83
|
-
with open(f) as fh: e = json.load(fh)
|
|
84
|
-
cn = e.get('componentName') or {}
|
|
85
|
-
ios = cn.get('ios') if isinstance(cn, dict) else cn
|
|
86
|
-
if ios == '{ComponentName}':
|
|
87
|
-
print(e.get('nodeId', ''))
|
|
88
|
-
sys.exit(0)
|
|
89
|
-
")
|
|
90
|
-
|
|
91
|
-
if [ -n "$NODE_ID" ]; then
|
|
92
|
-
gh issue list --repo ${GH_REPO} --state open --search "\"$NODE_ID\" in:body" --json number,title,body,labels,state
|
|
93
|
-
fi
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
**Fallback: fuzzy name search** - only if node-id lookup returned nothing (component not in registry, or registry not cloned):
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
gh issue list --repo ${GH_REPO} --state open --label component --search "{ComponentName}" --json number,title,body,labels,state
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
**If issue found:** use it as the parent issue.
|
|
103
|
-
|
|
104
|
-
**If no issue found:** print and STOP:
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
No open issue found for {ComponentName}.
|
|
108
|
-
|
|
109
|
-
1. Create issue now
|
|
110
|
-
2. Continue without issue
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
- If "1": run the same flow as `/figma-issue open` - registry lookup, create issue, add to board. Then continue.
|
|
114
|
-
- If "2": continue review without issue tracking (no labels, no sub-issues - just code inspection).
|
|
115
|
-
|
|
116
|
-
### Extract issue metadata
|
|
117
|
-
|
|
118
|
-
From the issue body:
|
|
119
|
-
- Figma URL, Node ID, Registry Name
|
|
120
|
-
- Jira key (if linked)
|
|
121
|
-
- Current progress checkboxes
|
|
122
|
-
- Existing review status (from labels)
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## STEP 1 - Show Review Context
|
|
127
|
-
|
|
128
|
-
## STEP 2 - Review Menu
|
|
129
|
-
|
|
130
|
-
Print the full review context AND the menu **together in a single output block**, then STOP. Wait for user's response.
|
|
131
|
-
|
|
132
|
-
```
|
|
133
|
-
═══════════════════════════════════════════════
|
|
134
|
-
REVIEW: {ComponentName}
|
|
135
|
-
═══════════════════════════════════════════════
|
|
136
|
-
Issue: #{N} - {title}
|
|
137
|
-
Jira: {JIRA_KEY or "none"}
|
|
138
|
-
Phase: {current phase from labels}
|
|
139
|
-
Review: {X/4 from label or "not started"}
|
|
140
|
-
Open bugs: {count of open bug sub-issues}
|
|
141
|
-
───────────────────────────────────────────────
|
|
142
|
-
Files:
|
|
143
|
-
• {path}/{ComponentName}.swift
|
|
144
|
-
• {path}/{ComponentName}Configuration.swift
|
|
145
|
-
• {path}/FIGMA.md
|
|
146
|
-
• Tests/{ComponentName}Tests.swift
|
|
147
|
-
• Tests/{ComponentName}SnapshotTests.swift
|
|
148
|
-
───────────────────────────────────────────────
|
|
149
|
-
Recent:
|
|
150
|
-
{git log --oneline --since="7 days ago"}
|
|
151
|
-
═══════════════════════════════════════════════
|
|
152
|
-
|
|
153
|
-
What would you like to do?
|
|
154
|
-
|
|
155
|
-
1. Open in Xcode
|
|
156
|
-
2. Open in Xcode + Figma
|
|
157
|
-
3. Approve
|
|
158
|
-
4. Open bug
|
|
159
|
-
5. Status (review progress)
|
|
160
|
-
6. Done (exit review)
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
### Action: `1` - Open in Xcode
|
|
164
|
-
|
|
165
|
-
Find the component's Swift file using Glob, then open it:
|
|
166
|
-
|
|
167
|
-
```bash
|
|
168
|
-
open -a Xcode "<resolved_path>"
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
Return to menu.
|
|
172
|
-
|
|
173
|
-
### Action: `2` - Open in Xcode + Figma
|
|
174
|
-
|
|
175
|
-
1. Open the Swift file in Xcode (same as Action 1):
|
|
176
|
-
```bash
|
|
177
|
-
open -a Xcode "<resolved_path>"
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
2. Build the Figma URL from issue metadata (`Figma URL` field). Open in Figma desktop app if installed, otherwise fall back to browser:
|
|
181
|
-
```bash
|
|
182
|
-
# Check if Figma desktop app is installed
|
|
183
|
-
if [ -d "/Applications/Figma.app" ]; then
|
|
184
|
-
# Convert https://www.figma.com/design/... to figma://file/...
|
|
185
|
-
FIGMA_URL="{figma_url_from_issue}"
|
|
186
|
-
FIGMA_DEEP_LINK=$(echo "$FIGMA_URL" | sed 's|https://www.figma.com/design/|figma://file/|')
|
|
187
|
-
open "$FIGMA_DEEP_LINK"
|
|
188
|
-
else
|
|
189
|
-
open "{figma_url_from_issue}"
|
|
190
|
-
fi
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
Return to menu.
|
|
194
|
-
|
|
195
|
-
### Action: `3` - Approve
|
|
196
|
-
|
|
197
|
-
1. Get current reviewer's GitHub username:
|
|
198
|
-
```bash
|
|
199
|
-
gh api user --jq '.login'
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
2. Read issue body. Find `### Review` section. Check the reviewer's checkbox:
|
|
203
|
-
- Find `- [ ] @{username}` → replace with `- [x] @{username}`
|
|
204
|
-
- If reviewer not in the list → add `- [x] @{username}`
|
|
205
|
-
|
|
206
|
-
3. Update issue body:
|
|
207
|
-
```bash
|
|
208
|
-
gh issue edit <N> --repo ${GH_REPO} --body "<UPDATED_BODY>"
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
4. Count approvals (`- [x]` entries). Update label:
|
|
212
|
-
```bash
|
|
213
|
-
# Remove old review label
|
|
214
|
-
EXISTING=$(gh issue view <N> --repo ${GH_REPO} --json labels --jq '.labels[].name | select(startswith("review:"))' | head -1)
|
|
215
|
-
[ -n "$EXISTING" ] && gh issue edit <N> --repo ${GH_REPO} --remove-label "$EXISTING"
|
|
216
|
-
# Add new one (always out of 4)
|
|
217
|
-
gh issue edit <N> --repo ${GH_REPO} --add-label "review:{APPROVED}/4"
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
5. Add comment:
|
|
221
|
-
```bash
|
|
222
|
-
gh issue comment <N> --repo ${GH_REPO} --body "Approved by @{username}"
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
6. If `review:4/4` AND no open bug sub-issues → print: "All 4 reviews complete. No open bugs. Ready to close with `/figma-issue close #N`."
|
|
226
|
-
|
|
227
|
-
Print: "Approved. Review status: {APPROVED}/4"
|
|
228
|
-
|
|
229
|
-
Return to menu.
|
|
230
|
-
|
|
231
|
-
### Action: `4` - Open bug
|
|
232
|
-
|
|
233
|
-
Print and STOP:
|
|
234
|
-
|
|
235
|
-
```
|
|
236
|
-
Describe the bug:
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
Wait for user's response. Capture as `BUG_DESCRIPTION`.
|
|
240
|
-
|
|
241
|
-
Then ask via **AskUserQuestion** (discrete options only - no free text):
|
|
242
|
-
|
|
243
|
-
```
|
|
244
|
-
Question: "Bug severity?"
|
|
245
|
-
Options:
|
|
246
|
-
- label: "Minor" description: "Cosmetic, non-blocking - label bug-minor"
|
|
247
|
-
- label: "Major" description: "Functional issue, must fix - label bug-major"
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
The answer drives a label, not a free-text comparison. Map:
|
|
251
|
-
- "Minor" → add label `bug-minor`
|
|
252
|
-
- "Major" → add label `bug-major`
|
|
253
|
-
|
|
254
|
-
No "is this minor or major?" prose parsing. The label is the source of truth.
|
|
255
|
-
|
|
256
|
-
Get the parent issue's assignee so the bug is assigned to the implementor:
|
|
257
|
-
|
|
258
|
-
```bash
|
|
259
|
-
PARENT_ASSIGNEE=$(gh issue view <PARENT_ISSUE_NUMBER> --repo ${GH_REPO} --json assignees --jq '.assignees[0].login // empty')
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
Create bug sub-issue (assigned to parent's assignee):
|
|
263
|
-
|
|
264
|
-
```bash
|
|
265
|
-
gh issue create --repo ${GH_REPO} \
|
|
266
|
-
--title "bug({ComponentName}): {short description from first line}" \
|
|
267
|
-
--label "bug" \
|
|
268
|
-
--label "review-fix" \
|
|
269
|
-
${PARENT_ASSIGNEE:+-a "$PARENT_ASSIGNEE"} \
|
|
270
|
-
--body "$(cat <<'EOF'
|
|
271
|
-
## Parent
|
|
272
|
-
|
|
273
|
-
Closes #{PARENT_ISSUE_NUMBER}
|
|
274
|
-
|
|
275
|
-
## Component
|
|
276
|
-
|
|
277
|
-
{ComponentName}
|
|
278
|
-
|
|
279
|
-
## Description
|
|
280
|
-
|
|
281
|
-
{BUG_DESCRIPTION}
|
|
282
|
-
|
|
283
|
-
## Severity
|
|
284
|
-
|
|
285
|
-
{Minor/Major}
|
|
286
|
-
|
|
287
|
-
## Reporter
|
|
288
|
-
|
|
289
|
-
@{username}
|
|
290
|
-
EOF
|
|
291
|
-
)"
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
Add the bug as a sub-issue to the parent:
|
|
295
|
-
|
|
296
|
-
```bash
|
|
297
|
-
# Get sub-issue node ID
|
|
298
|
-
BUG_NODE_ID=$(gh api graphql -f query='{ repository(owner: "{github.org}", name: "{project.slug}-components") { issue(number: <BUG_NUMBER>) { id } } }' --jq '.data.repository.issue.id')
|
|
299
|
-
|
|
300
|
-
# Get parent issue node ID
|
|
301
|
-
PARENT_NODE_ID=$(gh api graphql -f query='{ repository(owner: "{github.org}", name: "{project.slug}-components") { issue(number: <PARENT_NUMBER>) { id } } }' --jq '.data.repository.issue.id')
|
|
302
|
-
|
|
303
|
-
# Link as sub-issue
|
|
304
|
-
gh api repos/${GH_REPO}/issues/<PARENT_NUMBER>/sub_issues --method POST -f sub_issue_id="$BUG_NODE_ID"
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
Add `review-fix` label to parent issue:
|
|
308
|
-
```bash
|
|
309
|
-
gh issue edit <PARENT_NUMBER> --repo ${GH_REPO} --add-label "review-fix"
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
Print: "Bug #M created and linked to #N."
|
|
313
|
-
|
|
314
|
-
Return to menu.
|
|
315
|
-
|
|
316
|
-
### Action: `5` - Status
|
|
317
|
-
|
|
318
|
-
Show detailed review progress:
|
|
319
|
-
|
|
320
|
-
```
|
|
321
|
-
Review Status: {ComponentName} (#N)
|
|
322
|
-
|
|
323
|
-
Approvals: {COUNT}/4
|
|
324
|
-
✅ @reviewer1 - approved 2026-03-22
|
|
325
|
-
✅ @reviewer2 - approved 2026-03-22
|
|
326
|
-
⬜ @reviewer3
|
|
327
|
-
⬜ @reviewer4
|
|
328
|
-
|
|
329
|
-
Open Bugs: {COUNT}
|
|
330
|
-
🔴 #108 - dark mode text color wrong (Major)
|
|
331
|
-
🟡 #109 - RTL padding missing (Minor)
|
|
332
|
-
|
|
333
|
-
Closed Bugs: {COUNT}
|
|
334
|
-
✅ #110 - wrong font token (fixed)
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
Fetch sub-issues:
|
|
338
|
-
```bash
|
|
339
|
-
gh api graphql -f query='{ repository(owner: "{github.org}", name: "{project.slug}-components") { issue(number: <N>) { subIssues(first: 50) { nodes { number title state labels(first: 5) { nodes { name } } } } } } }'
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
Return to menu.
|
|
343
|
-
|
|
344
|
-
### Action: `6` - Done
|
|
345
|
-
|
|
346
|
-
Print: "Review session ended." Exit.
|
|
347
|
-
|
|
348
|
-
---
|
|
349
|
-
|
|
350
|
-
## Review Setup (first time)
|
|
351
|
-
|
|
352
|
-
When STEP 1 detects no `### Review` section in the issue body:
|
|
353
|
-
|
|
354
|
-
1. Get the triggering user's GitHub username:
|
|
355
|
-
```bash
|
|
356
|
-
gh api user --jq '.login'
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
2. Add them as the first reviewer, **unchecked** (pending - they must use Action 3 to formally approve):
|
|
360
|
-
|
|
361
|
-
```markdown
|
|
362
|
-
### Review
|
|
363
|
-
|
|
364
|
-
- [ ] @{current_username}
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
3. Update the issue body with the `### Review` section.
|
|
368
|
-
|
|
369
|
-
4. Update label:
|
|
370
|
-
```bash
|
|
371
|
-
gh issue edit <N> --repo ${GH_REPO} --add-label "review:0/4"
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
5. Print:
|
|
375
|
-
```
|
|
376
|
-
You've been added as reviewer (@{current_username}). Review requires 4 approvals.
|
|
377
|
-
Other reviewers can be added via the GitHub issue or by running /figma-review.
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
6. Continue to STEP 2 (review menu) - no need to stop again.
|
|
381
|
-
|
|
382
|
-
---
|
|
383
|
-
|
|
384
|
-
## Labels Used
|
|
385
|
-
|
|
386
|
-
| Label | Purpose |
|
|
387
|
-
|-------|---------|
|
|
388
|
-
| `review:X/4` | X of 4 reviewers approved (required: 4) |
|
|
389
|
-
| `review-fix` | Has open bugs from review |
|
|
390
|
-
| `bug` | Bug sub-issue |
|
|
391
|
-
|
|
392
|
-
---
|
|
393
|
-
|
|
394
|
-
## Error Handling
|
|
395
|
-
|
|
396
|
-
- **Component not found**: HALT with message.
|
|
397
|
-
- **No issue + user chooses "continue without"**: Code-only review, no labels/tracking.
|
|
398
|
-
- **Reviewer already approved**: Skip, print "Already approved."
|
|
399
|
-
- **Sub-issues API unavailable**: Fall back to linking via comment reference (`Blocked by #N`).
|
|
400
|
-
- **FigmaRegistryUtility not built**: Prompt to build.
|