Purpose
This Skill generates or optimizes academic paper abstracts using the locked 5-sentence Farquhar formula: [1: Contribution], [2: Difficulty], [3: Method], [4: Evidence], [5: Key Result]. It operates on two mutually exclusive paths — generate a new abstract from raw materials (paper sections, bullet points, or a brief description), or restructure an existing abstract to comply with the formula. Both paths produce labeled output first so users can verify formula compliance sentence by sentence, followed by a clean plain-paragraph version ready for clipboard use. When a target journal is specified, journal-specific style conventions are applied.
Trigger
Activates when the user asks to:
- Write, generate, or create an abstract from paper content
- Optimize, restructure, or rewrite an existing abstract
- 写摘要、生成摘要、改写摘要、优化摘要
Example invocations:
- "Write an abstract for my paper" / "帮我写摘要"
- "Optimize my existing abstract" / "改写我的摘要"
- "Restructure this abstract using the 5-sentence formula"
- "Generate a CEUS-ready abstract from my introduction and results"
Modes
| Mode |
Default |
Behavior |
direct |
Yes |
Single-pass abstract output using the 5-sentence formula |
batch |
|
Not supported — abstract requires full paper context |
Default mode: direct. User provides content and receives labeled + clean abstract in one pass.
Path selection (within direct mode):
- Input reads like a formed abstract → restructure path
- Input is raw content (sections, bullets, "my paper is about...") → generate path
- Ambiguous → ask before proceeding
References
Required (always loaded)
| File |
Purpose |
references/expression-patterns.md |
Academic expression patterns overview |
Leaf Hints (loaded when needed)
| File |
When to Load |
references/expression-patterns/introduction-and-gap.md |
Contribution and gap framing (sentences 1-2) |
references/expression-patterns/conclusions-and-claims.md |
Calibrated claim language (sentences 1 and 5) |
references/expression-patterns/methods-and-data.md |
Method description (sentence 3, when weak) |
references/expression-patterns/results-and-discussion.md |
Evidence and result framing (sentences 4-5) |
Journal Template (conditional)
- When user specifies a target journal, load
references/journals/[journal].md.
- If template missing, refuse: "Journal template for [X] not found. Available: CEUS."
- If no journal specified, ask once; if declined, apply general academic style.
Ask Strategy
Before starting, ask about:
- Path: does the user have an existing abstract to restructure, or raw content to generate from? (skip if clear from input)
- Target journal if not specified (ask once; if declined, use general academic style)
- Word limit if known (typically 150-300 words; ask once)
Path inference:
- User pastes text that reads like an abstract → restructure path
- User provides sections, bullets, or "my paper is about..." → generate path
- Ambiguous → ask: "Do you have an existing abstract to restructure, or shall I generate one from your materials?"
Rules:
- Never ask more than 2 questions before starting.
- Skip path question if inference is clear from input.
- In
direct mode with sufficient context, proceed without pre-questions.
Workflow
Step 0: Workflow Memory Check
- Read
.planning/workflow-memory.json. If file missing or empty, skip to Step 1.
- Check if the last 1-2 log entries form a recognized pattern with
ppw:abstract that has appeared >= threshold times in the log. See skill-conventions.md > Workflow Memory > Pattern Detection for the full algorithm.
- If a pattern is found, present recommendation via AskUserQuestion:
- Question: "检测到常用流程:[pattern](已出现 N 次)。是否直接以 direct 模式运行 ppw:abstract?"
- Options: "Yes, proceed" / "No, continue normally"
- If user accepts: set mode to
direct, skip Ask Strategy questions.
- If user declines or AskUserQuestion unavailable: continue in normal mode.
Step 1: Collect Context
- Load
references/expression-patterns.md overview.
- If journal specified, load
references/journals/[journal].md. If missing, refuse with: "Journal template for [X] not found. Available: CEUS."
- Read user input: file via Read tool, or pasted text from conversation.
- Determine path: restructure if input reads like a formed abstract; generate if raw materials. Ask if ambiguous.
- Opt-out check: Scan the user's trigger prompt for any of these phrases (case-insensitive, exact phrase match):
english only, no bilingual, only english, 不要中文. Store result as bilingual_mode (true/false). This flag governs Step 3 output below.
- Record workflow: Append
{"skill": "ppw:abstract", "ts": "<ISO timestamp>"} to .planning/workflow-memory.json. Create file as [] if missing. Drop oldest entry if log length >= 50.
Step 2a: Generate Path (raw content provided)
- Load
references/expression-patterns/introduction-and-gap.md for contribution and gap framing.
- Load
references/expression-patterns/conclusions-and-claims.md for calibrated claim language.
- Load
references/expression-patterns/methods-and-data.md if the user's method description is weak.
- Synthesize sentence 1 (contribution): start with "We introduce / propose / demonstrate / show..."
- Synthesize sentence 2 (difficulty): why this problem is hard or why it matters.
- Synthesize sentence 3 (method): how the problem is solved, with key technical terminology.
- Load
references/expression-patterns/results-and-discussion.md for sentences 4-5.
- Synthesize sentence 4 (evidence): what was measured, on what benchmark or dataset.
- Synthesize sentence 5 (key result): the most important number or qualitative outcome.
Step 2b: Restructure Path (existing abstract provided)
- Load the same leaf hints as the generate path.
- Map each existing sentence to one of the 5 formula positions.
- Rewrite each sentence to tighten formula compliance while preserving the user's content.
- Internal audit: After restructuring, verify all 5 positions are filled.
- Flag any missing position with
[MISSING: position-name] — never silently drop content.
Step 3: Output
Present the labeled version first (formula positions explicit, see Output Contract).
Present the clean version (plain paragraph, no labels) separated by ---.
If the user wants to save: offer to write to a file using the Write tool.
If word limit was specified, report word count; warn if over limit.
Bilingual display: If bilingual_mode is true: after presenting the labeled version and after presenting the clean version, append a > **[Chinese]** ... blockquote for each sentence of the abstract. Use a header: "双语对照 / Bilingual Comparison:" before the blockquotes. Format:
[Chinese] [1: 贡献] ...
[Chinese] [2: 难度] ...
[Chinese] [3: 方法] ...
[Chinese] [4: 证据] ...
[Chinese] [5: 关键结果] ...
Each blockquote corresponds to one Farquhar formula sentence. Label prefixes in Chinese are for readability only -- the clean version Chinese follows the plain paragraph structure without labels.
If bilingual_mode is false (opt-out detected): skip bilingual display entirely.
Optionally recommend the Polish Skill for further expression refinement.
Output Contract
| Output |
Format |
Condition |
labeled_abstract |
Labeled 5-sentence block with [N: Position] markers |
Always |
clean_abstract |
Plain paragraph with no labels, separated by --- |
Always |
| Word count |
Integer |
When user specified a word limit |
bilingual_abstract |
> **[Chinese]** ... blockquotes in session (one per sentence) |
When bilingual_mode is true (default). Skipped when opt-out detected. |
Exact labeled format:
[1: Contribution] We propose...
[2: Difficulty] Despite growing interest in X, existing approaches fail to...
[3: Method] We address this by...
[4: Evidence] Evaluated on N datasets...
[5: Key Result] Our approach achieves...
---
Clean version:
We propose... Despite growing interest in X, existing approaches fail to... We address this by... Evaluated on N datasets... Our approach achieves...
Edge Cases
| Situation |
Handling |
| Input is ambiguous (not clearly raw content or existing abstract) |
Ask before proceeding: "Do you have an existing abstract to restructure, or shall I generate one?" |
| Existing abstract has fewer than 5 sentences |
Run restructure path; flag missing positions with [MISSING: ...] |
| User specifies word limit |
Count words in output; warn if over limit with exact count |
| Journal specified but template missing |
Refuse: "Journal template for [X] not found. Available: CEUS." |
| Formula position cannot be filled from available content |
Flag with [MISSING: difficulty statement]; do not invent content |
| User provides only a title or one-sentence summary |
Ask for more content before proceeding |
Fallbacks
| Scenario |
Fallback |
| Structured Interaction unavailable |
Ask 1-2 plain-text questions (path + journal) |
| Expression pattern leaf missing |
Proceed with general academic register; warn user |
| Journal template missing (no journal specified) |
Ask once; if declined, use general academic style |
| Write tool fails |
Present output in conversation instead |
Examples
Invocation: "Help me restructure my abstract to follow the 5-sentence formula."
User pastes: "In this paper we study urban mobility patterns using GPS data. We find that mobility is highly predictable. We propose a model called MobNet. It outperforms existing approaches by 12% on the next-location prediction task."
Output:
[1: Contribution] We propose MobNet, a model for predicting urban mobility using GPS data.
[2: Difficulty] Despite the prevalence of GPS data, existing mobility models fail to capture [MISSING: difficulty statement — why prediction is hard or why existing approaches fall short].
[3: Method] MobNet addresses this by [MISSING: method description — how MobNet works].
[4: Evidence] Evaluated on a next-location prediction task using GPS traces from urban environments.
[5: Key Result] MobNet outperforms existing approaches by 12% on next-location prediction.
---
Clean version:
We propose MobNet, a model for predicting urban mobility using GPS data. [MISSING: difficulty statement]. MobNet addresses this by [MISSING: method description]. Evaluated on a next-location prediction task using GPS traces from urban environments. MobNet outperforms existing approaches by 12% on next-location prediction.
Two formula positions are flagged as missing. Please provide: (1) why mobility prediction is hard or what existing approaches fail to do, and (2) a brief description of how MobNet works.
Skill: abstract-skill
Conventions: references/skill-conventions.md
1---2name: ppw-abstract3description: Generate or optimize academic paper abstracts using the 5-sentence Farquhar formula. Supports generate-from-scratch and restructure-existing paths. Produces labeled output for formula verification plus a clean version for clipboard use. 摘要生成与优化,支持从原始材料生成或改写现有摘要。4---5
6## Purpose
7
8This Skill generates or optimizes academic paper abstracts using the locked 5-sentence Farquhar formula: [1: Contribution], [2: Difficulty], [3: Method], [4: Evidence], [5: Key Result]. It operates on two mutually exclusive paths — generate a new abstract from raw materials (paper sections, bullet points, or a brief description), or restructure an existing abstract to comply with the formula. Both paths produce labeled output first so users can verify formula compliance sentence by sentence, followed by a clean plain-paragraph version ready for clipboard use. When a target journal is specified, journal-specific style conventions are applied.
9
10## Trigger
11
12**Activates when the user asks to:**
13- Write, generate, or create an abstract from paper content
14- Optimize, restructure, or rewrite an existing abstract
15- 写摘要、生成摘要、改写摘要、优化摘要
16
17**Example invocations:**
18- "Write an abstract for my paper" / "帮我写摘要"
19- "Optimize my existing abstract" / "改写我的摘要"
20- "Restructure this abstract using the 5-sentence formula"
21- "Generate a CEUS-ready abstract from my introduction and results"
22
23## Modes
24
25| Mode | Default | Behavior |
26|------|---------|----------|
27| `direct` | Yes | Single-pass abstract output using the 5-sentence formula |
28| `batch` | | Not supported — abstract requires full paper context |
29
30**Default mode:** `direct`. User provides content and receives labeled + clean abstract in one pass.
31
32**Path selection (within direct mode):**
33- Input reads like a formed abstract → restructure path
34- Input is raw content (sections, bullets, "my paper is about...") → generate path
35- Ambiguous → ask before proceeding
36
37## References
38
39### Required (always loaded)
40
41| File | Purpose |
42|------|---------|
43| `references/expression-patterns.md` | Academic expression patterns overview |
44
45### Leaf Hints (loaded when needed)
46
47| File | When to Load |
48|------|--------------|
49| `references/expression-patterns/introduction-and-gap.md` | Contribution and gap framing (sentences 1-2) |
50| `references/expression-patterns/conclusions-and-claims.md` | Calibrated claim language (sentences 1 and 5) |
51| `references/expression-patterns/methods-and-data.md` | Method description (sentence 3, when weak) |
52| `references/expression-patterns/results-and-discussion.md` | Evidence and result framing (sentences 4-5) |
53
54### Journal Template (conditional)
55
56- When user specifies a target journal, load `references/journals/[journal].md`.
57- If template missing, **refuse**: "Journal template for [X] not found. Available: CEUS."
58- If no journal specified, ask once; if declined, apply general academic style.
59
60## Ask Strategy
61
62**Before starting, ask about:**
631. Path: does the user have an existing abstract to restructure, or raw content to generate from? (skip if clear from input)
642. Target journal if not specified (ask once; if declined, use general academic style)
653. Word limit if known (typically 150-300 words; ask once)
66
67**Path inference:**
68- User pastes text that reads like an abstract → restructure path
69- User provides sections, bullets, or "my paper is about..." → generate path
70- Ambiguous → ask: "Do you have an existing abstract to restructure, or shall I generate one from your materials?"
71
72**Rules:**
73- Never ask more than 2 questions before starting.
74- Skip path question if inference is clear from input.
75- In `direct` mode with sufficient context, proceed without pre-questions.
76
77## Workflow
78
79### Step 0: Workflow Memory Check
80
81- Read `.planning/workflow-memory.json`. If file missing or empty, skip to Step 1.
82- Check if the last 1-2 log entries form a recognized pattern with `ppw:abstract` that has appeared >= threshold times in the log. See `skill-conventions.md > Workflow Memory > Pattern Detection` for the full algorithm.
83- If a pattern is found, present recommendation via AskUserQuestion:
84 - Question: "检测到常用流程:[pattern](已出现 N 次)。是否直接以 direct 模式运行 ppw:abstract?"
85 - Options: "Yes, proceed" / "No, continue normally"
86- If user accepts: set mode to `direct`, skip Ask Strategy questions.
87- If user declines or AskUserQuestion unavailable: continue in normal mode.
88
89### Step 1: Collect Context
90
91- Load `references/expression-patterns.md` overview.
92- If journal specified, load `references/journals/[journal].md`. If missing, refuse with: "Journal template for [X] not found. Available: CEUS."
93- Read user input: file via Read tool, or pasted text from conversation.
94- Determine path: restructure if input reads like a formed abstract; generate if raw materials. Ask if ambiguous.
95- **Opt-out check:** Scan the user's trigger prompt for any of these phrases (case-insensitive, exact phrase match): `english only`, `no bilingual`, `only english`, `不要中文`. Store result as `bilingual_mode` (true/false). This flag governs Step 3 output below.
96- **Record workflow:** Append `{"skill": "ppw:abstract", "ts": "<ISO timestamp>"}` to `.planning/workflow-memory.json`. Create file as `[]` if missing. Drop oldest entry if log length >= 50.
97
98### Step 2a: Generate Path (raw content provided)
99
100- Load `references/expression-patterns/introduction-and-gap.md` for contribution and gap framing.
101- Load `references/expression-patterns/conclusions-and-claims.md` for calibrated claim language.
102- Load `references/expression-patterns/methods-and-data.md` if the user's method description is weak.
103- Synthesize sentence 1 (contribution): start with "We introduce / propose / demonstrate / show..."
104- Synthesize sentence 2 (difficulty): why this problem is hard or why it matters.
105- Synthesize sentence 3 (method): how the problem is solved, with key technical terminology.
106- Load `references/expression-patterns/results-and-discussion.md` for sentences 4-5.
107- Synthesize sentence 4 (evidence): what was measured, on what benchmark or dataset.
108- Synthesize sentence 5 (key result): the most important number or qualitative outcome.
109
110### Step 2b: Restructure Path (existing abstract provided)
111
112- Load the same leaf hints as the generate path.
113- Map each existing sentence to one of the 5 formula positions.
114- Rewrite each sentence to tighten formula compliance while preserving the user's content.
115- **Internal audit:** After restructuring, verify all 5 positions are filled.
116- Flag any missing position with `[MISSING: position-name]` — never silently drop content.
117
118### Step 3: Output
119
120- Present the labeled version first (formula positions explicit, see Output Contract).
121- Present the clean version (plain paragraph, no labels) separated by `---`.
122- If the user wants to save: offer to write to a file using the Write tool.
123- If word limit was specified, report word count; warn if over limit.
124- **Bilingual display:** If `bilingual_mode` is true: after presenting the labeled version and after presenting the clean version, append a `> **[Chinese]** ...` blockquote for each sentence of the abstract. Use a header: "**双语对照 / Bilingual Comparison:**" before the blockquotes. Format:
125
126 > **[Chinese]** [1: 贡献] ...
127 > **[Chinese]** [2: 难度] ...
128 > **[Chinese]** [3: 方法] ...
129 > **[Chinese]** [4: 证据] ...
130 > **[Chinese]** [5: 关键结果] ...
131
132 Each blockquote corresponds to one Farquhar formula sentence. Label prefixes in Chinese are for readability only -- the clean version Chinese follows the plain paragraph structure without labels.
133- If `bilingual_mode` is false (opt-out detected): skip bilingual display entirely.
134- Optionally recommend the Polish Skill for further expression refinement.
135
136## Output Contract
137
138| Output | Format | Condition |
139|--------|--------|-----------|
140| `labeled_abstract` | Labeled 5-sentence block with `[N: Position]` markers | Always |
141| `clean_abstract` | Plain paragraph with no labels, separated by `---` | Always |
142| Word count | Integer | When user specified a word limit |
143| `bilingual_abstract` | `> **[Chinese]** ...` blockquotes in session (one per sentence) | When bilingual_mode is true (default). Skipped when opt-out detected. |
144
145**Exact labeled format:**
146
147```
148[1: Contribution] We propose...
149[2: Difficulty] Despite growing interest in X, existing approaches fail to...
150[3: Method] We address this by...
151[4: Evidence] Evaluated on N datasets...
152[5: Key Result] Our approach achieves...
153
154---
155Clean version:
156We propose... Despite growing interest in X, existing approaches fail to... We address this by... Evaluated on N datasets... Our approach achieves...
157```
158
159## Edge Cases
160
161| Situation | Handling |
162|-----------|----------|
163| Input is ambiguous (not clearly raw content or existing abstract) | Ask before proceeding: "Do you have an existing abstract to restructure, or shall I generate one?" |
164| Existing abstract has fewer than 5 sentences | Run restructure path; flag missing positions with `[MISSING: ...]` |
165| User specifies word limit | Count words in output; warn if over limit with exact count |
166| Journal specified but template missing | Refuse: "Journal template for [X] not found. Available: CEUS." |
167| Formula position cannot be filled from available content | Flag with `[MISSING: difficulty statement]`; do not invent content |
168| User provides only a title or one-sentence summary | Ask for more content before proceeding |
169
170## Fallbacks
171
172| Scenario | Fallback |
173|----------|----------|
174| Structured Interaction unavailable | Ask 1-2 plain-text questions (path + journal) |
175| Expression pattern leaf missing | Proceed with general academic register; warn user |
176| Journal template missing (no journal specified) | Ask once; if declined, use general academic style |
177| Write tool fails | Present output in conversation instead |
178
179## Examples
180
181**Invocation:** "Help me restructure my abstract to follow the 5-sentence formula."
182
183User pastes: "In this paper we study urban mobility patterns using GPS data. We find that mobility is highly predictable. We propose a model called MobNet. It outperforms existing approaches by 12% on the next-location prediction task."
184
185**Output:**
186
187```
188[1: Contribution] We propose MobNet, a model for predicting urban mobility using GPS data.
189[2: Difficulty] Despite the prevalence of GPS data, existing mobility models fail to capture [MISSING: difficulty statement — why prediction is hard or why existing approaches fall short].
190[3: Method] MobNet addresses this by [MISSING: method description — how MobNet works].
191[4: Evidence] Evaluated on a next-location prediction task using GPS traces from urban environments.
192[5: Key Result] MobNet outperforms existing approaches by 12% on next-location prediction.
193
194---
195Clean version:
196We propose MobNet, a model for predicting urban mobility using GPS data. [MISSING: difficulty statement]. MobNet addresses this by [MISSING: method description]. Evaluated on a next-location prediction task using GPS traces from urban environments. MobNet outperforms existing approaches by 12% on next-location prediction.
197```
198
199Two formula positions are flagged as missing. Please provide: (1) why mobility prediction is hard or what existing approaches fail to do, and (2) a brief description of how MobNet works.
200
201---
202
203*Skill: abstract-skill*
204*Conventions: references/skill-conventions.md*