upgrade-signal-parsing
**Scope**: Extracting actionable upgrade items from Claude Code release notes, user goal changes, and learning.db retro candidates. Does NOT cover component implementation — only parsing and classification. **Version range**: Claude Code releases, all versions **Generated**:
$ npx -y skills add notque/vexjoy-agent --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
Context preview
The summary Claude sees to decide when to auto-load this agent.
**Scope**: Extracting actionable upgrade items from Claude Code release notes, user goal changes, and learning.db retro candidates. Does NOT cover component implementation — only parsing and classification. **Version range**: Claude Code releases, all versions **Generated**:
Agent definition
upgrade-signal-parsing.mdUpgrade Signal Parsing Reference
> **Scope**: Extracting actionable upgrade items from Claude Code release notes, user goal changes, and learning.db retro candidates. Does NOT cover component implementation — only parsing and classification. > **Version range**: Claude Code releases, all versions > **Generated**: 2026-04-15 — verify signal categories against current release format
---
Overview
Upgrade signals arrive in three forms: Claude Code release notes (feature additions, deprecations, breaking changes), user goal-change statements (new workflows to support), and retro-driven signals from the learning.db graduation queue. Each form requires a different parsing strategy. The most common failure is treating a feature mention as an upgrade requirement without identifying *which component type* is affected.
---
Signal Type Classification
| Signal Form | Entry Point | Affected Components | Urgency Heuristic | |-------------|-------------|--------------------|--------------------| | Claude Code release note | `feat:` / `fix:` / `BREAKING:` prefix | Hooks (new events), agents (new capabilities), routing tables | BREAKING = Critical; new tool = Important; fix = Minor | | User goal change | "from now on", "whenever X", "always Y" | Hooks (behavioral automation), agents (routing triggers) | User-stated = Critical | | Retro graduation | `learning.db` candidates with `status=candidate` | Agent failure modes, skill instructions | Recurrence count drives priority |
---
Pattern Table: Release Note Keywords → Component Types
| Keyword Pattern | Component Type | Change Action | |-----------------|---------------|---------------| | `new tool:`, `added tool` | Agents with `allowed-tools` | Add to `allowed-tools` list | | `deprecated:`, `removed:` | Any component using deprecated API | `deprecate` or `upgrade` | | `BREAKING:` + tool name | All hooks using that tool | `upgrade` — verify event schema | | `hook event:`, `new event type` | Hooks registered for that event | `create-new` or `upgrade` | | `model:`, `default model changed` | Agents with hardcoded model names | `upgrade` — update model field | | `compaction`, `context window` | Hooks monitoring session state | `upgrade` — adjust thresholds |
---
Correct Patterns
Building a Change Manifest from a Release Note
Parse each actionable item as a triple: (what changed, which component types are affected, urgency tier).
## Change Manifest — Claude Code vX.Y
| Signal | Component Types | Change Action | Tier |
|--------|----------------|--------------|------|
| New `Write` tool event type in PostToolUse | Hooks with PostToolUse | Upgrade event schema | Critical |
| Deprecated `--json` flag in bash | Scripts using bash --json | Upgrade call sites | Important |
| New `claude-opus-4-6` model available | Agents with model: sonnet | Review model field | Minor |
**Why**: A manifest without the component-type column causes the AUDIT phase to scan everything. Scoping to component types cuts audit time from O(all) to O(affected).
---
Parsing a User Goal-Change Statement
Extract the automation trigger and the behavioral change. Map trigger → hook event type.
User: "from now on when a file is renamed, update all imports"
Parse:
- Trigger: file renamed (PostToolUse on Write/Edit with path change detection)
- Behavior: update imports (new hook, requires Bash tool)
- Affected: hooks/posttool-rename-sweep.py (exists — upgrade) OR new hook (create-new)
- Urgency: Critical (user-stated)
**Why**: Goal-change statements always imply automation (hooks), not one-time actions. If no existing hook covers the trigger, `create-new` is the right action.
---
Classifying Retro-Driven Signals
Query learning.db for graduated patterns and map to component updates.
# Find retro candidates with recurrence > 2
python3 scripts/learning-db.py list --status candidate --min-count 3
# Find patterns associated with specific component type
python3 scripts/learning-db.py list --component-type agent --status candidate
Map recurrence count to tier:
- Count >= 5: Critical (pattern is systemic, not one-off)
- Count 2-4: Important
- Count 1: Minor (may be noise)
---
<!-- no-pair-required: section header, not a standalone failure mode block -->
Pattern Catalog
Require At Least One Signal Before Proceeding
**Detection**:
# Look for empty Change Manifest tables in task_plan.md
grep -A 5 "Change Manifest" task_plan.md | grep -c "^|"
# Should be > 1 (header row + at least one data row)
**Why this matters**: A zero-signal manifest means the trigger was too vague. The AUDIT phase will scan all components with no scoping, producing noise and wasting time. Phase 1 instructions explicitly say: "If you extracted 0 actionable signals, do not proceed."
Do instead: Ask the user for specifics. Quote the exact feature or change being referenced.
---
Verify Interface Change Before Scheduling Upgrade
**Signal**: A release note mentions "improved JSON output" and the agent immediately schedules upgrades to every script that uses JSON.
**Why this matters**: Not every mention is a breaking change. Only changes that alter the interface (tool signature, event schema, model name) require upgrades.
Do instead: For each signal, ask: "Does this change the interface a component depends on?" If no: Minor or skip. If yes: Important or Critical.
---
Separate Signal Types by Source in Manifest
**Signal**: A single Change Manifest combining release-note signals, user goal-change statements, and retro signals without flagging their source.
**Why this matters**: Each signal type has different urgency heuristics and different component scope. Mixing them without source labels causes the PLAN phase to assign wrong tiers.
Do instead: Separate into sections by signal type. Label each row with its source.
---
Error-Fix Mappings
| Error Message | Root Cause | Fix | |---------------|------------|
Read more
Upgrade Signal Parsing Reference
> **Scope**: Extracting actionable upgrade items from Claude Code release notes, user goal changes, and learning.db retro candidates. Does NOT cover component implementation — only parsing and classification. > **Version range**: Claude Code releases, all versions > **Generated**: 2026-04-15 — verify signal categories against current release format
---
Overview
Upgrade signals arrive in three forms: Claude Code release notes (feature additions, deprecations, breaking changes), user goal-change statements (new workflows to support), and retro-driven signals from the learning.db graduation queue. Each form requires a different parsing strategy. The most common failure is treating a feature mention as an upgrade requirement without identifying *which component type* is affected.
---
Signal Type Classification
| Signal Form | Entry Point | Affected Components | Urgency Heuristic | |-------------|-------------|--------------------|--------------------| | Claude Code release note | `feat:` / `fix:` / `BREAKING:` prefix | Hooks (new events), agents (new capabilities), routing tables | BREAKING = Critical; new tool = Important; fix = Minor | | User goal change | "from now on", "whenever X", "always Y" | Hooks (behavioral automation), agents (routing triggers) | User-stated = Critical | | Retro graduation | `learning.db` candidates with `status=candidate` | Agent failure modes, skill instructions | Recurrence count drives priority |
---
Pattern Table: Release Note Keywords → Component Types
| Keyword Pattern | Component Type | Change Action | |-----------------|---------------|---------------| | `new tool:`, `added tool` | Agents with `allowed-tools` | Add to `allowed-tools` list | | `deprecated:`, `removed:` | Any component using deprecated API | `deprecate` or `upgrade` | | `BREAKING:` + tool name | All hooks using that tool | `upgrade` — verify event schema | | `hook event:`, `new event type` | Hooks registered for that event | `create-new` or `upgrade` | | `model:`, `default model changed` | Agents with hardcoded model names | `upgrade` — update model field | | `compaction`, `context window` | Hooks monitoring session state | `upgrade` — adjust thresholds |
---
Correct Patterns
Building a Change Manifest from a Release Note
Parse each actionable item as a triple: (what changed, which component types are affected, urgency tier).
## Change Manifest — Claude Code vX.Y | Signal | Component Types | Change Action | Tier | |--------|----------------|--------------|------| | New `Write` tool event type in PostToolUse | Hooks with PostToolUse | Upgrade event schema | Critical | | Deprecated `--json` flag in bash | Scripts using bash --json | Upgrade call sites | Important | | New `claude-opus-4-6` model available | Agents with model: sonnet | Review model field | Minor |
**Why**: A manifest without the component-type column causes the AUDIT phase to scan everything. Scoping to component types cuts audit time from O(all) to O(affected).
---
Parsing a User Goal-Change Statement
Extract the automation trigger and the behavioral change. Map trigger → hook event type.
User: "from now on when a file is renamed, update all imports" Parse: - Trigger: file renamed (PostToolUse on Write/Edit with path change detection) - Behavior: update imports (new hook, requires Bash tool) - Affected: hooks/posttool-rename-sweep.py (exists — upgrade) OR new hook (create-new) - Urgency: Critical (user-stated)
**Why**: Goal-change statements always imply automation (hooks), not one-time actions. If no existing hook covers the trigger, `create-new` is the right action.
---
Classifying Retro-Driven Signals
Query learning.db for graduated patterns and map to component updates.
# Find retro candidates with recurrence > 2 python3 scripts/learning-db.py list --status candidate --min-count 3 # Find patterns associated with specific component type python3 scripts/learning-db.py list --component-type agent --status candidate
Map recurrence count to tier:
- Count >= 5: Critical (pattern is systemic, not one-off)
- Count 2-4: Important
- Count 1: Minor (may be noise)
---
<!-- no-pair-required: section header, not a standalone failure mode block -->
Pattern Catalog
Require At Least One Signal Before Proceeding
**Detection**:
# Look for empty Change Manifest tables in task_plan.md grep -A 5 "Change Manifest" task_plan.md | grep -c "^|" # Should be > 1 (header row + at least one data row)
**Why this matters**: A zero-signal manifest means the trigger was too vague. The AUDIT phase will scan all components with no scoping, producing noise and wasting time. Phase 1 instructions explicitly say: "If you extracted 0 actionable signals, do not proceed."
Do instead: Ask the user for specifics. Quote the exact feature or change being referenced.
---
Verify Interface Change Before Scheduling Upgrade
**Signal**: A release note mentions "improved JSON output" and the agent immediately schedules upgrades to every script that uses JSON.
**Why this matters**: Not every mention is a breaking change. Only changes that alter the interface (tool signature, event schema, model name) require upgrades.
Do instead: For each signal, ask: "Does this change the interface a component depends on?" If no: Minor or skip. If yes: Important or Critical.
---
Separate Signal Types by Source in Manifest
**Signal**: A single Change Manifest combining release-note signals, user goal-change statements, and retro signals without flagging their source.
**Why this matters**: Each signal type has different urgency heuristics and different component scope. Mixing them without source labels causes the PLAN phase to assign wrong tiers.
Do instead: Separate into sections by signal type. Label each row with its source.
---
Error-Fix Mappings
| Error Message | Root Cause | Fix | |---------------|------------|
Essays and writing behind this toolkit live at vexjoy.com. AI agents skip steps. "Looks correct" replaces running tests. "Trivial change" replaces verification.
Repo: notque/vexjoy-agent
Other agents on vexjoy-agent.
- ansible-automation-engineer
Ansible automation: playbooks, roles, collections, Molecule testing, Vault security.
Open agent - modules
**Scope**: Module selection patterns, builtin vs command/shell decisions, collection modules, and version-specific module changes **Version range**: ansible-core 2.14+ / Ansible Collections (community.general 7.0+) **Generated**: 2026-04-04 — verify against current Ansible
Open agent - testing
**Scope**: Molecule test scenarios, ansible-lint rules, idempotency validation, and check-mode patterns **Version range**: Molecule 6.0+ / ansible-lint 6.0+ / ansible-core 2.14+ **Generated**: 2026-04-04 — verify against current Molecule and ansible-lint documentation
Open agent - base-instructions
Universal operational rules injected by /do at agent dispatch. Domain-specific rules live in each agent's .md file.
Open agent - communication-patterns
**Scope**: Failure modes in agent output style — over-reporting, self-congratulation, verbose narration, and hedging. Covers what to detect and how to fix each. **Version range**: all versions **Generated**: 2026-05-11
Open agent - combat-effects-upgrade
Zero-dependency combat visual upgrades: CSS particle replacement, Framer Motion combat juice, CSS 3D card transforms.
Open agent

