Help us improve
Share bugs, ideas, or general feedback.
From corezoid
Reviews and audits entire Corezoid projects or folders with per-process linting, cross-process dependency analysis, and aggregated reporting.
npx claudepluginhub corezoid/corezoid-ai-plugin --plugin corezoidHow this skill is triggered — by the user, by Claude, or both
Slash command
/corezoid:corezoid-project-reviewThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are a specialist in auditing entire Corezoid projects and folders using the `corezoid` MCP server.
Audits Corezoid BPM processes for structural issues, hardcoded values, and optimization opportunities. Use when analyzing or reviewing `.conv.json` process definitions.
Provides proven architectural patterns for n8n workflows covering webhook processing, HTTP API integration, database operations, AI agents, batch processing, and scheduled tasks. Use when building or designing automations.
Guides Zapier and Make no-code automation patterns, pitfalls, platform choices (simplicity vs power), reliable workflows, and when to switch to code.
Share bugs, ideas, or general feedback.
You are a specialist in auditing entire Corezoid projects and folders using the corezoid MCP server.
Per-process analysis follows the same steps as the corezoid-review skill (lint, hardcodes, naming, code review, semaphors, error handling, dependencies). This skill adds orchestration: discovery, batching, cross-process analysis, and aggregated reporting.
Read .env from the current working directory and check for COREZOID_STAGE_ID.
COREZOID_STAGE_ID is missing or empty → stop and invoke the corezoid-init skill. Do not proceed until init completes.COREZOID_STAGE_ID is present → use it as the root folder_id for the review scope.Collect for each process: conv_id, title, folder_id, project_id, stage_id, obj_type.
Store as process_inventory[]. Skip objects where obj_type != conveyor unless explicitly requested.
Before starting, report:
Found N processes in project "<project_name>":
- Process A (conv_id: 12345)
- Process B (conv_id: 67890)
...
Proceeding with full review.
Process all sizes automatically without confirmation. Stream progress in batches of 10.
For each process in process_inventory[]:
pull-process using process_idcorezoid-review skill):
lint-process)process_reports[conv_id]Reviewed N/total: "<title>" — X findingsReference: ${CLAUDE_PLUGIN_ROOT}/skills/corezoid-review/SKILL.md
Requires all process_reports[] from Phase 1.
Build a directed graph — nodes: all processes; edges: every api_rpc / api_copy call between them.
Flag:
conv_id values pointing outside the project inventoryapi_code nodes → candidate for shared subprocessAggregate only normalized hardcode.* findings from per-process reports. Do not aggregate dynamic Corezoid expressions, dependency.state_store_ref, or values fully wrapped in {{...}} as shared hardcodes.
env_varconv_id in > 1 process → one alias fix resolves allenv_varFalse-positive guard (same as per-process review):
{{conv[@storage].ref[{{key}}].field}}cross_process.shared_hardcode_valueFlag:
create and modify in different processes → race condition riskconv_id in another → inconsistencyFlag:
"error" across project) → recommend naming standardCreate_X vs createX)Produce two output files: project-review-<date>.json and project-review-<date>.md.
All per-process findings from Phase 1 are merged into a single flat findings[] array. Cross-process findings (Phase 2) are added to the same array with conv_id: null and issue_type from the table below.
Run final normalization after merging: remove duplicates, remove dynamic-expression hardcode false positives, keep dependency.state_store_ref separate from hardcode metrics, recompute all summary counters.
| issue_type | issue_subtype | severity |
|---|---|---|
cross_process | circular_dependency | high |
cross_process | orphaned_process | warning |
cross_process | high_fan_in | warning |
cross_process | high_fan_out | warning |
cross_process | external_call | low |
cross_process | shared_hardcode_url | high |
cross_process | shared_hardcode_token | high |
cross_process | shared_hardcode_value | medium |
cross_process | duplicate_logic | low |
cross_process | alias_conflict | warning |
cross_process | naming_convention | low |
Cross-process finding example:
{
"conv_id": null,
"process_title": null,
"node_id": null,
"node_title": null,
"issue_type": "cross_process",
"issue_subtype": "shared_hardcode_url",
"severity": "high",
"value": "https://api.openai.com",
"location": "found_in: [1779750, 1779754, 1782365]",
"recommendation": "extract to shared env_var OPENAI_API_URL"
}
| Process | Findings | High | Medium | Warning | Low |
|---|---|---|---|---|---|
| Process A (12345) | 12 | 2 | 3 | 4 | 3 |
| Process B (67890) | 5 | 0 | 1 | 2 | 2 |
| Cross-process | 4 | 1 | 1 | 2 | 0 |
| Total | N |
🔴 CRITICAL (fix before release)
1. [Process A / Node X / semaphor / api_callback_missing] — tasks will hang
2. [Cross-process / shared_hardcode_token] — token "sk-xxx" in 3 processes — revoke & move to env_var
3. [Process B / Node Y / hardcode / url] — external URL hardcoded — extract to env_var
🟡 IMPORTANT (fix in next sprint)
4. [Cross-process / circular_dependency] — Process B → Process A → Process B
5. [Cross-process / shared_hardcode_url] — https://api.example.com in 4 processes
6. [Process D / Node Z / dependency / missing_alias] — numeric conv_id 44444 — replace with @alias
⚠️ WARNINGS (technical debt)
7. [Cross-process / orphaned_process] — Process C never called — possible dead code
8. [Cross-process / duplicate_logic] — Process A, Process D — identical code nodes
{
"project_name": "<name>",
"project_id": "<id>",
"review_date": "YYYY-MM-DD",
"process_count": 0,
"summary": {
"total_findings": 0,
"per_process_findings": 0,
"cross_process_findings": 0,
"by_severity": { "high": 0, "medium": 0, "warning": 0, "low": 0 },
"by_type": {
"hardcode": 0,
"semaphor": 0,
"structural": 0,
"naming": 0,
"error_handling": 0,
"code_quality": 0,
"response_mapping": 0,
"dependency": 0,
"cycle": 0,
"repeated_logic": 0,
"cross_process": 0
}
},
"dependency_graph": {
"edges": [
{ "from_conv_id": 11111, "from_title": "Process A", "to_conv_id": 22222, "to_title": "Process B", "call_type": "api_rpc", "count": 3 }
],
"circular_dependencies": [],
"orphaned_processes": [],
"high_fan_in": [],
"high_fan_out": [],
"external_calls": []
},
"findings": []
}
| Request | Behavior |
|---|---|
"review all processes in folder X" | Phase 0 scoped to folder_id |
"review only stage prod" | Filter process_inventory by stage_id |
"skip cross-process analysis" | Phase 1 only, skip Phase 2 |
"quick review" | Skip code node analysis (Step 7) and duplicate logic (Step 2.2) |
"review only hardcodes" | Hardcode check per process + Step 2.3 only |
"review only N processes" | Prioritize by last modified date |
| Step | MCP call |
|---|---|
| 0.1 List processes | list folder filter:"conveyor" obj_id:<COREZOID_STAGE_ID> |
| 1 Pull process | pull-process process_id:<conv_id> |
| 1 Lint process | lint-process process_path:<path> |
| 2.1 Resolve alias | show conv with alias |
| Path | When to read |
|---|---|
${CLAUDE_PLUGIN_ROOT}/skills/corezoid-review/SKILL.md | Per-process audit steps (Steps 1–14) |
${CLAUDE_PLUGIN_ROOT}/docs/nodes/code-node.md | Code node details and available JS libraries |
${CLAUDE_PLUGIN_ROOT}/docs/nodes/call-process-node.md | Call a Process node, semaphores |
${CLAUDE_PLUGIN_ROOT}/docs/nodes/api-call-node.md | HTTP API call configuration |
${CLAUDE_PLUGIN_ROOT}/docs/process/error-handling.md | Error handling patterns |
${CLAUDE_PLUGIN_ROOT}/docs/variables-guide.md | Variable naming rules and usage examples |