agentleFS
hiroppyhiroppy/tmux-agent-sidebar/.claude/skills/sync-upstream-features/SKILL.md

sync-upstream-features

Skill568 starsChanged 7 months agoMITView on GitHub

Investigate whether the latest hook events and features from Claude Code / Codex CLI are covered by tmux-agent-sidebar's current implementation, and report gaps. Use on requests like "check diff with upstream", "look for new hooks", "check changelog for unsupported features". Does not implement anything.

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 4 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before reporting, you need to understand this project's architecture.

    line 12
  2. Very specific:

    Note: Do NOT exclude WorktreeCreate / WorktreeRemove.

    line 45
  3. Distinctive:

    Only report gaps relevant to sidebar agent monitoring:

    line 49
  4. Very specific:

    List adapter match arms before writing: Before writing the table, enumerate ALL string literals in src/adapter/claude.rs's parse() match …

    line 172
  5. Distinctive:

    Cross-table consistency check: Verify no contradictions between the coverage table and gap details.

    line 173
  6. Distinctive:

    All-category completeness check: Verify no gaps are missing for permission modes and tools.

    line 174

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Sync Upstream Features — Gap Reporter

A skill that fetches the latest documentation and changelogs from Claude Code and Codex CLI, and reports gaps against this project's implementation. Does not implement anything — only outputs a gap list.

How This Project Works

Before reporting, you need to understand this project's architecture.

Hook Event Reception

This project uses Claude Code / Codex settings.json hooks to receive events. hook.sh receives JSON from stdin and passes it to the Rust binary's hook subcommand.

Mapping between upstream hook events and internal event names used by this project:

Upstream Hook EventInternal Event NameNotes
SessionStartsession-start
SessionEndsession-end
UserPromptSubmituser-prompt-submit
Notificationnotification
Stopstop
StopFailurestop-failure
SubagentStartsubagent-start
SubagentStopsubagent-stop
PostToolUseactivity-logImportant: PreToolUse/PostToolUse are not used directly. Instead, a custom activity-log event passes tool_name, tool_input, tool_response from the PostToolUse hook

Items to Exclude from Report

The following are unrelated to the sidebar monitoring TUI and should NOT be reported as gaps:

  • PreToolUse / PostToolUse / PostToolUseFailure: Already handled via activity-log. No need to handle these directly
  • PermissionRequest: For permission UI control. Sidebar only displays, doesn't need this
  • PreCompact / PostCompact: Compaction doesn't affect sidebar
  • InstructionsLoaded: CLAUDE.md loading is unrelated to sidebar
  • ConfigChange: Config change monitoring is outside sidebar scope
  • FileChanged: File change monitoring is outside sidebar scope
  • Elicitation / ElicitationResult: MCP elicitation is outside sidebar scope
  • session_id, transcript_path fields: Information not used by sidebar

Note: Do NOT exclude WorktreeCreate / WorktreeRemove. The sidebar displays worktree information, so these events are useful for monitoring.

Items to Report

Only report gaps relevant to sidebar agent monitoring:

  • New status-changing events: Events that affect agent state (running/waiting/idle/error)
  • Permission modes: Missing variants in PermissionMode enum
  • Notification types: New notification types that affect status display
  • Tool tracking: Missing entries in activity.rs color mapping or label.rs label extraction
  • Codex adapter: Newly supported events in Codex CLI (only if Codex actually sends the event)
  • JSON fields: Overlooked fields in already-handled events that directly improve sidebar display
  • New hook events: Events related to agent lifecycle or state tracking (e.g., TaskCreated, TaskCompleted, PermissionDenied, TeammateIdle)

Known Deferred Gaps

These gaps are intentionally left unfixed. Report them only when the trigger condition is met — otherwise include them in the coverage table as Partial (deferred) with a one-line pointer to this section instead of repeating the full analysis.

  • TaskCreated extra fields (teammate_name, team_name, task_description)
    • Current state: src/adapter/claude.rs captures only task_id and task_subject. The src/cli/hook.rs handler for AgentEvent::TaskCreated is a no-op ("Redundant with activity-log; TaskCreate tool use already recorded") because the TaskCreate tool's PostToolUse already writes the activity log entry via the activity-log path.
    • Why deferred: With the handler doing nothing, capturing the extra fields would be dead code. The fields have no consumer today.
    • Trigger to revisit: Claude Code Agents Teams feature becomes a target for the sidebar — e.g. showing per-teammate task assignment in the activity log or a new UI panel for team state. When that work starts, capture teammate_name / team_name / task_description and thread them into whichever layer needs them (likely src/cli/label.rs for a richer TaskCreate label, or a new field on AgentEvent::TaskCreated consumed by a new handler).

Procedure

1. Fetch Upstream Documentation

Fetch latest information from the following URLs:

SourceURLFocus
Claude Code Changeloghttps://code.claude.com/docs/en/changelogNew hook events, permission modes, tools
Claude Code Hooks Referencehttps://code.claude.com/docs/en/hooksJSON schema for each hook event
Codex CLI Featureshttps://developers.openai.com/codex/cli/featuresExecution modes, flags
Codex Releaseshttps://github.com/openai/codex/releasesNew features, new events

2. Read Current Implementation

Identify supported features from the following files:

Check ItemFileWhat to Look For
Supported hook eventssrc/adapter/claude.rsparse() match arms
Codex supported eventssrc/adapter/codex.rsparse() match arms
Internal event definitionssrc/event.rsAgentEvent enum variants
Permission modessrc/tmux.rsPermissionMode enum and from_str()
Tracked toolssrc/activity.rstool_color_index() match arms
Labeled toolssrc/cli/label.rsextract_tool_label() match arms
Event handlerssrc/cli/hook.rshandle_event() match arms

3. Report Gaps

Report only gaps matching "Items to Report." Do NOT include items from "Items to Exclude from Report."

Categories

  • Hook Events: Events present upstream but missing from adapter that would be useful for sidebar monitoring
  • Permission Modes: Missing variants in PermissionMode enum
  • Notification Types: New notification types
  • JSON Fields: Overlooked fields in already-handled events that could improve display
  • Tools: Tools not covered in activity.rs / label.rs
  • Codex-specific: Codex adapter gaps (only if the event is confirmed to be actually sent)

4. Assign Priority

Assign priority to each gap:

  • High: Status display is wrong or information is missing (e.g., missing permission mode, overlooked error type)
  • Medium: Display is correct but additional information could improve it (e.g., new hook event support, new tool color)
  • Low: Nice to have but low impact (e.g., additional label extraction, features not yet widely adopted)

5. Output Format

Output the report in the following structure.

5.1 Coverage Table

First, output a table of all upstream hook events with current coverage status. Include ALL upstream events, including those in "Items to Exclude."

Format:

Hook EventAdded in VersionStatusNotes
SessionStart(initial)Covered
TaskCreatedv2.1.84Not covered...
PreToolUse(initial)Out of scopeHandled via activity-log
  • Added in Version: The version when the event was added to Claude Code. Identify from changelog. Use (initial) for events present from the start. Use Unknown if unidentifiable.
  • Status: Covered / Not covered / Partial / Out of scope
    • Covered: Match arm exists in adapter's parse()
    • Not covered: No match arm in adapter, and the event is useful for sidebar monitoring
    • Partial: Match arm exists but has field omissions or field name mismatches
    • Out of scope: Not relevant to sidebar monitoring (matches "Items to Exclude")

Also output the following tables:

Permission Modes:

ModeStatusNotes
defaultCovered
dontAskNot coveredFalls back to Default

Tools (Color Mapping + Label Extraction):

Show only not-covered / partial tools.

ToolAdded in VersionColorLabelNotes
PowerShellv2.1.84Not coveredNot coveredWindows only
TaskList(initial)CoveredNot covered

5.2 Gap Details

For items marked Not covered / Partial in the coverage table (excluding Out of scope), output details by priority.

Each gap should include:

  • Item name
  • Added in version
  • Upstream spec: Brief description
  • Current state
  • Affected files

5.3 Summary

Rules for coverage table accuracy:

  1. List adapter match arms before writing: Before writing the table, enumerate ALL string literals in src/adapter/claude.rs's parse() match arms ("session-start", "session-end", etc.). Do not mark an event as "Covered" unless it appears in this enumeration.
  2. Cross-table consistency check: Verify no contradictions between the coverage table and gap details.
  3. All-category completeness check: Verify no gaps are missing for permission modes and tools.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.