Skip to content

Add tmux-parity Claude Code plugin and skill#667

Open
tony wants to merge 7 commits into
masterfrom
tmux-parity-plugin
Open

Add tmux-parity Claude Code plugin and skill#667
tony wants to merge 7 commits into
masterfrom
tmux-parity-plugin

Conversation

@tony
Copy link
Copy Markdown
Member

@tony tony commented May 9, 2026

Summary

Extracts the Claude Code plugin and skill that were used to produce the
tmux command-parity work in #653 into their own changeset, so #653 can
stay focused on library code.

Adds:

  • .claude-plugin/plugin.json declaring the tmux-parity plugin
  • Slash commands in .claude/commands/: parity-audit, version-diff,
    implement-command
  • parity-analyzer agent in .claude/agents/
  • tmux-parity skill in skills/tmux-parity/ documenting the
    tmux ↔ libtmux mapping and analysis methodology
  • Two helper extraction scripts in .claude-plugin/scripts/

These files are not part of the published wheel/sdist (verified against
pyproject.toml's packages = [{include = "*", from = "src"}]) and
nothing in src/, tests/, docs/, conftest.py, pyproject.toml,
README.md, CLAUDE.md, AGENTS.md, CHANGES, .gitignore, or
CI references them.

Merge ordering

This PR must merge AFTER #653. The skill's command-mapping.md
claims 100% effective coverage of 90 tmux commands, which only becomes
true once #653 is on master. Opening this in parallel so the
plugin/skill can be reviewed independently of the library work.

Test plan

  • Slash commands in .claude/commands/* are discoverable in a Claude Code session inside this checkout
  • bash .claude-plugin/scripts/extract-libtmux-methods.sh and extract-tmux-commands.sh emit usable data
  • python -m build (or uv build) does not include .claude* or skills/ paths in the wheel/sdist

@codecov
Copy link
Copy Markdown

codecov Bot commented May 9, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 47.11%. Comparing base (3a6fb89) to head (6d7b018).

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #667      +/-   ##
==========================================
+ Coverage   47.02%   47.11%   +0.09%     
==========================================
  Files          23       23              
  Lines        3296     3296              
  Branches      709      709              
==========================================
+ Hits         1550     1553       +3     
+ Misses       1384     1381       -3     
  Partials      362      362              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

tony added 7 commits May 10, 2026 10:42
why: libtmux wraps ~28 of tmux's ~88 commands (~32% coverage). Need
tooling to systematically audit gaps, compare across tmux versions,
and guide implementation of new command wrappers.
what:
- Add .claude-plugin/ with manifest, commands, agent, skill, and scripts
- /parity-audit: generate full feature parity report (commands, flags,
  format variables, options)
- /version-diff: compare tmux features across 41 version worktrees
- /implement-command: guided workflow for wrapping new tmux commands
- parity-analyzer agent: auto-triggers on natural language parity queries
- tmux-parity skill: shared domain knowledge with reference files
  (command mapping, implementation patterns, C source navigation)
- Extraction scripts: parse tmux cmd-*.c and libtmux .cmd() invocations
…uto-discovery

why: Claude Code auto-discovers plugin components at the project root,
not inside .claude-plugin/. Agent wasn't showing up because it was
nested under .claude-plugin/agents/.
what:
- Move agents/, commands/, skills/ to project root
- Keep scripts/ in .claude-plugin/ (not auto-discovered)
- Remove custom path overrides from plugin.json
- Update cross-references between components
…d discovery

why: Claude Code discovers project commands from .claude/commands/ and agents
from .claude/agents/, not top-level directories.
what:
- Move 3 commands to .claude/commands/
- Move parity-analyzer agent to .claude/agents/
- Remove now-empty top-level commands/ and agents/ dirs
…erage

why: The mapping doc was stale (said 28/88). Update to reflect 79/90
directly wrapped, 8 covered by alias/flag, 3 truly unwrappable.
what:
- Update summary to 87/90 effective coverage (96%)
- Add table of 8 commands covered by alias/flag with explanation
- Add table of 3 unwrappable commands with rationale
why: All 90 tmux commands are now either directly wrapped (82) or covered
by aliases/flags (8). display-menu is wrapped but has a test gap.
what:
- Update summary to 82/90 directly wrapped (91%), 90/90 effective (100%)
- Move display-menu from "Not Wrappable" to "Test Gaps" section
- Remove command-prompt and confirm-before from unwrappable (now testable
  via send-keys -K)
- Add "Notable Test Innovations" section documenting the send-keys -K
  approach and ControlMode testing patterns
why: SKILL.md said "~28 of ~88 tmux commands wrapped" and listed
join-pane, swap-pane, run-shell, display-popup as high-priority
unwrapped — all of which the tmux-parity branch wraps.
command-mapping.md likewise listed last-pane, next-layout,
previous-layout, move-pane as alias/flag-covered, despite the branch
adding direct wrappers for each (commits dd8c65f, 2ab4c65,
aa00c45). Static numbers in generated docs go stale fast; static
"unwrapped" lists go stale faster.

what:
- Rewrite SKILL.md "Current Coverage Summary" to point at the
  extraction scripts rather than baking in a number/list that
  immediately rots. Note that effective coverage is 100%.
- Rewrite command-mapping.md "Covered by Alias/Flag" — there are
  now exactly four indirect cases (list-panes, list-windows,
  set-window-option, show-window-options), all reached through
  internal queries / option scoping. Updated count from 8/82 to 4/86.
- Convert ```bash command blocks to ```console with $ prefix per
  AGENTS.md.
…S.md

why: AGENTS.md "Shell Command Formatting" requires command examples
in docs to use ```console with a "$ " prefix (not ```bash) and to
keep one command per code block so the prompt is unambiguous and
copy-pastable. The plugin docs added in this branch had multi-command
```bash blocks scattered across .claude/commands and
skills/tmux-parity references.

what:
- .claude/agents/parity-analyzer.md: 3 blocks → console+$.
- .claude/commands/version-diff.md: 2 blocks → console+$.
- .claude/commands/implement-command.md: split the 6-command
  verification block into 6 console+$ blocks.
- skills/tmux-parity/references/tmux-command-table.md: 2 blocks →
  console+$ (one of which had two ls invocations — split per
  AGENTS.md "one command per block").
@tony tony force-pushed the tmux-parity-plugin branch from 60fac56 to 6d7b018 Compare May 10, 2026 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant