Skip to content

Conversation

@TabishB
Copy link
Contributor

@TabishB TabishB commented Jan 13, 2026

Summary

  • Adds change proposal for openspec feedback CLI command
  • Enables users and agents to submit feedback directly via GitHub Issues
  • Includes GitHub Device OAuth for authentication
  • Adds /feedback skill for agent-assisted feedback with context enrichment and anonymization

Change Proposal Details

Files added:

  • openspec/changes/add-feedback-command/proposal.md - Why, what, impact
  • openspec/changes/add-feedback-command/tasks.md - 18 implementation tasks
  • openspec/changes/add-feedback-command/specs/cli-feedback/spec.md - 8 requirements, 21 scenarios

Key Features:

  • Simple CLI: openspec feedback "Your message"
  • GitHub authentication via Device OAuth flow (one-time)
  • Creates GitHub Issues with feedback label
  • Agent skill with context gathering + anonymization + user confirmation
  • Works regardless of telemetry settings

Test plan

  • Validated change with openspec validate add-feedback-command --strict
  • Review proposal and spec requirements
  • Approve for implementation

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • New Features
    • Introduced openspec feedback <message> command enabling users to submit feedback directly from the CLI
    • Implemented GitHub OAuth Device Flow for secure authentication and feedback submission
    • Feedback automatically creates GitHub Issues with enriched metadata while preserving user privacy
    • Added agent-assisted feedback skill with context enrichment, anonymization of sensitive data, and user confirmation

✏️ Tip: You can customize this high-level summary in your review settings.

Add change proposal for `openspec feedback` CLI command that enables
users and agents to submit feedback via GitHub Issues.

Key features:
- Simple `openspec feedback <message>` command
- GitHub Device OAuth for authentication
- `/feedback` skill for agent-assisted feedback with context enrichment
- Anonymization of sensitive data before submission
- User confirmation required before submitting
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 13, 2026

📝 Walkthrough

Walkthrough

This pull request introduces a comprehensive feedback mechanism for OpenSpec. It adds a new openspec feedback CLI command that enables users to submit feedback as GitHub issues, implements GitHub OAuth Device Flow authentication, includes shell completions, and provides an agent-assisted feedback skill with context enrichment and anonymization capabilities.

Changes

Cohort / File(s) Summary
Specification & Planning Documentation
openspec/changes/add-feedback-command/proposal.md, openspec/changes/add-feedback-command/specs/cli-feedback/spec.md, openspec/changes/add-feedback-command/tasks.md
Introduces proposal, detailed specification, and implementation checklist for feedback command feature, covering authentication flow, CLI behavior, GitHub issue creation, shell completions, skill template, and testing requirements.
CLI Command Implementation
src/cli/index.ts, src/commands/feedback.ts
Registers and implements feedback command logic to accept user messages and facilitate GitHub issue creation.
GitHub Authentication
src/auth/github.ts
Implements GitHub OAuth Device Flow for user authentication and token persistence.
Templates & Completions
src/core/templates/skill-templates.ts, src/core/completions/command-registry.ts
Adds feedback skill template with context enrichment and anonymization rules; updates shell completions registry to include new feedback command.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Poem

🐰 A feedback command hops into view,
GitHub issues born from ideas fresh and new,
OAuth flows dance the Device Flow way,
Anonymous whispers, no path on display,
Listen and learn, the journey's here to stay! 🌟

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main change: adding a proposal for a feedback command feature to OpenSpec, which is the core focus of all three added files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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


🧹 Recent nitpick comments
openspec/changes/add-feedback-command/tasks.md (2)

11-11: Specify the file for clarity.

For consistency with other tasks and based on the proposal (proposal.md), consider making the file reference explicit.

📝 Suggested refinement
-- [ ] 2.2 Register `feedback <message>` command in CLI
+- [ ] 2.2 Register `feedback <message>` command in `src/cli/index.ts`

23-23: Use full path for consistency.

Based on the proposal (proposal.md) and for consistency with other tasks, specify the full file path.

📝 Suggested refinement
-- [ ] 4.1 Create feedback skill template in `skill-templates.ts`
+- [ ] 4.1 Create feedback skill template in `src/core/templates/skill-templates.ts`
openspec/changes/add-feedback-command/specs/cli-feedback/spec.md (1)

170-170: Use SHALL for consistency.

The spec consistently uses SHALL for normative requirements (8 instances), but this line uses MUST. While both are normative, maintaining consistency improves readability.

📝 Suggested refinement
-- **THEN** the agent MUST show the complete draft to the user
+- **THEN** the agent SHALL show the complete draft to the user
📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d7a928b and 67b365a.

📒 Files selected for processing (3)
  • openspec/changes/add-feedback-command/proposal.md
  • openspec/changes/add-feedback-command/specs/cli-feedback/spec.md
  • openspec/changes/add-feedback-command/tasks.md
🧰 Additional context used
📓 Path-based instructions (5)
openspec/changes/*/tasks.md

📄 CodeRabbit inference engine (openspec/AGENTS.md)

Create tasks.md with numbered implementation sections and checkboxes in format - [ ] X.Y Task description

Files:

  • openspec/changes/add-feedback-command/tasks.md
openspec/changes/*/{proposal,design,tasks}.md

📄 CodeRabbit inference engine (openspec/AGENTS.md)

Use direct file references in format file.ts:42 and reference specs as specs/auth/spec.md for clarity

Files:

  • openspec/changes/add-feedback-command/tasks.md
  • openspec/changes/add-feedback-command/proposal.md
openspec/changes/*/specs/**/spec.md

📄 CodeRabbit inference engine (openspec/AGENTS.md)

openspec/changes/*/specs/**/spec.md: Use ## ADDED|MODIFIED|REMOVED|RENAMED Requirements headers in spec delta files with at least one #### Scenario: per requirement
Format scenarios with exactly four hashtags (#### Scenario:) followed by bullet points with **WHEN** and **THEN** syntax
In MODIFIED Requirements, copy the entire existing requirement block and paste under ## MODIFIED Requirements, then edit to reflect new behavior
Use ADDED for new orthogonal capabilities; use MODIFIED for behavior/scope/criteria changes; use RENAMED for name-only changes
In spec deltas, include a **Reason** field for REMOVED requirements and a **Migration** field explaining how to handle the removal

Files:

  • openspec/changes/add-feedback-command/specs/cli-feedback/spec.md
openspec/**/**/spec.md

📄 CodeRabbit inference engine (openspec/AGENTS.md)

openspec/**/**/spec.md: Use SHALL/MUST for normative requirements in specs; avoid should/may unless intentionally non-normative
Ensure every requirement in spec files has at least one #### Scenario: with WHEN/THEN structure

Files:

  • openspec/changes/add-feedback-command/specs/cli-feedback/spec.md
openspec/changes/*/proposal.md

📄 CodeRabbit inference engine (openspec/AGENTS.md)

Create proposal.md with Why, What Changes (with BREAKING markers), and Impact sections

Files:

  • openspec/changes/add-feedback-command/proposal.md
🧠 Learnings (11)
📓 Common learnings
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:02.839Z
Learning: Use `@/openspec/AGENTS.md` to learn how to create and apply change proposals, spec format and conventions, and project structure and guidelines
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Scaffold `proposal.md`, `tasks.md`, optional `design.md`, and delta specs under `openspec/changes/<id>/` when creating a change proposal
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Applies to openspec/changes/*/proposal.md : Create `proposal.md` with Why, What Changes (with **BREAKING** markers), and Impact sections
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:02.839Z
Learning: Always open `@/openspec/AGENTS.md` when the request mentions planning or proposals (words like proposal, spec, change, plan), introduces new capabilities, breaking changes, architecture shifts, or performance/security work, or sounds ambiguous and needs the authoritative spec before coding
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Run `openspec validate [change] --strict --no-interactive` before sharing a proposal to resolve validation issues
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Applies to openspec/changes/*/tasks.md : Create `tasks.md` with numbered implementation sections and checkboxes in format `- [ ] X.Y Task description`

Applied to files:

  • openspec/changes/add-feedback-command/tasks.md
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Scaffold `proposal.md`, `tasks.md`, optional `design.md`, and delta specs under `openspec/changes/<id>/` when creating a change proposal

Applied to files:

  • openspec/changes/add-feedback-command/tasks.md
  • openspec/changes/add-feedback-command/specs/cli-feedback/spec.md
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Applies to openspec/changes/*/proposal.md : Create `proposal.md` with Why, What Changes (with **BREAKING** markers), and Impact sections

Applied to files:

  • openspec/changes/add-feedback-command/tasks.md
  • openspec/changes/add-feedback-command/specs/cli-feedback/spec.md
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Applies to openspec/changes/*/{proposal,design,tasks}.md : Use direct file references in format `file.ts:42` and reference specs as `specs/auth/spec.md` for clarity

Applied to files:

  • openspec/changes/add-feedback-command/tasks.md
  • openspec/changes/add-feedback-command/specs/cli-feedback/spec.md
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Read relevant specs in `specs/[capability]/spec.md` and check pending changes in `changes/` for conflicts before starting any task

Applied to files:

  • openspec/changes/add-feedback-command/tasks.md
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Complete all tasks sequentially from `tasks.md` and update every task to `- [x]` before marking proposal as complete

Applied to files:

  • openspec/changes/add-feedback-command/tasks.md
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Applies to openspec/changes/*/specs/**/spec.md : Use ADDED for new orthogonal capabilities; use MODIFIED for behavior/scope/criteria changes; use RENAMED for name-only changes

Applied to files:

  • openspec/changes/add-feedback-command/specs/cli-feedback/spec.md
📚 Learning: 2025-11-25T01:08:02.839Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:02.839Z
Learning: Use `@/openspec/AGENTS.md` to learn how to create and apply change proposals, spec format and conventions, and project structure and guidelines

Applied to files:

  • openspec/changes/add-feedback-command/specs/cli-feedback/spec.md
  • openspec/changes/add-feedback-command/proposal.md
📚 Learning: 2026-01-13T22:51:14.330Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: openspec/AGENTS.md:0-0
Timestamp: 2026-01-13T22:51:14.330Z
Learning: Applies to openspec/changes/*/specs/**/spec.md : Use `## ADDED|MODIFIED|REMOVED|RENAMED Requirements` headers in spec delta files with at least one `#### Scenario:` per requirement

Applied to files:

  • openspec/changes/add-feedback-command/specs/cli-feedback/spec.md
📚 Learning: 2025-11-25T01:08:02.839Z
Learnt from: CR
Repo: Fission-AI/OpenSpec PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T01:08:02.839Z
Learning: Always open `@/openspec/AGENTS.md` when the request mentions planning or proposals (words like proposal, spec, change, plan), introduces new capabilities, breaking changes, architecture shifts, or performance/security work, or sounds ambiguous and needs the authoritative spec before coding

Applied to files:

  • openspec/changes/add-feedback-command/specs/cli-feedback/spec.md
🪛 LanguageTool
openspec/changes/add-feedback-command/tasks.md

[uncategorized] ~3-~3: The official name of this software platform is spelled with a capital “H”.
Context: ...GitHub Authentication - [ ] 1.1 Create src/auth/github.ts module with Device OAuth flow - [ ]...

(GITHUB)

🔇 Additional comments (11)
openspec/changes/add-feedback-command/tasks.md (3)

1-7: LGTM!

The GitHub authentication tasks are well-structured and align with the specification requirements for Device OAuth flow and token storage.


16-20: LGTM!

Shell completions tasks are clear and align with the specification requirements.


28-33: LGTM!

Testing tasks provide comprehensive coverage for the new feedback functionality.

openspec/changes/add-feedback-command/proposal.md (1)

1-20: LGTM!

The proposal is well-structured and follows all guidelines. It clearly articulates the rationale, scope, and impact of the new feedback capability. All file references follow the correct format, and the sections align perfectly with the specification and tasks.

openspec/changes/add-feedback-command/specs/cli-feedback/spec.md (7)

21-26: Clarify the input mechanism for multiline messages.

The scenario describes what happens when a user provides a multiline message but doesn't specify HOW the user provides it. Is it via stdin, a file, or some other mechanism? This ambiguity makes the requirement difficult to implement and test.

Consider specifying the exact command syntax or input method, such as:

  • openspec feedback < message.txt (stdin)
  • openspec feedback "$(cat message.txt)" (shell expansion)
  • Or clarifying that this applies only when using --body flag with newlines

27-57: LGTM!

The GitHub authentication requirement comprehensively covers all authentication scenarios with clear, testable conditions.


58-73: LGTM!

Token storage requirements are clear and properly isolated from telemetry configuration.


74-90: LGTM!

The requirement correctly ensures feedback functionality is independent of telemetry settings, which is important for user trust and CI environments.


91-112: LGTM!

Excellent privacy-conscious design with clear inclusion and exclusion criteria for metadata.


113-135: LGTM!

Error handling scenarios are comprehensive and provide clear guidance for graceful failure modes.


175-187: LGTM!

Shell completion requirements are clear and align with the implementation tasks.


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.

@TabishB TabishB merged commit 40afee6 into main Jan 13, 2026
7 checks passed
@TabishB TabishB deleted the add-feedback-command branch January 13, 2026 23:39
@vibe-kanban-cloud
Copy link

Review Complete

Your review story is ready!

View Story

Comment !reviewfast on this PR to re-generate the story.

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.

2 participants