shipwright-cli 1.7.1 → 1.10.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/.claude/agents/code-reviewer.md +90 -0
- package/.claude/agents/devops-engineer.md +142 -0
- package/.claude/agents/pipeline-agent.md +80 -0
- package/.claude/agents/shell-script-specialist.md +150 -0
- package/.claude/agents/test-specialist.md +196 -0
- package/.claude/hooks/post-tool-use.sh +45 -0
- package/.claude/hooks/pre-tool-use.sh +25 -0
- package/.claude/hooks/session-started.sh +37 -0
- package/README.md +212 -814
- package/claude-code/CLAUDE.md.shipwright +54 -0
- package/claude-code/hooks/notify-idle.sh +2 -2
- package/claude-code/hooks/session-start.sh +24 -0
- package/claude-code/hooks/task-completed.sh +6 -2
- package/claude-code/settings.json.template +12 -0
- package/dashboard/public/app.js +4422 -0
- package/dashboard/public/index.html +816 -0
- package/dashboard/public/styles.css +4755 -0
- package/dashboard/server.ts +4315 -0
- package/docs/KNOWN-ISSUES.md +18 -10
- package/docs/TIPS.md +38 -26
- package/docs/patterns/README.md +33 -23
- package/package.json +9 -5
- package/scripts/adapters/iterm2-adapter.sh +1 -1
- package/scripts/adapters/tmux-adapter.sh +52 -23
- package/scripts/adapters/wezterm-adapter.sh +26 -14
- package/scripts/lib/compat.sh +200 -0
- package/scripts/lib/helpers.sh +72 -0
- package/scripts/postinstall.mjs +72 -13
- package/scripts/{cct → sw} +118 -22
- package/scripts/sw-adversarial.sh +274 -0
- package/scripts/sw-architecture-enforcer.sh +330 -0
- package/scripts/sw-checkpoint.sh +468 -0
- package/scripts/sw-cleanup.sh +359 -0
- package/scripts/sw-connect.sh +619 -0
- package/scripts/{cct-cost.sh → sw-cost.sh} +368 -34
- package/scripts/sw-daemon.sh +5574 -0
- package/scripts/sw-dashboard.sh +477 -0
- package/scripts/sw-developer-simulation.sh +252 -0
- package/scripts/sw-docs.sh +635 -0
- package/scripts/sw-doctor.sh +907 -0
- package/scripts/{cct-fix.sh → sw-fix.sh} +10 -6
- package/scripts/{cct-fleet.sh → sw-fleet.sh} +498 -22
- package/scripts/sw-github-checks.sh +521 -0
- package/scripts/sw-github-deploy.sh +533 -0
- package/scripts/sw-github-graphql.sh +972 -0
- package/scripts/sw-heartbeat.sh +293 -0
- package/scripts/{cct-init.sh → sw-init.sh} +144 -11
- package/scripts/sw-intelligence.sh +1196 -0
- package/scripts/sw-jira.sh +643 -0
- package/scripts/sw-launchd.sh +364 -0
- package/scripts/sw-linear.sh +648 -0
- package/scripts/{cct-logs.sh → sw-logs.sh} +72 -2
- package/scripts/sw-loop.sh +2217 -0
- package/scripts/{cct-memory.sh → sw-memory.sh} +514 -36
- package/scripts/sw-patrol-meta.sh +417 -0
- package/scripts/sw-pipeline-composer.sh +455 -0
- package/scripts/sw-pipeline-vitals.sh +1096 -0
- package/scripts/sw-pipeline.sh +7593 -0
- package/scripts/sw-predictive.sh +820 -0
- package/scripts/{cct-prep.sh → sw-prep.sh} +339 -49
- package/scripts/{cct-ps.sh → sw-ps.sh} +9 -6
- package/scripts/{cct-reaper.sh → sw-reaper.sh} +10 -6
- package/scripts/sw-remote.sh +687 -0
- package/scripts/sw-self-optimize.sh +1048 -0
- package/scripts/sw-session.sh +541 -0
- package/scripts/sw-setup.sh +234 -0
- package/scripts/sw-status.sh +796 -0
- package/scripts/{cct-templates.sh → sw-templates.sh} +9 -4
- package/scripts/sw-tmux.sh +591 -0
- package/scripts/sw-tracker-jira.sh +277 -0
- package/scripts/sw-tracker-linear.sh +292 -0
- package/scripts/sw-tracker.sh +409 -0
- package/scripts/{cct-upgrade.sh → sw-upgrade.sh} +103 -46
- package/scripts/{cct-worktree.sh → sw-worktree.sh} +3 -0
- package/templates/pipelines/autonomous.json +35 -6
- package/templates/pipelines/cost-aware.json +21 -0
- package/templates/pipelines/deployed.json +40 -6
- package/templates/pipelines/enterprise.json +16 -2
- package/templates/pipelines/fast.json +19 -0
- package/templates/pipelines/full.json +28 -2
- package/templates/pipelines/hotfix.json +19 -0
- package/templates/pipelines/standard.json +31 -0
- package/tmux/{claude-teams-overlay.conf → shipwright-overlay.conf} +27 -9
- package/tmux/templates/accessibility.json +34 -0
- package/tmux/templates/api-design.json +35 -0
- package/tmux/templates/architecture.json +1 -0
- package/tmux/templates/bug-fix.json +9 -0
- package/tmux/templates/code-review.json +1 -0
- package/tmux/templates/compliance.json +36 -0
- package/tmux/templates/data-pipeline.json +36 -0
- package/tmux/templates/debt-paydown.json +34 -0
- package/tmux/templates/devops.json +1 -0
- package/tmux/templates/documentation.json +1 -0
- package/tmux/templates/exploration.json +1 -0
- package/tmux/templates/feature-dev.json +1 -0
- package/tmux/templates/full-stack.json +8 -0
- package/tmux/templates/i18n.json +34 -0
- package/tmux/templates/incident-response.json +36 -0
- package/tmux/templates/migration.json +1 -0
- package/tmux/templates/observability.json +35 -0
- package/tmux/templates/onboarding.json +33 -0
- package/tmux/templates/performance.json +35 -0
- package/tmux/templates/refactor.json +1 -0
- package/tmux/templates/release.json +35 -0
- package/tmux/templates/security-audit.json +8 -0
- package/tmux/templates/spike.json +34 -0
- package/tmux/templates/testing.json +1 -0
- package/tmux/tmux.conf +98 -9
- package/scripts/cct-cleanup.sh +0 -172
- package/scripts/cct-daemon.sh +0 -3189
- package/scripts/cct-doctor.sh +0 -414
- package/scripts/cct-loop.sh +0 -1332
- package/scripts/cct-pipeline.sh +0 -3844
- package/scripts/cct-session.sh +0 -284
- package/scripts/cct-status.sh +0 -169
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "data-pipeline",
|
|
3
|
+
"description": "Data engineering with extract, transform, and load agents",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"data",
|
|
6
|
+
"pipeline",
|
|
7
|
+
"etl",
|
|
8
|
+
"elt",
|
|
9
|
+
"ingestion",
|
|
10
|
+
"warehouse",
|
|
11
|
+
"lake",
|
|
12
|
+
"batch",
|
|
13
|
+
"stream",
|
|
14
|
+
"sql"
|
|
15
|
+
],
|
|
16
|
+
"agents": [
|
|
17
|
+
{
|
|
18
|
+
"name": "extractor",
|
|
19
|
+
"role": "Source connectors, ingestion logic, schema mapping, incremental extraction, change data capture",
|
|
20
|
+
"focus": "src/extract/, src/connectors/, src/sources/, config/"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "transformer",
|
|
24
|
+
"role": "Business logic, data cleaning, aggregation, validation rules, data quality checks",
|
|
25
|
+
"focus": "src/transform/, src/models/, src/validators/, sql/, dbt/"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "loader",
|
|
29
|
+
"role": "Sink connectors, idempotent writes, partitioning, monitoring, schema evolution handling",
|
|
30
|
+
"focus": "src/load/, src/sinks/, src/destinations/, *.test.*"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"layout": "tiled",
|
|
34
|
+
"layout_style": "main-horizontal",
|
|
35
|
+
"main_pane_percent": 65
|
|
36
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "debt-paydown",
|
|
3
|
+
"description": "Technical debt reduction with analysis, refactoring, and verification agents",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"debt",
|
|
6
|
+
"tech debt",
|
|
7
|
+
"technical debt",
|
|
8
|
+
"cleanup",
|
|
9
|
+
"legacy",
|
|
10
|
+
"modernize",
|
|
11
|
+
"deprecate",
|
|
12
|
+
"upgrade deps"
|
|
13
|
+
],
|
|
14
|
+
"agents": [
|
|
15
|
+
{
|
|
16
|
+
"name": "analyzer",
|
|
17
|
+
"role": "Identify debt hotspots — cyclomatic complexity, code churn, tight coupling, outdated dependencies, dead code",
|
|
18
|
+
"focus": "src/, lib/, package.json, go.mod, *.lock"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "refactorer",
|
|
22
|
+
"role": "Systematic cleanup while preserving test coverage. Upgrade dependencies, remove dead code, simplify abstractions.",
|
|
23
|
+
"focus": "src/, lib/, apps/"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "reviewer",
|
|
27
|
+
"role": "Verify behavior preservation — no regressions, measurable complexity reduction, test coverage maintained or improved",
|
|
28
|
+
"focus": "*.test.*, __tests__/, *.spec.*"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"layout": "tiled",
|
|
32
|
+
"layout_style": "main-horizontal",
|
|
33
|
+
"main_pane_percent": 65
|
|
34
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "i18n",
|
|
3
|
+
"description": "Internationalization with extraction, translation setup, and verification agents",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"i18n",
|
|
6
|
+
"internationalization",
|
|
7
|
+
"localization",
|
|
8
|
+
"l10n",
|
|
9
|
+
"translate",
|
|
10
|
+
"language",
|
|
11
|
+
"locale",
|
|
12
|
+
"rtl"
|
|
13
|
+
],
|
|
14
|
+
"agents": [
|
|
15
|
+
{
|
|
16
|
+
"name": "extractor",
|
|
17
|
+
"role": "Find hardcoded strings, extract to resource bundles, set up i18n framework, create translation key conventions",
|
|
18
|
+
"focus": "src/components/, apps/, *.tsx, *.jsx, *.vue, *.html"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "translator",
|
|
22
|
+
"role": "Generate translation keys, set up plural rules, handle date/number/currency formats, RTL layout considerations",
|
|
23
|
+
"focus": "src/locales/, src/i18n/, translations/, *.json, *.yaml"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "verifier",
|
|
27
|
+
"role": "Check string truncation, layout breakage, format consistency, missing translations, pseudo-localization testing",
|
|
28
|
+
"focus": "*.test.*, __tests__/, src/components/, e2e/"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"layout": "tiled",
|
|
32
|
+
"layout_style": "main-horizontal",
|
|
33
|
+
"main_pane_percent": 65
|
|
34
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "incident-response",
|
|
3
|
+
"description": "Production incident response with investigation, fix, and postmortem agents",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"incident",
|
|
6
|
+
"outage",
|
|
7
|
+
"down",
|
|
8
|
+
"production",
|
|
9
|
+
"hotfix",
|
|
10
|
+
"urgent",
|
|
11
|
+
"pager",
|
|
12
|
+
"alert",
|
|
13
|
+
"sev1",
|
|
14
|
+
"sev2"
|
|
15
|
+
],
|
|
16
|
+
"agents": [
|
|
17
|
+
{
|
|
18
|
+
"name": "investigator",
|
|
19
|
+
"role": "Trace logs, metrics, and error paths to identify root cause. Narrow the blast radius.",
|
|
20
|
+
"focus": "src/, logs/, config/, *.log"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "fixer",
|
|
24
|
+
"role": "Implement minimal hotfix with smallest possible blast radius. Prioritize speed and safety.",
|
|
25
|
+
"focus": "src/, lib/, apps/"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "postmortem",
|
|
29
|
+
"role": "Write incident report, create follow-up issues, add monitoring and alerting to prevent recurrence",
|
|
30
|
+
"focus": "docs/, *.md, src/monitoring/, src/alerts/"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"layout": "tiled",
|
|
34
|
+
"layout_style": "main-horizontal",
|
|
35
|
+
"main_pane_percent": 65
|
|
36
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "observability",
|
|
3
|
+
"description": "Monitoring and observability setup with instrumentation, dashboards, and validation agents",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"monitoring",
|
|
6
|
+
"observability",
|
|
7
|
+
"metrics",
|
|
8
|
+
"tracing",
|
|
9
|
+
"logging",
|
|
10
|
+
"alerting",
|
|
11
|
+
"grafana",
|
|
12
|
+
"datadog",
|
|
13
|
+
"slo"
|
|
14
|
+
],
|
|
15
|
+
"agents": [
|
|
16
|
+
{
|
|
17
|
+
"name": "instrumenter",
|
|
18
|
+
"role": "Add metrics, distributed traces, structured logging, health checks, SLI definitions",
|
|
19
|
+
"focus": "src/, lib/, src/middleware/, src/instrumentation/"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "dashboarder",
|
|
23
|
+
"role": "Dashboard definitions, alert rules, SLO configurations, runbook templates, on-call documentation",
|
|
24
|
+
"focus": "monitoring/, dashboards/, alerts/, docs/, config/"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "validator",
|
|
28
|
+
"role": "Verify alerts fire correctly, test runbooks, validate metric cardinality, load test instrumentation",
|
|
29
|
+
"focus": "*.test.*, scripts/, monitoring/tests/"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"layout": "tiled",
|
|
33
|
+
"layout_style": "main-horizontal",
|
|
34
|
+
"main_pane_percent": 65
|
|
35
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "onboarding",
|
|
3
|
+
"description": "Developer experience and onboarding improvement with audit, fix, and verification agents",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"onboarding",
|
|
6
|
+
"developer experience",
|
|
7
|
+
"dx",
|
|
8
|
+
"setup",
|
|
9
|
+
"getting started",
|
|
10
|
+
"contribute",
|
|
11
|
+
"new developer"
|
|
12
|
+
],
|
|
13
|
+
"agents": [
|
|
14
|
+
{
|
|
15
|
+
"name": "auditor",
|
|
16
|
+
"role": "Try setup from scratch — clone, install, run, test. Identify friction, missing docs, confusing errors, time each step.",
|
|
17
|
+
"focus": "README.md, CONTRIBUTING.md, Makefile, docker-compose.yml, scripts/"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "improver",
|
|
21
|
+
"role": "Fix setup scripts, add missing documentation, improve error messages, create quick-start guide",
|
|
22
|
+
"focus": "scripts/, docs/, README.md, CONTRIBUTING.md, Makefile, *.md"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "tester",
|
|
26
|
+
"role": "Verify the improved flow works from a fresh environment. Test on different OS assumptions, check idempotency.",
|
|
27
|
+
"focus": "scripts/, Makefile, docker-compose.yml, *.test.*"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"layout": "tiled",
|
|
31
|
+
"layout_style": "main-horizontal",
|
|
32
|
+
"main_pane_percent": 65
|
|
33
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "performance",
|
|
3
|
+
"description": "Performance optimization with profiling, optimization, and validation agents",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"performance",
|
|
6
|
+
"slow",
|
|
7
|
+
"optimize",
|
|
8
|
+
"benchmark",
|
|
9
|
+
"profile",
|
|
10
|
+
"latency",
|
|
11
|
+
"throughput",
|
|
12
|
+
"cache",
|
|
13
|
+
"speed"
|
|
14
|
+
],
|
|
15
|
+
"agents": [
|
|
16
|
+
{
|
|
17
|
+
"name": "profiler",
|
|
18
|
+
"role": "Benchmark endpoints and functions, identify bottlenecks, generate flame graphs and timing data",
|
|
19
|
+
"focus": "*.bench.*, *.perf.*, scripts/"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "optimizer",
|
|
23
|
+
"role": "Implement performance fixes — query optimization, caching, lazy loading, algorithm improvements",
|
|
24
|
+
"focus": "src/, lib/, apps/"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "validator",
|
|
28
|
+
"role": "Before/after benchmarks, regression prevention tests, verify no behavior changes",
|
|
29
|
+
"focus": "*.test.*, *.bench.*, __tests__/"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"layout": "tiled",
|
|
33
|
+
"layout_style": "main-horizontal",
|
|
34
|
+
"main_pane_percent": 65
|
|
35
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "release",
|
|
3
|
+
"description": "Release management with preparation, validation, and announcement agents",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"release",
|
|
6
|
+
"version",
|
|
7
|
+
"publish",
|
|
8
|
+
"changelog",
|
|
9
|
+
"tag",
|
|
10
|
+
"package",
|
|
11
|
+
"ship",
|
|
12
|
+
"launch",
|
|
13
|
+
"npm publish"
|
|
14
|
+
],
|
|
15
|
+
"agents": [
|
|
16
|
+
{
|
|
17
|
+
"name": "preparer",
|
|
18
|
+
"role": "Changelog generation, version bumps, dependency audit, license check, breaking change detection",
|
|
19
|
+
"focus": "package.json, CHANGELOG.md, Cargo.toml, go.mod, *.lock, version.*"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "validator",
|
|
23
|
+
"role": "Full test suite, smoke tests, canary checks, rollback verification, binary/package size check",
|
|
24
|
+
"focus": "*.test.*, scripts/, e2e/, *.spec.*"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "announcer",
|
|
28
|
+
"role": "Release notes, migration guide, deprecation notices, upgrade instructions, API diff summary",
|
|
29
|
+
"focus": "docs/, *.md, CHANGELOG.md, MIGRATION.md, UPGRADING.md"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"layout": "tiled",
|
|
33
|
+
"layout_style": "main-horizontal",
|
|
34
|
+
"main_pane_percent": 65
|
|
35
|
+
}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "security-audit",
|
|
3
3
|
"description": "Security audit with code analysis, dependency scanning, and config review agents",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"security",
|
|
6
|
+
"vulnerability",
|
|
7
|
+
"xss",
|
|
8
|
+
"injection",
|
|
9
|
+
"auth",
|
|
10
|
+
"patch"
|
|
11
|
+
],
|
|
4
12
|
"agents": [
|
|
5
13
|
{
|
|
6
14
|
"name": "code-analysis",
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "spike",
|
|
3
|
+
"description": "Proof of concept and technical spike with researcher, prototyper, and evaluator agents",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"spike",
|
|
6
|
+
"poc",
|
|
7
|
+
"proof of concept",
|
|
8
|
+
"prototype",
|
|
9
|
+
"experiment",
|
|
10
|
+
"evaluate",
|
|
11
|
+
"feasibility",
|
|
12
|
+
"compare"
|
|
13
|
+
],
|
|
14
|
+
"agents": [
|
|
15
|
+
{
|
|
16
|
+
"name": "researcher",
|
|
17
|
+
"role": "Evaluate libraries, APIs, and approaches. Compare trade-offs, licensing, maintenance status, community support.",
|
|
18
|
+
"focus": "docs/, package.json, go.mod, Cargo.toml, requirements.txt"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "prototyper",
|
|
22
|
+
"role": "Build minimal working prototype. Throwaway code is fine — optimize for speed of learning, not production quality.",
|
|
23
|
+
"focus": "spike/, prototype/, src/"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "evaluator",
|
|
27
|
+
"role": "Write decision document with recommendation, risks, migration path, and effort estimate. Zero attachment to the prototype.",
|
|
28
|
+
"focus": "docs/, *.md, spike/"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"layout": "tiled",
|
|
32
|
+
"layout_style": "main-horizontal",
|
|
33
|
+
"main_pane_percent": 65
|
|
34
|
+
}
|
package/tmux/tmux.conf
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ╔═══════════════════════════════════════════════════════════════════════════╗
|
|
2
2
|
# ║ TMUX CONFIGURATION ║
|
|
3
|
-
# ║
|
|
3
|
+
# ║ Shipwright — Optimized for Claude Code ║
|
|
4
4
|
# ╚═══════════════════════════════════════════════════════════════════════════╝
|
|
5
5
|
|
|
6
6
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -8,16 +8,63 @@
|
|
|
8
8
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
9
9
|
|
|
10
10
|
set -g default-terminal "tmux-256color"
|
|
11
|
+
|
|
12
|
+
# ─── Terminal-specific overrides ────────────────────────────────────────
|
|
13
|
+
# True color + italics for modern terminals
|
|
11
14
|
set -ag terminal-overrides ",xterm-256color:RGB"
|
|
15
|
+
set -ag terminal-overrides ",xterm-256color:Tc"
|
|
16
|
+
set -ag terminal-overrides ",iTerm2*:RGB:Tc"
|
|
17
|
+
# Ghostty, kitty, WezTerm, Alacritty true color
|
|
18
|
+
set -ag terminal-overrides ",xterm-ghostty:RGB:Tc"
|
|
19
|
+
set -ag terminal-overrides ",xterm-kitty:RGB:Tc"
|
|
20
|
+
set -ag terminal-overrides ",wezterm:RGB:Tc"
|
|
21
|
+
set -ag terminal-overrides ",alacritty:RGB:Tc"
|
|
22
|
+
# Styled underline (curly, dotted, dashed)
|
|
23
|
+
set -ag terminal-overrides ",*:Smulx=\\E[4::%p1%dm"
|
|
24
|
+
set -ag terminal-overrides ",*:Setulc=\\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m"
|
|
25
|
+
# Terminal.app: 256 color only, basic mouse
|
|
26
|
+
set -ag terminal-overrides ",Apple_Terminal*:colors=256"
|
|
27
|
+
|
|
28
|
+
# ─── Claude Code TUI Compatibility ────────────────────────────────────
|
|
29
|
+
# Passthrough: enables DEC 2026 synchronized output (eliminates flicker),
|
|
30
|
+
# OSC 52 clipboard, OSC notifications, and image protocols.
|
|
31
|
+
# Critical for Claude Code's rapid TUI updates inside tmux.
|
|
32
|
+
set -g allow-passthrough on
|
|
33
|
+
|
|
34
|
+
# Extended keys: lets TUI apps (Claude Code, vim, etc.) receive modifier
|
|
35
|
+
# key combos that plain terminals would swallow (Ctrl+Shift+key, etc.)
|
|
36
|
+
set -g extended-keys on
|
|
37
|
+
set -as terminal-features 'xterm*:extkeys'
|
|
38
|
+
|
|
39
|
+
# ─── Mouse ──────────────────────────────────────────────────────────────
|
|
12
40
|
set -g mouse on
|
|
41
|
+
# Fix: tmux 3.4+ defaults MouseDown1Status to switch-client (sessions),
|
|
42
|
+
# but we want select-window so clicking status bar windows actually works
|
|
43
|
+
bind -T root MouseDown1Status select-window -t =
|
|
44
|
+
# Double-click on status bar word to rename window
|
|
45
|
+
bind -T root DoubleClick1Status command-prompt -I "#W" "rename-window -- '%%'"
|
|
46
|
+
|
|
47
|
+
# ─── Core Behavior ─────────────────────────────────────────────────────
|
|
13
48
|
set -g base-index 1
|
|
14
49
|
setw -g pane-base-index 1
|
|
15
50
|
set -g renumber-windows on
|
|
16
|
-
set -g history-limit 50000
|
|
17
51
|
set -sg escape-time 0
|
|
18
52
|
set -g focus-events on
|
|
19
53
|
setw -g monitor-activity on
|
|
20
54
|
set -g visual-activity off
|
|
55
|
+
# Display messages for 3 seconds (default 750ms is too fast)
|
|
56
|
+
set -g display-time 3000
|
|
57
|
+
# Display pane indicators for 2 seconds
|
|
58
|
+
set -g display-panes-time 2000
|
|
59
|
+
# Smoother repeated key operations (600ms window)
|
|
60
|
+
set -g repeat-time 600
|
|
61
|
+
# Clipboard: native OSC 52 — copies work across SSH + tmux nesting
|
|
62
|
+
set -g set-clipboard on
|
|
63
|
+
|
|
64
|
+
# ─── History ───────────────────────────────────────────────────────────
|
|
65
|
+
# Claude Code generates 4,000-6,700 scroll events/sec during streaming.
|
|
66
|
+
# 250k lines prevents buffer exhaustion during long agent runs.
|
|
67
|
+
set -g history-limit 250000
|
|
21
68
|
|
|
22
69
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
23
70
|
# STATUS BAR CONFIGURATION
|
|
@@ -35,14 +82,12 @@ set -g status-left "#[fg=#1e1e32,bg=#00d4ff,bold] #S #[fg=#00d4ff,bg=#0066ff]#[
|
|
|
35
82
|
|
|
36
83
|
setw -g window-status-separator " "
|
|
37
84
|
# Inactive windows; team windows (claude-*) get a λ icon
|
|
38
|
-
# NOTE: use separate #[fg=]#[bg=] blocks — commas inside #{?} branches break parsing
|
|
39
85
|
setw -g window-status-format "#{?#{m:claude-*,#W},#[fg=#7c3aed]#[bg=#252538] λ #I:#W ,#[fg=#71717a]#[bg=#252538] #I:#W }#[fg=#252538]#[bg=#1a1a2e]"
|
|
40
86
|
# Active window; team windows get λ icon in cyan
|
|
41
87
|
setw -g window-status-current-format "#{?#{m:claude-*,#W},#[fg=#1e1e32]#[bg=#00d4ff]#[bold] λ #I:#W ,#[fg=#1e1e32]#[bg=#00d4ff]#[bold] #I:#W }#[fg=#00d4ff]#[bg=#1a1a2e]"
|
|
42
88
|
|
|
43
|
-
# Right side:
|
|
44
|
-
#
|
|
45
|
-
set -g status-right "#{?client_prefix,#[fg=#1e1e32]#[bg=#0066ff]#[bold] T team | split - split hjkl nav G zoom S sync x kill #[fg=#1e1e32]#[bg=#00d4ff]#[bold] ^a ,#[fg=#71717a]#[bg=#252538] #(whoami)@#h #[fg=#1e1e32]#[bg=#7c3aed]#[bold] %H:%M #[fg=#e4e4e7]#[bg=#0066ff]#[bold] %b %d #[fg=#1e1e32]#[bg=#00d4ff]#[bold] %a }"
|
|
89
|
+
# Right side: key hints when prefix is active, otherwise clock + date
|
|
90
|
+
set -g status-right "#{?client_prefix,#[fg=#1e1e32]#[bg=#0066ff]#[bold] T team | split - split hjkl nav G zoom S sync x kill F fzf #[fg=#1e1e32]#[bg=#00d4ff]#[bold] ^a ,#[fg=#71717a]#[bg=#252538] #(whoami)@#h #[fg=#1e1e32]#[bg=#7c3aed]#[bold] %H:%M #[fg=#e4e4e7]#[bg=#0066ff]#[bold] %b %d #[fg=#1e1e32]#[bg=#00d4ff]#[bold] %a }"
|
|
46
91
|
|
|
47
92
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
48
93
|
# PANE STYLING
|
|
@@ -52,9 +97,16 @@ set -g window-style 'bg=#1a1a2e,fg=#e4e4e7'
|
|
|
52
97
|
set -g window-active-style 'bg=#1a1a2e,fg=#e4e4e7'
|
|
53
98
|
set -g pane-border-style "fg=#333355,bg=#1a1a2e"
|
|
54
99
|
set -g pane-active-border-style "fg=#00d4ff,bg=#1a1a2e"
|
|
100
|
+
# Heavy pane border lines for better visibility (tmux 3.2+)
|
|
101
|
+
set -g pane-border-lines heavy
|
|
55
102
|
set -g display-panes-colour "#333355"
|
|
56
103
|
set -g display-panes-active-colour "#00d4ff"
|
|
57
104
|
|
|
105
|
+
# ─── Popup Styling (tmux 3.3+) ─────────────────────────────────────────
|
|
106
|
+
set -gq popup-style 'bg=#252538'
|
|
107
|
+
set -gq popup-border-style 'fg=#00d4ff'
|
|
108
|
+
set -gq popup-border-lines rounded
|
|
109
|
+
|
|
58
110
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
59
111
|
# MESSAGE STYLING
|
|
60
112
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -139,23 +191,54 @@ bind s choose-tree -sZ -O name
|
|
|
139
191
|
bind N new-session
|
|
140
192
|
|
|
141
193
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
142
|
-
#
|
|
194
|
+
# FLOATING POPUP TERMINALS (tmux 3.2+)
|
|
195
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
196
|
+
|
|
197
|
+
# prefix + F → floating popup terminal in current directory
|
|
198
|
+
bind F display-popup -E -w 80% -h 75% -d "#{pane_current_path}"
|
|
199
|
+
|
|
200
|
+
# prefix + C-f → FZF session/window switcher in a popup
|
|
201
|
+
bind C-f display-popup -E -w 60% -h 50% "\
|
|
202
|
+
tmux list-sessions -F '#{session_name}' | \
|
|
203
|
+
fzf --reverse --header='Switch session' | \
|
|
204
|
+
xargs -I{} tmux switch-client -t {}"
|
|
205
|
+
|
|
206
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
207
|
+
# PLUGINS (via TPM)
|
|
143
208
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
144
209
|
|
|
145
210
|
set -g @plugin 'tmux-plugins/tpm'
|
|
146
211
|
set -g @plugin 'tmux-plugins/tmux-sensible'
|
|
147
212
|
set -g @plugin 'tmux-plugins/tmux-resurrect'
|
|
148
213
|
set -g @plugin 'tmux-plugins/tmux-continuum'
|
|
214
|
+
set -g @plugin 'tmux-plugins/tmux-yank'
|
|
215
|
+
set -g @plugin 'sainnhe/tmux-fzf'
|
|
216
|
+
|
|
217
|
+
# ─── Plugin Configuration ──────────────────────────────────────────────
|
|
149
218
|
|
|
219
|
+
# Resurrect: persist full pane content + programs
|
|
150
220
|
set -g @resurrect-capture-pane-contents 'on'
|
|
221
|
+
set -g @resurrect-strategy-nvim 'session'
|
|
222
|
+
|
|
223
|
+
# Continuum: auto-save every 15 min, auto-restore on tmux start
|
|
151
224
|
set -g @continuum-restore 'on'
|
|
225
|
+
set -g @continuum-save-interval '15'
|
|
226
|
+
|
|
227
|
+
# Yank: use system clipboard, stay in copy mode after yanking
|
|
228
|
+
set -g @yank_selection_mouse 'clipboard'
|
|
229
|
+
set -g @yank_action 'copy-pipe'
|
|
230
|
+
|
|
231
|
+
# FZF: use popup window (tmux 3.2+), Shipwright color scheme
|
|
232
|
+
set -g @tmux-fzf-launch-key 'C-f'
|
|
233
|
+
TMUX_FZF_OPTIONS="-p -w 60% -h 50%"
|
|
234
|
+
TMUX_FZF_PREVIEW=0
|
|
152
235
|
|
|
153
236
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
154
|
-
#
|
|
237
|
+
# SHIPWRIGHT INTEGRATION
|
|
155
238
|
# ═══════════════════════════════════════════════════════════════════════════
|
|
156
239
|
|
|
157
240
|
# Source teams overlay (agent pane styling, keybindings)
|
|
158
|
-
source-file -q ~/.tmux/
|
|
241
|
+
source-file -q ~/.tmux/shipwright-overlay.conf
|
|
159
242
|
|
|
160
243
|
# Quick launch: prefix + T → start a Claude team session
|
|
161
244
|
bind T run-shell "shipwright session"
|
|
@@ -163,5 +246,11 @@ bind T run-shell "shipwright session"
|
|
|
163
246
|
# Quick status: prefix + C-t → show team dashboard in floating popup
|
|
164
247
|
bind C-t display-popup -w 80% -h 70% -E "shipwright status; echo ''; echo 'Press ENTER to close'; read"
|
|
165
248
|
|
|
249
|
+
# Quick logs: prefix + C-l → tail agent logs in popup
|
|
250
|
+
bind M-L display-popup -w 85% -h 80% -E "shipwright logs --follow 2>/dev/null || echo 'No active logs'; echo ''; echo 'Press ENTER to close'; read"
|
|
251
|
+
|
|
252
|
+
# Quick cost: prefix + C-c → cost dashboard in popup
|
|
253
|
+
bind M-C display-popup -w 70% -h 60% -E "shipwright cost show 2>/dev/null || echo 'Cost tracking not configured'; echo ''; echo 'Press ENTER to close'; read"
|
|
254
|
+
|
|
166
255
|
# Initialize TPM (keep at very bottom)
|
|
167
256
|
run-shell '~/.tmux/plugins/tpm/tpm'
|