agentleFS
neurawork-gitneurawork-git/n8n-autopilot/skills/feedback/SKILL.md

feedback

Skill18 starsChanged 43 days agoMITView on GitHub

Review the current n8n-autopilot session for learnings (operational friction + workflow design anti-patterns), strip all PII, and push the redacted insights centrally via the plugin's ingest webhook (they land as batch comments on the public rollup issue). Side-effecting on `sync`/`review`-push — shows the redacted result and requires explicit confirmation.

26 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use setup, status and 6 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • VercelSkill

    setup

    Set up Vercel CLI and project configuration. Use when the user says "set up Vercel", "configure Vercel", "link to Vercel", or "vercel init".

    Also in 5 projects that use this

  • AnthropicSkill

    status

    Case status summary by audience — client-facing (plain language), internal (for the professor), or court-ready (formal caption format per local rules). Same facts, different framing and depth. Use when a student needs to update the client, brief the professor, or prepare a court status report.

    Also in 3 projects that use this

  • GitHubSkill

    refactor

    Surgical code refactoring to improve maintainability without changing behavior. Covers extracting functions, renaming variables, breaking down god functions, improving type safety, eliminating code smells, and applying design patterns. Less drastic than repo-rebuilder; use for gradual improvements.

    Also in 3 projects that use this

  • AnthropicSkill

    debug

    Structured debugging session — reproduce, isolate, diagnose, and fix. Trigger with an error message or stack trace, "this works in staging but not prod", "something broke after the deploy", or when behavior diverges from expected and the cause isn't obvious.

    Also in 3 projects that use this

  • BlockSkill

    plan

    Draft a TDD, PRD, or lightweight plan in the conversation without committing it.

    Also in 3 projects that use this

  • SentrySkill

    review

    Fixture review skill.

    Also in 4 projects that use this

The file

We split this skill into the rules it gives an agent

6 rules. 0 are common, 2 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 24 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use "$PR" in every command below.

    line 45
  2. Very specific:

    Use the printed path. (If it errors — no transcript — fall back to reviewing events.ndjson only.)

    line 53
  3. Very specific:

    Read .n8n-autopilot/feedback/events.ndjson — these are the SessionEnd hook's NON-PII friction counts (the 11 operational classes + …

    line 57
  4. Very specific:

    Use Grep/Read over workflows//*.workflow.ts:

    line 63
  5. Distinctive:

    Do not dump the records verbatim.

    line 113
  6. Distinctive:

    Ask the user (accept "skip" per item):

    line 156

“Common” is measured: kept by at least 6 in 10 of the 24 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Autopilot Feedback — Review, Redact, Push

The plugin learns from real usage. This skill reviews a session, removes anything data-protected, and pushes the distilled learnings centrally so the same friction does not recur across customers. Local stores live in the consumer repo under .n8n-autopilot/feedback/ (gitignored): events.ndjson (auto-captured signal counts from the SessionEnd hook) + process.ndjson (review/interview output). The deterministic PII gate lives in scripts/redact-check.js.

Parse $ARGUMENTS:

  • empty / review → Review & push (default, the one-shot)
  • interview → short manual Q&A only
  • show → list pending records
  • sync → push existing pending records (re-runs the PII gate)

PII is non-negotiable. Consumer repos contain customer data. Everything that leaves the machine is (1) LLM-redacted to neutral insights and (2) passed through a deterministic allowlist gate (redact-check.js) that BLOCKS emails, paths, URLs, long digit runs, tokens, and configured customer names. Counts + repo basename only; never transcript text or workflow content.


Review & push (default)

0. Resolve the plugin root once

$CLAUDE_PLUGIN_ROOT is expanded inside hooks.json commands only — in the Bash tool it is EMPTY, and every node "$CLAUDE_PLUGIN_ROOT/…" call below then fails with MODULE_NOT_FOUND on a path under the shell root (#74, #100). Set it from the skill's base directory (the "Base directory for this skill" line Claude Code printed when this skill loaded — its plugin root is two levels up):

PR="${CLAUDE_PLUGIN_ROOT:-<plugin root, e.g. ~/.claude/plugins/marketplaces/n8n-autopilot>}"
test -f "$PR/skills/feedback/scripts/record.js" || echo "wrong plugin root: $PR"

Use "$PR" in every command below.

1. Resolve the session transcript

node "$PR/skills/feedback/scripts/latest-transcript.js" --workspace .

Use the printed path. (If it errors — no transcript — fall back to reviewing events.ndjson only.)

2. Gather auto-captured signals

Read .n8n-autopilot/feedback/events.ndjson — these are the SessionEnd hook's NON-PII friction counts (the 11 operational classes + memory_oom + continue_on_fail). Summarize the totals.

3. Measure file-level design quality (accurate — read the actual workflows)

These design anti-patterns are NOT in the transcript counts; measure them from the real files. Use Grep/Read over workflows/**/*.workflow.ts:

  • Code-overuse (D1) — count n8n-nodes-base.code vs native if/switch/filter. Flag Code nodes that only branch or remap (a native node would do it). Report the ratio.
  • Missing descriptions (D4) — @workflow({...}) without a description; key nodes without notes.
  • Overlapping nodes (D5) — node position pairs within ~80px on both axes (unreadable canvas).
  • (Memory/OOM + continueOnFail already come from step 2's signals.)

4. Qualitative pass (targeted, not a full dump)

Skim the transcript for process pain the counts miss (repeated dead-ends, manual detours, unclear errors). Keep it to a few concrete, generalizable observations — NOT a play-by-play.

5. Compose REDACTED, TYPED finding records — one per concrete problem

A finding is the actionable unit: one finding = one GitHub issue. Do NOT write one blob record — write one finding per distinct problem, each answering: what went wrong, where, what was expected, what would fix it. Neutral phrasing, no customer names, no file paths, no workflow content, no values, no URLs. Node types (n8n-nodes-base.github) and n8nac commands (n8nac push) are safe and REQUIRED context — put them in area.

node "$PR/skills/feedback/scripts/record.js" '{
  "kind": "finding",
  "type": "schema-gap|cli-friction|validation-loop|mcp-detour|credential-gap|doc-gap|design-antipattern|bug|other",
  "severity": "low|medium|high",
  "area": "<node type or n8nac command>",
  "title": "<one line — becomes the issue title>",
  "observed": "<what actually happened, incl. exact error phrase if non-PII>",
  "expected": "<what should have happened>",
  "suggestion": "<concrete fix idea>",
  "signals": { "<signal-class>": N }
}'

type, title, observed are required (record.js enforces). Attach the session's relevant signal counts as signals evidence. Repeat per problem — 3 problems = 3 findings = 3 issues.

6. Run the deterministic PII gate (show the user)

node "$PR/skills/feedback/scripts/redact-check.js" .n8n-autopilot/feedback/process.ndjson
  • OK → proceed.
  • BLOCKED → the gate lists the offending field. Re-redact that field (neutralize it) and rewrite the record, then re-run. NEVER bypass the gate.

7. Confirm — one line per finding, then a multiple-choice prompt

Do not dump the records verbatim. With three or more findings that is a wall of text nobody reads, and an unread confirmation is not consent. Render a compact table:

| # | sev | type | title |
|---|-----|------|-------|
| 1 | high   | bug          | push rejects a validated file … |
| 2 | medium | cli-friction | extend mode re-builds unchanged … |

Then state the target in one line — "pushes N finding(s) as N public GitHub issues on neurawork-git/n8n-autopilot; customer/repo name stripped, reporter = your OS username included by design" — and ask via AskUserQuestion, not free text:

  • Alle pushen (N findings)
  • Auswählen — then list the numbers to push
  • Abbrechen — nothing is sent

Verbatim JSON stays available on request (show); offer it, do not print it unprompted. Anything other than an explicit confirmation means no push.

8. Push

bash "$PR/skills/feedback/scripts/sync.sh"              # "Alle pushen"
bash "$PR/skills/feedback/scripts/sync.sh" --only 1,3   # "Auswählen"

--only takes the numbers from the step-7 table. Unselected findings stay pending — they are not marked synced, so a later run can still push them.

sync.sh pushes finding records only (raw event counts are local telemetry — the review flow distills them into findings first; sync refuses with a hint if only counts are pending). It re-runs redact-check.js as a hard gate on the exact payload (defense-in-depth), adds pluginVersion + reporter (OS username), then POSTs ONE batch to the ingest webhook (N8N_AUTOPILOT_FEEDBACK_URL overrides the default). The ingest workflow creates one issue per finding. On HTTP 200 sync moves all pending records to synced.ndjson and lists the created issue URLs. If it exits non-zero, surface the error verbatim and stop — nothing was pushed, nothing was marked.


Interview (manual Q&A only)

Ask the user (accept "skip" per item):

  1. Non-HTTP-Trigger-Test umständlich? 2. Konflikt-Auflösung häufig? 3. Validate→Fix-Schleifen / Fehler klar?
  2. MCP-Publish genervt? 5. Node-Schemas gefehlt? 6. Rating 1–5. 7. Freitext (optional).

Store the raw Q&A as a process record, then distill each concrete pain point into a typed finding record (step 5 schema) — only findings become issues:

node "$PR/skills/feedback/scripts/record.js" '{"answers":{...},"freeText":"..."}'
node "$PR/skills/feedback/scripts/record.js" '{"kind":"finding","type":"...","title":"...","observed":"...", ...}'

Then run the PII gate (step 6) before any sync.


Show pending

node -e '
const fs=require("fs"),p=require("path");
const store=p.join(process.cwd(),".n8n-autopilot","feedback");
for(const f of ["events.ndjson","process.ndjson"]){const fp=p.join(store,f);if(!fs.existsSync(fp))continue;
for(const l of fs.readFileSync(fp,"utf8").split("\n")){const t=l.trim();if(!t)continue;
try{const r=JSON.parse(t);if(r.synced!==true)console.log(r.kind,r.ts,r.repoLabel,JSON.stringify(r.signals||r.insights||r.answers||{}));}catch(e){}}}
'

Sync only

Runs the PII gate then pushes (see step 8). Always shows records + requires confirmation first.

The sync.sh script is the ONLY place a push happens (one curl POST to the ingest webhook — no gh/GitHub account needed on the consumer side). No hook ever pushes — capture is local-only; the push is always this user-triggered, PII-gated, confirmed flow. Maintainer-side refinement of the rollup issue = the feedback-triage agent (that one DOES need gh).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.