error-troubleshooting — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited error-troubleshooting (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Common error patterns and solutions for Kailash SDK.
Use when encountering errors, debugging issues, or asking about error, troubleshooting, debugging, not working, hangs, timeout, validation error, connection error, runtime error, cycle not converging, missing build, or template syntax. Covers Nexus blocking issues, connection parameter errors, runtime execution errors, cycle convergence problems, missing .build() calls, parameter validation errors, and DataFlow template syntax errors.
.build()TypeError: execute() expects Workflow, got WorkflowBuilder | Fix: runtime.execute(workflow.build())external_pool parameter, set max_pool_size = DB max / worker count(source_id, source_param, target_id, target_param)ValidationError: Missing required parameter | Fix: Check node docs for required paramscycle_complete convergence checkSyntaxError in template strings | Fix: Use {{variable}} syntaxjson_prompt_suffix() or set response_formatapi_version in response_formatprovider_config | Migrate to response_format fieldAZURE_ENDPOINT, AZURE_API_KEY)| Symptom | Error Type | Quick Fix |
|---|---|---|
| API hangs forever | Nexus blocking | Use AsyncLocalRuntime |
TypeError: expects Workflow | Missing .build() | Add .build() call |
| Node gets wrong data | Connection params | Check 4-parameter format |
ValidationError | Parameter validation | Check required params |
| Infinite loop | Cycle convergence | Add convergence condition |
Template SyntaxError | DataFlow template | Use {{variable}} syntax |
| Runtime fails | Runtime execution | Check logs, validate inputs |
| "too many connections" | Connection exhaustion | Use external_pool injection |
| Azure 400 "messages must contain 'json'" | Kaizen provider | Use json_prompt_suffix() or response_format |
| "Missing required parameter: response_format.type" | Kaizen provider | Don't put api_version in response_format |
DeprecationWarning about provider_config | Kaizen provider | Migrate to response_format field |
.build() on WorkflowBuilder?AsyncLocalRuntime for Docker/FastAPI?{{variable}} syntax?external_pool in multi-worker deployments?response_format (not provider_config)?AZURE_ENDPOINT, AZURE_API_KEY)?structured_output_mode="explicit" for new agents?__getattr__ Lazy LoadingSymptom: CodeQL reports "Explicit export is not defined" (py/undefined-export) for names in __all__ resolved by a module-level __getattr__ function.
Fix: Add a TYPE_CHECKING-guarded import for the reported name:
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from mypackage.submodule import LazyName as LazyName # explicit re-export
def __getattr__(name: str):
if name == "LazyName":
from mypackage.submodule import LazyName
return LazyName
raise AttributeError(...)
__all__ = ["LazyName"] # CodeQL now sees the TYPE_CHECKING importThe as LazyName re-export syntax prevents "unused import" warnings from other linters.
Fix: Add a comment explaining intent. CodeQL accepts except: pass with an inline comment:
except ValueError:
pass # Callback already unregistered; silently ignore duplicate removal
except asyncio.CancelledError:
pass # Expected: we just cancelled this task above__del__Fix: Use the _warnings=warnings default parameter pattern and minimize branching:
def __del__(self, _warnings=warnings) -> None:
if not getattr(self, "_closed", True):
_warnings.warn("Resource was not closed.", ResourceWarning, stacklevel=1)Avoids conditional import warnings inside __del__ that CodeQL flags as complex. The default parameter captures the module at definition time, surviving interpreter shutdown.
Symptom: git commit fails with "stash pop" errors or silently drops staged changes, even though running pre-commit run --all-files directly passes every hook.
Root cause: Pre-commit's auto-stash feature stashes unstaged changes before running hooks, then pops after. When a hook modifies the working tree (e.g., a formatter), the pop conflicts with the hook's changes, causing the commit to abort or lose staged hunks.
Workaround: Bypass the hooks directory for this commit only:
git -c core.hooksPath=/dev/null commit -m "fix(scope): description"Mandatory follow-up: Document the bypass in the commit body AND file a todo against the pre-commit configuration. See rules/git.md "Pre-Commit Hook Workarounds" for the full rule. Silent --no-verify retries are BLOCKED.
Frequency: Recurring across sessions; the stash interaction is non-deterministic and depends on which files have unstaged changes at commit time.
.build() was calledpattern-expert - Pattern validationgold-standards-validator - Check compliancetesting-specialist - Test debugging~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.