Skip to content
Back to skills

Sync Credentials

ASecurity

Sync credential IDs from the live n8n instance. Two modes — list (default) reports IDs + TypeScript snippets, fix-workflows rewrites stale credential IDs in local `.workflow.ts` files by joining on credential name. Use after n8n migration, when setting up a new instance, or in response to a credential-freshness auto-reaction signal.

  • 18 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 26, 2026
developmenttypescriptbashreactnodeapi

Works with

  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add neurawork-git/n8n-autopilot --skill sync-credentials --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sync Credentials?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Sync Credentials
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/neurawork-git-sync-credentials/badge)](https://www.skillsdirectory.com/skills/neurawork-git-sync-credentials)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: sync-credentials
description: Sync credential IDs from the live n8n instance. Two modes — list (default) reports IDs + TypeScript snippets, fix-workflows rewrites stale credential IDs in local `.workflow.ts` files by joining on credential name. Use after n8n migration, when setting up a new instance, or in response to a credential-freshness auto-reaction signal.
argument-hint: "[--dry-run] [--fix-workflows]"
user-invocable: true
allowed-tools: Bash(node:*), Bash(npx:*)
---

# Sync Credentials from n8n Instance

All work happens in `scripts/` (colocated). The skill body is short on purpose — the scripts are the source of truth.

## Modes

### Default — list live credentials

```bash
node "$CLAUDE_PLUGIN_ROOT/skills/sync-credentials/scripts/list.js"
```

Prints a table of all credentials on the active n8n instance plus ready-to-paste TypeScript snippets. Read-only.

### `--fix-workflows` — rewrite stale credential IDs

```bash
node "$CLAUDE_PLUGIN_ROOT/skills/sync-credentials/scripts/fix-workflows.js" [--dry-run] [--all-projects]
```

Walks `workflows/**/*.workflow.ts`, finds every `credentials: { <type>: { id: '…', name: '…' } }` block, joins by credential **name** against the live instance **filtered to the workspace-pinned project**, and rewrites the `id` value where the live ID differs from the local one. Order of `id` / `name` inside the block is tolerated; type mismatches and orphans are reported and NOT auto-rewritten.

**Project scoping (default):** credentials owned by projects other than the active workspace project are dropped from the candidate pool. This prevents cross-project ID injection that would push fine but fail at runtime ("credential not accessible"). Use `--all-projects` to disable the filter (rare).

Add `--dry-run` to preview without writing files.

This is what the SessionStart credential-freshness auto-reaction triggers:

```
AUTOPILOT_ACTION_REQUIRED: /n8n-autopilot:sync-credentials --fix-workflows
```

## Companion scripts

- `scripts/list.js` — fetches credentials via `npx n8nac credential list --json`, prints table + snippets
- `scripts/fix-workflows.js` — the rewrite logic. Self-contained Node script, tolerant block-parsing regex, surgical `id:` replacement inside each matched block (never global), conflict + orphan reporting.

## Prerequisites

- n8nac workspace bound. Check via `npx n8nac workspace status --json`. If not bound, run `npx n8nac setup --mode connect-existing` first.
- At least one credential configured on the live instance (or create one via `npx n8nac credentials ensure <recipeId>` from the shared recipe catalogue).

## Error Handling

- **`n8nac credential list` fails** → script exits 1 with a hint to check `workspace status`.
- **No `.workflow.ts` files** → script exits 2 with a hint.
- **Type mismatch** (workflow says `openAiApi`, live credential with that name is `openRouterApi`) → reported as conflict, NOT rewritten.
- **Duplicate name on instance** (same credential name appears twice live) → reported as conflict, NOT rewritten — user must rename one on the instance.
- **Orphan** (workflow references a name that does not exist on live instance) → reported, NOT rewritten — user creates the credential or removes the reference.

## When to auto-trigger this skill

The SessionStart hook `scripts/check-credential-freshness.sh` (plugin-wide, not in this skill folder — it is a generic plugin hook) emits the auto-reaction line above when it detects local workflow files referencing credential IDs that do not exist on the live instance. Run with `--fix-workflows` in that case — `list` alone does not resolve the underlying problem.

Files in this skill

  • SKILL.md3.6 KB
  • scripts/fix-workflows.js7.6 KB
  • scripts/list.js2.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.