sync-feedback

Review and sync captured feedback to Product Forge

9 stars

Best use case

sync-feedback is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Review and sync captured feedback to Product Forge

Teams using sync-feedback should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/sync-feedback/SKILL.md --create-dirs "https://raw.githubusercontent.com/jpoutrin/product-forge/main/plugins/claude-code-dev/skills/sync-feedback/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/sync-feedback/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How sync-feedback Compares

Feature / Agentsync-feedbackStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Review and sync captured feedback to Product Forge

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Sync Feedback

Review feedback captured from your Claude Code sessions and sync to Product Forge.

## Usage

```bash
/sync-feedback              # Show status (default)
/sync-feedback --process    # Process captured sessions with LLM analysis
/sync-feedback --review     # Review pending feedback
/sync-feedback --export     # Export to GitHub issues format
```

## Options

| Option | Description |
|--------|-------------|
| `--status` | Show feedback statistics across all projects |
| `--process` | Process captured sessions with LLM to extract feedback |
| `--review` | Interactive review of pending feedback items |
| `--export` | Export reviewed feedback to GitHub issue format |

## Feedback Location

All feedback is stored in `~/.claude/learnings/`:

```
~/.claude/learnings/
├── projects.json          # Registry of opted-in projects
├── stats.json             # Global statistics
└── projects/
    └── {project-slug}/
        └── feedback/
            ├── improvement/
            ├── skill-idea/
            ├── command-idea/
            ├── bug-report/
            └── pattern/
```

## Workflow

```
1. Enable hooks → /enable-feedback-hooks
2. Work normally → Sessions captured on exit (fast, no LLM)
3. Process      → /sync-feedback --process (LLM analyzes sessions)
4. Review       → /sync-feedback --review
5. Submit       → /sync-feedback --export → Create GitHub issue
```

## Execution Instructions

When the user runs this command:

### Process Mode (--process)

1. **Run the process-sessions script**:
   ```bash
   python3 ${CLAUDE_PLUGIN_ROOT}/scripts/hooks/process-sessions.py --all
   ```

2. **The script will**:
   - Find all unprocessed sessions in `~/.claude/learnings/sessions/`
   - For each session, read the transcript and extract user messages
   - Call `claude -p` to analyze messages for feedback
   - Save extracted feedback items to appropriate directories
   - Mark sessions as processed

3. **Display results**:
   ```
   Processing sessions...
   [process-sessions] Processing session abc12345 for project 'product-forge'
   [process-sessions]   Saved: improvement-add-validation.md
   [process-sessions]   Saved: skill-idea-log-checker.md

   Processed 3 sessions, found 5 feedback items

   Run /sync-feedback --review to review extracted feedback.
   ```

### Status Mode (--status or default with no pending items)

1. **Read statistics** from `~/.claude/learnings/stats.json`

2. **Read projects** from `~/.claude/learnings/projects.json`

3. **Count pending items** by scanning `~/.claude/learnings/projects/*/feedback/**/*.md`

4. **Display summary**:
   ```
   Product Forge Feedback Status
   ==============================

   Total feedback captured: 15
   Pending review: 8

   By Type:
     improvement:  6 (4 pending)
     skill-idea:   4 (2 pending)
     command-idea: 2 (1 pending)
     bug-report:   2 (1 pending)
     pattern:      1 (0 pending)

   By Project:
     product-forge:  7 items
     my-django-app:  5 items
     frontend-app:   3 items

   Run /sync-feedback --review to review pending items.
   ```

### Review Mode (--review)

1. **Find all pending feedback** files:
   ```bash
   find ~/.claude/learnings/projects -name "*.md" -path "*/feedback/*"
   ```

2. **For each pending item**, display:
   ```
   [1/8] improvement - product-forge
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   Title: Add status filtering to /task-list command

   Description:
   The /task-list command shows all tasks regardless of status.
   Adding --status flag would help filter to pending/completed items.

   Target: plugins/product-design/commands/task-list.md

   Actions:
     [a] Approve - Mark as reviewed, ready for sync
     [d] Dismiss - Remove this feedback
     [s] Skip    - Review later
     [e] Edit    - Open in editor
     [q] Quit    - Exit review

   Select action:
   ```

3. **Process user action**:
   - **Approve**: Update status in frontmatter to `reviewed`
   - **Dismiss**: Move to `~/.claude/learnings/synced/dismissed/`
   - **Skip**: Continue to next item
   - **Edit**: Allow inline editing of the feedback
   - **Quit**: Exit review mode

4. **Show summary** at end:
   ```
   Review complete:
     Approved: 5
     Dismissed: 2
     Skipped: 1

   Run /sync-feedback --export to generate GitHub issues.
   ```

### Export Mode (--export)

1. **Find reviewed feedback** (status: reviewed):
   ```bash
   grep -l "status: reviewed" ~/.claude/learnings/projects/*/feedback/**/*.md
   ```

2. **For each reviewed item**, generate GitHub issue format:
   ```markdown
   ## Issue: [improvement] Add status filtering to /task-list

   **Type**: improvement
   **Target**: plugins/product-design/commands/task-list.md
   **Source Project**: product-forge

   ### Description
   The /task-list command shows all tasks regardless of status.
   Adding --status flag would help filter to pending/completed items.

   ### Suggested Implementation
   [From feedback description]

   ---
   Captured via Product Forge feedback hooks
   ```

3. **Offer submission options**:
   ```
   5 items ready for export:

   Options:
     [1] Copy to clipboard (one at a time)
     [2] Create GitHub issue via gh CLI
     [3] Export to file (feedback-export.md)
     [4] Cancel

   Select option:
   ```

4. **After export**, move items to `~/.claude/learnings/synced/`

## Feedback File Format

Each feedback file uses YAML frontmatter:

```markdown
---
type: improvement
status: pending
captured: 2026-01-06T15:30:00Z
session_id: abc123
project: my-django-app
repo: https://github.com/user/my-django-app
target: plugins/python-experts/skills/django-api
---

# Add pagination guidance to django-api skill

The django-api skill covers endpoint creation but lacks
guidance on pagination patterns for large datasets.
```

## Status Transitions

```
pending → reviewed → synced
            ↓
         dismissed
```

## Notes

- Feedback stays local until you explicitly export/submit
- Dismissed items are archived, not deleted
- Use `--status` regularly to see accumulated feedback
- The Product Forge team reviews submitted feedback for inclusion

Related Skills

bl-sync

9
from jpoutrin/product-forge

Sync git-branchless stack with main branch - fetch, rebase, and handle merges

enable-feedback-hooks

9
from jpoutrin/product-forge

Enable feedback capture hooks for the current project

zod

9
from jpoutrin/product-forge

Zod schema validation patterns and type inference. Auto-loads when validating schemas, parsing data, validating forms, checking types at runtime, or using z.object/z.string/z.infer in TypeScript.

typescript-import-style

9
from jpoutrin/product-forge

Merge-friendly import formatting (one-per-line, alphabetical). Auto-loads when writing TypeScript/JavaScript imports to minimize merge conflicts in parallel development. Enforces consistent grouping and sorting.

setup-mcp-auth

9
from jpoutrin/product-forge

Configure authentication for an existing FastMCP server

fastmcp

9
from jpoutrin/product-forge

FastMCP TypeScript framework patterns for MCP servers. Auto-loads when building MCP servers, creating tools/resources/prompts, implementing authentication, configuring transports, or working with FastMCP in TypeScript.

add-mcp-tool

9
from jpoutrin/product-forge

Add a new tool to an existing FastMCP server with guided configuration

add-mcp-resource

9
from jpoutrin/product-forge

Add a new resource or resource template to an existing FastMCP server

plan-with-team

9
from jpoutrin/product-forge

Validate plan file ownership

privacy-compliance

9
from jpoutrin/product-forge

GDPR, CCPA, and privacy compliance guidance for data protection. Use when handling personal data, implementing consent management, or ensuring regulatory compliance across jurisdictions.

oauth

9
from jpoutrin/product-forge

OAuth 2.0 and OpenID Connect implementation patterns. Use when implementing authentication, authorization flows, or integrating with OAuth providers like Google, GitHub, or custom identity providers.

mcp-security

9
from jpoutrin/product-forge

Use when securing MCP servers, preventing prompt injection, implementing authorization, validating user input, or building secure multi-agent pipelines. Provides 5-layer defense architecture patterns.