Gives you writing style instructions for Explainer type articles including tone of voice, writing style, structure, content formatting and more.
55
69%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No known issues
{
"summary": "Evidence-driven, deep technical explainer that synthesizes context, mechanisms, trade-offs, and practical guidance for experienced JS/Node engineers.",
"lirantal_com_blog": {
"no_terminal_references_section": true,
"canonical_links": "Place at least three descriptive inline links to authoritative sources in the body where each topic warrants it. Do not add a terminal ## References, bibliography, or link-dump section.",
"introduction": {
"forbidden": [
"Mentioning the cover, hero, OG, Open Graph imagery, or how the image was produced",
"Opening paragraphs framed as 'intended audience', reader personas, or 'who should read this' lists"
],
"preferred": [
"Thesis and the problem addressed in the first sentences",
"Why the topic matters now (stakes, change, or failure mode)"
]
}
},
"audience": {
"persona": "Senior JavaScript/Node.js engineers, OSS maintainers, security-minded developers, and tech leads evaluating approaches.",
"assumed_knowledge": "Modern JS/TS, Node.js LTS, package managers (npm/pnpm), Git/GitHub, CI basics, reading RFCs/docs.",
"pain_points": "Superficial walkthroughs without rationale, missing trade-offs, unclear verification/measurement, outdated stack examples."
},
"goals": [
"educate",
"influence architecture",
"establish best practices",
"inform decision-making"
],
"tone_of_voice": {
"labels": [
"professional",
"analytical",
"curious",
"pragmatic",
"trustworthy"
],
"intensity": {
"formality": 0.55,
"playfulness": 0.15,
"assertiveness": 0.7
}
},
"narrative_voice": {
"person": "2nd/3rd",
"tense": "present"
},
"reading_level": {
"flesch_kincaid": 11.2,
"avg_sentence_words": 20,
"passive_voice_pct": 6,
"paragraph_median_words": 60
},
"pacing": "Moderate-to-deliberate: concept first, then mechanism, then applied guidance with verification.",
"structure_pattern": "Thesis → Background & prior art → How it works (mechanism) → Trade-offs & alternatives → Applications & examples → Validation & measurement → Limitations & future work → FAQ → Next steps & CTA. (On lirantal.com: no terminal References section—inline links only; see lirantal_com_blog.)",
"section_templates": [
{
"name": "Deep Technical Explainer",
"outline": [
"Title (outcome or claim)",
"Abstract (2-3 sentences: what/why/outcome)",
"Background & Prior Art",
"How It Works (Mechanism)",
"Trade-offs & Alternatives",
"Applications & Examples",
"Validation & Measurement",
"Security & Performance Considerations",
"Limitations & Future Work",
"Troubleshooting (if actionable)",
"FAQ",
"Next Steps & CTA"
],
"heading_style": {
"case": "Title Case",
"pattern": "descriptive statements; avoid clickbait"
}
}
],
"formatting_conventions": {
"lists": "Bullets for concept enumeration; numbered lists for procedures or sequences.",
"callouts": [
"Note",
"Tip",
"Warning"
],
"tables": "Use for comparison matrices and result summaries.",
"emoji_usage": "never"
},
"code_conventions": {
"languages_top": [
{ "lang": "js", "pct": 45 },
{ "lang": "bash", "pct": 30 },
{ "lang": "yaml", "pct": 15 },
{ "lang": "json", "pct": 10 }
],
"snippet_length_lines_avg": 12,
"inline_code_rules": "Use inline backticks for identifiers, CLI flags, environment variables, filenames.",
"comments_style": "Explain intent and constraints above the snippet; inline comments only for non-obvious lines.",
"error_handling_demo": "When behavior differs across options, show a failing case and recovery; include expected output or exit code."
},
"linking_style": {
"when_to_link": "On first mention of external tools/specs; prefer deep links to canonical docs or relevant sections.",
"preferred_domains": [
"lirantal.com",
"nodejs-security.com",
"github.com"
],
"anchor_text": "Descriptive and specific; avoid 'click here'."
},
"visuals_usage": {
"frequency": "sometimes",
"types": [
"architecture/sequence diagrams",
"comparison tables",
"flowcharts"
],
"alt_text_style": "Explain what the reader learns or the flow depicted."
},
"lexicon": {
"preferred_terms": [
"CI/CD",
"supply chain security",
"lockfile",
"semver",
"trade-off",
"baseline",
"observability",
"verification"
],
"avoid_terms": [
"simply",
"just",
"obviously",
"magic"
],
"stock_phrases": [
"At a high level,",
"In practice,",
"The key trade-off is",
"To validate this,"
]
},
"cta_patterns": [
{
"stage": "end",
"pattern": "Actionable next steps aligned to the example stack",
"placement": "final section",
"example": "Try the reference implementation, benchmark with your workload, and report findings."
}
],
"seo_patterns": {
"title_length_chars": "55-65",
"keywords_in_h2": true,
"slug_style": "kebab-case"
},
"style_fingerprints": [
"Opens with a clear thesis and problem framing (on lirantal.com: no audience-inventory or cover-image preamble).",
"Balances concept explanation with small, runnable examples.",
"Uses comparison tables for alternatives and trade-offs.",
"Includes explicit measurement/verification guidance."
],
"do": [
"Lead with a clear thesis and stakes; weave who benefits into Background or Applications, not as a standalone opening audience list (lirantal.com).",
"Explain mechanisms with diagrams or concise code/pseudo-code.",
"Present trade-offs and when to choose each option.",
"Provide commands/metrics for readers to verify results."
],
"dont": [
"Do not rely on unexplained jargon.",
"Do not present only one approach where meaningful alternatives exist.",
"Avoid long code dumps without commentary or verification."
],
"calibration_examples": {
"good_intro": "Why dependency pinning strategies impact build determinism and incident recovery for Node.js services.",
"bad_intro": "Software supply chain security is important for many reasons across the industry.",
"good_snippet": "```bash\nnpm ci --ignore-scripts\n# Quick check: lockfile integrity is enforced\n```"
},
"metrics": {
"docs_analyzed": 0,
"token_coverage_estimate": "~0%",
"code_to_prose_ratio_pct": 30,
"top_ngrams": [
{ "ngram": "how it works", "freq": 0 },
{ "ngram": "trade-offs", "freq": 0 }
],
"heading_depth_distribution": { "h1": 1, "h2": 10, "h3": 12, "h4": 4 },
"link_domains_top": [
{ "domain": "lirantal.com", "count": 0 },
{ "domain": "github.com", "count": 0 }
]
},
"deviations": "Template profile for deep technical explainers; not derived from a specific corpus.",
"quality_checklist": [
"Intro states thesis and why the topic matters within the first short stretch; on lirantal.com do not use the opening for audience inventory or cover/OG image meta.",
"Background/primer includes ≥2 paragraphs and mentions prior art.",
"If public options exist, include a 'Trade-offs & Alternatives' section with a comparison table.",
"How It Works section explains mechanism with code or diagram.",
"Validation & Measurement includes commands/metrics to reproduce results.",
"Security & Performance considerations included where applicable.",
"Troubleshooting present if actionable; otherwise Limitations & Future Work present.",
"FAQ section exists with ≥3 Q&A entries; each answer is specific and may include a command/link.",
"At least three descriptive inline links to canonical docs, specs, or repos appear in the body; on lirantal.com never add a terminal ## References or bibliography block.",
"Conclusion contains 3-5 next actions plus X/Twitter and GitHub CTAs.",
"No one-liner sections; H2 ≥5 sentences or equivalent content density.",
"No soft-avoid tools appear unless explicitly substituted via policy."
],
"red_flags": [
"Claims without measurement or authoritative inline citations.",
"Alternatives presented without trade-offs.",
"Code samples that cannot be run or verified.",
"Hand-wavy security/performance statements."
],
"rewrite_rules": [
{ "if": "long, nested sentences", "then": "split into ≤20 words; keep one idea per sentence" },
{ "if": "passive voice", "then": "prefer active voice unless actor is irrelevant" },
{ "if": "unbalanced section (concepts only)", "then": "add mechanism example or diagram" },
{ "if": "unsubstantiated claim", "then": "add citation or measurement plan" }
],
"confidence": 0.95,
"article_length": {
"target_words_min": 2400,
"target_words_max": 3800
},
"section_density": {
"min_sentences_h2": 5,
"min_sentences_h3": 3,
"min_words_per_paragraph": 40,
"allow_one_liner_sections": false,
"code_block_supports_section_if": "code_block_present AND (≥2 sentences total around it)"
},
"step_anatomy": {
"require_why": false,
"require_how": false,
"require_verify": true,
"require_pitfalls_every_n_steps": 0,
"require_alternatives_or_perf_every_n_steps": 0,
"verify_patterns": [
"Expected output:",
"Quick check:",
"Validate:"
]
},
"content_depth": {
"exposition_to_procedure_ratio_target": "65:35",
"examples_policy": "concrete, runnable, ≤15 lines; prefer minimal deps",
"include_common_errors": true,
"include_performance_notes": "when relevant; show measurement commands"
},
"conclusion_requirements": {
"min_action_items": 4,
"action_item_patterns": [
"Run the reference example and compare metrics",
"Adopt recommended defaults/flags",
"Evaluate alternatives using the trade-off table",
"Open an issue or share findings"
],
"social_cta": {
"enabled": true,
"twitter_handle": "@liran_tal",
"phrasing": "Follow on X/Twitter for updates and new guides."
},
"github_cta": {
"enabled": true,
"url": "https://github.com/lirantal",
"phrasing": "Explore more code examples and related work on GitHub."
}
},
"self_checks": [
"Includes Background & Prior Art before 'How It Works'",
"Includes Trade-offs & Alternatives with a comparison device",
"Includes Validation & Measurement with commands/metrics",
"FAQ ≥3 items; ≥3 descriptive inline canonical links in the body (lirantal.com: no terminal References section)",
"Conclusion includes ≥3 actions + X/Twitter + GitHub CTAs",
"No excluded technologies appear: /(jenkins|travis)/i"
],
"content_policies": {
"preferred_ci": ["GitHub Actions"],
"excluded_ci": ["Jenkins"],
"hard_exclusions": ["Jenkins pipelines/examples", "Non-JS stacks unless unavoidable"],
"preferred_hosting": ["Vercel", "Netlify"],
"preferred_package_managers": ["npm", "pnpm"],
"preferred_runtimes": ["Node.js current LTS"]
},
"cta_defaults": {
"twitter": "@liran_tal",
"github": "https://github.com/lirantal",
"patterns": [
"Follow on X/Twitter for updates",
"Explore related examples on GitHub"
]
},
"required_sections": {
"introduction": { "required": true, "min_paragraphs": 2, "purpose": "Frame thesis and why-now; on lirantal.com omit audience callouts and cover-image meta from the opening." },
"background_or_primer": { "required": true, "min_paragraphs": 2, "include": ["prior art", "definitions", "assumptions"] },
"architecture_or_flow": { "required": true, "allow_mermaid": true, "textual_fallback": true, "note": "Diagram or narrative of mechanism." },
"step_by_step_guide": { "required": false, "enforce_step_anatomy": false },
"validation_and_measurement": { "required": true, "min_items": 2 },
"security_and_performance_considerations": { "required": true },
"tradeoffs_and_alternatives": { "required": true, "min_items": 3 },
"applications_and_examples": { "required": true, "min_items": 2 },
"troubleshooting_and_pitfalls": { "required": false, "min_items": 3, "style": "symptom → cause → fix" },
"limitations_and_future_work": { "required": true, "min_items": 3 },
"faq": { "required": true, "min_qna": 3, "format": "Q: … / A: …", "placement": "after limitations" },
"references_and_related_links": { "required": false, "min_links": 3, "anchor_text": "descriptive", "lirantal_com": "Satisfy min_links as inline prose links only; no terminal References section on lirantal.com." }
},
"background_requirements": {
"must_answer": [
"What problem is addressed?",
"Why now/why this approach?",
"Where relevant, who benefits—address inside Background or Applications, not as a dedicated opening audience list (lirantal.com)."
],
"avoid": [
"marketing clichés",
"vendor fluff"
]
},
"faq_requirements": {
"min_qna": 3,
"max_qna": 7,
"selection_heuristics": [
"From trade-offs and alternatives likely to confuse readers",
"From validation and measurement steps",
"From migration/adoption concerns and version compatibility",
"From SEO intent and related queries"
],
"seed_questions": [
"Which Node.js versions are recommended (current LTS vs latest)?",
"How do I measure impact with minimal setup?",
"What changes when using pnpm instead of npm?",
"How do I integrate this with GitHub Actions securely (secrets, permissions)?",
"What are the main failure modes and how can I detect them?"
],
"answer_style": "Short, specific, includes command/metric or deep link where applicable"
},
"toc_preferences": {
"include_toc_if_words_over": 1800,
"exclude_sections": ["FAQ"]
},
"dominant_archetype": "Explainer",
"secondary_archetypes": ["Best Practices"],
"corpus_archetype_distribution": { "Explainer": 1.0 },
"archetype_profiles": {
"Explainer": {
"enforce_step_anatomy": false,
"argument_pattern": "Thesis → Background → Mechanism → Trade-offs → Applications → Validation → Limitations",
"evidence_requirements": [
"diagram or textual flow",
"minimal runnable example or pseudo-code",
"realistic scenario comparison"
],
"required_sections": [
"Introduction",
"Background & Prior Art",
"How It Works",
"Trade-offs & Alternatives",
"Applications & Examples",
"Validation & Measurement",
"Security & Performance Considerations",
"Limitations & Future Work",
"FAQ",
"Next Steps & CTA"
],
"section_density_overrides": { "min_sentences_h2": 5, "min_sentences_h3": 3 }
}
},
"generation_contract": {
"use_archetype_profile": true,
"outline_from": "archetype_profiles[dominant_archetype].required_sections",
"enforce_step_anatomy_if": "dominant_archetype === 'Tutorial'",
"argument_or_narrative_pattern": "resolve from archetype_profiles",
"toc_policy": { "include_toc_if_words_over": 1800 }
}
}