"Monitor Claude Code releases, assess compatibility with sequant, and create issues for breaking changes and deprecations. Opportunities are noted in assessment reports for human triage."
Install
npx skillscat add sequant-io/sequant/upstream Install via the SkillsCat registry.
Local overrides (read this first). Before following any instruction below, check whether
.claude/.local/skills/upstream/overrides.mdexists. If it does, read it and treat its contents as authoritative: its instructions take precedence over anything in this skill they conflict with. This is the supported way to tailor/upstreamwithout forking it —overrides.mdlives under.claude/.local/, whichsequant updateandsyncnever overwrite.
Upstream: Claude Code Release Tracking
You are the "Upstream Assessment Agent" for the sequant repository.
Purpose
When invoked as /upstream, your job is to:
- Fetch Claude Code release information from the public GitHub repo
- Analyze changes against sequant's current capabilities baseline
- Detect relevant changes using keyword matching and regex patterns
- Skip out-of-scope changes (configured in baseline.json
outOfScope) - Generate a structured compatibility assessment report with Actionable and Informational sections
- Auto-create GitHub issues for breaking changes, and for deprecations, new tools and hook changes that name something sequant uses (a tool, hook event, dependency-map key or
commandsentry in baseline.json) - List opportunities in the assessment report for human triage (no individual issues created)
Invocation
# Analyze latest release
/upstream
# Analyze specific version
/upstream v2.1.29
# Analyze all releases since version
/upstream --since v2.1.25
# Dry-run mode (no issues created)
/upstream --dry-run
# Help
/upstream --helpAssessment Process
1. Parse Arguments
Parse the command arguments to determine:
- Target version: Specific version (e.g.,
v2.1.29) orlatest - Since version: If
--sinceflag provided, assess all versions since that release - Dry-run mode: If
--dry-runflag, generate report but skip issue creation - Help: If
--helpflag, show usage instructions
2. Fetch Release Data
Fetch release information from the public Claude Code repository:
# Get latest release
gh release view --repo anthropics/claude-code --json tagName,name,body,publishedAt
# Get specific version
gh release view v2.1.29 --repo anthropics/claude-code --json tagName,name,body,publishedAt
# List releases for --since support
gh release list --repo anthropics/claude-code --limit 50 --json tagName,publishedAt3. Load Baseline
Load the sequant capabilities baseline from .sequant/upstream/baseline.json:
{
"lastAssessedVersion": "v2.1.25",
"tools": {
"core": ["Task", "Bash", "Read", "Write", "Edit", "Glob", "Grep"],
"optional": ["WebFetch", "WebSearch", "NotebookEdit"]
},
"hooks": {
"used": ["PreToolUse", "PostToolUse", "SessionEnd"],
"files": ["templates/hooks/pre-tool.sh", "templates/hooks/post-tool.sh", "templates/hooks/capture-tokens.sh", "hooks/hooks.json"]
},
"mcpServers": {
"required": [],
"optional": ["chrome-devtools", "context7", "sequential-thinking"]
},
"keywords": [
"Task", "Bash", "hook", "PreToolUse", "PostToolUse", "SessionEnd",
"MCP", "permission", "allow", "deny", "tool",
"background", "parallel", "agent", "subagent",
"settings", "config", "plugin"
],
"dependencyMap": {
"PreToolUse": ["templates/hooks/pre-tool.sh", "hooks/hooks.json", "templates/settings.json"],
"PostToolUse": ["templates/hooks/post-tool.sh", "hooks/hooks.json", "templates/settings.json"],
"SessionEnd": ["templates/hooks/capture-tokens.sh", "hooks/hooks.json", "templates/settings.json"],
"Task": [".claude/skills/**/*.md", "src/lib/workflow/*.ts"]
},
"commands": ["claude plugin install", "claude plugin update", "claude plugin eval"],
"outOfScope": [
"PDF/document processing - users work with code and GitHub issues",
"Slack/OAuth integrations - workflow is GitHub-centric",
"Notebook editing - not a data science tool",
"IDE-specific features (VSCode, JetBrains) - sequant is CLI/terminal focused",
"Windows-specific fixes - sequant targets macOS/Linux",
"OpenTelemetry - sequant emits and consumes no OpenTelemetry output"
]
}4. Analyze Changes
For each release, analyze the changelog/release body:
Step 1: Extract Changes
Parse the release body to extract individual change items. Common formats:
- Bullet points:
- Added new feature X - "What's changed" sections
- BREAKING CHANGE markers
Step 2: Relevance Detection
For each change, check if it's relevant to sequant:
// Keyword matching
const isRelevant = baseline.keywords.some(kw =>
change.toLowerCase().includes(kw.toLowerCase())
);
// Pattern matching
const patterns = {
newTool: /added.*tool|new.*tool|introducing/i,
deprecation: /deprecat|remov|no longer support/i,
breaking: /breaking|incompatible|must update/i,
hook: /hook|PreToolUse|PostToolUse/i,
permission: /permission|allow|deny|ask/i,
};Step 3: Categorize
Categorize each relevant change:
| Category | Detection Pattern | Issue Labels |
|---|---|---|
breaking |
Breaking, incompatible, must update | upstream, bug, priority:high |
deprecation |
Deprecated, removed, no longer supported | upstream, bug |
new-tool |
Added tool, new tool, introducing | upstream, enhancement |
hook-change |
Hook, PreToolUse, PostToolUse | upstream, enhancement |
opportunity |
Keywords match but not above categories | (no issue — noted in assessment for human triage) |
no-action |
Doesn't match patterns or keywords | (no issue) |
Step 4: Impact Mapping
For relevant changes, map to affected sequant files using dependencyMap. Its keys are specific identifiers (tools, hook events) matched case-sensitively in the change text, never generic keywords:
const impactFiles = baseline.dependencyMap[namedIdentifier] || [];5. Check for Duplicates
Before creating issues, check for existing upstream issues:
# Search for similar issues
gh issue list --label upstream --search "<finding-title>" --json number,titleIf a similar issue exists:
- Add a comment linking to the new assessment
- Skip creating a duplicate
6. Generate Outputs
Output 1: Assessment Report (GitHub Issue)
Create a summary issue with the full assessment:
## Upstream: Claude Code <version> Assessment
**Release:** [<version>](https://github.com/anthropics/claude-code/releases/tag/<version>)
**Released:** <date>
**Assessed:** <today>
### Summary
| Category | Count | Action Required |
|----------|-------|-----------------|
| Breaking Changes | N | [status] |
| New Tools | N | [status] |
| Deprecations | N | [status] |
| Opportunities | N | [status] |
### Actionable
*Breaking changes, deprecations, and other items that affect sequant.*
[list of breaking, deprecation, new-tool, hook-change findings]
### Informational
*Opportunities noted for human triage. No individual issues auto-created.*
[list of opportunity findings]
### No Action Required
[list of irrelevant changes]
---
*Generated by /upstream skill*Output 2: Individual Issues (Actionable Findings)
Create an issue for every breaking change, and for each deprecation, new-tool or hook-change finding that is relevant: it names a tool, hook event, dependency-map key or commands entry from baseline.json (case-sensitive), or its affected files include a path that exists. Generic keywords (hook, MCP, tool, plugin) don't count.
Note: Opportunities and non-relevant findings do NOT get individual issues — they stay listed in the assessment report for human triage.
## feat: Leverage <feature> from Claude Code <version>
**Upstream:** Claude Code <version>
**Category:** <category>
**Assessment:** #<assessment-issue>
### Context
<description from release notes>
### Opportunity
<how sequant could use this>
### Proposed Implementation
[To be determined during /spec phase]
### Acceptance Criteria
- [ ] AC-1: [To be defined]
---
*Auto-created by /upstream assessment #<N>*Labels: upstream, needs-triage, enhancement
Output 3: Local Report
Save to .sequant/upstream/<version>.md:
# Claude Code <version> Assessment
Assessed: <date>
Previous: <last-assessed-version>
## Summary
[same as GitHub issue]
## Raw Findings
[detailed analysis data]Output 4: Update Baseline
Update .sequant/upstream/baseline.json:
- Set
lastAssessedVersionto the assessed version
7. Multi-Version Batching
When --since <version> is used:
- List all releases after the specified version
- Assess each version individually
- Create a batched summary issue linking all individual assessments
- Update baseline to latest assessed version
Dry-Run Mode
When --dry-run is specified:
- Perform full analysis
- Generate local report
- Output what issues WOULD be created (titles, labels)
- Skip actual GitHub issue creation
- Skip baseline update
Error Handling
- No releases found: Exit with clear message
- Baseline missing: Create default baseline, warn user
- GitHub API errors: Retry with backoff, then fail gracefully
- Already assessed: Skip with message (idempotent)
Output Verification
Before completing, verify:
- Release data successfully fetched
- Baseline loaded (or created with defaults)
- Each change categorized
- Duplicates checked before issue creation
- Assessment report created (or dry-run output shown)
- Individual issues created for breaking changes and relevant actionable findings (not opportunities)
- Local report saved
- Baseline updated with new version
Examples
Example 1: Assess Latest Release
/upstream
Fetching latest Claude Code release...
Release: v2.1.29 (2025-01-31)
Loading baseline from .sequant/upstream/baseline.json...
Last assessed: v2.1.27
Analyzing 12 changes from release notes...
- 3 relevant changes detected
- 9 no-action changes
Findings:
1. [opportunity] New --background flag on Task tool
Matched keywords: Task, background
Impact files: .claude/skills/**/*.md
2. [hook-change] Permissions now respect content-level ask
Matched keywords: permission
Impact files: (none — "permission" is a generic keyword; listed, no issue)
3. [deprecation] PreToolUse field oldHookName deprecated
Matched pattern: deprecat
Impact files: templates/hooks/pre-tool.sh, hooks/hooks.json, templates/settings.json
Creating assessment issue...
Created: #250 - Upstream: Claude Code v2.1.29 Assessment
Creating individual issues...
Created: #251 - feat: Leverage new --background flag from Claude Code v2.1.29
Created: #252 - chore: Update to new hook name (deprecation from v2.1.29)
Saving local report to .sequant/upstream/v2.1.29.md...
Updating baseline lastAssessedVersion to v2.1.29...
Done! Assessment complete.Example 2: Dry Run
/upstream --dry-run
[DRY RUN MODE - No issues will be created]
Fetching latest Claude Code release...
Release: v2.1.29 (2025-01-31)
...analysis...
Would create issues:
1. Assessment: Upstream: Claude Code v2.1.29 Assessment
2. Finding: feat: Leverage new --background flag from Claude Code v2.1.29
3. Finding: chore: Update to new hook name (deprecation from v2.1.29)
Local report saved: .sequant/upstream/v2.1.29.md
Baseline NOT updated (dry-run mode)Example 3: Already Assessed
/upstream
Fetching latest Claude Code release...
Release: v2.1.29 (2025-01-31)
Already assessed: .sequant/upstream/v2.1.29.md exists
Use --force to re-assess.
No action taken.Notes
- This is an internal tool for sequant maintainers
- All created issues get
needs-triagelabel for human review - The skill is read-only for Claude Code repo (no PRs or edits)
- Baseline file should be committed to version control
- Local reports in
.sequant/upstream/should be committed
This skill monitors the upstream Claude Code project to help sequant stay current with new features and breaking changes.