Agent Skillsopensquilla/opensquilla › meta-stack-trace-investigator

meta-stack-trace-investigator

GitHub

这是一个元技能,用于自动分析堆栈跟踪、运行时错误或失败日志。它通过并行调用代码搜索、问题追踪、Git历史和语言特定探针等子技能,生成结构化的根因报告和修复建议,支持多语言及复杂故障排查。

src/opensquilla/skills/exp/meta-stack-trace-investigator/SKILL.md opensquilla/opensquilla

Trigger Scenarios

用户提供堆栈跟踪或 traceback 用户提及运行时错误 用户提供失败的日志片段

Install

npx skills add opensquilla/opensquilla --skill meta-stack-trace-investigator -g -y
More Options

Non-standard path

npx skills add https://github.com/opensquilla/opensquilla/tree/main/src/opensquilla/skills/exp/meta-stack-trace-investigator -g -y

Use without installing

npx skills use opensquilla/opensquilla@meta-stack-trace-investigator

指定 Agent (Claude Code)

npx skills add opensquilla/opensquilla --skill meta-stack-trace-investigator -a claude-code -g -y

安装 repo 全部 skill

npx skills add opensquilla/opensquilla --all -g -y

预览 repo 内 skill

npx skills add opensquilla/opensquilla --list

SKILL.md

Frontmatter
{
    "kind": "meta",
    "name": "meta-stack-trace-investigator",
    "always": false,
    "metadata": {
        "opensquilla": {
            "risk": "low",
            "capabilities": [
                "shell",
                "filesystem-write"
            ]
        }
    },
    "triggers": [
        "traceback",
        "stack trace",
        "runtime error",
        "failing log",
        "keyerror",
        "typeerror",
        "investigate stack trace",
        "trace investigator",
        "诊断 traceback",
        "调查 stack trace",
        "查 traceback"
    ],
    "provenance": {
        "origin": "opensquilla-original",
        "license": "Apache-2.0"
    },
    "composition": {
        "steps": [
            {
                "id": "trace_collect",
                "kind": "llm_chat",
                "with": {
                    "task": "Extract a compact investigation brief from the original request.\nDo NOT ask the user to confirm language, expected behavior, or\nrecent changes when the stack trace is enough to infer a useful\ninvestigation direction. If a field is absent, write ASSUMED or\nunknown and continue.\n\nOriginal request:\n---\n{{ inputs.user_message | xml_escape | truncate(3000) }}\n---\n\nReturn exactly this structure:\nLANGUAGE: <python|javascript|typescript|go|rust|unknown>\nEXPECTED_BEHAVIOR: <brief or ASSUMED: not provided>\nRECENT_CHANGES: <brief or ASSUMED: not provided>\nTRACE_PRESENT: <yes|no>\nPRIMARY_EXCEPTION: <exception\/error head or unknown>\nPRIMARY_FILES:\n  - <path:line if present, otherwise unknown>\n",
                    "system": "You extract stack-trace investigation facts without asking follow-up questions."
                }
            },
            {
                "id": "parse_trace",
                "kind": "llm_chat",
                "with": {
                    "task": "You are the trace parser for a stack-trace investigation bundle.\nExtract structured info from the stack trace below; do not speculate\nabout root cause yet.\n\nExtracted investigation brief (treat as hints, not authoritative):\n{{ outputs.trace_collect | xml_escape | truncate(1000) }}\n\nTraceback under investigation:\n---\n{{ inputs.user_message | xml_escape | truncate(3000) }}\n---\n\nReply with EXACTLY one JSON object on a single line, no preamble:\n  {\"exception_class\": \"<ClassNameOrErrorKind>\", \"exception_message\": \"<head of message; <=120 chars>\", \"primary_file\": \"<path\/file or empty>\", \"primary_line\": <int or 0>, \"symbols\": [\"sym1\", \"sym2\", ...], \"language\": \"<python|javascript|typescript|go|rust|unknown>\"}\n\nThe \"symbols\" list contains the function\/method names that appear in\nthe top 3 frames; include at most 6 distinct entries.\n",
                    "system": "You parse stack traces. Return only the requested JSON object."
                },
                "depends_on": [
                    "trace_collect"
                ]
            },
            {
                "id": "grep_repo",
                "kind": "tool_call",
                "tool": "exec_command",
                "tool_args": {
                    "command": "rg -n --hidden --max-count 5 -- 'parse_tool_result|run_step|json.loads|KeyError|result' .",
                    "timeout": 12,
                    "workdir": "{{ inputs.workspace_dir }}"
                },
                "depends_on": [
                    "parse_trace"
                ],
                "on_failure": "grep_repo_degraded",
                "tool_allowlist": [
                    "exec_command"
                ]
            },
            {
                "id": "grep_repo_degraded",
                "kind": "llm_chat",
                "with": {
                    "task": "Return exactly:\nREPO_GREP: DEGRADED - repository search could not run in this\nworkspace. Continue from traceback semantics and provide exact\ncommands for the target repository.\n",
                    "system": "You return a fixed degraded-evidence marker."
                }
            },
            {
                "id": "search_issues",
                "kind": "tool_call",
                "tool": "exec_command",
                "tool_args": {
                    "command": "gh issue list --search 'KeyError result parse_tool_result' --json number,title,url --limit 10",
                    "timeout": 12,
                    "workdir": "{{ inputs.workspace_dir }}"
                },
                "depends_on": [
                    "parse_trace"
                ],
                "on_failure": "search_issues_degraded",
                "tool_allowlist": [
                    "exec_command"
                ]
            },
            {
                "id": "search_issues_degraded",
                "kind": "llm_chat",
                "with": {
                    "task": "Return exactly:\nISSUE_SEARCH: DEGRADED - issue search could not run or produced no\nauthenticated results. Continue without issue evidence.\n",
                    "system": "You return a fixed degraded-evidence marker."
                }
            },
            {
                "id": "git_history",
                "kind": "tool_call",
                "tool": "exec_command",
                "tool_args": {
                    "command": "git log --since='30 days ago' --oneline -- src\/agent\/tools.py src\/agent\/runtime.py",
                    "timeout": 12,
                    "workdir": "{{ inputs.workspace_dir }}"
                },
                "depends_on": [
                    "parse_trace"
                ],
                "on_failure": "git_history_degraded",
                "tool_allowlist": [
                    "exec_command"
                ]
            },
            {
                "id": "git_history_degraded",
                "kind": "llm_chat",
                "with": {
                    "task": "Return exactly:\nGIT_HISTORY: DEGRADED - git history could not run in this\nworkspace. Continue without commit evidence and provide exact git\nlog\/blame commands for the target repository.\n",
                    "system": "You return a fixed degraded-evidence marker."
                }
            },
            {
                "id": "diff_context",
                "kind": "skill_exec",
                "with": {
                    "cwd": "{{ inputs.workspace_dir | default('.') }}",
                    "mode": "worktree"
                },
                "skill": "git-diff",
                "depends_on": [
                    "parse_trace"
                ],
                "on_failure": "diff_context_degraded"
            },
            {
                "id": "diff_context_degraded",
                "kind": "llm_chat",
                "with": {
                    "task": "Return exactly:\nDIFF_CONTEXT: DEGRADED - current workspace is not a readable git\nworktree or git-diff failed. Continue using traceback evidence,\nrepo grep output, and explicit user-provided paths.\n",
                    "system": "You return a fixed degraded-evidence marker."
                }
            },
            {
                "id": "history_patterns",
                "kind": "skill_exec",
                "with": {
                    "query": "{{ outputs.parse_trace | truncate(512) }}",
                    "include": "meta_usage,co_occurrences",
                    "window_days": "30"
                },
                "skill": "history-explorer",
                "depends_on": [
                    "parse_trace"
                ],
                "on_failure": "history_patterns_degraded"
            },
            {
                "id": "history_patterns_degraded",
                "kind": "llm_chat",
                "with": {
                    "task": "Return exactly:\nHISTORY_PATTERNS: DEGRADED - history-explorer failed or no local\ndecision history is available. Continue without prior-pattern\nevidence.\n",
                    "system": "You return a fixed degraded-evidence marker."
                }
            },
            {
                "id": "memory_recall",
                "kind": "tool_call",
                "tool": "memory_search",
                "tool_args": {
                    "query": "{{ outputs.parse_trace | truncate(400) }}",
                    "max_results": 3
                },
                "depends_on": [
                    "parse_trace"
                ],
                "on_failure": "memory_recall_degraded",
                "tool_allowlist": [
                    "memory_search"
                ]
            },
            {
                "id": "memory_recall_degraded",
                "kind": "llm_chat",
                "with": {
                    "task": "Return exactly:\nMEMORY_RECALL: DEGRADED - no prior incident memory is available.\nContinue without prior-memory evidence.\n",
                    "system": "You return a fixed degraded-evidence marker."
                }
            },
            {
                "id": "language_probe",
                "kind": "agent",
                "with": {
                    "task": "Run a language-specific stack-trace probe. Use the parsed trace and\nevidence gathered so far to propose language-idiomatic checks,\nminimal reproducer shape, and patch targets. Do not claim repository\nevidence that is absent.\n\nLanguage classification:\n{{ outputs.trace_collect | truncate(400) }}\n\nTrace parse:\n{{ outputs.parse_trace | truncate(1200) }}\n\nOriginal user request:\n{{ inputs.user_message | xml_escape | truncate(2000) }}\n"
                },
                "route": [
                    {
                        "to": "stack-trace-python-probe",
                        "when": "'\"language\":\"python\"' in outputs.parse_trace or '\"language\": \"python\"' in outputs.parse_trace or 'LANGUAGE: python' in outputs.trace_collect"
                    },
                    {
                        "to": "stack-trace-js-probe",
                        "when": "'\"language\":\"javascript\"' in outputs.parse_trace or '\"language\": \"javascript\"' in outputs.parse_trace or '\"language\":\"typescript\"' in outputs.parse_trace or '\"language\": \"typescript\"' in outputs.parse_trace or 'LANGUAGE: javascript' in outputs.trace_collect or 'LANGUAGE: typescript' in outputs.trace_collect"
                    },
                    {
                        "to": "stack-trace-go-probe",
                        "when": "'\"language\":\"go\"' in outputs.parse_trace or '\"language\": \"go\"' in outputs.parse_trace or 'LANGUAGE: go' in outputs.trace_collect"
                    },
                    {
                        "to": "stack-trace-rust-probe",
                        "when": "'\"language\":\"rust\"' in outputs.parse_trace or '\"language\": \"rust\"' in outputs.parse_trace or 'LANGUAGE: rust' in outputs.trace_collect"
                    }
                ],
                "skill": "stack-trace-generic-probe",
                "depends_on": [
                    "parse_trace"
                ]
            },
            {
                "id": "root_cause",
                "kind": "llm_chat",
                "with": {
                    "task": "Synthesize a root-cause hypothesis from these parallel\ninvestigations and the original trace parse.\n\nTrace parse:\n{{ outputs.parse_trace | truncate(600) }}\n\nRepo grep:\n{{ outputs.grep_repo | truncate(1200) }}\n\nRelated GH issues:\n{{ outputs.search_issues | truncate(800) }}\n\nRecent commits on affected files:\n{{ outputs.git_history | truncate(800) }}\n\nCurrent git diff context:\n{{ outputs.diff_context | truncate(1200) }}\n\nPrior OpenSquilla skill\/router history patterns:\n{{ outputs.history_patterns | truncate(1200) }}\n\nPrior similar incidents (may be empty on a fresh install — if\nthis section is empty or returns no matches, IGNORE it and\nsynthesize the root cause from the other available investigations\nalone; do not invent prior incidents that are not listed):\n{{ outputs.memory_recall | truncate(800) }}\n\nTreat prior memory as a non-authoritative search hint only. Do not\ncite memory paths, similarity scores, or prior-incident claims as\nevidence for the current traceback; the current trace and target\nrepository evidence are the only grounding sources.\n\nLanguage-specific probe:\n{{ outputs.language_probe | truncate(1200) }}\n\nIf repository search returned NO_HITS or the referenced files are\nabsent, still derive a bounded hypothesis from the stack trace\ncontract itself. Clearly say the repository evidence is degraded;\ndo not pretend that files or symbols were inspected.\n\nException-semantics guard:\n- For Python expressions like json.loads(raw)['result'] with\n  KeyError: 'result', treat the decoded value as a mapping\/dict\n  missing that top-level key. Do not rank list\/string\/null\/non-JSON\n  payloads as primary causes; put them under rejected\/different\n  exception shapes because they would normally raise TypeError or\n  JSONDecodeError instead.\n- When repository evidence is degraded, the strongest evidence is\n  the consumer contract violation: parser expects result, producer\n  supplied another valid JSON object shape.\n\nReply with this exact structure (no preamble):\n\nEXCEPTION_SEMANTICS: <what the exception class implies for this exact expression; name payload shapes that would and would not cause it>\nROOT_CAUSE: <one-sentence highest-likelihood hypothesis>\nEVIDENCE:\n  - <which investigation supported it; cite line>\n  - <which investigation supported it; cite line>\nRANKED_HYPOTHESES:\n  - likelihood=<high|medium|low>; cause=<cause>; evidence=<evidence>; falsify=<command\/check>\n  - include at least six bounded hypotheses when repository\n    evidence is degraded; cover error envelopes, schema drift,\n    nested result wrappers, streaming\/control frames, wrong\n    dispatcher\/message type, and provider\/transport rewraps when\n    they fit the exception semantics\nSUGGESTIONS:\n  - <file:line> — <action>\n  - <file:line> — <action>\n  - <file:line> — <action>\n",
                    "system": "You synthesize bounded root-cause hypotheses from stack traces, exception semantics, and explicit evidence."
                },
                "depends_on": [
                    "grep_repo",
                    "search_issues",
                    "git_history",
                    "diff_context",
                    "history_patterns",
                    "memory_recall",
                    "language_probe"
                ]
            },
            {
                "id": "repro_suggestion",
                "kind": "llm_chat",
                "with": {
                    "task": "Propose the smallest safe verification command(s) for this root-cause\nhypothesis. Prefer existing tests, targeted unit tests, or a minimal\nreproducer command. Do not propose destructive commands. Do not\npropose commands that create, overwrite, or edit files, including\nheredocs, shell redirection, `cat >`, `tee`, `python - <<`,\n`python -c` that writes files, or temporary files under `\/tmp`.\nIf a reproducer needs code, include it as an inline snippet marked\n\"copy into an existing test file\" and keep Verification commands\nlimited to read-only locate\/history checks or existing test commands.\n\nLanguage classification:\n{{ outputs.trace_collect | truncate(400) }}\n\nTrace parse:\n{{ outputs.parse_trace | truncate(600) }}\n\nRoot-cause report:\n{{ outputs.root_cause | truncate(1200) }}\n\nLanguage-specific probe:\n{{ outputs.language_probe | truncate(1200) }}\n\nReply with:\nCONFIDENCE: <low|medium|high>\nVERIFY:\n  - <command or manual check>\n  - <minimal reproducer command or snippet for the parsed language>\n  - <history\/blame or producer-consumer schema check>\nFIX_FIRST:\n  - <first file\/action>\nPATCH_SHAPE:\n  - <specific defensive-code shape to try first>\n  - <schema-normalization or frame-filtering shape if relevant>\n\nFor parser\/envelope failures, prefer a protocol-error branch plus\nfixture-driven contract tests over silently returning a default or\nfabricated result. If a fallback\/retry is useful, phrase it as a\ncaller policy after logging and typed error classification, not as\nthe parser's default behavior.\n",
                    "system": "You propose safe, minimal verification commands for debugging."
                },
                "depends_on": [
                    "root_cause"
                ]
            },
            {
                "id": "degraded_summary",
                "kind": "llm_chat",
                "with": {
                    "task": "CRITICAL OUTPUT CONTRACT:\n- First line must be exactly: ## Trace Facts\n- Use the same language as the original user request. If the\n  original request is in English, answer in English.\n- Do not include an opening acknowledgement, apology, emoji, or\n  process commentary.\n- Do not include the words \"meta-skill\", \"search step\", \"path\n  restriction\", \"internal tool\", \"memory persistence\", \"saved\",\n  \"git_history\", \"DAG\", \"memory\/traceback.md\", \"prior incident\",\n  \"similarity score\", or \"step\".\n- If repository evidence is unavailable, write only:\n  \"Repository evidence: DEGRADED in this benchmark\/workspace; run\n  the commands below in the target repository.\"\n- Verification Commands must contain only commands\/checks. Code\n  changes belong only in Patch Direction, not Verification Commands.\n  Never include file-creation or file-edit commands in Verification\n  Commands: no heredocs, no shell redirection, no `cat >`, no `tee`,\n  no `python - <<`, no `python -c` file writes, and no `\/tmp`\n  scratch-file creation. Reproducer code belongs in the Reproduction\n  section as an inline snippet, not as a command that writes files.\n- Keep the final report compact enough to finish: cap root-cause\n  matrix rows at 8, reproducer rows at 5, and patch-direction bullets\n  at 6. Prefer dense commands and bullets over long prose.\n- Patch Direction must complete before Related Checks. Do not spend\n  the token budget on full implementation code unless the user asked\n  for a patch.\n- For parser\/envelope failures, do not recommend returning a default\n  success\/error object from the parser as the first fix. Prefer typed\n  protocol\/execution errors, payload-key logging, schema\n  normalization only for supported legacy success keys, and\n  fixture-driven contract tests.\n- Verification Commands must include at least one exact import-path\n  reproducer when a parsed file\/module path is available, plus at\n  least one targeted pytest command for the parser\/envelope contract.\n- Do not ask follow-up questions at the end.\n\nProduce the final user-facing investigation. If any evidence source\nreturned NO_HITS, NO_MATCHING_ISSUES, NO_RECENT_COMMITS, auth errors,\nor empty memory, label that source as DEGRADED instead of hiding it.\nThis is the final answer shown to the user: do not mention\nmeta-skill step ids, memory persistence, internal tools, or that\nanything was saved. Do not say \"the meta-skill search step hit a path\nrestriction\"; phrase unavailable repo evidence only inside Evidence\nStatus.\nTreat raw errors from repository\/history tools as private diagnostic\nnoise. Do not quote them, translate them, or identify which internal\nlookup failed; collapse them to the generic degraded evidence line\nabove.\nTreat memory recall as a private hint source. Never include a\n\"Prior incident\" evidence row, memory path, memory score, or memory\ncitation in the final report.\n\nWhen repository evidence is degraded, do not stop at a short\nconclusion. Provide a useful fallback investigation based on the\ntrace contract:\n- say that the referenced files\/symbols were not found in the\n  current workspace when that is true;\n- include exact repo search commands the user can run in the real\n  target repository;\n- include a minimal reproducer snippet or command for the parsed\n  language\/runtime;\n- include a defensive patch direction with expected failure mode;\n- include exact verification commands.\n\nQuality bar for user-facing output:\n- start with trace facts, not process commentary\n- parse the failing frame precisely: file, line, function, expression,\n  exception class, and what the exception proves\n- explicitly state the data-shape implications:\n  json.loads(raw) succeeded; the decoded payload was subscriptable\n  by string key; the top-level key \"result\" was absent\n- explicitly reject payload shapes that would produce JSONDecodeError,\n  TypeError, or IndexError instead of the observed exception\n- for Python, do not say list\/string\/null payloads would cause\n  KeyError for this expression; they are rejected\/different-exception\n  shapes unless extra wrapping evidence exists\n- rank a broad hypothesis matrix, including schema drift, error\n  envelope, nested result, streaming\/control frame, wrong dispatcher,\n  transport\/provider rewrap, and renamed key when applicable\n- include at least seven ranked hypotheses when repository evidence\n  is degraded: error envelope, schema\/version drift, streaming or\n  partial frame, wrong dispatcher\/message type, renamed\/cased key,\n  exception serialized as tool output, and empty\/null\/stripped result\n- include a hypothesis-driven reproducer matrix for at least four\n  payload shapes: success envelope, error envelope, streaming\/control\n  frame, and non-dict JSON; specify expected exception or output\n- repo search targets must include producer, consumer, schema\/types,\n  transport wrappers, streaming\/chunking, fixtures\/logs, tests, git\n  history, and blame\n- verification commands must be exact shell commands and must include\n  rg checks, git log\/blame checks, a minimal language-specific\n  reproducer, and targeted test commands\n- the minimal language-specific reproducer must be an inline snippet\n  plus an existing-test command, not a file-creation command; do not\n  use `cat >`, heredocs, redirection, `tee`, `\/tmp` files, or\n  `python - <<` in Verification Commands\n- prioritize producer-adapter checks and contract tests over broad\n  generic advice; tie each verification command to the failing module\n  path, symbol, or envelope contract when possible\n- Patch Direction should distinguish:\n  1. parser boundary: decode, type check, error-envelope branch,\n     supported success-key normalization, typed protocol error\n  2. producer adapters: guarantee one success envelope shape\n  3. caller\/runtime: catch typed failures and log tool identity\n  4. tests: fixtures for success, error envelope, missing key,\n     streaming\/control frame, and non-dict JSON\n- include these concrete search families when applicable:\n  `rg -nF \"parse_tool_result\"`, `rg -n \"tool_call|tool_result|dispatch|invoke_tool\"`,\n  `rg -n \"stream|chunk|delta|partial\"`, `rg -n \"openai|anthropic|mcp|jsonrpc\"`,\n  `rg -nP \"return\\s*\\{\\s*['\\\"](result|data|output|content|error|status|message)['\\\"]\" src\/`,\n  `rg -nP \"json\\.loads\\([^)]+\\)\\[['\\\"][^'\\\"]+['\\\"]\\]\" src\/`,\n  `git log -p --since=\"60 days\" -- <files>`, and `git blame -L`\n- state that commands are recommended next steps, not executed\n- do not end by asking whether the user wants more detail\n\nRoot cause:\n{{ outputs.root_cause | truncate(1200) }}\n\nTrace parse:\n{{ outputs.parse_trace | truncate(800) }}\n\nLanguage classification:\n{{ outputs.trace_collect | truncate(400) }}\n\nVerification plan:\n{{ outputs.repro_suggestion | truncate(1000) }}\n\nLanguage-specific probe:\n{{ outputs.language_probe | truncate(1000) }}\n\nEvidence availability:\n- Repository\/history\/issue evidence may be unavailable in benchmark\n  workspaces. If the prior sections do not contain concrete\n  file-line excerpts from the target repository, use the exact\n  degraded evidence sentence from the contract and continue with a\n  trace-contract investigation.\n- Do not quote raw lookup errors, internal lookup names, or protected\n  path details.\n\nReply in Markdown with exactly these sections and no preamble:\n## Trace Facts\n## Diagnosis\n## Exception Semantics\nExplain what the exception class means for the exact failing\nexpression. Reject payload shapes that would produce a different\nexception type.\n## Evidence Status\n## Assumptions \/ Constraints\n## Ranked Root Cause Matrix\nInclude at least seven rows. Each row must include likelihood,\nevidence, falsifying command\/check, and expected signal.\n## Repo Search Targets\nGroup searches by direct hits, producer\/wrappers, runtime\/streaming,\nschema\/types, tests\/fixtures\/logs, and git history. Prefer `rg` and\ninclude exact commands. Do not assume `src\/tools\/` exists; use\nrepo-wide commands first, then path-specific commands for parsed\nframes.\n## Reproduction\nInclude a minimal fixture or snippet for the parsed language\/runtime\nplus a small matrix of payload shapes and expected outcomes.\n## Patch Direction\nKeep this section concise and complete. Prefer bullet-level patch\ntargets and contract-test shape over long code blocks. Explicitly\nreject silent default-return behavior for missing required result\nkeys unless the target repository's protocol already documents that\nbehavior.\n## Patch Target Checklist\n## Related Checks\nInclude adjacent contract checks: raw payload logging, error-path\ntests, schema validation, all return sites funneled through one\nwrapper, retry\/fallback behavior, stream assembly, raw type\nnarrowing, sibling unsafe `json.loads(...)[key]` patterns, and\nmissing observability around tool identity \/ tool_call_id \/\nproducer name \/ payload keys at the parser boundary.\n## Verification Commands\nSeparate locate\/context commands, producer-shape search, unit tests,\nisolated reproducer commands, static sweeps, logs, and history\nchecks. Include commands for the happy path, error-envelope path,\nstreaming\/control-frame path, non-dict path, and tool-identity\nlogging check. Use only read-only searches\/history\/log commands and\nexisting test commands. Do not include commands that create or edit\nfiles; if a new fixture is needed, describe the fixture in Patch\nDirection or Reproduction instead.",
                    "system": "You are a strict final-report renderer for stack-trace investigations. Return only the final report. Never mention internal orchestration, tool failures, path restrictions, memory persistence, or saved artifacts."
                },
                "depends_on": [
                    "grep_repo",
                    "search_issues",
                    "git_history",
                    "diff_context",
                    "history_patterns",
                    "memory_recall",
                    "language_probe",
                    "repro_suggestion"
                ]
            },
            {
                "id": "persist",
                "kind": "tool_call",
                "tool": "memory_save",
                "tool_args": {
                    "mode": "append",
                    "path": "memory\/traceback.md",
                    "content": "=== stack-trace investigation ===\nparse: {{ outputs.parse_trace | truncate(400) }}\nhypothesis: {{ outputs.degraded_summary | truncate(1000) }}"
                },
                "depends_on": [
                    "degraded_summary"
                ],
                "tool_allowlist": [
                    "memory_save"
                ]
            }
        ]
    },
    "description": "Use this meta-skill instead of answering directly when the user gives a stack trace, traceback, runtime error, or failing log that benefits from multi-skill orchestration across trace parsing, repo\/history inspection, patch-target analysis, reproduction guidance, and verification commands.",
    "meta_priority": 60,
    "final_text_mode": "step:degraded_summary"
}

Stack-Trace Investigator (Meta-Skill)

A combinator-style meta-skill that converts a pasted stack trace into a structured root-cause report. It now classifies Python, JavaScript, TypeScript, Go, Rust, or unknown traces before running the investigation. After parsing the trace once, heterogeneous investigations run in parallel:

  1. grep_repo — ripgrep for the symbols in the current repo
  2. search_issuesgh issue list for similar reported problems
  3. git_history — recent commits touching the affected files
  4. diff_contextgit-diff skill for current worktree context
  5. history_patternshistory-explorer skill for prior skill/router usage patterns
  6. memory_recall — prior incidents stored under the traceback topic
  7. language_probe — routed to the language-specific helper skill (stack-trace-python-probe, stack-trace-js-probe, stack-trace-go-probe, stack-trace-rust-probe, or generic fallback)

The root_cause and repro_suggestion steps fan the signals into a hypothesis, concrete fix targets, and verification commands. The final summary labels degraded evidence sources explicitly before persisting the incident.

Trigger surface

Fire by saying investigate stack trace or one of the localized triggers listed in the frontmatter, with the traceback pasted into the same turn.

Fallback

If any leaf step fails, the orchestrator surfaces partial outputs in step_outputs. Operator should manually run rg <symbols>, gh issue list --search, git log, and memory search and synthesize the report by hand.

Version History

  • 7f72a32 Current 2026-07-05 18:41

Same Skill Collection

src/opensquilla/skills/bundled/advanced-dubbing-studio/SKILL.md
src/opensquilla/skills/bundled/ai-video-script/SKILL.md
src/opensquilla/skills/bundled/audio-cog/SKILL.md
src/opensquilla/skills/bundled/awesome-webpage-image-download/SKILL.md
src/opensquilla/skills/bundled/awesome-webpage-research/SKILL.md
src/opensquilla/skills/bundled/AwesomeWebpageMetaSkill/SKILL.md
src/opensquilla/skills/bundled/cron/SKILL.md
src/opensquilla/skills/bundled/docx/SKILL.md
src/opensquilla/skills/bundled/filesystem/SKILL.md
src/opensquilla/skills/bundled/git-diff/SKILL.md
src/opensquilla/skills/bundled/github/SKILL.md
src/opensquilla/skills/bundled/history-explorer/SKILL.md
src/opensquilla/skills/bundled/html-coder/SKILL.md
src/opensquilla/skills/bundled/html-to-pdf/SKILL.md
src/opensquilla/skills/bundled/http-fetch/SKILL.md
src/opensquilla/skills/bundled/latex-compile/SKILL.md
src/opensquilla/skills/bundled/memory/SKILL.md
src/opensquilla/skills/bundled/music-and-singing-studio/SKILL.md
src/opensquilla/skills/bundled/nano-banana-pro-openrouter/SKILL.md
src/opensquilla/skills/bundled/nano-banana-pro/SKILL.md
src/opensquilla/skills/bundled/nano-pdf/SKILL.md
src/opensquilla/skills/bundled/openrouter-video-generator/SKILL.md
src/opensquilla/skills/bundled/paper-abstract-author/SKILL.md
src/opensquilla/skills/bundled/paper-citation-planner/SKILL.md
src/opensquilla/skills/bundled/paper-experiment-stub/SKILL.md
src/opensquilla/skills/bundled/paper-outline-author/SKILL.md
src/opensquilla/skills/bundled/paper-preference-planner/SKILL.md
src/opensquilla/skills/bundled/paper-refbib-stub/SKILL.md
src/opensquilla/skills/bundled/paper-revision-author/SKILL.md
src/opensquilla/skills/bundled/paper-section-author/SKILL.md
src/opensquilla/skills/bundled/paper-source-curator/SKILL.md
src/opensquilla/skills/bundled/pptx/SKILL.md
src/opensquilla/skills/bundled/seedance-2-prompt/SKILL.md
src/opensquilla/skills/bundled/skill-creator-linter/SKILL.md
src/opensquilla/skills/bundled/skill-creator-proposals/SKILL.md
src/opensquilla/skills/bundled/skill-creator-smoke-test/SKILL.md
src/opensquilla/skills/bundled/srt-from-script/SKILL.md
src/opensquilla/skills/bundled/stack-trace-generic-probe/SKILL.md
src/opensquilla/skills/bundled/stack-trace-go-probe/SKILL.md
src/opensquilla/skills/bundled/stack-trace-js-probe/SKILL.md
src/opensquilla/skills/bundled/stack-trace-python-probe/SKILL.md
src/opensquilla/skills/bundled/stack-trace-rust-probe/SKILL.md
src/opensquilla/skills/bundled/subtitle-burner/SKILL.md
src/opensquilla/skills/bundled/swe-bench/SKILL.md
src/opensquilla/skills/bundled/text-file-read/SKILL.md
src/opensquilla/skills/bundled/title-card-image/SKILL.md
src/opensquilla/skills/bundled/video-merger/SKILL.md
src/opensquilla/skills/bundled/video-still-animator/SKILL.md
src/opensquilla/skills/bundled/voice-clone-lab/SKILL.md
src/opensquilla/skills/bundled/voice-conversion-studio/SKILL.md
src/opensquilla/skills/bundled/voiceover-studio/SKILL.md
src/opensquilla/skills/bundled/weather/SKILL.md
src/opensquilla/skills/bundled/web-search/SKILL.md
src/opensquilla/skills/bundled/xlsx/SKILL.md
src/opensquilla/skills/exp/meta-arxiv-daily-digest-deck/SKILL.md
src/opensquilla/skills/exp/meta-codereview-current-diff/SKILL.md
src/opensquilla/skills/exp/meta-compliance-audit-bundle/SKILL.md
src/opensquilla/skills/exp/meta-diagram-triangulation/SKILL.md
src/opensquilla/skills/exp/meta-github-pr-watch-digest/SKILL.md
src/opensquilla/skills/exp/meta-issue-to-pr-autopilot/SKILL.md
src/opensquilla/skills/exp/meta-knowledge-base-bootstrap/SKILL.md
src/opensquilla/skills/exp/meta-migration-assistant/SKILL.md
src/opensquilla/skills/exp/meta-multi-format-export-pack/SKILL.md
src/opensquilla/skills/exp/meta-pdf-intelligence/SKILL.md
src/opensquilla/skills/exp/meta-pdf-reformat-pipeline/SKILL.md
src/opensquilla/skills/exp/meta-pre-commit-quality-gate/SKILL.md
src/opensquilla/skills/exp/meta-scheduled-morning-digest/SKILL.md
src/opensquilla/skills/exp/meta-security-review-bundle/SKILL.md
src/opensquilla/skills/exp/meta-spreadsheet-insight/SKILL.md
src/opensquilla/skills/exp/meta-travel-planner/SKILL.md
src/opensquilla/skills/exp/meta-web-to-pdf-briefing/SKILL.md
tests/_fixtures/meta-paper-write-handwritten.SKILL.md
src/opensquilla/skills/bundled/code-task/SKILL.md
src/opensquilla/skills/bundled/deep-research/SKILL.md
src/opensquilla/skills/bundled/meta-kid-project-planner/SKILL.md
src/opensquilla/skills/bundled/meta-paper-write/SKILL.md
src/opensquilla/skills/bundled/meta-short-drama/SKILL.md
src/opensquilla/skills/bundled/meta-skill-creator/SKILL.md
src/opensquilla/skills/bundled/multi-search-engine/SKILL.md
src/opensquilla/skills/bundled/pdf-toolkit/SKILL.md
src/opensquilla/skills/bundled/skill-creator/SKILL.md
src/opensquilla/skills/bundled/sub-agent/SKILL.md
src/opensquilla/skills/bundled/summarize/SKILL.md
src/opensquilla/skills/bundled/tmux/SKILL.md
src/opensquilla/skills/exp/meta-long-running-build-watchdog/SKILL.md
src/opensquilla/skills/bundled/paper-plot-stub/SKILL.md
src/opensquilla/skills/exp/meta-content-publish-pipeline/SKILL.md
src/opensquilla/skills/exp/meta-home-it-rescue/SKILL.md
src/opensquilla/skills/exp/meta-meeting-to-workflow/SKILL.md
src/opensquilla/skills/exp/meta-research-to-slide-deck/SKILL.md
src/opensquilla/skills/exp/meta-sales-lead-researcher/SKILL.md

Metadata

Files
0
Version
7f72a32
Hash
c3b46209
Indexed
2026-07-05 18:41

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-08 22:21
浙ICP备14020137号-1 $Гость$