@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,57 +1,99 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multi-agent-refactor
|
|
3
3
|
language: en
|
|
4
|
-
description: "Analyse the project,
|
|
4
|
+
description: "Analyse the project: extract adapted best-practices, hunt real bugs + improvement areas, check upstream drift of derived skills, draft one plan, take approval, develop, then ask whether to sync."
|
|
5
5
|
user-invocable: true
|
|
6
|
-
argument-hint: 'security | tests | performance | docs | ci | deps'
|
|
6
|
+
argument-hint: 'bugs | best-practices | drift | security | tests | performance | docs | ci | deps'
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Multi-Agent Refactor
|
|
10
10
|
|
|
11
|
-
**One command.
|
|
11
|
+
**One command. Best-practices + Bug hunt + Upstream drift -> Score -> Plan -> Approval -> Develop -> Sync.**
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Deep-analyses the current project, extracts the global best-practices worth adopting (adapted to our stack), hunts real bugs and improvement areas, checks whether any skills we derived from an upstream source have drifted, scores everything, drafts a single prioritized plan, takes approval, applies the approved items, and asks about sync when done.
|
|
14
14
|
|
|
15
|
-
**Input**: $ARGUMENTS (optional -
|
|
15
|
+
**Input**: $ARGUMENTS (optional - area to focus on: "security", "performance", "tests", "bugs", "best-practices", "drift", etc.)
|
|
16
16
|
|
|
17
17
|
## Flow
|
|
18
18
|
|
|
19
19
|
```
|
|
20
|
-
Step 0:
|
|
21
|
-
Step
|
|
22
|
-
Step
|
|
23
|
-
Step
|
|
24
|
-
Step
|
|
25
|
-
Step
|
|
26
|
-
Step
|
|
27
|
-
Step
|
|
28
|
-
Step
|
|
20
|
+
Step 0: BEST-PRACTICES Research the field, extract the best approaches, ADAPT them to our stack -> plan band A
|
|
21
|
+
Step 0b: DRIFT Check upstream-derived skills for updates we have not pulled -> plan band D
|
|
22
|
+
Step 1: SCAN Scan the project structure (files, LOC, dependencies, CI, tests)
|
|
23
|
+
Step 2: ANALYZE 10 categories + an explicit BUG HUNT (real defects, not just scores) -> plan bands B, C
|
|
24
|
+
Step 3: SCORE Each category out of 10, total /100
|
|
25
|
+
Step 4: PLAN Merge bands A (best-practice) + B (bugs) + C (improvements) + D (drift), priority-ordered
|
|
26
|
+
Step 5: ASK "Shall I start developing?" - take approval
|
|
27
|
+
Step 6: IMPLEMENT Apply approved items in order (lint, test, commit)
|
|
28
|
+
Step 7: VERIFY Confirm all tests + lint pass
|
|
29
|
+
Step 8: ASK SYNC "Shall I run multi-agent-sync?" - take approval
|
|
29
30
|
```
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
Plan bands (all four feed the single Step 4 table):
|
|
33
|
+
- **A - Best-practice**: the best field approaches, adapted so they actually fit this repo.
|
|
34
|
+
- **B - Bug**: real defects found in the code (correctness, security, data-loss, crashes).
|
|
35
|
+
- **C - Improvement**: quality/perf/DX gaps surfaced by the 10-category analysis.
|
|
36
|
+
- **D - Drift**: upstream updates to skills we derived from an external source.
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
## Step 0: BEST-PRACTICES - research the field, adapt to us
|
|
34
39
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
Do not copy features blindly. The goal is the best *approaches*, reshaped so they are applicable to THIS project's stack, size, and constraints.
|
|
41
|
+
|
|
42
|
+
1. **Identify the domain** (read README + package/build manifests): kind of project, stack, users.
|
|
43
|
+
2. **Research the best-in-class** for that exact domain:
|
|
44
|
+
- **GitHub**: search the domain terms + `stars:>50`; read the top repos' READMEs, architecture docs, CI configs, test layout.
|
|
45
|
+
- **X / Twitter**: search the domain terms + "best practices" / "we switched to" / "lesson learned"; capture what practitioners recommend right now (WebFetch/WebSearch on `x.com` / `twitter.com` threads).
|
|
46
|
+
- **Reddit**: relevant subreddits for real-world pain points and adopted patterns.
|
|
47
|
+
- **Web**: "<domain> best practices <current-year>", official style guides, platform guidance.
|
|
48
|
+
3. **For each candidate approach, record**: what it is + source, the concrete benefit, the **adaptation** (exactly how it looks in OUR repo: which file/dir/script and what changes), effort (L/M/H), impact (L/M/H/Critical).
|
|
49
|
+
4. **Discard** approaches that do not fit our stack/scale/constraints - and say WHY.
|
|
50
|
+
|
|
51
|
+
Output (plan band A):
|
|
52
|
+
```
|
|
53
|
+
| Source | Approach | Adaptation to our repo | Effort | Impact | In plan? |
|
|
54
|
+
|--------|----------|------------------------|--------|--------|----------|
|
|
55
|
+
| <repo> | <what> | <concrete change here> | Low | High | Yes (P1) |
|
|
56
|
+
| <repo> | <what> | does not fit: <reason> | - | - | No |
|
|
57
|
+
```
|
|
58
|
+
Roll the high-impact + low/med-effort survivors into the Step 4 plan as band-A items.
|
|
59
|
+
|
|
60
|
+
## Step 0b: DRIFT - upstream-derived skill check
|
|
61
|
+
|
|
62
|
+
Some skills/components in this project (or in the marketplace plugins it ships) were derived from an upstream source. Upstream keeps evolving - it fixes bugs and adds features. This step detects upstream drift so we can decide whether to pull the improvements back.
|
|
63
|
+
|
|
64
|
+
The upstream mapping is **configuration, never hardcoded** (it can reference private sources, so it stays out of the shipped skill). Read it from `~/.claude/multi-agent-preferences.json` at `global.derivedSkillSources` (an array). Each entry:
|
|
65
|
+
|
|
66
|
+
```jsonc
|
|
67
|
+
{
|
|
68
|
+
"label": "<human name for this derivation>",
|
|
69
|
+
"localPath": "<repo-relative dir where our derived copy lives>",
|
|
70
|
+
"upstreamMarketplace": "<installed marketplace name>", // resolved under ~/.claude/plugins/cache/<marketplace>/
|
|
71
|
+
"upstreamPlugin": "<plugin name>",
|
|
72
|
+
"upstreamSkills": ["<skill-a>", "<skill-b>"], // the upstream skills we took
|
|
73
|
+
"derivedFromVersion": "<x.y.z>", // the version we last synced from
|
|
74
|
+
"upstreamRepoUrl": "<optional https url>" // used only if the marketplace is not installed locally
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Procedure:
|
|
79
|
+
1. If `global.derivedSkillSources` is missing or empty -> **skip** this step and report "no derived-skill sources configured". Never invent a source.
|
|
80
|
+
2. For each entry, resolve the current upstream version:
|
|
81
|
+
- **Preferred**: read the newest installed version under `~/.claude/plugins/cache/<upstreamMarketplace>/<upstreamPlugin>/*/` (its `.claude-plugin/plugin.json` `version`), plus that version's `CHANGELOG.md`.
|
|
82
|
+
- **Fallback**: if the marketplace is not installed locally and `upstreamRepoUrl` is set, `WebFetch` the upstream `plugin.json` + `CHANGELOG.md`.
|
|
83
|
+
- If neither is reachable, record "upstream unreachable" and move on (do not fail the run).
|
|
84
|
+
3. Compare the resolved upstream version to `derivedFromVersion`:
|
|
85
|
+
- equal -> "up to date" (no drift)
|
|
86
|
+
- newer -> **drift**: read the CHANGELOG entries between the two versions, and diff each `upstreamSkills` SKILL.md (+ templates) against our `localPath` copy. Summarize what changed.
|
|
87
|
+
4. Emit the drift table (plan band D):
|
|
46
88
|
|
|
47
|
-
Output format:
|
|
48
89
|
```
|
|
49
|
-
|
|
|
50
|
-
|
|
51
|
-
|
|
|
52
|
-
| atelier | Persistent Brain | High | Very high | No (roadmap) |
|
|
90
|
+
| Derivation | Our copy (localPath) | Derived-from | Upstream now | Drift | What changed upstream |
|
|
91
|
+
|------------|----------------------|--------------|--------------|-------|-----------------------|
|
|
92
|
+
| <label> | <path> | 0.2.1 | 0.3.0 | YES | <changelog + diff summary> |
|
|
53
93
|
```
|
|
54
94
|
|
|
95
|
+
5. For each drifted entry, add a band-D plan item: "port upstream <plugin> <version> changes into <localPath>". Do not auto-apply - it goes through Step 5 approval; after porting, bump the entry's `derivedFromVersion`.
|
|
96
|
+
|
|
55
97
|
## Step 1: SCAN
|
|
56
98
|
|
|
57
99
|
```
|
|
@@ -65,7 +107,9 @@ Output format:
|
|
|
65
107
|
- Git status: branch count, last commit date, tags
|
|
66
108
|
```
|
|
67
109
|
|
|
68
|
-
## Step 2: ANALYZE - 10
|
|
110
|
+
## Step 2: ANALYZE - 10 categories + BUG HUNT
|
|
111
|
+
|
|
112
|
+
### 2a. 10 categories (quality lens)
|
|
69
113
|
|
|
70
114
|
| # | Category | What is checked |
|
|
71
115
|
|---|----------|-----------------|
|
|
@@ -80,6 +124,23 @@ Output format:
|
|
|
80
124
|
| 9 | **Dependency Management** | Outdated deps, vulnerability scan, lockfile, version pinning |
|
|
81
125
|
| 10 | **DevEx** | Onboarding time, script ergonomics, error messages, debug tooling |
|
|
82
126
|
|
|
127
|
+
### 2b. BUG HUNT (real defects, not scores)
|
|
128
|
+
|
|
129
|
+
Category scores measure quality; they do not find the bug that ships. Run an explicit defect hunt IN ADDITION to the scoring:
|
|
130
|
+
|
|
131
|
+
- Dispatch focused review agents over the highest-risk surfaces: recently changed files, error/edge-path handling, concurrency, external input parsing, resource cleanup, off-by-one boundaries.
|
|
132
|
+
- For each candidate defect, record: **file:line**, the concrete failure scenario (inputs/state -> wrong output/crash), and severity.
|
|
133
|
+
- **Verify before reporting**: only list a bug you can trace to a real failure path; drop the plausible-but-unprovable ones.
|
|
134
|
+
|
|
135
|
+
Output (plan band B) - every confirmed defect becomes a P0/P1 item:
|
|
136
|
+
```
|
|
137
|
+
| # | Severity | File:line | Defect | Failure scenario |
|
|
138
|
+
|---|----------|-----------|--------|------------------|
|
|
139
|
+
| 1 | Blocking | src/x.ts:42 | unchecked nil deref | empty response -> crash |
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Improvement areas surfaced by 2a that are not outright bugs become band-C items.
|
|
143
|
+
|
|
83
144
|
## Step 3: SCORE
|
|
84
145
|
|
|
85
146
|
Each category is scored out of 10. Output format:
|
|
@@ -103,45 +164,46 @@ Each category is scored out of 10. Output format:
|
|
|
103
164
|
+---------------------+-------+
|
|
104
165
|
```
|
|
105
166
|
|
|
106
|
-
## Step 4: PLAN
|
|
167
|
+
## Step 4: PLAN - one merged, prioritized table
|
|
107
168
|
|
|
108
|
-
|
|
169
|
+
Merge all four bands into a single plan. Tag each row with its band (A best-practice / B bug / C improvement / D drift).
|
|
109
170
|
|
|
110
171
|
```
|
|
111
|
-
| # | Priority | Category |
|
|
112
|
-
|
|
113
|
-
| 1 | P0 | Security | Remove hardcoded API key | Critical |
|
|
114
|
-
| 2 | P0 | Testing |
|
|
115
|
-
| 3 | P1 | CI/CD |
|
|
116
|
-
| 4 | P1 |
|
|
117
|
-
| 5 | P2 | DevEx | npm
|
|
172
|
+
| # | Priority | Band | Category | Item | Impact |
|
|
173
|
+
|---|----------|------|----------|------|--------|
|
|
174
|
+
| 1 | P0 | B | Security | Remove hardcoded API key (src/x:12) | Critical |
|
|
175
|
+
| 2 | P0 | B | Testing | Fix nil-deref on empty response (src/y:42) | High |
|
|
176
|
+
| 3 | P1 | A | CI/CD | Adopt matrix build (adapt: .github/workflows/ci.yml) | Medium |
|
|
177
|
+
| 4 | P1 | D | Skills | Port upstream <plugin> 0.3.0 fixes into <localPath> | Medium |
|
|
178
|
+
| 5 | P2 | C | DevEx | Rename npm scripts for consistency | Low |
|
|
118
179
|
```
|
|
119
180
|
|
|
120
181
|
Priority levels:
|
|
121
182
|
- **P0**: Bug, security hole, broken functionality - fix without fail
|
|
122
|
-
- **P1**: Clear quality improvement - should be done
|
|
183
|
+
- **P1**: Clear quality improvement or high-value adopted best-practice / drift port - should be done
|
|
123
184
|
- **P2**: Nice-to-have - if there is time
|
|
124
185
|
|
|
125
|
-
## Step 5: ASK -
|
|
186
|
+
## Step 5: ASK - approval from the user
|
|
126
187
|
|
|
127
188
|
After showing the plan, ask:
|
|
128
189
|
|
|
129
|
-
> "I found X
|
|
190
|
+
> "I found X items (P0: N, P1: M, P2: K) across bugs, best-practices, improvements, and upstream drift. Shall I start developing?"
|
|
130
191
|
|
|
131
192
|
Options:
|
|
132
193
|
- "Yes, do all of them"
|
|
133
194
|
- "Do only the P0 ones"
|
|
134
195
|
- "Do only P0 + P1"
|
|
196
|
+
- "Only the bugs (band B)"
|
|
135
197
|
- (the user can make a specific selection)
|
|
136
198
|
|
|
137
199
|
**NEVER start developing without approval.**
|
|
138
200
|
|
|
139
201
|
## Step 6: IMPLEMENT
|
|
140
202
|
|
|
141
|
-
Apply approved
|
|
203
|
+
Apply approved items in order:
|
|
142
204
|
|
|
143
|
-
1. For each
|
|
144
|
-
- Make the change
|
|
205
|
+
1. For each item:
|
|
206
|
+
- Make the change (for band D, port the upstream diff into `localPath`, then bump that entry's `derivedFromVersion`)
|
|
145
207
|
- Run the relevant tests
|
|
146
208
|
- If successful, move to the next
|
|
147
209
|
- If it fails, revert and notify the user
|
|
@@ -167,7 +229,7 @@ echo "Test: PASS/FAIL (X/Y passed)"
|
|
|
167
229
|
|
|
168
230
|
## Step 8: ASK SYNC
|
|
169
231
|
|
|
170
|
-
After all
|
|
232
|
+
After all approved items are applied, ask:
|
|
171
233
|
|
|
172
234
|
> "Development complete. Shall I run multi-agent-sync?"
|
|
173
235
|
|
|
@@ -178,14 +240,17 @@ Options:
|
|
|
178
240
|
|
|
179
241
|
## Focus filter
|
|
180
242
|
|
|
181
|
-
If $ARGUMENTS is specified, focus on that category only:
|
|
243
|
+
If $ARGUMENTS is specified, focus on that band/category only:
|
|
182
244
|
|
|
183
245
|
| Input | Focus |
|
|
184
246
|
|-------|-------|
|
|
247
|
+
| `bugs` | Bug hunt only (band B) |
|
|
248
|
+
| `best-practices` | Field research + adapted plan only (band A) |
|
|
249
|
+
| `drift` | Upstream derived-skill drift only (band D) |
|
|
185
250
|
| `security` | Security analysis only |
|
|
186
251
|
| `tests` | Test coverage and quality only |
|
|
187
252
|
| `performance` | Performance optimization only |
|
|
188
253
|
| `docs` | Documentation only |
|
|
189
254
|
| `ci` | CI/CD pipeline only |
|
|
190
255
|
| `deps` | Dependency updates only |
|
|
191
|
-
| (empty) |
|
|
256
|
+
| (empty) | Everything (default) |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: multi-agent-sync
|
|
3
3
|
language: en
|
|
4
|
-
description: "One-shot sync of the entire multi-agent ecosystem: Claude Code, Copilot CLI, pipeline repo,
|
|
4
|
+
description: "One-shot sync of the entire multi-agent ecosystem: Claude Code, Copilot CLI, pipeline repo, and website."
|
|
5
5
|
user-invocable: true
|
|
6
6
|
argument-hint: 'release | "change description"'
|
|
7
7
|
---
|
|
@@ -10,35 +10,30 @@ argument-hint: 'release | "change description"'
|
|
|
10
10
|
|
|
11
11
|
**Single command. Full ecosystem sync. No argument required.**
|
|
12
12
|
|
|
13
|
-
When invoked, it synchronizes all
|
|
13
|
+
When invoked, it synchronizes all targets in order. It detects what changed, updates only the stale ones, and reports the result.
|
|
14
14
|
|
|
15
15
|
**Input**: $ARGUMENTS (optional - `release` or a change description to apply to all targets)
|
|
16
16
|
|
|
17
|
-
## Targets
|
|
17
|
+
## Targets
|
|
18
18
|
|
|
19
19
|
| # | Target | Path | Direction |
|
|
20
20
|
|---|-------|-----|-----|
|
|
21
|
-
| 0 | Figma source (opt-in) | `prefs.global.figmaSource.path` -> `pipeline/skills/figma-ios/` + `figma-common/` | <- upstream |
|
|
22
21
|
| 1 | Claude Code (source of truth) | `~/.claude/commands/multi-agent.md` + `~/.claude/commands/multi-agent/` + `~/.claude/agents/` + `~/.claude/scripts/` | source |
|
|
23
22
|
| 2 | Copilot CLI | `~/.copilot/copilot-instructions.md` + `~/.copilot/skills/` | <- from Claude |
|
|
24
23
|
| 3 | multi-agent-pipeline repo | `~/multi-agent-pipeline/pipeline/` | <- from Claude (genericized) |
|
|
25
24
|
| 4 | Website | `{owner}/{website-host}` | <- version + features |
|
|
26
|
-
| 5 | Remote Control | `{owner}/remote-control` | <- pipeline references |
|
|
27
25
|
|
|
28
26
|
## Default Behavior (no argument)
|
|
29
27
|
|
|
30
28
|
Run all steps automatically:
|
|
31
29
|
|
|
32
30
|
```
|
|
33
|
-
Step 0: FIGMA_SYNC (opt-in) pipeline/scripts/sync-figma-source.sh
|
|
34
|
-
-- incremental pull from upstream if figmaSource.path is set
|
|
35
31
|
Step 1: DETECT Compare timestamps, find stale targets
|
|
36
|
-
Step 2: COPILOT Claude Code -> Copilot CLI (instructions +
|
|
32
|
+
Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 36 sub-command skills)
|
|
37
33
|
Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub)
|
|
38
34
|
Step 4: WEBSITE Version + phase/model counts -> {website-host} (i18n + projects.ts)
|
|
39
|
-
Step 5:
|
|
40
|
-
Step 6:
|
|
41
|
-
Step 7: Report Summary: synced targets, changed files, deploy status
|
|
35
|
+
Step 5: Commit Commit + push all changed repos
|
|
36
|
+
Step 6: Report Summary: synced targets, changed files, deploy status
|
|
42
37
|
```
|
|
43
38
|
|
|
44
39
|
If nothing is stale -> report "All targets up to date" and stop.
|
|
@@ -118,22 +113,6 @@ git push origin main # Vercel auto-deploy
|
|
|
118
113
|
```
|
|
119
114
|
|
|
120
115
|
|
|
121
|
-
## Remote Control Sync (Step 5)
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
REMOTE_DIR="$HOME/remote-control"
|
|
125
|
-
[ ! -d "$REMOTE_DIR" ] && gh repo clone {owner}/remote-control "$REMOTE_DIR"
|
|
126
|
-
cd "$REMOTE_DIR" && git pull origin main
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
| File | To sync |
|
|
130
|
-
|-------|--------------|
|
|
131
|
-
| `README.md` | Pipeline feature description |
|
|
132
|
-
| `src/index.ts` | Help text / chip labels (if any) |
|
|
133
|
-
|
|
134
|
-
Update only if the pipeline's public-facing features changed.
|
|
135
|
-
|
|
136
|
-
|
|
137
116
|
## Release Flow
|
|
138
117
|
|
|
139
118
|
When invoked with the `release` argument:
|
|
@@ -146,9 +125,8 @@ When invoked with the `release` argument:
|
|
|
146
125
|
5. Commit + TAG git commit + git tag v{VERSION}
|
|
147
126
|
6. PUSH git push --tags -> release.yml auto-publish
|
|
148
127
|
7. WEBSITE Version + features -> {website-host}
|
|
149
|
-
8.
|
|
150
|
-
9.
|
|
151
|
-
10. Report Summary: version, touched repos, deploy status
|
|
128
|
+
8. COPILOT Copilot CLI instructions + skills sync
|
|
129
|
+
9. Report Summary: version, touched repos, deploy status
|
|
152
130
|
```
|
|
153
131
|
|
|
154
132
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Backlog
|
|
2
|
+
|
|
3
|
+
Deferred-but-approved work, kept whole. Entries move `deferred` -> `ready` -> `in-progress` -> `done` and are never deleted. The full spec travels verbatim from when the job was deferred.
|
|
4
|
+
|
|
5
|
+
## Ready
|
|
6
|
+
|
|
7
|
+
_(nothing yet)_
|
|
8
|
+
|
|
9
|
+
## Deferred
|
|
10
|
+
|
|
11
|
+
_(nothing yet)_
|
|
12
|
+
|
|
13
|
+
## In progress
|
|
14
|
+
|
|
15
|
+
_(nothing yet)_
|
|
16
|
+
|
|
17
|
+
## Done
|
|
18
|
+
|
|
19
|
+
_(nothing yet)_
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
### Entry template
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
#### <id> — <title>
|
|
27
|
+
- state: deferred | ready | in-progress | done
|
|
28
|
+
- origin: <task / PR / finding / conversation that spawned it>
|
|
29
|
+
- unblock: <condition that makes it actionable, or "none">
|
|
30
|
+
- spec: |
|
|
31
|
+
<FULL description, verbatim from when it was deferred. Not a summary.>
|
|
32
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: backlog
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "The engineering backlog registry for deferred-but-approved work in this codebase. Every job the user defers ('defer it', 'add it to the list', 'later', 'not now') lands HERE with its full spec, origin, and unblock condition, so deferral never means loss. Load when the user defers work, asks 'what's on the backlog / the list', says 'work the backlog' / 'pick up <item>', or when completing an item. The bundled BACKLOG.md is the registry; entries move deferred -> ready -> in-progress -> done and are never deleted."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: [list | add | pick <id> | done <id>]
|
|
7
|
+
allowed-tools: Read, Grep, Glob, Edit, Write
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# backlog — deferred work, kept whole
|
|
11
|
+
|
|
12
|
+
> **Layer:** workflow — the deterministic registry routine for deferred jobs.
|
|
13
|
+
> **Bundled:** [BACKLOG.md](BACKLOG.md) — the registry. The heart of this skill.
|
|
14
|
+
> **Iron rule:** moving a job onto this list is a MOVE, never a rewrite — the FULL spec
|
|
15
|
+
> travels verbatim. A compressed one-liner is a loss; the point of the backlog is that
|
|
16
|
+
> deferring costs nothing later.
|
|
17
|
+
|
|
18
|
+
## When to load
|
|
19
|
+
|
|
20
|
+
- The user defers work: "defer it", "add it to the list", "later", "not now", "backlog this".
|
|
21
|
+
- The user asks about it: "what's on the backlog", "what's on the list", "what's owed".
|
|
22
|
+
- The user works it: "work the backlog", "pick up <id>", "do the next one".
|
|
23
|
+
- An item completes: mark it done (never delete).
|
|
24
|
+
|
|
25
|
+
## The registry contract
|
|
26
|
+
|
|
27
|
+
Every entry in `BACKLOG.md` carries, verbatim:
|
|
28
|
+
|
|
29
|
+
- **id** — short stable slug (`kebab-case`), assigned on add.
|
|
30
|
+
- **title** — one line.
|
|
31
|
+
- **state** — `deferred` -> `ready` -> `in-progress` -> `done`. Entries only move forward; nothing is deleted.
|
|
32
|
+
- **origin** — where it came from (the task/PR/finding/conversation that spawned it).
|
|
33
|
+
- **spec** — the FULL description, verbatim from when it was deferred. Not a summary.
|
|
34
|
+
- **unblock** — the condition that makes it actionable (a dependency, a decision, a date). `deferred` items without an unblock condition are just `ready`.
|
|
35
|
+
|
|
36
|
+
Prefer an append-only markdown table or section list in `BACKLOG.md`; never overwrite an entry's spec on a state change — only its `state` line moves.
|
|
37
|
+
|
|
38
|
+
## Operations
|
|
39
|
+
|
|
40
|
+
| Command | Action |
|
|
41
|
+
|---|---|
|
|
42
|
+
| `list` | Show entries grouped by state (ready first, then deferred, then in-progress; done collapsed). |
|
|
43
|
+
| `add` | Capture the deferred job with its full spec + origin + unblock condition. Assign an id. |
|
|
44
|
+
| `pick <id>` | Move `ready`/`deferred` -> `in-progress`; surface the full spec so work resumes with zero context loss. |
|
|
45
|
+
| `done <id>` | Move -> `done`. Keep the entry (it becomes the record of what was owed and delivered). |
|
|
46
|
+
|
|
47
|
+
## Why keep it whole
|
|
48
|
+
|
|
49
|
+
The failure mode this skill prevents: an agent defers a job with a one-line note, the surrounding context evaporates, and picking it up later means re-deriving the spec (or silently dropping it). Storing the full spec at defer-time makes deferral safe — the cost of "later" is paid once, up front, not lost.
|
|
@@ -251,27 +251,27 @@ fun AppTheme(
|
|
|
251
251
|
|
|
252
252
|
```kotlin
|
|
253
253
|
private val LightColorScheme = lightColorScheme(
|
|
254
|
-
primary = Color(
|
|
254
|
+
primary = Color(0xFF6750A4),
|
|
255
255
|
onPrimary = Color.White,
|
|
256
|
-
primaryContainer = Color(
|
|
257
|
-
onPrimaryContainer = Color(
|
|
258
|
-
secondary = Color(
|
|
256
|
+
primaryContainer = Color(0xFFEADDFF),
|
|
257
|
+
onPrimaryContainer = Color(0xFF21005D),
|
|
258
|
+
secondary = Color(0xFF625B71),
|
|
259
259
|
onSecondary = Color.White,
|
|
260
|
-
secondaryContainer = Color(
|
|
261
|
-
onSecondaryContainer = Color(
|
|
262
|
-
surface = Color(
|
|
263
|
-
onSurface = Color(
|
|
260
|
+
secondaryContainer = Color(0xFFE8DEF8),
|
|
261
|
+
onSecondaryContainer = Color(0xFF1D192B),
|
|
262
|
+
surface = Color(0xFFFFFBFE),
|
|
263
|
+
onSurface = Color(0xFF1C1B1F),
|
|
264
264
|
error = Color(0xFFBA1A1A),
|
|
265
265
|
onError = Color.White,
|
|
266
266
|
)
|
|
267
267
|
|
|
268
268
|
private val DarkColorScheme = darkColorScheme(
|
|
269
|
-
primary = Color(
|
|
270
|
-
onPrimary = Color(
|
|
271
|
-
primaryContainer = Color(
|
|
272
|
-
onPrimaryContainer = Color(
|
|
273
|
-
surface = Color(
|
|
274
|
-
onSurface = Color(
|
|
269
|
+
primary = Color(0xFFD0BCFF),
|
|
270
|
+
onPrimary = Color(0xFF381E72),
|
|
271
|
+
primaryContainer = Color(0xFF4F378B),
|
|
272
|
+
onPrimaryContainer = Color(0xFFEADDFF),
|
|
273
|
+
surface = Color(0xFF1C1B1F),
|
|
274
|
+
onSurface = Color(0xFFE6E1E5),
|
|
275
275
|
)
|
|
276
276
|
```
|
|
277
277
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-creator
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Author and refine skills for a plugin/toolkit efficiently. Use when creating a new skill, trimming or splitting an existing one, writing a skill's description, or choosing skill vs command vs agent vs CLAUDE.md. Encodes the house rules — lean SKILL.md as an index, progressive disclosure into bundled files, the reference (descriptive) vs workflow (imperative) split, no-prefix naming, and growing a skill from observed failures. Bundles a template, a pre-ship checklist, and good/bad description examples."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: [new | trim | description]
|
|
7
|
+
allowed-tools: Read, Write, Edit, Glob
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# skill-creator — how to write skills here
|
|
11
|
+
|
|
12
|
+
> **Layer:** reference (knowledge)
|
|
13
|
+
> **Use when:** creating/trimming a skill, writing a description, or choosing skill vs command/agent/CLAUDE.md.
|
|
14
|
+
> **Bundled (read on demand):** [template.md](template.md) · [checklist.md](checklist.md) · [examples.md](examples.md) · [label-check.md](label-check.md) · [audit.md](audit.md)
|
|
15
|
+
|
|
16
|
+
## 1. Is a skill the right tool?
|
|
17
|
+
- **CLAUDE.md** — broad facts/rules true *every* session.
|
|
18
|
+
- **Skill** — on-demand procedure or knowledge for a recurring task.
|
|
19
|
+
- **Subagent/agent** — needs independent reasoning + its own context/tools.
|
|
20
|
+
- **MCP server** — structured integration with an external system's API.
|
|
21
|
+
|
|
22
|
+
## 2. The description is discovery (the 90% lever)
|
|
23
|
+
It's the *only* thing the model sees when deciding to load the skill. **Write it first.** Include **what + when + trigger words + one example trigger**, in third person. (Anthropic's data: vague→specific lifts activation ~20%→50%; adding examples ~72%→90%.) Good/bad pairs in [examples.md](examples.md).
|
|
24
|
+
|
|
25
|
+
## 3. Keep it lean (it stays in context every turn once loaded)
|
|
26
|
+
- `SKILL.md` is an **index** — aim for ~1 page, hard cap ~500 lines.
|
|
27
|
+
- Push detail into bundled files **one level deep** (reference, examples, scripts). They cost zero tokens until read; nested-deeper files get partially read — don't nest.
|
|
28
|
+
- A **script executes without its source entering context** — prefer a script over asking the model to regenerate code.
|
|
29
|
+
- Challenge every line: *"would Claude err without this?"* If no, cut it.
|
|
30
|
+
|
|
31
|
+
## 4. Pick the right degree of freedom (= our layers)
|
|
32
|
+
- **reference skill → descriptive:** invariants, conventions + pointers to canonical files, decision heuristics, pitfalls, escape hatches. **No numbered procedures.**
|
|
33
|
+
- **workflow skill → imperative spine:** a numbered procedure **only** for deterministic/irreversible steps (branch/PR, codegen, build/verify). Cite reference skills for the judgment.
|
|
34
|
+
- **tool skill → thin index over a script/CLI:** lean SKILL.md (when + the run command + sub-commands at a glance), heavy detail in a bundled `reference.md`; the script is the engine (e.g. `tools/figma-utility`).
|
|
35
|
+
|
|
36
|
+
## 5. Naming
|
|
37
|
+
No platform prefix — the toolkit name + description already carry it. Reference = aspect noun (`navigation`); workflow = verb-phrase (`branch-and-pr`). Avoid vague/reserved (`helper`, `utils`, `claude-*`). For a name/title/strict-rule label that must carry its **whole intent**, validate it with the fresh-subagent inference test in [label-check.md](label-check.md) before committing.
|
|
38
|
+
|
|
39
|
+
## 6. Grow it from real usage — don't pre-write
|
|
40
|
+
1. Do the task **without** a skill; note where Claude actually fails.
|
|
41
|
+
2. Write the **minimum** that fixes those gaps.
|
|
42
|
+
3. Watch Claude use it: move reused detail up into SKILL.md, cut detail it ignores, sharpen the description if it didn't trigger.
|
|
43
|
+
|
|
44
|
+
## Before shipping
|
|
45
|
+
Start from [template.md](template.md); run [checklist.md](checklist.md). For a new or
|
|
46
|
+
substantially-changed skill that must be trusted, run the **multi-architect audit**
|
|
47
|
+
([audit.md](audit.md)) — a panel of distinct-lens reviewers + synthesis, looped
|
|
48
|
+
fix → re-audit until no blockers/majors remain.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Multi-architect audit — adversarial quality gate for a skill
|
|
2
|
+
|
|
3
|
+
The [checklist](checklist.md) is the self-review floor. This is the **high-confidence
|
|
4
|
+
gate**: a panel of N independent reviewers, each a *distinct lens*, reads the skill
|
|
5
|
+
against the rubric + ground truth, then a synthesizer dedups and rules. You **loop
|
|
6
|
+
fix → re-audit until it passes** (no blockers/majors). Run it before shipping a new
|
|
7
|
+
or substantially-changed skill, or whenever a skill must be trusted.
|
|
8
|
+
|
|
9
|
+
Use the [Workflow tool](scripts/audit-panel.js) to fan the panel out — it returns
|
|
10
|
+
`{remaining, clearsBar, verdict}`.
|
|
11
|
+
|
|
12
|
+
## The loop (run to convergence)
|
|
13
|
+
1. **Panel** — N agents, one lens each, read-only. Each returns specific findings
|
|
14
|
+
(severity · file:location · problem · concrete fix). Empty if its lens is clean.
|
|
15
|
+
2. **Synthesize** — dedup overlaps; **drop false positives** (verify each against the
|
|
16
|
+
real files/repo before keeping); classify blocker / major / minor / nit;
|
|
17
|
+
`clearsBar = no blockers and no majors remain`.
|
|
18
|
+
3. **If not clean** — apply the do-now set (blockers + majors + cheap high-value
|
|
19
|
+
minors), then run a **fresh** panel (see "Fresh each round") and repeat.
|
|
20
|
+
4. **Stop** when `clearsBar` is true. The later/nit list is optional polish.
|
|
21
|
+
|
|
22
|
+
## Rules that make it trustworthy
|
|
23
|
+
- **Fresh panel each round.** After a fix, re-run the panel anew so agents read the
|
|
24
|
+
*current* files — do not reuse a prior run's cached results (they reflect the old
|
|
25
|
+
state and will report fixed issues as open / miss regressions).
|
|
26
|
+
- **Verify before keeping.** Every finding must be confirmed against the actual file
|
|
27
|
+
or repo. The synthesizer drops anything it can't reproduce. Prefer findings that
|
|
28
|
+
cite a line and a reproduction.
|
|
29
|
+
- **Ground-truth, not vibes.** Give the panel the rubric ([SKILL.md](SKILL.md) +
|
|
30
|
+
[checklist.md](checklist.md)), an exemplar skill, and the real source the skill
|
|
31
|
+
describes (e.g. the iOS repo). Agents read; they don't assume.
|
|
32
|
+
- **Watch for regressions.** A fix can break something — the red-team lens and the
|
|
33
|
+
fresh re-audit exist to catch it (e.g. a broadened check that now false-positives).
|
|
34
|
+
- **clearsBar gates the merge.** Don't merge with an open blocker/major.
|
|
35
|
+
|
|
36
|
+
## Lenses — pick the set for the task
|
|
37
|
+
One distinct lens per agent (+ a synthesizer). Two ready-made sets:
|
|
38
|
+
|
|
39
|
+
**General skill audit** — discovery · leanness · shape/layer · scripts · accuracy-vs-source · domain-correctness · wiring · boundaries · red-team → synthesis.
|
|
40
|
+
|
|
41
|
+
**Prompt-engineering audit** (when the concern is *prompt quality* — descriptions,
|
|
42
|
+
instructions, triggering):
|
|
43
|
+
1. **description-as-discovery** — what + when + trigger words + example; would it activate on a real task?
|
|
44
|
+
2. **disambiguation** — distinct from siblings; a reader can tell when to pick this vs a neighbor.
|
|
45
|
+
3. **trigger coverage** — the real user phrasings (and synonyms) are covered.
|
|
46
|
+
4. **instruction clarity** — steps are unambiguous, ordered, single-interpretation; no vague directives.
|
|
47
|
+
5. **degrees of freedom / layer fit** — reference=descriptive (no numbered procedure), workflow=spine, tool=thin-index; freedom matches the task.
|
|
48
|
+
6. **progressive disclosure / leanness** — SKILL.md is an index; detail bundled one level deep; no duplication.
|
|
49
|
+
7. **token efficiency** — every line is load-bearing; nothing restates what the model already knows.
|
|
50
|
+
8. **consistency** — terminology, naming, paths, cross-references, examples all agree.
|
|
51
|
+
9. **anti-patterns / misfire** — would the model over-apply it, skip a gate, hallucinate a path, or follow it into a wrong output?
|
|
52
|
+
10. **red-team** — adversarially try to make it not trigger, trigger wrongly, or produce broken output; hunt overclaims (says X, the script doesn't).
|
|
53
|
+
|
|
54
|
+
Scale the panel to risk: a quick check is ~3 lenses; a thorough gate is ~10.
|
|
55
|
+
|
|
56
|
+
## Scope of fixes per round
|
|
57
|
+
Fix **blockers + majors** always; fold in **cheap, high-value minors** while you're
|
|
58
|
+
in the file. Defer speculative nits and pre-existing/out-of-scope drift to the
|
|
59
|
+
"later" list (and `log()`/note them — don't silently drop coverage).
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Pre-ship checklist
|
|
2
|
+
|
|
3
|
+
Run before considering a skill done.
|
|
4
|
+
|
|
5
|
+
## Discovery
|
|
6
|
+
- [ ] `description` says **what + when + trigger words**, third person, and names the platform (iOS/SwiftUI).
|
|
7
|
+
- [ ] Description disambiguates from sibling skills (a reader can tell when to pick this vs a neighbor).
|
|
8
|
+
- [ ] Tested: in a fresh task that should trigger it, does the model actually reach for it? If not, sharpen the description.
|
|
9
|
+
|
|
10
|
+
## Leanness
|
|
11
|
+
- [ ] `SKILL.md` reads like an index, ~1 page (hard cap ~500 lines).
|
|
12
|
+
- [ ] Detail lives in bundled files **one level deep** — no nested-deeper references.
|
|
13
|
+
- [ ] Every line survives "would Claude err without this?" — no over-explaining, no restating what the model knows.
|
|
14
|
+
- [ ] Deterministic code is a **script**, not prose asking the model to regenerate it.
|
|
15
|
+
|
|
16
|
+
## Shape
|
|
17
|
+
- [ ] Layer is explicit (reference or workflow) and matches the content.
|
|
18
|
+
- [ ] **Reference** skill has **no numbered procedures** — heuristics + pointers only.
|
|
19
|
+
- [ ] **Workflow** skill's numbered steps are **only** the deterministic/irreversible spine, and it has a **verification gate**.
|
|
20
|
+
- [ ] Conventions **point to canonical files** rather than pasting code that will rot.
|
|
21
|
+
|
|
22
|
+
## Naming & wiring
|
|
23
|
+
- [ ] Name has **no platform prefix**; reference = aspect noun, workflow = verb-phrase; not vague/reserved.
|
|
24
|
+
- [ ] Registered in the plugin manifest (`<plugin>/.claude-plugin/plugin.json` `skills` array) and the marketplace version bumped (`.github/plugin/marketplace.json`).
|
|
25
|
+
- [ ] Listed in the `index` skill's route table.
|
|
26
|
+
|
|
27
|
+
## House rules
|
|
28
|
+
- [ ] No AI/Claude/Anthropic attribution anywhere in the skill or its examples.
|
|
29
|
+
- [ ] Escape hatches name the skill to hand off to when this one doesn't apply.
|
|
30
|
+
|
|
31
|
+
## High-confidence gate (new / substantially-changed skills)
|
|
32
|
+
- [ ] Ran the multi-architect audit ([audit.md](audit.md)) and looped fix → re-audit until `clearsBar` (no blockers/majors).
|