mcpField
W
wjs-looping-feedback

wjs-looping-feedback

github.com/jianshuoAgent workflows13792 installsUpdated today
Repository

About wjs-looping-feedback

wjs-looping-feedback installs a feedback loop based on GitHub Issues and Actions in a website repository, for maintainers handling visitor suggestions in their own repo. Claude Code edits the site according to repository instructions, while changes, deployment status, and a revert path are recorded.

Key features

  1. 01Floating button that prefills a GitHub Issue
  2. 02Allowlist-based submission gate
  3. 03Site edits through Claude Code Action
  4. 04Automatic commits, ledger, and dashboard updates
  5. 05Reverts initiated through feedback issues

Use cases

  1. 01Collect visitor suggestions for website changes
  2. 02Apply approved feedback through the repo's GitHub Actions
  3. 03Review suggestion-related commits and revert them

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/jianshuo/claude-skills --skill wjs-looping-feedback

After installing, type/wjs-looping-feedbackin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

.gitignore
package.json
README.md
assets/
config.sample.json
feedback-finalize.mjs
feedback-ledger.json
feedback-lib.mjs
feedback-widget.html
feedback.yml
INSTRUCTIONS.md
references/
install.md
scripts/
detect-site.mjs
tests/
detect-site.test.mjs
finalize.test.mjs
lib.test.mjs

Details

From the project README

wjs-looping-feedback

Installs a self-driving feedback loop into any website repo. Runs entirely on the repo owner's own GitHub Actions, authenticated with their Pro/Max OAuth token or their own ANTHROPIC_API_KEY — no extra service or backend.

What it installs

  1. A floating feedback button (prefills a GitHub Issue — no backend, no keys client-side).
  2. .github/workflows/feedback.yml — allowlist gate → Claude Code Action → auto-commit → push to main (auto-deploy) → ledger + dashboard update → close issue.
  3. /_feedback dashboard — every suggestion, what Claude did, commit, status, one-click revert.
  4. .feedback/ runtime: feedback-lib.mjs, feedback-finalize.mjs, INSTRUCTIONS.md, feedback-ledger.json, config.json.

How it works

visitor clicks button → fills suggestion → prefilled GitHub Issue (label feedback) → Actions checks the author is in FEEDBACK_ALLOWLIST (else closes the issue) → Claude Code edits the site per .feedback/INSTRUCTIONS.md → workflow commits to main, updates the ledger + dashboard → the deploy ships it → the issue gets a comment with the commit and a link to /_feedback. Revert is the same loop driven by a revert: #N issue.

Deploy triggering — read before you install (common gotcha)

The workflow pushes to main with the built-in GITHUB_TOKEN. Two cases:

  • External push-deploy host (Cloudflare Pages git-connect, Vercel, Netlify): their webhook fires on every push, so the bot's commit deploys automatically. Nothing to do.
  • Deploy is itself a GitHub Actions workflow in the SAME repo (e.g. GitHub Pages via Actions): GitHub deliberately does NOT let a GITHUB_TOKEN push trigger another workflow (recursion prevention), so the deploy workflow's on: push will NOT fire — the change lands on main but never goes live. Bridge it by adding a workflow_run trigger to the deploy workflow (see references/install.md step 4.5).

To install

Read references/install.md and follow it in the target repo. It detects the site type (Hugo / Next.js / Astro / static), copies assets, injects the widget, and asks the user for exactly two things: the allowlist of GitHub usernames and the auth (Pro/Max OAuth token via claude setup-token, or an ANTHROPIC_API_KEY).

Scope (route 1)

Runs in the user's own repo with their own auth. Submitters need a GitHub account; only allowlisted authors trigger work. Not a hosted service — no anonymous submit, no billing, no multi-tenant. (A future GitHub-App packaging would reuse every asset here.)

Comments

Markdown supported