feedback-patterns

star 0

Patterns for providing structured feedback that closes the loop between implementation and requirements. Use when closing issues, documenting implementation decisions, or updating specs with learnings.

sudocode-ai By sudocode-ai schedule Updated 1/26/2026

name: feedback-patterns description: Patterns for providing structured feedback that closes the loop between implementation and requirements. Use when closing issues, documenting implementation decisions, or updating specs with learnings.

Feedback Patterns

Guidelines for providing effective feedback that connects implementation back to requirements.

When to Use

  • Closing an issue that implements a spec
  • Documenting design decisions made during implementation
  • Reporting challenges or blockers encountered
  • Suggesting spec improvements based on implementation experience
  • Requesting clarification on ambiguous requirements

Feedback Principles

1. Close the Loop

Feedback connects implementation back to requirements, creating a knowledge cycle.

Spec (requirements) → Issue (work) → Implementation → Feedback → Spec (updated)

2. Anchor to Specific Content

Feedback is most useful when tied to specific parts of the spec.

❌ BAD: "The spec was unclear"

✅ GOOD: Feedback anchored to line 45 of the spec:
"The phrase 'handle edge cases' needs specifics.
During implementation, I encountered: empty input,
null values, and timeout scenarios."

3. Include Evidence

Back up feedback with concrete observations.

❌ BAD: "It works"

✅ GOOD: "Requirements met:
- 47 tests passing (100% of acceptance criteria)
- Load tested to 1000 concurrent users
- Verified in staging environment"

4. Be Actionable When Needed

Suggestions and requests should be specific enough to act on.

❌ BAD: "Spec should be better"

✅ GOOD: "Suggestion: Add a 'Rate Limiting' section
covering: requests per minute limit, response format
for rate-limited requests, and retry-after header."

Feedback Types

Type Purpose When to Use Action Required
comment Informational Document what happened None (documentation)
suggestion Spec improvement Found gap or improvement Update spec
request Clarification needed Ambiguity blocking work User input needed

Comment (Informational)

Use for documenting what was done, decisions made, and outcomes.

Type: comment

Content:
Implemented OAuth login per spec requirements.

Decisions made:
- Used PKCE flow for security (not explicitly required but best practice)
- Token refresh happens 5 minutes before expiry (spec said "before expiry")
- Stored tokens in httpOnly cookies (spec was flexible on storage)

Evidence:
- 23 unit tests, 5 integration tests passing
- Tested with Google, GitHub, and Microsoft providers
- Security review passed

Suggestion (Spec Improvement)

Use when you've found something that should be added or changed in the spec.

Type: suggestion

Anchor: Line 34 ("Handle authentication errors gracefully")

Content:
Suggest adding specific error scenarios to handle:

1. **Token expired during request**
   - Current behavior: 401 response
   - Suggested: Auto-retry with refreshed token

2. **Provider unavailable**
   - Current behavior: Generic error
   - Suggested: Specific error code + fallback options

3. **Invalid state parameter**
   - Current behavior: Silent failure
   - Suggested: Security alert + session termination

These scenarios came up during implementation and testing.
Having them in the spec would help future maintainers.

Request (Clarification Needed)

Use when you need user input to proceed correctly.

Type: request

Anchor: Line 56 ("Support multiple authentication methods")

Content:
Clarification needed on priority and UX:

1. **Method priority**: If user has both password and OAuth,
   which takes precedence for login?

2. **Account linking**: Can users link multiple OAuth providers
   to one account? Or one provider per account?

3. **Migration path**: For existing password users, is OAuth
   optional or should we prompt them to add it?

Currently blocked on these decisions. Implemented password-first
as temporary approach, but this may need to change.

Feedback Structure

Standard Template

## Requirements Met
[What was implemented according to spec]

## Design Decisions
[Choices made during implementation with rationale]

## Challenges Encountered
[Problems faced and how they were resolved]

## Evidence
[Tests, metrics, observations proving completion]

## Suggestions
[Improvements to the spec based on learnings]

## Discovered Work
[New issues/specs that emerged]

Compact Template (for small issues)

✅ **Done:** [What was completed]
📝 **Decisions:** [Key choice made]
🔗 **Related:** [[i-xxxx]] discovered during work

Detailed Template (for complex implementations)

# Feedback: [Issue Title] → [[s-xxxx]]

## Summary
[One paragraph overview of implementation]

## Requirements Analysis

| Requirement | Status | Notes |
|-------------|--------|-------|
| Req 1 | ✅ Met | Implemented as specified |
| Req 2 | ✅ Met | Minor deviation (see below) |
| Req 3 | ⚠️ Partial | Blocked by external dependency |

## Design Decisions

### Decision 1: [Title]
**Context:** [Why this decision was needed]
**Options:** [What was considered]
**Choice:** [What was chosen]
**Rationale:** [Why]

### Decision 2: [Title]
...

## Challenges & Resolutions

### Challenge 1: [Title]
**Problem:** [What went wrong]
**Impact:** [How it affected work]
**Resolution:** [How it was fixed]

### Challenge 2: [Title]
...

## Evidence

### Testing
- Unit tests: X passing
- Integration tests: X passing
- Coverage: X%

### Verification
- [ ] Verified in development
- [ ] Verified in staging
- [ ] Performance benchmarked

### Metrics
- Response time: Xms (target: Yms)
- Error rate: X% (target: <Y%)

## Suggestions for Spec

### Suggestion 1
**Location:** [Line/section reference]
**Current:** [What spec says]
**Suggested:** [What it should say]
**Rationale:** [Why this change]

## Discovered Work

- [[i-xxxx]] - [Description] (created during implementation)
- [[s-yyyy]] - [Description] (new spec needed)

Anchoring Strategies

Line-Based Anchoring

Most precise, but may become stale if spec changes.

add_feedback({
  to_id: "s-auth",
  type: "suggestion",
  line: 45,
  content: "This requirement needs clarification..."
})

Text-Based Anchoring

Finds the text and anchors there, more resilient to changes.

add_feedback({
  to_id: "s-auth",
  type: "comment",
  text: "Support OAuth 2.0 providers",
  content: "Implemented with Google, GitHub, Microsoft..."
})

Section-Based Anchoring

Anchors to a heading/section, good for broad feedback.

add_feedback({
  to_id: "s-auth",
  type: "suggestion",
  text: "## Security Requirements",
  content: "Consider adding rate limiting section..."
})

No Anchor (Spec-Level)

For feedback about the entire spec.

add_feedback({
  to_id: "s-auth",
  type: "comment",
  content: "Overall implementation complete. See details..."
})

Processing Feedback

Feedback Triage Workflow

1. LIST FEEDBACK
   show_spec <id>  # Includes feedback section

2. TRIAGE EACH ITEM
   For each feedback:

   TYPE: comment
   → Acknowledge, no action needed
   → May inform future work

   TYPE: suggestion
   → Evaluate: Is this a valid improvement?
   → YES: Update spec, mark addressed
   → NO: Respond with rationale

   TYPE: request
   → Provide clarification
   → Update spec with clarification
   → Unblock related issues

3. UPDATE SPEC
   upsert_spec <id> with improvements

4. CREATE FOLLOW-UPS
   If feedback reveals new work:
   upsert_issue for discovered work
   link to original feedback

Feedback Status

Feedback can become stale when specs change:

Status Meaning Action
valid Anchor still matches Review and address
relocated Found at different location Verify still relevant
stale Anchor not found Manual review needed

Good vs Bad Feedback

Requirements Met

❌ BAD:
"Done."

✅ GOOD:
"Requirements met:
- User can log in with email/password ✅
- Session persists across page refresh ✅
- Logout clears session completely ✅
- Invalid credentials show specific error ✅

All 4 acceptance criteria verified with automated tests."

Design Decisions

❌ BAD:
"Made some choices during implementation."

✅ GOOD:
"Design decisions:

1. **Token storage**: Chose httpOnly cookies over localStorage
   - Rationale: XSS protection, automatic inclusion in requests
   - Trade-off: Requires CSRF protection (added)

2. **Session duration**: Set to 7 days with sliding expiration
   - Rationale: Balance security with UX
   - Spec said 'reasonable duration' - clarified as 7 days"

Challenges

❌ BAD:
"Had some issues but figured it out."

✅ GOOD:
"Challenges encountered:

1. **Race condition in token refresh**
   - Problem: Multiple tabs could trigger simultaneous refresh
   - Impact: Occasional auth failures
   - Resolution: Added mutex lock on refresh operation
   - Prevention: Added to test suite

2. **OAuth state mismatch**
   - Problem: State parameter lost on mobile browsers
   - Impact: Login failed on iOS Safari
   - Resolution: Store state in sessionStorage as backup
   - Suggestion: Add mobile testing requirements to spec"

Suggestions

❌ BAD:
"Spec could be improved."

✅ GOOD:
"Suggestions for spec improvement:

1. **Add error code reference** (anchor: line 34)
   Current: 'Handle errors appropriately'
   Suggested: Add table of error codes:
   - AUTH001: Invalid credentials
   - AUTH002: Account locked
   - AUTH003: Session expired

2. **Clarify mobile behavior** (anchor: Security section)
   Current: Not mentioned
   Suggested: Add section on mobile-specific considerations:
   - Deep linking for OAuth callbacks
   - Biometric authentication option
   - Offline token handling"

Feedback Workflow Integration

When Closing an Issue

1. BEFORE CLOSING
   - Verify acceptance criteria met
   - Run verification loop
   - Prepare feedback content

2. PROVIDE FEEDBACK
   add_feedback to_id=<spec-id> type=comment content=<feedback>

3. CLOSE ISSUE
   upsert_issue <id> status=closed

4. CHECK NEXT WORK
   ready

Feedback Checklist

Before closing an issue that implements a spec:

□ Reviewed spec requirements
□ All acceptance criteria addressed
□ Design decisions documented
□ Challenges and resolutions noted
□ Evidence provided (tests, verification)
□ Suggestions for spec improvement (if any)
□ Discovered work captured as issues
□ Feedback anchored to relevant spec sections

Quick Reference

Providing Feedback

// Comment (informational)
add_feedback({
  to_id: "s-xxxx",
  type: "comment",
  content: "Implementation complete. [details]"
})

// Suggestion (spec improvement)
add_feedback({
  to_id: "s-xxxx",
  type: "suggestion",
  line: 45,  // or text: "section heading"
  content: "Suggest adding [X] because [Y]"
})

// Request (clarification needed)
add_feedback({
  to_id: "s-xxxx",
  type: "request",
  text: "ambiguous requirement text",
  content: "Need clarification on [X]. Options are [A, B, C]."
})

Viewing Feedback

show_spec <id>       # Shows spec with all feedback

Remember: Feedback is how implementations improve specs, and specs improve future implementations. Good feedback creates a virtuous cycle of learning. Poor feedback (or no feedback) means the same mistakes get repeated.

Install via CLI
npx skills add https://github.com/sudocode-ai/everything-sudocode --skill feedback-patterns
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator