POCs & Hand-off Docs
Install and use the afd360-poc-docs-skill to scaffold a Fumadocs site the customer actually reads. Fit it into the SE build-test-document-handoff arc.
The hand-off doc is the thing that decides whether your POC becomes a real implementation or dies in an inbox. It's also the thing every SE procrastinates on and then bangs out at 11 PM the night before the kickoff. This page breaks the procrastination with a skill, a structure, and a sequence.

The shortcut
Install the afd360-poc-docs-skill, run /setup-docs in Cursor, argue with its first draft, publish the argued-with version. You'll have something in an hour that used to take an evening.
What a hand-off doc is for
Three audiences read it and each wants something different.
- The customer sponsor wants to understand what was built and what it proves. They'll read the overview and maybe the architecture section.
- The customer admin or implementation partner wants to understand how to run it, extend it, and not break it. They'll read everything.
- Future-you wants to pick the project up six months later and remember what you decided. You'll skim the "decisions" section and thank yourself.
A hand-off doc that serves all three looks like a short book. Seven or eight sections, a handful of diagrams, and a known structure that doesn't change between POCs.
Install the skill
The skill lives at github.com/dylandersen/afd360-poc-docs-skill. Install it once at the user level and it's available in every Cursor project on your machine.
Prerequisites
- Node.js 22 or higher (
node -v). The Fumadocs 16 template requires it. - Git on your
PATH(it is, if you've done Environment Setup). - pnpm preferred (
brew install pnpm), butnpmandbunalso work. - Cursor with Agent mode available.
The easiest path is the community skills CLI, which handles download, placement, and updates. From any terminal:
npx skills install github:dylandersen/afd360-poc-docs-skillThis installs into ~/.cursor/skills/afd360-poc-docs-skill/, which Cursor discovers automatically. Restart Cursor (or reload the window) so the skill shows up in Settings → Rules → Agent Decides.
To update later:
npx skills update afd360-poc-docs-skillIf you prefer clones you can edit directly (useful for tweaking templates):
mkdir -p ~/.cursor/skills
cd ~/.cursor/skills
git clone https://github.com/dylandersen/afd360-poc-docs-skill.gitRestart Cursor. Pull updates with git pull from inside the skill directory.
If you want the skill version-controlled with a specific POC repo (so teammates pick it up automatically), drop it under .cursor/skills/ inside that repo:
cd /path/to/your-poc-repo
mkdir -p .cursor/skills
git submodule add https://github.com/dylandersen/afd360-poc-docs-skill.git .cursor/skills/afd360-poc-docs-skill
git commit -m "Add afd360-poc-docs-skill"Submodule is the cleaner option over a plain clone; it lets teammates pin a version.
Verify it's installed
Open Cursor, then:
- Cursor Settings → Rules (or press
Cmd+Shift+Jon macOS /Ctrl+Shift+Jon Windows and navigate to Rules). - Scroll to Agent Decides. You should see
afd360-poc-docs-skilllisted. - In chat, type
/— you should see/setup-docsand/update-docsin the slash-command menu.
If neither appears, restart Cursor. If it still doesn't appear, check that ~/.cursor/skills/afd360-poc-docs-skill/SKILL.md exists and its frontmatter parses (the YAML has to be valid).
First-run: scaffold a POC docs site
The skill runs in four phases: preflight, intake, scaffold, smoke test. The whole thing is conversational — the agent asks you four questions and does the rest.
Start the skill
In Cursor chat, switch to Agent mode and type:
/setup-docsOr in natural language:
"Spin up customer docs for a new POC."
"Scaffold Fumadocs for Acme Retail."
"Create a POC docs site for the CS Triage Agentforce build."
The agent recognises the intent and starts the skill's Phase 0.
Phase 0 — Preflight
The skill runs scripts/preflight.mjs and checks:
- Node ≥ 22
pnpm,npm, orbunonPATHgitavailablehttps://registry.npmjs.orgreachable
If anything fails, the skill stops and prints the exact install command for your platform. Fix the issue and re-run /setup-docs.
Phase 1 — Intake
The skill asks you four required fields, one at a time:
- Customer name — e.g.
Acme Retail - POC name — e.g.
Customer Service Agent POC - Product area — one of:
Agentforce,Data 360,Agentforce + Data 360,Salesforce Platform - Target directory — absolute path; defaults to
~/Documents/cursor_orgs/<customer-slug>-docs
After the four required answers, the skill offers five optional fields you can either set now or edit later in site.config.ts:
- Primary personas (defaults to
Admin, End User) - Key integrations (defaults to
None) - Deploy target (Vercel, Netlify, static export, etc.)
- Repo URL
- SE name (defaults to your OS username)
Slugs are derived automatically. The skill confirms everything in one summary before it starts writing files.
Phase 2 — Scaffold
The skill runs scripts/scaffold.mjs, which:
- Creates the target directory.
- Recursively copies the Fumadocs template.
- Replaces placeholder tokens (
__CUSTOMER_NAME__,__POC_NAME__,__PRODUCT_AREA__, and a handful more) with your intake values. - Generates
site.config.ts— one file, every knob you'd want to change. - Generates
.gitignoreand a starterREADME.md. - Runs
scripts/verify-placeholders.mjsto confirm no__*__tokens were missed.
The script is idempotent — re-run it and it refuses to overwrite unless you pass --force.
Phase 3 — Install and smoke test
The skill asks Install dependencies now? [Y/n]. If you say yes:
cd <target-dir>
pnpm install
pnpm build # smoke test: confirms the template builds
pnpm dev # starts http://localhost:3000If pnpm build fails, that's a template bug — file an issue at github.com/dylandersen/afd360-poc-docs-skill/issues.
Phase 4 — Next steps
The skill prints a short checklist:
- Where to edit each section (
content/docs/*.mdxpaths) - How to add a new page (update
meta.json, drop an.mdx) - How to change theme/title/personas (edit
site.config.ts) - How to swap the logo (
public/logo.png) - How to deploy (Vercel is easiest if
pnpm buildpassed)
You now have a working docs site. Time invested: roughly 10 minutes of conversation plus pnpm install.
What gets scaffolded
Out of the box, the site has these top-level sections pre-populated with customer and POC context:
| Section | Purpose |
|---|---|
| Overview | What the POC proves, who's involved, the original problem statement |
| Architecture | Systems, data flow, integration points, a Mermaid system diagram |
| Setup | How to stand up the org, install the package, assign permissions |
| Data Model | Custom objects, relationships, fields that matter (real tables + ERD) |
| Agents & Flows | Agentforce agents, Flow automation, Apex services |
| Hand-off | Who owns what after the POC, what the next step is |
| Troubleshooting | The three things that will go wrong and how to fix them |
Each page ships as an editable .mdx with real starter content — tables, Mermaid diagrams, example callouts — not a lorem-ipsum skeleton. You edit in place instead of writing from scratch.
Incremental updates: /update-docs
Two weeks later, you shipped a new topic and need to add a Security section. Don't re-scaffold. Run:
/update-docs add-section securityThe skill drops content/docs/security.mdx, updates content/docs/meta.json, and runs placeholder substitution. It touches no other files.
Available sections
| Slug | Purpose |
|---|---|
security | Threat model, sharing rules, secrets handling, perm audit |
observability | Logging, monitoring, alerting, agent transcript review |
rollout-plan | Phased rollout, comms plan, training, success metrics |
faq | Customer-facing FAQ |
glossary | Acronyms and terms specific to this POC |
release-notes | Ongoing change log post-handoff |
runbook | Standalone ops runbook (when handoff.mdx gets too long) |
Other /update-docs actions:
/update-docs refresh-starter <slug>— re-copy the starter into an existing section (destructive; warns before overwrite)./update-docs resync-config— regeneratesite.config.tsfrom fresh intake answers.
Natural language also works:
"Add a rollout-plan section to the Acme docs."
"Refresh the glossary starter in my CS Triage docs — I want to start over on that page."
The build–test–document–handoff arc
The skill is one piece. The full arc is four. Each stage has a natural way to use Cursor.
1. Build
Normal development loop. Your First Project, Debugging Apex, and the skill library do the heavy lifting.
2. Test
Don't ship a POC without tests. Agent tests, Apex tests, LWC Jest tests, and a scripted smoke check. See Running & Writing Apex Tests and Session Tracing & Agent Testing.
3. Document
This is where the afd360-poc-docs-skill fires. But the docs draw from real project artifacts:
- The data model section is generated from
@force-app/main/default/objects/usingsf-diagram-mermaid. - The agents section is generated from
@force-app/main/default/genAiPlugins/or.agentfiles. - The setup section is a variation of your demo reset script.
- The troubleshooting section is the list of real issues you hit during the build. Keep a scratchpad during development. Copy the entries in at the end.
4. Hand off
Package the POC (Packaging & Hand-off), share the docs URL, and schedule the walk-through. That's the full arc.
Letting Cursor draft the prose
Once the scaffold exists, you don't write the prose by hand. You point Cursor at the real metadata.
A template prompt for a section:
Draft the "Data Model" section of the POC hand-off doc. Read
@force-app/main/default/objects/ and produce:
1. One paragraph explaining the custom objects at a high level.
2. A bulleted list naming each custom object and its purpose.
3. A Mermaid ERD using the sf-diagram-mermaid skill.
4. A one-paragraph section on "what's on the roadmap but not in this POC".
Keep the prose plain. No filler, no marketing words, no em dashes.The agent pulls the real names and relationships from the metadata. Your job is to fix anything wrong and add the customer-specific framing the agent can't know.
Repeat the pattern for Architecture (point at @force-app/main/default/genAiPlugins/ and integration metadata), Setup (point at config/project-scratch-def.json and your reset script), and Agents & Flows (point at .agent or .genAiFunction files).
A realistic section template
Here's what the Architecture section of a hand-off doc looks like when it's done well:
## Architecture
The CS Triage POC sits across three layers.
### Salesforce
- Agentforce Builder agent: **CS Triage**
- Topics: Warranty, Billing, Shipping
- Apex services: `CaseTriageService`, `CustomerInsightService`
- LWC: `agentSummary`, `caseRouter`
- Permission set group: `CS_Agent_Demo_User`
### Data 360
- DMOs in scope: Customer_Profile__dlm, Case_History__dlm
- Segments: Active_Shippers, High_Value_Warranty
- Data actions: Enrich_Case
### External systems
- Jira: via Named Credential `AcmeJira` (OAuth 2.0, Jira admin scope)
Short. Specific. Named. The reader can open Salesforce, find the named thing, and match it to the doc. No hand-waving.
Customer-ready polish
A few things turn a draft into something you'd hand a CIO:
- A cover page. One line per thing: customer name, POC name, SE name, date, GitHub URL, install URL. The
sf-diagram-nanobananaproskill makes a clean cover graphic if you want one. - A single diagram that summarises the whole thing. See Screenshots & Diagrams.
- Named decisions. A short "Decisions" subsection in Architecture listing the two or three meaningful calls you made ("Used Agentforce Builder over Agent Script because the customer wants to extend topics declaratively"). Future-you loves this.
- A "how to extend" section. Point at the skills the customer's developers should install and the starter prompts. Every hand-off should also hand off the workflow, not just the code.
What not to ship
- Internal Slack messages, meeting notes, or customer complaints.
- Dev Hub IDs, access tokens, or anything from
.env. - Scratch-org-specific settings that don't apply to the customer's org.
- Apologies or "we didn't get to X" framing. Note what's in scope and what's not. Don't apologise for the scope.
Common traps
The docs drift from the code
The docs were right on the day you shipped and wrong within a week. Mitigate with two habits: generate the diagrams from the code (they update when the code does), and leave a note at the top of each section saying which commit SHA it was last verified against.
The docs are too long
A hand-off doc shouldn't read like a novel. Each section should land in a screen or two of content. If it's longer, split it into a child page. The skill handles this structure automatically.
The docs don't match what the customer actually asked for
Reread the discovery notes. The hand-off doc should restate the original problem in the customer's words in the first paragraph, then describe what the POC does to prove it. If you can't do that in two sentences, the docs are focused on the wrong thing.
Troubleshooting the skill
/setup-docs isn't recognised
The skill isn't registered. Check:
ls ~/.cursor/skills/afd360-poc-docs-skill/SKILL.md— the file has to exist.- Open
SKILL.mdand confirm the YAML frontmatter parses (name:anddescription:on separate lines). - Restart Cursor.
Preflight fails: "Node 20 detected. Fumadocs 16 requires Node 22+."
Install Node 22 with Homebrew (brew install node@22) or nvm (nvm install 22 && nvm use 22). Re-run /setup-docs.
The scaffold refuses to write into my directory
The target isn't empty. Either pick a fresh directory or pass --force (the skill will warn you first). Never --force into a directory with uncommitted work.
pnpm build fails after scaffold
That's a template bug, not your fault. File an issue at github.com/dylandersen/afd360-poc-docs-skill/issues with the error text. In the meantime, the agent can help you patch whichever template file is broken.
Leftover __SOMETHING__ tokens in the output
verify-placeholders.mjs should have caught this. File an issue with the filename and the token — it means the skill added a template file without wiring the replacement map.
Verification
After the docs are published, send the URL to a colleague who wasn't in the project. Ask them: "If you had to pick this up and demo it next week, would you know how?" If the answer is yes, the docs are good. If they come back with six questions, those are your missing sections.
Next moves
- If you haven't yet, install the skill and run
/setup-docsagainst a real POC. - Packaging & Hand-off for the install URL the docs reference.
- Screenshots & Diagrams for the visuals inside the docs.
- Subagents & Parallelism for the "build the whole docs site in parallel" pattern.