qv-docs-solution-create
Skill697 starsChanged 18 days agoApache-2.0View on GitHub
Creates a Solutions page in the QVAC documentation website from a real use case, generalizing the case into reusable guidance and registering the page in the site navigation. Use when a developer, company, or partner scenario the expansion team supported should become published documentation, or when invoking /qv-docs-solution-create.
We split this skill into the rules it gives an agent
18 rules. About 0 are common, 8 are distinctive, and 10 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 33
If the material is setting up or building an app on a platform the docs already teach, do not draft a Solution.
- Distinctive: line 37
If the material is an unresolved product gap with no working approach yet, recommend an issue instead of a page.
- Distinctive: line 45
If a page already fulfills exactly that objective, do not draft a Solution.
- Distinctive: line 74
Ask only for what is missing, one question at a time unless the author asks for a batch.
- Distinctive: line 83
If the recommended approach or its rationale would have to be invented, stop and ask.
- Distinctive: line 111
Remove what only identifies the engagement: the customer or partner name, account and tenant identifiers, internal identifiers, private …
- Distinctive: line 115
Keep the technical characteristics that let another developer recognize their own case.
- Very specific: line 132
add Considerations when there is real knowledge to weigh.
- Very specific: line 133
add Tested with only when there is concrete evidence.
- Very specific: line 134
add Related resources when there are relevant pages in the docs or public material outside them.
- Distinctive: line 135
create the file in the collection directory.
- Distinctive: line 138
Keep code examples executable and free of private infrastructure.
- Very specific: line 153
If the tree has no Solutions node, create one in resourcesChildren, after the Corpus protocol page:
- Very specific: line 168
If the node already exists, append the page to its children.
- Very specific: line 170
Keep the collection flat, with pages as direct children.
- Very specific: line 176
Run from docs/website, using its manifest scripts:
- Very specific: line 184
Run test:examples when the page carries TypeScript, JavaScript, or Python blocks.
- Very specific: line 185
Run build before handoff; it also runs the broken-link pass over the built site.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Solutions Page Create
Publish one page in the Solutions collection of the documentation website.
Most documentation is written from the inside out: a feature exists, so it gets documented. Solutions works from the outside in. Someone brings a real scenario, the expansion team works through it with them, and the generalized answer becomes a page the next person with a similar scenario can reuse. The collection exists so that knowledge stops living only in chat threads, proofs of concept, and calls.
The expansion team writes most of these pages. The docs owner maintains this skill and the collection's editorial standard, so an author never has to remember the structure.
Read before drafting:
- references/editorial-contract.md — the frontmatter rules, the required and optional sections, and the heading conventions of this collection.
docs/website/AGENTS.md— the authoring rules the website package sets for its own content and source.docs/website/README.md— the framework, content layout, build, and automation the package owns.
Defer to the package's own sources for anything about the site itself; this skill defines only what is specific to Solutions. Reuse the conventions the project already has, and never introduce a new abstraction where an existing one fits. Fill assets/solution-template.mdx.
Scope gate
Two checks run before drafting. Both must pass.
The first check classifies the material. Solutions documents how to build, deploy, or integrate something with QVAC. It is not a defect catalog.
Draft a Solution when the material is a use case: someone set out to achieve something with QVAC, and the recommended way to do it is now known.
If the material is a defect, a crash, an error message, a missing system library, an environment that fails to start, or a regression, do not draft a Solution. That knowledge belongs in the SDK's troubleshooting.mdx, which already carries the Situation / Cause / Solution shape for it. Say so and stop.
If the material is setting up or building an app on a platform the docs already teach, do not draft a Solution. That knowledge belongs in the matching tutorial under the SDK's tutorials/ — electron.mdx for Electron, expo.mdx for Expo. Say so and stop.
Both live inside the SDK's current documentation line, whose folder is the parenthesized one under docs/website/content/docs/sdk/. Resolve it from the version manifest in docs/website/src/lib/versions.ts rather than hard-coding a version.
If the material is an unresolved product gap with no working approach yet, recommend an issue instead of a page.
A Solution may state a known limitation and the architecture that works around it, as long as the subject of the page is the use case and not the defect.
A Solution may run on a platform a tutorial covers, as long as the subject of the page is the use case and not the platform setup. Link the tutorial under Related resources rather than repeating it.
The second check tests the objective against the site as it already is. State in one sentence the objective the page would serve, phrased as the reader's goal. Then search docs/website/content/docs/ for a page that already serves that same objective, by title, by description, and by content.
If a page already fulfills exactly that objective, do not draft a Solution. Name that page and stop. Propose extending it instead when the material adds something the page lacks.
Overlapping subject matter is not a reason to stop. Solutions indexes the documentation by scenario, while the rest of the site indexes it by surface, so the same facts legitimately appear on both axes. Only an identical objective blocks the page. Never restate a specification another page owns — summarize what the Solution needs and link that page under Related resources.
Ground the page
The source material is the trigger for the page, not its source of truth. A thread records what was believed when it was written, and the product moves. Re-verify every technical claim at the time of writing against:
- the current package manifests and source in this repository;
- the documentation pages the Solution will rely on;
- the release notes and API reference for the versions involved;
- the current state of any referenced issue or pull request, via
gh.
Correct the material wherever the repository contradicts it. Never carry a workaround into a page after the fix has shipped. State no roadmap or forthcoming-support claim, and no performance figure that was not measured.
Intake and readiness
The material behind a Solution can arrive as any of these, alone or combined:
- chat threads;
- technical investigation;
- proofs of concept;
- tests;
- benchmarks;
- conversations with developers;
- context given directly in the prompt;
- code and configuration present in this repository;
- existing documentation.
Ask only for what is missing, one question at a time unless the author asks for a batch. A Solution is ready to draft when these are known:
- what the developer or company was trying to achieve;
- the environment, constraints, and requirements that decide when the page applies;
- the recommended approach and why it is preferable;
- which QVAC surfaces it involves, such as SDK API, CLI, HTTP server, addon, or model;
- what was tried and did not work, when that shaped the approach;
- what was actually tested, and on which hardware, model, quantization, and version.
If the recommended approach or its rationale would have to be invented, stop and ask. Label every assumption the author still has to confirm.
Generalize the case
Prioritize generalizing the knowledge over turning a conversation into text. Move the material along one ladder:
specific case
↓
relevant constraints
↓
generalizable scenario
↓
recommended QVAC solutionFor example, this is useful context during the investigation:
Partner X uses four NVIDIA A10 GPUs on Oracle Cloud in Saudi Arabia.The published page generalizes it to something like:
Linux x86_64 server infrastructure using NVIDIA data-center GPUs.Remove what only identifies the engagement: the customer or partner name, account and tenant identifiers, internal identifiers, private infrastructure, and individual names. Attribute nothing to a person; cite public issues and pull requests by number instead.
Keep the named third-party platforms and products the scenario depends on — the cloud or hosting provider, the model host, the model or API vendor, the tool being replaced. Naming them is what makes an integration legible: a page that says "a cloud provider" where it means AWS or Vercel, or "a model host" where it means Hugging Face, is harder for both a reader and an agent to match against their own stack.
Keep the technical characteristics that let another developer recognize their own case. Every other specific detail — hardware model, instance type, region, version — survives only when it is technically relevant to the approach.
In the example above the provider and the region drop out because nothing in that approach depended on them. Had the approach turned on a provider-specific instance type, image, or driver stack, the provider belongs on the page.
Write the page
Write in English. Create one file per Solution at docs/website/content/docs/resources/solutions/<kebab-slug>.mdx, following the editorial contract. Solutions belong to the resources collection, which is not versioned, so a Solution is written once and never copied into a documentation line. The directory already exists and carries no landing page. If that path already exists, stop and ask whether to update it; do not overwrite.
Draft in this order:
- identify the generalizable scenario;
- separate the customer or partner specifics from what actually defines the use case;
- produce the title;
- produce the one-sentence description;
- write
Scenario; - write
Recommended approach; - decide which case-specific technical sections the Solution needs;
- add
Considerationswhen there is real knowledge to weigh; - add
Tested withonly when there is concrete evidence; - add
Related resourceswhen there are relevant pages in the docs or public material outside them; - create the file in the collection directory;
- register the page so it appears inside
Solutions.
Keep code examples executable and free of private infrastructure. Reuse the MDX components the surrounding pages already use instead of inventing markup. Where fundamentals are documented elsewhere, summarize only what the Solution needs and link the canonical page.
Register the page in the navigation
Solutions exists as four things and nothing more: a sidebar entry, a directory in the content structure, a URL segment, and a breadcrumb element. Individual pages appear directly inside it:
Solutions
Run QVAC on NVIDIA server GPUs
Replace Ollama with QVAC
Build a read-only assistant over a REST APIThe unversioned collections declare their sidebar by hand in docs/website/src/lib/custom-tree.ts; only the versioned collections derive theirs from a meta.json inside each line. Solutions is unversioned, so a page left out of that tree resolves as a URL but appears nowhere.
If the tree has no Solutions node, create one in resourcesChildren, after the Corpus protocol page:
{
name: 'Solutions',
type: 'folder',
icon: resolveIcon('Compass'),
children: [
{ name: '<page title>', url: '/resources/solutions/<kebab-slug>', type: 'page' },
],
},Omit index. A folder without one renders as a group label in the sidebar and as plain text in the breadcrumb, which gives Solutions both a navigation entry and a breadcrumb position without a landing page of its own. Never add content/docs/resources/solutions/index.mdx.
If the node already exists, append the page to its children.
Keep the collection flat, with pages as direct children. Do not create subcategories such as Deployment, Architecture, or Integration. The tree supports them whenever content volume justifies it, and that call belongs to the docs owner.
Site URLs carry no /docs prefix, so the page registered above serves at /resources/solutions/<kebab-slug>.
Validate
Run from docs/website, using its manifest scripts:
bun run vitest run tests/sidebar-consistency.test.ts tests/link-integrity.test.tstests/sidebar-consistency.test.tsfails when a navigation entry has no content file.tests/link-integrity.test.tsfails on a broken internal link.- Run
test:exampleswhen the page carries TypeScript, JavaScript, or Python blocks. - Run
buildbefore handoff; it also runs the broken-link pass over the built site.
Report any check that cannot run.
In this repository56 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .cursor/rules/agent-integrations.mdcCursor rule
- .cursor/rules/cpp/string-api-conventions.mdcCursor rule
- .cursor/rules/devops/main.mdcCursor rule
- .cursor/rules/no-remote-code-execution.mdcCursor rule
- .cursor/rules/qip-triage.mdcCursor rule
- .cursor/rules/sdk/commit-and-pr-format.mdcCursor rule
- .cursor/rules/sdk/error-handling.mdcCursor rule
- .cursor/rules/sdk/first-class-product-parity.mdcCursor rule
- .cursor/rules/sdk/main.mdcCursor rule
- .cursor/rules/sdk/public-constants-contract.mdcCursor rule
- .cursor/rules/sdk/request-lifecycle-primitives.mdcCursor rule
- .cursor/rules/sdk/sdk-pod-packages.mdcCursor rule
- .cursor/rules/sdk/skill-authoring-guidelines.mdcCursor rule
- cpp-string-api-reviewSkill
- qv-addon-changelogSkill
- qv-addon-pr-createSkill
- qv-addon-release-notesSkill
- qv-agent-stack-syncSkill
- qv-asana-syncSkill
- qv-daily-work-updateSkill
- qv-dev-diary-setupSkill
- qv-dev-diarySkill
- qv-devops-daily-updateSkill
- qv-devops-pr-createSkill
- qv-devops-pr-reviewSkill
- qv-devops-pr-statusSkill
- qv-devops-runner-queueSkill
- qv-devops-why-my-pr-notSkill
- qv-docs-updateSkill
- qv-holepunch-devSkill
- qv-merge-guard-wireSkill
- qv-mobile-test-dispatchSkill
- qv-notice-generateSkill
- qv-pr-mineSkill
- qv-pr-reviewSkill
- qv-pr-testSkill
- qv-qip-createSkill
- qv-qip-reviewSkill
- qv-qip-triageSkill
- qv-quality-reportingSkill
- qv-registry-autobase-patternsSkill
- qv-release-trainSkill
- qv-sdk-backmergeSkill
- qv-sdk-changelogSkill
- qv-sdk-e2e-createSkill
- qv-sdk-inference-versionSkill
- qv-sdk-pr-createSkill
- qv-sdk-pr-statusSkill
- qv-sdk-update-modelsSkill
- qv-skill-listSkill
- setupSkill
- setupSkill
- qv-nx-ciSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

