一键导入
review-lesson-grammar
Review a single lesson for US English grammar, style, voice, and Neo4j terminology. Fixes issues inline and appends a WHY report.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Review a single lesson for US English grammar, style, voice, and Neo4j terminology. Fixes issues inline and appends a WHY report.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Identify deprecated Cypher syntax in code files.
Create linear issues for the GRAC (GraphAcademy) team.
Periodically review course content for accuracy, relevance, and consistency. This includes checking for deprecated Cypher syntax.
Fact-check a single lesson against Neo4j documentation using the neo4j-docs MCP. Fixes inaccurate claims inline and appends a WHY report.
Review a single lesson for pedagogical structure, lesson length, opening pattern, concept delivery, and scaffolding. Fixes issues inline and appends a WHY report.
Review a single lesson for AsciiDoc syntax, link formatting, code blocks, slides structure, and question includes. Fixes issues inline and appends a WHY report.
| name | review-lesson-grammar |
| description | Review a single lesson for US English grammar, style, voice, and Neo4j terminology. Fixes issues inline and appends a WHY report. |
| allowed-tools | Read, Edit, Glob, Grep |
Purpose: Fix US English grammar, writing style, voice, and Neo4j-specific terminology in a single lesson.adoc file. Every change is recorded with a reason.
When to use: Stage 1 of the course review pipeline. Run this before structure or technical reviews so later stages work on clean prose.
Lesson content is read aloud by an instructor on camera. Every sentence must sound natural when spoken. This is the most important constraint in the review — it overrides purely academic writing rules.
Write for the ear, not the eye:
via, vs., etc., e.g., i.e. — all must be written out (see Phase 4).knowledge graph data retrieval tool invocation is unreadable aloud; break it up.**Internal** is the default and is free. Create, add tools... mixes modes; **Internal** is the default and is free. It lets you create, add tools... stays descriptive throughout.**Internal** (default, free): cannot be spoken naturally. The bold term must be the grammatical subject of a sentence: **Internal** is the default and is free. Weave metadata (pricing, defaults, constraints) into the sentence rather than bracketing it.REST API or MCP server not REST/MCP; write one or two not 1-2.primarily often signals that a claim is imprecise rather than fixing it. If a sentence is only approximately true, rewrite it to say precisely what is true.When in doubt, read the sentence out loud. If it sounds unnatural or doesn't make complete sense on its own, fix it.
Input: Path to a lesson folder (e.g. asciidoc/courses/my-course/modules/1-intro/lessons/1-overview/)
Output:
lesson.adoc — fixed in placeREVIEW-REPORT.md in the lesson folder — created or appended with a grammar sectionThis review checks and fixes:
lesson.adoc in full before making any changes:type: attribute) and topic areaScan for and correct British/non-US spellings:
| British | US English |
|---|---|
| colour | color |
| behaviour | behavior |
| analyse/analyse | analyze |
| optimise | optimize |
| centre | center |
| realise | realize |
| honour | honor |
| neighbour | neighbor |
| programme | program |
| focussed | focused |
| travelling | traveling |
| modelling | modeling |
| labelling | labeling |
Fix each occurrence directly in the file.
Lessons should use present tense for descriptions of what the learner is doing now, and future tense for what they will do next. Check that tense does not shift unexpectedly within a paragraph.
❌ In the previous lesson, you learn about MATCH.
✅ In the previous lesson, you learned about MATCH.
❌ The data are stored in a CSV.
✅ The data is stored in a CSV.
❌ Each customer has their own orders.
✅ Each customer has its own orders.
✅ Customers have their own orders. (restructuring to plural is acceptable)
Replace all first-person plural with second person. Never use "we", "we'll", "we use", "let's", or similar.
| Replace | With |
|---|---|
We'll walk you through... | This lesson walks you through... |
We use the same dataset... | The course uses the same dataset... |
Let's look at... | Look at... or You will see... |
In this module we look at... | In this module you will look at... |
Replace optional/passive phrasing with direct instructions:
| Replace | With |
|---|---|
You can create a node... | Create a node... |
If you want to change the styling... | To change the styling... |
It is possible to... | Direct statement of the action |
Bold is for inline emphasis on a term within a sentence — not for labelling a paragraph or section. A sentence must never open with a bold word used as a label.
❌ **Location**: All Aura Agents run in Belgium...
❌ **Visibility** controls who can access your agent.
Convert bold labels to:
== or ===) if the content warrants its own sectionYour agent's visibility controls who can access it.This applies equally to bold labels in bullet list items (* **Term**: definition...). Definition-style lists should use AsciiDoc definition list syntax or be rewritten as prose.
Remove or replace these terms entirely:
These phrases mark AI-generated text and should be removed or rewritten:
Informal and colloquial words weaken instructional credibility and sound unprofessional when spoken aloud.
Vague or colloquial verbs
| Replace | With |
|---|---|
get / grab | retrieve, obtain, receive, or fetch depending on context |
put | place, insert, or store |
spin up | create, start, or launch |
check out | see, review, or examine |
hook up / plug in | connect or integrate |
work with | use or interact with |
deal with | handle or process |
figure out | determine or identify |
come up with | create, generate, or produce |
end up | rewrite to state the result directly |
make sure | ensure |
the right X | the correct X |
like X, Y (giving examples) | such as X, Y or for example, X and Y |
Minimising and filler words — remove entirely
| Word | Why |
|---|---|
just | Minimises the step; remove it |
simply | Condescending; implies the learner should find it easy |
basically | Vague; say what you mean directly |
essentially | Same as basically |
quick / quickly | Subjective; omit or quantify |
easy / easily | Subjective; omit or explain why |
straightforward | Omit; show don't tell |
go ahead | Filler before an instruction; remove |
feel free to | Omit; give the direct instruction |
kind of / sort of | Be precise; remove hedging |
a bit | Quantify or remove |
pretty (as in "pretty fast") | Quantify or remove |
quite | Remove |
primarily | Hedges a factual claim; rewrite to say precisely what is true |
largely / mainly / mostly | Same as primarily — state the specific case or rewrite |
generally | Vague; state the specific rule, or use "in most cases" only when exceptions genuinely exist |
nice | Omit; describe the specific benefit |
handy | Replace with useful or describe why |
Non-specific nouns — name the thing
| Replace | With |
|---|---|
stuff | Name the specific items |
things | Name the specific items |
a lot of | many or a specific quantity |
big / small | Quantify or describe specifically |
| Replace | With |
|---|---|
Think about... | Provide the direct explanation |
Think of X as... | X is... or X acts as... |
to do this, (at start of sentence) | remove and state the action |
it goes without saying | omit entirely |
Spell everything out. Abbreviations are informal and can break non-native readers.
| Replace | With |
|---|---|
via | through or using (exposed via API → exposed through the API; query via natural language → query using natural language) |
vs / vs. | versus or restructure as a comparison |
etc. | list the remaining items, or end with "and similar" |
e.g. | for example |
i.e. | that is |
w/ | with |
w/o | without |
| Replace | With |
|---|---|
you'll | you will |
it's (instructional) | it is |
don't (instructional) | do not |
we've, we're | rewrite in second person |
Every sentence must earn its place. Read each paragraph and ask: does this sentence teach the learner something they do not already know from earlier in the lesson?
A sentence that introduces a bullet list must be grammatically complete. A bare infinitive phrase ending in a colon is not complete.
❌ To create an Aura Agent:
✅ To create an Aura Agent, you need:
❌ The agent supports:
✅ The agent supports the following tools:
Check every colon that immediately precedes a list and verify the sentence before it stands on its own.
When a sentence lists named things (tools, commands, nodes, properties, roles), the sentence must state what those things are. A quoted or bold name alone is ambiguous.
❌ Consider an agent with "Get Customer", "Top Customers by Order Count", and Text2Cypher.
✅ Consider an agent with three tools: a "Get Customer" Cypher Template, a "Top Customers by Order Count" Cypher Template, and Text2Cypher.
❌ The graph contains Customer, Order, and Product.
✅ The graph contains three node labels: Customer, Order, and Product.
Apply this whenever proper names, quoted strings, or code-formatted terms appear in a list without an explicit type noun.
When parallel named items each have their own === subsection, the opening sentence of each subsection must identify the item as an instance of its category before describing what it does. Use the form "A Name [type noun] [verb phrase]."
❌
=== Cypher Template
Runs predefined Cypher queries with parameters you define.
✅
=== Cypher Template
A **Cypher Template** tool runs predefined Cypher queries with parameters you define.
This orients the reader to what category of thing is being described and reinforces the type noun, which helps when items have similar-sounding names.
When describing a feature with multiple states, modes, or options, present them in the order the learner encounters them — default or simplest first, advanced or optional second. This mirrors how a user actually works: they start in the default state, then progress when they need more.
❌ Describing External before Internal when Internal is the default starting point ✅ Internal (default, what you start with) → External (what you unlock when you need it)
The same principle applies to prerequisites, configuration steps, and pricing tiers: simple and free before advanced and paid.
A paragraph that summarises what a following bullet list will say is redundant. The list itself carries the information. Remove the prose and let the list lead-in sentence do the framing.
❌
When your agent is Internal, you can create and test it. When it is External, you get API endpoints.
* **Internal**: Create and test in the Console.
* **External**: Exposes API endpoints.
✅
Your agent has two visibility options:
* **Internal**: Create and test in the Console.
* **External**: Exposes API endpoints.
If two sentences or clauses cover the same ground, keep the more specific one and remove or merge the other.
❌
It queries a knowledge graph stored in AuraDB and invokes the right tools to retrieve answers.
The agent interprets your question, finds relevant information in the graph, and invokes the appropriate tool: Similarity Search, Text2Cypher, or Cypher Template.
✅ Remove "and invokes the right tools to retrieve answers" from the first sentence — the second sentence says this more precisely.
Remove sentences that:
❌ This makes Neo4j well-suited for highly connected data. (if the paragraph just explained exactly why)
✅ Delete it — the explanation already made the point.
Every concept, term, or product name that a learner may not already know must be explained — in one sentence if needed — at the point it first appears. Never use a term in a sentence and leave the learner to infer its meaning from context.
This includes tool names, component names, architectural terms, and product features.
❌ Listing "Cypher Template, Text2Cypher, and Similarity Search" as tool names in multiple places before ever explaining what any of them does ✅ At first mention: "Text2Cypher generates a Cypher query from a natural language question and executes it against your graph."
How to check: For every bold term, code-formatted name, or product feature introduced in the lesson, ask: has the lesson explained what this is before it appears in a sentence that depends on the learner understanding it? If not, add a one-sentence explanation at first mention or in the nearest preceding section.
A trace-through example, worked scenario, or lifecycle walkthrough must never be the first place a concept is explained. Those sections test understanding — they cannot simultaneously teach the concept for the first time.
The lesson-level intro and summary (first and last paragraphs) are intentionally repetitive by design — they frame and close the lesson. Do not remove them, but apply all voice, tone, semantic, and spoken-delivery checks to them. An intro sentence that is awkward, inaccurate, or empty must be fixed, not preserved. The protection is against removing the intro paragraph entirely — not against fixing the sentences within it.
| Incorrect | Correct |
|---|---|
| AuraDB free | AuraDB Free |
| on-premises, on-prem | Self-Managed |
| integrated Query tool | Query tool |
| platform (for pricing) | tier |
| database (Aura deployment) | instance |
| Aura console | Aura Console |
| Aura Agents (product name) | Aura Agent |
| Neo4j Aura Agents | Aura Agent |
Aura Agent — singular product name, lowercase for instances
The product is Aura Agent (singular). An individual agent you create is an agent (lowercase). Never write "Aura Agents" to refer to the product or platform. Use "agents" (lowercase, plural) only when referring to multiple agent instances.
✅ Aura Agent lets you build retrieval systems...
✅ An Aura Agent uses three read-only tool types...
✅ The agents you create are listed under Data Services.
❌ Aura Agents let you build retrieval systems...
❌ Neo4j Aura Agents are useful when...
MCP client vs MCP host
In Aura Agent content, call the consuming AI application an MCP client (e.g. Cursor, Claude Desktop). Do not use "MCP host" — the term is ambiguous in MCP architecture and was corrected by the product team.
✅ MCP clients such as Cursor and Claude Desktop can connect to your agent.
❌ AI hosts such as Cursor can connect to your agent.
Acronyms must be written out in full on first occurrence, with the abbreviation in parentheses. After that, the acronym alone is acceptable.
❌ Business Critical provides multi-AZ clusters.
✅ Business Critical provides multi-Availability Zone (AZ) clusters.
Exceptions — common acronyms that need no definition: API, UI, CSV, JSON, URL, HTTP/HTTPS, AWS, GCP, Azure, SQL, JVM
Do not use O(1), O(n), O(k), O(n×m), "constant time", or "linear time" in course content.
❌ Index lookup is O(1); traversal is O(k).
✅ Index lookups are fast because they avoid full scans. Traversals follow relationship pointers in memory, so cost scales with the connections you traverse, not the total data size.
Each distinct topic must have its own header. A paragraph that opens a new subject without a header is a missing section break. When reading the lesson, ask: does this paragraph follow naturally from the one above, or does it start a different idea? If different, add a header.
❌ A prerequisites list followed immediately by a visibility explanation with no header between them
✅ === Visibility header before the visibility paragraphs
Use == for major sections and === for sub-topics within a section.
All level-2+ headers (==, ===) must be in sentence case — only the first word and proper nouns are capitalised.
❌ == Installing the Neo4j Driver ← "Installing" is first word, "Neo4j Driver" is a proper noun — this is fine
❌ == How To Use MATCH Queries ← "To" and "Use" should be lowercase
✅ == How to use MATCH queries
Action-oriented headers use the gerund form:
❌ == Node labels
✅ == Understanding node labels
Headers and sentences must describe what the thing does, not use generic phrases like "why it matters", "why this is important", or "the value of X". Those phrases are empty — they announce that something is important without saying what it does.
❌ == Why it matters
❌ == Why this is important
❌ == The value of graph traversal
❌ This is why graph traversal matters.
✅ == How graph traversal follows pointer chains in memory
✅ Graph traversal scales with the number of connections, not the total data size.
If a header says "why X matters", rewrite it to name the specific capability, behaviour, or outcome that X provides. The header earns its place by telling the learner something concrete, not by signalling that something is significant.
Each section (== or ===) must contain at most one admonition block. Two admonitions in the same section compete for the learner's attention and dilute both.
If a section contains two or more admonitions:
[WARNING] over [CAUTION] over [IMPORTANT] over [NOTE] over [TIP]. Within the same type, prefer the one whose content is essential to avoiding an error or understanding the concept.❌
== Prerequisites and pricing
[NOTE]
.Agent location
====
All agents run in Belgium.
====
[NOTE]
.AI models
====
Aura Agent uses curated AI models.
====
✅ Keep the more critical note; move or absorb the other — or flag for manual review if both are needed.
An admonition title must be a concise directive or noun phrase. Do not add contrast phrases like "not X", "vs X", or ", not Y" to the title — the contrast belongs in the body.
❌ .Write descriptions as instructions, not labels
✅ .Write descriptions as instructions
The body explains what "instructions" means and what "labels" means. The title just names the rule.
Every [NOTE], [TIP], [WARNING], [CAUTION], and [IMPORTANT] block must have a title on the line immediately after the type marker.
❌
[WARNING]
=====
Restoring a snapshot overwrites all current data.
=====
✅
[WARNING]
.Overwriting existing data
=====
Restoring a snapshot overwrites all current data.
=====
After fixing the file, create or append REVIEW-REPORT.md in the same lesson folder.
Report format:
## Grammar & Style Review — YYYY-MM-DD
**Status:** ✅ Complete / ⚠️ Issues remain
### Changes Made
- **Spelling**: `colour` → `color` — _US English spelling_
- **Voice**: `We'll walk you through` → `This lesson walks you through` — _Use "you" not "we"_
- **Marketing**: removed `powerful` from "the powerful MATCH clause" — _Avoid marketing language_
- **Contraction**: `you'll learn` → `you will learn` — _No contractions in instructional text_
- **Terminology**: `on-prem` → `Self-Managed` — _Official Neo4j product term_
### Issues Requiring Manual Review
- [ ] Header "Understanding the data model" — consider whether this should be more action-oriented (_if the existing phrasing is appropriate in context, this can be ignored_)
If no changes were needed, record:
## Grammar & Style Review — YYYY-MM-DD
**Status:** ✅ No issues found
.cursor/rules/course-content-style.mdc — tone, voice, terminology rules.cursor/rules/neo4j-naming-ontology.mdc — product names and capitalisation.cursor/review-lesson-content.mdc — §2 Tone and Clarity