AGENT SKILL

openspec-sync-specs

Sync delta specs from a change to main specs. Use when the user wants to update main specs with changes from a delta spec, without archiving the change.

License 许可
MIT
所属仓库
psacc/omnisess
最近更新
2026-11-12
Stars
★ 1
Forks
1

01 前言 Front Matter

name
openspec-sync-specs
license
MIT
metadata
{ "author": "openspec", "version": "1.0", "generatedBy": "1.1.1" }
description
Sync delta specs from a change to main specs. Use when the user wants to update main specs with changes from a delta spec, without archiving the change.
compatibility
Requires openspec CLI.

02 资源文件 20

03 SKILL.md 正文

Sync delta specs from a change to main specs.

This is an agent-driven operation - you will read delta specs and directly edit main specs to apply the changes. This allows intelligent merging (e.g., adding a scenario without copying the entire requirement).

Input: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.

Steps

  1. If no change name provided, prompt for selection

    Run openspec list --json to get available changes. Use the AskUserQuestion tool to let the user select.

    Show changes that have delta specs (under specs/ directory).

    IMPORTANT: Do NOT guess or auto-select a change. Always let the user choose.

  2. Find delta specs

    Look for delta spec files in openspec/changes/<name>/specs/*/spec.md.

    Each delta spec file contains sections like:

    • ## ADDED Requirements - New requirements to add
    • ## MODIFIED Requirements - Changes to existing requirements
    • ## REMOVED Requirements - Requirements to remove
    • ## RENAMED Requirements - Requirements to rename (FROM:/TO: format)

    If no delta specs found, inform user and stop.

  3. For each delta spec, apply changes to main specs

    For each capability with a delta spec at openspec/changes/<name>/specs/<capability>/spec.md:

    a. Read the delta spec to understand the intended changes

    b. Read the main spec at openspec/specs/<capability>/spec.md (may not exist yet)

    c. Apply changes intelligently:

    ADDED Requirements:

    • If requirement doesn't exist in main spec → add it
    • If requirement already exists → update it to match (treat as implicit MODIFIED)

    MODIFIED Requirements:

    • Find the requirement in main spec
    • Apply the changes - this can be:
      • Adding new scenarios (don't need to copy existing ones)
      • Modifying existing scenarios
      • Changing the requirement description
    • Preserve scenarios/content not mentioned in the delta

    REMOVED Requirements:

    • Remove the entire requirement block from main spec

    RENAMED Requirements:

    • Find the FROM requirement, rename to TO

    d. Create new main spec if capability doesn't exist yet:

    • Create openspec/specs/<capability>/spec.md
    • Add Purpose section (can be brief, mark as TBD)
    • Add Requirements section with the ADDED requirements
  4. Show summary

    After applying all changes, summarize:

    • Which capabilities were updated
    • What changes were made (requirements added/modified/removed/renamed)

Delta Spec Format Reference

## ADDED Requirements

### Requirement: New Feature
The system SHALL do something new.

#### Scenario: Basic case
- **WHEN** user does X
- **THEN** system does Y

## MODIFIED Requirements

### Requirement: Existing Feature
#### Scenario: New scenario to add
- **WHEN** user does A
- **THEN** system does B

## REMOVED Requirements

### Requirement: Deprecated Feature

## RENAMED Requirements

- FROM: `### Requirement: Old Name`
- TO: `### Requirement: New Name`

Key Principle: Intelligent Merging

Unlike programmatic merging, you can apply partial updates:

  • To add a scenario, just include that scenario under MODIFIED - don't copy existing scenarios
  • The delta represents intent, not a wholesale replacement
  • Use your judgment to merge changes sensibly

Output On Success

## Specs Synced: <change-name>

Updated main specs:

**<capability-1>**:
- Added requirement: "New Feature"
- Modified requirement: "Existing Feature" (added 1 scenario)

**<capability-2>**:
- Created new spec file
- Added requirement: "Another Feature"

Main specs are now updated. The change remains active - archive when implementation is complete.

Guardrails

  • Read both delta and main specs before making changes
  • Preserve existing content not mentioned in delta
  • If something is unclear, ask for clarification
  • Show what you're changing as you go
  • The operation should be idempotent - running twice should give same result

04 同仓库更多 Skills

psacc
psacc/omnisess

stats

Show tool-call counts and file-I/O activity from the transcript SQLite index. Aggregates Read/Write/Edit file paths, line counts, token usage, and error flags across a time window (default 7d) or for a single session. Use this skill when asked which tools were used most, which files saw the most activity, how many tokens were spent, or to inspect a single session's tool-call summary. Trigger phrases: "session stats", "tool stats", "what tools did I use", "tool usage", "files touched", "token usage", "stats for last week", "summarize tool calls", "session tool breakdown".

★ 1
psacc
psacc/omnisess

skills-audit

Classify agent skills by usage tier (Keep / Borderline / Archive / Unknown) using Claude Code session JSONL transcripts as the signal source. Read-only — never modifies skills, sessions, or any file on disk. Use this skill when asked to audit skills, find unused skills, classify skills, check which skills get used, produce a skill usage report, or prune skills. Trigger phrases: "audit skills", "find unused skills", "classify skills", "which skills do I use", "skill usage report", "prune skills", "what skills are unused", "skills I can remove", "trim my skill list". Output is a recommendation (Keep / Borderline / Archive) — acting on it is always a manual step.

★ 1
psacc
psacc/omnisess

show

Show the full detail of a single AI coding session by its ID. Session IDs are in the format <tool>:<id> (e.g., claude:5c3f2742, cursor:a1b2c3d4). Use this skill when asked to show a specific session, inspect a session, read a session, or view the messages in a session. Trigger phrases: "show session", "open session", "inspect session", "read session", "show me claude:5c3f2742", "view session details", "what happened in session".

★ 1
psacc
psacc/omnisess

search

Full-text search across all AI coding sessions (Claude Code, Cursor, Codex, GitHub Copilot CLI). Use this skill when asked to search sessions, find a conversation about a topic, look up what was discussed in past sessions, or find sessions mentioning specific code or concepts. Trigger phrases: "search sessions", "find sessions about", "look up in sessions", "what did I discuss about", "find conversation about", "search my history".

★ 1
psacc
psacc/omnisess

recap

Produce a structured markdown briefing of AI coding sessions for a given time window. Groups sessions by project and summarizes each group with intent, outcome, and status. Use this skill when asked to recap recent coding work, summarize today's sessions, show what was worked on, or produce a daily/weekly session summary. Trigger phrases: "recap", "what did I work on", "daily summary", "session summary", "summarize my sessions", "what sessions did I have today", "coding recap". This is the sessions-only public version — no Slack, Jira, or Granola integration.

★ 1
psacc
psacc/omnisess

ps

Show live Claude Code and Codex sessions as a process tree, grouped by shared ancestor chain up to launchd. Covers Claude CLI sessions, Claude Desktop agent mode, and Codex sessions (CLI TUI + Codex.app threads). Use this skill when asked about the process tree, ancestor lineage, which terminal or tmux window a Claude or Codex session is running in, or what's currently running. Trigger phrases: "process tree", "what's running", "lineage", "ancestor chain", "which terminal is my claude in", "tmux tree", "claude process tree", "codex process tree", "session lineage". macOS-only: on other platforms the command prints "unsupported" and exits 0.

★ 1