agileflow 4.0.0-alpha.2 → 4.0.0-alpha.21
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 +51 -0
- package/content/plugins/accessibility/plugin.yaml +14 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/SKILL.md +392 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/references/aria-patterns.md +528 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/references/testing-checklist.md +457 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/references/wcag-guide.md +683 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/workflows/audit-page.md +310 -0
- package/content/plugins/accessibility/skills/agileflow-accessibility/workflows/implement-accessible-component.md +479 -0
- package/content/plugins/ads/agents/ads-audit-budget.md +185 -0
- package/content/plugins/ads/agents/ads-audit-compliance.md +171 -0
- package/content/plugins/ads/agents/ads-audit-creative.md +168 -0
- package/content/plugins/ads/agents/ads-audit-google.md +227 -0
- package/content/plugins/ads/agents/ads-audit-meta.md +184 -0
- package/content/plugins/ads/agents/ads-audit-tracking.md +205 -0
- package/content/plugins/ads/agents/ads-consensus.md +410 -0
- package/content/plugins/ads/agents/ads-generate.md +152 -0
- package/content/plugins/ads/agents/ads-performance-tracker.md +212 -0
- package/content/plugins/ads/plugin.yaml +23 -4
- package/content/plugins/ads/skills/agileflow-ads/SKILL.md +218 -0
- package/content/plugins/ads/skills/agileflow-ads/references/ad-copy-formula-guide.md +131 -0
- package/content/plugins/ads/skills/agileflow-ads/references/audience-targeting-guide.md +137 -0
- package/content/plugins/ads/skills/agileflow-ads/references/bid-strategy-guide.md +115 -0
- package/content/plugins/ads/skills/agileflow-ads/references/platform-benchmarks.md +100 -0
- package/content/plugins/ads/skills/agileflow-ads/workflows/audit.md +118 -0
- package/content/plugins/ads/skills/agileflow-ads/workflows/generate.md +84 -0
- package/content/plugins/audit/agents/a11y-analyzer-aria.md +173 -0
- package/content/plugins/audit/agents/a11y-analyzer-forms.md +173 -0
- package/content/plugins/audit/agents/a11y-analyzer-keyboard.md +183 -0
- package/content/plugins/audit/agents/a11y-analyzer-semantic.md +169 -0
- package/content/plugins/audit/agents/a11y-analyzer-visual.md +172 -0
- package/content/plugins/audit/agents/a11y-consensus.md +249 -0
- package/content/plugins/audit/agents/accessibility.md +558 -0
- package/content/plugins/audit/agents/api-quality-analyzer-conventions.md +156 -0
- package/content/plugins/audit/agents/api-quality-analyzer-docs.md +184 -0
- package/content/plugins/audit/agents/api-quality-analyzer-errors.md +191 -0
- package/content/plugins/audit/agents/api-quality-analyzer-pagination.md +179 -0
- package/content/plugins/audit/agents/api-quality-analyzer-versioning.md +150 -0
- package/content/plugins/audit/agents/api-quality-consensus.md +217 -0
- package/content/plugins/audit/agents/api-validator.md +191 -0
- package/content/plugins/audit/agents/arch-analyzer-circular.md +156 -0
- package/content/plugins/audit/agents/arch-analyzer-complexity.md +193 -0
- package/content/plugins/audit/agents/arch-analyzer-coupling.md +152 -0
- package/content/plugins/audit/agents/arch-analyzer-layering.md +160 -0
- package/content/plugins/audit/agents/arch-analyzer-patterns.md +210 -0
- package/content/plugins/audit/agents/arch-consensus.md +228 -0
- package/content/plugins/audit/agents/browser-qa.md +342 -0
- package/content/plugins/audit/agents/code-reviewer.md +298 -0
- package/content/plugins/audit/agents/completeness-analyzer-api.md +199 -0
- package/content/plugins/audit/agents/completeness-analyzer-conditional.md +211 -0
- package/content/plugins/audit/agents/completeness-analyzer-handlers.md +166 -0
- package/content/plugins/audit/agents/completeness-analyzer-imports.md +165 -0
- package/content/plugins/audit/agents/completeness-analyzer-routes.md +190 -0
- package/content/plugins/audit/agents/completeness-analyzer-state.md +196 -0
- package/content/plugins/audit/agents/completeness-analyzer-stubs.md +206 -0
- package/content/plugins/audit/agents/completeness-consensus.md +295 -0
- package/content/plugins/audit/agents/error-analyzer.md +213 -0
- package/content/plugins/audit/agents/flow-analyzer-authorization.md +182 -0
- package/content/plugins/audit/agents/flow-analyzer-discovery.md +174 -0
- package/content/plugins/audit/agents/flow-analyzer-errors.md +186 -0
- package/content/plugins/audit/agents/flow-analyzer-feedback.md +185 -0
- package/content/plugins/audit/agents/flow-analyzer-navigation.md +177 -0
- package/content/plugins/audit/agents/flow-analyzer-persistence.md +193 -0
- package/content/plugins/audit/agents/flow-analyzer-wiring.md +169 -0
- package/content/plugins/audit/agents/flow-consensus.md +237 -0
- package/content/plugins/audit/agents/legal-analyzer-a11y.md +114 -0
- package/content/plugins/audit/agents/legal-analyzer-ai.md +121 -0
- package/content/plugins/audit/agents/legal-analyzer-consumer.md +114 -0
- package/content/plugins/audit/agents/legal-analyzer-content.md +117 -0
- package/content/plugins/audit/agents/legal-analyzer-international.md +119 -0
- package/content/plugins/audit/agents/legal-analyzer-licensing.md +119 -0
- package/content/plugins/audit/agents/legal-analyzer-privacy.md +112 -0
- package/content/plugins/audit/agents/legal-analyzer-security.md +116 -0
- package/content/plugins/audit/agents/legal-analyzer-terms.md +115 -0
- package/content/plugins/audit/agents/legal-consensus.md +250 -0
- package/content/plugins/audit/agents/logic-analyzer-edge.md +179 -0
- package/content/plugins/audit/agents/logic-analyzer-flow.md +264 -0
- package/content/plugins/audit/agents/logic-analyzer-invariant.md +215 -0
- package/content/plugins/audit/agents/logic-analyzer-race.md +280 -0
- package/content/plugins/audit/agents/logic-analyzer-type.md +227 -0
- package/content/plugins/audit/agents/logic-consensus.md +259 -0
- package/content/plugins/audit/agents/perf-analyzer-assets.md +182 -0
- package/content/plugins/audit/agents/perf-analyzer-bundle.md +173 -0
- package/content/plugins/audit/agents/perf-analyzer-caching.md +170 -0
- package/content/plugins/audit/agents/perf-analyzer-compute.md +173 -0
- package/content/plugins/audit/agents/perf-analyzer-memory.md +193 -0
- package/content/plugins/audit/agents/perf-analyzer-network.md +165 -0
- package/content/plugins/audit/agents/perf-analyzer-queries.md +162 -0
- package/content/plugins/audit/agents/perf-analyzer-rendering.md +168 -0
- package/content/plugins/audit/agents/perf-consensus.md +287 -0
- package/content/plugins/audit/agents/qa.md +820 -0
- package/content/plugins/audit/agents/quality-analyzer-comments.md +159 -0
- package/content/plugins/audit/agents/quality-analyzer-duplication.md +184 -0
- package/content/plugins/audit/agents/quality-analyzer-naming.md +160 -0
- package/content/plugins/audit/agents/quality-consensus.md +241 -0
- package/content/plugins/audit/agents/schema-validator.md +473 -0
- package/content/plugins/audit/agents/security-analyzer-api.md +210 -0
- package/content/plugins/audit/agents/security-analyzer-auth.md +169 -0
- package/content/plugins/audit/agents/security-analyzer-authz.md +180 -0
- package/content/plugins/audit/agents/security-analyzer-deps.md +153 -0
- package/content/plugins/audit/agents/security-analyzer-infra.md +184 -0
- package/content/plugins/audit/agents/security-analyzer-injection.md +155 -0
- package/content/plugins/audit/agents/security-analyzer-input.md +201 -0
- package/content/plugins/audit/agents/security-analyzer-secrets.md +183 -0
- package/content/plugins/audit/agents/security-consensus.md +283 -0
- package/content/plugins/audit/agents/test-analyzer-assertions.md +188 -0
- package/content/plugins/audit/agents/test-analyzer-coverage.md +189 -0
- package/content/plugins/audit/agents/test-analyzer-fragility.md +193 -0
- package/content/plugins/audit/agents/test-analyzer-integration.md +161 -0
- package/content/plugins/audit/agents/test-analyzer-maintenance.md +180 -0
- package/content/plugins/audit/agents/test-analyzer-mocking.md +188 -0
- package/content/plugins/audit/agents/test-analyzer-patterns.md +196 -0
- package/content/plugins/audit/agents/test-analyzer-structure.md +184 -0
- package/content/plugins/audit/agents/test-consensus.md +301 -0
- package/content/plugins/audit/agents/testing.md +561 -0
- package/content/plugins/audit/agents/ui-validator.md +344 -0
- package/content/plugins/audit/plugin.yaml +186 -5
- package/content/plugins/audit/skills/agileflow-audit/SKILL.md +113 -0
- package/content/plugins/audit/skills/agileflow-audit/references/audit-depth-guide.md +151 -0
- package/content/plugins/audit/skills/agileflow-audit/references/dependency-risk-guide.md +139 -0
- package/content/plugins/audit/skills/agileflow-audit/references/owasp-top10.md +120 -0
- package/content/plugins/audit/skills/agileflow-audit/references/performance-budget-guide.md +143 -0
- package/content/plugins/audit/skills/agileflow-audit/references/wcag-criteria.md +117 -0
- package/content/plugins/audit/skills/agileflow-audit/workflows/run-audit.md +52 -0
- package/content/plugins/audit/skills/agileflow-audit/workflows/tdd.md +66 -0
- package/content/plugins/core/agents/adr-writer.md +521 -0
- package/content/plugins/core/agents/epic-planner.md +520 -0
- package/content/plugins/core/agents/mentor.md +709 -0
- package/content/plugins/core/agents/orchestrator.md +776 -0
- package/content/plugins/core/agents/team-coordinator.md +334 -0
- package/content/plugins/core/agents/team-lead.md +181 -0
- package/content/plugins/core/agents/workspace-orchestrator.md +146 -0
- package/content/plugins/core/hooks/context-loader.js +31 -4
- package/content/plugins/core/hooks/damage-control-bash.js +10 -2
- package/content/plugins/core/hooks/damage-control-edit.js +4 -1
- package/content/plugins/core/hooks/damage-control-patterns.yaml +1 -1
- package/content/plugins/core/hooks/damage-control-write.js +4 -1
- package/content/plugins/core/hooks/{pre-compact-state.js → post-compact-state.js} +25 -8
- package/content/plugins/core/hooks/preferences-injector.js +352 -0
- package/content/plugins/core/plugin.yaml +24 -28
- package/content/plugins/core/skills/agileflow-adr/SKILL.md +34 -8
- package/content/plugins/core/skills/agileflow-adr/references/madr-format-guide.md +86 -0
- package/content/plugins/core/skills/agileflow-adr/workflows/write-adr.md +57 -0
- package/content/plugins/core/skills/agileflow-babysit-mentor/SKILL.md +94 -27
- package/content/plugins/core/skills/agileflow-babysit-mentor/references/mentor-decision-guide.md +81 -0
- package/content/plugins/core/skills/agileflow-babysit-mentor/workflows/mentor-session.md +79 -0
- package/content/plugins/core/skills/agileflow-epic-planner/SKILL.md +37 -7
- package/content/plugins/core/skills/agileflow-epic-planner/references/epic-sizing-guide.md +81 -0
- package/content/plugins/core/skills/agileflow-epic-planner/workflows/plan-epic.md +55 -0
- package/content/plugins/core/skills/agileflow-status-updater/SKILL.md +36 -20
- package/content/plugins/core/skills/agileflow-status-updater/references/status-transitions.md +89 -0
- package/content/plugins/core/skills/agileflow-status-updater/workflows/update-status.md +56 -0
- package/content/plugins/core/skills/agileflow-story-writer/SKILL.md +39 -114
- package/content/plugins/core/skills/agileflow-story-writer/references/estimation-reference.md +36 -0
- package/content/plugins/core/skills/agileflow-story-writer/references/story-template.md +92 -0
- package/content/plugins/core/skills/agileflow-story-writer/workflows/write-story.md +138 -0
- package/content/plugins/council/agents/council-advocate.md +223 -0
- package/content/plugins/council/agents/council-analyst.md +278 -0
- package/content/plugins/council/agents/council-compounder.md +204 -0
- package/content/plugins/council/agents/council-contrarian.md +217 -0
- package/content/plugins/council/agents/council-moonshot.md +217 -0
- package/content/plugins/council/agents/council-optimist.md +185 -0
- package/content/plugins/council/agents/council-revenue.md +200 -0
- package/content/plugins/council/agents/council-technical.md +218 -0
- package/content/plugins/council/agents/multi-expert.md +334 -0
- package/content/plugins/council/plugin.yaml +23 -4
- package/content/plugins/council/skills/agileflow-council/SKILL.md +102 -0
- package/content/plugins/council/skills/agileflow-council/references/decision-log-template.md +109 -0
- package/content/plugins/council/skills/agileflow-council/references/perspective-guide.md +104 -0
- package/content/plugins/council/skills/agileflow-council/references/when-to-convene-guide.md +112 -0
- package/content/plugins/council/skills/agileflow-council/workflows/convene.md +73 -0
- package/content/plugins/council/skills/agileflow-council/workflows/multi-expert.md +75 -0
- package/content/plugins/database/plugin.yaml +14 -0
- package/content/plugins/database/skills/agileflow-database/SKILL.md +284 -0
- package/content/plugins/database/skills/agileflow-database/references/indexing-guide.md +313 -0
- package/content/plugins/database/skills/agileflow-database/references/migration-guide.md +328 -0
- package/content/plugins/database/skills/agileflow-database/references/schema-design-guide.md +467 -0
- package/content/plugins/database/skills/agileflow-database/workflows/design-schema.md +213 -0
- package/content/plugins/database/skills/agileflow-database/workflows/optimize-query.md +253 -0
- package/content/plugins/debugging/plugin.yaml +14 -0
- package/content/plugins/debugging/skills/agileflow-debug/SKILL.md +236 -0
- package/content/plugins/debugging/skills/agileflow-debug/references/common-patterns.md +350 -0
- package/content/plugins/debugging/skills/agileflow-debug/references/debugging-strategies.md +328 -0
- package/content/plugins/debugging/skills/agileflow-debug/workflows/debug-issue.md +187 -0
- package/content/plugins/debugging/skills/agileflow-debug/workflows/reproduce-bug.md +194 -0
- package/content/plugins/delivery/agents/ci.md +547 -0
- package/content/plugins/delivery/agents/devops.md +789 -0
- package/content/plugins/delivery/plugin.yaml +19 -0
- package/content/plugins/delivery/skills/agileflow-delivery/SKILL.md +111 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/changelog-format-guide.md +133 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/ci-pipeline-guide.md +158 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/pr-checklist-guide.md +133 -0
- package/content/plugins/delivery/skills/agileflow-delivery/references/release-checklist.md +142 -0
- package/content/plugins/delivery/skills/agileflow-delivery/workflows/changelog.md +72 -0
- package/content/plugins/delivery/skills/agileflow-delivery/workflows/deploy.md +74 -0
- package/content/plugins/delivery/skills/agileflow-delivery/workflows/pr.md +75 -0
- package/content/plugins/docs/agents/documentation.md +544 -0
- package/content/plugins/docs/agents/readme-updater.md +640 -0
- package/content/plugins/docs/plugin.yaml +19 -0
- package/content/plugins/docs/skills/agileflow-docs/SKILL.md +106 -0
- package/content/plugins/docs/skills/agileflow-docs/references/api-doc-template.md +167 -0
- package/content/plugins/docs/skills/agileflow-docs/references/doc-types-guide.md +141 -0
- package/content/plugins/docs/skills/agileflow-docs/references/readme-template.md +156 -0
- package/content/plugins/docs/skills/agileflow-docs/workflows/readme-sync.md +57 -0
- package/content/plugins/docs/skills/agileflow-docs/workflows/sync.md +64 -0
- package/content/plugins/engineering/agents/api.md +718 -0
- package/content/plugins/engineering/agents/codebase-query.md +285 -0
- package/content/plugins/engineering/agents/compliance.md +559 -0
- package/content/plugins/engineering/agents/database.md +644 -0
- package/content/plugins/engineering/agents/integrations.md +644 -0
- package/content/plugins/engineering/agents/mobile.md +552 -0
- package/content/plugins/engineering/agents/monitoring.md +585 -0
- package/content/plugins/engineering/agents/performance.md +529 -0
- package/content/plugins/engineering/agents/refactor.md +592 -0
- package/content/plugins/engineering/agents/security.md +524 -0
- package/content/plugins/engineering/agents/ui.md +1336 -0
- package/content/plugins/engineering/plugin.yaml +37 -0
- package/content/plugins/engineering/skills/agileflow-engineering/SKILL.md +127 -0
- package/content/plugins/engineering/skills/agileflow-engineering/references/code-review-guide.md +126 -0
- package/content/plugins/engineering/skills/agileflow-engineering/references/domain-routing-guide.md +89 -0
- package/content/plugins/engineering/skills/agileflow-engineering/references/refactoring-guide.md +136 -0
- package/content/plugins/engineering/skills/agileflow-engineering/workflows/diagnose.md +63 -0
- package/content/plugins/engineering/skills/agileflow-engineering/workflows/impact.md +60 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-features.md +179 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-growth.md +169 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-integration.md +181 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-market.md +150 -0
- package/content/plugins/ideation/agents/brainstorm-analyzer-ux.md +180 -0
- package/content/plugins/ideation/agents/brainstorm-consensus.md +245 -0
- package/content/plugins/ideation/agents/design.md +568 -0
- package/content/plugins/ideation/agents/product.md +582 -0
- package/content/plugins/ideation/plugin.yaml +31 -0
- package/content/plugins/ideation/skills/agileflow-ideation/SKILL.md +109 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/brainstorm-techniques.md +138 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/competitive-analysis-template.md +148 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/feature-prioritization-guide.md +147 -0
- package/content/plugins/ideation/skills/agileflow-ideation/references/user-story-patterns.md +152 -0
- package/content/plugins/ideation/skills/agileflow-ideation/workflows/features.md +65 -0
- package/content/plugins/ideation/skills/agileflow-ideation/workflows/ideate.md +54 -0
- package/content/plugins/migration/agents/datamigration.md +757 -0
- package/content/plugins/migration/plugin.yaml +17 -0
- package/content/plugins/migration/skills/agileflow-migration/SKILL.md +106 -0
- package/content/plugins/migration/skills/agileflow-migration/references/data-validation-checklist.md +154 -0
- package/content/plugins/migration/skills/agileflow-migration/references/migration-patterns.md +209 -0
- package/content/plugins/migration/skills/agileflow-migration/references/rollback-playbook.md +171 -0
- package/content/plugins/migration/skills/agileflow-migration/references/version-compatibility-matrix.md +155 -0
- package/content/plugins/migration/skills/agileflow-migration/workflows/plan.md +73 -0
- package/content/plugins/migration/skills/agileflow-migration/workflows/validate.md +71 -0
- package/content/plugins/performance/plugin.yaml +14 -0
- package/content/plugins/performance/skills/agileflow-performance/SKILL.md +224 -0
- package/content/plugins/performance/skills/agileflow-performance/references/optimization-patterns.md +554 -0
- package/content/plugins/performance/skills/agileflow-performance/references/profiling-guide.md +383 -0
- package/content/plugins/performance/skills/agileflow-performance/references/web-vitals-guide.md +360 -0
- package/content/plugins/performance/skills/agileflow-performance/workflows/improve-web-vitals.md +344 -0
- package/content/plugins/performance/skills/agileflow-performance/workflows/profile-and-fix.md +254 -0
- package/content/plugins/planning/agents/analytics.md +670 -0
- package/content/plugins/planning/agents/rlm-subcore.md +215 -0
- package/content/plugins/planning/plugin.yaml +19 -0
- package/content/plugins/planning/skills/agileflow-planning/SKILL.md +111 -0
- package/content/plugins/planning/skills/agileflow-planning/references/estimation-guide.md +114 -0
- package/content/plugins/planning/skills/agileflow-planning/references/rpi-workflow.md +119 -0
- package/content/plugins/planning/skills/agileflow-planning/references/sprint-planning-guide.md +145 -0
- package/content/plugins/planning/skills/agileflow-planning/workflows/impact.md +63 -0
- package/content/plugins/planning/skills/agileflow-planning/workflows/rpi.md +104 -0
- package/content/plugins/psychology/plugin.yaml +14 -0
- package/content/plugins/psychology/skills/agileflow-retention/SKILL.md +252 -0
- package/content/plugins/psychology/skills/agileflow-retention/references/competitor-analysis.md +240 -0
- package/content/plugins/psychology/skills/agileflow-retention/references/psychology-models.md +349 -0
- package/content/plugins/psychology/skills/agileflow-retention/references/retention-patterns.md +279 -0
- package/content/plugins/psychology/skills/agileflow-retention/workflows/design-retention-feature.md +287 -0
- package/content/plugins/psychology/skills/agileflow-retention/workflows/retention-audit.md +259 -0
- package/content/plugins/refactoring/plugin.yaml +14 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/SKILL.md +235 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/references/refactoring-patterns.md +405 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/references/safety-checks.md +177 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/workflows/extract-module.md +226 -0
- package/content/plugins/refactoring/skills/agileflow-refactor/workflows/safe-refactor.md +169 -0
- package/content/plugins/research/agents/research.md +503 -0
- package/content/plugins/research/plugin.yaml +17 -0
- package/content/plugins/research/skills/agileflow-research/SKILL.md +110 -0
- package/content/plugins/research/skills/agileflow-research/references/knowledge-decay-guide.md +121 -0
- package/content/plugins/research/skills/agileflow-research/references/research-prompt-guide.md +141 -0
- package/content/plugins/research/skills/agileflow-research/references/synthesis-template.md +154 -0
- package/content/plugins/research/skills/agileflow-research/workflows/analyze.md +60 -0
- package/content/plugins/research/skills/agileflow-research/workflows/ask.md +64 -0
- package/content/plugins/research/skills/agileflow-research/workflows/import.md +66 -0
- package/content/plugins/research/skills/agileflow-research/workflows/synthesize.md +66 -0
- package/content/plugins/reviews/plugin.yaml +14 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/SKILL.md +241 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/references/review-checklist.md +200 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/references/security-patterns.md +328 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/workflows/review-pr.md +153 -0
- package/content/plugins/reviews/skills/agileflow-pr-reviewer/workflows/security-review.md +177 -0
- package/content/plugins/seo/agents/seo-analyzer-content.md +169 -0
- package/content/plugins/seo/agents/seo-analyzer-images.md +198 -0
- package/content/plugins/seo/agents/seo-analyzer-performance.md +217 -0
- package/content/plugins/seo/agents/seo-analyzer-schema.md +184 -0
- package/content/plugins/seo/agents/seo-analyzer-sitemap.md +177 -0
- package/content/plugins/seo/agents/seo-analyzer-technical.md +151 -0
- package/content/plugins/seo/agents/seo-consensus.md +304 -0
- package/content/plugins/seo/plugin.yaml +19 -4
- package/content/plugins/seo/skills/agileflow-seo/SKILL.md +188 -0
- package/content/plugins/seo/skills/agileflow-seo/references/cwv-thresholds.md +110 -0
- package/content/plugins/seo/skills/agileflow-seo/references/eeat-framework.md +144 -0
- package/content/plugins/seo/skills/agileflow-seo/references/keyword-research-guide.md +125 -0
- package/content/plugins/seo/skills/agileflow-seo/references/schema-types.md +139 -0
- package/content/plugins/seo/skills/agileflow-seo/references/technical-seo-checklist.md +139 -0
- package/content/plugins/seo/skills/agileflow-seo/workflows/audit.md +98 -0
- package/content/plugins/seo/skills/agileflow-seo/workflows/page.md +118 -0
- package/content/plugins/testing/plugin.yaml +16 -0
- package/content/plugins/testing/skills/agileflow-test-writer/SKILL.md +260 -0
- package/content/plugins/testing/skills/agileflow-test-writer/references/coverage-targets.md +239 -0
- package/content/plugins/testing/skills/agileflow-test-writer/references/test-patterns.md +420 -0
- package/content/plugins/testing/skills/agileflow-test-writer/workflows/add-coverage.md +154 -0
- package/content/plugins/testing/skills/agileflow-test-writer/workflows/write-tests-from-ac.md +225 -0
- package/package.json +2 -2
- package/src/cli/commands/doctor.js +818 -30
- package/src/cli/commands/hook.js +17 -14
- package/src/cli/commands/launch.js +1454 -0
- package/src/cli/commands/learn.js +149 -0
- package/src/cli/commands/plugins.js +113 -0
- package/src/cli/commands/setup.js +455 -110
- package/src/cli/commands/skills.js +324 -0
- package/src/cli/commands/status.js +8 -10
- package/src/cli/commands/update.js +76 -15
- package/src/cli/index.js +90 -26
- package/src/cli/wizard/babysit-mode-picker.js +192 -0
- package/src/cli/wizard/behaviors-picker.js +208 -54
- package/src/cli/wizard/ide-picker.js +40 -28
- package/src/cli/wizard/install-scope-picker.js +57 -0
- package/src/cli/wizard/launch-alias-picker.js +50 -0
- package/src/cli/wizard/launch-cli-picker.js +129 -0
- package/src/cli/wizard/launch-tmux-picker.js +133 -0
- package/src/cli/wizard/learnings-picker.js +40 -0
- package/src/cli/wizard/plugin-picker.js +47 -16
- package/src/lib/brand.js +116 -0
- package/src/lib/errors.js +120 -0
- package/src/lib/path-check.js +39 -0
- package/src/runtime/config/defaults.js +22 -17
- package/src/runtime/config/loader.js +77 -8
- package/src/runtime/config/schema.json +43 -16
- package/src/runtime/config/writer.js +3 -1
- package/src/runtime/ide/babysit-skill.js +202 -0
- package/src/runtime/ide/capabilities.js +84 -29
- package/src/runtime/ide/claude-code-content.js +177 -0
- package/src/runtime/ide/claude-code-settings.js +67 -29
- package/src/runtime/ide/claude-code-skills.js +47 -32
- package/src/runtime/ide/codex-config.js +295 -0
- package/src/runtime/installer/install.js +252 -24
- package/src/runtime/launch/alias-installer.js +191 -0
- package/src/runtime/launch/cli-resume.js +244 -0
- package/src/runtime/launch/closed-windows.js +338 -0
- package/src/runtime/launch/defaults.js +66 -0
- package/src/runtime/launch/detect-clis.js +69 -0
- package/src/runtime/launch/doctor.js +464 -0
- package/src/runtime/launch/exec-wrapper.js +114 -0
- package/src/runtime/launch/parallel-session.js +247 -0
- package/src/runtime/launch/prefs.js +211 -0
- package/src/runtime/launch/project-prefs.js +234 -0
- package/src/runtime/launch/resolve-cli.js +56 -0
- package/src/runtime/launch/restore.js +152 -0
- package/src/runtime/launch/schema.json +75 -0
- package/src/runtime/launch/session-lifecycle.js +313 -0
- package/src/runtime/launch/session-registry.js +401 -0
- package/src/runtime/launch/spawn.js +103 -0
- package/src/runtime/launch/tabs.js +350 -0
- package/src/runtime/launch/tmux.js +764 -0
- package/src/runtime/launch/worktree.js +260 -0
- package/src/runtime/plugins/registry.js +16 -11
- package/src/runtime/plugins/validator.js +57 -43
- package/src/runtime/skills/learnings.js +308 -0
- package/content/plugins/core/hooks/babysit-mentor-injector.js +0 -55
- package/src/cli/wizard/personalization.js +0 -64
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tab (tmux window) support for `agileflow launch`.
|
|
3
|
+
*
|
|
4
|
+
* Ports the v3 `af` script's tab strip + window keybinds onto v4's
|
|
5
|
+
* preset/runner architecture.
|
|
6
|
+
*
|
|
7
|
+
* Two responsibilities, kept pure:
|
|
8
|
+
*
|
|
9
|
+
* 1. `buildTabFormat({ theme, tmuxVersion })` — returns the string
|
|
10
|
+
* that goes into `status-format[1]`. On tmux 3.2+ this is a
|
|
11
|
+
* 5-tier cascading format that dynamically compacts as more
|
|
12
|
+
* windows open. On older tmux it falls back to a single-tier
|
|
13
|
+
* themed format (the `#{e|...}` numeric operators don't exist
|
|
14
|
+
* before 3.2 and would render as literal text).
|
|
15
|
+
*
|
|
16
|
+
* 2. `TAB_KEYBINDS` — the keybind entries (mergeable into the
|
|
17
|
+
* `default` preset in tmux.js) that wire Alt+c / Alt+1..9 /
|
|
18
|
+
* Alt+, / Alt+w / Alt+W / Alt+T to window operations. Bindings
|
|
19
|
+
* that need to bookkeep (close + restore) call back into
|
|
20
|
+
* `agileflow launch __close-window` / `__restore-window` so the
|
|
21
|
+
* closed-windows log stays in sync.
|
|
22
|
+
*
|
|
23
|
+
* Out of scope here (explicitly): the auto-naming background watcher
|
|
24
|
+
* v3 had for Claude task names. Users rename with Alt+, when they
|
|
25
|
+
* care; tmux's default name (the running command) covers the rest.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* v3-equivalent theme: Tokyo-Night-ish dark background with the
|
|
30
|
+
* AgileFlow brand orange #e8683a as the active-tab accent. Held as a
|
|
31
|
+
* const rather than reading from prefs so the runtime doesn't have to
|
|
32
|
+
* thread the cascade through every keybind apply. A future prefs key
|
|
33
|
+
* `tmux.theme = "auto"` can override at the call site.
|
|
34
|
+
*
|
|
35
|
+
* Color tokens follow tmux's `#[fg=...]` / `#[bg=...]` style spec.
|
|
36
|
+
*
|
|
37
|
+
* @typedef {Object} TabTheme
|
|
38
|
+
* @property {string} activeFg - text color in active tab number chip
|
|
39
|
+
* @property {string} activeBg - background of active tab number chip (brand)
|
|
40
|
+
* @property {string} activeNameFg - text color in active tab name segment
|
|
41
|
+
* @property {string} activeNameBg - background of active tab name segment
|
|
42
|
+
* @property {string} inactiveFg - inactive tab text
|
|
43
|
+
* @property {string} inactiveDim - extra-dim inactive (tier 4 fallback)
|
|
44
|
+
* @property {string} stripBg - tab strip background
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/** @type {TabTheme} */
|
|
48
|
+
const DEFAULT_TAB_THEME = {
|
|
49
|
+
activeFg: "#1a1b26",
|
|
50
|
+
activeBg: "#e8683a",
|
|
51
|
+
activeNameFg: "#e0e0e0",
|
|
52
|
+
activeNameBg: "#2d2f3a",
|
|
53
|
+
inactiveFg: "#8a8a8a",
|
|
54
|
+
inactiveDim: "#565a6e",
|
|
55
|
+
stripBg: "#1a1b26",
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Tier table. Each entry is one branch of the cascading
|
|
60
|
+
* `#{e|<=:#{e|*:session_windows,maxAvgWidth},client_width}` check —
|
|
61
|
+
* the most generous tier whose `session_windows * maxAvgWidth` fits
|
|
62
|
+
* the current client width wins. Pure data; consumed by
|
|
63
|
+
* `buildTabFormat` to assemble the format string.
|
|
64
|
+
*
|
|
65
|
+
* `activeName` / `inactiveName` are character budgets passed to tmux's
|
|
66
|
+
* `#{=N:window_name}` truncation. 0 means "drop the name entirely,
|
|
67
|
+
* show only the index".
|
|
68
|
+
*
|
|
69
|
+
* Constants chosen to match v3's empirically-tuned breakpoints.
|
|
70
|
+
*
|
|
71
|
+
* @type {Array<{ maxAvgWidth: number, activeName: number, inactiveName: number, label: string }>}
|
|
72
|
+
*/
|
|
73
|
+
const TIERS = [
|
|
74
|
+
{ maxAvgWidth: 21, activeName: 15, inactiveName: 8, label: "lavish" },
|
|
75
|
+
{ maxAvgWidth: 14, activeName: 8, inactiveName: 6, label: "normal" },
|
|
76
|
+
{ maxAvgWidth: 10, activeName: 4, inactiveName: 3, label: "cramped" },
|
|
77
|
+
{ maxAvgWidth: 7, activeName: 0, inactiveName: 0, label: "numeric" },
|
|
78
|
+
{ maxAvgWidth: 0, activeName: 0, inactiveName: 0, label: "fallback" },
|
|
79
|
+
];
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* tmux 3.2 introduced the `#{e|OP:a,b}` numeric operators that the
|
|
83
|
+
* cascading tier format depends on. Older tmux would render `#{e|...}`
|
|
84
|
+
* as literal text, so on those we emit the single-tier format used
|
|
85
|
+
* by v3 before commit b17fb803.
|
|
86
|
+
*/
|
|
87
|
+
const COMPACTION_MIN_TMUX = { major: 3, minor: 2 };
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Parse a `tmux -V` output string like "tmux 3.3a\n" or "tmux next-3.4".
|
|
91
|
+
* Returns null when the input isn't recognizable. Re-implemented here
|
|
92
|
+
* (instead of imported from doctor.js) to keep tabs.js self-contained
|
|
93
|
+
* for testing — both copies use the same regex and behave identically.
|
|
94
|
+
*
|
|
95
|
+
* @param {string} raw
|
|
96
|
+
* @returns {{ major: number, minor: number } | null}
|
|
97
|
+
*/
|
|
98
|
+
function parseTmuxVersion(raw) {
|
|
99
|
+
if (typeof raw !== "string") return null;
|
|
100
|
+
const match = raw.match(/(\d+)\.(\d+)/);
|
|
101
|
+
if (!match) return null;
|
|
102
|
+
return { major: Number(match[1]), minor: Number(match[2]) };
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @param {{ major: number, minor: number }} a
|
|
107
|
+
* @param {{ major: number, minor: number }} b
|
|
108
|
+
* @returns {number}
|
|
109
|
+
*/
|
|
110
|
+
function compareVersions(a, b) {
|
|
111
|
+
if (a.major !== b.major) return a.major - b.major;
|
|
112
|
+
return a.minor - b.minor;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Whether the supplied tmux version supports the cascading compaction
|
|
117
|
+
* format. Treat unknown (null) as "too old" so we degrade rather than
|
|
118
|
+
* emit a broken format string.
|
|
119
|
+
*
|
|
120
|
+
* @param {{ major: number, minor: number } | null} v
|
|
121
|
+
* @returns {boolean}
|
|
122
|
+
*/
|
|
123
|
+
function supportsCompaction(v) {
|
|
124
|
+
if (!v) return false;
|
|
125
|
+
return compareVersions(v, COMPACTION_MIN_TMUX) >= 0;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Active-tab segment for a given tier. Pure string assembly — no tmux
|
|
130
|
+
* runtime involved. Returns the full `#[...]#{=N:window_name}` chunk
|
|
131
|
+
* that goes inside the active-window branch of `#{?window_active,...,...}`.
|
|
132
|
+
*
|
|
133
|
+
* @param {{ maxAvgWidth: number, activeName: number }} tier
|
|
134
|
+
* @param {TabTheme} t
|
|
135
|
+
* @returns {string}
|
|
136
|
+
*/
|
|
137
|
+
function activeSegment(tier, t) {
|
|
138
|
+
if (tier.activeName === 0) {
|
|
139
|
+
// Numeric only — single chip, no name segment.
|
|
140
|
+
return `#[fg=${t.activeFg} bg=${t.activeBg} bold]#I#[fg=default bg=default]`;
|
|
141
|
+
}
|
|
142
|
+
// Two-segment chip: orange index, dark name pill, then back to strip bg.
|
|
143
|
+
// Spacing widens at the lavish tier (` ${idx} ${name} ` with two
|
|
144
|
+
// leading + two trailing spaces); shrinks to a single space pair at
|
|
145
|
+
// the cramped tier so we stay visually aligned with the inactive
|
|
146
|
+
// tabs but don't overflow.
|
|
147
|
+
const idxPad = tier.maxAvgWidth >= 21 ? " " : " ";
|
|
148
|
+
return (
|
|
149
|
+
`#[fg=${t.activeFg} bg=${t.activeBg} bold]${idxPad}#I${idxPad}` +
|
|
150
|
+
`#[fg=${t.activeBg} bg=${t.activeNameBg}]` +
|
|
151
|
+
`#[fg=${t.activeNameFg}] #{=${tier.activeName}:window_name} ` +
|
|
152
|
+
`#[bg=${t.stripBg} fg=${t.activeNameBg}]`
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Inactive-tab segment for a given tier. Same shape as activeSegment
|
|
158
|
+
* but rendered dimmer; the numeric-only fallback uses inactiveDim to
|
|
159
|
+
* push it visually further back.
|
|
160
|
+
*
|
|
161
|
+
* @param {{ maxAvgWidth: number, inactiveName: number, label: string }} tier
|
|
162
|
+
* @param {TabTheme} t
|
|
163
|
+
* @returns {string}
|
|
164
|
+
*/
|
|
165
|
+
function inactiveSegment(tier, t) {
|
|
166
|
+
if (tier.inactiveName === 0) {
|
|
167
|
+
const fg = tier.label === "fallback" ? t.inactiveDim : t.inactiveFg;
|
|
168
|
+
return `#[fg=${fg}]#I `;
|
|
169
|
+
}
|
|
170
|
+
const pad = tier.maxAvgWidth >= 21 ? " " : " ";
|
|
171
|
+
// `#{=|N|...:window_name}` is tmux's "truncate with ellipsis" form;
|
|
172
|
+
// visually distinguishes "I shortened this" from "this name happens
|
|
173
|
+
// to be N chars". Cramped tier uses plain truncation (no ellipsis)
|
|
174
|
+
// because three chars + `...` would leave no actual name visible.
|
|
175
|
+
const truncated =
|
|
176
|
+
tier.inactiveName >= 6
|
|
177
|
+
? `#{=|${tier.inactiveName}|...:window_name}`
|
|
178
|
+
: `#{=${tier.inactiveName}:window_name}`;
|
|
179
|
+
return `#[fg=${t.inactiveFg}]${pad}#I:${truncated}${pad}`;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Build the cascading conditional format for tmux 3.2+. Assembled as
|
|
184
|
+
* nested `#{?cond,yes,no}` so each tier's body is the chunk the
|
|
185
|
+
* tier picks, and the no-branch chains into the next narrower tier.
|
|
186
|
+
*
|
|
187
|
+
* @param {Array<string>} segments - tier body strings (active or inactive)
|
|
188
|
+
* @returns {string}
|
|
189
|
+
*/
|
|
190
|
+
function chainTiers(segments) {
|
|
191
|
+
// segments[] aligns with TIERS[] one-for-one. The last segment is
|
|
192
|
+
// the fallback — emitted bare (no condition wrapper). Each earlier
|
|
193
|
+
// tier wraps the suffix in `#{?cond,segment,rest}`.
|
|
194
|
+
let acc = segments[segments.length - 1];
|
|
195
|
+
for (let i = segments.length - 2; i >= 0; i--) {
|
|
196
|
+
const tier = TIERS[i];
|
|
197
|
+
// `e|<=:a,b` → a <= b. `e|*:x,y` → x * y. Combined: tier wins
|
|
198
|
+
// when session_windows * maxAvgWidth <= client_width.
|
|
199
|
+
const cond = `#{e|<=:#{e|*:#{session_windows},${tier.maxAvgWidth}},#{client_width}}`;
|
|
200
|
+
acc = `#{?${cond},${segments[i]},${acc}}`;
|
|
201
|
+
}
|
|
202
|
+
return acc;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Single-tier format for tmux < 3.2 (no `#{e|...}` operators). Uses
|
|
207
|
+
* the "lavish" tier's segments so a small number of tabs looks the
|
|
208
|
+
* same on old and new tmux; large counts will visually overflow on
|
|
209
|
+
* old tmux, but they won't break — tmux just wraps or clips.
|
|
210
|
+
*
|
|
211
|
+
* @param {TabTheme} t
|
|
212
|
+
* @returns {string}
|
|
213
|
+
*/
|
|
214
|
+
function legacyFormat(t) {
|
|
215
|
+
const a = activeSegment(TIERS[0], t);
|
|
216
|
+
const i = inactiveSegment(TIERS[0], t);
|
|
217
|
+
return `#[bg=${t.stripBg}]#{W:#{?window_active,${a},${i}}}`;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Build the `status-format[1]` string for the tab strip.
|
|
222
|
+
*
|
|
223
|
+
* On tmux 3.2+: cascading 5-tier dynamic compaction (T0 lavish → T4
|
|
224
|
+
* numeric fallback) selected at render time by tmux based on
|
|
225
|
+
* `session_windows * maxAvgWidth <= client_width`.
|
|
226
|
+
*
|
|
227
|
+
* On older tmux: single-tier themed format (no `#{e|...}` operators).
|
|
228
|
+
*
|
|
229
|
+
* @param {{
|
|
230
|
+
* tmuxVersion?: { major: number, minor: number } | null,
|
|
231
|
+
* theme?: Partial<TabTheme>,
|
|
232
|
+
* }} [opts]
|
|
233
|
+
* @returns {string}
|
|
234
|
+
*/
|
|
235
|
+
function buildTabFormat(opts = {}) {
|
|
236
|
+
const theme = { ...DEFAULT_TAB_THEME, ...(opts.theme || {}) };
|
|
237
|
+
const version = opts.tmuxVersion === undefined ? null : opts.tmuxVersion;
|
|
238
|
+
if (!supportsCompaction(version)) return legacyFormat(theme);
|
|
239
|
+
|
|
240
|
+
const actives = TIERS.map((tier) => activeSegment(tier, theme));
|
|
241
|
+
const inactives = TIERS.map((tier) => inactiveSegment(tier, theme));
|
|
242
|
+
const active = chainTiers(actives);
|
|
243
|
+
const inactive = chainTiers(inactives);
|
|
244
|
+
return `#[bg=${theme.stripBg}]#{W:#{?window_active,${active},${inactive}}}`;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Tab keybinds. Merged into the `default` preset in tmux.js. `Alt+w`
|
|
249
|
+
* and `Alt+T` reach back into the agileflow binary so the
|
|
250
|
+
* closed-windows log stays in sync with the tmux state — pure
|
|
251
|
+
* `kill-window` would close the tab but `Alt+T` later couldn't
|
|
252
|
+
* resurrect it. `%AGILEFLOW%` is substituted at apply time by
|
|
253
|
+
* `substituteBinding` in tmux.js.
|
|
254
|
+
*
|
|
255
|
+
* Alt+1..9 are generated programmatically rather than nine copy-paste
|
|
256
|
+
* entries, so adjusting the chip (e.g., adding a hint) is one edit.
|
|
257
|
+
*
|
|
258
|
+
* @type {Array<{ key: string, action: string[], hint: string }>}
|
|
259
|
+
*/
|
|
260
|
+
const TAB_KEYBINDS = [
|
|
261
|
+
{
|
|
262
|
+
// Alt+t = new tab. Matches Chrome/Safari's Ctrl+T / Cmd+T —
|
|
263
|
+
// browser muscle memory carries straight over.
|
|
264
|
+
key: "M-t",
|
|
265
|
+
action: ["new-window"],
|
|
266
|
+
hint: "Alt+t → new tab",
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
// -I prefills the prompt with the current name so the user can
|
|
270
|
+
// edit rather than retype. %% substitutes the user's final input.
|
|
271
|
+
key: "M-,",
|
|
272
|
+
action: ["command-prompt", "-I", "#W", "rename-window '%%'"],
|
|
273
|
+
hint: "Alt+, → rename current tab",
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
// Direct kill-window — no CLI roundtrip. The previous
|
|
277
|
+
// run-shell-to-agileflow approach added Node-startup latency
|
|
278
|
+
// (150ms+) and could no-op silently if the binary path resolution
|
|
279
|
+
// returned stale state (e.g. after npx cache cleanup). Killing
|
|
280
|
+
// via tmux directly is instant and bulletproof. Undo is provided
|
|
281
|
+
// by Alt+Shift+T (which reads the closed-windows log populated by
|
|
282
|
+
// the window-unlinked hook installed in applyTabFormat).
|
|
283
|
+
key: "M-w",
|
|
284
|
+
action: ["kill-window"],
|
|
285
|
+
hint: "Alt+w → close current tab (Alt+Shift+T to undo)",
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
// tmux's built-in window picker. -Z zooms (full-screen the picker),
|
|
289
|
+
// -w sets window-mode (vs the default session-mode tree).
|
|
290
|
+
key: "M-W",
|
|
291
|
+
action: ["choose-tree", "-Zw"],
|
|
292
|
+
hint: "Alt+W → tab picker",
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
// Pass session name explicitly so the callback restores into the
|
|
296
|
+
// session the user actually triggered from — works even if the
|
|
297
|
+
// active session shifts before run-shell fires.
|
|
298
|
+
key: "M-T",
|
|
299
|
+
action: [
|
|
300
|
+
"run-shell",
|
|
301
|
+
"%AGILEFLOW% launch __restore-window #{session_name}",
|
|
302
|
+
],
|
|
303
|
+
hint: "Alt+T → reopen last closed tab",
|
|
304
|
+
},
|
|
305
|
+
// Numeric switchers Alt+1..Alt+9 → select-window -t :N
|
|
306
|
+
...[1, 2, 3, 4, 5, 6, 7, 8, 9].map((n) => ({
|
|
307
|
+
key: `M-${n}`,
|
|
308
|
+
action: ["select-window", "-t", `:${n}`],
|
|
309
|
+
hint: `Alt+${n} → switch to tab ${n}`,
|
|
310
|
+
})),
|
|
311
|
+
// Alt+0 jumps to the FIRST tab. tmux's `:$` (last window) requires
|
|
312
|
+
// shell escaping in some terminal setups and is non-standard; "0
|
|
313
|
+
// means first" is more universal across editors/terminals.
|
|
314
|
+
{
|
|
315
|
+
key: "M-0",
|
|
316
|
+
action: ["select-window", "-t", ":1"],
|
|
317
|
+
hint: "Alt+0 → switch to first tab",
|
|
318
|
+
},
|
|
319
|
+
// Browser-style cycling. Bind M-S-Tab AND M-BTab — terminals split
|
|
320
|
+
// on which escape sequence they emit for Shift+Tab, so binding both
|
|
321
|
+
// covers either path. Note: some window managers (GNOME, KDE)
|
|
322
|
+
// intercept Alt+Tab before it reaches tmux; works fine in fullscreen
|
|
323
|
+
// terminals on macOS and most tiling WMs.
|
|
324
|
+
{
|
|
325
|
+
key: "M-Tab",
|
|
326
|
+
action: ["next-window"],
|
|
327
|
+
hint: "Alt+Tab → next tab",
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
key: "M-S-Tab",
|
|
331
|
+
action: ["previous-window"],
|
|
332
|
+
hint: "Alt+Shift+Tab → previous tab",
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
key: "M-BTab",
|
|
336
|
+
action: ["previous-window"],
|
|
337
|
+
hint: "Alt+Shift+Tab → previous tab (alt encoding)",
|
|
338
|
+
},
|
|
339
|
+
];
|
|
340
|
+
|
|
341
|
+
module.exports = {
|
|
342
|
+
DEFAULT_TAB_THEME,
|
|
343
|
+
TIERS,
|
|
344
|
+
COMPACTION_MIN_TMUX,
|
|
345
|
+
TAB_KEYBINDS,
|
|
346
|
+
parseTmuxVersion,
|
|
347
|
+
compareVersions,
|
|
348
|
+
supportsCompaction,
|
|
349
|
+
buildTabFormat,
|
|
350
|
+
};
|