--- name: opensourcefaq description: Answer open-source product questions by combining local source-code and documentation research, project framework notes generated by init, DeepWiki repository knowledge, and current web evidence, then save a sourced, diagram-rich Markdown answer to the current project's markdown directory. Use when the user asks about behavior, architecture, internals, configuration, APIs, troubleshooting, performance, operations, extension points, practical reproduction, or version-specific details of one or more open-source projects and provides the question, all relevant local source directories, and DeepWiki repoName values. --- # Opensourcefaq ## Overview Use this skill to produce a verified, source-backed, diagram-rich Markdown answer for questions about open-source products. Require the user to provide the question, every relevant project source directory, and the corresponding DeepWiki repoName values; remind them to clone the source first and run `init` to generate project framework notes before using the skill. ## Inputs Confirm these inputs before writing the final article: - `question`: the exact technical question to answer. - `source_dirs`: absolute paths to all open-source project checkouts involved. - `deepwiki_repo_names`: DeepWiki repoName values such as `owner/repo` for each relevant project. - `version_context`: branch, tag, commit, release, or product version if the answer depends on version-specific behavior. If any required input is missing, ask for it. If only the version context is missing, inspect the local checkout with `git -C rev-parse --abbrev-ref HEAD`, `git -C rev-parse HEAD`, and release files when useful, then state the inferred version and its limits. ## Workflow 1. Restate the question and scope. - Identify the involved projects, versions, modules, configuration, and runtime assumptions. - Split broad questions into concrete subquestions that can be checked against source code. 2. Analyze the problem. - Form hypotheses from the user's wording, known architecture, and likely code paths. - Name ambiguity early instead of silently choosing one interpretation. - Prefer the simplest explanation that source code and docs support. 3. Prepare evidence. - Search local source directories first with `rg`, `rg --files`, and targeted file reads. - Search both implementation code and project documentation relevant to the question. Include source files, tests, examples, SQL/API definitions, configuration templates, README/manual/reference docs, release notes, design docs, and migration notes when present. - When code and docs disagree, verify against the code path and note the documentation drift. - Read the project framework notes generated by `init` when present, then verify important claims against source files. - Browse DeepWiki project overviews for the listed repoName values. - Ask DeepWiki focused questions about architecture, relevant modules, and the exact technical behavior under investigation. - Search the web for relevant articles, issues, release notes, documentation, design docs, and discussions when current or external context matters. 4. Filter evidence quality. - Prefer source code, official docs, release notes, design docs, and maintainer comments. - Treat blogs, forum answers, and copied snippets as secondary evidence. - Check publication date, project version, branch, API names, file paths, and whether the behavior still exists in the local checkout. - Discard or clearly qualify outdated material. 5. Write the Markdown article. - Save under the current project's `markdown/` directory. Create that directory if it does not exist. - Use a clear filename derived from the question, for example `markdown/opensourcefaq-.md`. - Cite local files with paths and line numbers when possible. - Cite DeepWiki and web sources with links or repoName references. - Make the article diagram-rich. Include Mermaid diagrams for architecture, flow, sequence, state, dependency, data model, or query plans whenever they clarify the answer. - Add tables for evidence, version differences, tradeoffs, parameters, or operational checklists when useful. - If the user asks for practical execution, troubleshooting, benchmarking, reproduction, or "how to use", include a complete simulated environment and sample data generation method unless the real environment is already provided and sufficient. - Keep the article focused on the user's question; do not expand into an unrelated product overview. 6. Verify before finalizing. - Re-check every important technical claim against local code and DeepWiki. - Verify commands, configuration examples, API names, SQL, YAML, code snippets, and file paths. - If a claim cannot be verified, mark it as an inference and explain the basis. - If code behavior differs across versions, state exactly which version was verified and what may differ elsewhere. - For practical examples, verify that setup steps, generated data shape, commands, and expected outputs are internally consistent. If commands were not actually run, say so explicitly. ## Practical Reproduction Requirements When the answer includes hands-on usage, troubleshooting, benchmarking, or an executable example, include: - A minimal simulated environment: container commands, local build steps, package prerequisites, service configuration, database/schema setup, or equivalent project-native setup. - Data generation: SQL, scripts, fixtures, API calls, or command sequences that create representative data covering normal cases and edge cases. - Execution steps: commands or queries the reader can run in order. - Expected observations: key outputs, metrics, query plans, logs, errors, or screenshots/diagrams to compare against. - Cleanup steps when the setup creates services, containers, databases, files, or test data. Prefer project-native tooling already present in the repository. Do not invent heavyweight infrastructure when a lightweight local or containerized setup demonstrates the point. ## Article Structure Use this structure unless the user's question calls for a shorter answer: ```markdown # ## 问题描述 ## 结论先行 ## 问题分析 ## 准备素材 ### 本地代码与文档搜索 ### DeepWiki 综述与问答 ### 网络资料筛选 ## 原理与实现细节 ## 图解 ## 实操示例 ## 拓展思考 ## 验证记录 ## 参考资料 ``` ## Validation Rules - Do not rely on memory alone for product behavior. - Do not cite web articles without checking version freshness and consistency with local source. - Do not treat DeepWiki as final authority when local code contradicts it; source code wins. - Do not invent line numbers, functions, flags, or configuration names. - Do not omit related local documentation when searching source directories; code-only evidence is insufficient unless the project has no relevant docs. - Do not output a text-only article when diagrams or tables would clarify the answer. - Do not provide practical SQL/code/CLI examples without a reproducible environment and sample data plan, unless the user explicitly asks for conceptual explanation only. - Keep final Markdown in Chinese by default unless the user asks for another language. - End the response to the user with the saved file path and a concise verification summary.