Skip to content

feat: add change-request skill#122

Open
tigra wants to merge 2 commits into
provectus:mainfrom
tigra:feat/change-request-skill
Open

feat: add change-request skill#122
tigra wants to merge 2 commits into
provectus:mainfrom
tigra:feat/change-request-skill

Conversation

@tigra

@tigra tigra commented May 22, 2026

Copy link
Copy Markdown

What

Adds an opt-in /awos:change-request command that captures why a previously-agreed requirement changed — the trigger, the driver, and its business-level impact on already-implemented work — and saves a numbered record under context/change-requests/.

Files

  • commands/change-request.md + claude/commands/change-request.md wrapper
  • templates/change-request-template.md
  • Integration hooks (opt-in):
    • commands/product.md, commands/roadmap.md — offer a CR before writing the artifact
    • commands/spec.md — offer a CR when a new spec revises a prior requirement

Backward compatibility

All hooks are opt-in: the skill opens with an AskUserQuestion skip option, so existing product / roadmap / spec flows are unchanged unless the user chooses to log a CR.

Validation

  • npm test → 69/69 pass (static prompt lint + installer + fixtures)
  • npx prettier --check . clean

Suggested release-drafter label: minor (new feature skill).

Summary by CodeRabbit

  • New Features
    • New Change Request workflow for documenting and tracking revisions to agreed requirements.
    • Optional prompts to log a change request during product definition, roadmap finalization, and spec drafting.
    • Guided, single-question interview flow with skip/defer options to create or stub a request.
    • Structured change-request template capturing trigger, rationale, nature, impacts on existing requirements, decisions, and follow-ups.

Adds an opt-in /awos:change-request command that captures *why* a
previously-agreed requirement changed (trigger, driver, business-level
impact) and saves a numbered record under context/change-requests/.

- commands/change-request.md + claude/commands/change-request.md wrapper
- templates/change-request-template.md
- integration hooks: product.md, roadmap.md (offer a CR before writing
  the artifact) and spec.md (offer a CR when a new spec revises a
  prior requirement). All hooks are opt-in — the skill opens with a
  skip option, so existing flows are unchanged unless the user opts in.
@coderabbitai

coderabbitai Bot commented May 22, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: cd75b7bb-7f7e-40c4-a985-11760ab5fd21

📥 Commits

Reviewing files that changed from the base of the PR and between ab4f6f1 and 4d28c13.

📒 Files selected for processing (1)
  • commands/spec.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • commands/spec.md

📝 Walkthrough

Walkthrough

Adds an opt-in Change Request Analyst command, a structured change-request template, and optional prompts to product, roadmap, and spec workflows to log requirement changes with interview, impact mapping, and filesystem persistence.

Changes

Change Request Workflow and Integration

Layer / File(s) Summary
Change Request workflow specification and template
commands/change-request.md, templates/change-request-template.md, claude/commands/change-request.md
Introduces the Change Request Analyst flow: opt-in user interview covering trigger, driver, nature (additive/revision/removal), and impact on prior requirements; save mechanics (directory creation, next-CR indexing, kebab-case slug, deferred-stub cleanup); impact mapping table across approved artifacts; and up-to-two follow-up AWOS command suggestions. Provides template form with CR metadata, trigger context, driver reasoning, change nature, requirement impacts table, decision block, and follow-up actions checklist. Adds command metadata stub.
Change Request integration into existing workflows
commands/product.md, commands/roadmap.md, commands/spec.md
Embeds optional change-request prompts into product, roadmap, and spec commands: product-definition Step 3 inserts optional CR logging before template population; roadmap Step 3 finalization adds optional CR prompt (with trigger note) before writing final roadmap; spec Step 5b adds requirement-overlap detection to invoke CR only when new spec revises (not purely additive) prior requirements across roadmap, product-definition, and prior specs.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested labels

minor

Suggested reviewers

  • workshur

Poem

🐰 A rabbit pens a small request,
To note when plans need one more test,
Questions asked, impacts shown,
A tidy file where changes grow,
Hoppity-hop — the roadmap’s blessed.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add change-request skill' directly and clearly describes the main change—introducing a new change-request skill to the codebase.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
commands/change-request.md (1)

45-46: ⚡ Quick win

Consider breaking the business-value principle into sub-bullets.

The principle at line 45 spans multiple concerns (stay at business level, no technical detail, exception for architecture) in a single dense paragraph. Breaking it into a main bullet with sub-bullets would improve scannability:

-- **Stay at the business-value level; no technical implementation detail in the CR.** A change request records _why_ a previously-agreed requirement is changing and _what business capability_ moves as a result — not how the code will be reorganised. Do not name source files, function signatures, interface seams, test files, flag names, module boundaries, or step-by-step refactoring plans in any section of the CR. Those belong in the technical-considerations doc and tasks list that follow. Stop at the level of "capability X is added / replaced / withdrawn", "artifact Y is rescoped", "previously-completed work Z remains valid as the local-mode baseline".
-  - **Exception — when architecture _is_ the business matter.** If the product's stated purpose is to _demonstrate certain architectural patterns_ (e.g., a reference / training / capability-showcase project), then naming those patterns at a high level _is_ the business statement and belongs in the CR. Even then, name the pattern (e.g., "OAuth2 as the authentication model") rather than the implementation (e.g., "extract a `TokenStore` interface from the session module"). Resist the urge to descend into implementation just because architecture is in scope.
+- **Stay at the business-value level; no technical implementation detail in the CR.** 
+  - A change request records _why_ a previously-agreed requirement is changing and _what business capability_ moves as a result — not how the code will be reorganised.
+  - Do not name source files, function signatures, interface seams, test files, flag names, module boundaries, or step-by-step refactoring plans.
+  - Stop at the level of "capability X is added / replaced / withdrawn", "artifact Y is rescoped".
+  - **Exception:** If the product's stated purpose is to _demonstrate architectural patterns_ (e.g., reference/training project), naming those patterns at a high level _is_ the business statement. Even then, name the pattern (e.g., "OAuth2 authentication") rather than implementation (e.g., "extract a `TokenStore` interface").
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@commands/change-request.md` around lines 45 - 46, Split the long "Stay at the
business-value level; no technical implementation detail in the CR." bullet into
a main bullet and 2–3 sub-bullets: one sub-bullet stating "Record why
requirements change and which business capability is added/replaced/withdrawn"
(examples: "capability X is added / replaced / withdrawn"), a second sub-bullet
explicitly forbidding naming implementation artifacts (source files, function
signatures, tests, flags, module boundaries, refactoring steps), and a separate
sub-bullet for the exception: move the existing "Exception — when architecture
_is_ the business matter." sentence into its own sub-bullet and reword it to
focus on naming architectural patterns (e.g., "OAuth2 as the authentication
model") rather than implementation details; keep the example sentence about
naming patterns vs. implementation but remove any procedural phrasing.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@templates/change-request-template.md`:
- Line 47: The template heading "**Could this have been anticipated earlier?**"
is presented as a required bracketed field but should match the command spec in
commands/change-request.md which describes it as "Optional, lightweight —
captures lessons"; update the template so the field is explicitly optional
(e.g., change the bracketed text to "[optional — captures lessons]") or
alternatively append guidance such as "[optional; leave empty if not
applicable]" to that same heading to make the intent clear and consistent with
the spec.

---

Nitpick comments:
In `@commands/change-request.md`:
- Around line 45-46: Split the long "Stay at the business-value level; no
technical implementation detail in the CR." bullet into a main bullet and 2–3
sub-bullets: one sub-bullet stating "Record why requirements change and which
business capability is added/replaced/withdrawn" (examples: "capability X is
added / replaced / withdrawn"), a second sub-bullet explicitly forbidding naming
implementation artifacts (source files, function signatures, tests, flags,
module boundaries, refactoring steps), and a separate sub-bullet for the
exception: move the existing "Exception — when architecture _is_ the business
matter." sentence into its own sub-bullet and reword it to focus on naming
architectural patterns (e.g., "OAuth2 as the authentication model") rather than
implementation details; keep the example sentence about naming patterns vs.
implementation but remove any procedural phrasing.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f63d3767-f928-4d70-8fac-a168f195b197

📥 Commits

Reviewing files that changed from the base of the PR and between 8c7f34c and ab4f6f1.

📒 Files selected for processing (6)
  • claude/commands/change-request.md
  • commands/change-request.md
  • commands/product.md
  • commands/roadmap.md
  • commands/spec.md
  • templates/change-request-template.md


**Detailed reasoning:** [free text — what specifically led here, in the author's own words; cite the trigger if there is one]

**Could this have been anticipated earlier?** [optional — captures lessons]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Mark optional field consistently with command spec.

Line 84 in commands/change-request.md describes this field as "Optional, lightweight — captures lessons," but the template presents it as a required [bracketed] field. Consider either:

  1. Making it optional in the template: **Could this have been anticipated earlier?** [optional — captures lessons]
  2. Or including guidance that it can be left empty: [optional; leave empty if not applicable]
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@templates/change-request-template.md` at line 47, The template heading
"**Could this have been anticipated earlier?**" is presented as a required
bracketed field but should match the command spec in commands/change-request.md
which describes it as "Optional, lightweight — captures lessons"; update the
template so the field is explicitly optional (e.g., change the bracketed text to
"[optional — captures lessons]") or alternatively append guidance such as
"[optional; leave empty if not applicable]" to that same heading to make the
intent clear and consistent with the spec.

tigra pushed a commit to tigra/awos that referenced this pull request Jun 1, 2026
Supersedes provectus#122provectus#125. Following the architectural review in #proj_awos,
the three skills ship as a plugin sibling to plugins/awos rather than
modifying core commands — keeps the spec→tech→tasks→implement→verify
pipeline lean and removes the perpetual upstream-merge conflict surface
the prior branches created.

Discoverability is bundled with the plugin: a UserPromptSubmit hook
declared inline in plugin.json (bug #10225 workaround — hooks/hooks.json
does not fire) matches 6 core AWOS phases plus the 3 plugin commands;
the awos-next skill conditionally suggests a plugin command via
free-text inspection of the just-completed phase's output, staying
silent when uncertain.

Test additions stay generic: one new Layer 1 assertion that every
plugin SKILL.md has valid frontmatter, plus explicit hardcoded
entries per plugin-contributed command in the /awos:<name>
cross-reference test (independent ground truth, not SUT-derived).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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