Generate a knowledge pack
Hand this prompt to your own AI, run it in your repository, and get an importable support knowledge pack. Your code never leaves your machine.
Copy everything below into your own AI (Claude Code, Cursor, ChatGPT — any of
them) and run it at the root of your own repository. It reads your code and
docs on your machine and produces one kefu-knowledge-pack/ folder. KefuAgents
only ever receives that folder — your code is never uploaded.
Role
You are a support-knowledge engineer. Goal: assemble, from this repository, a knowledge pack that can answer real customer questions, to be used by an AI support agent. This is not product documentation and not marketing copy — it is the binder a support rep keeps within arm's reach.
Read these first
In order; skip what does not exist, and never invent:
README*,CONTRIBUTING*— what the product is and who it is for;- user-facing docs under
docs/,documentation/,website/,site/,content/; - the source of truth for pricing and plans (
pricing.*,plans.*, the Stripe/Paddle product config, the pricing component on the landing page) — copy only numbers that actually exist in config; CHANGELOG*and release notes — what shipped recently, what has not;- legal text: ToS, privacy policy, SLA, DPA (often under
legal/,public/, or on the website); - existing support material: FAQ pages, help centre, a
support/directory, canned reply templates; - failure modes: issue templates, error-code tables,
troubleshooting*, and the user-visible parts of ops runbooks.
Output
Create kefu-knowledge-pack/ at the repository root with this structure:
kefu-knowledge-pack/
pack.yaml
01-product-overview.md
02-features/<feature>.md # one file per feature: what, how, limits, misconceptions
03-pricing-and-billing.md # plans, quotas, trials, refund stance
04-account-and-security.md # sign-in, recovery, permissions, data security
05-integrations.md # what connects, how to configure, common traps
06-troubleshooting.md # symptom -> cause -> fix
07-faq.md # Q/A pairs
08-policies.md # ToS / privacy / SLA digest + links to the originals
09-boundaries.md # what support may never promisepack.yaml:
name: <pack name, hyphenated, e.g. acme-support-pack>
product: <product name>
version: <bump on every regeneration: 1, 2, 3>
generatedAt: <YYYY-MM-DD>
generator: <the AI you used, e.g. claude-code>
languages:
- en
- zhEvery markdown file starts with front matter:
---
title: Billing and plans
category: 03-pricing-and-billing
audience: customer
source_paths:
- src/config/pricing.ts
- docs/billing.md
last_verified: 2026-08-21
confidence: high
---
## What is included in the free plan
…
## How long is the trial
…Field notes:
title— what this file covers.category— default to the file name without.md.audience—customermeans it may be used to answer a customer directly;internalmeans support-team background only (internal process, known but unannounced limits, wording boundaries). When in doubt, useinternal.source_paths— the repository-relative files this entry was derived from.last_verified— the date you actually verified it. If you are unsure, delete the line entirely; do not fill in today.confidence—high/medium/low.
Entries are split by heading level: one ## heading = one entry. Write the
heading as the sentence a customer would say ("How long is the trial" beats
"Trial policy").
Hard rules
- Never invent. No number, deadline, or promise that is not in the code or the docs. If the information is missing, delete that section rather than guessing one.
- Unsure means
confidence: low, plus a line in the body saying the website or contract is authoritative. - Every entry carries
source_paths. Anything you cannot attribute does not belong in the pack. - Separate
customerfrominternal. Internal-only limits, bugs being fixed, pricing legacy — allinternal. - No roadmap promises. "Next release will support X", "planned for Q3" —
never in a
customerentry. If it matters, write it into09-boundaries.mdas "support may not promise ship dates". 09-boundaries.mdis about what may NOT be said, not what may: how far refunds go, the compensation cap, what the SLA can commit to, whether support may act on an account for the customer, whether data can be deleted — state today's stance for each and mark it as needing a human decision.
Delivery (pick one)
A. Drag it in (simplest): drop the whole kefu-knowledge-pack/ folder onto
"Knowledge → Import a knowledge pack" in the KefuAgents console.
B. Upload via API: create a Gateway Key at Settings -> Agent gateway in the console
(tick the gateway:submit_draft scope; the key is shown once), store it in
KEFUAGENT_GATEWAY_KEY, then:
# Your workspace: shown on Settings -> Agent gateway
# Never write the key into a file that gets committed.
cd kefu-knowledge-pack
curl -X POST "https://kefuagents.com/api/support/knowledge-pack/import" \
-H "Authorization: Bearer $KEFUAGENT_GATEWAY_KEY" \
-F "pack.yaml=@pack.yaml" \
-F "01-product-overview.md=@01-product-overview.md" \
-F "03-pricing-and-billing.md=@03-pricing-and-billing.md" \
-F "07-faq.md=@07-faq.md" \
-F "09-boundaries.md=@09-boundaries.md"
# The form field name IS the pack-relative path; add one -F per file.What happens after the import
- How-to, feature explanations and troubleshooting are published on import and usable immediately;
- pricing, policy and boundaries (
03/08/09) enter the confirmation queue; they take effect only after you confirm them in the console. Money and deadlines are not left to the AI; audience: internalentries are never sent to a customer verbatim; they only inform the AI's judgement;- re-importing the same
versioncreates no duplicates. Change the content, bumpversion, upload again.
KefuAgents Docs