Skip to content

feat: overhaul Claude Code automation — agents, skills, hooks, docs#1307

Merged
jeremyeder merged 1 commit intomainfrom
feature/claude-automation-overhaul
Apr 14, 2026
Merged

feat: overhaul Claude Code automation — agents, skills, hooks, docs#1307
jeremyeder merged 1 commit intomainfrom
feature/claude-automation-overhaul

Conversation

@jeremyeder
Copy link
Copy Markdown
Contributor

@jeremyeder jeremyeder commented Apr 14, 2026

Summary

  • Consolidate convention docs from .claude/context/ and .claude/patterns/ into component-level files (components/*/DEVELOPMENT.md, *_PATTERNS.md), eliminating stale paths
  • Create 6 per-component review agents (backend, frontend, operator, runner, security, convention-eval) with consistent structure, severity levels, and grep-based checks
  • Overhaul 3 existing skills (dev-cluster, pr-fixer, unleash-flag) and promote 2 commands to skills (amber-review, cypress-demo) per Anthropic skill-creator standard with evals
  • Add 3 new skills (/align for convention scoring, /scaffold for integration/endpoint templates, /memory for auto-memory management)
  • Add 7 enforcement hooks in .claude/settings.json (Shadcn UI, no manual fetch, service account misuse, no panic, skill-creator standard, feature flag nudge, stop review nudge)
  • Delete 11 obsolete commands (9 speckit + acp-compile + 2 promoted); keep jira.log.md as-is

Supersedes #1293 (moved from fork to org branch for Amber compatibility).

Test plan

  • Verify all newly-added paths exist in the repo
  • Confirm BOOKMARKS.md links resolve correctly
  • Test hooks: create a .tsx file with <button → verify Shadcn reminder fires
  • Test hooks: edit a handler with panic( → verify panic reminder fires
  • Invoke /align → verify convention-eval agent dispatches and produces scored report
  • Invoke /amber-review → verify it loads component-level docs (not old .claude/context/ paths)
  • Invoke /scaffold integration test-provider → verify checklist output
  • Invoke /memory audit → verify it scans memory directory

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added multiple automated review agents and a convention-alignment check plus new skills: align, memory, scaffold, cypress-demo, dev-cluster, amber-review/pr-fixer updates, and feature-flag tooling with evaluation fixtures.
  • Removed
    • Deleted several speckit workflow command docs and legacy compile/demo command docs.
  • Docs
    • Consolidated and updated development, operator, and security conventions and component guides.
  • Chores
    • Added editor pre-write hooks and a stop-hook script to surface best-practice reminders.

@jeremyeder
Copy link
Copy Markdown
Contributor Author

@ambient-code

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 14, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a review/automation layer: multiple new .claude/agents and .claude/skills docs and evals, a new .claude/settings.json with pre-tool hooks and a Stop hook, a stop-hook script, many new skill eval fixtures, updates to global/component convention docs, and removal of numerous .claude/commands/* speckit and demo command docs.

Changes

Cohort / File(s) Summary
Agent Definitions
.claude/agents/convention-eval.md, .claude/agents/backend-review.md, .claude/agents/frontend-review.md, .claude/agents/operator-review.md, .claude/agents/runner-review.md, .claude/agents/security-review.md
Added multiple agent configuration documents describing scoped convention checks (IDs B1–B8, F1–F8, O1–O7, R1–R4, S1–S7), grep/bash tooling, standardized Markdown outputs and scoring rules.
Removed Agent Link
.claude/agents
Deleted file that referenced ../agents.
Skill Definitions & Eval Fixtures
.claude/skills/align/SKILL.md, .claude/skills/align/evals/evals.json, .claude/skills/amber-review/..., .claude/skills/cypress-demo/..., .claude/skills/dev-cluster/..., .claude/skills/memory/..., .claude/skills/pr-fixer/..., .claude/skills/scaffold/..., .claude/skills/unleash-flag/...
Added many skill docs and evaluation JSONs defining triggers, workflows, and test cases (align, amber-review, cypress-demo, dev-cluster, memory, pr-fixer, scaffold, unleash-flag, etc.).
Removed Command Docs (Speckit & Others)
.claude/commands/speckit.*, .claude/commands/acp-compile.md, .claude/commands/cypress-demo.md
Deleted the speckit command suite and several command docs, removing planning/clarify/plan/implement/tasks/checklist command specifications and other command pages.
Settings & Hooks
.claude/settings.json, scripts/claude-hooks/stop-review.sh
Added Claude pre-tool-use hooks matching file globs and a Stop hook; added a stop-hook script that checks git status and prompts to run /amber-review when repo is dirty.
Global Conventions & Bookmarks
CLAUDE.md, BOOKMARKS.md, docs/security-standards.md
Renamed/rewrote Critical Context → Critical Conventions, added global guidelines (e.g., redact tokens, recommend feature-flag gating), updated bookmarks to point at component-scoped guides, and trimmed recent-issues sections.
Component Docs & Patterns
components/operator/DEVELOPMENT.md, components/backend/DEVELOPMENT.md, components/frontend/DEVELOPMENT.md, components/backend/ERROR_PATTERNS.md, components/backend/K8S_CLIENT_PATTERNS.md, components/frontend/REACT_QUERY_PATTERNS.md
Added an operator development guide (OwnerReferences, SecurityContext, resource requirements, reconcile error-handling, ctx propagation), inserted CLAUDE convention references, and removed “Recent Issues” from backend/frontend docs.
Miscellaneous
.claude/commands/jira.log.md, BOOKMARKS.md
Updated jira.log to validate/normalize issue types (`Story

Sequence Diagram(s)

sequenceDiagram
  actor User
  participant Editor
  participant ClaudeSettings as "Claude Settings / Hooks"
  participant AgentSkill as "Agent/Skill"
  participant Repo as "Repository / Filesystem"
  participant StopHook as "stop-review.sh"

  User->>Editor: edit/write files
  Editor->>ClaudeSettings: PreToolUse hook triggered (glob match)
  ClaudeSettings->>AgentSkill: dispatch agent/skill (e.g., convention-eval, backend-review)
  AgentSkill->>Repo: read/search files, run grep/glob/bash checks
  Repo-->>AgentSkill: findings/report
  AgentSkill-->>ClaudeSettings: formatted markdown output
  ClaudeSettings->>User: present findings/prompts
  Note over User,StopHook: On Stop phase
  ClaudeSettings->>StopHook: invoke Stop hook
  StopHook->>Repo: git status --porcelain
  Repo-->>StopHook: clean/dirty
  StopHook-->>User: message (ask to run /amber-review if dirty)
Loading
🚥 Pre-merge checks | ✅ 6
✅ Passed checks (6 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Title follows Conventional Commits format with type 'feat' and descriptive scope covering the main overhaul of Claude automation systems.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Performance And Algorithmic Complexity ✅ Passed PR contains only documentation, configuration, and a minimal 14-line bash script with no performance-critical code, loops, caches, or expensive operations.
Security And Secret Handling ✅ Passed PR contains only documentation, config files, and shell scripts. No production code changes or hardcoded credentials. Security agents enforce token redaction, scoped clients, and secret constraints.
Kubernetes Resource Safety ✅ Passed PR contains only documentation, agents, and tooling—no Kubernetes resource manifests modified. Safety practices (OwnerReferences, SecurityContext, resource limits) are formalized and automated through new agent definitions.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/claude-automation-overhaul
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch feature/claude-automation-overhaul

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

@ambient-code ambient-code bot added the ambient-code:managed PR managed by AI automation label Apr 14, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 9

🧹 Nitpick comments (1)
.claude/skills/pr-fixer/evals/evals.json (1)

3-19: Good core coverage; add one URL-form PR case to harden extraction.

Current fixtures are solid for direct and natural-language forms. Consider adding a case like fix https://github.com/org/repo/pull/1234 (or PR 1234. with punctuation) to prevent regex regressions.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/pr-fixer/evals/evals.json around lines 3 - 19, Add an
additional fixture to the evals cases that verifies URL-based and
punctuation-trailing PR extraction so the pr-fixer skill handles inputs like
"fix https://github.com/org/repo/pull/1234" and "PR 1234." Update the JSON array
(near the existing entries with "input": "/pr-fixer 1234" and "input": "fix PR
1234") to include a new object whose "input" is the URL form and whose
"expected_args" maps to "1234" and "expected_tool_call" is "Skill" with "skill":
"pr-fixer"; ensure the description notes URL and punctuation variants so the
regex extraction logic in the pr-fixer handler (the component that parses inputs
into args) is exercised by this fixture.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/agents/operator-review.md:
- Around line 36-41: The O2/O6 checks are not machine-enforceable because they
lack concrete detection patterns; add explicit grep/rg rules and/or a required
checklist field so automated agents can detect violations: define and document
exact regexes to search for in controller code (e.g., search for
"errors.IsNotFound" usages that do not return nil, patterns where transient
errors are not returned to trigger requeue, and places updating CR status to
"Failed" but still returning errors), add these patterns to the agent ruleset
and/or add mandatory manual-procedure metadata fields (e.g.,
"reconciliation_check_patterns" containing the regexes) so the agent can run rg
against functions like Reconcile, reconcile, and any usages of errors.IsNotFound
and status.Update to enforce O2/O6.
- Around line 31-35: The current grep pattern misses multi-line builder chains;
update the scan to detect creation calls irrespective of same-line resource type
by searching for client.Create(...) / .Create( across files (or use rg -U to
allow multiline) in components/operator and then cross-reference the enclosing
function for OwnerReferences usage; alternatively replace the fragile grep with
a small Go AST check that finds calls to client.Create (or ctrlClient.Create/
k8s client Create) and verifies the created object's metadata.OwnerReferences is
set per DEVELOPMENT.md, referencing OwnerReferences, Create and the functions
that call them.

In @.claude/agents/security-review.md:
- Around line 26-49: Add executable detection criteria for each security check
S1–S6 so they can be automated: for S1 ensure handlers call
GetK8sClientsForRequest(c) for user flows and flag usage of service account
clients without preceding RBAC validation; for S2 verify code paths perform a
SelfSubjectAccessReview (or equivalent function) before accessing user-scoped
resources; for S3 search for token exposure in logs/responses and enforce
redaction using len(token) logging pattern instead of full token strings; for S4
add concrete input validators (DNS label regex, url.Parse usage, strip/escape
newlines) and fail when missing; for S5 detect PodSpec settings and require
SecurityContext.AllowPrivilegeEscalation == false and
SecurityContext.Capabilities.Drop includes "ALL"; for S6 require Secret creation
sites to set OwnerReferences pointing to the creating resource (e.g. controller
UID) and flag creations lacking OwnerReferences so these checks produce
actionable pass/fail signals.

In @.claude/skills/cypress-demo/SKILL.md:
- Line 80: The README claim that `sessions.cy.ts` is a "complete working
example" is inaccurate because that test file lacks the synthetic cursor, click
effects, and caption bar behavior described; either update the text in SKILL.md
to remove or qualify the "complete working example" statement and point to the
actual demo implementation, or modify the `sessions.cy.ts` test to include the
missing demo features (add the synthetic cursor utility, click-effect code, and
caption bar rendering/mocks) so it truly demonstrates the pattern; reference
`sessions.cy.ts`, the synthetic cursor/click-effect utilities, and the caption
bar feature in your change to ensure the documentation and example match.
- Around line 58-59: The documentation refers to helper functions caption(),
clearCaption(), initCursor(), moveTo(), moveToText(), clickEffect(),
cursorClickText() and timing constants LONG, PAUSE, SHORT, TYPE_DELAY as if they
live in e2e/cypress/e2e/sessions.cy.ts, but those symbols aren't present; locate
the actual source file that defines these helpers (or the canonical reference
implementation) in the repo, then update SKILL.md to point to that correct file
path (or copy the helper implementations into the referenced sessions.cy.ts if
that was the intention), and ensure the doc lists the exact symbol names and
their new location so readers can find caption(), clearCaption(), initCursor(),
moveTo(), moveToText(), clickEffect(), cursorClickText(), LONG, PAUSE, SHORT,
and TYPE_DELAY.
- Line 50: The curl check in the SKILL.md uses an incomplete URL (`curl -s -o
/dev/null -w "%{http_code}" http://localhost`) that omits the frontend port;
update the example to include the correct dev port (e.g., :3000 or :8080) or
make the port configurable in the instructions so the `curl` command targets the
actual frontend host:port; edit the line containing the curl command in SKILL.md
to show a concrete working example (for example using :3000) or indicate how to
substitute the correct port.

In @.claude/skills/pr-fixer/SKILL.md:
- Around line 25-27: Clarify that the `gh pr view` state is case-sensitive and
returned in uppercase (OPEN, CLOSED, MERGED) and update the text around the `gh
pr view <N> --repo <owner/repo> --json state --jq .state` check to require
exact-uppercase matching; ensure the abort message uses the actual returned
state (e.g., "PR `#N` is already CLOSED") and note that non-existent PRs cause `gh
pr view` to exit with code 1 and write an error to stderr (so detect the
non-zero exit and stderr output rather than relying on JSON output) and abort
with "PR `#N` not found in <owner/repo>."

In @.claude/skills/scaffold/evals/evals.json:
- Around line 9-12: The eval currently uses "input": "add a new integration for
PagerDuty" but the expected_args only assert { "skill": "scaffold" }, which
allows routing/extraction failures to pass; update the test vector in
.claude/skills/scaffold/evals/evals.json so expected_args includes the
integration target/name (e.g., add a field like "integration": "PagerDuty" or
"target": "PagerDuty") and ensure expected_tool_call remains "Skill" and
expected_args still contains "skill": "scaffold" alongside the new integration
key so the evaluator verifies correct extraction/routing for the scaffold skill.

In @.claude/skills/unleash-flag/SKILL.md:
- Around line 172-175: Summary: The docs show an unsafe inline secret export for
CYPRESS_UNLEASH_ADMIN_TOKEN; update guidance to avoid pasting tokens in shells
and to use non-echoing prompts or secret managers and avoid logging full tokens.
Replace the inline example export with instructions to store the Unleash admin
token in a CI/secret manager or to set it via a non-echoing prompt (e.g., "read
-s" style) when running tests, and add a note for contributors to never print
the token (log only len(token) or a masked value) and not include it in error
messages, API responses, or commit history; reference the
CYPRESS_UNLEASH_ADMIN_TOKEN variable and the E2E test guidance in SKILL.md when
making this change.

---

Nitpick comments:
In @.claude/skills/pr-fixer/evals/evals.json:
- Around line 3-19: Add an additional fixture to the evals cases that verifies
URL-based and punctuation-trailing PR extraction so the pr-fixer skill handles
inputs like "fix https://github.com/org/repo/pull/1234" and "PR 1234." Update
the JSON array (near the existing entries with "input": "/pr-fixer 1234" and
"input": "fix PR 1234") to include a new object whose "input" is the URL form
and whose "expected_args" maps to "1234" and "expected_tool_call" is "Skill"
with "skill": "pr-fixer"; ensure the description notes URL and punctuation
variants so the regex extraction logic in the pr-fixer handler (the component
that parses inputs into args) is exercised by this fixture.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 225e5aa4-86b9-43dc-8bda-c13cd2b1ccc4

📥 Commits

Reviewing files that changed from the base of the PR and between 041558d and 5d657ed.

📒 Files selected for processing (44)
  • .claude/agents
  • .claude/agents/backend-review.md
  • .claude/agents/convention-eval.md
  • .claude/agents/frontend-review.md
  • .claude/agents/operator-review.md
  • .claude/agents/runner-review.md
  • .claude/agents/security-review.md
  • .claude/commands/acp-compile.md
  • .claude/commands/cypress-demo.md
  • .claude/commands/speckit.analyze.md
  • .claude/commands/speckit.checklist.md
  • .claude/commands/speckit.clarify.md
  • .claude/commands/speckit.constitution.md
  • .claude/commands/speckit.implement.md
  • .claude/commands/speckit.plan.md
  • .claude/commands/speckit.specify.md
  • .claude/commands/speckit.tasks.md
  • .claude/settings.json
  • .claude/skills/align/SKILL.md
  • .claude/skills/align/evals/evals.json
  • .claude/skills/amber-review/SKILL.md
  • .claude/skills/amber-review/evals/evals.json
  • .claude/skills/cypress-demo/SKILL.md
  • .claude/skills/cypress-demo/evals/evals.json
  • .claude/skills/dev-cluster/SKILL.md
  • .claude/skills/dev-cluster/evals/evals.json
  • .claude/skills/memory/SKILL.md
  • .claude/skills/memory/evals/evals.json
  • .claude/skills/pr-fixer/SKILL.md
  • .claude/skills/pr-fixer/evals/evals.json
  • .claude/skills/scaffold/SKILL.md
  • .claude/skills/scaffold/evals/evals.json
  • .claude/skills/unleash-flag/SKILL.md
  • .claude/skills/unleash-flag/evals/evals.json
  • BOOKMARKS.md
  • CLAUDE.md
  • components/backend/DEVELOPMENT.md
  • components/backend/ERROR_PATTERNS.md
  • components/backend/K8S_CLIENT_PATTERNS.md
  • components/frontend/DEVELOPMENT.md
  • components/frontend/REACT_QUERY_PATTERNS.md
  • components/operator/DEVELOPMENT.md
  • docs/security-standards.md
  • scripts/claude-hooks/stop-review.sh
💤 Files with no reviewable changes (11)
  • .claude/agents
  • .claude/commands/speckit.checklist.md
  • .claude/commands/acp-compile.md
  • .claude/commands/speckit.tasks.md
  • .claude/commands/speckit.analyze.md
  • .claude/commands/speckit.implement.md
  • .claude/commands/speckit.plan.md
  • .claude/commands/cypress-demo.md
  • .claude/commands/speckit.specify.md
  • .claude/commands/speckit.constitution.md
  • .claude/commands/speckit.clarify.md

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
.claude/commands/jira.log.md (1)

122-122: Add explicit issue-type normalization before API payload.

Line 122 uses parsed input directly; document a strict allowlist/normalization (Story|Bug|Task) before create to avoid Jira API rejects on variants like bug, BUG, or unexpected labels.

Proposed doc tweak
-  "issue_type": "[parsed issue type from step 1]",
+  "issue_type": "[validated issue type: Story|Bug|Task]",
 - **Issue Type** (optional): Defaults to `Story`, but can be `Bug` or `Task`. Tasks are tech debt related and not user facing
+ - **Issue Type** (optional): Defaults to `Story`, but can be `Bug` or `Task`. Normalize case and validate against this allowlist before confirmation/create.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/commands/jira.log.md at line 122, The payload currently inserts the
parsed value directly into the "issue_type" field; add explicit normalization
and allowlisting before constructing/sending the Jira payload by implementing a
normalizeIssueType function (or similar) that maps common variants (e.g., "bug",
"BUG", "Bug") to allowed values "Bug", "Story", "Task", validates against that
allowlist, and uses a sensible default or returns an error for unknown labels;
update the code path that sets "issue_type" to call this normalization and
ensure the final payload only contains the canonical values.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In @.claude/commands/jira.log.md:
- Line 122: The payload currently inserts the parsed value directly into the
"issue_type" field; add explicit normalization and allowlisting before
constructing/sending the Jira payload by implementing a normalizeIssueType
function (or similar) that maps common variants (e.g., "bug", "BUG", "Bug") to
allowed values "Bug", "Story", "Task", validates against that allowlist, and
uses a sensible default or returns an error for unknown labels; update the code
path that sets "issue_type" to call this normalization and ensure the final
payload only contains the canonical values.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5cfe546c-e31b-40ae-ac88-a3085c950781

📥 Commits

Reviewing files that changed from the base of the PR and between 5d657ed and c5c4c34.

📒 Files selected for processing (4)
  • .claude/agents/frontend-review.md
  • .claude/agents/operator-review.md
  • .claude/commands/jira.log.md
  • .claude/skills/pr-fixer/SKILL.md
✅ Files skipped from review due to trivial changes (3)
  • .claude/agents/frontend-review.md
  • .claude/agents/operator-review.md
  • .claude/skills/pr-fixer/SKILL.md

@ambient-code
Copy link
Copy Markdown
Contributor

ambient-code bot commented Apr 14, 2026

Addressed all 9 actionable CodeRabbit comments + 2 nitpicks in commit 03a00acd:

operator-review.md

  • O1: Replaced fragile single-line grep with rg -U multiline scan for .Create( calls + separate OwnerReferences check
  • O2: Added concrete rg patterns for errors.IsNotFound usage, Failed-status + return-error anti-pattern, and Reconcile function enumeration
  • O6: Added bash patterns for status.Update/SetCondition calls and error return paths in Reconcile

security-review.md

  • S1–S6: Added executable rg/grep detection commands for each check so the agent produces concrete pass/fail signals (client usage, RBAC, token redaction, input validation, SecurityContext, OwnerReferences on Secrets)

cypress-demo/SKILL.md

  • Fixed curl prerequisite check: added missing :3000 port
  • Clarified that demo helpers (caption, initCursor, etc.) must be embedded inline in each new demo file — not copied from sessions.cy.ts (which is a functional test, not a demo)
  • Qualified the "complete working example" reference to sessions.cy.ts

pr-fixer/SKILL.md

  • Documented that gh pr view returns uppercase state (OPEN/CLOSED/MERGED) and non-zero exit for non-existent PRs

pr-fixer/evals/evals.json

  • Added URL-form (https://github.com/org/repo/pull/1234) and punctuation-trailing (PR 1234.) test fixtures

scaffold/evals/evals.json

  • Added integration target to expected_args for the PagerDuty natural-language case so extraction failures don't silently pass

unleash-flag/SKILL.md

  • Replaced inline export TOKEN='...' with read -rs non-echoing prompt guidance; added note to log len(token) not the value

jira.log.md

  • Added issue_type normalization: Story|Bug|Task allowlist, case normalization, reject unrecognized values with user prompt

🤖 Session

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
.claude/skills/pr-fixer/evals/evals.json (1)

32-37: Add one malformed-input negative fixture to prevent false positives.

Consider adding a case like /pr-fixer abc (or fix PR twelve) with expected_tool_call: "None" to lock down numeric-only extraction behavior.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/pr-fixer/evals/evals.json around lines 32 - 37, Add a
negative test fixture to the evals JSON to ensure non-numeric PR identifiers
don't trigger the skill: insert an entry similar to the existing `/pr-fixer`
case but with "input": "/pr-fixer abc" (or "fix PR twelve") and
"expected_tool_call": "None" and "expected_args": {} so the numeric-only
extraction is validated; update the array in
.claude/skills/pr-fixer/evals/evals.json alongside the other fixtures to cover
this malformed-input scenario.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/commands/jira.log.md:
- Line 25: Update the prose for clarity by changing the phrase "Tasks are tech
debt related and not user facing." to use hyphenated compound adjectives: "Tasks
are tech debt-related and not user-facing." Locate the sentence that begins with
"**Issue Type** (optional):" (the descriptive line containing "Tasks are ...")
and replace the two compound terms accordingly while leaving the rest of the
normalization/allowlist guidance unchanged.
- Line 122: The issue_type handling is contradictory: one place silently
defaults unrecognized values to "Story" while another re-prompts; standardize on
rejecting and re-prompting. Update the issue_type validation/normalization flow
(the "issue_type" field and its validator/normalizer) to remove the silent
"default Story if unrecognized" behavior, ensure the validator returns an
explicit error for unrecognized types, and trigger the re-prompt logic instead
of falling back; also update any inline comment or schema string that currently
reads "[validated issue type: normalize to Story|Bug|Task — default Story if
unrecognized]" to reflect "reject and re-prompt on unrecognized types" so
behavior and docs match.

---

Nitpick comments:
In @.claude/skills/pr-fixer/evals/evals.json:
- Around line 32-37: Add a negative test fixture to the evals JSON to ensure
non-numeric PR identifiers don't trigger the skill: insert an entry similar to
the existing `/pr-fixer` case but with "input": "/pr-fixer abc" (or "fix PR
twelve") and "expected_tool_call": "None" and "expected_args": {} so the
numeric-only extraction is validated; update the array in
.claude/skills/pr-fixer/evals/evals.json alongside the other fixtures to cover
this malformed-input scenario.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 11149c1c-ce1d-4ba6-84be-587cf316acb5

📥 Commits

Reviewing files that changed from the base of the PR and between c5c4c34 and 03a00ac.

📒 Files selected for processing (8)
  • .claude/agents/operator-review.md
  • .claude/agents/security-review.md
  • .claude/commands/jira.log.md
  • .claude/skills/cypress-demo/SKILL.md
  • .claude/skills/pr-fixer/SKILL.md
  • .claude/skills/pr-fixer/evals/evals.json
  • .claude/skills/scaffold/evals/evals.json
  • .claude/skills/unleash-flag/SKILL.md
✅ Files skipped from review due to trivial changes (5)
  • .claude/skills/scaffold/evals/evals.json
  • .claude/agents/security-review.md
  • .claude/agents/operator-review.md
  • .claude/skills/unleash-flag/SKILL.md
  • .claude/skills/cypress-demo/SKILL.md

- **Summary** (required): The title/summary of the issue
- **Description** (optional): Detailed description of the work
- **Issue Type** (optional): Defaults to `Story`, but can be `Bug` or `Task`. Tasks are tech debt related and not user facing
- **Issue Type** (optional): Defaults to `Story`, but can be `Bug` or `Task`. Tasks are tech debt related and not user facing. Normalize case before use (e.g. "bug" → "Bug", "TASK" → "Task") and validate against this allowlist; reject unrecognized values with a prompt to the user.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Tighten compound-adjective hyphenation for clarity

Use “tech debt-related” and “user-facing” on Line 25 for cleaner wording.

Suggested wording tweak
-- **Issue Type** (optional): Defaults to `Story`, but can be `Bug` or `Task`. Tasks are tech debt related and not user facing. Normalize case before use (e.g. "bug" → "Bug", "TASK" → "Task") and validate against this allowlist; reject unrecognized values with a prompt to the user.
+- **Issue Type** (optional): Defaults to `Story`, but can be `Bug` or `Task`. Tasks are tech debt-related and not user-facing. Normalize case before use (e.g. "bug" → "Bug", "TASK" → "Task") and validate against this allowlist; reject unrecognized values with a prompt to the user.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- **Issue Type** (optional): Defaults to `Story`, but can be `Bug` or `Task`. Tasks are tech debt related and not user facing. Normalize case before use (e.g. "bug" → "Bug", "TASK" → "Task") and validate against this allowlist; reject unrecognized values with a prompt to the user.
- **Issue Type** (optional): Defaults to `Story`, but can be `Bug` or `Task`. Tasks are tech debt-related and not user-facing. Normalize case before use (e.g. "bug" → "Bug", "TASK" → "Task") and validate against this allowlist; reject unrecognized values with a prompt to the user.
🧰 Tools
🪛 LanguageTool

[grammar] ~25-~25: Use a hyphen to join words.
Context: ...Tasks are tech debt related and not user facing. Normalize case before use (e.g. ...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/commands/jira.log.md at line 25, Update the prose for clarity by
changing the phrase "Tasks are tech debt related and not user facing." to use
hyphenated compound adjectives: "Tasks are tech debt-related and not
user-facing." Locate the sentence that begins with "**Issue Type** (optional):"
(the descriptive line containing "Tasks are ...") and replace the two compound
terms accordingly while leaving the rest of the normalization/allowlist guidance
unchanged.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
.claude/commands/jira.log.md (1)

25-25: ⚠️ Potential issue | 🟡 Minor

Hyphenate compound adjectives in Issue Type guidance

Line 25 still uses “tech debt related” and “user facing”; use “tech debt-related” and “user-facing” for clarity.

Suggested doc tweak
-- **Issue Type** (optional): Defaults to `Story`, but can be `Bug` or `Task`. Tasks are tech debt related and not user facing. Normalize case before use (e.g. "bug" → "Bug", "TASK" → "Task") and validate against this allowlist; reject unrecognized values with a prompt to the user.
+- **Issue Type** (optional): Defaults to `Story`, but can be `Bug` or `Task`. Tasks are tech debt-related and not user-facing. Normalize case before use (e.g. "bug" → "Bug", "TASK" → "Task") and validate against this allowlist; reject unrecognized values with a prompt to the user.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/commands/jira.log.md at line 25, Update the wording in the Issue
Type guidance to hyphenate compound adjectives: change "tech debt related" to
"tech debt-related" and "user facing" to "user-facing" in the sentence that
describes Task vs user-facing issues (the text under "**Issue Type**
(optional)"). Ensure both occurrences are updated exactly where those phrases
appear.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In @.claude/commands/jira.log.md:
- Line 25: Update the wording in the Issue Type guidance to hyphenate compound
adjectives: change "tech debt related" to "tech debt-related" and "user facing"
to "user-facing" in the sentence that describes Task vs user-facing issues (the
text under "**Issue Type** (optional)"). Ensure both occurrences are updated
exactly where those phrases appear.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: dd83f8e8-e1e7-49ac-ada6-b5bc23327a06

📥 Commits

Reviewing files that changed from the base of the PR and between 520c625 and 90bcefa.

📒 Files selected for processing (1)
  • .claude/commands/jira.log.md

- Consolidate convention docs into component-level DEVELOPMENT.md files
- Create 6 per-component review agents (backend, frontend, operator,
  runner, security, convention-eval) with grep-based checks
- Overhaul 3 existing skills (dev-cluster, pr-fixer, unleash-flag)
- Add 3 new skills (/align, /scaffold, /memory)
- Promote amber-review and cypress-demo from commands to skills
- Add enforcement hooks in .claude/settings.json
- Update pr-fixer to use Amber Handler (replaces deleted pr-fixer.yml)
- Delete 11 obsolete commands

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jeremyeder jeremyeder force-pushed the feature/claude-automation-overhaul branch from 90bcefa to e17507e Compare April 14, 2026 18:58
@jeremyeder jeremyeder merged commit cec7993 into main Apr 14, 2026
29 checks passed
@jeremyeder jeremyeder deleted the feature/claude-automation-overhaul branch April 14, 2026 19:07
@jeremyeder
Copy link
Copy Markdown
Contributor Author

jeremyeder commented Apr 14, 2026

I had ACP implement pr1145 using the existing setup and then again using pr1307 content. here is an impact report on what pr1307 added to the output.

pr-1307-impact-analysis.md
]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ambient-code:managed PR managed by AI automation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant