Skip to content

[#324]: Add /start-issue delivery loop and shared agent command surface - #325

Merged
mattrace-buildmidwestern merged 3 commits into
mainfrom
mrace/chore/324-agent-delivery-tooling
Aug 13, 2026
Merged

mattrace-buildmidwestern merged 3 commits into
mainfrom
mrace/chore/324-agent-delivery-tooling

Conversation

@mattrace-gloo

@mattrace-gloo mattrace-gloo commented Aug 13, 2026 •

Copy link
Copy Markdown
Collaborator

TLDR

Adds a shared agent command surface so Cursor and Claude Code follow the same issue-to-PR loop. Canonical instructions live under .claude/commands/; Cursor / files are thin shims. /start-issue claims a Project 4 ticket, branches from main, and chains to /create-pr, which now runs the convention reviewer, moves the card to In PR Review, and watches CI. Existing six commands keep working; Android-only, Refs #NNN, and npm gates are unchanged.

Reviewer checklist

  • GitHub issue linked in Details (Refs #NNN — do not use Closes / Fixes / Resolves)
  • How to verify steps completed or valid waiver noted below
  • Acceptance criteria met, or unmet AC waived in the issue with linked follow-up (see AGENTS.md)
  • Scope limited to this issue — no adjacent tickets implemented/stubbed without approval
  • Android device tested when required (native / mic / camera / filesystem / permissions) — do not check unless verified on a device

Details

Refs #324

Agent delivery was split across Cursor-only slash commands with no single issue → branch → implement → PR path. This PR moves command bodies to .claude/, adds /start-issue and an /open-pr alias, and documents the loop in onboarding and issue-tracking. No app runtime behavior changes. Device QA is N/A (docs/hooks/commands only).

Type of change:

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Maintenance / refactor

Technical changes

  • .claude/commands/ — canonical /start-issue, /create-pr, /create-pr-branch, /open-pr alias, plus moved onboard/dep-bump/handle-dependabot/generate-pr-description
  • .cursor/commands/ — thin shims; new /start-issue and /open-pr
  • .claude/agents/code-reviewer.md — Fluent layer/Android/theme/Refs checklist
  • .claude/skills/write-test/ and sync-claude-primitives/
  • .cursor/rules/ai-tooling-bridge.mdc and pr-delivery-ci-gate.mdc
  • scripts/architecture-guard.mjs — warn-only fetch(/SQL in src/app/ and src/components/
  • docs/issue-tracking.md, docs/AGENT_ONBOARDING.md, CLAUDE.md, AGENTS.md

Testing

  • npm run format:check — pass
  • npm run lint — pass (0 errors; pre-existing warnings in unrelated files)
  • npm run typecheck — pass
  • npm test -- --ci — 112 passed, 1 skipped (723 tests)

How to verify

  1. Confirm Cursor / palette lists /start-issue, /open-pr, and the existing six commands.
  2. Open .claude/commands/start-issue.md and .claude/commands/create-pr.md — facts should be Fluent only: base main, Refs #NNN, Project 4 In Progress (Dev) / In PR Review, npm, Android-only (no iOS how-to).
  3. Confirm .cursor/commands/*.md are shims that point at .claude/commands/ with no duplicated procedure.
  4. Run npm run format:check && npm run lint && npm run typecheck && npm test -- --ci.

Expected: Commands and docs describe one ticketed loop; CI stays green; no Product-column board moves; no closing keywords.

Follow-ups

None.

Summary by CodeRabbit

  • New Features

    • Added guided workflows for issue delivery, branch creation, pull request preparation, dependency updates, onboarding, and Dependabot maintenance.
    • Added shared AI-assisted code review and test-writing guidance.
    • Added non-blocking architecture warnings during supported code edits.
  • Documentation

    • Updated onboarding, issue tracking, branch, and pull request guidance.
    • Added Android-focused setup instructions and clarified standardized command usage.
  • Chores

    • Unified development-tool command guidance through shared references and compatibility entries.
    • Added validation gates for formatting, linting, type checks, tests, reviews, and CI.

Give agents a single issue-to-PR path that matches Fluent Mobile board, branch, and Refs conventions.
@mattrace-gloo mattrace-gloo self-assigned this Aug 13, 2026
@coderabbitai

coderabbitai Bot commented Aug 13, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 7bad16a7-2452-449f-954d-7f38d2a6fd5e

📥 Commits

Reviewing files that changed from the base of the PR and between 42f416c and 55813ee.

📒 Files selected for processing (12)
  • .claude/agents/code-reviewer.md
  • .claude/commands/create-pr.md
  • .claude/commands/dep-bump.md
  • .claude/commands/generate-pr-description.md
  • .claude/commands/handle-dependabot.md
  • .claude/commands/onboard.md
  • .claude/commands/start-issue.md
  • .claude/skills/sync-claude-primitives/SKILL.md
  • .claude/skills/write-test/SKILL.md
  • docs/AGENT_ONBOARDING.md
  • docs/issue-tracking.md
  • scripts/architecture-guard.mjs

📝 Walkthrough

Walkthrough

The change establishes Claude as the canonical agent workflow source, adds Cursor command shims, introduces agent skills and architecture hooks, and updates repository guidance for issue delivery, pull requests, onboarding, testing, and synchronization.

Changes

Agent tooling and delivery workflows

Layer / File(s) Summary
Canonical Claude workflows
.claude/agents/*, .claude/commands/*
Adds review, issue, branch, PR, dependency, onboarding, Dependabot, and PR-description workflows.
Claude skills and synchronization
.claude/skills/*
Adds skills for configuration synchronization and colocated Jest test creation.
Architecture guard hooks
.claude/settings.json, .cursor/hooks/*, scripts/architecture-guard.mjs
Adds warn-only architecture checks for edit and write operations in Claude and Cursor.
Cursor command shims
.cursor/commands/*
Delegates Cursor commands to canonical Claude definitions and adds issue and PR aliases.
Repository guidance and delivery rules
.cursor/rules/*, AGENTS.md, CLAUDE.md, docs/*
Updates command discovery, issue delivery, PR requirements, onboarding, and documentation references.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related issues

Possibly related PRs

Suggested reviewers: b3rn153, jonathanseehagen

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the new /start-issue delivery workflow and shared agent command surface, which are the main changes in the pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch mrace/chore/324-agent-delivery-tooling

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install failed: dependency version conflict. Check your lock file or package.json.


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.

@mattrace-gloo mattrace-gloo linked an issue Aug 13, 2026 that may be closed by this pull request
6 tasks
@mattrace-gloo
mattrace-gloo marked this pull request as ready for review August 13, 2026 03:34

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 17

🧹 Nitpick comments (1)
.claude/skills/write-test/SKILL.md (1)

33-37: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Document the fetch mock for service tests.

The service row covers FluentAPI, sync, and storage tests, but the mocking rule only names jest.mock(...). fetch is a global, so this text does not define how to prevent network I/O in endpoint tests. Add a service rule to mock fetch and restore it after each test, following neighboring service tests.

Based on learnings, unit-test new endpoints with mocked fetch and follow neighboring *.test.ts files.

Also applies to: 53-55

🤖 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 @.claude/skills/write-test/SKILL.md around lines 33 - 37, Update the
service-testing rules in the skill document to explicitly require mocking global
fetch for endpoint unit tests and restoring the mock after each test, following
neighboring service *.test.ts patterns. Keep the existing per-file jest.mock
guidance and live API opt-in instructions unchanged.

Source: Learnings

🤖 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 @.claude/agents/code-reviewer.md:
- Around line 99-101: Update the fenced example in the documentation format near
the diff to specify the text language identifier, changing the opening fence to
```text while leaving the example content unchanged.

In @.claude/commands/create-pr.md:
- Around line 114-122: Require a valid issue number from the branch before
continuing, and remove the branch-slug title fallback so PR creation stops when
none is found. Update the Project 4 tracking flow around the issue-presence
check to add the assigned issue when missing, then set its status to “In PR
Review.”
- Around line 84-109: Update the delivery workflow around the convention review
and push steps to require committing each repair, then rerunning format:check,
lint, typecheck, tests, and the code-reviewer before pushing or completing the
task. Ensure the same gate applies to the referenced flow at lines 222–225, and
do not allow pushing uncommitted repairs.

In @.claude/commands/dep-bump.md:
- Around line 39-46: Update the validation instructions in the dep-bump command
so that after running npx expo install --fix for SDK patch drift, rerun both npx
expo install --check and npm run doctor, preserving the existing blocking
validation flow.

In @.claude/commands/generate-pr-description.md:
- Around line 3-7: Update the overview for the generate-pr-description command
to state that it is supported in both Claude Code and Cursor, while preserving
the existing text-only behavior and template reference.
- Around line 112-121: Align both workflow surfaces with the canonical CI gate:
in .claude/commands/generate-pr-description.md lines 112-121, replace npx tsc
--noEmit with npm run typecheck; in .claude/commands/handle-dependabot.md lines
23-25, require format:check, lint, typecheck, npm test -- --ci, Expo Doctor when
applicable, and all required build checks before approval.
- Around line 76-80: Update the PR title example in the relevant template
section to use the mandatory `[`#38`]:` format instead of `#38:`; keep the branch
name and suggested type unchanged.
- Around line 24-31: Update the title-generation guidance in the Format section
to require a GitHub issue number for every change. Remove the “No ticket”
descriptive-prefix fallback, and instruct the agent to stop and request an issue
number when no issue can be identified before generating a PR title.

In @.claude/commands/handle-dependabot.md:
- Line 20: Update the open-PR listing and subsequent triage/merge eligibility in
the Dependabot workflow to accept only the approved Dependabot author identities
and PRs whose baseRefName is "main". Strengthen the safe-PR gate to require
successful Lint & Format, Unit Tests, and Quality Gates checks, including
TypeScript, Expo Doctor, and expo install --check, before proceeding.

In @.claude/commands/onboard.md:
- Around line 11-19: Update the onboarding command sequence so Expo MCP
authentication via mcp_auth occurs before Step 1 and before any Expo-related
command, including npm run prebuild. Apply the same authentication gate before
npm run doctor and other Expo commands, while preserving the existing setup
steps and ordering where no Expo command is involved.

In @.claude/commands/start-issue.md:
- Around line 129-149: Update the GraphQL query used by the ITEM_ID assignment
to paginate issue projectItems using pageInfo endCursor and hasNextPage until
all Project 4 items are retrieved. Adjust the jq filter to select the Project 4
node and output only its scalar .id value, preserving the existing re-query flow
after project item-add.

In @.claude/skills/sync-claude-primitives/SKILL.md:
- Around line 42-57: Update the target list in the sync skill to include
.github/copilot-instructions.md alongside CLAUDE.md and AGENTS.md, and require
auditing it against the same agent contracts so cross-tool guidance remains
aligned.
- Around line 146-152: Clarify the Phase 5 workflow so validation runs before
updating .claude/.config-sync-state.json, and treat the state-file edit as an
explicit workflow-generated change excluded from the approved findings
comparison. Specify that lastSyncedSha records the source HEAD whose approved
changes passed validation, preventing failed runs from marking the working tree
as synced.
- Around line 150-153: Update the sanity-check step in the workflow instructions
to require npm run format:check, npm run lint, npm run typecheck, and npm test
-- --ci for every change, removing the conditional reference to scripts or
config files before chaining to /create-pr.

In `@docs/AGENT_ONBOARDING.md`:
- Line 244: The related-docs command index in the onboarding documentation is
missing /generate-pr-description. Add this command to the list alongside the
existing slash commands, preserving the current alias and canonical/shim
references.

In `@docs/issue-tracking.md`:
- Line 67: Update the PR title guidance in the issue-tracking documentation to
remove the alternate “#NNN: Short description” format, leaving only the
canonical “[`#NNN`]: Short description” format required by the repository
workflow.

In `@scripts/architecture-guard.mjs`:
- Around line 10-20: The allow function should emit the Claude PreToolUse
response schema: move the permission decision into hookSpecificOutput as
hookEventName and permissionDecision: "allow", while retaining agentMessage as
additionalContext there so the Cursor adapter still receives it. Remove the
current top-level permission and agent_message fields, then preserve the
existing process exit behavior.

---

Nitpick comments:
In @.claude/skills/write-test/SKILL.md:
- Around line 33-37: Update the service-testing rules in the skill document to
explicitly require mocking global fetch for endpoint unit tests and restoring
the mock after each test, following neighboring service *.test.ts patterns. Keep
the existing per-file jest.mock guidance and live API opt-in instructions
unchanged.
🪄 Autofix

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: 7e07ec71-aa61-4a3c-a1b9-c7c742b662a5

📥 Commits

Reviewing files that changed from the base of the PR and between a309de6 and 42f416c.

📒 Files selected for processing (33)
  • .claude/agents/code-reviewer.md
  • .claude/commands/create-pr-branch.md
  • .claude/commands/create-pr.md
  • .claude/commands/dep-bump.md
  • .claude/commands/generate-pr-description.md
  • .claude/commands/handle-dependabot.md
  • .claude/commands/onboard.md
  • .claude/commands/open-pr.md
  • .claude/commands/start-issue.md
  • .claude/settings.json
  • .claude/skills/sync-claude-primitives/SKILL.md
  • .claude/skills/write-test/SKILL.md
  • .cursor/commands/create-pr-branch.md
  • .cursor/commands/create-pr.md
  • .cursor/commands/dep-bump.md
  • .cursor/commands/generate-pr-description.md
  • .cursor/commands/handle-dependabot.md
  • .cursor/commands/onboard.md
  • .cursor/commands/open-pr.md
  • .cursor/commands/start-issue.md
  • .cursor/hooks.json
  • .cursor/hooks/architecture-guard.mjs
  • .cursor/rules/ai-tooling-bridge.mdc
  • .cursor/rules/commands.mdc
  • .cursor/rules/delivery.mdc
  • .cursor/rules/docs.mdc
  • .cursor/rules/pr-delivery-ci-gate.mdc
  • .cursor/rules/rule-precedence.mdc
  • AGENTS.md
  • CLAUDE.md
  • docs/AGENT_ONBOARDING.md
  • docs/issue-tracking.md
  • scripts/architecture-guard.mjs

Comment thread .claude/agents/code-reviewer.md Outdated
Comment thread .claude/commands/create-pr.md
Comment thread .claude/commands/create-pr.md Outdated
Comment thread .claude/commands/dep-bump.md Outdated
Comment thread .claude/commands/generate-pr-description.md
Comment thread .claude/skills/sync-claude-primitives/SKILL.md Outdated
Comment thread .claude/skills/sync-claude-primitives/SKILL.md Outdated
Comment thread docs/AGENT_ONBOARDING.md Outdated
Comment thread docs/issue-tracking.md Outdated
Comment thread scripts/architecture-guard.mjs
Require ticketed PRs, committed repairs before push, and Claude-compatible hook output so agents cannot skip Project 4 or CI-parity checks.

@JonathanSeehagen JonathanSeehagen left a comment

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.

Human + agent review

Validated against #324 acceptance criteria on branch mrace/chore/324-agent-delivery-tooling:

  • Canonical commands under .claude/commands/; Cursor shims are thin pointers only
  • /start-issue → /create-pr loop documented in AGENT_ONBOARDING.md, issue-tracking.md, commands.mdc
  • Local CI parity: format:check, lint, typecheck, npm test -- --ci — all pass
  • Remote CI green on head SHA
  • No app runtime changes; Android device QA N/A

Approve for merge.


Follow-up suggestion (non-blocking)

Today the agent surface is intentionally distributed (rules in .cursor/rules/*.mdc, commands in .claude/commands/, hooks in .cursor/hooks.json + docs.mdc). That works, but onboarding requires jumping across several files.

Consider a thin docs/agent-tooling-index.md (or similar) that centralizes links + one-line purpose for each rule, slash command, hook, agent, and skill — without duplicating full procedure text. Single map; canonical content stays in place. Happy to pick this up as a small chore issue if the team wants it.

@JonathanSeehagen JonathanSeehagen left a comment •

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.

Everything looks good!

The goal and the implementation are really good!

One future idea will be to create a table of contents/summary linking to all rules, commands, hooks, and skills.

@mattrace-buildmidwestern
mattrace-buildmidwestern merged commit cb9ad90 into main Aug 13, 2026
11 of 12 checks passed
@mattrace-buildmidwestern
mattrace-buildmidwestern deleted the mrace/chore/324-agent-delivery-tooling branch August 13, 2026 14:53
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.

Add /start-issue delivery loop and shared agent command surface

3 participants