From academic-writer
Style learning — scans past-articles/ for new files, extracts style patterns, and merges them into the existing style fingerprint. Shows a diff report.
npx claudepluginhub yodem/academic-writer --plugin academic-writerThis skill uses the workspace's default tool permissions.
Trigger the style miner to analyze new articles in `past-articles/` and update the researcher's style fingerprint.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Trigger the style miner to analyze new articles in past-articles/ and update the researcher's style fingerprint.
cat .academic-helper/profile.md
If no profile, tell the researcher to run /academic-writer:init first.
Extract the current styleFingerprint and analyzedArticles list (if present).
If Cognetivy is enabled:
echo '{"phase": "style_learning"}' > /tmp/aw-learn-input.json
cognetivy run start --workflow wf_learn --input /tmp/aw-learn-input.json
ls past-articles/
Compare against profile.analyzedArticles (array of filenames already analyzed). Identify new files not yet processed.
If no new files found:
"No new articles found in
past-articles/. Add new papers (PDF or DOCX) and run/academic-writer:learnagain."
If new files found, show them:
"Found [N] new article(s) to analyze:
- [filename]
- [filename]
I'll extract style patterns from these and merge them into your existing fingerprint."
Use the Agent tool to spawn the style-miner subagent. Pass:
styleFingerprint from the profiletargetLanguagerunId (if Cognetivy enabled)The style miner returns:
Show the researcher what changed:
╔══════════════════════════════════════════════════╗
║ STYLE FINGERPRINT UPDATE ║
╠══════════════════════════════════════════════════╣
║ ║
║ Articles analyzed: [N] new + [M] previous ║
║ ║
║ Changes detected: ║
║ ║
║ Sentence length: 18.5 → 19.2 words (avg) ║
║ Passive voice: moderate → moderate-high ║
║ Vocabulary: complex (unchanged) ║
║ New openers: +2 patterns detected ║
║ New transitions: +3 phrases added ║
║ New excerpts: +2 representative samples ║
║ ║
╚══════════════════════════════════════════════════╝
AskUserQuestion(questions=[{
"question": "Would you like to save these updates to your style fingerprint?",
"header": "Fingerprint Update",
"options": [
{"label": "Save updates", "description": "Merge the new patterns into your profile."},
{"label": "Review details first", "description": "Show me the full before/after comparison."},
{"label": "Discard", "description": "Keep the current fingerprint unchanged."}
],
"multiSelect": false
}])
If Save, update the profile:
styleFingerprint into .academic-helper/profile.mdanalyzedArticles arrayupdatedAt timestampUse the Write tool to save the updated profile.
If Review details, show the full before/after for each dimension, then ask again.
Log to Cognetivy:
echo '{"type":"step_completed","nodeId":"style_learning","newArticles":N,"dimensionsUpdated":N}' | cognetivy event append --run RUN_ID
cognetivy run complete --run RUN_ID
"Style fingerprint updated! [N] new article(s) analyzed, [M] dimensions adjusted.
Your writing pipeline will now use the updated fingerprint. Every paragraph will be checked against the new patterns."