docs: make templates agent-ready#345
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (8)
📜 Recent review details⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (12)
🧰 Additional context used📓 Path-based instructions (2)packages/opencode/**/*.ts📄 CodeRabbit inference engine (packages/opencode/AGENTS.md)
Files:
packages/opencode/test/**/*.test.{ts,tsx}📄 CodeRabbit inference engine (packages/opencode/test/AGENTS.md)
Files:
🧠 Learnings (24)📓 Common learnings📚 Learning: 2026-04-28T05:36:24.561ZApplied to files:
📚 Learning: 2026-04-28T04:56:18.533ZApplied to files:
📚 Learning: 2026-04-20T14:36:31.032ZApplied to files:
📚 Learning: 2026-04-28T05:36:25.456ZApplied to files:
📚 Learning: 2026-04-28T04:38:21.935ZApplied to files:
📚 Learning: 2026-04-22T08:49:47.800ZApplied to files:
📚 Learning: 2026-04-20T14:36:31.032ZApplied to files:
📚 Learning: 2026-04-28T08:29:02.858ZApplied to files:
📚 Learning: 2026-04-28T11:24:35.312ZApplied to files:
📚 Learning: 2026-04-28T04:56:21.338ZApplied to files:
📚 Learning: 2026-04-23T08:51:00.819ZApplied to files:
📚 Learning: 2026-04-27T12:59:49.844ZApplied to files:
📚 Learning: 2026-04-26T15:35:36.505ZApplied to files:
📚 Learning: 2026-04-28T07:28:14.317ZApplied to files:
📚 Learning: 2026-04-28T04:38:05.946ZApplied to files:
📚 Learning: 2026-04-28T04:38:11.771ZApplied to files:
📚 Learning: 2026-04-26T16:34:57.130ZApplied to files:
📚 Learning: 2026-04-24T17:08:46.780ZApplied to files:
📚 Learning: 2026-04-28T06:51:54.812ZApplied to files:
📚 Learning: 2026-04-27T10:33:12.228ZApplied to files:
📚 Learning: 2026-04-28T11:24:23.345ZApplied to files:
📚 Learning: 2026-04-28T07:27:49.810ZApplied to files:
📚 Learning: 2026-04-27T11:19:24.963ZApplied to files:
🔇 Additional comments (8)
📝 WalkthroughWalkthroughUpdated GitHub issue and pull-request templates and CI workflows: added structured fields in bug/feature templates, expanded PR guidance, and changed workflow logic/tests to treat Changes
Sequence Diagram(s)sequenceDiagram
rect rgba(220,230,241,0.5)
participant PR as Pull Request
end
rect rgba(200,230,200,0.5)
participant GH as GitHub Actions
participant CH as changes job
participant EA as e2e-artifacts job
participant Git as Git
end
PR->>GH: push PR (new/modified .github files)
GH->>CH: start "changes" job
CH->>Git: checkout (fetch-depth:0), compute diff vs base
CH->>CH: run filter script (match docs allowlist including .github/ISSUE_TEMPLATE/* and pull_request_template.md)
CH-->>GH: set outputs.docs_only = true|false
GH->>EA: e2e-artifacts job triggered only if needs.changes and docs_only != 'true'
alt docs_only == 'true'
EA-->>GH: skipped
else
EA->>Git: run e2e and upload artifacts
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Review rate limit: 0/3 reviews remaining, refill in 54 minutes and 57 seconds. Comment |
There was a problem hiding this comment.
Code Review
This pull request updates GitHub issue and pull request templates to include area categorization, impact levels, and acceptance criteria. Feedback suggests making the new 'acceptance' fields optional in both bug reports and feature requests to minimize redundancy and user friction, while also removing implementation-specific terminology from user-facing placeholders.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/ISSUE_TEMPLATE/01-bug-report.yml:
- Line 43: Replace the conflated choice "Blocks me from using PawWork or risks
data/security" with two separate choices, e.g. "Blocks me from using PawWork"
and "Risks data/security", and then update any places that read or validate that
choice (issue templates, triage parsers or automation that check for the exact
string) so they handle the two new options; search for the exact string "Blocks
me from using PawWork or risks data/security" to find all callers and update
mapping/validation logic accordingly (including any triage/labeling scripts or
workflow conditionals).
🪄 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: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 2f60eb3d-6a6f-4a27-a6aa-6567c88bb967
📒 Files selected for processing (3)
.github/ISSUE_TEMPLATE/01-bug-report.yml.github/ISSUE_TEMPLATE/02-feature-request.yml.github/pull_request_template.md
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (12)
- GitHub Check: unit-windows-opencode-config-project
- GitHub Check: unit-windows-opencode-server-tools
- GitHub Check: unit-windows-app
- GitHub Check: unit-windows-desktop
- GitHub Check: unit-windows-opencode-session
- GitHub Check: typecheck
- GitHub Check: unit-app
- GitHub Check: unit-opencode
- GitHub Check: unit-desktop
- GitHub Check: smoke-macos-arm64
- GitHub Check: analyze-js-ts
- GitHub Check: e2e-artifacts
🧰 Additional context used
🧠 Learnings (8)
📓 Common learnings
Learnt from: Astro-Han
Repo: Astro-Han/pawwork PR: 270
File: packages/opencode/src/tool/agent.ts:23-27
Timestamp: 2026-04-28T04:38:11.771Z
Learning: In Astro-Han/pawwork (`packages/opencode/src/tool/agent.ts`), the `subagent_session_id` field in the `Parameters` schema accepts any `Schema.String` rather than a branded `SessionID`. This is inherited upstream behavior (adopted in PR `#270`, an upstream-sync graft of upstream PR `#23244`). The fix — validating `subagent_session_id` as a `SessionID` brand up front so malformed/typo'd IDs fail explicitly rather than silently forking a new subagent session — is intentionally deferred to a follow-up PR or upstream report. Do NOT re-flag this as a blocking issue in PR `#270` or in future upstream-sync PRs that carry the same schema; flag it only in a PawWork-authored PR that touches `agent.ts` parameter validation.
Learnt from: Astro-Han
Repo: Astro-Han/pawwork PR: 224
File: packages/app/src/i18n/zh.ts:0-0
Timestamp: 2026-04-24T17:08:46.780Z
Learning: In Astro-Han/pawwork PR `#224`, the first-occurrence `PawWork 爪印` branding rule originally specified in issue `#196` was superseded by an updated Chinese-branding spec. On all zh UI surfaces in `packages/app/src/i18n/zh.ts` (e.g., `dialog.model.unpaid.freeModels.title`, `session.new.subtitle`, `sidebar.gettingStarted.line1`), the correct and intentional target is fully localized `爪印` branding — no `PawWork` prefix. Do NOT flag these strings as missing the first-occurrence `PawWork 爪印` rule in future reviews.
📚 Learning: 2026-04-26T15:35:36.505Z
Learnt from: Astro-Han
Repo: Astro-Han/pawwork PR: 245
File: packages/opencode/src/question/index.ts:21-24
Timestamp: 2026-04-26T15:35:36.505Z
Learning: In Astro-Han/pawwork (`packages/opencode/src/question/index.ts`), `Question.Option.description` is intentionally **required** (`z.string()`, not `.optional()`). This matches the upstream opencode contract and all current callers (e.g. `PlanExitTool`) always supply a description. The defensive `<Show when={props.description}>` rendering in `session-question-dock.tsx` is a standard guard, not a signal that the field is intended to be optional. Do NOT suggest making `Option.description` optional without a dedicated follow-up that covers schema + tool description + dock copy + tests.
Applied to files:
.github/ISSUE_TEMPLATE/02-feature-request.yml.github/ISSUE_TEMPLATE/01-bug-report.yml
📚 Learning: 2026-04-28T07:28:14.317Z
Learnt from: Astro-Han
Repo: Astro-Han/pawwork PR: 270
File: packages/opencode/src/tool/lsp.ts:23-32
Timestamp: 2026-04-28T07:28:14.317Z
Learning: In `packages/opencode/src/tool/lsp.ts` (Astro-Han/pawwork, PR `#270`), the `Parameters` schema requires `line` and `character` for all operations, including `workspaceSymbol` and `documentSymbol` which never use coordinates. This matches the upstream `dev:packages/opencode/src/tool/lsp.ts:23-32` baseline exactly — both fields are declared as required `Schema.Number` with `>= 1` checks. The fix (per-operation schema split, or making `line`/`character` optional with handler-side presence validation for operations that need them like `goToDefinition`/`findReferences`) is deferred to a follow-up PR or upstream report to avoid mixing refactor + bug-fix intents and drifting the diff from the upstream baseline. Do NOT re-flag the required coordinates on `workspaceSymbol`/`documentSymbol` in upstream-sync PRs; flag it only in a PawWork-authored PR that directly touches `lsp.ts` parameter validation.
Applied to files:
.github/ISSUE_TEMPLATE/02-feature-request.yml.github/ISSUE_TEMPLATE/01-bug-report.yml
📚 Learning: 2026-04-27T12:59:49.844Z
Learnt from: Astro-Han
Repo: Astro-Han/pawwork PR: 264
File: packages/opencode/test/session/prompt-effect.test.ts:0-0
Timestamp: 2026-04-27T12:59:49.844Z
Learning: In `packages/opencode/test/session/prompt-effect.test.ts` and `packages/opencode/src/session/diagnostics.ts` (PR `#264`), the recovery reminder copy differs between signature kinds: the input-repeat variant says "repeated the same tool input 3 times" (uses a literal count), while the target-repeat variant says "failed against the same target multiple times" (uses "multiple times" with no count). Assertions that check for injected reminder text in LLM inputs must accept both phrasings when a scenario produces both `input:` and `target:` signatures (e.g., `read` tool with a `filePath` parameter). Do NOT narrow the assertion to only the input-variant phrasing.
Applied to files:
.github/ISSUE_TEMPLATE/01-bug-report.yml
📚 Learning: 2026-04-28T04:38:11.771Z
Learnt from: Astro-Han
Repo: Astro-Han/pawwork PR: 270
File: packages/opencode/src/tool/agent.ts:23-27
Timestamp: 2026-04-28T04:38:11.771Z
Learning: In Astro-Han/pawwork (`packages/opencode/src/tool/agent.ts`), the `subagent_session_id` field in the `Parameters` schema accepts any `Schema.String` rather than a branded `SessionID`. This is inherited upstream behavior (adopted in PR `#270`, an upstream-sync graft of upstream PR `#23244`). The fix — validating `subagent_session_id` as a `SessionID` brand up front so malformed/typo'd IDs fail explicitly rather than silently forking a new subagent session — is intentionally deferred to a follow-up PR or upstream report. Do NOT re-flag this as a blocking issue in PR `#270` or in future upstream-sync PRs that carry the same schema; flag it only in a PawWork-authored PR that touches `agent.ts` parameter validation.
Applied to files:
.github/ISSUE_TEMPLATE/01-bug-report.yml
📚 Learning: 2026-04-26T16:34:57.130Z
Learnt from: Astro-Han
Repo: Astro-Han/pawwork PR: 247
File: packages/ui/src/components/message-part.tsx:1322-1324
Timestamp: 2026-04-26T16:34:57.130Z
Learning: In Astro-Han/pawwork (`packages/ui/src/components/message-part.tsx`), the `taskId` createMemo and `childSessionId` createMemo both intentionally read only from `partMetadata().sessionId` (populated post-execution), not from `input.task_id` / `input.subagent_session_id`. This has always been the case — the original code never read the input field either. Adding an `input.subagent_session_id` fallback would be a new capability, not a bug fix. Do NOT flag the absence of this fallback as a regression in PR `#247` or future PRs unless there is a concrete case where metadata is not populated.
Applied to files:
.github/ISSUE_TEMPLATE/01-bug-report.yml
📚 Learning: 2026-04-28T06:51:54.812Z
Learnt from: Astro-Han
Repo: Astro-Han/pawwork PR: 270
File: packages/opencode/src/tool/todo.ts:9-18
Timestamp: 2026-04-28T06:51:54.812Z
Learning: In `packages/opencode/src/tool/todo.ts` (Astro-Han/pawwork), `TodoItem.status` and `TodoItem.priority` are intentionally declared as plain `Schema.String` rather than closed literal unions. This matches the upstream opencode baseline (`dev:packages/opencode/src/tool/todo.ts`). The tightening — `Schema.Literals(["pending","in_progress","completed","cancelled"])` for `status` and `Schema.Literals(["high","medium","low"])` for `priority` — is tracked as a follow-up under the harness/tool-set-v1 series (issue `#129`) to land either as part of a tool-schema tightening sweep or upstream-first. Do NOT re-flag the free-form strings for these fields in upstream-sync PRs; flag it only in a PawWork-authored PR or the dedicated sweep that touches `TodoItem` schema.
Applied to files:
.github/pull_request_template.md
📚 Learning: 2026-04-24T17:08:46.780Z
Learnt from: Astro-Han
Repo: Astro-Han/pawwork PR: 224
File: packages/app/src/i18n/zh.ts:0-0
Timestamp: 2026-04-24T17:08:46.780Z
Learning: In Astro-Han/pawwork PR `#224`, the first-occurrence `PawWork 爪印` branding rule originally specified in issue `#196` was superseded by an updated Chinese-branding spec. On all zh UI surfaces in `packages/app/src/i18n/zh.ts` (e.g., `dialog.model.unpaid.freeModels.title`, `session.new.subtitle`, `sidebar.gettingStarted.line1`), the correct and intentional target is fully localized `爪印` branding — no `PawWork` prefix. Do NOT flag these strings as missing the first-occurrence `PawWork 爪印` rule in future reviews.
Applied to files:
.github/pull_request_template.md
🔇 Additional comments (6)
.github/pull_request_template.md (1)
13-50: Strong template upgrade for agent-first reviews.The new sections and checklist tighten reviewer context, verification evidence, and scope/risk discipline without adding unnecessary complexity. This is aligned with the stated PR goals and looks ready from a docs-template perspective.
.github/ISSUE_TEMPLATE/02-feature-request.yml (2)
21-35: Good triage field design for mixed human/agent intake.The optional
areadropdown is well scoped and keeps the form lightweight for non-technical reporters while improving routing context.
52-69: Strong verification and scope-control additions.Requiring
acceptanceand adding optionalnon_goalsmakes implementation/review outcomes testable and keeps feature requests bounded..github/ISSUE_TEMPLATE/01-bug-report.yml (3)
21-35: LGTM! Area dropdown provides helpful categorization.The optional area dropdown with "Not sure" fallback strikes a good balance between structured metadata collection (for agent-driven workflows) and accessibility for non-technical reporters.
97-99: LGTM! Diagnostics field provides clearer guidance.The updated label, description, and placeholder text help both reporters and agents understand what diagnostic information is most valuable. The mention of "session exports" may be unfamiliar to some non-technical users, but the field remains optional and lists other accessible options like screenshots and recordings.
95-95: The field ID rename is safe from a repository automation perspective.No GitHub Actions workflows or scripts in the repository reference the
attachmentsfield ID from the issue template. Allattachmentsreferences in the codebase are part of the application's file handling logic and are unrelated to issue template field names.
Summary
Update the bug report, feature request, and pull request templates so they capture clearer task context for human reviewers and coding agents.
Why
Agent-driven implementation works better when issues provide enough task context for execution and review. The templates now collect affected area, impact, diagnostics, acceptance criteria, and non-goals where useful, while keeping non-technical reporters from having to classify internal engineering details.
Related Issue
No related issue. This is a small template maintenance change from repository review.
Human Review Status
Pending. A human should make the final merge decision after reviewing the final diff and verification evidence.
Review Focus
Please check whether the templates support an Agent-first workflow without making issue filing too heavy for non-technical users. Also check whether the PR template makes verification evidence and scope control explicit enough for Agent-authored PRs.
Risk Notes
Low risk. This only changes GitHub templates. It does not affect runtime code, dependencies, credentials, permissions, generated files, or desktop packaging behavior.
How To Verify
Screenshots or Recordings
Not applicable. No visible UI changes.
Checklist
dev, and my PR title and commit messages use Conventional Commits in EnglishSummary by CodeRabbit